Merge branch 'master' into develop

This commit is contained in:
antelle 2020-12-10 23:16:06 +01:00
commit acc60e6297
No known key found for this signature in database
GPG Key ID: 63C9777AAB7C563C
15 changed files with 43 additions and 52 deletions

View File

@ -235,7 +235,7 @@ jobs:
tagRegex: "^v(\\d+\\.\\d+\\.\\d+)$"
tagRegexGroup: 1
- name: Setup GCloud
uses: google-github-actions/github-actions/setup-gcloud@master
uses: google-github-actions/setup-gcloud@master
with:
version: '285.0.0'
service_account_key: ${{ secrets.GCP_SA_KEY }}

View File

@ -1,23 +0,0 @@
name: Deploy
on:
push:
branches: [ 'gh-pages' ]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
ref: 'gh-pages'
- name: Setup GCloud
uses: google-github-actions/github-actions/setup-gcloud@master
with:
version: '285.0.0'
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Restore git mtime
run: curl -Ss https://raw.githubusercontent.com/MestreLion/git-tools/f3cc70b73200154d027554714c354f35a08680ed/git-restore-mtime | python3
- name: Sync
run: gsutil -m rsync -r -d -x "^\.|^[a-f\d-]{36}$|^README\.md$" . gs://app.keeweb.info/

View File

@ -593,7 +593,7 @@
"setAboutTitle": "About",
"setAboutBuilt": "This app is built with these awesome tools",
"setAboutLic": "License",
"setAboutLicComment": "The app itself and all included components are licensed under MIT license",
"setAboutLicComment": "The app itself and all included components are licensed under MIT license, unless otherwise specified",
"setAboutFirst": "This is an open-source app created by {}",
"setAboutSecond": "and licensed under {}.",
"setAboutSource": "The source code and issues are on {}.",

View File

@ -1,6 +1,4 @@
{
"appSaveErrorExitLoseChanges": "Afsluiten en alle aanpassingen kwijtraken",
"appSaveErrorExitLoseChangesBody": "Je kunt de app afsluiten en alle wijzigingen kwijtraken, of je kunt de bestandsinstellingen gebruiken om gegevens te exporteren",
"retToApp": "retour vers l'appli",
"name": "nom",
"icon": "icône",
@ -318,6 +316,8 @@
"appSaveError": "Sauver l'erreur",
"appSaveErrorBody": "Échec sauvegarde auto du fichier",
"appSaveErrorBodyMul": "Échec sauvegarde auto des fichiers",
"appSaveErrorExitLoseChanges": "Afsluiten en alle aanpassingen kwijtraken",
"appSaveErrorExitLoseChangesBody": "Je kunt de app afsluiten en alle wijzigingen kwijtraken, of je kunt de bestandsinstellingen gebruiken om gegevens te exporteren",
"appSettingsError": "Erreur lancement appli",
"appSettingsErrorBody": "Il y a eu une erreur lors du chargement des paramètres. Merci de revérifier l'URL de l'application ou contacter votre administrateur.",
"appNotSupportedError": "Votre navigateur n'est pas compatible avec certaines fonctionnalités importantes que nous utilisons.",

View File

@ -522,10 +522,11 @@ class FileModel extends Model {
}
generateAndSetKeyFile() {
const keyFile = kdbxweb.Credentials.createRandomKeyFile();
const keyFileName = 'Generated';
this.setKeyFile(keyFile, keyFileName);
return keyFile;
return kdbxweb.Credentials.createRandomKeyFile().then((keyFile) => {
const keyFileName = 'Generated';
this.setKeyFile(keyFile, keyFileName);
return keyFile;
});
}
resetKeyFile() {
@ -715,7 +716,9 @@ class FileModel extends Model {
}
static createKeyFileWithHash(hash) {
return kdbxweb.Credentials.createKeyFileWithHash(hash);
const hashData = kdbxweb.ByteUtils.base64ToBytes(hash);
const hexHash = kdbxweb.ByteUtils.bytesToHex(hashData);
return kdbxweb.ByteUtils.stringToBytes(hexHash);
}
}

View File

@ -164,7 +164,7 @@ class MenuModel extends Model {
const filter = {};
filter[filterKey] = filterValue;
Events.emit('set-filter', filter);
} else if (sections === this.menus.settings) {
} else if (sections === this.menus.settings && sel.item.page) {
Events.emit('set-page', {
page: sel.item.page,
section: sel.item.section,

View File

@ -191,7 +191,7 @@ class OpenView extends View {
Alerts.alert({
header: Locale.openLocalFile,
body: Locale.openLocalFileBody,
icon: 'file-text',
icon: 'file-alt',
buttons: [
{ result: 'skip', title: Locale.openLocalFileDontShow, error: true },
{ result: 'ok', title: Locale.alertOk }
@ -533,7 +533,7 @@ class OpenView extends View {
this.$el.removeClass('open--drag');
const files = [...(e.target.files || e.dataTransfer.files)];
const dataFile = files.find((file) => /\.kdbx$/i.test(file.name));
const keyFile = files.find((file) => /\.key$/i.test(file.name));
const keyFile = files.find((file) => /\.keyx?$/i.test(file.name));
if (dataFile) {
this.setFile(
dataFile,

View File

@ -147,6 +147,7 @@ class SettingsFileView extends View {
historyMaxSize: Math.round(this.model.historyMaxSize / 1024 / 1024),
formatVersion: this.model.formatVersion,
kdfName: this.model.kdfName,
isArgon2Kdf: this.model.kdfName.startsWith('Argon2'),
keyEncryptionRounds: this.model.keyEncryptionRounds,
keyChangeForce: this.model.keyChangeForce > 0 ? this.model.keyChangeForce : null,
kdfParameters: this.kdfParametersToUi(this.model.kdfParameters),
@ -434,10 +435,11 @@ class SettingsFileView extends View {
}
generateKeyFile() {
const keyFile = this.model.generateAndSetKeyFile();
const blob = new Blob([keyFile], { type: 'application/octet-stream' });
FileSaver.saveAs(blob, this.model.name + '.key');
this.renderKeyFileSelect();
this.model.generateAndSetKeyFile().then((keyFile) => {
const blob = new Blob([keyFile], { type: 'application/octet-stream' });
FileSaver.saveAs(blob, this.model.name + '.key');
this.renderKeyFileSelect();
});
}
clearKeyFile() {

View File

@ -37,8 +37,8 @@
{{#if isDesktop}}
<h3>Desktop modules</h3>
<ul>
<li><a href="https://github.com/antelle/node-stream-zip" target="_blank">node-stream-zip</a><span class="muted-color">, node.js library for fast reading of large ZIPs, &copy; 2015 Antelle https://github.com/antelle</span></li>
<li><a href="https://github.com/ranisalt/node-argon2" target="_blank">node-argon2</a><span class="muted-color">, node.js bindings for Argon2 hashing algorithm, copy; 2015 Ranieri Althoff</span></li>
<li><a href="https://github.com/antelle/node-stream-zip" target="_blank">node-stream-zip</a><span class="muted-color">, node.js library for fast reading of large ZIPs, &copy; 2015 Antelle</span></li>
<li><a href="https://github.com/ranisalt/node-argon2" target="_blank">node-argon2</a><span class="muted-color">, node.js bindings for Argon2 hashing algorithm, &copy; 2015 Ranieri Althoff</span></li>
<li><a href="https://github.com/tessel/node-usb" target="_blank">node-usb</a><span class="muted-color">, improved USB library for Node.js, &copy; 2012 Nonolith Labs, LLC</span></li>
<li><a href="https://github.com/atom/node-keytar" target="_blank">node-keytar</a><span class="muted-color">, native password node module, &copy; 2013 GitHub Inc.</span></li>
<li><a href="https://github.com/antelle/node-yubikey-chalresp" target="_blank">node-yubikey-chalresp</a><span class="muted-color">, YubiKey challenge-response API for node.js, &copy; 2020 Antelle</span></li>

View File

@ -179,7 +179,7 @@
id="settings__file-kdf-rounds" data-field="rounds" value="{{kdfParameters.rounds}}" maxlength="10" />
</div>
{{/ifeq}}
{{#ifeq kdfName 'Argon2'}}
{{#if isArgon2Kdf}}
<div class="settings__row">
<div class="settings__col-small">
<label class="settings__col-small-label" for="settings__file-kdf-iter">{{res 'setFileKdfParamsIter'}}:</label>
@ -197,7 +197,7 @@
data-field="parallelism" id="settings__file-kdf-par" value="{{kdfParameters.parallelism}}" maxlength="2" />
</div>
</div>
{{/ifeq}}
{{/if}}
{{/if}}
<label for="settings__file-key-change-force">{{res 'setFileKeyChangeForce'}}:</label>

View File

@ -1,6 +1,6 @@
{
"name": "KeeWeb",
"version": "1.16.1",
"version": "1.16.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "KeeWeb",
"version": "1.16.1",
"version": "1.16.3",
"description": "Free cross-platform password manager compatible with KeePass",
"main": "main.js",
"homepage": "https://keeweb.info",

8
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "keeweb",
"version": "1.16.1",
"version": "1.16.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -9783,9 +9783,9 @@
}
},
"kdbxweb": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/kdbxweb/-/kdbxweb-1.11.0.tgz",
"integrity": "sha512-8jhyAU+X8Kk9zsQobwMwx6wFI6XJyMrWuPWq+PcWaYwBW3l9ruN91FbRWbLSQvKku3IRLgpMgCIqiWBS/tQjCQ==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/kdbxweb/-/kdbxweb-1.13.0.tgz",
"integrity": "sha512-WDTZH63zYP4zdS/kCigyIeX0kEboRgR7wuToaLBHVchTKeNOisi3d2rdpJRQaCzcAAzoqOR8nZon2wpW8DH1+w==",
"requires": {
"pako": "github:keeweb/pako#653c0b00d8941c89d09ed4546d2179001ec44efc",
"text-encoding": "github:keeweb/text-encoding#4dfb7cb0954c222852092f8b06ae4f6b4f60bfbb",

View File

@ -1,6 +1,6 @@
{
"name": "keeweb",
"version": "1.16.1",
"version": "1.16.3",
"description": "Free cross-platform password manager compatible with KeePass",
"main": "Gruntfile.js",
"private": true,
@ -66,7 +66,7 @@
"jquery": "3.5.1",
"json-loader": "^0.5.7",
"jsqrcode": "github:antelle/jsqrcode#0.1.3",
"kdbxweb": "^1.11.0",
"kdbxweb": "^1.13.0",
"load-grunt-tasks": "5.1.0",
"lodash": "^4.17.20",
"marked": "^1.2.5",

View File

@ -1,9 +1,18 @@
Release notes
-------------
##### v1.16.3 (2020-12-10)
`-` fix #1650: keyfiles stored in the app can't be used
##### v1.16.2 (2020-12-10)
`+` possibility to use V2 keyfiles (.keyx)
`-` fixed a missing icon in the local file question box
`-` fix #1649: missing Argon2 options
`-` minor license screen fixes
##### v1.16.1 (2020-12-04)
`+` native Apple Silicon build
`+` Argon2id KDF support
`+` added an options to quit the app and lose all changes
`+` added an option to quit the app and lose all changes
`-` fix #1637: git commit in the About box
`-` fixed some design glitches
`*` keyfile paths are saved by default