UNPKG

pbkdf2

Version:

This library provides the functionality of PBKDF2 with the ability to use any supported hashing algorithm returned from crypto.getHashes()

28 lines (21 loc) 806 B
'use strict'; var $isFinite = isFinite; var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs module.exports = function (iterations, keylen) { if (typeof iterations !== 'number') { throw new TypeError('Iterations not a number'); } if (iterations < 0 || !$isFinite(iterations)) { throw new TypeError('Bad iterations'); } if (typeof keylen !== 'number') { throw new TypeError('Key length not a number'); } if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ throw new TypeError('Bad key length'); } // `-0` passes the `keylen < 0` guard above (since `-0 < 0` is `false`), but // the native binding requires a true Int32; `-0` is held as a double and // aborts the process (SIGABRT) on Node.js 15+. Coerce it to `+0`. return keylen + 0; };