| 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;
 
- }
 
 
  |