| 1234567891011121314151617181920212223242526272829303132333435363738 | var native = 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 native.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 native.pbkdf2Sync(password, salt, iterations, keylen, digest)}/* istanbul ignore next */if (!native.pbkdf2Sync || native.pbkdf2Sync.toString().indexOf('keylen, digest') === -1) {  exports.pbkdf2Sync = require('./lib/sync')  exports.pbkdf2 = require('./lib/async')// native} else {  exports.pbkdf2Sync = nativePBKDF2Sync  exports.pbkdf2 = nativePBKDF2}
 |