@libp2p/crypto 3.0.4-4691f4173 → 3.0.4-856ccd708
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/dist/index.min.js +72 -14
- package/dist/src/index.d.ts +0 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/keys/ed25519-browser.d.ts +1 -1
- package/dist/src/keys/ed25519-browser.d.ts.map +1 -1
- package/dist/src/keys/index.d.ts +4 -2
- package/dist/src/keys/index.d.ts.map +1 -1
- package/dist/src/keys/index.js +7 -12
- package/dist/src/keys/index.js.map +1 -1
- package/dist/src/keys/rsa-browser.d.ts +0 -2
- package/dist/src/keys/rsa-browser.d.ts.map +1 -1
- package/dist/src/keys/rsa-browser.js +0 -25
- package/dist/src/keys/rsa-browser.js.map +1 -1
- package/dist/src/keys/rsa-class.d.ts +6 -5
- package/dist/src/keys/rsa-class.d.ts.map +1 -1
- package/dist/src/keys/rsa-class.js +11 -25
- package/dist/src/keys/rsa-class.js.map +1 -1
- package/dist/src/keys/rsa-utils.d.ts +15 -2
- package/dist/src/keys/rsa-utils.d.ts.map +1 -1
- package/dist/src/keys/rsa-utils.js +304 -39
- package/dist/src/keys/rsa-utils.js.map +1 -1
- package/dist/src/keys/rsa.d.ts +0 -2
- package/dist/src/keys/rsa.d.ts.map +1 -1
- package/dist/src/keys/rsa.js +2 -22
- package/dist/src/keys/rsa.js.map +1 -1
- package/dist/src/pbkdf2.d.ts +1 -1
- package/dist/src/pbkdf2.d.ts.map +1 -1
- package/dist/src/pbkdf2.js +14 -10
- package/dist/src/pbkdf2.js.map +1 -1
- package/dist/src/util.d.ts +0 -7
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +0 -25
- package/dist/src/util.js.map +1 -1
- package/dist/src/webcrypto-browser.d.ts +5 -0
- package/dist/src/webcrypto-browser.d.ts.map +1 -0
- package/dist/src/webcrypto-browser.js +17 -0
- package/dist/src/webcrypto-browser.js.map +1 -0
- package/dist/src/webcrypto.d.ts +3 -1
- package/dist/src/webcrypto.d.ts.map +1 -1
- package/dist/src/webcrypto.js +4 -11
- package/dist/src/webcrypto.js.map +1 -1
- package/package.json +8 -15
- package/src/index.ts +0 -2
- package/src/keys/ed25519-browser.ts +1 -1
- package/src/keys/index.ts +10 -12
- package/src/keys/rsa-browser.ts +0 -29
- package/src/keys/rsa-class.ts +11 -28
- package/src/keys/rsa-utils.ts +373 -39
- package/src/keys/rsa.ts +2 -23
- package/src/pbkdf2.ts +17 -15
- package/src/util.ts +0 -29
- package/src/webcrypto-browser.ts +24 -0
- package/src/webcrypto.ts +5 -18
- package/dist/src/aes/cipher-mode.d.ts +0 -2
- package/dist/src/aes/cipher-mode.d.ts.map +0 -1
- package/dist/src/aes/cipher-mode.js +0 -13
- package/dist/src/aes/cipher-mode.js.map +0 -1
- package/dist/src/aes/ciphers-browser.d.ts +0 -7
- package/dist/src/aes/ciphers-browser.d.ts.map +0 -1
- package/dist/src/aes/ciphers-browser.js +0 -26
- package/dist/src/aes/ciphers-browser.js.map +0 -1
- package/dist/src/aes/ciphers.d.ts +0 -5
- package/dist/src/aes/ciphers.d.ts.map +0 -1
- package/dist/src/aes/ciphers.js +0 -4
- package/dist/src/aes/ciphers.js.map +0 -1
- package/dist/src/aes/index.d.ts +0 -50
- package/dist/src/aes/index.d.ts.map +0 -1
- package/dist/src/aes/index.js +0 -61
- package/dist/src/aes/index.js.map +0 -1
- package/dist/src/keys/jwk2pem.d.ts +0 -8
- package/dist/src/keys/jwk2pem.d.ts.map +0 -1
- package/dist/src/keys/jwk2pem.js +0 -14
- package/dist/src/keys/jwk2pem.js.map +0 -1
- package/src/aes/cipher-mode.ts +0 -15
- package/src/aes/ciphers-browser.ts +0 -31
- package/src/aes/ciphers.ts +0 -4
- package/src/aes/index.ts +0 -70
- package/src/keys/jwk2pem.ts +0 -21
package/dist/src/index.d.ts
CHANGED
|
@@ -7,12 +7,10 @@
|
|
|
7
7
|
*
|
|
8
8
|
* To enable the Web Crypto API and allow `@libp2p/crypto` to work fully, please serve your page over HTTPS.
|
|
9
9
|
*/
|
|
10
|
-
import * as aes from './aes/index.js';
|
|
11
10
|
import * as hmac from './hmac/index.js';
|
|
12
11
|
import * as keys from './keys/index.js';
|
|
13
12
|
import pbkdf2 from './pbkdf2.js';
|
|
14
13
|
import randomBytes from './random-bytes.js';
|
|
15
|
-
export { aes };
|
|
16
14
|
export { hmac };
|
|
17
15
|
export { keys };
|
|
18
16
|
export { randomBytes };
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAE3C,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -7,12 +7,10 @@
|
|
|
7
7
|
*
|
|
8
8
|
* To enable the Web Crypto API and allow `@libp2p/crypto` to work fully, please serve your page over HTTPS.
|
|
9
9
|
*/
|
|
10
|
-
import * as aes from './aes/index.js';
|
|
11
10
|
import * as hmac from './hmac/index.js';
|
|
12
11
|
import * as keys from './keys/index.js';
|
|
13
12
|
import pbkdf2 from './pbkdf2.js';
|
|
14
13
|
import randomBytes from './random-bytes.js';
|
|
15
|
-
export { aes };
|
|
16
14
|
export { hmac };
|
|
17
15
|
export { keys };
|
|
18
16
|
export { randomBytes };
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAE3C,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ed25519-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/ed25519-browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ed25519-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/ed25519-browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,QAAA,MAAM,sBAAsB,KAAK,CAAA;AACjC,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAGlC,OAAO,EAAE,sBAAsB,IAAI,eAAe,EAAE,CAAA;AACpD,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,CAAA;AAEtD,wBAAgB,WAAW,IAAK,iBAAiB,CAYhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAE,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAiBxE;AAED,wBAAgB,WAAW,CAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAIjG;AAED,wBAAgB,aAAa,CAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAEhH"}
|
package/dist/src/keys/index.d.ts
CHANGED
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
*
|
|
10
10
|
* For encryption / decryption support, RSA keys should be used.
|
|
11
11
|
*/
|
|
12
|
-
import 'node-forge/lib/asn1.js';
|
|
13
|
-
import 'node-forge/lib/pbe.js';
|
|
14
12
|
import * as Ed25519 from './ed25519-class.js';
|
|
15
13
|
import generateEphemeralKeyPair from './ephemeral-keys.js';
|
|
16
14
|
import { keyStretcher } from './key-stretcher.js';
|
|
@@ -22,6 +20,10 @@ export { keyStretcher };
|
|
|
22
20
|
export { generateEphemeralKeyPair };
|
|
23
21
|
export { keysPBM };
|
|
24
22
|
export type KeyTypes = 'RSA' | 'Ed25519' | 'secp256k1';
|
|
23
|
+
export { RsaPrivateKey, RsaPublicKey, MAX_RSA_KEY_SIZE } from './rsa-class.js';
|
|
24
|
+
export { Ed25519PrivateKey, Ed25519PublicKey } from './ed25519-class.js';
|
|
25
|
+
export { Secp256k1PrivateKey, Secp256k1PublicKey } from './secp256k1-class.js';
|
|
26
|
+
export type { JWKKeyPair } from './interface.js';
|
|
25
27
|
export declare const supportedKeys: {
|
|
26
28
|
rsa: typeof RSA;
|
|
27
29
|
ed25519: typeof Ed25519;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,wBAAwB,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,OAAO,EAAE,wBAAwB,EAAE,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,CAAA;AAElB,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,CAAA;AAEtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,eAAO,MAAM,aAAa;;;;CAIzB,CAAA;AAiBD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAEzF;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAMnH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CAc9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAIvF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAc/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAE,GAAG,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAIxF;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAa5F"}
|
package/dist/src/keys/index.js
CHANGED
|
@@ -9,22 +9,21 @@
|
|
|
9
9
|
*
|
|
10
10
|
* For encryption / decryption support, RSA keys should be used.
|
|
11
11
|
*/
|
|
12
|
-
import 'node-forge/lib/asn1.js';
|
|
13
|
-
import 'node-forge/lib/pbe.js';
|
|
14
12
|
import { CodeError } from '@libp2p/interface';
|
|
15
|
-
// @ts-expect-error types are missing
|
|
16
|
-
import forge from 'node-forge/lib/forge.js';
|
|
17
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
18
13
|
import * as Ed25519 from './ed25519-class.js';
|
|
19
14
|
import generateEphemeralKeyPair from './ephemeral-keys.js';
|
|
20
15
|
import { importer } from './importer.js';
|
|
21
16
|
import { keyStretcher } from './key-stretcher.js';
|
|
22
17
|
import * as keysPBM from './keys.js';
|
|
23
18
|
import * as RSA from './rsa-class.js';
|
|
19
|
+
import { importFromPem } from './rsa-utils.js';
|
|
24
20
|
import * as Secp256k1 from './secp256k1-class.js';
|
|
25
21
|
export { keyStretcher };
|
|
26
22
|
export { generateEphemeralKeyPair };
|
|
27
23
|
export { keysPBM };
|
|
24
|
+
export { RsaPrivateKey, RsaPublicKey, MAX_RSA_KEY_SIZE } from './rsa-class.js';
|
|
25
|
+
export { Ed25519PrivateKey, Ed25519PublicKey } from './ed25519-class.js';
|
|
26
|
+
export { Secp256k1PrivateKey, Secp256k1PublicKey } from './secp256k1-class.js';
|
|
28
27
|
export const supportedKeys = {
|
|
29
28
|
rsa: RSA,
|
|
30
29
|
ed25519: Ed25519,
|
|
@@ -124,13 +123,9 @@ export async function importKey(encryptedKey, password) {
|
|
|
124
123
|
catch (_) {
|
|
125
124
|
// Ignore and try the old pem decrypt
|
|
126
125
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (key === null) {
|
|
130
|
-
throw new CodeError('Cannot read the key, most likely the password is wrong or not a RSA key', 'ERR_CANNOT_DECRYPT_PEM');
|
|
126
|
+
if (!encryptedKey.includes('BEGIN')) {
|
|
127
|
+
throw new CodeError('Encrypted key was not a libp2p-key or a PEM file', 'ERR_INVALID_IMPORT_FORMAT');
|
|
131
128
|
}
|
|
132
|
-
|
|
133
|
-
der = uint8ArrayFromString(der.getBytes(), 'ascii');
|
|
134
|
-
return supportedKeys.rsa.unmarshalRsaPrivateKey(der);
|
|
129
|
+
return importFromPem(encryptedKey, password);
|
|
135
130
|
}
|
|
136
131
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,wBAAwB,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,OAAO,EAAE,wBAAwB,EAAE,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,CAAA;AAIlB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAG9E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;CACrB,CAAA;AAED,SAAS,cAAc,CAAE,IAAY;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxD,OAAO,IAAI,SAAS,CAAC,mCAAmC,IAAI,aAAa,SAAS,EAAE,EAAE,0BAA0B,CAAC,CAAA;AACnH,CAAC;AAED,SAAS,SAAS,CAAE,IAAY;IAC9B,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAEzB,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACjE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,IAAc,EAAE,IAAa;IAClE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAE,IAAc,EAAE,IAAgB,EAAE,IAAa;IAC5F,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CAAC,2DAA2D,EAAE,qCAAqC,CAAC,CAAA;IACzH,CAAC;IAED,OAAO,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAE,GAAe;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,UAAU,EAAE,CAAA;IAE7C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG;YACtB,OAAO,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACtD,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO;YAC1B,OAAO,aAAa,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;QAC9D,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;YAC5B,OAAO,aAAa,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAA;QAClE;YACE,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;IACnD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAE,GAA0B,EAAE,IAAa;IACzE,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACpC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAC,aAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAE,GAAe;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,UAAU,EAAE,CAAA;IAE7C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG;YACtB,OAAO,aAAa,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QACvD,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO;YAC1B,OAAO,aAAa,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;QAC/D,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;YAC5B,OAAO,aAAa,CAAC,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAA;QACnE;YACE,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAE,GAA0B,EAAE,IAAa;IAC1E,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACpC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAC,aAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAE,YAAoB,EAAE,QAAgB;IACrE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAClD,OAAO,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,qCAAqC;IACvC,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,kDAAkD,EAAE,2BAA2B,CAAC,CAAA;IACtG,CAAC;IAED,OAAO,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -8,7 +8,5 @@ export declare function unmarshalPrivateKey(key: JsonWebKey): Promise<JWKKeyPair
|
|
|
8
8
|
export { randomBytes as getRandomValues };
|
|
9
9
|
export declare function hashAndSign(key: JsonWebKey, msg: Uint8Array | Uint8ArrayList): Promise<Uint8Array>;
|
|
10
10
|
export declare function hashAndVerify(key: JsonWebKey, sig: Uint8Array, msg: Uint8Array | Uint8ArrayList): Promise<boolean>;
|
|
11
|
-
export declare function encrypt(key: JsonWebKey, msg: Uint8Array | Uint8ArrayList): Uint8Array;
|
|
12
|
-
export declare function decrypt(key: JsonWebKey, msg: Uint8Array | Uint8ArrayList): Uint8Array;
|
|
13
11
|
export declare function keySize(jwk: JsonWebKey): number;
|
|
14
12
|
//# sourceMappingURL=rsa-browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsa-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,wBAAsB,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBpE;AAGD,wBAAsB,mBAAmB,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CA0B/E;AAED,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,wBAAsB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBzG;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBzH;AA8BD,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAQhD"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface';
|
|
2
2
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
3
|
-
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
4
3
|
import randomBytes from '../random-bytes.js';
|
|
5
4
|
import webcrypto from '../webcrypto.js';
|
|
6
|
-
import { jwk2pub, jwk2priv } from './jwk2pem.js';
|
|
7
5
|
import * as utils from './rsa-utils.js';
|
|
8
6
|
export { utils };
|
|
9
7
|
export async function generateKey(bits) {
|
|
@@ -73,29 +71,6 @@ async function derivePublicFromPrivate(jwKey) {
|
|
|
73
71
|
hash: { name: 'SHA-256' }
|
|
74
72
|
}, true, ['verify']);
|
|
75
73
|
}
|
|
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(msg instanceof Uint8Array ? msg : msg.subarray(), '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
74
|
export function keySize(jwk) {
|
|
100
75
|
if (jwk.kty !== 'RSA') {
|
|
101
76
|
throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-browser.js","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"rsa-browser.js","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import 'node-forge/lib/sha512.js';
|
|
2
1
|
import type { Multibase } from 'multiformats';
|
|
3
2
|
import type { Uint8ArrayList } from 'uint8arraylist';
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const MAX_RSA_KEY_SIZE = 8192;
|
|
5
4
|
export declare class RsaPublicKey {
|
|
6
5
|
private readonly _key;
|
|
7
6
|
constructor(key: JsonWebKey);
|
|
8
7
|
verify(data: Uint8Array | Uint8ArrayList, sig: Uint8Array): boolean | Promise<boolean>;
|
|
9
8
|
marshal(): Uint8Array;
|
|
10
9
|
get bytes(): Uint8Array;
|
|
11
|
-
encrypt(bytes: Uint8Array | Uint8ArrayList): Uint8Array;
|
|
12
10
|
equals(key: any): boolean | boolean;
|
|
13
11
|
hash(): Uint8Array | Promise<Uint8Array>;
|
|
14
12
|
}
|
|
@@ -19,7 +17,6 @@ export declare class RsaPrivateKey {
|
|
|
19
17
|
genSecret(): Uint8Array;
|
|
20
18
|
sign(message: Uint8Array | Uint8ArrayList): Uint8Array | Promise<Uint8Array>;
|
|
21
19
|
get public(): RsaPublicKey;
|
|
22
|
-
decrypt(bytes: Uint8Array | Uint8ArrayList): Uint8Array;
|
|
23
20
|
marshal(): Uint8Array;
|
|
24
21
|
get bytes(): Uint8Array;
|
|
25
22
|
equals(key: any): boolean;
|
|
@@ -33,7 +30,11 @@ export declare class RsaPrivateKey {
|
|
|
33
30
|
*/
|
|
34
31
|
id(): Promise<string>;
|
|
35
32
|
/**
|
|
36
|
-
* Exports the key
|
|
33
|
+
* Exports the key as libp2p-key - a aes-gcm encrypted value with the key
|
|
34
|
+
* derived from the password.
|
|
35
|
+
*
|
|
36
|
+
* To export it as a password protected PEM file, please use the `exportPEM`
|
|
37
|
+
* function from `@libp2p/rsa`.
|
|
37
38
|
*/
|
|
38
39
|
export(password: string, format?: string): Promise<Multibase<'m'>>;
|
|
39
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-class.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsa-class.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,eAAO,MAAM,gBAAgB,OAAO,CAAA;AAEpC,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;gBAEpB,GAAG,EAAE,UAAU;IAI5B,MAAM,CAAE,IAAI,EAAE,UAAU,GAAG,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO,GAAG,OAAO;IAIpC,IAAI,IAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAS1C;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,IAAK,UAAU;IAIxB,IAAI,CAAE,OAAO,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,IAAI,MAAM,IAAK,YAAY,CAM1B;IAED,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAI1B,IAAI,IAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAUzC;;;;;;OAMG;IACG,EAAE,IAAK,OAAO,CAAC,MAAM,CAAC;IAK5B;;;;;;OAMG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAS5E;AAED,wBAAsB,sBAAsB,CAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAUvF;AAED,wBAAgB,qBAAqB,CAAE,KAAK,EAAE,UAAU,GAAG,YAAY,CAQtE;AAED,wBAAsB,OAAO,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAQtE;AAED,wBAAsB,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAQ3E"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface';
|
|
2
2
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
3
|
-
// @ts-expect-error types are missing
|
|
4
|
-
import forge from 'node-forge/lib/forge.js';
|
|
5
3
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
6
|
-
import 'node-forge/lib/sha512.js';
|
|
7
4
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
8
5
|
import { isPromise } from '../util.js';
|
|
9
6
|
import { exporter } from './exporter.js';
|
|
10
7
|
import * as pbm from './keys.js';
|
|
11
8
|
import * as crypto from './rsa.js';
|
|
12
|
-
export const
|
|
9
|
+
export const MAX_RSA_KEY_SIZE = 8192;
|
|
13
10
|
export class RsaPublicKey {
|
|
14
11
|
_key;
|
|
15
12
|
constructor(key) {
|
|
@@ -27,9 +24,6 @@ export class RsaPublicKey {
|
|
|
27
24
|
Data: this.marshal()
|
|
28
25
|
}).subarray();
|
|
29
26
|
}
|
|
30
|
-
encrypt(bytes) {
|
|
31
|
-
return crypto.encrypt(this._key, bytes);
|
|
32
|
-
}
|
|
33
27
|
equals(key) {
|
|
34
28
|
return uint8ArrayEquals(this.bytes, key.bytes);
|
|
35
29
|
}
|
|
@@ -60,9 +54,6 @@ export class RsaPrivateKey {
|
|
|
60
54
|
}
|
|
61
55
|
return new RsaPublicKey(this._publicKey);
|
|
62
56
|
}
|
|
63
|
-
decrypt(bytes) {
|
|
64
|
-
return crypto.decrypt(this._key, bytes);
|
|
65
|
-
}
|
|
66
57
|
marshal() {
|
|
67
58
|
return crypto.utils.jwkToPkcs1(this._key);
|
|
68
59
|
}
|
|
@@ -94,20 +85,15 @@ export class RsaPrivateKey {
|
|
|
94
85
|
return uint8ArrayToString(hash, 'base58btc');
|
|
95
86
|
}
|
|
96
87
|
/**
|
|
97
|
-
* Exports the key
|
|
88
|
+
* Exports the key as libp2p-key - a aes-gcm encrypted value with the key
|
|
89
|
+
* derived from the password.
|
|
90
|
+
*
|
|
91
|
+
* To export it as a password protected PEM file, please use the `exportPEM`
|
|
92
|
+
* function from `@libp2p/rsa`.
|
|
98
93
|
*/
|
|
99
94
|
async export(password, format = 'pkcs-8') {
|
|
100
95
|
if (format === 'pkcs-8') {
|
|
101
|
-
|
|
102
|
-
const asn1 = forge.asn1.fromDer(buffer);
|
|
103
|
-
const privateKey = forge.pki.privateKeyFromAsn1(asn1);
|
|
104
|
-
const options = {
|
|
105
|
-
algorithm: 'aes256',
|
|
106
|
-
count: 10000,
|
|
107
|
-
saltSize: 128 / 8,
|
|
108
|
-
prfAlgorithm: 'sha512'
|
|
109
|
-
};
|
|
110
|
-
return forge.pki.encryptRsaPrivateKey(privateKey, password, options);
|
|
96
|
+
return crypto.utils.exportToPem(this, password);
|
|
111
97
|
}
|
|
112
98
|
else if (format === 'libp2p-key') {
|
|
113
99
|
return exporter(this.bytes, password);
|
|
@@ -119,7 +105,7 @@ export class RsaPrivateKey {
|
|
|
119
105
|
}
|
|
120
106
|
export async function unmarshalRsaPrivateKey(bytes) {
|
|
121
107
|
const jwk = crypto.utils.pkcs1ToJwk(bytes);
|
|
122
|
-
if (crypto.keySize(jwk) >
|
|
108
|
+
if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {
|
|
123
109
|
throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
|
|
124
110
|
}
|
|
125
111
|
const keys = await crypto.unmarshalPrivateKey(jwk);
|
|
@@ -127,20 +113,20 @@ export async function unmarshalRsaPrivateKey(bytes) {
|
|
|
127
113
|
}
|
|
128
114
|
export function unmarshalRsaPublicKey(bytes) {
|
|
129
115
|
const jwk = crypto.utils.pkixToJwk(bytes);
|
|
130
|
-
if (crypto.keySize(jwk) >
|
|
116
|
+
if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {
|
|
131
117
|
throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
|
|
132
118
|
}
|
|
133
119
|
return new RsaPublicKey(jwk);
|
|
134
120
|
}
|
|
135
121
|
export async function fromJwk(jwk) {
|
|
136
|
-
if (crypto.keySize(jwk) >
|
|
122
|
+
if (crypto.keySize(jwk) > MAX_RSA_KEY_SIZE) {
|
|
137
123
|
throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
|
|
138
124
|
}
|
|
139
125
|
const keys = await crypto.unmarshalPrivateKey(jwk);
|
|
140
126
|
return new RsaPrivateKey(keys.privateKey, keys.publicKey);
|
|
141
127
|
}
|
|
142
128
|
export async function generateKeyPair(bits) {
|
|
143
|
-
if (bits >
|
|
129
|
+
if (bits > MAX_RSA_KEY_SIZE) {
|
|
144
130
|
throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
|
|
145
131
|
}
|
|
146
132
|
const keys = await crypto.generateKey(bits);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-class.js","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,
|
|
1
|
+
{"version":3,"file":"rsa-class.js","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import '
|
|
2
|
-
|
|
1
|
+
import { type RsaPrivateKey } from './rsa-class.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a PKCS#1 in ASN1 DER format to a JWK key
|
|
4
|
+
*/
|
|
3
5
|
export declare function pkcs1ToJwk(bytes: Uint8Array): JsonWebKey;
|
|
6
|
+
/**
|
|
7
|
+
* Convert a JWK key into PKCS#1 in ASN1 DER format
|
|
8
|
+
*/
|
|
4
9
|
export declare function jwkToPkcs1(jwk: JsonWebKey): Uint8Array;
|
|
10
|
+
/**
|
|
11
|
+
* Convert a PKCIX in ASN1 DER format to a JWK key
|
|
12
|
+
*/
|
|
5
13
|
export declare function pkixToJwk(bytes: Uint8Array): JsonWebKey;
|
|
14
|
+
/**
|
|
15
|
+
* Convert a JWK key to PKCIX in ASN1 DER format
|
|
16
|
+
*/
|
|
6
17
|
export declare function jwkToPkix(jwk: JsonWebKey): Uint8Array;
|
|
18
|
+
export declare function exportToPem(privateKey: RsaPrivateKey, password: string): Promise<string>;
|
|
19
|
+
export declare function importFromPem(pem: string, password: string): Promise<RsaPrivateKey>;
|
|
7
20
|
//# sourceMappingURL=rsa-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-utils.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsa-utils.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,gBAAgB,CAAA;AAE3E;;GAEG;AACH,wBAAgB,UAAU,CAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAqBzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAsBvD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAYxD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAgCtD;AA4CD,wBAAsB,WAAW,CAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0H/F;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA2D1F"}
|