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