Skip to content
This repository was archived by the owner on Dec 5, 2022. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: derivepass/derivepass-vue
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.0.3
Choose a base ref
...
head repository: derivepass/derivepass-vue
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
  • 17 commits
  • 23 files changed
  • 2 contributors

Commits on Apr 9, 2019

  1. Copy the full SHA
    2ff633b View commit details
  2. 1.0.4

    indutny committed Apr 9, 2019
    1
    Copy the full SHA
    a236599 View commit details
  3. package: change appId

    indutny committed Apr 9, 2019
    Copy the full SHA
    c3a6a4b View commit details
  4. 1.0.5

    indutny committed Apr 9, 2019
    1
    Copy the full SHA
    b3307b3 View commit details

Commits on Apr 10, 2019

  1. readme: add information

    indutny committed Apr 10, 2019
    1
    Copy the full SHA
    003ba79 View commit details
  2. 1
    Copy the full SHA
    1d1277c View commit details
  3. Copy the full SHA
    da30d00 View commit details
  4. 1.1.0

    indutny committed Apr 10, 2019
    1
    Copy the full SHA
    7e7a170 View commit details
  5. 3
    Copy the full SHA
    4d19298 View commit details
  6. electron: fix lint issues

    indutny committed Apr 10, 2019
    1
    Copy the full SHA
    3844208 View commit details
  7. store: scrub emojis properly

    indutny committed Apr 10, 2019
    1
    Copy the full SHA
    53481c1 View commit details
  8. 1.2.0

    indutny committed Apr 10, 2019
    1
    Copy the full SHA
    23326cf View commit details
  9. Copy the full SHA
    aff1a06 View commit details
  10. 1.2.1

    indutny committed Apr 10, 2019
    1
    Copy the full SHA
    b114627 View commit details

Commits on May 10, 2019

  1. presets: redislabs.com

    indutny committed May 10, 2019
    1
    Copy the full SHA
    4b3eccc View commit details

Commits on Jan 8, 2020

  1. pages: home page english editorial update (#39)

    "English native" stuff.
    
    Also added links for AES, HMAC, and salt parameter.
    Fishrock123 authored and indutny committed Jan 8, 2020
    Copy the full SHA
    79f5c7e View commit details

Commits on Jan 29, 2020

  1. 1
    Copy the full SHA
    deb4fb3 View commit details
62 changes: 56 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,68 @@
# derivepass.vue
# DerivePass

*Compute secure passwords without storing them anywhere*

## About

DerivePass - is Password Manager that never stores your passwords anywhere: not
in the Cloud, and not even locally! Instead, the passwords are generated
on-the-fly by using the Master Password and the combination of domain-name and
login. This way, the passwords are unique for each website and at the same time
compromising a single password does not compromise others.

The project is a [VueJS](https://vuejs.org/) application, written in a
JavaScript language. The online version is hosted on [Now][now],
while the standalone version is an [Electron](https://electronjs.org/) app.

## Project setup

You'll need to download the dependencies to run DerivePass locally:

```
npm install
```

### Compiles and hot-reloads for development
### Development

This command will start a local web-server, and will update the application
through hot-reload mechanism.

```
npm run serve
```

### Compiles and minifies for production
### Publishing

Every build is automatically deployed to [Now][now], and the latest master
commit lives at https://dev.derivepass.com/.

Manual builds could be triggered by:

```
npm run build
```

### Run your tests
Electron builds:

```
npm run electron:build
```

...or just electron app (using the latest build output):

```
npm run electron
```

New releases of electron app could be published with:
```
npm run electron:publish
```

NOTE: requires `GH_TOKEN` env variable and appropriate developer certificates
in the Keychain for macOS builds.

### Running tests
```
npm run test
```
@@ -25,8 +72,9 @@ npm run test
npm run lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
### Credits

* [Òscar Casajuana](https://github.com/elboletaire) - Catalan translation

#### LICENSE

@@ -52,3 +100,5 @@ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.

[now]: https://zeit.co/now
60 changes: 59 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 20 additions & 18 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"name": "DerivePass",
"version": "1.0.3",
"version": "1.2.1",
"private": true,
"author": "Fedor Indutny <fedor@indutny.com>",
"description": "Compute secure passwords without storing them anywhere",
"license": "MIT",
"main": "src/electron/main.js",
"repository": "git@github.com:derivepass/derivepass-vue",
"build": {
"appId": "com.electron.derivepass",
"appId": "com.indutny.derivepass-electron",
"productName": "DerivePass",
"mac": {
"category": "public.app-category.productivity"
@@ -35,35 +35,36 @@
"electron:publish": "npm run electron:build -- -p always"
},
"devDependencies": {
"bn.js": "^4.11.8",
"bootstrap-vue": "^2.0.0-rc.18",
"debug": "^4.1.1",
"hash.js": "^1.1.7",
"jsqr": "^1.2.0",
"qr-image": "^3.2.0",
"register-service-worker": "^1.6.2",
"uuid": "^3.3.2",
"vue": "^2.6.10",
"vue-clipboard2": "^0.2.1",
"vue-i18n": "^8.10.0",
"vue-router": "^3.0.3",
"vuex": "^3.1.0",
"worker-loader": "^2.0.0",
"@kazupon/vue-i18n-loader": "^0.3.0",
"@vue/cli-plugin-eslint": "^3.5.1",
"@vue/cli-plugin-pwa": "^3.5.1",
"@vue/cli-plugin-unit-mocha": "^3.5.1",
"@vue/cli-service": "^3.5.3",
"@vue/test-utils": "^1.0.0-beta.29",
"babel-eslint": "^10.0.1",
"bn.js": "^4.11.8",
"bootstrap-vue": "^2.0.0-rc.18",
"chai": "^4.1.2",
"csp-html-webpack-plugin": "^3.0.1",
"debug": "^4.1.1",
"electron": "^4.1.4",
"electron-builder": "^20.39.0",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.2.2",
"hash.js": "^1.1.7",
"jsqr": "^1.2.0",
"mocha": "^5.2.0",
"qr-image": "^3.2.0",
"register-service-worker": "^1.6.2",
"uuid": "^3.3.2",
"vue": "^2.6.10",
"vue-cli-plugin-i18n": "^0.5.2",
"vue-template-compiler": "^2.6.10"
"vue-clipboard2": "^0.2.1",
"vue-i18n": "^8.10.0",
"vue-router": "^3.0.3",
"vue-template-compiler": "^2.6.10",
"vuex": "^3.1.0",
"worker-loader": "^2.0.0"
},
"eslintConfig": {
"root": true,
@@ -92,5 +93,6 @@
"dependencies": {
"electron-log": "^3.0.5",
"electron-updater": "^4.0.6"
}
},
"engines": { "node": "12.x" }
}
2 changes: 0 additions & 2 deletions public/index.html
Original file line number Diff line number Diff line change
@@ -21,8 +21,6 @@
<meta name="twitter:creator" content="@indutny">
<meta name="twitter:image:src" content="https://derivepass.com/img/icons/android-chrome-512x512.png">

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; connect-src 'self' data: https://api.apple-cloudkit.com/">

<link rel="icon" href="<%= BASE_URL %>favicon.png">
<title>DerivePass</title>
</head>
6 changes: 3 additions & 3 deletions src/components/tutorial.vue
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
"en": {
"master": {
"empty": "Hello!|Let's walk you through the basics|Choose a strong Master Password|Memorize it or write it down...|...and enter it below",
"password": "Excellent choice!|You might be wondering what those emoji mean{\"silent\":\"sweaty\"}They represent your Master Password in a unique way|It is very easy to check that you typed it correctly|Even if a single character is off|The emoji won't be the same|Don't be worried about revealing your password, though|Master Password can't be recovered from them|Let's hit \"@:(button.next)\" button{\"delay\":true}",
"password": "Excellent choice!|Let's hit \"@:(button.next)\" button{\"delay\":true}",
"confirm": "Still remember your Master Password?|Let's type it one more time to confirm|If something is wrong, you can start from scratch by hitting \"@:(button.reset)\"{\"delay\":true}",
"submit": "Perfect!|Click \"@:(button.start)\" to continue"
},
@@ -20,7 +20,7 @@
"ru": {
"master": {
"empty": "Здравствуйте!|Давайте вместе разберемся, как пользоваться DerivePass|Выберите надежный Мастер Пароль|Запомните его или запишите...|...и введите его в поле ниже",
"password": "Прекрасный выбор!|Возможно, вас заинтересовали emoji внизу?{\"silent\":\"sweaty\"}Они уникально подобраны для вашего Мастер Пароля|Проверить правильность ввода очень просто|Если хотя бы один символ был набран неверно|Emoji будут отличаться от тех, что вы видите сейчас|Несмотря на это, Мастер Пароль нельзя подглядеть и восстановить из emoji|Давайте нажмем \"@:(button.next)\"{\"delay\":true}",
"password": "Прекрасный выбор!|Давайте нажмем \"@:(button.next)\"{\"delay\":true}",
"confirm": "Все еще помните ваш Мастер Пароль?|Введите его еще один раз для подтверждения|Если что-то пошло не так, вы всегда можете начать сначала, нажав \"@:(button.reset)\"{\"delay\":true}",
"submit": "Замечательно!|Нажмите \"@:(button.start)\", чтобы продолжить"
},
@@ -37,7 +37,7 @@
"ca": {
"master": {
"empty": "Hola!|Anem a veure els bàsics|Escull una Contrasenya Mestre forta|Memoritza-la, o anota-te-la...|...i introdueix-la a continuació",
"password": "Genial elecció!!|Deus estar pensant què signifiquen aquests emoji{\"silent\":\"sweaty\"}Representen la teva Contrasenya Mestre d'una manera única|És molt fàcil comprovar que l'has escrita correctament|Inclús si et deixes un sol caràcter|Els emoji no seran els mateixos|No pateixis si reveles una contrasenya per això|La Contrasenya Mestre no es pot extreure d'elles|Va, apretem el botó \"@:(button.next)\"{\"delay\":true}",
"password": "Genial elecció!!|Va, apretem el botó \"@:(button.next)\"{\"delay\":true}",
"confirm": "Encara recordes la teva Contrasenya Mestre?|Va, posa-la un cop més per confirmar-ho|Si res esta malament, pots començar de nou prement el botó \"@:(button.reset)\"{\"delay\":true}",
"submit": "Perfecte!|Prem \"@:(button.start)\" per continuar"
},
4 changes: 2 additions & 2 deletions src/electron/main.js
Original file line number Diff line number Diff line change
@@ -126,7 +126,7 @@ app.on('window-all-closed', () => {

// Open windows in external browser
app.on('web-contents-created', (_, contents) => {
contents.on('new-window', (e, url, frame, disposition, options, features) => {
contents.on('new-window', (e, url) => {
e.preventDefault();
shell.openExternal(url);
});
@@ -136,7 +136,7 @@ app.on('activate', () => {
createWindow();
});

ipc.on('icloud:auth', ({ sender }, { seq, url }) => {
ipc.on('icloud:auth', (_, { seq, url }) => {
const popup = new BrowserWindow({
center: true,
width: 500,
2 changes: 1 addition & 1 deletion src/electron/preload.js
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ Object.assign(window.electron, {

ipc.send('icloud:auth', { seq, url });

return await new Promise((resolve, reject) => {
return await new Promise((resolve) => {
queue.set(seq, (payload) => {
queue.delete(seq);

10 changes: 7 additions & 3 deletions src/pages/application.vue
Original file line number Diff line number Diff line change
@@ -363,9 +363,11 @@
<b-form-group
:label="$t('extra.allowed.label')"
label-for="application-allowed-chars"
:description="$t('extra.allowed.description')"
:invalid-feedback="invalidAllowedFeedback"
:state="allowedState">
<template v-slot:description>
<span v-html="$t('extra.allowed.description')"/>
</template>
<b-form-input
required
id="application-allowed-chars"
@@ -377,9 +379,11 @@
<b-form-group
:label="$t('extra.required.label')"
label-for="application-required-chars"
:description="$t('extra.required.description')"
:invalid-feedback="invalidRequiredFeedback"
:state="requiredState">
<template v-slot:description>
<span v-html="$t('extra.required.description')"/>
</template>
<b-form-input
id="application-required-chars"
v-model="app.options.required"
@@ -517,7 +521,7 @@ export default {
login: '',
revision: 1,
master: this.$store.state.emoji,
master: '',
index: parseInt(this.$route.query.index, 10) || 0,
removed: false,
changedAt: Date.now(),
Loading