@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.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/src/browser/subtle.d.ts +2 -0
  4. package/dist/src/browser/subtle.d.ts.map +1 -0
  5. package/dist/src/browser/subtle.js +9 -0
  6. package/dist/src/browser/subtle.js.map +1 -0
  7. package/dist/src/encrypt.d.ts +17 -0
  8. package/dist/src/encrypt.d.ts.map +1 -0
  9. package/dist/src/encrypt.js +40 -0
  10. package/dist/src/encrypt.js.map +1 -0
  11. package/dist/src/encrypt.test.d.ts +2 -0
  12. package/dist/src/encrypt.test.d.ts.map +1 -0
  13. package/dist/src/encrypt.test.js +45 -0
  14. package/dist/src/encrypt.test.js.map +1 -0
  15. package/dist/src/hash.d.ts +21 -0
  16. package/dist/src/hash.d.ts.map +1 -0
  17. package/dist/src/hash.js +46 -0
  18. package/dist/src/hash.js.map +1 -0
  19. package/dist/src/hash.test.d.ts +2 -0
  20. package/dist/src/hash.test.d.ts.map +1 -0
  21. package/dist/src/hash.test.js +26 -0
  22. package/dist/src/hash.test.js.map +1 -0
  23. package/dist/src/index.d.ts +8 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +27 -0
  26. package/dist/src/index.js.map +1 -0
  27. package/dist/src/keys.d.ts +32 -0
  28. package/dist/src/keys.d.ts.map +1 -0
  29. package/dist/src/keys.js +70 -0
  30. package/dist/src/keys.js.map +1 -0
  31. package/dist/src/keys.test.d.ts +2 -0
  32. package/dist/src/keys.test.d.ts.map +1 -0
  33. package/dist/src/keys.test.js +11 -0
  34. package/dist/src/keys.test.js.map +1 -0
  35. package/dist/src/signer.d.ts +12 -0
  36. package/dist/src/signer.d.ts.map +1 -0
  37. package/dist/src/signer.js +6 -0
  38. package/dist/src/signer.js.map +1 -0
  39. package/dist/src/subtle.d.ts +4 -0
  40. package/dist/src/subtle.d.ts.map +1 -0
  41. package/dist/src/subtle.js +32 -0
  42. package/dist/src/subtle.js.map +1 -0
  43. package/dist/src/validator.d.ts +6 -0
  44. package/dist/src/validator.d.ts.map +1 -0
  45. package/dist/src/validator.js +15 -0
  46. package/dist/src/validator.js.map +1 -0
  47. package/dist/src/verify.d.ts +6 -0
  48. package/dist/src/verify.d.ts.map +1 -0
  49. package/dist/src/verify.js +28 -0
  50. package/dist/src/verify.js.map +1 -0
  51. package/package.json +30 -27
  52. package/src/browser/subtle.ts +7 -0
  53. package/src/{encrypt.test.js → encrypt.test.ts} +4 -6
  54. package/src/encrypt.ts +36 -0
  55. package/src/hash.test.ts +32 -0
  56. package/src/hash.ts +42 -0
  57. package/src/index.ts +11 -0
  58. package/src/keys.test.ts +11 -0
  59. package/src/keys.ts +71 -0
  60. package/src/signer.ts +16 -0
  61. package/src/subtle.ts +7 -0
  62. package/src/validator.ts +14 -0
  63. package/src/verify.ts +39 -0
  64. package/babel.config.js +0 -14
  65. package/dist/es/encrypt.js +0 -51
  66. package/dist/es/index.js +0 -42
  67. package/dist/es/keys.js +0 -125
  68. package/dist/es/validator.js +0 -27
  69. package/src/encrypt.js +0 -36
  70. package/src/index.js +0 -7
  71. package/src/keys.js +0 -98
  72. package/src/keys.test.js +0 -23
  73. 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==
@@ -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
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2019 Wireline, Inc.
3
- //
4
-
5
- export * from './encrypt';
6
- export * from './keys';
7
- export * from './validator';
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));