spice-js 2.7.39 → 2.7.40
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.
- package/build/utility/Crypt.js +29 -55
- package/package.json +1 -1
- package/src/utility/Crypt.js +28 -42
package/build/utility/Crypt.js
CHANGED
|
@@ -8,6 +8,23 @@ exports.default = void 0;
|
|
|
8
8
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
9
9
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
10
10
|
var crypto = require("crypto");
|
|
11
|
+
var util = require("util");
|
|
12
|
+
var pbkdf2 = util.promisify(crypto.pbkdf2);
|
|
13
|
+
var randomBytes = util.promisify(crypto.randomBytes);
|
|
14
|
+
|
|
15
|
+
// crypto.pbkdf2 throws synchronously on a non-string value or a missing salt.
|
|
16
|
+
// Inside a Promise executor that throw was swallowed and the promise never
|
|
17
|
+
// settled, hanging the request. Numbers hash as their string form; anything
|
|
18
|
+
// else rejects.
|
|
19
|
+
function toHashInput(value, name) {
|
|
20
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
21
|
+
return String(value);
|
|
22
|
+
}
|
|
23
|
+
if (typeof value === "string" || Buffer.isBuffer(value)) {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
throw new TypeError(name + " must be a string");
|
|
27
|
+
}
|
|
11
28
|
class Crypt {
|
|
12
29
|
constructor() {
|
|
13
30
|
this.salt = "";
|
|
@@ -16,69 +33,26 @@ class Crypt {
|
|
|
16
33
|
encrypt(value) {
|
|
17
34
|
var _this = this;
|
|
18
35
|
return _asyncToGenerator(function* () {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
reject(new Error('Value must not be empty'));
|
|
25
|
-
}
|
|
26
|
-
var salt = yield that.generateRandumString(128);
|
|
27
|
-
var hash_obj = yield that.findHash(value, salt);
|
|
28
|
-
resolve(hash_obj);
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
return function (_x, _x2) {
|
|
34
|
-
return _ref.apply(this, arguments);
|
|
35
|
-
};
|
|
36
|
-
}());
|
|
36
|
+
if (!value) {
|
|
37
|
+
throw new Error('Value must not be empty');
|
|
38
|
+
}
|
|
39
|
+
var salt = yield _this.generateRandumString(128);
|
|
40
|
+
return _this.findHash(value, salt);
|
|
37
41
|
})();
|
|
38
42
|
}
|
|
39
43
|
generateRandumString(length) {
|
|
40
44
|
return _asyncToGenerator(function* () {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (!length) {
|
|
44
|
-
length = 64;
|
|
45
|
-
}
|
|
46
|
-
crypto.randomBytes(length, function (err, bytes) {
|
|
47
|
-
if (err) {
|
|
48
|
-
reject(err);
|
|
49
|
-
}
|
|
50
|
-
var ran_bytes = new Buffer(bytes).toString('hex');
|
|
51
|
-
resolve(ran_bytes);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
return function (_x3, _x4) {
|
|
55
|
-
return _ref2.apply(this, arguments);
|
|
56
|
-
};
|
|
57
|
-
}());
|
|
45
|
+
var bytes = yield randomBytes(length || 64);
|
|
46
|
+
return bytes.toString('hex');
|
|
58
47
|
})();
|
|
59
48
|
}
|
|
60
49
|
findHash(value, salt) {
|
|
61
50
|
return _asyncToGenerator(function* () {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
reject(err);
|
|
68
|
-
}
|
|
69
|
-
var object = {};
|
|
70
|
-
object.hash = new Buffer(hash).toString('hex');
|
|
71
|
-
object.salt = salt;
|
|
72
|
-
resolve(object);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
return function (_x5, _x6) {
|
|
76
|
-
return _ref3.apply(this, arguments);
|
|
77
|
-
};
|
|
78
|
-
}());
|
|
79
|
-
} catch (e) {
|
|
80
|
-
return Promise.reject(e);
|
|
81
|
-
}
|
|
51
|
+
var hash = yield pbkdf2(toHashInput(value, 'Value'), toHashInput(salt, 'Salt'), 7000, 256, 'sha512');
|
|
52
|
+
return {
|
|
53
|
+
hash: hash.toString('hex'),
|
|
54
|
+
salt: salt
|
|
55
|
+
};
|
|
82
56
|
})();
|
|
83
57
|
}
|
|
84
58
|
}
|
package/package.json
CHANGED
package/src/utility/Crypt.js
CHANGED
|
@@ -4,6 +4,24 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
var crypto = require("crypto");
|
|
7
|
+
var util = require("util");
|
|
8
|
+
|
|
9
|
+
var pbkdf2 = util.promisify(crypto.pbkdf2);
|
|
10
|
+
var randomBytes = util.promisify(crypto.randomBytes);
|
|
11
|
+
|
|
12
|
+
// crypto.pbkdf2 throws synchronously on a non-string value or a missing salt.
|
|
13
|
+
// Inside a Promise executor that throw was swallowed and the promise never
|
|
14
|
+
// settled, hanging the request. Numbers hash as their string form; anything
|
|
15
|
+
// else rejects.
|
|
16
|
+
function toHashInput(value, name) {
|
|
17
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
18
|
+
return String(value);
|
|
19
|
+
}
|
|
20
|
+
if (typeof value === "string" || Buffer.isBuffer(value)) {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
throw new TypeError(name + " must be a string");
|
|
24
|
+
}
|
|
7
25
|
|
|
8
26
|
export default class Crypt {
|
|
9
27
|
constructor() {
|
|
@@ -12,54 +30,22 @@ export default class Crypt {
|
|
|
12
30
|
}
|
|
13
31
|
|
|
14
32
|
async encrypt(value) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
var salt = await that.generateRandumString(128);
|
|
22
|
-
var hash_obj = await that.findHash(value, salt);
|
|
23
|
-
resolve(hash_obj);
|
|
24
|
-
} catch (e) {
|
|
25
|
-
reject(e);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
33
|
+
if (!value) {
|
|
34
|
+
throw new Error('Value must not be empty');
|
|
35
|
+
}
|
|
36
|
+
var salt = await this.generateRandumString(128);
|
|
37
|
+
return this.findHash(value, salt);
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
|
|
31
41
|
async generateRandumString(length) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
length = 64;
|
|
35
|
-
}
|
|
36
|
-
crypto.randomBytes(length, function (err, bytes) {
|
|
37
|
-
if (err) {
|
|
38
|
-
reject(err);
|
|
39
|
-
}
|
|
40
|
-
var ran_bytes = new Buffer(bytes).toString('hex');
|
|
41
|
-
resolve(ran_bytes);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
42
|
+
var bytes = await randomBytes(length || 64);
|
|
43
|
+
return bytes.toString('hex');
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
async findHash(value, salt) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
crypto.pbkdf2(value, salt, 7000, 256, 'sha512',
|
|
51
|
-
(err, hash) => {
|
|
52
|
-
if (err) {
|
|
53
|
-
reject(err);
|
|
54
|
-
}
|
|
55
|
-
var object = {};
|
|
56
|
-
object.hash = new Buffer(hash).toString('hex');
|
|
57
|
-
object.salt = salt;
|
|
58
|
-
resolve(object);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
} catch (e) {
|
|
62
|
-
return Promise.reject(e);
|
|
63
|
-
}
|
|
48
|
+
var hash = await pbkdf2(toHashInput(value, 'Value'), toHashInput(salt, 'Salt'), 7000, 256, 'sha512');
|
|
49
|
+
return { hash: hash.toString('hex'), salt: salt };
|
|
64
50
|
}
|
|
65
|
-
}
|
|
51
|
+
}
|