@libp2p/crypto 4.1.9 → 5.0.0-1210884ed
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 +4 -5
- package/dist/src/ciphers/aes-gcm.browser.js +1 -1
- package/dist/src/ciphers/aes-gcm.browser.js.map +1 -1
- package/dist/src/ciphers/index.d.ts +2 -0
- package/dist/src/ciphers/index.d.ts.map +1 -0
- package/dist/src/ciphers/index.js +2 -0
- package/dist/src/ciphers/index.js.map +1 -0
- package/dist/src/errors.d.ts +19 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +28 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/hmac/{index-browser.d.ts → index.browser.d.ts} +1 -1
- package/dist/src/hmac/{index-browser.d.ts.map → index.browser.d.ts.map} +1 -1
- package/dist/src/hmac/{index-browser.js → index.browser.js} +2 -2
- package/dist/src/hmac/{index-browser.js.map → index.browser.js.map} +1 -1
- package/dist/src/keys/ecdh/index.browser.d.ts +4 -0
- package/dist/src/keys/ecdh/index.browser.d.ts.map +1 -0
- package/dist/src/keys/{ecdh-browser.js → ecdh/index.browser.js} +13 -11
- package/dist/src/keys/ecdh/index.browser.js.map +1 -0
- package/dist/src/keys/{ecdh.d.ts → ecdh/index.d.ts} +4 -3
- package/dist/src/keys/ecdh/index.d.ts.map +1 -0
- package/dist/src/keys/{ecdh.js → ecdh/index.js} +4 -4
- package/dist/src/keys/ecdh/index.js.map +1 -0
- package/dist/src/keys/ed25519/ed25519.d.ts +23 -0
- package/dist/src/keys/ed25519/ed25519.d.ts.map +1 -0
- package/dist/src/keys/ed25519/ed25519.js +54 -0
- package/dist/src/keys/ed25519/ed25519.js.map +1 -0
- package/dist/src/keys/{ed25519-browser.d.ts → ed25519/index.browser.d.ts} +2 -2
- package/dist/src/keys/ed25519/index.browser.d.ts.map +1 -0
- package/dist/src/keys/{ed25519-browser.js → ed25519/index.browser.js} +1 -1
- package/dist/src/keys/ed25519/index.browser.js.map +1 -0
- package/dist/src/keys/{ed25519.d.ts → ed25519/index.d.ts} +2 -2
- package/dist/src/keys/ed25519/index.d.ts.map +1 -0
- package/dist/src/keys/{ed25519.js → ed25519/index.js} +1 -1
- package/dist/src/keys/ed25519/index.js.map +1 -0
- package/dist/src/keys/ed25519/utils.d.ts +7 -0
- package/dist/src/keys/ed25519/utils.d.ts.map +1 -0
- package/dist/src/keys/ed25519/utils.js +36 -0
- package/dist/src/keys/ed25519/utils.js.map +1 -0
- package/dist/src/keys/ephemeral-keys.d.ts +2 -2
- package/dist/src/keys/ephemeral-keys.d.ts.map +1 -1
- package/dist/src/keys/ephemeral-keys.js +2 -2
- package/dist/src/keys/ephemeral-keys.js.map +1 -1
- package/dist/src/keys/index.d.ts +33 -36
- package/dist/src/keys/index.d.ts.map +1 -1
- package/dist/src/keys/index.js +93 -83
- package/dist/src/keys/index.js.map +1 -1
- package/dist/src/keys/key-stretcher.d.ts.map +1 -1
- package/dist/src/keys/key-stretcher.js +9 -7
- package/dist/src/keys/key-stretcher.js.map +1 -1
- package/dist/src/keys/keys.d.ts +4 -4
- package/dist/src/keys/keys.d.ts.map +1 -1
- package/dist/src/keys/keys.js +21 -15
- package/dist/src/keys/keys.js.map +1 -1
- package/dist/src/keys/rsa/index.browser.d.ts +11 -0
- package/dist/src/keys/rsa/index.browser.d.ts.map +1 -0
- package/dist/src/keys/{rsa-browser.js → rsa/index.browser.js} +10 -39
- package/dist/src/keys/rsa/index.browser.js.map +1 -0
- package/dist/src/keys/rsa/index.d.ts +11 -0
- package/dist/src/keys/rsa/index.d.ts.map +1 -0
- package/dist/src/keys/{rsa.js → rsa/index.js} +8 -22
- package/dist/src/keys/rsa/index.js.map +1 -0
- package/dist/src/keys/rsa/rsa.d.ts +28 -0
- package/dist/src/keys/rsa/rsa.d.ts.map +1 -0
- package/dist/src/keys/rsa/rsa.js +65 -0
- package/dist/src/keys/rsa/rsa.js.map +1 -0
- package/dist/src/keys/rsa/utils.d.ts +34 -0
- package/dist/src/keys/rsa/utils.d.ts.map +1 -0
- package/dist/src/keys/rsa/utils.js +193 -0
- package/dist/src/keys/rsa/utils.js.map +1 -0
- package/dist/src/keys/secp256k1/index.browser.d.ts +10 -0
- package/dist/src/keys/secp256k1/index.browser.d.ts.map +1 -0
- package/dist/src/keys/secp256k1/index.browser.js +41 -0
- package/dist/src/keys/secp256k1/index.browser.js.map +1 -0
- package/dist/src/keys/secp256k1/index.d.ts +10 -0
- package/dist/src/keys/secp256k1/index.d.ts.map +1 -0
- package/dist/src/keys/secp256k1/index.js +47 -0
- package/dist/src/keys/secp256k1/index.js.map +1 -0
- package/dist/src/keys/secp256k1/secp256k1.d.ts +24 -0
- package/dist/src/keys/secp256k1/secp256k1.d.ts.map +1 -0
- package/dist/src/keys/secp256k1/secp256k1.js +53 -0
- package/dist/src/keys/secp256k1/secp256k1.js.map +1 -0
- package/dist/src/keys/secp256k1/utils.d.ts +13 -0
- package/dist/src/keys/secp256k1/utils.d.ts.map +1 -0
- package/dist/src/keys/secp256k1/utils.js +53 -0
- package/dist/src/keys/secp256k1/utils.js.map +1 -0
- package/dist/src/pbkdf2.js +2 -2
- package/dist/src/pbkdf2.js.map +1 -1
- package/dist/src/random-bytes.js +2 -2
- package/dist/src/random-bytes.js.map +1 -1
- package/dist/src/webcrypto/index.d.ts +3 -0
- package/dist/src/webcrypto/index.d.ts.map +1 -0
- package/dist/src/webcrypto/index.js +3 -0
- package/dist/src/webcrypto/index.js.map +1 -0
- package/dist/src/{webcrypto-browser.d.ts → webcrypto/webcrypto.browser.d.ts} +1 -1
- package/dist/src/webcrypto/webcrypto.browser.d.ts.map +1 -0
- package/dist/src/{webcrypto-browser.js → webcrypto/webcrypto.browser.js} +4 -3
- package/dist/src/webcrypto/webcrypto.browser.js.map +1 -0
- package/dist/src/webcrypto/webcrypto.d.ts.map +1 -0
- package/dist/src/webcrypto/webcrypto.js.map +1 -0
- package/package.json +16 -8
- package/src/ciphers/aes-gcm.browser.ts +1 -1
- package/src/ciphers/index.ts +1 -0
- package/src/errors.ts +29 -0
- package/src/hmac/{index-browser.ts → index.browser.ts} +1 -1
- package/src/keys/{ecdh-browser.ts → ecdh/index.browser.ts} +16 -13
- package/src/keys/{ecdh.ts → ecdh/index.ts} +6 -4
- package/src/keys/ed25519/ed25519.ts +68 -0
- package/src/keys/{ed25519-browser.ts → ed25519/index.browser.ts} +1 -1
- package/src/keys/{ed25519.ts → ed25519/index.ts} +1 -1
- package/src/keys/ed25519/utils.ts +42 -0
- package/src/keys/ephemeral-keys.ts +2 -2
- package/src/keys/index.ts +110 -92
- package/src/keys/key-stretcher.ts +15 -8
- package/src/keys/keys.proto +1 -1
- package/src/keys/keys.ts +21 -16
- package/src/keys/{rsa-browser.ts → rsa/index.browser.ts} +10 -56
- package/src/keys/{rsa.ts → rsa/index.ts} +8 -23
- package/src/keys/rsa/rsa.ts +83 -0
- package/src/keys/rsa/utils.ts +235 -0
- package/src/keys/secp256k1/index.browser.ts +45 -0
- package/src/keys/secp256k1/index.ts +51 -0
- package/src/keys/secp256k1/secp256k1.ts +68 -0
- package/src/keys/secp256k1/utils.ts +63 -0
- package/src/pbkdf2.ts +2 -2
- package/src/random-bytes.ts +2 -2
- package/src/webcrypto/index.ts +3 -0
- package/src/webcrypto/webcrypto.browser.ts +23 -0
- package/dist/src/keys/ecdh-browser.d.ts +0 -3
- package/dist/src/keys/ecdh-browser.d.ts.map +0 -1
- package/dist/src/keys/ecdh-browser.js.map +0 -1
- package/dist/src/keys/ecdh.d.ts.map +0 -1
- package/dist/src/keys/ecdh.js.map +0 -1
- package/dist/src/keys/ed25519-browser.d.ts.map +0 -1
- package/dist/src/keys/ed25519-browser.js.map +0 -1
- package/dist/src/keys/ed25519-class.d.ts +0 -42
- package/dist/src/keys/ed25519-class.d.ts.map +0 -1
- package/dist/src/keys/ed25519-class.js +0 -133
- package/dist/src/keys/ed25519-class.js.map +0 -1
- package/dist/src/keys/ed25519.d.ts.map +0 -1
- package/dist/src/keys/ed25519.js.map +0 -1
- package/dist/src/keys/exporter.d.ts +0 -8
- package/dist/src/keys/exporter.d.ts.map +0 -1
- package/dist/src/keys/exporter.js +0 -13
- package/dist/src/keys/exporter.js.map +0 -1
- package/dist/src/keys/importer.d.ts +0 -7
- package/dist/src/keys/importer.d.ts.map +0 -1
- package/dist/src/keys/importer.js +0 -13
- package/dist/src/keys/importer.js.map +0 -1
- package/dist/src/keys/rsa-browser.d.ts +0 -12
- package/dist/src/keys/rsa-browser.d.ts.map +0 -1
- package/dist/src/keys/rsa-browser.js.map +0 -1
- package/dist/src/keys/rsa-class.d.ts +0 -46
- package/dist/src/keys/rsa-class.d.ts.map +0 -1
- package/dist/src/keys/rsa-class.js +0 -135
- package/dist/src/keys/rsa-class.js.map +0 -1
- package/dist/src/keys/rsa-utils.d.ts +0 -20
- package/dist/src/keys/rsa-utils.d.ts.map +0 -1
- package/dist/src/keys/rsa-utils.js +0 -330
- package/dist/src/keys/rsa-utils.js.map +0 -1
- package/dist/src/keys/rsa.d.ts +0 -12
- package/dist/src/keys/rsa.d.ts.map +0 -1
- package/dist/src/keys/rsa.js.map +0 -1
- package/dist/src/keys/secp256k1-browser.d.ts +0 -18
- package/dist/src/keys/secp256k1-browser.d.ts.map +0 -1
- package/dist/src/keys/secp256k1-browser.js +0 -78
- package/dist/src/keys/secp256k1-browser.js.map +0 -1
- package/dist/src/keys/secp256k1-class.d.ts +0 -39
- package/dist/src/keys/secp256k1-class.d.ts.map +0 -1
- package/dist/src/keys/secp256k1-class.js +0 -109
- package/dist/src/keys/secp256k1-class.js.map +0 -1
- package/dist/src/keys/secp256k1.d.ts +0 -18
- package/dist/src/keys/secp256k1.d.ts.map +0 -1
- package/dist/src/keys/secp256k1.js +0 -84
- package/dist/src/keys/secp256k1.js.map +0 -1
- package/dist/src/webcrypto-browser.d.ts.map +0 -1
- package/dist/src/webcrypto-browser.js.map +0 -1
- package/dist/src/webcrypto.d.ts.map +0 -1
- package/dist/src/webcrypto.js.map +0 -1
- package/dist/typedoc-urls.json +0 -40
- package/src/keys/ed25519-class.ts +0 -160
- package/src/keys/exporter.ts +0 -14
- package/src/keys/importer.ts +0 -13
- package/src/keys/rsa-class.ts +0 -172
- package/src/keys/rsa-utils.ts +0 -408
- package/src/keys/secp256k1-browser.ts +0 -87
- package/src/keys/secp256k1-class.ts +0 -133
- package/src/keys/secp256k1.ts +0 -93
- package/src/webcrypto-browser.ts +0 -24
- /package/dist/src/{webcrypto.d.ts → webcrypto/webcrypto.d.ts} +0 -0
- /package/dist/src/{webcrypto.js → webcrypto/webcrypto.js} +0 -0
- /package/src/{webcrypto.ts → webcrypto/webcrypto.ts} +0 -0
package/dist/src/keys/index.d.ts
CHANGED
|
@@ -9,60 +9,57 @@
|
|
|
9
9
|
*
|
|
10
10
|
* For encryption / decryption support, RSA keys should be used.
|
|
11
11
|
*/
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
import * as RSA from './rsa-class.js';
|
|
17
|
-
import * as Secp256k1 from './secp256k1-class.js';
|
|
18
|
-
import type { PrivateKey, PublicKey, KeyType as KeyTypes } from '@libp2p/interface';
|
|
19
|
-
export { keyStretcher };
|
|
20
|
-
export { generateEphemeralKeyPair };
|
|
21
|
-
export { keysPBM };
|
|
22
|
-
export type { KeyTypes };
|
|
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';
|
|
27
|
-
export declare const supportedKeys: {
|
|
28
|
-
rsa: typeof RSA;
|
|
29
|
-
ed25519: typeof Ed25519;
|
|
30
|
-
secp256k1: typeof Secp256k1;
|
|
31
|
-
};
|
|
12
|
+
import type { PrivateKey, PublicKey, KeyType, RSAPrivateKey, Secp256k1PrivateKey, Ed25519PrivateKey, Secp256k1PublicKey, Ed25519PublicKey } from '@libp2p/interface';
|
|
13
|
+
import type { MultihashDigest } from 'multiformats';
|
|
14
|
+
export { generateEphemeralKeyPair } from './ecdh/index.js';
|
|
15
|
+
export { keyStretcher } from './key-stretcher.js';
|
|
32
16
|
/**
|
|
33
17
|
* Generates a keypair of the given type and bitsize
|
|
34
18
|
*/
|
|
35
|
-
export declare function generateKeyPair
|
|
19
|
+
export declare function generateKeyPair(type: 'Ed25519'): Promise<Ed25519PrivateKey>;
|
|
20
|
+
export declare function generateKeyPair(type: 'secp256k1'): Promise<Secp256k1PrivateKey>;
|
|
21
|
+
export declare function generateKeyPair(type: 'RSA', bits?: number): Promise<RSAPrivateKey>;
|
|
22
|
+
export declare function generateKeyPair(type: KeyType, bits?: number): Promise<PrivateKey>;
|
|
36
23
|
/**
|
|
37
|
-
* Generates a keypair of the given type
|
|
24
|
+
* Generates a keypair of the given type from the passed seed. Currently only
|
|
25
|
+
* supports Ed25519 keys.
|
|
38
26
|
*
|
|
39
27
|
* Seed is a 32 byte uint8array
|
|
40
28
|
*/
|
|
41
|
-
export declare function generateKeyPairFromSeed
|
|
29
|
+
export declare function generateKeyPairFromSeed(type: 'Ed25519', seed: Uint8Array): Promise<Ed25519PrivateKey>;
|
|
30
|
+
export declare function generateKeyPairFromSeed<T extends KeyType>(type: T, seed: Uint8Array, bits?: number): Promise<never>;
|
|
42
31
|
/**
|
|
43
32
|
* Converts a protobuf serialized public key into its representative object
|
|
44
33
|
*/
|
|
45
|
-
export declare function
|
|
34
|
+
export declare function publicKeyFromProtobuf(buf: Uint8Array): PublicKey;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a public key from the raw key bytes
|
|
37
|
+
*/
|
|
38
|
+
export declare function publicKeyFromRaw(buf: Uint8Array): PublicKey;
|
|
39
|
+
/**
|
|
40
|
+
* Creates a public key from an identity multihash which contains a protobuf
|
|
41
|
+
* encoded Ed25519 or secp256k1 public key.
|
|
42
|
+
*
|
|
43
|
+
* RSA keys are not supported as in practice we they are not stored in identity
|
|
44
|
+
* multihashes since the hash would be very large.
|
|
45
|
+
*/
|
|
46
|
+
export declare function publicKeyFromMultihash(digest: MultihashDigest<0x0>): Ed25519PublicKey | Secp256k1PublicKey;
|
|
46
47
|
/**
|
|
47
48
|
* Converts a public key object into a protobuf serialized public key
|
|
48
49
|
*/
|
|
49
|
-
export declare function
|
|
50
|
-
bytes: Uint8Array;
|
|
51
|
-
}, type?: string): Uint8Array;
|
|
50
|
+
export declare function publicKeyToProtobuf(key: PublicKey): Uint8Array;
|
|
52
51
|
/**
|
|
53
52
|
* Converts a protobuf serialized private key into its representative object
|
|
54
53
|
*/
|
|
55
|
-
export declare function
|
|
54
|
+
export declare function privateKeyFromProtobuf(buf: Uint8Array): Ed25519PrivateKey | Secp256k1PrivateKey | RSAPrivateKey;
|
|
56
55
|
/**
|
|
57
|
-
*
|
|
56
|
+
* Creates a private key from the raw key bytes. For Ed25519 keys this requires
|
|
57
|
+
* the public key to be appended to the private key otherwise we can't
|
|
58
|
+
* differentiate between Ed25519 and secp256k1 keys as they are the same length.
|
|
58
59
|
*/
|
|
59
|
-
export declare function
|
|
60
|
-
bytes: Uint8Array;
|
|
61
|
-
}, type?: string): Uint8Array;
|
|
60
|
+
export declare function privateKeyFromRaw(buf: Uint8Array): PrivateKey;
|
|
62
61
|
/**
|
|
63
|
-
* Converts
|
|
64
|
-
*
|
|
65
|
-
* Supported formats are 'pem' (RSA only) and 'libp2p-key'.
|
|
62
|
+
* Converts a private key object into a protobuf serialized private key
|
|
66
63
|
*/
|
|
67
|
-
export declare function
|
|
64
|
+
export declare function privateKeyToProtobuf(key: PrivateKey): Uint8Array;
|
|
68
65
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpK,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;GAEG;AACH,wBAAsB,eAAe,CAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AACnF,wBAAsB,eAAe,CAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AACvF,wBAAsB,eAAe,CAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AAC1F,wBAAsB,eAAe,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAiBzF;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC7G,wBAAsB,uBAAuB,CAAE,CAAC,SAAS,OAAO,EAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AAS5H;;GAEG;AACH,wBAAgB,qBAAqB,CAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CAcjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,kBAAkB,CAY3G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,SAAS,GAAG,UAAU,CAK/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,GAAG,EAAE,UAAU,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,aAAa,CAchH;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAQ9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAKjE"}
|
package/dist/src/keys/index.js
CHANGED
|
@@ -9,120 +9,130 @@
|
|
|
9
9
|
*
|
|
10
10
|
* For encryption / decryption support, RSA keys should be used.
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
secp256k1: Secp256k1
|
|
31
|
-
};
|
|
32
|
-
function unsupportedKey(type) {
|
|
33
|
-
const supported = Object.keys(supportedKeys).join(' / ');
|
|
34
|
-
return new CodeError(`invalid or unsupported key type ${type}. Must be ${supported}`, 'ERR_UNSUPPORTED_KEY_TYPE');
|
|
12
|
+
import { UnsupportedKeyTypeError } from '@libp2p/interface';
|
|
13
|
+
import { generateEd25519KeyPair, generateEd25519KeyPairFromSeed, unmarshalEd25519PrivateKey, unmarshalEd25519PublicKey } from './ed25519/utils.js';
|
|
14
|
+
import * as pb from './keys.js';
|
|
15
|
+
import { pkcs1ToRSAPrivateKey, pkixToRSAPublicKey, generateRSAKeyPair } from './rsa/utils.js';
|
|
16
|
+
import { generateSecp256k1KeyPair, unmarshalSecp256k1PrivateKey, unmarshalSecp256k1PublicKey } from './secp256k1/utils.js';
|
|
17
|
+
export { generateEphemeralKeyPair } from './ecdh/index.js';
|
|
18
|
+
export { keyStretcher } from './key-stretcher.js';
|
|
19
|
+
export async function generateKeyPair(type, bits) {
|
|
20
|
+
if (type === 'Ed25519') {
|
|
21
|
+
return generateEd25519KeyPair();
|
|
22
|
+
}
|
|
23
|
+
if (type === 'secp256k1') {
|
|
24
|
+
return generateSecp256k1KeyPair();
|
|
25
|
+
}
|
|
26
|
+
if (type === 'RSA') {
|
|
27
|
+
return generateRSAKeyPair(bits ?? 2048);
|
|
28
|
+
}
|
|
29
|
+
throw new UnsupportedKeyTypeError();
|
|
35
30
|
}
|
|
36
|
-
function
|
|
37
|
-
type
|
|
38
|
-
|
|
39
|
-
return supportedKeys[type];
|
|
31
|
+
export async function generateKeyPairFromSeed(type, seed) {
|
|
32
|
+
if (type !== 'Ed25519') {
|
|
33
|
+
throw new UnsupportedKeyTypeError('Seed key derivation only supported for Ed25519 keys');
|
|
40
34
|
}
|
|
41
|
-
|
|
35
|
+
return generateEd25519KeyPairFromSeed(seed);
|
|
42
36
|
}
|
|
43
37
|
/**
|
|
44
|
-
*
|
|
38
|
+
* Converts a protobuf serialized public key into its representative object
|
|
45
39
|
*/
|
|
46
|
-
export
|
|
47
|
-
|
|
40
|
+
export function publicKeyFromProtobuf(buf) {
|
|
41
|
+
const { Type, Data } = pb.PublicKey.decode(buf);
|
|
42
|
+
const data = Data ?? new Uint8Array();
|
|
43
|
+
switch (Type) {
|
|
44
|
+
case pb.KeyType.RSA:
|
|
45
|
+
return pkixToRSAPublicKey(data);
|
|
46
|
+
case pb.KeyType.Ed25519:
|
|
47
|
+
return unmarshalEd25519PublicKey(data);
|
|
48
|
+
case pb.KeyType.secp256k1:
|
|
49
|
+
return unmarshalSecp256k1PublicKey(data);
|
|
50
|
+
default:
|
|
51
|
+
throw new UnsupportedKeyTypeError();
|
|
52
|
+
}
|
|
48
53
|
}
|
|
49
54
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* Seed is a 32 byte uint8array
|
|
55
|
+
* Creates a public key from the raw key bytes
|
|
53
56
|
*/
|
|
54
|
-
export
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
+
export function publicKeyFromRaw(buf) {
|
|
58
|
+
if (buf.byteLength === 32) {
|
|
59
|
+
return unmarshalEd25519PublicKey(buf);
|
|
60
|
+
}
|
|
61
|
+
else if (buf.byteLength === 33) {
|
|
62
|
+
return unmarshalSecp256k1PublicKey(buf);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return pkixToRSAPublicKey(buf);
|
|
57
66
|
}
|
|
58
|
-
return Ed25519.generateKeyPairFromSeed(seed);
|
|
59
67
|
}
|
|
60
68
|
/**
|
|
61
|
-
*
|
|
69
|
+
* Creates a public key from an identity multihash which contains a protobuf
|
|
70
|
+
* encoded Ed25519 or secp256k1 public key.
|
|
71
|
+
*
|
|
72
|
+
* RSA keys are not supported as in practice we they are not stored in identity
|
|
73
|
+
* multihashes since the hash would be very large.
|
|
62
74
|
*/
|
|
63
|
-
export function
|
|
64
|
-
const
|
|
65
|
-
const data =
|
|
66
|
-
switch (
|
|
67
|
-
case
|
|
68
|
-
return
|
|
69
|
-
case
|
|
70
|
-
return
|
|
71
|
-
case keysPBM.KeyType.Secp256k1:
|
|
72
|
-
return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data);
|
|
75
|
+
export function publicKeyFromMultihash(digest) {
|
|
76
|
+
const { Type, Data } = pb.PublicKey.decode(digest.digest);
|
|
77
|
+
const data = Data ?? new Uint8Array();
|
|
78
|
+
switch (Type) {
|
|
79
|
+
case pb.KeyType.Ed25519:
|
|
80
|
+
return unmarshalEd25519PublicKey(data);
|
|
81
|
+
case pb.KeyType.secp256k1:
|
|
82
|
+
return unmarshalSecp256k1PublicKey(data);
|
|
73
83
|
default:
|
|
74
|
-
throw
|
|
84
|
+
throw new UnsupportedKeyTypeError();
|
|
75
85
|
}
|
|
76
86
|
}
|
|
77
87
|
/**
|
|
78
88
|
* Converts a public key object into a protobuf serialized public key
|
|
79
89
|
*/
|
|
80
|
-
export function
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
export function publicKeyToProtobuf(key) {
|
|
91
|
+
return pb.PublicKey.encode({
|
|
92
|
+
Type: pb.KeyType[key.type],
|
|
93
|
+
Data: key.raw
|
|
94
|
+
});
|
|
84
95
|
}
|
|
85
96
|
/**
|
|
86
97
|
* Converts a protobuf serialized private key into its representative object
|
|
87
98
|
*/
|
|
88
|
-
export
|
|
89
|
-
const decoded =
|
|
99
|
+
export function privateKeyFromProtobuf(buf) {
|
|
100
|
+
const decoded = pb.PrivateKey.decode(buf);
|
|
90
101
|
const data = decoded.Data ?? new Uint8Array();
|
|
91
102
|
switch (decoded.Type) {
|
|
92
|
-
case
|
|
93
|
-
return
|
|
94
|
-
case
|
|
95
|
-
return
|
|
96
|
-
case
|
|
97
|
-
return
|
|
103
|
+
case pb.KeyType.RSA:
|
|
104
|
+
return pkcs1ToRSAPrivateKey(data);
|
|
105
|
+
case pb.KeyType.Ed25519:
|
|
106
|
+
return unmarshalEd25519PrivateKey(data);
|
|
107
|
+
case pb.KeyType.secp256k1:
|
|
108
|
+
return unmarshalSecp256k1PrivateKey(data);
|
|
98
109
|
default:
|
|
99
|
-
throw
|
|
110
|
+
throw new UnsupportedKeyTypeError();
|
|
100
111
|
}
|
|
101
112
|
}
|
|
102
113
|
/**
|
|
103
|
-
*
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
type = (type ?? 'rsa').toLowerCase();
|
|
107
|
-
typeToKey(type); // check type
|
|
108
|
-
return key.bytes;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Converts an exported private key into its representative object.
|
|
112
|
-
*
|
|
113
|
-
* Supported formats are 'pem' (RSA only) and 'libp2p-key'.
|
|
114
|
+
* Creates a private key from the raw key bytes. For Ed25519 keys this requires
|
|
115
|
+
* the public key to be appended to the private key otherwise we can't
|
|
116
|
+
* differentiate between Ed25519 and secp256k1 keys as they are the same length.
|
|
114
117
|
*/
|
|
115
|
-
export
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return await unmarshalPrivateKey(key);
|
|
118
|
+
export function privateKeyFromRaw(buf) {
|
|
119
|
+
if (buf.byteLength === 64) {
|
|
120
|
+
return unmarshalEd25519PrivateKey(buf);
|
|
119
121
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
else if (buf.byteLength === 32) {
|
|
123
|
+
return unmarshalSecp256k1PrivateKey(buf);
|
|
122
124
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
+
else {
|
|
126
|
+
return pkcs1ToRSAPrivateKey(buf);
|
|
125
127
|
}
|
|
126
|
-
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Converts a private key object into a protobuf serialized private key
|
|
131
|
+
*/
|
|
132
|
+
export function privateKeyToProtobuf(key) {
|
|
133
|
+
return pb.PrivateKey.encode({
|
|
134
|
+
Type: pb.KeyType[key.type],
|
|
135
|
+
Data: key.raw
|
|
136
|
+
});
|
|
127
137
|
}
|
|
128
138
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-stretcher.d.ts","sourceRoot":"","sources":["../../../src/keys/key-stretcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"key-stretcher.d.ts","sourceRoot":"","sources":["../../../src/keys/key-stretcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAsBlE;;;GAGG;AACH,wBAAsB,YAAY,CAAE,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAsDpK"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InvalidParametersError } from '@libp2p/interface';
|
|
2
2
|
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
|
3
3
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
4
4
|
import * as hmac from '../hmac/index.js';
|
|
@@ -21,14 +21,16 @@ const cipherMap = {
|
|
|
21
21
|
* (myIV, theirIV, myCipherKey, theirCipherKey, myMACKey, theirMACKey)
|
|
22
22
|
*/
|
|
23
23
|
export async function keyStretcher(cipherType, hash, secret) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
if (cipherType !== 'AES-128' && cipherType !== 'AES-256' && cipherType !== 'Blowfish') {
|
|
25
|
+
throw new InvalidParametersError('Cipher type was missing or unsupported');
|
|
26
|
+
}
|
|
27
|
+
if (hash !== 'SHA1' && hash !== 'SHA256' && hash !== 'SHA512') {
|
|
28
|
+
throw new InvalidParametersError('Hash type was missing or unsupported');
|
|
28
29
|
}
|
|
29
|
-
if (
|
|
30
|
-
throw new
|
|
30
|
+
if (secret == null || !(secret instanceof Uint8Array)) {
|
|
31
|
+
throw new InvalidParametersError('Secret was missing or an incorrect type');
|
|
31
32
|
}
|
|
33
|
+
const cipher = cipherMap[cipherType];
|
|
32
34
|
const cipherKeySize = cipher.keySize;
|
|
33
35
|
const ivSize = cipher.ivSize;
|
|
34
36
|
const hmacKeySize = 20;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-stretcher.js","sourceRoot":"","sources":["../../../src/keys/key-stretcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"key-stretcher.js","sourceRoot":"","sources":["../../../src/keys/key-stretcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAQxC,MAAM,SAAS,GAA2B;IACxC,SAAS,EAAE;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;KACZ;IACD,SAAS,EAAE;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;KACZ;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,EAAE;KACZ;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAE,UAA8C,EAAE,IAAkC,EAAE,MAAkB;IACxI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QACtF,MAAM,IAAI,sBAAsB,CAAC,wCAAwC,CAAC,CAAA;IAC5E,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,sBAAsB,CAAC,sCAAsC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,sBAAsB,CAAC,yCAAyC,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACpC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,MAAM,IAAI,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAA;IAClD,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC,CAAA;IAE/D,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAE5B,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,OAAO,CAAC,GAAG,YAAY,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAA;QAEnB,IAAI,CAAC,GAAG,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,IAAI,GAAG,YAAY,GAAG,CAAC,CAAA;QACzB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,CAAC,IAAI,IAAI,CAAA;QACT,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,GAAG,CAAC,CAAA;IAC7B,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAG,CAAC,GAAe,EAAe,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;QACvD,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;KAC7C,CAAC,CAAA;IAEF,OAAO;QACL,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC;QACjB,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC;KAClB,CAAA;AACH,CAAC"}
|
package/dist/src/keys/keys.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Codec, type DecodeOptions } from 'protons-runtime';
|
|
2
2
|
import type { Uint8ArrayList } from 'uint8arraylist';
|
|
3
3
|
export declare enum KeyType {
|
|
4
4
|
RSA = "RSA",
|
|
5
5
|
Ed25519 = "Ed25519",
|
|
6
|
-
|
|
6
|
+
secp256k1 = "secp256k1"
|
|
7
7
|
}
|
|
8
8
|
export declare namespace KeyType {
|
|
9
9
|
const codec: () => Codec<KeyType>;
|
|
@@ -15,7 +15,7 @@ export interface PublicKey {
|
|
|
15
15
|
export declare namespace PublicKey {
|
|
16
16
|
const codec: () => Codec<PublicKey>;
|
|
17
17
|
const encode: (obj: Partial<PublicKey>) => Uint8Array;
|
|
18
|
-
const decode: (buf: Uint8Array | Uint8ArrayList) => PublicKey;
|
|
18
|
+
const decode: (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PublicKey>) => PublicKey;
|
|
19
19
|
}
|
|
20
20
|
export interface PrivateKey {
|
|
21
21
|
Type?: KeyType;
|
|
@@ -24,6 +24,6 @@ export interface PrivateKey {
|
|
|
24
24
|
export declare namespace PrivateKey {
|
|
25
25
|
const codec: () => Codec<PrivateKey>;
|
|
26
26
|
const encode: (obj: Partial<PrivateKey>) => Uint8Array;
|
|
27
|
-
const decode: (buf: Uint8Array | Uint8ArrayList) => PrivateKey;
|
|
27
|
+
const decode: (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PrivateKey>) => PrivateKey;
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/keys/keys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/keys/keys.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,KAAK,EAAiB,KAAK,aAAa,EAAuC,MAAM,iBAAiB,CAAA;AACpH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,oBAAY,OAAO;IACjB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAQD,yBAAiB,OAAO,CAAC;IAChB,MAAM,KAAK,QAAO,MAAM,OAAO,CAErC,CAAA;CACF;AACD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,yBAAiB,SAAS,CAAC;IAGlB,MAAM,KAAK,QAAO,MAAM,SAAS,CAiDvC,CAAA;IAEM,MAAM,MAAM,QAAS,QAAQ,SAAS,CAAC,KAAG,UAEhD,CAAA;IAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,SAAS,cAAc,SAAS,CAAC,KAAG,SAE1F,CAAA;CACF;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,yBAAiB,UAAU,CAAC;IAGnB,MAAM,KAAK,QAAO,MAAM,UAAU,CAiDxC,CAAA;IAEM,MAAM,MAAM,QAAS,QAAQ,UAAU,CAAC,KAAG,UAEjD,CAAA;IAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,SAAS,cAAc,UAAU,CAAC,KAAG,UAE3F,CAAA;CACF"}
|
package/dist/src/keys/keys.js
CHANGED
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-namespace */
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-empty-interface */
|
|
6
|
-
import {
|
|
6
|
+
import { decodeMessage, encodeMessage, enumeration, message } from 'protons-runtime';
|
|
7
7
|
export var KeyType;
|
|
8
8
|
(function (KeyType) {
|
|
9
9
|
KeyType["RSA"] = "RSA";
|
|
10
10
|
KeyType["Ed25519"] = "Ed25519";
|
|
11
|
-
KeyType["
|
|
11
|
+
KeyType["secp256k1"] = "secp256k1";
|
|
12
12
|
})(KeyType || (KeyType = {}));
|
|
13
13
|
var __KeyTypeValues;
|
|
14
14
|
(function (__KeyTypeValues) {
|
|
15
15
|
__KeyTypeValues[__KeyTypeValues["RSA"] = 0] = "RSA";
|
|
16
16
|
__KeyTypeValues[__KeyTypeValues["Ed25519"] = 1] = "Ed25519";
|
|
17
|
-
__KeyTypeValues[__KeyTypeValues["
|
|
17
|
+
__KeyTypeValues[__KeyTypeValues["secp256k1"] = 2] = "secp256k1";
|
|
18
18
|
})(__KeyTypeValues || (__KeyTypeValues = {}));
|
|
19
19
|
(function (KeyType) {
|
|
20
20
|
KeyType.codec = () => {
|
|
@@ -41,21 +41,24 @@ export var PublicKey;
|
|
|
41
41
|
if (opts.lengthDelimited !== false) {
|
|
42
42
|
w.ldelim();
|
|
43
43
|
}
|
|
44
|
-
}, (reader, length) => {
|
|
44
|
+
}, (reader, length, opts = {}) => {
|
|
45
45
|
const obj = {};
|
|
46
46
|
const end = length == null ? reader.len : reader.pos + length;
|
|
47
47
|
while (reader.pos < end) {
|
|
48
48
|
const tag = reader.uint32();
|
|
49
49
|
switch (tag >>> 3) {
|
|
50
|
-
case 1:
|
|
50
|
+
case 1: {
|
|
51
51
|
obj.Type = KeyType.codec().decode(reader);
|
|
52
52
|
break;
|
|
53
|
-
|
|
53
|
+
}
|
|
54
|
+
case 2: {
|
|
54
55
|
obj.Data = reader.bytes();
|
|
55
56
|
break;
|
|
56
|
-
|
|
57
|
+
}
|
|
58
|
+
default: {
|
|
57
59
|
reader.skipType(tag & 7);
|
|
58
60
|
break;
|
|
61
|
+
}
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
return obj;
|
|
@@ -66,8 +69,8 @@ export var PublicKey;
|
|
|
66
69
|
PublicKey.encode = (obj) => {
|
|
67
70
|
return encodeMessage(obj, PublicKey.codec());
|
|
68
71
|
};
|
|
69
|
-
PublicKey.decode = (buf) => {
|
|
70
|
-
return decodeMessage(buf, PublicKey.codec());
|
|
72
|
+
PublicKey.decode = (buf, opts) => {
|
|
73
|
+
return decodeMessage(buf, PublicKey.codec(), opts);
|
|
71
74
|
};
|
|
72
75
|
})(PublicKey || (PublicKey = {}));
|
|
73
76
|
export var PrivateKey;
|
|
@@ -90,21 +93,24 @@ export var PrivateKey;
|
|
|
90
93
|
if (opts.lengthDelimited !== false) {
|
|
91
94
|
w.ldelim();
|
|
92
95
|
}
|
|
93
|
-
}, (reader, length) => {
|
|
96
|
+
}, (reader, length, opts = {}) => {
|
|
94
97
|
const obj = {};
|
|
95
98
|
const end = length == null ? reader.len : reader.pos + length;
|
|
96
99
|
while (reader.pos < end) {
|
|
97
100
|
const tag = reader.uint32();
|
|
98
101
|
switch (tag >>> 3) {
|
|
99
|
-
case 1:
|
|
102
|
+
case 1: {
|
|
100
103
|
obj.Type = KeyType.codec().decode(reader);
|
|
101
104
|
break;
|
|
102
|
-
|
|
105
|
+
}
|
|
106
|
+
case 2: {
|
|
103
107
|
obj.Data = reader.bytes();
|
|
104
108
|
break;
|
|
105
|
-
|
|
109
|
+
}
|
|
110
|
+
default: {
|
|
106
111
|
reader.skipType(tag & 7);
|
|
107
112
|
break;
|
|
113
|
+
}
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
return obj;
|
|
@@ -115,8 +121,8 @@ export var PrivateKey;
|
|
|
115
121
|
PrivateKey.encode = (obj) => {
|
|
116
122
|
return encodeMessage(obj, PrivateKey.codec());
|
|
117
123
|
};
|
|
118
|
-
PrivateKey.decode = (buf) => {
|
|
119
|
-
return decodeMessage(buf, PrivateKey.codec());
|
|
124
|
+
PrivateKey.decode = (buf, opts) => {
|
|
125
|
+
return decodeMessage(buf, PrivateKey.codec(), opts);
|
|
120
126
|
};
|
|
121
127
|
})(PrivateKey || (PrivateKey = {}));
|
|
122
128
|
//# sourceMappingURL=keys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/keys/keys.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,+BAA+B;AAC/B,oDAAoD;AACpD,8EAA8E;AAC9E,0DAA0D;AAE1D,OAAO,
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/keys/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import randomBytes from '../../random-bytes.js';
|
|
2
|
+
import * as utils from './utils.js';
|
|
3
|
+
import type { JWKKeyPair } from '../interface.js';
|
|
4
|
+
import type { Uint8ArrayList } from 'uint8arraylist';
|
|
5
|
+
export { utils };
|
|
6
|
+
export declare function generateRSAKey(bits: number): Promise<JWKKeyPair>;
|
|
7
|
+
export { randomBytes as getRandomValues };
|
|
8
|
+
export declare function hashAndSign(key: JsonWebKey, msg: Uint8Array | Uint8ArrayList): Promise<Uint8Array>;
|
|
9
|
+
export declare function hashAndVerify(key: JsonWebKey, sig: Uint8Array, msg: Uint8Array | Uint8ArrayList): Promise<boolean>;
|
|
10
|
+
export declare function rsaKeySize(jwk: JsonWebKey): number;
|
|
11
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../../../src/keys/rsa/index.browser.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,wBAAsB,cAAc,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBvE;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;AAaD,wBAAgB,UAAU,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAQnD"}
|