'length must be a multiple of 8', 'OperationError'); } byteLength = length / 8; } return new Promise((resolve, reject) => { pbkdf2(raw, salt, iterations, byteLength, hash, (err, result) => { if (err) return reject(err); resolve(result.buffer); }); }); } module.exports = { pbkdf2, pbkdf2Sync, pbkdf2DeriveBits, };