mirror of https://github.com/keeweb/keeweb.git
kdbx4
This commit is contained in:
parent
a8290d8199
commit
334b50b074
14
Gruntfile.js
14
Gruntfile.js
|
@ -50,7 +50,7 @@ module.exports = function(grunt) {
|
|||
var webpackConfig = {
|
||||
entry: {
|
||||
app: 'app',
|
||||
vendor: ['jquery', 'underscore', 'backbone', 'kdbxweb', 'baron', 'dropbox', 'pikaday', 'filesaver', 'qrcode']
|
||||
vendor: ['jquery', 'underscore', 'backbone', 'kdbxweb', 'baron', 'dropbox', 'pikaday', 'filesaver', 'qrcode', 'argon2']
|
||||
},
|
||||
output: {
|
||||
path: 'tmp/js',
|
||||
|
@ -77,6 +77,7 @@ module.exports = function(grunt) {
|
|||
pikaday: 'pikaday/pikaday.js',
|
||||
filesaver: 'FileSaver.js/FileSaver.min.js',
|
||||
qrcode: 'jsqrcode/dist/qrcode.min.js',
|
||||
argon2: 'argon2-browser/docs/dist/argon2-asm.min.js',
|
||||
templates: path.join(__dirname, 'app/templates')
|
||||
}
|
||||
},
|
||||
|
@ -97,12 +98,13 @@ module.exports = function(grunt) {
|
|||
{ test: /\.js$/, exclude: /(node_modules|bower_components)/, loader: 'babel',
|
||||
query: { presets: ['es2015'], cacheDirectory: true }
|
||||
},
|
||||
{ test: /\.json$/, loader: 'json' }
|
||||
{ test: /\.json$/, loader: 'json' },
|
||||
{ test: /argon2-asm\.min\.js$/, loader: 'exports?Module' }
|
||||
]
|
||||
},
|
||||
plugins: [
|
||||
new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'),
|
||||
new webpack.BannerPlugin('keeweb v' + pkg.version + ', (c) 2015 ' + pkg.author.name +
|
||||
new webpack.BannerPlugin('keeweb v' + pkg.version + ', (c) ' + new Date().getFullYear() + ' ' + pkg.author.name +
|
||||
', opensource.org/licenses/' + pkg.license),
|
||||
new webpack.optimize.OccurenceOrderPlugin(),
|
||||
new webpack.ProvidePlugin({ _: 'underscore', $: 'jquery' }),
|
||||
|
@ -116,11 +118,13 @@ module.exports = function(grunt) {
|
|||
crypto: false,
|
||||
Buffer: false,
|
||||
__filename: false,
|
||||
__dirname: false
|
||||
__dirname: false,
|
||||
fs: false
|
||||
},
|
||||
externals: {
|
||||
xmldom: 'null',
|
||||
crypto: 'null'
|
||||
crypto: 'null',
|
||||
fs: 'null'
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -10,7 +10,8 @@ var AppModel = require('./models/app-model'),
|
|||
Updater = require('./comp/updater'),
|
||||
AuthReceiver = require('./comp/auth-receiver'),
|
||||
ExportApi = require('./comp/export-api'),
|
||||
SettingsManager = require('./util/settings-manager'),
|
||||
SettingsManager = require('./comp/settings-manager'),
|
||||
KdbxwebInit = require('./util/kdbxweb-init'),
|
||||
Locale = require('./util/locale');
|
||||
|
||||
$(() => {
|
||||
|
@ -49,6 +50,7 @@ $(() => {
|
|||
KeyHandler.init();
|
||||
IdleTracker.init();
|
||||
PopupNotifier.init();
|
||||
KdbxwebInit.init();
|
||||
window.kw = ExportApi;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
const Backbone = require('backbone');
|
||||
const Locale = require('./locale');
|
||||
const Locale = require('./../util/locale');
|
||||
|
||||
const SettingsManager = {
|
||||
neutralLocale: null,
|
|
@ -0,0 +1,42 @@
|
|||
'use strict';
|
||||
|
||||
const kdbxweb = require('kdbxweb');
|
||||
|
||||
const KdbxwebInit = {
|
||||
init() {
|
||||
kdbxweb.CryptoEngine.argon2 = this.argon2;
|
||||
},
|
||||
|
||||
argon2(password, salt, memory, iterations, length, parallelism, type, version) {
|
||||
const Module = require('argon2');
|
||||
let passwordLen = password.byteLength;
|
||||
password = Module.allocate(new Uint8Array(password), 'i8', Module.ALLOC_NORMAL);
|
||||
let saltLen = salt.byteLength;
|
||||
salt = Module.allocate(new Uint8Array(salt), 'i8', Module.ALLOC_NORMAL);
|
||||
let hash = Module.allocate(new Array(length), 'i8', Module.ALLOC_NORMAL);
|
||||
let encodedLen = 512;
|
||||
let encoded = Module.allocate(new Array(encodedLen), 'i8', Module.ALLOC_NORMAL);
|
||||
// jshint camelcase:false
|
||||
try {
|
||||
let res = Module._argon2_hash(iterations, memory, parallelism,
|
||||
password, passwordLen, salt, saltLen,
|
||||
hash, length, encoded, encodedLen, type, version);
|
||||
if (res) {
|
||||
return Promise.reject('Argon2 error ' + res);
|
||||
}
|
||||
let hashArr = new Uint8Array(length);
|
||||
for (let i = 0; i < length; i++) {
|
||||
hashArr[i] = Module.HEAP8[hash + i];
|
||||
}
|
||||
Module._free(password);
|
||||
Module._free(salt);
|
||||
Module._free(hash);
|
||||
Module._free(encoded);
|
||||
return Promise.resolve(hashArr);
|
||||
} catch (e) {
|
||||
return Promise.reject(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = KdbxwebInit;
|
|
@ -20,7 +20,7 @@ var Backbone = require('backbone'),
|
|||
KeyHandler = require('../comp/key-handler'),
|
||||
IdleTracker = require('../comp/idle-tracker'),
|
||||
Launcher = require('../comp/launcher'),
|
||||
SettingsManager = require('../util/settings-manager'),
|
||||
SettingsManager = require('../comp/settings-manager'),
|
||||
Locale = require('../util/locale'),
|
||||
UpdateModel = require('../models/update-model');
|
||||
|
||||
|
|
|
@ -10,10 +10,10 @@ var Backbone = require('backbone'),
|
|||
UpdateModel = require('../../models/update-model'),
|
||||
RuntimeInfo = require('../../comp/runtime-info'),
|
||||
Alerts = require('../../comp/alerts'),
|
||||
SettingsManager = require('../../comp/settings-manager'),
|
||||
Storage = require('../../storage'),
|
||||
FeatureDetector = require('../../util/feature-detector'),
|
||||
Locale = require('../../util/locale'),
|
||||
SettingsManager = require('../../util/settings-manager'),
|
||||
Links = require('../../const/links');
|
||||
|
||||
var SettingsGeneralView = Backbone.View.extend({
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
"pikaday": "1.4.0",
|
||||
"FileSaver.js": "eligrey/FileSaver.js",
|
||||
"jquery": "3.1.0",
|
||||
"jsqrcode": "antelle/jsqrcode#0.1.3"
|
||||
"jsqrcode": "antelle/jsqrcode#0.1.3",
|
||||
"argon2-browser": "^0.0.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.idea" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/bower_components" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/dist" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/node_modules" />
|
||||
|
|
Loading…
Reference in New Issue