diff options
Diffstat (limited to 'node_modules/pbkdf2/lib')
-rw-r--r-- | node_modules/pbkdf2/lib/sync-browser.js | 31 | ||||
-rw-r--r-- | node_modules/pbkdf2/lib/sync.js | 21 |
2 files changed, 24 insertions, 28 deletions
diff --git a/node_modules/pbkdf2/lib/sync-browser.js b/node_modules/pbkdf2/lib/sync-browser.js index 2452e9fe3..7f0bf9131 100644 --- a/node_modules/pbkdf2/lib/sync-browser.js +++ b/node_modules/pbkdf2/lib/sync-browser.js @@ -16,6 +16,7 @@ var sizes = { rmd160: 20, ripemd160: 20 } + function Hmac (alg, key, saltLen) { var hash = getDigest(alg) var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 @@ -52,16 +53,16 @@ Hmac.prototype.run = function (data, ipad) { } function getDigest (alg) { - if (alg === 'rmd160' || alg === 'ripemd160') return rmd160 - if (alg === 'md5') return md5 - return shaFunc - function shaFunc (data) { return sha(alg).update(data).digest() } + + if (alg === 'rmd160' || alg === 'ripemd160') return rmd160 + if (alg === 'md5') return md5 + return shaFunc } -module.exports = function (password, salt, iterations, keylen, digest) { +function pbkdf2 (password, salt, iterations, keylen, digest) { if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) @@ -75,28 +76,26 @@ module.exports = function (password, salt, iterations, keylen, digest) { var block1 = Buffer.allocUnsafe(salt.length + 4) salt.copy(block1, 0, 0, salt.length) - var U, j, destPos, len - - var hLen = hmac.size - var T = Buffer.allocUnsafe(hLen) + var destPos = 0 + var hLen = sizes[digest] var l = Math.ceil(keylen / hLen) - var r = keylen - (l - 1) * hLen for (var i = 1; i <= l; i++) { block1.writeUInt32BE(i, salt.length) - U = hmac.run(block1, hmac.ipad1) - U.copy(T, 0, 0, hLen) + var T = hmac.run(block1, hmac.ipad1) + var U = T - for (j = 1; j < iterations; j++) { + for (var j = 1; j < iterations; j++) { U = hmac.run(U, hmac.ipad2) for (var k = 0; k < hLen; k++) T[k] ^= U[k] } - destPos = (i - 1) * hLen - len = (i === l ? r : hLen) - T.copy(DK, destPos, 0, len) + T.copy(DK, destPos) + destPos += hLen } return DK } + +module.exports = pbkdf2 diff --git a/node_modules/pbkdf2/lib/sync.js b/node_modules/pbkdf2/lib/sync.js index 762e2f4e4..67b2e543d 100644 --- a/node_modules/pbkdf2/lib/sync.js +++ b/node_modules/pbkdf2/lib/sync.js @@ -13,41 +13,38 @@ var createHmac = require('create-hmac') var checkParameters = require('../lib/precondition') var defaultEncoding = require('../lib/default-encoding') var Buffer = require('safe-buffer').Buffer -module.exports = pbkdf2 + function pbkdf2 (password, salt, iterations, keylen, digest) { if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) checkParameters(iterations, keylen) - digest = digest || 'sha1' var DK = Buffer.allocUnsafe(keylen) var block1 = Buffer.allocUnsafe(salt.length + 4) salt.copy(block1, 0, 0, salt.length) - var U, j, destPos, len - + var destPos = 0 var hLen = sizes[digest] - var T = Buffer.allocUnsafe(hLen) var l = Math.ceil(keylen / hLen) - var r = keylen - (l - 1) * hLen for (var i = 1; i <= l; i++) { block1.writeUInt32BE(i, salt.length) - U = createHmac(digest, password).update(block1).digest() - U.copy(T, 0, 0, hLen) + var T = createHmac(digest, password).update(block1).digest() + var U = T - for (j = 1; j < iterations; j++) { + for (var j = 1; j < iterations; j++) { U = createHmac(digest, password).update(U).digest() for (var k = 0; k < hLen; k++) T[k] ^= U[k] } - destPos = (i - 1) * hLen - len = (i === l ? r : hLen) - T.copy(DK, destPos, 0, len) + T.copy(DK, destPos) + destPos += hLen } return DK } + +module.exports = pbkdf2 |