meteor-node-stubs 1.2.18 → 1.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/node_modules/@meteorjs/browserify-sign/browser/sign.js +1 -1
  2. package/node_modules/@meteorjs/browserify-sign/elliptic/README.md +238 -0
  3. package/node_modules/@meteorjs/browserify-sign/elliptic/benchmarks/deps/jodid.js +82 -0
  4. package/node_modules/@meteorjs/browserify-sign/elliptic/benchmarks/deps/secp256k1.js +41 -0
  5. package/node_modules/@meteorjs/browserify-sign/elliptic/benchmarks/index.js +153 -0
  6. package/node_modules/@meteorjs/browserify-sign/elliptic/benchmarks/package.json +21 -0
  7. package/node_modules/@meteorjs/browserify-sign/elliptic/dist/.gitkeep +0 -0
  8. package/node_modules/@meteorjs/browserify-sign/elliptic/dist/elliptic.js +8961 -0
  9. package/node_modules/@meteorjs/browserify-sign/elliptic/dist/elliptic.min.js +1 -0
  10. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/curve/base.js +381 -0
  11. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/curve/edwards.js +435 -0
  12. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/curve/index.js +8 -0
  13. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/curve/mont.js +178 -0
  14. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/curve/short.js +938 -0
  15. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/curves.js +206 -0
  16. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/ec/index.js +278 -0
  17. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/ec/key.js +121 -0
  18. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/ec/signature.js +176 -0
  19. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/eddsa/index.js +121 -0
  20. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/eddsa/key.js +95 -0
  21. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/eddsa/signature.js +66 -0
  22. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/precomputed/secp256k1.js +780 -0
  23. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic/utils.js +122 -0
  24. package/node_modules/@meteorjs/browserify-sign/elliptic/lib/elliptic.js +13 -0
  25. package/node_modules/@meteorjs/browserify-sign/elliptic/test/api-test.js +20 -0
  26. package/node_modules/@meteorjs/browserify-sign/elliptic/test/curve-test.js +357 -0
  27. package/node_modules/@meteorjs/browserify-sign/elliptic/test/ecdh-test.js +43 -0
  28. package/node_modules/@meteorjs/browserify-sign/elliptic/test/ecdsa-test.js +547 -0
  29. package/node_modules/@meteorjs/browserify-sign/elliptic/test/ed25519-test.js +138 -0
  30. package/node_modules/@meteorjs/browserify-sign/elliptic/test/fixtures/derivation-fixtures.js +3842 -0
  31. package/node_modules/@meteorjs/browserify-sign/elliptic/test/fixtures/sign.input +1024 -0
  32. package/node_modules/@meteorjs/browserify-sign/elliptic/test/index.js +10 -0
  33. package/node_modules/@meteorjs/browserify-sign/elliptic/test/unittests.html +39 -0
  34. package/node_modules/@meteorjs/browserify-sign/package.json +2 -1
  35. package/node_modules/pbkdf2/.eslintrc +45 -0
  36. package/node_modules/pbkdf2/.github/FUNDING.yml +12 -0
  37. package/node_modules/pbkdf2/.nycrc +10 -0
  38. package/node_modules/pbkdf2/CHANGELOG.md +345 -0
  39. package/node_modules/pbkdf2/README.md +27 -9
  40. package/node_modules/pbkdf2/browser.js +4 -2
  41. package/node_modules/pbkdf2/index.js +30 -25
  42. package/node_modules/pbkdf2/lib/async.js +108 -104
  43. package/node_modules/pbkdf2/lib/default-encoding.js +8 -6
  44. package/node_modules/pbkdf2/lib/precondition.js +16 -14
  45. package/node_modules/pbkdf2/lib/sync-browser.js +120 -94
  46. package/node_modules/pbkdf2/lib/sync.js +59 -38
  47. package/node_modules/pbkdf2/lib/to-buffer.js +18 -11
  48. package/node_modules/pbkdf2/package.json +75 -68
  49. package/package.json +1 -1
@@ -1,118 +1,122 @@
1
- var Buffer = require('safe-buffer').Buffer
1
+ 'use strict';
2
2
 
3
- var checkParameters = require('./precondition')
4
- var defaultEncoding = require('./default-encoding')
5
- var sync = require('./sync')
6
- var toBuffer = require('./to-buffer')
3
+ var Buffer = require('safe-buffer').Buffer;
7
4
 
8
- var ZERO_BUF
9
- var subtle = global.crypto && global.crypto.subtle
5
+ var checkParameters = require('./precondition');
6
+ var defaultEncoding = require('./default-encoding');
7
+ var sync = require('./sync');
8
+ var toBuffer = require('./to-buffer');
9
+
10
+ var ZERO_BUF;
11
+ var subtle = global.crypto && global.crypto.subtle;
10
12
  var toBrowser = {
11
- sha: 'SHA-1',
12
- 'sha-1': 'SHA-1',
13
- sha1: 'SHA-1',
14
- sha256: 'SHA-256',
15
- 'sha-256': 'SHA-256',
16
- sha384: 'SHA-384',
17
- 'sha-384': 'SHA-384',
18
- 'sha-512': 'SHA-512',
19
- sha512: 'SHA-512'
20
- }
21
- var checks = []
22
- function checkNative (algo) {
23
- if (global.process && !global.process.browser) {
24
- return Promise.resolve(false)
25
- }
26
- if (!subtle || !subtle.importKey || !subtle.deriveBits) {
27
- return Promise.resolve(false)
28
- }
29
- if (checks[algo] !== undefined) {
30
- return checks[algo]
31
- }
32
- ZERO_BUF = ZERO_BUF || Buffer.alloc(8)
33
- var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)
34
- .then(function () {
35
- return true
36
- }).catch(function () {
37
- return false
38
- })
39
- checks[algo] = prom
40
- return prom
13
+ sha: 'SHA-1',
14
+ 'sha-1': 'SHA-1',
15
+ sha1: 'SHA-1',
16
+ sha256: 'SHA-256',
17
+ 'sha-256': 'SHA-256',
18
+ sha384: 'SHA-384',
19
+ 'sha-384': 'SHA-384',
20
+ 'sha-512': 'SHA-512',
21
+ sha512: 'SHA-512'
22
+ };
23
+ var checks = [];
24
+ var nextTick;
25
+ function getNextTick() {
26
+ if (nextTick) {
27
+ return nextTick;
28
+ }
29
+ if (global.process && global.process.nextTick) {
30
+ nextTick = global.process.nextTick;
31
+ } else if (global.queueMicrotask) {
32
+ nextTick = global.queueMicrotask;
33
+ } else if (global.setImmediate) {
34
+ nextTick = global.setImmediate;
35
+ } else {
36
+ nextTick = global.setTimeout;
37
+ }
38
+ return nextTick;
41
39
  }
42
- var nextTick
43
- function getNextTick () {
44
- if (nextTick) {
45
- return nextTick
46
- }
47
- if (global.process && global.process.nextTick) {
48
- nextTick = global.process.nextTick
49
- } else if (global.queueMicrotask) {
50
- nextTick = global.queueMicrotask
51
- } else if (global.setImmediate) {
52
- nextTick = global.setImmediate
53
- } else {
54
- nextTick = global.setTimeout
55
- }
56
- return nextTick
40
+ function browserPbkdf2(password, salt, iterations, length, algo) {
41
+ return subtle.importKey('raw', password, { name: 'PBKDF2' }, false, ['deriveBits']).then(function (key) {
42
+ return subtle.deriveBits({
43
+ name: 'PBKDF2',
44
+ salt: salt,
45
+ iterations: iterations,
46
+ hash: {
47
+ name: algo
48
+ }
49
+ }, key, length << 3);
50
+ }).then(function (res) {
51
+ return Buffer.from(res);
52
+ });
57
53
  }
58
- function browserPbkdf2 (password, salt, iterations, length, algo) {
59
- return subtle.importKey(
60
- 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']
61
- ).then(function (key) {
62
- return subtle.deriveBits({
63
- name: 'PBKDF2',
64
- salt: salt,
65
- iterations: iterations,
66
- hash: {
67
- name: algo
68
- }
69
- }, key, length << 3)
70
- }).then(function (res) {
71
- return Buffer.from(res)
72
- })
54
+ function checkNative(algo) {
55
+ if (global.process && !global.process.browser) {
56
+ return Promise.resolve(false);
57
+ }
58
+ if (!subtle || !subtle.importKey || !subtle.deriveBits) {
59
+ return Promise.resolve(false);
60
+ }
61
+ if (checks[algo] !== undefined) {
62
+ return checks[algo];
63
+ }
64
+ ZERO_BUF = ZERO_BUF || Buffer.alloc(8);
65
+ var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)
66
+ .then(
67
+ function () { return true; },
68
+ function () { return false; }
69
+ );
70
+ checks[algo] = prom;
71
+ return prom;
73
72
  }
74
73
 
75
- function resolvePromise (promise, callback) {
76
- promise.then(function (out) {
77
- getNextTick()(function () {
78
- callback(null, out)
79
- })
80
- }, function (e) {
81
- getNextTick()(function () {
82
- callback(e)
83
- })
84
- })
74
+ function resolvePromise(promise, callback) {
75
+ promise.then(function (out) {
76
+ getNextTick()(function () {
77
+ callback(null, out);
78
+ });
79
+ }, function (e) {
80
+ getNextTick()(function () {
81
+ callback(e);
82
+ });
83
+ });
85
84
  }
86
85
  module.exports = function (password, salt, iterations, keylen, digest, callback) {
87
- if (typeof digest === 'function') {
88
- callback = digest
89
- digest = undefined
90
- }
86
+ if (typeof digest === 'function') {
87
+ callback = digest;
88
+ digest = undefined;
89
+ }
91
90
 
92
- digest = digest || 'sha1'
93
- var algo = toBrowser[digest.toLowerCase()]
91
+ digest = digest || 'sha1';
92
+ var algo = toBrowser[digest.toLowerCase()];
94
93
 
95
- if (!algo || typeof global.Promise !== 'function') {
96
- getNextTick()(function () {
97
- var out
98
- try {
99
- out = sync(password, salt, iterations, keylen, digest)
100
- } catch (e) {
101
- return callback(e)
102
- }
103
- callback(null, out)
104
- })
105
- return
106
- }
94
+ if (!algo || typeof global.Promise !== 'function') {
95
+ getNextTick()(function () {
96
+ var out;
97
+ try {
98
+ out = sync(password, salt, iterations, keylen, digest);
99
+ } catch (e) {
100
+ callback(e);
101
+ return;
102
+ }
103
+ callback(null, out);
104
+ });
105
+ return;
106
+ }
107
107
 
108
- checkParameters(iterations, keylen)
109
- password = toBuffer(password, defaultEncoding, 'Password')
110
- salt = toBuffer(salt, defaultEncoding, 'Salt')
111
- if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')
108
+ checkParameters(iterations, keylen);
109
+ password = toBuffer(password, defaultEncoding, 'Password');
110
+ salt = toBuffer(salt, defaultEncoding, 'Salt');
111
+ if (typeof callback !== 'function') {
112
+ throw new Error('No callback provided to pbkdf2');
113
+ }
112
114
 
113
- resolvePromise(checkNative(algo).then(function (resp) {
114
- if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)
115
+ resolvePromise(checkNative(algo).then(function (resp) {
116
+ if (resp) {
117
+ return browserPbkdf2(password, salt, iterations, keylen, algo);
118
+ }
115
119
 
116
- return sync(password, salt, iterations, keylen, digest)
117
- }), callback)
118
- }
120
+ return sync(password, salt, iterations, keylen, digest);
121
+ }), callback);
122
+ };
@@ -1,12 +1,14 @@
1
- var defaultEncoding
1
+ 'use strict';
2
+
3
+ var defaultEncoding;
2
4
  /* istanbul ignore next */
3
5
  if (global.process && global.process.browser) {
4
- defaultEncoding = 'utf-8'
6
+ defaultEncoding = 'utf-8';
5
7
  } else if (global.process && global.process.version) {
6
- var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)
8
+ var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10);
7
9
 
8
- defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'
10
+ defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary';
9
11
  } else {
10
- defaultEncoding = 'utf-8'
12
+ defaultEncoding = 'utf-8';
11
13
  }
12
- module.exports = defaultEncoding
14
+ module.exports = defaultEncoding;
@@ -1,19 +1,21 @@
1
- var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs
1
+ 'use strict';
2
+
3
+ var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs
2
4
 
3
5
  module.exports = function (iterations, keylen) {
4
- if (typeof iterations !== 'number') {
5
- throw new TypeError('Iterations not a number')
6
- }
6
+ if (typeof iterations !== 'number') {
7
+ throw new TypeError('Iterations not a number');
8
+ }
7
9
 
8
- if (iterations < 0) {
9
- throw new TypeError('Bad iterations')
10
- }
10
+ if (iterations < 0) {
11
+ throw new TypeError('Bad iterations');
12
+ }
11
13
 
12
- if (typeof keylen !== 'number') {
13
- throw new TypeError('Key length not a number')
14
- }
14
+ if (typeof keylen !== 'number') {
15
+ throw new TypeError('Key length not a number');
16
+ }
15
17
 
16
- if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */
17
- throw new TypeError('Bad key length')
18
- }
19
- }
18
+ if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */
19
+ throw new TypeError('Bad key length');
20
+ }
21
+ };
@@ -1,105 +1,131 @@
1
- var md5 = require('create-hash/md5')
2
- var RIPEMD160 = require('ripemd160')
3
- var sha = require('sha.js')
4
- var Buffer = require('safe-buffer').Buffer
1
+ 'use strict';
5
2
 
6
- var checkParameters = require('./precondition')
7
- var defaultEncoding = require('./default-encoding')
8
- var toBuffer = require('./to-buffer')
3
+ var md5 = require('create-hash/md5');
4
+ var RIPEMD160 = require('ripemd160');
5
+ var sha = require('sha.js');
6
+ var Buffer = require('safe-buffer').Buffer;
9
7
 
10
- var ZEROS = Buffer.alloc(128)
11
- var sizes = {
12
- md5: 16,
13
- sha1: 20,
14
- sha224: 28,
15
- sha256: 32,
16
- sha384: 48,
17
- sha512: 64,
18
- rmd160: 20,
19
- ripemd160: 20
20
- }
8
+ var checkParameters = require('./precondition');
9
+ var defaultEncoding = require('./default-encoding');
10
+ var toBuffer = require('./to-buffer');
21
11
 
22
- function Hmac (alg, key, saltLen) {
23
- var hash = getDigest(alg)
24
- var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
25
-
26
- if (key.length > blocksize) {
27
- key = hash(key)
28
- } else if (key.length < blocksize) {
29
- key = Buffer.concat([key, ZEROS], blocksize)
30
- }
31
-
32
- var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])
33
- var opad = Buffer.allocUnsafe(blocksize + sizes[alg])
34
- for (var i = 0; i < blocksize; i++) {
35
- ipad[i] = key[i] ^ 0x36
36
- opad[i] = key[i] ^ 0x5C
37
- }
38
-
39
- var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)
40
- ipad.copy(ipad1, 0, 0, blocksize)
41
- this.ipad1 = ipad1
42
- this.ipad2 = ipad
43
- this.opad = opad
44
- this.alg = alg
45
- this.blocksize = blocksize
46
- this.hash = hash
47
- this.size = sizes[alg]
12
+ var ZEROS = Buffer.alloc(128);
13
+ var sizes = {
14
+ __proto__: null,
15
+ md5: 16,
16
+ sha1: 20,
17
+ sha224: 28,
18
+ sha256: 32,
19
+ sha384: 48,
20
+ sha512: 64,
21
+ 'sha512-256': 32,
22
+ ripemd160: 20,
23
+ rmd160: 20
24
+ };
25
+
26
+ var mapping = {
27
+ __proto__: null,
28
+ 'sha-1': 'sha1',
29
+ 'sha-224': 'sha224',
30
+ 'sha-256': 'sha256',
31
+ 'sha-384': 'sha384',
32
+ 'sha-512': 'sha512',
33
+ 'ripemd-160': 'ripemd160'
34
+ };
35
+
36
+ function rmd160Func(data) {
37
+ return new RIPEMD160().update(data).digest();
48
38
  }
49
39
 
50
- Hmac.prototype.run = function (data, ipad) {
51
- data.copy(ipad, this.blocksize)
52
- var h = this.hash(ipad)
53
- h.copy(this.opad, this.blocksize)
54
- return this.hash(this.opad)
40
+ function getDigest(alg) {
41
+ function shaFunc(data) {
42
+ return sha(alg).update(data).digest();
43
+ }
44
+
45
+ if (alg === 'rmd160' || alg === 'ripemd160') {
46
+ return rmd160Func;
47
+ }
48
+ if (alg === 'md5') {
49
+ return md5;
50
+ }
51
+ return shaFunc;
55
52
  }
56
53
 
57
- function getDigest (alg) {
58
- function shaFunc (data) {
59
- return sha(alg).update(data).digest()
60
- }
61
- function rmd160Func (data) {
62
- return new RIPEMD160().update(data).digest()
63
- }
64
-
65
- if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func
66
- if (alg === 'md5') return md5
67
- return shaFunc
54
+ function Hmac(alg, key, saltLen) {
55
+ var hash = getDigest(alg);
56
+ var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;
57
+
58
+ if (key.length > blocksize) {
59
+ key = hash(key);
60
+ } else if (key.length < blocksize) {
61
+ key = Buffer.concat([key, ZEROS], blocksize);
62
+ }
63
+
64
+ var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);
65
+ var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);
66
+ for (var i = 0; i < blocksize; i++) {
67
+ ipad[i] = key[i] ^ 0x36;
68
+ opad[i] = key[i] ^ 0x5C;
69
+ }
70
+
71
+ var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);
72
+ ipad.copy(ipad1, 0, 0, blocksize);
73
+ this.ipad1 = ipad1;
74
+ this.ipad2 = ipad;
75
+ this.opad = opad;
76
+ this.alg = alg;
77
+ this.blocksize = blocksize;
78
+ this.hash = hash;
79
+ this.size = sizes[alg];
68
80
  }
69
81
 
70
- function pbkdf2 (password, salt, iterations, keylen, digest) {
71
- checkParameters(iterations, keylen)
72
- password = toBuffer(password, defaultEncoding, 'Password')
73
- salt = toBuffer(salt, defaultEncoding, 'Salt')
74
-
75
- digest = digest || 'sha1'
76
-
77
- var hmac = new Hmac(digest, password, salt.length)
78
-
79
- var DK = Buffer.allocUnsafe(keylen)
80
- var block1 = Buffer.allocUnsafe(salt.length + 4)
81
- salt.copy(block1, 0, 0, salt.length)
82
-
83
- var destPos = 0
84
- var hLen = sizes[digest]
85
- var l = Math.ceil(keylen / hLen)
86
-
87
- for (var i = 1; i <= l; i++) {
88
- block1.writeUInt32BE(i, salt.length)
89
-
90
- var T = hmac.run(block1, hmac.ipad1)
91
- var U = T
92
-
93
- for (var j = 1; j < iterations; j++) {
94
- U = hmac.run(U, hmac.ipad2)
95
- for (var k = 0; k < hLen; k++) T[k] ^= U[k]
96
- }
97
-
98
- T.copy(DK, destPos)
99
- destPos += hLen
100
- }
101
-
102
- return DK
82
+ Hmac.prototype.run = function (data, ipad) {
83
+ data.copy(ipad, this.blocksize);
84
+ var h = this.hash(ipad);
85
+ h.copy(this.opad, this.blocksize);
86
+ return this.hash(this.opad);
87
+ };
88
+
89
+ function pbkdf2(password, salt, iterations, keylen, digest) {
90
+ checkParameters(iterations, keylen);
91
+ password = toBuffer(password, defaultEncoding, 'Password');
92
+ salt = toBuffer(salt, defaultEncoding, 'Salt');
93
+
94
+ var lowerDigest = (digest || 'sha1').toLowerCase();
95
+ var mappedDigest = mapping[lowerDigest] || lowerDigest;
96
+ var size = sizes[mappedDigest];
97
+ if (typeof size !== 'number' || !size) {
98
+ throw new TypeError('Digest algorithm not supported: ' + digest);
99
+ }
100
+
101
+ var hmac = new Hmac(mappedDigest, password, salt.length);
102
+
103
+ var DK = Buffer.allocUnsafe(keylen);
104
+ var block1 = Buffer.allocUnsafe(salt.length + 4);
105
+ salt.copy(block1, 0, 0, salt.length);
106
+
107
+ var destPos = 0;
108
+ var hLen = size;
109
+ var l = Math.ceil(keylen / hLen);
110
+
111
+ for (var i = 1; i <= l; i++) {
112
+ block1.writeUInt32BE(i, salt.length);
113
+
114
+ var T = hmac.run(block1, hmac.ipad1);
115
+ var U = T;
116
+
117
+ for (var j = 1; j < iterations; j++) {
118
+ U = hmac.run(U, hmac.ipad2);
119
+ for (var k = 0; k < hLen; k++) {
120
+ T[k] ^= U[k];
121
+ }
122
+ }
123
+
124
+ T.copy(DK, destPos);
125
+ destPos += hLen;
126
+ }
127
+
128
+ return DK;
103
129
  }
104
130
 
105
- module.exports = pbkdf2
131
+ module.exports = pbkdf2;
@@ -1,52 +1,73 @@
1
+ 'use strict';
2
+
1
3
  var sizes = {
2
- md5: 16,
3
- sha1: 20,
4
- sha224: 28,
5
- sha256: 32,
6
- sha384: 48,
7
- sha512: 64,
8
- rmd160: 20,
9
- ripemd160: 20
10
- }
4
+ __proto__: null,
5
+ md5: 16,
6
+ sha1: 20,
7
+ sha224: 28,
8
+ sha256: 32,
9
+ sha384: 48,
10
+ sha512: 64,
11
+ 'sha512-256': 32,
12
+ rmd160: 20,
13
+ ripemd160: 20
14
+ };
15
+
16
+ var mapping = {
17
+ __proto__: null,
18
+ 'sha-1': 'sha1',
19
+ 'sha-224': 'sha224',
20
+ 'sha-256': 'sha256',
21
+ 'sha-384': 'sha384',
22
+ 'sha-512': 'sha512',
23
+ 'ripemd-160': 'ripemd160'
24
+ };
11
25
 
12
- var createHmac = require('create-hmac')
13
- var Buffer = require('safe-buffer').Buffer
26
+ var createHmac = require('create-hmac');
27
+ var Buffer = require('safe-buffer').Buffer;
14
28
 
15
- var checkParameters = require('./precondition')
16
- var defaultEncoding = require('./default-encoding')
17
- var toBuffer = require('./to-buffer')
29
+ var checkParameters = require('./precondition');
30
+ var defaultEncoding = require('./default-encoding');
31
+ var toBuffer = require('./to-buffer');
18
32
 
19
- function pbkdf2 (password, salt, iterations, keylen, digest) {
20
- checkParameters(iterations, keylen)
21
- password = toBuffer(password, defaultEncoding, 'Password')
22
- salt = toBuffer(salt, defaultEncoding, 'Salt')
33
+ function pbkdf2(password, salt, iterations, keylen, digest) {
34
+ checkParameters(iterations, keylen);
35
+ password = toBuffer(password, defaultEncoding, 'Password');
36
+ salt = toBuffer(salt, defaultEncoding, 'Salt');
23
37
 
24
- digest = digest || 'sha1'
38
+ var lowerDigest = (digest || 'sha1').toLowerCase();
39
+ var mappedDigest = mapping[lowerDigest] || lowerDigest;
40
+ var size = sizes[mappedDigest];
41
+ if (typeof size !== 'number' || !size) {
42
+ throw new TypeError('Digest algorithm not supported: ' + digest);
43
+ }
25
44
 
26
- var DK = Buffer.allocUnsafe(keylen)
27
- var block1 = Buffer.allocUnsafe(salt.length + 4)
28
- salt.copy(block1, 0, 0, salt.length)
45
+ var DK = Buffer.allocUnsafe(keylen);
46
+ var block1 = Buffer.allocUnsafe(salt.length + 4);
47
+ salt.copy(block1, 0, 0, salt.length);
29
48
 
30
- var destPos = 0
31
- var hLen = sizes[digest]
32
- var l = Math.ceil(keylen / hLen)
49
+ var destPos = 0;
50
+ var hLen = size;
51
+ var l = Math.ceil(keylen / hLen);
33
52
 
34
- for (var i = 1; i <= l; i++) {
35
- block1.writeUInt32BE(i, salt.length)
53
+ for (var i = 1; i <= l; i++) {
54
+ block1.writeUInt32BE(i, salt.length);
36
55
 
37
- var T = createHmac(digest, password).update(block1).digest()
38
- var U = T
56
+ var T = createHmac(mappedDigest, password).update(block1).digest();
57
+ var U = T;
39
58
 
40
- for (var j = 1; j < iterations; j++) {
41
- U = createHmac(digest, password).update(U).digest()
42
- for (var k = 0; k < hLen; k++) T[k] ^= U[k]
43
- }
59
+ for (var j = 1; j < iterations; j++) {
60
+ U = createHmac(mappedDigest, password).update(U).digest();
61
+ for (var k = 0; k < hLen; k++) {
62
+ T[k] ^= U[k];
63
+ }
64
+ }
44
65
 
45
- T.copy(DK, destPos)
46
- destPos += hLen
47
- }
66
+ T.copy(DK, destPos);
67
+ destPos += hLen;
68
+ }
48
69
 
49
- return DK
70
+ return DK;
50
71
  }
51
72
 
52
- module.exports = pbkdf2
73
+ module.exports = pbkdf2;
@@ -1,13 +1,20 @@
1
- var Buffer = require('safe-buffer').Buffer
1
+ 'use strict';
2
+
3
+ var Buffer = require('safe-buffer').Buffer;
4
+ var toBuffer = require('to-buffer');
5
+
6
+ var useUint8Array = typeof Uint8Array !== 'undefined';
7
+ var useArrayBuffer = useUint8Array && typeof ArrayBuffer !== 'undefined';
8
+ var isView = useArrayBuffer && ArrayBuffer.isView;
2
9
 
3
10
  module.exports = function (thing, encoding, name) {
4
- if (Buffer.isBuffer(thing)) {
5
- return thing
6
- } else if (typeof thing === 'string') {
7
- return Buffer.from(thing, encoding)
8
- } else if (ArrayBuffer.isView(thing)) {
9
- return Buffer.from(thing.buffer)
10
- } else {
11
- throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')
12
- }
13
- }
11
+ if (
12
+ typeof thing === 'string'
13
+ || Buffer.isBuffer(thing)
14
+ || (useUint8Array && thing instanceof Uint8Array)
15
+ || (isView && isView(thing))
16
+ ) {
17
+ return toBuffer(thing, encoding);
18
+ }
19
+ throw new TypeError(name + ' must be a string, a Buffer, a Uint8Array, or a DataView');
20
+ };