├── .editorconfig ├── .gitignore ├── .prettierrc ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── assets ├── icon.ico ├── icon128.png ├── icon256.png └── icon64.png ├── cli ├── .gitignore ├── README.md ├── package.json └── src │ └── index.js ├── core ├── .gitignore ├── README.md ├── package.json └── src │ ├── index.js │ └── index.test.js ├── extension ├── .gitignore ├── README.md ├── assets │ ├── icon128.png │ ├── icon256.png │ └── icon64.png ├── manifest.json └── src │ ├── popup.css │ ├── popup.html │ └── popup.js ├── mobile ├── .babelrc ├── .flowconfig ├── .gitignore ├── .watchmanconfig ├── App.js ├── README.md ├── app.json ├── package.json ├── src │ ├── App.js │ ├── App.test.js │ ├── Navigator.js │ ├── assets │ │ └── icons │ │ │ ├── icon128.png │ │ │ ├── icon256.png │ │ │ └── icon64.png │ ├── color.js │ ├── components │ │ ├── AddUserForm.js │ │ ├── Button.js │ │ ├── CenterText.js │ │ ├── ExampleGenerator.js │ │ ├── Grid.js │ │ ├── PasswordDisplay.js │ │ └── TypePicker.js │ ├── screens │ │ ├── AddUserScreen.js │ │ ├── GenerateScreen.js │ │ ├── ScanScreen.js │ │ ├── UsersScreen.js │ │ └── WelcomeScreen.js │ └── store │ │ ├── index.js │ │ ├── migrations.js │ │ ├── users.actions.js │ │ ├── users.js │ │ └── users.selectors.js └── yarn.lock ├── package.json ├── web ├── .gitignore ├── README.md ├── package.json ├── public │ ├── _headers │ ├── _redirects │ ├── favicon.ico │ ├── icon128.png │ ├── icon256.png │ ├── icon64.png │ ├── index.html │ └── manifest.json └── src │ ├── App.js │ ├── App.scss │ ├── App.test.js │ ├── bootstrap │ ├── _alert.scss │ ├── _badge.scss │ ├── _breadcrumb.scss │ ├── _button-group.scss │ ├── _buttons.scss │ ├── _card.scss │ ├── _carousel.scss │ ├── _close.scss │ ├── _code.scss │ ├── _custom-forms.scss │ ├── _dropdown.scss │ ├── _forms.scss │ ├── _functions.scss │ ├── _grid.scss │ ├── _images.scss │ ├── _input-group.scss │ ├── _jumbotron.scss │ ├── _list-group.scss │ ├── _media.scss │ ├── _mixins.scss │ ├── _modal.scss │ ├── _nav.scss │ ├── _navbar.scss │ ├── _pagination.scss │ ├── _popover.scss │ ├── _print.scss │ ├── _progress.scss │ ├── _reboot.scss │ ├── _root.scss │ ├── _tables.scss │ ├── _tooltip.scss │ ├── _transitions.scss │ ├── _type.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── bootstrap-grid.scss │ ├── bootstrap-reboot.scss │ ├── bootstrap.scss │ ├── mixins │ │ ├── _alert.scss │ │ ├── _background-variant.scss │ │ ├── _badge.scss │ │ ├── _border-radius.scss │ │ ├── _box-shadow.scss │ │ ├── _breakpoints.scss │ │ ├── _buttons.scss │ │ ├── _caret.scss │ │ ├── _clearfix.scss │ │ ├── _float.scss │ │ ├── _forms.scss │ │ ├── _gradients.scss │ │ ├── _grid-framework.scss │ │ ├── _grid.scss │ │ ├── _hover.scss │ │ ├── _image.scss │ │ ├── _list-group.scss │ │ ├── _lists.scss │ │ ├── _nav-divider.scss │ │ ├── _navbar-align.scss │ │ ├── _pagination.scss │ │ ├── _reset-text.scss │ │ ├── _resize.scss │ │ ├── _screen-reader.scss │ │ ├── _size.scss │ │ ├── _table-row.scss │ │ ├── _text-emphasis.scss │ │ ├── _text-hide.scss │ │ ├── _text-truncate.scss │ │ ├── _transition.scss │ │ └── _visibility.scss │ └── utilities │ │ ├── _align.scss │ │ ├── _background.scss │ │ ├── _borders.scss │ │ ├── _clearfix.scss │ │ ├── _display.scss │ │ ├── _embed.scss │ │ ├── _flex.scss │ │ ├── _float.scss │ │ ├── _position.scss │ │ ├── _screenreaders.scss │ │ ├── _sizing.scss │ │ ├── _spacing.scss │ │ ├── _text.scss │ │ └── _visibility.scss │ ├── components │ ├── AboutText.js │ ├── AddUserForm.js │ ├── AddUserModal.js │ ├── DeleteUserModal.js │ ├── ExampleGenerator.js │ ├── Footer.js │ ├── HelpText.js │ ├── Navbar.js │ ├── NavbarHelpButton.js │ ├── PasswordDisplay │ │ ├── index.js │ │ └── index.scss │ └── ScanModal.js │ ├── index.js │ ├── pages │ ├── About.js │ ├── Generate │ │ ├── Header.js │ │ └── index.js │ ├── Welcome │ │ ├── index.js │ │ └── index.scss │ └── index.js │ ├── registerServiceWorker.js │ └── store │ ├── index.js │ ├── migrations.js │ ├── session.js │ ├── transforms.js │ ├── users.actions.js │ ├── users.js │ └── users.selectors.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | 11 | # Indentation override for all JS under lib directory 12 | [*.js] 13 | indent_style = tab 14 | tab_width = 4 15 | 16 | # Matches the exact files either package.json, .travis.yml or netlify.toml 17 | [{package.json,.travis.yml,netlify.toml}] 18 | indent_style = space 19 | indent_size = 2 20 | 21 | 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | 4 | # misc 5 | .DS_Store 6 | 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs":true 3 | } 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "node" 4 | - "stable" 5 | cache: yarn 6 | 7 | jobs: 8 | include: 9 | - stage: deploy 10 | env: DEPLOY=netlify 11 | script: 12 | - "npm --prefix core run build" 13 | - "npm --prefix web run build" 14 | before_deploy: "npm i -g netlify-cli" # can't use yarn global?! 15 | deploy: 16 | provider: script 17 | skip_cleanup: true 18 | script: "netlify deploy -s $NETLIFY_SITE_ID -t $NETLIFY_ACCESS_TOKEN -p web/build" 19 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Working on MasterPassX 2 | 3 | Install [yarn](https://yarnpkg.com/). MasterPassX makes use of yarn's workspaces. 4 | 5 | 1) Clone project, `cd` into it. 6 | 2) Run `yarn` in the root directory of the project. This will get all dependencies for all sub-modules (`web`, `cli`, `core`). 7 | 3) Code! 8 | 9 | ## Web 10 | ```bash 11 | cd web 12 | ``` 13 | 14 | Run development mode: 15 | ```bash 16 | yarn watch 17 | ``` 18 | 19 | Run tests: 20 | ```bash 21 | yarn test 22 | ``` 23 | 24 | Build to `build`: 25 | ```bash 26 | yarn build 27 | ``` 28 | 29 | ## CLI 30 | ```bash 31 | cd cli 32 | ``` 33 | 34 | Build & run: 35 | ```bash 36 | yarn build-start 37 | ``` 38 | 39 | Build to `dist`: 40 | ```bash 41 | yarn build 42 | ``` 43 | 44 | ## Committing 45 | 46 | Before committing, run `yarn prettier` (in the root or in any submodules) to format the files with Prettier. 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Charles Crete 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [MasterPassX](https://masterpassx.org) [![Build Status](https://travis-ci.org/Cretezy/MasterPassX.svg?branch=master)](https://travis-ci.org/Cretezy/MasterPassX) 2 | 3 | MasterPassX is separated into many modules. It is based fully in JavaScript. 4 | 5 | ## [Web](web) 6 | 7 | The [main MasterPassX site](https://masterpassx.org). 8 | 9 | ## [Core](core) 10 | 11 | The core module is the base algorithm of MasterPassX. 12 | It's a simple and very fast implementation of the Master Password algorithm. 13 | 14 | ## [Extensions](extension) 15 | 16 | The [Firefox](https://addons.mozilla.org/en-US/firefox/addon/masterpassx/)/[Chrome](https://chrome.google.com/webstore/detail/masterpassx/acocljodaoecblhjggkadfhnbjcfgbbb) extensions. 17 | 18 | ## [CLI](cli) 19 | 20 | A simple command line interface for the MasterPassX algorithm. 21 | -------------------------------------------------------------------------------- /assets/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cretezy/MasterPassX/fbe9a7693a19fcbd3ed07ae887b240769b32a9a7/assets/icon.ico -------------------------------------------------------------------------------- /assets/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cretezy/MasterPassX/fbe9a7693a19fcbd3ed07ae887b240769b32a9a7/assets/icon128.png -------------------------------------------------------------------------------- /assets/icon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cretezy/MasterPassX/fbe9a7693a19fcbd3ed07ae887b240769b32a9a7/assets/icon256.png -------------------------------------------------------------------------------- /assets/icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cretezy/MasterPassX/fbe9a7693a19fcbd3ed07ae887b240769b32a9a7/assets/icon64.png -------------------------------------------------------------------------------- /cli/.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | coverage 7 | dist 8 | node_modules 9 | *.tgz 10 | .yarn-integrity 11 | .env 12 | -------------------------------------------------------------------------------- /cli/README.md: -------------------------------------------------------------------------------- 1 | # MasterPassX Cli 2 | 3 | A simple command-line interface for MasterPassX. Requires Node.js v8 or higher. 4 | 5 | ## Install 6 | 7 | `yarn global add masterpassx-cli` 8 | 9 | or 10 | 11 | `npm install --global masterpassx-cli` 12 | 13 | Make sure to have `yarn global bin` or `npm bin --global` in your PATH. 14 | 15 | ## Usage 16 | 17 | Command: `mpx` 18 | 19 | When no user found, it will ask you to setup a user (name & master password). 20 | 21 | To generate a password for a site, simply do `mpx` for a prompt or supply the site as an argument (i.e.: `mpx github.com`). 22 | 23 | Flags: 24 | 25 | * `-t, --template