This is a host application for browserpass browser extension providing it access to your password store. The communication is handled through Native Messaging API.
The following operating systems provide a browserpass package that can be installed using a package manager:
- Arch Linux
- NixOS - also read Install on Nix / NixOS
Once the package is installed, refer to the section Configure browsers.
If your OS is not listed above, proceed with the manual installation steps below.
Download the latest Github release, choose either the source code archive (if you want to compile the app yourself) or an archive for your operating system (it contains a pre-built binary).
All release files are signed with this PGP key. To verify the signature of a given file, use $ gpg --verify <file>.sig
.
It should report:
gpg: Signature made ...
gpg: using RSA key 8053EB88879A68CB4873D32B011FDC52DA839335
gpg: Good signature from "Maxim Baz <...>"
gpg: aka ...
Primary key fingerprint: EB4F 9E5A 60D3 2232 BB52 150C 12C8 7A28 FEAC 6B20
Subkey fingerprint: 8053 EB88 879A 68CB 4873 D32B 011F DC52 DA83 9335
Unpack the archive. If you decided to compile the application yourself, refer to the Building the app section on how to do so. Once complete, continue with the steps below.
If you downloaded a release archive with pre-compiled binary, follow these steps to install the app:
make BIN=browserpass-XXXX configure # Configure the hosts json files, XXXX refers to archive name, e.g. "linux64"
sudo make BIN=browserpass-XXXX install # Install the app, XXXX refers to archive name, e.g. "linux64"
If you compiled the app yourself, you can omit BIN
parameter:
make configure # Configure the hosts json files
sudo make install # Install the app
In addition, both configure
and install
targets respect PREFIX
, DESTDIR
parameters if you want to customize the install location (e.g. to install to a $HOME
dir to avoid using sudo
).
Finally proceed to the Configure browsers section.
For a declarative NixOS installation, update your channel with sudo nix-channel --update
, use the following to your /etc/nixos/configuration.nix
and rebuild your system:
{ pkgs, ... }: {
programs.browserpass.enable = true;
environment.systemPackages = with pkgs; [
# All of these browsers will work
chromium firefox google-chrome vivaldi
# firefox*-bin versions do *not* work with this. If you require such Firefox versions, use the stateful setup described below.
];
}
For a stateful Nix setup, update your channel, install Browserpass and link the necessary files with the Makefile (see Configure browsers section), but pass DESTDIR=~/.nix-profile
:
$ nix-channel --update
$ nix-env -iA nixpkgs.browserpass # Or nix-env -iA nixos.browserpass on NixOS
$ DESTDIR=~/.nix-profile make -f ~/.nix-profile/lib/browserpass/Makefile <desired make goal>
The Makefile currently does not support Windows, so instead of sudo make install
you'd have to do a bit of a manual work.
First, copy the contents of the extracted browserpass-windows64
folder to a permanent location where you want Browserpass to be installed, for the sake of example let's suppose it is C:\Program Files\Browserpass\
.
Then edit the hosts json files (in our example C:\Program Files\Browserpass\browser-files\*-host.json
) and replace %%replace%%
with a full path to browserpass-windows64.exe
(in our example C:\\Program Files\\Browserpass\\browserpass-windows64.exe
).
Finally proceed to the Configure browsers on Windows section.
If you want to use WSL instead, follow Linux installation steps, then create %localappdata%\Browserpass\browserpass-wsl.bat
with the following contents:
@echo off
bash -c /usr/bin/browserpass-linux64
Then edit the hosts json files (in our example C:\Program Files\Browserpass\browser-files\*-host.json
) and replace %%replace%%
with a full path to browserpass-wsl.bat
you've just created.
Finally proceed to the Configure browsers on Windows section.
Remember to check Hints for configuring gpg on how to configure pinentry to unlock your PGP key.
The Makefile (which is also available in /usr/lib/browserpass/
, if you installed via package manager) contains the following make
goals to configure the browsers you use:
Command | Description |
---|---|
sudo make hosts-chromium |
Configure browserpass for Chromium browser, system-wide |
make hosts-chromium-user |
Configure browserpass for Chromium browser, for the current user only |
sudo make hosts-chrome |
Configure browserpass for Google Chrome browser, system-wide |
make hosts-chrome-user |
Configure browserpass for Google Chrome browser, for the current user only |
sudo make hosts-vivaldi |
Configure browserpass for Vivaldi browser, system-wide |
make hosts-vivaldi-user |
Configure browserpass for Vivaldi browser, for the current user only |
sudo make hosts-brave |
Configure browserpass for Brave browser, system-wide |
make hosts-brave-user |
Configure browserpass for Brave browser, for the current user only |
sudo make hosts-firefox |
Configure browserpass for Firefox browser, system-wide |
make hosts-firefox-user |
Configure browserpass for Firefox browser, for the current user only |
In addition, Chromium-based browsers support the following make
goals:
Command | Description |
---|---|
sudo make policies-chromium |
Automatically install browser extension for Chromium browser, system-wide |
make policies-chromium-user |
Automatically install browser extension for Chromium browser, for the current user only |
sudo make policies-chrome |
Automatically install browser extension for Google Chrome browser, system-wide |
make policies-chrome-user |
Automatically install browser extension for Google Chrome browser, for the current user only |
sudo make policies-brave |
Automatically install browser extension for Brave browser, system-wide |
make policies-brave-user |
Automatically install browser extension for Brave browser, for the current user only |
The Makefile currently does not support Windows, so instead of the make goals shown above you'd have to do a bit of a manual work.
Open regedit
and create a browser-specific subkey, it can be under HKEY_CURRENT_USER
(hkcu
) or HKEY_LOCAL_MACHINE
(hklm
) depending if you want to configure Browserpass only for your user or for all users respectively:
- Google Chrome:
hkcu:\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native
- Firefox:
hkcu:\Software\Mozilla\NativeMessagingHosts\com.github.browserpass.native
Inside this subkey create a new property called (Default)
with the value of the full path to the browser-specific hosts json file, for example:
- Google Chrome:
C:\Program Files\Browserpass\browser-files\chromium-host.json
- Firefox:
C:\Program Files\Browserpass\browser-files\firefox-host.json
You can automate all of these steps by running the following commands in PowerShell:
# Google Chrome
New-Item -Path "hkcu:\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native" -force
New-ItemProperty -Path "hkcu:\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native" -Name "(Default)" -Value "C:\Program Files\Browserpass\browser-files\chromium-host.json"
# Firefox
New-Item -Path "hkcu:\Software\Mozilla\NativeMessagingHosts\com.github.browserpass.native" -force
New-ItemProperty -Path "hkcu:\Software\Mozilla\NativeMessagingHosts\com.github.browserpass.native" -Name "(Default)" -Value "C:\Program Files\Browserpass\browser-files\firefox-host.json"
For other browsers, please explore the registry to find the correct location, and peek into Makefile for inspiration.
Make sure you have the latest stable Go installed.
The following make
goals are available (check Makefile for more details):
Command | Description |
---|---|
make or make all |
Compile the app and run tests |
make browserpass |
Compile the app for your OS |
make browserpass-linux64 |
Compile the app for Linux 64-bit |
make browserpass-windows64 |
Compile the app for Windows 64-bit |
make browserpass-darwin64 |
Compile the app for Mac OS X 64-bit |
make browserpass-openbsd64 |
Compile the app for OpenBSD 64-bit |
make browserpass-freebsd64 |
Compile the app for FreeBSD 64-bit |
make test |
Run tests |
First build the docker image using the following command in the project root:
docker build -t browserpass-native .
The entry point in the docker image is the make
command. To run it:
docker run --rm -v "$(pwd)":/src browserpass-native
Specify make
goal(s) as the last parameter, for example:
docker run --rm -v "$(pwd)":/src browserpass-native test
Refer to the list of available make
goals above.
If you installed the app using a package manager for your OS, you will likely update it in the same way.
If you installed manually, repeat the steps in the Install manually section.
First make sure gpg
and some pinentry
are installed.
- on macOS many people succeeded with
pinentry-mac
- on Windows WSL people succeded with pinentry-wsl-ps1
Make sure your pinentry program is configured in ~/.gnupg/gpg-agent.conf
:
pinentry-program /full/path/to/pinentry
If Browserpass is unable to locate the proper gpg
binary, try configuring a full path to your gpg
in the browser extension settings or in .browserpass.json
file in the root of your password store:
{
"gpgPath": "/full/path/to/gpg"
}
- Fork the repo
- Create your feature branch
git checkout -b my-new-feature
- Commit your changes
git commit -am 'Add some feature'
- Push the branch
git push origin my-new-feature
- Create a new pull request