A simple and straightforward SuperGenPass Chrome Extension for those of us who don't want to use the bookmarklet or for those browsers that don't support bookmarklets (I'm looking at you, Vivaldi !)
Actually, this is the reason why I wrote this extension, since I'm using Vivaldi as my main browser and it has some weird bug that doesn't allow me to run the SuperGenPass bookmarklet.
The extension is built using React (boilerplate generated by create-react-app).
The only permission that the extension needs is activeTab.
Besides this, the extension doesn't make any network calls and doesn't store any kind of information.
For the hashing algorithm, I used the official Javascript implementation of SuperGenPass installed as a npm module.
The extension keeps the default behaviour of SuperGenPass:
- subdomains are being stripped from the URL for which the password will be generated
- 10 hash rounds
md5as the hash function (other options might get included for the next versions of the extension)- no
saltis being added to the master password (this could be added in next versions of the extension)
Howerver, I chose to set a default password length of 16, instead of the default value of 10. I feel that password requirements are getting stricter and a length of 10 might not be universally accepted anymore.
Going with a length of 16 everywhere is better than having to remember different lengths of passwords for particular websites.
Prerequisites:
- npm
- Chrome based web browser
Installation steps:
- clone this repository
- open a terminal, navigate to where you've cloned the repo and run
npm i - run
npm run build. This will create abuildfolder. - open any Chrome based browser, type
chrome://extensionsin the address bar - enable
Developer modeby flicking the switch on the top-right corner - click on the
Load unpackedbutton and select the aforementionedbuildfolder
If you're like me and you don't want to write your master password each time you want to generate a password for a website (please don't judge), I implemented a possible workflow for this scenario - you can inject a local environment variable into the build folder.
Just follow the steps described above, but instead of step 3, do the following:
- create a
env.developmentfile - add a
REACT_APP_MASTER_PASSWORDvariable into the file- example:
REACT_APP_MASTER_PASSWORD=this_is_my_master_password
- example:
- run
npm run build:development. - continue with the next steps described above