-
-
Notifications
You must be signed in to change notification settings - Fork 62
Expand file tree
/
Copy pathindex.js
More file actions
43 lines (35 loc) · 1.33 KB
/
index.js
File metadata and controls
43 lines (35 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'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;
}