@libp2p/crypto 0.0.0 → 0.22.3

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 (170) hide show
  1. package/LICENSE +2 -0
  2. package/README.md +314 -0
  3. package/dist/src/aes/cipher-mode.d.ts +2 -0
  4. package/dist/src/aes/cipher-mode.d.ts.map +1 -0
  5. package/dist/src/aes/cipher-mode.js +13 -0
  6. package/dist/src/aes/cipher-mode.js.map +1 -0
  7. package/dist/src/aes/ciphers-browser.d.ts +8 -0
  8. package/dist/src/aes/ciphers-browser.d.ts.map +1 -0
  9. package/dist/src/aes/ciphers-browser.js +26 -0
  10. package/dist/src/aes/ciphers-browser.js.map +1 -0
  11. package/dist/src/aes/ciphers.d.ts +5 -0
  12. package/dist/src/aes/ciphers.d.ts.map +1 -0
  13. package/dist/src/aes/ciphers.js +4 -0
  14. package/dist/src/aes/ciphers.js.map +1 -0
  15. package/dist/src/aes/index.d.ts +6 -0
  16. package/dist/src/aes/index.d.ts.map +1 -0
  17. package/dist/src/aes/index.js +17 -0
  18. package/dist/src/aes/index.js.map +1 -0
  19. package/dist/src/ciphers/aes-gcm.browser.d.ts +3 -0
  20. package/dist/src/ciphers/aes-gcm.browser.d.ts.map +1 -0
  21. package/dist/src/ciphers/aes-gcm.browser.js +61 -0
  22. package/dist/src/ciphers/aes-gcm.browser.js.map +1 -0
  23. package/dist/src/ciphers/aes-gcm.d.ts +3 -0
  24. package/dist/src/ciphers/aes-gcm.d.ts.map +1 -0
  25. package/dist/src/ciphers/aes-gcm.js +83 -0
  26. package/dist/src/ciphers/aes-gcm.js.map +1 -0
  27. package/dist/src/ciphers/interface.d.ts +14 -0
  28. package/dist/src/ciphers/interface.d.ts.map +1 -0
  29. package/dist/src/ciphers/interface.js +2 -0
  30. package/dist/src/ciphers/interface.js.map +1 -0
  31. package/dist/src/hmac/index-browser.d.ts +5 -0
  32. package/dist/src/hmac/index-browser.d.ts.map +1 -0
  33. package/dist/src/hmac/index-browser.js +25 -0
  34. package/dist/src/hmac/index-browser.js.map +1 -0
  35. package/dist/src/hmac/index.d.ts +5 -0
  36. package/dist/src/hmac/index.d.ts.map +1 -0
  37. package/dist/src/hmac/index.js +14 -0
  38. package/dist/src/hmac/index.js.map +1 -0
  39. package/dist/src/hmac/lengths.d.ts +7 -0
  40. package/dist/src/hmac/lengths.d.ts.map +1 -0
  41. package/dist/src/hmac/lengths.js +6 -0
  42. package/dist/src/hmac/lengths.js.map +1 -0
  43. package/dist/src/index.d.ts +11 -0
  44. package/dist/src/index.d.ts.map +1 -0
  45. package/dist/src/index.js +11 -0
  46. package/dist/src/index.js.map +1 -0
  47. package/dist/src/keys/ecdh-browser.d.ts +3 -0
  48. package/dist/src/keys/ecdh-browser.d.ts.map +1 -0
  49. package/dist/src/keys/ecdh-browser.js +97 -0
  50. package/dist/src/keys/ecdh-browser.js.map +1 -0
  51. package/dist/src/keys/ecdh.d.ts +3 -0
  52. package/dist/src/keys/ecdh.d.ts.map +1 -0
  53. package/dist/src/keys/ecdh.js +26 -0
  54. package/dist/src/keys/ecdh.js.map +1 -0
  55. package/dist/src/keys/ed25519-class.d.ts +39 -0
  56. package/dist/src/keys/ed25519-class.d.ts.map +1 -0
  57. package/dist/src/keys/ed25519-class.js +119 -0
  58. package/dist/src/keys/ed25519-class.js.map +1 -0
  59. package/dist/src/keys/ed25519.d.ts +18 -0
  60. package/dist/src/keys/ed25519.d.ts.map +1 -0
  61. package/dist/src/keys/ed25519.js +52 -0
  62. package/dist/src/keys/ed25519.js.map +1 -0
  63. package/dist/src/keys/ephemeral-keys.d.ts +9 -0
  64. package/dist/src/keys/ephemeral-keys.d.ts.map +1 -0
  65. package/dist/src/keys/ephemeral-keys.js +9 -0
  66. package/dist/src/keys/ephemeral-keys.js.map +1 -0
  67. package/dist/src/keys/exporter.d.ts +7 -0
  68. package/dist/src/keys/exporter.d.ts.map +1 -0
  69. package/dist/src/keys/exporter.js +13 -0
  70. package/dist/src/keys/exporter.js.map +1 -0
  71. package/dist/src/keys/importer.d.ts +7 -0
  72. package/dist/src/keys/importer.d.ts.map +1 -0
  73. package/dist/src/keys/importer.js +13 -0
  74. package/dist/src/keys/importer.js.map +1 -0
  75. package/dist/src/keys/index.d.ts +33 -0
  76. package/dist/src/keys/index.d.ts.map +1 -0
  77. package/dist/src/keys/index.js +111 -0
  78. package/dist/src/keys/index.js.map +1 -0
  79. package/dist/src/keys/interface.d.ts +17 -0
  80. package/dist/src/keys/interface.d.ts.map +1 -0
  81. package/dist/src/keys/interface.js +2 -0
  82. package/dist/src/keys/interface.js.map +1 -0
  83. package/dist/src/keys/jwk2pem.d.ts +4 -0
  84. package/dist/src/keys/jwk2pem.d.ts.map +1 -0
  85. package/dist/src/keys/jwk2pem.js +14 -0
  86. package/dist/src/keys/jwk2pem.js.map +1 -0
  87. package/dist/src/keys/key-stretcher.d.ts +17 -0
  88. package/dist/src/keys/key-stretcher.d.ts.map +1 -0
  89. package/dist/src/keys/key-stretcher.js +65 -0
  90. package/dist/src/keys/key-stretcher.js.map +1 -0
  91. package/dist/src/keys/keys.d.ts +225 -0
  92. package/dist/src/keys/keys.d.ts.map +1 -0
  93. package/dist/src/keys/keys.js +345 -0
  94. package/dist/src/keys/keys.js.map +1 -0
  95. package/dist/src/keys/rsa-browser.d.ts +17 -0
  96. package/dist/src/keys/rsa-browser.d.ts.map +1 -0
  97. package/dist/src/keys/rsa-browser.js +99 -0
  98. package/dist/src/keys/rsa-browser.js.map +1 -0
  99. package/dist/src/keys/rsa-class.d.ts +42 -0
  100. package/dist/src/keys/rsa-class.d.ts.map +1 -0
  101. package/dist/src/keys/rsa-class.js +126 -0
  102. package/dist/src/keys/rsa-class.js.map +1 -0
  103. package/dist/src/keys/rsa-utils.d.ts +7 -0
  104. package/dist/src/keys/rsa-utils.d.ts.map +1 -0
  105. package/dist/src/keys/rsa-utils.js +65 -0
  106. package/dist/src/keys/rsa-utils.js.map +1 -0
  107. package/dist/src/keys/rsa.d.ts +13 -0
  108. package/dist/src/keys/rsa.d.ts.map +1 -0
  109. package/dist/src/keys/rsa.js +58 -0
  110. package/dist/src/keys/rsa.js.map +1 -0
  111. package/dist/src/keys/secp256k1-class.d.ts +36 -0
  112. package/dist/src/keys/secp256k1-class.d.ts.map +1 -0
  113. package/dist/src/keys/secp256k1-class.js +95 -0
  114. package/dist/src/keys/secp256k1-class.js.map +1 -0
  115. package/dist/src/keys/secp256k1.d.ts +17 -0
  116. package/dist/src/keys/secp256k1.d.ts.map +1 -0
  117. package/dist/src/keys/secp256k1.js +65 -0
  118. package/dist/src/keys/secp256k1.js.map +1 -0
  119. package/dist/src/pbkdf2.d.ts +5 -0
  120. package/dist/src/pbkdf2.d.ts.map +1 -0
  121. package/dist/src/pbkdf2.js +30 -0
  122. package/dist/src/pbkdf2.js.map +1 -0
  123. package/dist/src/random-bytes.d.ts +2 -0
  124. package/dist/src/random-bytes.d.ts.map +1 -0
  125. package/dist/src/random-bytes.js +9 -0
  126. package/dist/src/random-bytes.js.map +1 -0
  127. package/dist/src/util.d.ts +9 -0
  128. package/dist/src/util.d.ts.map +1 -0
  129. package/dist/src/util.js +37 -0
  130. package/dist/src/util.js.map +1 -0
  131. package/dist/src/webcrypto.d.ts +5 -0
  132. package/dist/src/webcrypto.d.ts.map +1 -0
  133. package/dist/src/webcrypto.js +17 -0
  134. package/dist/src/webcrypto.js.map +1 -0
  135. package/package.json +178 -4
  136. package/src/aes/cipher-mode.ts +15 -0
  137. package/src/aes/ciphers-browser.ts +28 -0
  138. package/src/aes/ciphers.ts +4 -0
  139. package/src/aes/index.ts +25 -0
  140. package/src/ciphers/aes-gcm.browser.ts +74 -0
  141. package/src/ciphers/aes-gcm.ts +102 -0
  142. package/src/ciphers/interface.ts +15 -0
  143. package/src/hmac/index-browser.ts +35 -0
  144. package/src/hmac/index.ts +15 -0
  145. package/src/hmac/lengths.ts +6 -0
  146. package/src/index.ts +11 -0
  147. package/src/keys/ecdh-browser.ts +138 -0
  148. package/src/keys/ecdh.ts +33 -0
  149. package/src/keys/ed25519-class.ts +145 -0
  150. package/src/keys/ed25519.ts +63 -0
  151. package/src/keys/ephemeral-keys.ts +9 -0
  152. package/src/keys/exporter.ts +13 -0
  153. package/src/keys/importer.ts +13 -0
  154. package/src/keys/index.ts +126 -0
  155. package/src/keys/interface.ts +20 -0
  156. package/src/keys/jwk2pem.ts +16 -0
  157. package/src/keys/key-stretcher.ts +77 -0
  158. package/src/keys/keys.d.ts +146 -0
  159. package/src/keys/keys.js +366 -0
  160. package/src/keys/keys.proto +15 -0
  161. package/src/keys/rsa-browser.ts +156 -0
  162. package/src/keys/rsa-class.ts +155 -0
  163. package/src/keys/rsa-utils.ts +74 -0
  164. package/src/keys/rsa.ts +69 -0
  165. package/src/keys/secp256k1-class.ts +118 -0
  166. package/src/keys/secp256k1.ts +69 -0
  167. package/src/pbkdf2.ts +39 -0
  168. package/src/random-bytes.ts +9 -0
  169. package/src/util.ts +42 -0
  170. package/src/webcrypto.ts +24 -0
@@ -0,0 +1,345 @@
1
+ // @ts-nocheck
2
+ /*eslint-disable*/
3
+ import $protobuf from "protobufjs/minimal.js";
4
+ // Common aliases
5
+ const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
6
+ // Exported root namespace
7
+ const $root = $protobuf.roots["libp2p-crypto-keys"] || ($protobuf.roots["libp2p-crypto-keys"] = {});
8
+ /**
9
+ * KeyType enum.
10
+ * @exports KeyType
11
+ * @enum {number}
12
+ * @property {number} RSA=0 RSA value
13
+ * @property {number} Ed25519=1 Ed25519 value
14
+ * @property {number} Secp256k1=2 Secp256k1 value
15
+ */
16
+ export const KeyType = $root.KeyType = (() => {
17
+ const valuesById = {}, values = Object.create(valuesById);
18
+ values[valuesById[0] = "RSA"] = 0;
19
+ values[valuesById[1] = "Ed25519"] = 1;
20
+ values[valuesById[2] = "Secp256k1"] = 2;
21
+ return values;
22
+ })();
23
+ /**
24
+ * Properties of a PublicKey.
25
+ * @exports IPublicKey
26
+ * @interface IPublicKey
27
+ * @property {KeyType} Type PublicKey Type
28
+ * @property {Uint8Array} Data PublicKey Data
29
+ */
30
+ /**
31
+ * Constructs a new PublicKey.
32
+ * @exports PublicKey
33
+ * @classdesc Represents a PublicKey.
34
+ * @implements IPublicKey
35
+ * @constructor
36
+ * @param {IPublicKey=} [p] Properties to set
37
+ */
38
+ export function PublicKey(p) {
39
+ if (p)
40
+ for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)
41
+ if (p[ks[i]] != null)
42
+ this[ks[i]] = p[ks[i]];
43
+ }
44
+ /**
45
+ * PublicKey Type.
46
+ * @member {KeyType} Type
47
+ * @memberof PublicKey
48
+ * @instance
49
+ */
50
+ PublicKey.prototype.Type = 0;
51
+ /**
52
+ * PublicKey Data.
53
+ * @member {Uint8Array} Data
54
+ * @memberof PublicKey
55
+ * @instance
56
+ */
57
+ PublicKey.prototype.Data = $util.newBuffer([]);
58
+ /**
59
+ * Encodes the specified PublicKey message. Does not implicitly {@link PublicKey.verify|verify} messages.
60
+ * @function encode
61
+ * @memberof PublicKey
62
+ * @static
63
+ * @param {IPublicKey} m PublicKey message or plain object to encode
64
+ * @param {$protobuf.Writer} [w] Writer to encode to
65
+ * @returns {$protobuf.Writer} Writer
66
+ */
67
+ PublicKey.encode = function encode(m, w) {
68
+ if (!w)
69
+ w = $Writer.create();
70
+ w.uint32(8).int32(m.Type);
71
+ w.uint32(18).bytes(m.Data);
72
+ return w;
73
+ };
74
+ /**
75
+ * Decodes a PublicKey message from the specified reader or buffer.
76
+ * @function decode
77
+ * @memberof PublicKey
78
+ * @static
79
+ * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from
80
+ * @param {number} [l] Message length if known beforehand
81
+ * @returns {PublicKey} PublicKey
82
+ * @throws {Error} If the payload is not a reader or valid buffer
83
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
84
+ */
85
+ PublicKey.decode = function decode(r, l) {
86
+ if (!(r instanceof $Reader))
87
+ r = $Reader.create(r);
88
+ var c = l === undefined ? r.len : r.pos + l, m = new PublicKey();
89
+ while (r.pos < c) {
90
+ var t = r.uint32();
91
+ switch (t >>> 3) {
92
+ case 1:
93
+ m.Type = r.int32();
94
+ break;
95
+ case 2:
96
+ m.Data = r.bytes();
97
+ break;
98
+ default:
99
+ r.skipType(t & 7);
100
+ break;
101
+ }
102
+ }
103
+ if (!m.hasOwnProperty("Type"))
104
+ throw $util.ProtocolError("missing required 'Type'", { instance: m });
105
+ if (!m.hasOwnProperty("Data"))
106
+ throw $util.ProtocolError("missing required 'Data'", { instance: m });
107
+ return m;
108
+ };
109
+ /**
110
+ * Creates a PublicKey message from a plain object. Also converts values to their respective internal types.
111
+ * @function fromObject
112
+ * @memberof PublicKey
113
+ * @static
114
+ * @param {Object.<string,*>} d Plain object
115
+ * @returns {PublicKey} PublicKey
116
+ */
117
+ PublicKey.fromObject = function fromObject(d) {
118
+ if (d instanceof PublicKey)
119
+ return d;
120
+ var m = new PublicKey();
121
+ switch (d.Type) {
122
+ case "RSA":
123
+ case 0:
124
+ m.Type = 0;
125
+ break;
126
+ case "Ed25519":
127
+ case 1:
128
+ m.Type = 1;
129
+ break;
130
+ case "Secp256k1":
131
+ case 2:
132
+ m.Type = 2;
133
+ break;
134
+ }
135
+ if (d.Data != null) {
136
+ if (typeof d.Data === "string")
137
+ $util.base64.decode(d.Data, m.Data = $util.newBuffer($util.base64.length(d.Data)), 0);
138
+ else if (d.Data.length)
139
+ m.Data = d.Data;
140
+ }
141
+ return m;
142
+ };
143
+ /**
144
+ * Creates a plain object from a PublicKey message. Also converts values to other types if specified.
145
+ * @function toObject
146
+ * @memberof PublicKey
147
+ * @static
148
+ * @param {PublicKey} m PublicKey
149
+ * @param {$protobuf.IConversionOptions} [o] Conversion options
150
+ * @returns {Object.<string,*>} Plain object
151
+ */
152
+ PublicKey.toObject = function toObject(m, o) {
153
+ if (!o)
154
+ o = {};
155
+ var d = {};
156
+ if (o.defaults) {
157
+ d.Type = o.enums === String ? "RSA" : 0;
158
+ if (o.bytes === String)
159
+ d.Data = "";
160
+ else {
161
+ d.Data = [];
162
+ if (o.bytes !== Array)
163
+ d.Data = $util.newBuffer(d.Data);
164
+ }
165
+ }
166
+ if (m.Type != null && m.hasOwnProperty("Type")) {
167
+ d.Type = o.enums === String ? $root.KeyType[m.Type] : m.Type;
168
+ }
169
+ if (m.Data != null && m.hasOwnProperty("Data")) {
170
+ d.Data = o.bytes === String ? $util.base64.encode(m.Data, 0, m.Data.length) : o.bytes === Array ? Array.prototype.slice.call(m.Data) : m.Data;
171
+ }
172
+ return d;
173
+ };
174
+ /**
175
+ * Converts this PublicKey to JSON.
176
+ * @function toJSON
177
+ * @memberof PublicKey
178
+ * @instance
179
+ * @returns {Object.<string,*>} JSON object
180
+ */
181
+ PublicKey.prototype.toJSON = function toJSON() {
182
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
183
+ };
184
+ /**
185
+ * Properties of a PrivateKey.
186
+ * @exports IPrivateKey
187
+ * @interface IPrivateKey
188
+ * @property {KeyType} Type PrivateKey Type
189
+ * @property {Uint8Array} Data PrivateKey Data
190
+ */
191
+ /**
192
+ * Constructs a new PrivateKey.
193
+ * @exports PrivateKey
194
+ * @classdesc Represents a PrivateKey.
195
+ * @implements IPrivateKey
196
+ * @constructor
197
+ * @param {IPrivateKey=} [p] Properties to set
198
+ */
199
+ export function PrivateKey(p) {
200
+ if (p)
201
+ for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)
202
+ if (p[ks[i]] != null)
203
+ this[ks[i]] = p[ks[i]];
204
+ }
205
+ /**
206
+ * PrivateKey Type.
207
+ * @member {KeyType} Type
208
+ * @memberof PrivateKey
209
+ * @instance
210
+ */
211
+ PrivateKey.prototype.Type = 0;
212
+ /**
213
+ * PrivateKey Data.
214
+ * @member {Uint8Array} Data
215
+ * @memberof PrivateKey
216
+ * @instance
217
+ */
218
+ PrivateKey.prototype.Data = $util.newBuffer([]);
219
+ /**
220
+ * Encodes the specified PrivateKey message. Does not implicitly {@link PrivateKey.verify|verify} messages.
221
+ * @function encode
222
+ * @memberof PrivateKey
223
+ * @static
224
+ * @param {IPrivateKey} m PrivateKey message or plain object to encode
225
+ * @param {$protobuf.Writer} [w] Writer to encode to
226
+ * @returns {$protobuf.Writer} Writer
227
+ */
228
+ PrivateKey.encode = function encode(m, w) {
229
+ if (!w)
230
+ w = $Writer.create();
231
+ w.uint32(8).int32(m.Type);
232
+ w.uint32(18).bytes(m.Data);
233
+ return w;
234
+ };
235
+ /**
236
+ * Decodes a PrivateKey message from the specified reader or buffer.
237
+ * @function decode
238
+ * @memberof PrivateKey
239
+ * @static
240
+ * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from
241
+ * @param {number} [l] Message length if known beforehand
242
+ * @returns {PrivateKey} PrivateKey
243
+ * @throws {Error} If the payload is not a reader or valid buffer
244
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
245
+ */
246
+ PrivateKey.decode = function decode(r, l) {
247
+ if (!(r instanceof $Reader))
248
+ r = $Reader.create(r);
249
+ var c = l === undefined ? r.len : r.pos + l, m = new PrivateKey();
250
+ while (r.pos < c) {
251
+ var t = r.uint32();
252
+ switch (t >>> 3) {
253
+ case 1:
254
+ m.Type = r.int32();
255
+ break;
256
+ case 2:
257
+ m.Data = r.bytes();
258
+ break;
259
+ default:
260
+ r.skipType(t & 7);
261
+ break;
262
+ }
263
+ }
264
+ if (!m.hasOwnProperty("Type"))
265
+ throw $util.ProtocolError("missing required 'Type'", { instance: m });
266
+ if (!m.hasOwnProperty("Data"))
267
+ throw $util.ProtocolError("missing required 'Data'", { instance: m });
268
+ return m;
269
+ };
270
+ /**
271
+ * Creates a PrivateKey message from a plain object. Also converts values to their respective internal types.
272
+ * @function fromObject
273
+ * @memberof PrivateKey
274
+ * @static
275
+ * @param {Object.<string,*>} d Plain object
276
+ * @returns {PrivateKey} PrivateKey
277
+ */
278
+ PrivateKey.fromObject = function fromObject(d) {
279
+ if (d instanceof PrivateKey)
280
+ return d;
281
+ var m = new PrivateKey();
282
+ switch (d.Type) {
283
+ case "RSA":
284
+ case 0:
285
+ m.Type = 0;
286
+ break;
287
+ case "Ed25519":
288
+ case 1:
289
+ m.Type = 1;
290
+ break;
291
+ case "Secp256k1":
292
+ case 2:
293
+ m.Type = 2;
294
+ break;
295
+ }
296
+ if (d.Data != null) {
297
+ if (typeof d.Data === "string")
298
+ $util.base64.decode(d.Data, m.Data = $util.newBuffer($util.base64.length(d.Data)), 0);
299
+ else if (d.Data.length)
300
+ m.Data = d.Data;
301
+ }
302
+ return m;
303
+ };
304
+ /**
305
+ * Creates a plain object from a PrivateKey message. Also converts values to other types if specified.
306
+ * @function toObject
307
+ * @memberof PrivateKey
308
+ * @static
309
+ * @param {PrivateKey} m PrivateKey
310
+ * @param {$protobuf.IConversionOptions} [o] Conversion options
311
+ * @returns {Object.<string,*>} Plain object
312
+ */
313
+ PrivateKey.toObject = function toObject(m, o) {
314
+ if (!o)
315
+ o = {};
316
+ var d = {};
317
+ if (o.defaults) {
318
+ d.Type = o.enums === String ? "RSA" : 0;
319
+ if (o.bytes === String)
320
+ d.Data = "";
321
+ else {
322
+ d.Data = [];
323
+ if (o.bytes !== Array)
324
+ d.Data = $util.newBuffer(d.Data);
325
+ }
326
+ }
327
+ if (m.Type != null && m.hasOwnProperty("Type")) {
328
+ d.Type = o.enums === String ? $root.KeyType[m.Type] : m.Type;
329
+ }
330
+ if (m.Data != null && m.hasOwnProperty("Data")) {
331
+ d.Data = o.bytes === String ? $util.base64.encode(m.Data, 0, m.Data.length) : o.bytes === Array ? Array.prototype.slice.call(m.Data) : m.Data;
332
+ }
333
+ return d;
334
+ };
335
+ /**
336
+ * Converts this PrivateKey to JSON.
337
+ * @function toJSON
338
+ * @memberof PrivateKey
339
+ * @instance
340
+ * @returns {Object.<string,*>} JSON object
341
+ */
342
+ PrivateKey.prototype.toJSON = function toJSON() {
343
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
344
+ };
345
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/keys/keys.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import randomBytes from '../random-bytes.js';
2
+ import * as utils from './rsa-utils.js';
3
+ export { utils };
4
+ export declare function generateKey(bits: number): Promise<{
5
+ privateKey: JsonWebKey;
6
+ publicKey: JsonWebKey;
7
+ }>;
8
+ export declare function unmarshalPrivateKey(key: JsonWebKey): Promise<{
9
+ privateKey: JsonWebKey;
10
+ publicKey: JsonWebKey;
11
+ }>;
12
+ export { randomBytes as getRandomValues };
13
+ export declare function hashAndSign(key: JsonWebKey, msg: Uint8Array): Promise<Uint8Array>;
14
+ export declare function hashAndVerify(key: JsonWebKey, sig: Uint8Array, msg: Uint8Array): Promise<boolean>;
15
+ export declare function encrypt(key: JsonWebKey, msg: Uint8Array): Uint8Array;
16
+ export declare function decrypt(key: JsonWebKey, msg: Uint8Array): Uint8Array;
17
+ //# sourceMappingURL=rsa-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,wBAAsB,WAAW,CAAE,IAAI,EAAE,MAAM;;;GAkB9C;AAGD,wBAAsB,mBAAmB,CAAE,GAAG,EAAE,UAAU;;;GA0BzD;AAED,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,wBAAsB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,uBAmBlE;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,oBAkBrF;AAiDD,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,cAExD;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,cAExD"}
@@ -0,0 +1,99 @@
1
+ import webcrypto from '../webcrypto.js';
2
+ import randomBytes from '../random-bytes.js';
3
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
4
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
5
+ import * as utils from './rsa-utils.js';
6
+ import { jwk2pub, jwk2priv } from './jwk2pem.js';
7
+ import errcode from 'err-code';
8
+ export { utils };
9
+ export async function generateKey(bits) {
10
+ const pair = await webcrypto.get().subtle.generateKey({
11
+ name: 'RSASSA-PKCS1-v1_5',
12
+ modulusLength: bits,
13
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
14
+ hash: { name: 'SHA-256' }
15
+ }, true, ['sign', 'verify']);
16
+ const keys = await exportKey(pair);
17
+ return {
18
+ privateKey: keys[0],
19
+ publicKey: keys[1]
20
+ };
21
+ }
22
+ // Takes a jwk key
23
+ export async function unmarshalPrivateKey(key) {
24
+ const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {
25
+ name: 'RSASSA-PKCS1-v1_5',
26
+ hash: { name: 'SHA-256' }
27
+ }, true, ['sign']);
28
+ const pair = [
29
+ privateKey,
30
+ await derivePublicFromPrivate(key)
31
+ ];
32
+ const keys = await exportKey({
33
+ privateKey: pair[0],
34
+ publicKey: pair[1]
35
+ });
36
+ return {
37
+ privateKey: keys[0],
38
+ publicKey: keys[1]
39
+ };
40
+ }
41
+ export { randomBytes as getRandomValues };
42
+ export async function hashAndSign(key, msg) {
43
+ const privateKey = await webcrypto.get().subtle.importKey('jwk', key, {
44
+ name: 'RSASSA-PKCS1-v1_5',
45
+ hash: { name: 'SHA-256' }
46
+ }, false, ['sign']);
47
+ const sig = await webcrypto.get().subtle.sign({ name: 'RSASSA-PKCS1-v1_5' }, privateKey, Uint8Array.from(msg));
48
+ return new Uint8Array(sig, 0, sig.byteLength);
49
+ }
50
+ export async function hashAndVerify(key, sig, msg) {
51
+ const publicKey = await webcrypto.get().subtle.importKey('jwk', key, {
52
+ name: 'RSASSA-PKCS1-v1_5',
53
+ hash: { name: 'SHA-256' }
54
+ }, false, ['verify']);
55
+ return await webcrypto.get().subtle.verify({ name: 'RSASSA-PKCS1-v1_5' }, publicKey, sig, msg);
56
+ }
57
+ async function exportKey(pair) {
58
+ if (pair.privateKey == null || pair.publicKey == null) {
59
+ throw errcode(new Error('Private and public key are required'), 'ERR_INVALID_PARAMETERS');
60
+ }
61
+ return await Promise.all([
62
+ webcrypto.get().subtle.exportKey('jwk', pair.privateKey),
63
+ webcrypto.get().subtle.exportKey('jwk', pair.publicKey)
64
+ ]);
65
+ }
66
+ async function derivePublicFromPrivate(jwKey) {
67
+ return await webcrypto.get().subtle.importKey('jwk', {
68
+ kty: jwKey.kty,
69
+ n: jwKey.n,
70
+ e: jwKey.e
71
+ }, {
72
+ name: 'RSASSA-PKCS1-v1_5',
73
+ hash: { name: 'SHA-256' }
74
+ }, true, ['verify']);
75
+ }
76
+ /*
77
+
78
+ RSA encryption/decryption for the browser with webcrypto workaround
79
+ "bloody dark magic. webcrypto's why."
80
+
81
+ Explanation:
82
+ - Convert JWK to nodeForge
83
+ - Convert msg Uint8Array to nodeForge buffer: ByteBuffer is a "binary-string backed buffer", so let's make our Uint8Array a binary string
84
+ - Convert resulting nodeForge buffer to Uint8Array: it returns a binary string, turn that into a Uint8Array
85
+
86
+ */
87
+ function convertKey(key, pub, msg, handle) {
88
+ const fkey = pub ? jwk2pub(key) : jwk2priv(key);
89
+ const fmsg = uint8ArrayToString(Uint8Array.from(msg), 'ascii');
90
+ const fomsg = handle(fmsg, fkey);
91
+ return uint8ArrayFromString(fomsg, 'ascii');
92
+ }
93
+ export function encrypt(key, msg) {
94
+ return convertKey(key, true, msg, (msg, key) => key.encrypt(msg));
95
+ }
96
+ export function decrypt(key, msg) {
97
+ return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));
98
+ }
99
+ //# sourceMappingURL=rsa-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa-browser.js","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /// <reference types="node" />
2
+ import 'node-forge/lib/sha512.js';
3
+ export declare class RsaPublicKey {
4
+ private readonly _key;
5
+ constructor(key: JsonWebKey);
6
+ verify(data: Uint8Array, sig: Uint8Array): Promise<boolean>;
7
+ marshal(): Uint8Array;
8
+ get bytes(): Uint8Array;
9
+ encrypt(bytes: Uint8Array): Buffer;
10
+ equals(key: any): boolean;
11
+ hash(): Promise<Uint8Array>;
12
+ }
13
+ export declare class RsaPrivateKey {
14
+ private readonly _key;
15
+ private readonly _publicKey;
16
+ constructor(key: JsonWebKey, publicKey: JsonWebKey);
17
+ genSecret(): Uint8Array;
18
+ sign(message: Uint8Array): Promise<Buffer & string>;
19
+ get public(): RsaPublicKey;
20
+ decrypt(bytes: Uint8Array): Buffer;
21
+ marshal(): Uint8Array;
22
+ get bytes(): Uint8Array;
23
+ equals(key: any): boolean;
24
+ hash(): Promise<Uint8Array>;
25
+ /**
26
+ * Gets the ID of the key.
27
+ *
28
+ * The key id is the base58 encoding of the SHA-256 multihash of its public key.
29
+ * The public key is a protobuf encoding containing a type and the DER encoding
30
+ * of the PKCS SubjectPublicKeyInfo.
31
+ */
32
+ id(): Promise<string>;
33
+ /**
34
+ * Exports the key into a password protected PEM format
35
+ */
36
+ export(password: string, format?: string): Promise<any>;
37
+ }
38
+ export declare function unmarshalRsaPrivateKey(bytes: Uint8Array): Promise<RsaPrivateKey>;
39
+ export declare function unmarshalRsaPublicKey(bytes: Uint8Array): RsaPublicKey;
40
+ export declare function fromJwk(jwk: JsonWebKey): Promise<RsaPrivateKey>;
41
+ export declare function generateKeyPair(bits: number): Promise<RsaPrivateKey>;
42
+ //# sourceMappingURL=rsa-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa-class.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":";AAKA,OAAO,0BAA0B,CAAA;AAOjC,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;gBAEpB,GAAG,EAAE,UAAU;IAItB,MAAM,CAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU;IAI/C,OAAO;IAIP,IAAI,KAAK,eAKR;IAED,OAAO,CAAE,KAAK,EAAE,UAAU;IAI1B,MAAM,CAAE,GAAG,EAAE,GAAG;IAIV,IAAI;CAKX;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE1B,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;IAKnD,SAAS;IAIH,IAAI,CAAE,OAAO,EAAE,UAAU;IAI/B,IAAI,MAAM,iBAMT;IAED,OAAO,CAAE,KAAK,EAAE,UAAU;IAI1B,OAAO;IAIP,IAAI,KAAK,eAKR;IAED,MAAM,CAAE,GAAG,EAAE,GAAG;IAIV,IAAI;IAMV;;;;;;OAMG;IACG,EAAE;IAKR;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAW;CAmBlD;AAED,wBAAsB,sBAAsB,CAAE,KAAK,EAAE,UAAU,0BAI9D;AAED,wBAAgB,qBAAqB,CAAE,KAAK,EAAE,UAAU,gBAGvD;AAED,wBAAsB,OAAO,CAAE,GAAG,EAAE,UAAU,0BAG7C;AAED,wBAAsB,eAAe,CAAE,IAAI,EAAE,MAAM,0BAGlD"}
@@ -0,0 +1,126 @@
1
+ import { sha256 } from 'multiformats/hashes/sha2';
2
+ import errcode from 'err-code';
3
+ import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
4
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
5
+ import 'node-forge/lib/sha512.js';
6
+ // @ts-expect-error types are missing
7
+ import forge from 'node-forge/lib/forge.js';
8
+ import * as crypto from './rsa.js';
9
+ import * as pbm from './keys.js';
10
+ import { exporter } from './exporter.js';
11
+ export class RsaPublicKey {
12
+ constructor(key) {
13
+ this._key = key;
14
+ }
15
+ async verify(data, sig) {
16
+ return await crypto.hashAndVerify(this._key, sig, data);
17
+ }
18
+ marshal() {
19
+ return crypto.utils.jwkToPkix(this._key);
20
+ }
21
+ get bytes() {
22
+ return pbm.PublicKey.encode({
23
+ Type: pbm.KeyType.RSA,
24
+ Data: this.marshal()
25
+ }).finish();
26
+ }
27
+ encrypt(bytes) {
28
+ return crypto.encrypt(this._key, bytes);
29
+ }
30
+ equals(key) {
31
+ return uint8ArrayEquals(this.bytes, key.bytes);
32
+ }
33
+ async hash() {
34
+ const { bytes } = await sha256.digest(this.bytes);
35
+ return bytes;
36
+ }
37
+ }
38
+ export class RsaPrivateKey {
39
+ constructor(key, publicKey) {
40
+ this._key = key;
41
+ this._publicKey = publicKey;
42
+ }
43
+ genSecret() {
44
+ return crypto.getRandomValues(16);
45
+ }
46
+ async sign(message) {
47
+ return await crypto.hashAndSign(this._key, message);
48
+ }
49
+ get public() {
50
+ if (this._publicKey == null) {
51
+ throw errcode(new Error('public key not provided'), 'ERR_PUBKEY_NOT_PROVIDED');
52
+ }
53
+ return new RsaPublicKey(this._publicKey);
54
+ }
55
+ decrypt(bytes) {
56
+ return crypto.decrypt(this._key, bytes);
57
+ }
58
+ marshal() {
59
+ return crypto.utils.jwkToPkcs1(this._key);
60
+ }
61
+ get bytes() {
62
+ return pbm.PrivateKey.encode({
63
+ Type: pbm.KeyType.RSA,
64
+ Data: this.marshal()
65
+ }).finish();
66
+ }
67
+ equals(key) {
68
+ return uint8ArrayEquals(this.bytes, key.bytes);
69
+ }
70
+ async hash() {
71
+ const { bytes } = await sha256.digest(this.bytes);
72
+ return bytes;
73
+ }
74
+ /**
75
+ * Gets the ID of the key.
76
+ *
77
+ * The key id is the base58 encoding of the SHA-256 multihash of its public key.
78
+ * The public key is a protobuf encoding containing a type and the DER encoding
79
+ * of the PKCS SubjectPublicKeyInfo.
80
+ */
81
+ async id() {
82
+ const hash = await this.public.hash();
83
+ return uint8ArrayToString(hash, 'base58btc');
84
+ }
85
+ /**
86
+ * Exports the key into a password protected PEM format
87
+ */
88
+ async export(password, format = 'pkcs-8') {
89
+ if (format === 'pkcs-8') {
90
+ const buffer = new forge.util.ByteBuffer(this.marshal());
91
+ const asn1 = forge.asn1.fromDer(buffer);
92
+ const privateKey = forge.pki.privateKeyFromAsn1(asn1);
93
+ const options = {
94
+ algorithm: 'aes256',
95
+ count: 10000,
96
+ saltSize: 128 / 8,
97
+ prfAlgorithm: 'sha512'
98
+ };
99
+ return forge.pki.encryptRsaPrivateKey(privateKey, password, options);
100
+ }
101
+ else if (format === 'libp2p-key') {
102
+ return await exporter(this.bytes, password);
103
+ }
104
+ else {
105
+ throw errcode(new Error(`export format '${format}' is not supported`), 'ERR_INVALID_EXPORT_FORMAT');
106
+ }
107
+ }
108
+ }
109
+ export async function unmarshalRsaPrivateKey(bytes) {
110
+ const jwk = crypto.utils.pkcs1ToJwk(bytes);
111
+ const keys = await crypto.unmarshalPrivateKey(jwk);
112
+ return new RsaPrivateKey(keys.privateKey, keys.publicKey);
113
+ }
114
+ export function unmarshalRsaPublicKey(bytes) {
115
+ const jwk = crypto.utils.pkixToJwk(bytes);
116
+ return new RsaPublicKey(jwk);
117
+ }
118
+ export async function fromJwk(jwk) {
119
+ const keys = await crypto.unmarshalPrivateKey(jwk);
120
+ return new RsaPrivateKey(keys.privateKey, keys.publicKey);
121
+ }
122
+ export async function generateKeyPair(bits) {
123
+ const keys = await crypto.generateKey(bits);
124
+ return new RsaPrivateKey(keys.privateKey, keys.publicKey);
125
+ }
126
+ //# sourceMappingURL=rsa-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa-class.js","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"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"}