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
md5
as the hash function (other options might get included for the next versions of the extension)- no
salt
is 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 abuild
folder. - open any Chrome based browser, type
chrome://extensions
in the address bar - enable
Developer mode
by flicking the switch on the top-right corner - click on the
Load unpacked
button and select the aforementionedbuild
folder
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.development
file - add a
REACT_APP_MASTER_PASSWORD
variable 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