@dxos/crypto 0.0.1 → 0.1.0
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/LICENSE +21 -0
- package/README.md +9 -0
- package/dist/src/browser/subtle.d.ts +2 -0
- package/dist/src/browser/subtle.d.ts.map +1 -0
- package/dist/src/browser/subtle.js +9 -0
- package/dist/src/browser/subtle.js.map +1 -0
- package/dist/src/encrypt.d.ts +17 -0
- package/dist/src/encrypt.d.ts.map +1 -0
- package/dist/src/encrypt.js +40 -0
- package/dist/src/encrypt.js.map +1 -0
- package/dist/src/encrypt.test.d.ts +2 -0
- package/dist/src/encrypt.test.d.ts.map +1 -0
- package/dist/src/encrypt.test.js +45 -0
- package/dist/src/encrypt.test.js.map +1 -0
- package/dist/src/hash.d.ts +21 -0
- package/dist/src/hash.d.ts.map +1 -0
- package/dist/src/hash.js +46 -0
- package/dist/src/hash.js.map +1 -0
- package/dist/src/hash.test.d.ts +2 -0
- package/dist/src/hash.test.d.ts.map +1 -0
- package/dist/src/hash.test.js +26 -0
- package/dist/src/hash.test.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +27 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/keys.d.ts +32 -0
- package/dist/src/keys.d.ts.map +1 -0
- package/dist/src/keys.js +70 -0
- package/dist/src/keys.js.map +1 -0
- package/dist/src/keys.test.d.ts +2 -0
- package/dist/src/keys.test.d.ts.map +1 -0
- package/dist/src/keys.test.js +11 -0
- package/dist/src/keys.test.js.map +1 -0
- package/dist/src/signer.d.ts +12 -0
- package/dist/src/signer.d.ts.map +1 -0
- package/dist/src/signer.js +6 -0
- package/dist/src/signer.js.map +1 -0
- package/dist/src/subtle.d.ts +4 -0
- package/dist/src/subtle.d.ts.map +1 -0
- package/dist/src/subtle.js +32 -0
- package/dist/src/subtle.js.map +1 -0
- package/dist/src/validator.d.ts +6 -0
- package/dist/src/validator.d.ts.map +1 -0
- package/dist/src/validator.js +15 -0
- package/dist/src/validator.js.map +1 -0
- package/dist/src/verify.d.ts +6 -0
- package/dist/src/verify.d.ts.map +1 -0
- package/dist/src/verify.js +28 -0
- package/dist/src/verify.js.map +1 -0
- package/package.json +30 -27
- package/src/browser/subtle.ts +7 -0
- package/src/{encrypt.test.js → encrypt.test.ts} +4 -6
- package/src/encrypt.ts +36 -0
- package/src/hash.test.ts +32 -0
- package/src/hash.ts +42 -0
- package/src/index.ts +11 -0
- package/src/keys.test.ts +11 -0
- package/src/keys.ts +71 -0
- package/src/signer.ts +16 -0
- package/src/subtle.ts +7 -0
- package/src/validator.ts +14 -0
- package/src/verify.ts +39 -0
- package/babel.config.js +0 -14
- package/dist/es/encrypt.js +0 -51
- package/dist/es/index.js +0 -42
- package/dist/es/keys.js +0 -125
- package/dist/es/validator.js +0 -27
- package/src/encrypt.js +0 -36
- package/src/index.js +0 -7
- package/src/keys.js +0 -98
- package/src/keys.test.js +0 -23
- package/src/validator.js +0 -14
package/dist/es/keys.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.keyToBuffer = keyToBuffer;
|
|
7
|
-
exports.keyToString = keyToString;
|
|
8
|
-
exports.humanize = humanize;
|
|
9
|
-
exports.randomBytes = randomBytes;
|
|
10
|
-
exports.createId = createId;
|
|
11
|
-
exports.sign = sign;
|
|
12
|
-
exports.verify = verify;
|
|
13
|
-
exports.createKeyPair = exports.discoveryKey = exports.SIGNATURE_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.hasher = void 0;
|
|
14
|
-
|
|
15
|
-
var _assert = _interopRequireDefault(require("assert"));
|
|
16
|
-
|
|
17
|
-
var _hypercoreCrypto = _interopRequireDefault(require("hypercore-crypto"));
|
|
18
|
-
|
|
19
|
-
var _humanhash = _interopRequireDefault(require("humanhash"));
|
|
20
|
-
|
|
21
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
// Copyright 2019 Wireline, Inc.
|
|
25
|
-
//
|
|
26
|
-
var hasher = new _humanhash["default"]();
|
|
27
|
-
exports.hasher = hasher;
|
|
28
|
-
var PUBLIC_KEY_LENGTH = 32;
|
|
29
|
-
exports.PUBLIC_KEY_LENGTH = PUBLIC_KEY_LENGTH;
|
|
30
|
-
var SECRET_KEY_LENGTH = 64;
|
|
31
|
-
exports.SECRET_KEY_LENGTH = SECRET_KEY_LENGTH;
|
|
32
|
-
var SIGNATURE_LENGTH = 64; //
|
|
33
|
-
// The purpose of this module is to assure consistent use of keys throughout the project.
|
|
34
|
-
// NOTE: keys should be maintained as buffers in objects and proto definitions, and converted to hex
|
|
35
|
-
// strings as late as possible (e.g., to log/display).
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
exports.SIGNATURE_LENGTH = SIGNATURE_LENGTH;
|
|
39
|
-
var discoveryKey = _hypercoreCrypto["default"].discoveryKey,
|
|
40
|
-
createKeyPair = _hypercoreCrypto["default"].keyPair;
|
|
41
|
-
/**
|
|
42
|
-
* @param {string} str - Hex string representation of key.
|
|
43
|
-
* @return {Buffer} Key buffer.
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
exports.createKeyPair = createKeyPair;
|
|
47
|
-
exports.discoveryKey = discoveryKey;
|
|
48
|
-
|
|
49
|
-
function keyToBuffer(str) {
|
|
50
|
-
(0, _assert["default"])(typeof str === 'string', 'Invalid type');
|
|
51
|
-
var buffer = Buffer.from(str, 'hex');
|
|
52
|
-
(0, _assert["default"])(buffer.length === PUBLIC_KEY_LENGTH || buffer.length === SECRET_KEY_LENGTH, "Invalid key length: ".concat(buffer.length));
|
|
53
|
-
return buffer;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* @param {Buffer} buffer - Key buffer.
|
|
57
|
-
* @return {string} Hex string representation of key.
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
function keyToString(buffer) {
|
|
62
|
-
(0, _assert["default"])(buffer instanceof Buffer, 'Invalid type');
|
|
63
|
-
return buffer.toString('hex');
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* @param {Buffer} value
|
|
67
|
-
* @return {string|Buffer}
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
function humanize(value) {
|
|
72
|
-
if (value instanceof Buffer) {
|
|
73
|
-
value = keyToString(value);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return hasher.humanize(value);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Return random bytes of length.
|
|
80
|
-
* @param [length=32]
|
|
81
|
-
* @return {Buffer}
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
function randomBytes() {
|
|
86
|
-
var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 32;
|
|
87
|
-
return _hypercoreCrypto["default"].randomBytes(length);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* @return {string}
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
function createId() {
|
|
95
|
-
return keyToString(randomBytes(32));
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Sign the contents of message with secretKey
|
|
99
|
-
* @param {Buffer} message
|
|
100
|
-
* @param {Buffer} secretKey
|
|
101
|
-
* @returns {Buffer} signature
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
function sign(message, secretKey) {
|
|
106
|
-
(0, _assert["default"])(Buffer.isBuffer(message));
|
|
107
|
-
(0, _assert["default"])(Buffer.isBuffer(secretKey) && secretKey.length === SECRET_KEY_LENGTH);
|
|
108
|
-
return _hypercoreCrypto["default"].sign(message, secretKey);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Verifies the signature against the message and publicKey.
|
|
112
|
-
* @param {Buffer} message
|
|
113
|
-
* @param {Buffer} publicKey
|
|
114
|
-
* @param {Buffer} signature
|
|
115
|
-
* @return {boolean}
|
|
116
|
-
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
function verify(message, signature, publicKey) {
|
|
120
|
-
(0, _assert["default"])(Buffer.isBuffer(message));
|
|
121
|
-
(0, _assert["default"])(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);
|
|
122
|
-
(0, _assert["default"])(Buffer.isBuffer(publicKey) && publicKey.length === PUBLIC_KEY_LENGTH);
|
|
123
|
-
return _hypercoreCrypto["default"].verify(message, signature, publicKey);
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXlzLmpzIl0sIm5hbWVzIjpbImhhc2hlciIsIkh1bWFuSGFzaGVyIiwiUFVCTElDX0tFWV9MRU5HVEgiLCJTRUNSRVRfS0VZX0xFTkdUSCIsIlNJR05BVFVSRV9MRU5HVEgiLCJkaXNjb3ZlcnlLZXkiLCJjcnlwdG8iLCJjcmVhdGVLZXlQYWlyIiwia2V5UGFpciIsImtleVRvQnVmZmVyIiwic3RyIiwiYnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsImxlbmd0aCIsImtleVRvU3RyaW5nIiwidG9TdHJpbmciLCJodW1hbml6ZSIsInZhbHVlIiwicmFuZG9tQnl0ZXMiLCJjcmVhdGVJZCIsInNpZ24iLCJtZXNzYWdlIiwic2VjcmV0S2V5IiwiaXNCdWZmZXIiLCJ2ZXJpZnkiLCJzaWduYXR1cmUiLCJwdWJsaWNLZXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7QUFOQTtBQUNBO0FBQ0E7QUFNTyxJQUFNQSxNQUFNLEdBQUcsSUFBSUMscUJBQUosRUFBZjs7QUFFQSxJQUFNQyxpQkFBaUIsR0FBRyxFQUExQjs7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxFQUExQjs7QUFDQSxJQUFNQyxnQkFBZ0IsR0FBRyxFQUF6QixDLENBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0lBRWVDLFksR0FBeUNDLDJCLENBQXpDRCxZO0lBQXVCRSxhLEdBQWtCRCwyQixDQUEzQkUsTztBQUU3Qjs7Ozs7Ozs7QUFJTyxTQUFTQyxXQUFULENBQXFCQyxHQUFyQixFQUEwQjtBQUMvQiwwQkFBTyxPQUFPQSxHQUFQLEtBQWUsUUFBdEIsRUFBZ0MsY0FBaEM7QUFDQSxNQUFNQyxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxHQUFaLEVBQWlCLEtBQWpCLENBQWY7QUFDQSwwQkFBT0MsTUFBTSxDQUFDRyxNQUFQLEtBQWtCWixpQkFBbEIsSUFBdUNTLE1BQU0sQ0FBQ0csTUFBUCxLQUFrQlgsaUJBQWhFLGdDQUN5QlEsTUFBTSxDQUFDRyxNQURoQztBQUVBLFNBQU9ILE1BQVA7QUFDRDtBQUVEOzs7Ozs7QUFJTyxTQUFTSSxXQUFULENBQXFCSixNQUFyQixFQUE2QjtBQUNsQywwQkFBT0EsTUFBTSxZQUFZQyxNQUF6QixFQUFpQyxjQUFqQztBQUNBLFNBQU9ELE1BQU0sQ0FBQ0ssUUFBUCxDQUFnQixLQUFoQixDQUFQO0FBQ0Q7QUFFRDs7Ozs7O0FBSU8sU0FBU0MsUUFBVCxDQUFrQkMsS0FBbEIsRUFBeUI7QUFDOUIsTUFBSUEsS0FBSyxZQUFZTixNQUFyQixFQUE2QjtBQUMzQk0sSUFBQUEsS0FBSyxHQUFHSCxXQUFXLENBQUNHLEtBQUQsQ0FBbkI7QUFDRDs7QUFFRCxTQUFPbEIsTUFBTSxDQUFDaUIsUUFBUCxDQUFnQkMsS0FBaEIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7QUFLTyxTQUFTQyxXQUFULEdBQWtDO0FBQUEsTUFBYkwsTUFBYSx1RUFBSixFQUFJO0FBQ3ZDLFNBQU9SLDRCQUFPYSxXQUFQLENBQW1CTCxNQUFuQixDQUFQO0FBQ0Q7QUFFRDs7Ozs7QUFHTyxTQUFTTSxRQUFULEdBQW9CO0FBQ3pCLFNBQU9MLFdBQVcsQ0FBQ0ksV0FBVyxDQUFDLEVBQUQsQ0FBWixDQUFsQjtBQUNEO0FBRUQ7Ozs7Ozs7O0FBTU8sU0FBU0UsSUFBVCxDQUFjQyxPQUFkLEVBQXVCQyxTQUF2QixFQUFrQztBQUN2QywwQkFBT1gsTUFBTSxDQUFDWSxRQUFQLENBQWdCRixPQUFoQixDQUFQO0FBQ0EsMEJBQU9WLE1BQU0sQ0FBQ1ksUUFBUCxDQUFnQkQsU0FBaEIsS0FBOEJBLFNBQVMsQ0FBQ1QsTUFBVixLQUFxQlgsaUJBQTFEO0FBRUEsU0FBT0csNEJBQU9lLElBQVAsQ0FBWUMsT0FBWixFQUFxQkMsU0FBckIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNFLE1BQVQsQ0FBZ0JILE9BQWhCLEVBQXlCSSxTQUF6QixFQUFvQ0MsU0FBcEMsRUFBK0M7QUFDcEQsMEJBQU9mLE1BQU0sQ0FBQ1ksUUFBUCxDQUFnQkYsT0FBaEIsQ0FBUDtBQUNBLDBCQUFPVixNQUFNLENBQUNZLFFBQVAsQ0FBZ0JFLFNBQWhCLEtBQThCQSxTQUFTLENBQUNaLE1BQVYsS0FBcUJWLGdCQUExRDtBQUNBLDBCQUFPUSxNQUFNLENBQUNZLFFBQVAsQ0FBZ0JHLFNBQWhCLEtBQThCQSxTQUFTLENBQUNiLE1BQVYsS0FBcUJaLGlCQUExRDtBQUVBLFNBQU9JLDRCQUFPbUIsTUFBUCxDQUFjSCxPQUFkLEVBQXVCSSxTQUF2QixFQUFrQ0MsU0FBbEMsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIENvcHlyaWdodCAyMDE5IFdpcmVsaW5lLCBJbmMuXG4vL1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2h5cGVyY29yZS1jcnlwdG8nO1xuaW1wb3J0IEh1bWFuSGFzaGVyIGZyb20gJ2h1bWFuaGFzaCc7XG5cbmV4cG9ydCBjb25zdCBoYXNoZXIgPSBuZXcgSHVtYW5IYXNoZXIoKTtcblxuZXhwb3J0IGNvbnN0IFBVQkxJQ19LRVlfTEVOR1RIID0gMzI7XG5leHBvcnQgY29uc3QgU0VDUkVUX0tFWV9MRU5HVEggPSA2NDtcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfTEVOR1RIID0gNjQ7XG5cbi8vXG4vLyBUaGUgcHVycG9zZSBvZiB0aGlzIG1vZHVsZSBpcyB0byBhc3N1cmUgY29uc2lzdGVudCB1c2Ugb2Yga2V5cyB0aHJvdWdob3V0IHRoZSBwcm9qZWN0LlxuLy8gTk9URToga2V5cyBzaG91bGQgYmUgbWFpbnRhaW5lZCBhcyBidWZmZXJzIGluIG9iamVjdHMgYW5kIHByb3RvIGRlZmluaXRpb25zLCBhbmQgY29udmVydGVkIHRvIGhleFxuLy8gc3RyaW5ncyBhcyBsYXRlIGFzIHBvc3NpYmxlIChlLmcuLCB0byBsb2cvZGlzcGxheSkuXG4vL1xuXG5leHBvcnQgY29uc3QgeyBkaXNjb3ZlcnlLZXksIGtleVBhaXI6IGNyZWF0ZUtleVBhaXIgfSA9IGNyeXB0bztcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gSGV4IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBrZXkuXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IEtleSBidWZmZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXlUb0J1ZmZlcihzdHIpIHtcbiAgYXNzZXJ0KHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnLCAnSW52YWxpZCB0eXBlJyk7XG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHN0ciwgJ2hleCcpO1xuICBhc3NlcnQoYnVmZmVyLmxlbmd0aCA9PT0gUFVCTElDX0tFWV9MRU5HVEggfHwgYnVmZmVyLmxlbmd0aCA9PT0gU0VDUkVUX0tFWV9MRU5HVEgsXG4gICAgYEludmFsaWQga2V5IGxlbmd0aDogJHtidWZmZXIubGVuZ3RofWApO1xuICByZXR1cm4gYnVmZmVyO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgLSBLZXkgYnVmZmVyLlxuICogQHJldHVybiB7c3RyaW5nfSBIZXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleVRvU3RyaW5nKGJ1ZmZlcikge1xuICBhc3NlcnQoYnVmZmVyIGluc3RhbmNlb2YgQnVmZmVyLCAnSW52YWxpZCB0eXBlJyk7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QnVmZmVyfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfEJ1ZmZlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgIHZhbHVlID0ga2V5VG9TdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGhhc2hlci5odW1hbml6ZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogUmV0dXJuIHJhbmRvbSBieXRlcyBvZiBsZW5ndGguXG4gKiBAcGFyYW0gW2xlbmd0aD0zMl1cbiAqIEByZXR1cm4ge0J1ZmZlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUJ5dGVzKGxlbmd0aCA9IDMyKSB7XG4gIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMobGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJZCgpIHtcbiAgcmV0dXJuIGtleVRvU3RyaW5nKHJhbmRvbUJ5dGVzKDMyKSk7XG59XG5cbi8qKlxuICogU2lnbiB0aGUgY29udGVudHMgb2YgbWVzc2FnZSB3aXRoIHNlY3JldEtleVxuICogQHBhcmFtIHtCdWZmZXJ9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7QnVmZmVyfSBzZWNyZXRLZXlcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHNpZ25hdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbihtZXNzYWdlLCBzZWNyZXRLZXkpIHtcbiAgYXNzZXJ0KEJ1ZmZlci5pc0J1ZmZlcihtZXNzYWdlKSk7XG4gIGFzc2VydChCdWZmZXIuaXNCdWZmZXIoc2VjcmV0S2V5KSAmJiBzZWNyZXRLZXkubGVuZ3RoID09PSBTRUNSRVRfS0VZX0xFTkdUSCk7XG5cbiAgcmV0dXJuIGNyeXB0by5zaWduKG1lc3NhZ2UsIHNlY3JldEtleSk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBhZ2FpbnN0IHRoZSBtZXNzYWdlIGFuZCBwdWJsaWNLZXkuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gbWVzc2FnZVxuICogQHBhcmFtIHtCdWZmZXJ9IHB1YmxpY0tleVxuICogQHBhcmFtIHtCdWZmZXJ9IHNpZ25hdHVyZVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWduYXR1cmUsIHB1YmxpY0tleSkge1xuICBhc3NlcnQoQnVmZmVyLmlzQnVmZmVyKG1lc3NhZ2UpKTtcbiAgYXNzZXJ0KEJ1ZmZlci5pc0J1ZmZlcihzaWduYXR1cmUpICYmIHNpZ25hdHVyZS5sZW5ndGggPT09IFNJR05BVFVSRV9MRU5HVEgpO1xuICBhc3NlcnQoQnVmZmVyLmlzQnVmZmVyKHB1YmxpY0tleSkgJiYgcHVibGljS2V5Lmxlbmd0aCA9PT0gUFVCTElDX0tFWV9MRU5HVEgpO1xuXG4gIHJldHVybiBjcnlwdG8udmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZSwgcHVibGljS2V5KTtcbn1cbiJdfQ==
|
package/dist/es/validator.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getSignatureValidator = void 0;
|
|
7
|
-
|
|
8
|
-
var _hypercoreCrypto = require("hypercore-crypto");
|
|
9
|
-
|
|
10
|
-
var _keys = require("./keys");
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
// Copyright 2020 Wireline, Inc.
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Generator for signature validation function.
|
|
18
|
-
* @param {String} publicKey
|
|
19
|
-
*/
|
|
20
|
-
var getSignatureValidator = function getSignatureValidator(publicKey) {
|
|
21
|
-
return function (message, signature) {
|
|
22
|
-
return (0, _hypercoreCrypto.verify)(message, signature, (0, _keys.keyToBuffer)(publicKey));
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
exports.getSignatureValidator = getSignatureValidator;
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0b3IuanMiXSwibmFtZXMiOlsiZ2V0U2lnbmF0dXJlVmFsaWRhdG9yIiwicHVibGljS2V5IiwibWVzc2FnZSIsInNpZ25hdHVyZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBOztBQUVBOztBQU5BO0FBQ0E7QUFDQTs7QUFNQTs7OztBQUlPLElBQU1BLHFCQUFxQixHQUNoQyxTQURXQSxxQkFDWCxDQUFDQyxTQUFEO0FBQUEsU0FBZSxVQUFDQyxPQUFELEVBQVVDLFNBQVY7QUFBQSxXQUF3Qiw2QkFBT0QsT0FBUCxFQUFnQkMsU0FBaEIsRUFBMkIsdUJBQVlGLFNBQVosQ0FBM0IsQ0FBeEI7QUFBQSxHQUFmO0FBQUEsQ0FESyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBXaXJlbGluZSwgSW5jLlxuLy9cblxuaW1wb3J0IHsgdmVyaWZ5IH0gZnJvbSAnaHlwZXJjb3JlLWNyeXB0byc7XG5cbmltcG9ydCB7IGtleVRvQnVmZmVyIH0gZnJvbSAnLi9rZXlzJztcblxuLyoqXG4gKiBHZW5lcmF0b3IgZm9yIHNpZ25hdHVyZSB2YWxpZGF0aW9uIGZ1bmN0aW9uLlxuICogQHBhcmFtIHtTdHJpbmd9IHB1YmxpY0tleVxuICovXG5leHBvcnQgY29uc3QgZ2V0U2lnbmF0dXJlVmFsaWRhdG9yID1cbiAgKHB1YmxpY0tleSkgPT4gKG1lc3NhZ2UsIHNpZ25hdHVyZSkgPT4gdmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZSwga2V5VG9CdWZmZXIocHVibGljS2V5KSk7XG4iXX0=
|
package/src/encrypt.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2020 Wireline, Inc.
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import assert from 'assert';
|
|
6
|
-
import CryptoJS from 'crypto-js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Encrypt string plaintext to a base64-encoded string ciphertext.
|
|
10
|
-
* @param {string} plaintext
|
|
11
|
-
* @param {string} passphrase
|
|
12
|
-
* @param {string} cipher see https://cryptojs.gitbook.io/docs/#ciphers
|
|
13
|
-
* @returns {string} ciphertext
|
|
14
|
-
*/
|
|
15
|
-
export function encrypt(plaintext, passphrase, cipher = 'AES') {
|
|
16
|
-
assert(typeof passphrase === 'string');
|
|
17
|
-
assert(typeof cipher === 'string');
|
|
18
|
-
|
|
19
|
-
return CryptoJS[cipher].encrypt(plaintext, passphrase).toString();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Decrypt from a base64-encoded string ciphertext to string plaintext.
|
|
24
|
-
* @param {string} ciphertext
|
|
25
|
-
* @param {string} passphrase
|
|
26
|
-
* @param {string} cipher see https://cryptojs.gitbook.io/docs/#ciphers
|
|
27
|
-
* @returns {string} plaintext
|
|
28
|
-
*/
|
|
29
|
-
export function decrypt(ciphertext, passphrase, cipher = 'AES') {
|
|
30
|
-
assert(typeof ciphertext === 'string');
|
|
31
|
-
assert(typeof passphrase === 'string');
|
|
32
|
-
assert(typeof cipher === 'string');
|
|
33
|
-
|
|
34
|
-
const bytes = CryptoJS[cipher].decrypt(ciphertext, passphrase);
|
|
35
|
-
return bytes.toString(CryptoJS.enc.Utf8);
|
|
36
|
-
}
|
package/src/index.js
DELETED
package/src/keys.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2019 Wireline, Inc.
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import assert from 'assert';
|
|
6
|
-
import crypto from 'hypercore-crypto';
|
|
7
|
-
import HumanHasher from 'humanhash';
|
|
8
|
-
|
|
9
|
-
export const hasher = new HumanHasher();
|
|
10
|
-
|
|
11
|
-
export const PUBLIC_KEY_LENGTH = 32;
|
|
12
|
-
export const SECRET_KEY_LENGTH = 64;
|
|
13
|
-
export const SIGNATURE_LENGTH = 64;
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
// The purpose of this module is to assure consistent use of keys throughout the project.
|
|
17
|
-
// NOTE: keys should be maintained as buffers in objects and proto definitions, and converted to hex
|
|
18
|
-
// strings as late as possible (e.g., to log/display).
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
export const { discoveryKey, keyPair: createKeyPair } = crypto;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @param {string} str - Hex string representation of key.
|
|
25
|
-
* @return {Buffer} Key buffer.
|
|
26
|
-
*/
|
|
27
|
-
export function keyToBuffer(str) {
|
|
28
|
-
assert(typeof str === 'string', 'Invalid type');
|
|
29
|
-
const buffer = Buffer.from(str, 'hex');
|
|
30
|
-
assert(buffer.length === PUBLIC_KEY_LENGTH || buffer.length === SECRET_KEY_LENGTH,
|
|
31
|
-
`Invalid key length: ${buffer.length}`);
|
|
32
|
-
return buffer;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @param {Buffer} buffer - Key buffer.
|
|
37
|
-
* @return {string} Hex string representation of key.
|
|
38
|
-
*/
|
|
39
|
-
export function keyToString(buffer) {
|
|
40
|
-
assert(buffer instanceof Buffer, 'Invalid type');
|
|
41
|
-
return buffer.toString('hex');
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @param {Buffer} value
|
|
46
|
-
* @return {string|Buffer}
|
|
47
|
-
*/
|
|
48
|
-
export function humanize(value) {
|
|
49
|
-
if (value instanceof Buffer) {
|
|
50
|
-
value = keyToString(value);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return hasher.humanize(value);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Return random bytes of length.
|
|
58
|
-
* @param [length=32]
|
|
59
|
-
* @return {Buffer}
|
|
60
|
-
*/
|
|
61
|
-
export function randomBytes(length = 32) {
|
|
62
|
-
return crypto.randomBytes(length);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* @return {string}
|
|
67
|
-
*/
|
|
68
|
-
export function createId() {
|
|
69
|
-
return keyToString(randomBytes(32));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Sign the contents of message with secretKey
|
|
74
|
-
* @param {Buffer} message
|
|
75
|
-
* @param {Buffer} secretKey
|
|
76
|
-
* @returns {Buffer} signature
|
|
77
|
-
*/
|
|
78
|
-
export function sign(message, secretKey) {
|
|
79
|
-
assert(Buffer.isBuffer(message));
|
|
80
|
-
assert(Buffer.isBuffer(secretKey) && secretKey.length === SECRET_KEY_LENGTH);
|
|
81
|
-
|
|
82
|
-
return crypto.sign(message, secretKey);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Verifies the signature against the message and publicKey.
|
|
87
|
-
* @param {Buffer} message
|
|
88
|
-
* @param {Buffer} publicKey
|
|
89
|
-
* @param {Buffer} signature
|
|
90
|
-
* @return {boolean}
|
|
91
|
-
*/
|
|
92
|
-
export function verify(message, signature, publicKey) {
|
|
93
|
-
assert(Buffer.isBuffer(message));
|
|
94
|
-
assert(Buffer.isBuffer(signature) && signature.length === SIGNATURE_LENGTH);
|
|
95
|
-
assert(Buffer.isBuffer(publicKey) && publicKey.length === PUBLIC_KEY_LENGTH);
|
|
96
|
-
|
|
97
|
-
return crypto.verify(message, signature, publicKey);
|
|
98
|
-
}
|
package/src/keys.test.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2019 Wireline, Inc.
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
// dxos-testing-browser
|
|
6
|
-
|
|
7
|
-
import { createKeyPair, createId, hasher, humanize, keyToBuffer, keyToString } from './keys';
|
|
8
|
-
|
|
9
|
-
test('Basic key operations', () => {
|
|
10
|
-
const { publicKey, secretKey } = createKeyPair();
|
|
11
|
-
|
|
12
|
-
expect(keyToBuffer(keyToString(publicKey))).toEqual(publicKey);
|
|
13
|
-
|
|
14
|
-
expect(() => keyToString('not-a-buffer')).toThrowError();
|
|
15
|
-
expect(() => keyToBuffer('not-a-value-hex-key')).toThrowError();
|
|
16
|
-
expect(() => keyToBuffer(publicKey)).toThrowError();
|
|
17
|
-
|
|
18
|
-
expect(createId()).not.toEqual(createId());
|
|
19
|
-
|
|
20
|
-
expect(humanize(publicKey)).not.toEqual(humanize(secretKey));
|
|
21
|
-
expect(humanize(publicKey)).toEqual(hasher.humanize(keyToString(publicKey)));
|
|
22
|
-
expect(hasher.humanize(createId())).toBeDefined();
|
|
23
|
-
});
|
package/src/validator.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2020 Wireline, Inc.
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { verify } from 'hypercore-crypto';
|
|
6
|
-
|
|
7
|
-
import { keyToBuffer } from './keys';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Generator for signature validation function.
|
|
11
|
-
* @param {String} publicKey
|
|
12
|
-
*/
|
|
13
|
-
export const getSignatureValidator =
|
|
14
|
-
(publicKey) => (message, signature) => verify(message, signature, keyToBuffer(publicKey));
|