2 min read

NativeMessagingHost confusion with browserpass

NativeMessagingHost confusion with browserpass
Logo of the BrowserPass browser extension

Just super quick: I use pass and pass-tomb for keeping my passwords safe on my computers - I love using the CLI for this. My tomb is encrypted with a gpg-key which I keep on a Yubikey - so overall, I feel alright with that setup.

That said, I'm also lazy. Which is why I found the browser extensions for Firefox and Chromium (and Google Chrome) for said pass password management solution. Because I still love using the CLI, but I also love being smart/lazy about stuff.

Now, Firefox is pretty straightforward and fairly easy to implement - you can just follow the instructions right here

Chromium (depending on what operating system you got) also worked pretty much as described right here - I had it easiest with Arch Linux, tbh.

Right now I was trying to get the same extension working on my Macbook's Google Chrome install. Previously I had it enabled for my Ungoogled Chromium browser (simply via a brew install), but now I wanted the same for the Google build. I downloaded everything according to the docs, all the way to "configuring browsers" - and suddenly, dead symlink. Or, more precisely - the JSON file for the Native Messaging Host was symlinked to a non-existent file in a non-existent directory.

/Users/jmc/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.github.browserpass.native.json -> /usr/lib/browserpass/hosts/chromium/com.github.browserpass.native.json

Error: the symlink points to a non-existent location

Hmp.

The dev behind browserpass said as much, that this could happen - mainly because not every community supplied package can be tested in all environments all the time etc etc.

Thankfully I thought of the browserpass add-on working in Ungoogled Chromium, and it's really not that different from Chrome (aside from all the Google stuff). So I checked where the symlinked JSON file for the UC Native Messaging Host was pointing to, and voila! - I found the original file set up by the brew process.

/browserpass/3.0.8/lib/browserpass/hosts/chromium/com.github.browserpass.native.json

All I then needed to do was to go back to Chrome's home directory (somewhere in my Users Library path), delete the symlink JSON file and create a new symlink pointing to the original file in Ungoogled Chromium's Native Messaging Host directory.

ln -s 

/usr/local/Cellar/browserpass/3.0.8/lib/browserpass/hosts/chromium/com.github.browserpass.native.json 

/Users/jmc/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.github.browserpass.native.json

(The hard part for me to remember every time is which link will be the ORIGINAL and which one will be the one pointing to it. It's ln -s Original Pointing-To-Original).

Maybe there could have been an easier and much more thorough and sensible way - but this is the one that occurred to me and, well -

Now it works.

jmc