pbkdf2: fix for browser.
This commit is contained in:
parent
be1ec1c22d
commit
2a5a8cdc93
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
var digest = require('./digest');
|
var digest = require('./digest');
|
||||||
var crypto = global.crypto || global.msCrypto || {};
|
var crypto = global.crypto || global.msCrypto || {};
|
||||||
var subtle = crypto.subtle && crypto.subtle.importKey ? crypto.subtle : {};
|
var subtle = crypto.subtle || {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform key derivation using PBKDF2.
|
* Perform key derivation using PBKDF2.
|
||||||
@ -62,32 +62,27 @@ exports.derive = function derive(key, salt, iter, len, alg) {
|
|||||||
* @returns {Promise}
|
* @returns {Promise}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
exports.deriveAsync = function deriveAsync(key, salt, iter, len, alg) {
|
exports.deriveAsync = async function deriveAsync(key, salt, iter, len, alg) {
|
||||||
var algo = { name: 'PBKDF2' };
|
var algo = { name: 'PBKDF2' };
|
||||||
var use = ['deriveBits'];
|
var use = ['deriveBits'];
|
||||||
var name = getHash(alg);
|
var options, key, data;
|
||||||
var length = len * 8;
|
|
||||||
var options, promise;
|
if (!subtle.importKey || !subtle.deriveBits)
|
||||||
|
return exports.derive(key, salt, iter, len, alg);
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
name: 'PBKDF2',
|
name: 'PBKDF2',
|
||||||
salt: salt,
|
salt: salt,
|
||||||
iterations: iter,
|
iterations: iter,
|
||||||
hash: name
|
hash: getHash(alg)
|
||||||
};
|
};
|
||||||
|
|
||||||
promise = subtle.importKey('raw', key, algo, false, use);
|
key = await subtle.importKey('raw', key, algo, false, use);
|
||||||
|
data = await subtle.deriveBits(options, key, len * 8);
|
||||||
|
|
||||||
return promise.then(function(key) {
|
return Buffer.from(data);
|
||||||
return subtle.deriveBits(options, key, length);
|
|
||||||
}).then(function(result) {
|
|
||||||
return Buffer.from(result);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!subtle.deriveBits)
|
|
||||||
exports.pbkdf2Async = exports.pbkdf2;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helpers
|
* Helpers
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -10,8 +10,8 @@
|
|||||||
* @module crypto.pbkdf2
|
* @module crypto.pbkdf2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var co = require('../utils/co');
|
|
||||||
var crypto = require('crypto');
|
var crypto = require('crypto');
|
||||||
|
var co = require('../utils/co');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform key derivation using PBKDF2.
|
* Perform key derivation using PBKDF2.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user