@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.
- package/LICENSE +2 -0
- package/README.md +314 -0
- package/dist/src/aes/cipher-mode.d.ts +2 -0
- package/dist/src/aes/cipher-mode.d.ts.map +1 -0
- package/dist/src/aes/cipher-mode.js +13 -0
- package/dist/src/aes/cipher-mode.js.map +1 -0
- package/dist/src/aes/ciphers-browser.d.ts +8 -0
- package/dist/src/aes/ciphers-browser.d.ts.map +1 -0
- package/dist/src/aes/ciphers-browser.js +26 -0
- package/dist/src/aes/ciphers-browser.js.map +1 -0
- package/dist/src/aes/ciphers.d.ts +5 -0
- package/dist/src/aes/ciphers.d.ts.map +1 -0
- package/dist/src/aes/ciphers.js +4 -0
- package/dist/src/aes/ciphers.js.map +1 -0
- package/dist/src/aes/index.d.ts +6 -0
- package/dist/src/aes/index.d.ts.map +1 -0
- package/dist/src/aes/index.js +17 -0
- package/dist/src/aes/index.js.map +1 -0
- package/dist/src/ciphers/aes-gcm.browser.d.ts +3 -0
- package/dist/src/ciphers/aes-gcm.browser.d.ts.map +1 -0
- package/dist/src/ciphers/aes-gcm.browser.js +61 -0
- package/dist/src/ciphers/aes-gcm.browser.js.map +1 -0
- package/dist/src/ciphers/aes-gcm.d.ts +3 -0
- package/dist/src/ciphers/aes-gcm.d.ts.map +1 -0
- package/dist/src/ciphers/aes-gcm.js +83 -0
- package/dist/src/ciphers/aes-gcm.js.map +1 -0
- package/dist/src/ciphers/interface.d.ts +14 -0
- package/dist/src/ciphers/interface.d.ts.map +1 -0
- package/dist/src/ciphers/interface.js +2 -0
- package/dist/src/ciphers/interface.js.map +1 -0
- package/dist/src/hmac/index-browser.d.ts +5 -0
- package/dist/src/hmac/index-browser.d.ts.map +1 -0
- package/dist/src/hmac/index-browser.js +25 -0
- package/dist/src/hmac/index-browser.js.map +1 -0
- package/dist/src/hmac/index.d.ts +5 -0
- package/dist/src/hmac/index.d.ts.map +1 -0
- package/dist/src/hmac/index.js +14 -0
- package/dist/src/hmac/index.js.map +1 -0
- package/dist/src/hmac/lengths.d.ts +7 -0
- package/dist/src/hmac/lengths.d.ts.map +1 -0
- package/dist/src/hmac/lengths.js +6 -0
- package/dist/src/hmac/lengths.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +11 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/keys/ecdh-browser.d.ts +3 -0
- package/dist/src/keys/ecdh-browser.d.ts.map +1 -0
- package/dist/src/keys/ecdh-browser.js +97 -0
- package/dist/src/keys/ecdh-browser.js.map +1 -0
- package/dist/src/keys/ecdh.d.ts +3 -0
- package/dist/src/keys/ecdh.d.ts.map +1 -0
- package/dist/src/keys/ecdh.js +26 -0
- package/dist/src/keys/ecdh.js.map +1 -0
- package/dist/src/keys/ed25519-class.d.ts +39 -0
- package/dist/src/keys/ed25519-class.d.ts.map +1 -0
- package/dist/src/keys/ed25519-class.js +119 -0
- package/dist/src/keys/ed25519-class.js.map +1 -0
- package/dist/src/keys/ed25519.d.ts +18 -0
- package/dist/src/keys/ed25519.d.ts.map +1 -0
- package/dist/src/keys/ed25519.js +52 -0
- package/dist/src/keys/ed25519.js.map +1 -0
- package/dist/src/keys/ephemeral-keys.d.ts +9 -0
- package/dist/src/keys/ephemeral-keys.d.ts.map +1 -0
- package/dist/src/keys/ephemeral-keys.js +9 -0
- package/dist/src/keys/ephemeral-keys.js.map +1 -0
- package/dist/src/keys/exporter.d.ts +7 -0
- package/dist/src/keys/exporter.d.ts.map +1 -0
- package/dist/src/keys/exporter.js +13 -0
- package/dist/src/keys/exporter.js.map +1 -0
- package/dist/src/keys/importer.d.ts +7 -0
- package/dist/src/keys/importer.d.ts.map +1 -0
- package/dist/src/keys/importer.js +13 -0
- package/dist/src/keys/importer.js.map +1 -0
- package/dist/src/keys/index.d.ts +33 -0
- package/dist/src/keys/index.d.ts.map +1 -0
- package/dist/src/keys/index.js +111 -0
- package/dist/src/keys/index.js.map +1 -0
- package/dist/src/keys/interface.d.ts +17 -0
- package/dist/src/keys/interface.d.ts.map +1 -0
- package/dist/src/keys/interface.js +2 -0
- package/dist/src/keys/interface.js.map +1 -0
- package/dist/src/keys/jwk2pem.d.ts +4 -0
- package/dist/src/keys/jwk2pem.d.ts.map +1 -0
- package/dist/src/keys/jwk2pem.js +14 -0
- package/dist/src/keys/jwk2pem.js.map +1 -0
- package/dist/src/keys/key-stretcher.d.ts +17 -0
- package/dist/src/keys/key-stretcher.d.ts.map +1 -0
- package/dist/src/keys/key-stretcher.js +65 -0
- package/dist/src/keys/key-stretcher.js.map +1 -0
- package/dist/src/keys/keys.d.ts +225 -0
- package/dist/src/keys/keys.d.ts.map +1 -0
- package/dist/src/keys/keys.js +345 -0
- package/dist/src/keys/keys.js.map +1 -0
- package/dist/src/keys/rsa-browser.d.ts +17 -0
- package/dist/src/keys/rsa-browser.d.ts.map +1 -0
- package/dist/src/keys/rsa-browser.js +99 -0
- package/dist/src/keys/rsa-browser.js.map +1 -0
- package/dist/src/keys/rsa-class.d.ts +42 -0
- package/dist/src/keys/rsa-class.d.ts.map +1 -0
- package/dist/src/keys/rsa-class.js +126 -0
- package/dist/src/keys/rsa-class.js.map +1 -0
- package/dist/src/keys/rsa-utils.d.ts +7 -0
- package/dist/src/keys/rsa-utils.d.ts.map +1 -0
- package/dist/src/keys/rsa-utils.js +65 -0
- package/dist/src/keys/rsa-utils.js.map +1 -0
- package/dist/src/keys/rsa.d.ts +13 -0
- package/dist/src/keys/rsa.d.ts.map +1 -0
- package/dist/src/keys/rsa.js +58 -0
- package/dist/src/keys/rsa.js.map +1 -0
- package/dist/src/keys/secp256k1-class.d.ts +36 -0
- package/dist/src/keys/secp256k1-class.d.ts.map +1 -0
- package/dist/src/keys/secp256k1-class.js +95 -0
- package/dist/src/keys/secp256k1-class.js.map +1 -0
- package/dist/src/keys/secp256k1.d.ts +17 -0
- package/dist/src/keys/secp256k1.d.ts.map +1 -0
- package/dist/src/keys/secp256k1.js +65 -0
- package/dist/src/keys/secp256k1.js.map +1 -0
- package/dist/src/pbkdf2.d.ts +5 -0
- package/dist/src/pbkdf2.d.ts.map +1 -0
- package/dist/src/pbkdf2.js +30 -0
- package/dist/src/pbkdf2.js.map +1 -0
- package/dist/src/random-bytes.d.ts +2 -0
- package/dist/src/random-bytes.d.ts.map +1 -0
- package/dist/src/random-bytes.js +9 -0
- package/dist/src/random-bytes.js.map +1 -0
- package/dist/src/util.d.ts +9 -0
- package/dist/src/util.d.ts.map +1 -0
- package/dist/src/util.js +37 -0
- package/dist/src/util.js.map +1 -0
- package/dist/src/webcrypto.d.ts +5 -0
- package/dist/src/webcrypto.d.ts.map +1 -0
- package/dist/src/webcrypto.js +17 -0
- package/dist/src/webcrypto.js.map +1 -0
- package/package.json +178 -4
- package/src/aes/cipher-mode.ts +15 -0
- package/src/aes/ciphers-browser.ts +28 -0
- package/src/aes/ciphers.ts +4 -0
- package/src/aes/index.ts +25 -0
- package/src/ciphers/aes-gcm.browser.ts +74 -0
- package/src/ciphers/aes-gcm.ts +102 -0
- package/src/ciphers/interface.ts +15 -0
- package/src/hmac/index-browser.ts +35 -0
- package/src/hmac/index.ts +15 -0
- package/src/hmac/lengths.ts +6 -0
- package/src/index.ts +11 -0
- package/src/keys/ecdh-browser.ts +138 -0
- package/src/keys/ecdh.ts +33 -0
- package/src/keys/ed25519-class.ts +145 -0
- package/src/keys/ed25519.ts +63 -0
- package/src/keys/ephemeral-keys.ts +9 -0
- package/src/keys/exporter.ts +13 -0
- package/src/keys/importer.ts +13 -0
- package/src/keys/index.ts +126 -0
- package/src/keys/interface.ts +20 -0
- package/src/keys/jwk2pem.ts +16 -0
- package/src/keys/key-stretcher.ts +77 -0
- package/src/keys/keys.d.ts +146 -0
- package/src/keys/keys.js +366 -0
- package/src/keys/keys.proto +15 -0
- package/src/keys/rsa-browser.ts +156 -0
- package/src/keys/rsa-class.ts +155 -0
- package/src/keys/rsa-utils.ts +74 -0
- package/src/keys/rsa.ts +69 -0
- package/src/keys/secp256k1-class.ts +118 -0
- package/src/keys/secp256k1.ts +69 -0
- package/src/pbkdf2.ts +39 -0
- package/src/random-bytes.ts +9 -0
- package/src/util.ts +42 -0
- 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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"}
|