| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 'use strict';var nativeImpl = require('crypto');var checkParameters = require('./lib/precondition');var defaultEncoding = require('./lib/default-encoding');var toBuffer = require('./lib/to-buffer');function nativePBKDF2(password, salt, iterations, keylen, digest, callback) {	checkParameters(iterations, keylen);	password = toBuffer(password, defaultEncoding, 'Password');	salt = toBuffer(salt, defaultEncoding, 'Salt');	if (typeof digest === 'function') {		callback = digest;		digest = 'sha1';	}	if (typeof callback !== 'function') {		throw new Error('No callback provided to pbkdf2');	}	return nativeImpl.pbkdf2(password, salt, iterations, keylen, digest, callback);}function nativePBKDF2Sync(password, salt, iterations, keylen, digest) {	checkParameters(iterations, keylen);	password = toBuffer(password, defaultEncoding, 'Password');	salt = toBuffer(salt, defaultEncoding, 'Salt');	digest = digest || 'sha1';	return nativeImpl.pbkdf2Sync(password, salt, iterations, keylen, digest);}/* istanbul ignore next */if (!nativeImpl.pbkdf2Sync || nativeImpl.pbkdf2Sync.toString().indexOf('keylen, digest') === -1) {	/* eslint global-require: 0 */	exports.pbkdf2Sync = require('./lib/sync');	exports.pbkdf2 = require('./lib/async');// native} else {	exports.pbkdf2Sync = nativePBKDF2Sync;	exports.pbkdf2 = nativePBKDF2;}
 |