@libp2p/crypto 5.0.15 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/src/keys/ecdsa/ecdsa.d.ts +27 -0
  3. package/dist/src/keys/ecdsa/ecdsa.d.ts.map +1 -0
  4. package/dist/src/keys/ecdsa/ecdsa.js +72 -0
  5. package/dist/src/keys/ecdsa/ecdsa.js.map +1 -0
  6. package/dist/src/keys/ecdsa/index.d.ts +10 -0
  7. package/dist/src/keys/ecdsa/index.d.ts.map +1 -0
  8. package/dist/src/keys/ecdsa/index.js +39 -0
  9. package/dist/src/keys/ecdsa/index.js.map +1 -0
  10. package/dist/src/keys/ecdsa/utils.d.ts +11 -0
  11. package/dist/src/keys/ecdsa/utils.d.ts.map +1 -0
  12. package/dist/src/keys/ecdsa/utils.js +165 -0
  13. package/dist/src/keys/ecdsa/utils.js.map +1 -0
  14. package/dist/src/keys/index.d.ts +13 -3
  15. package/dist/src/keys/index.d.ts.map +1 -1
  16. package/dist/src/keys/index.js +101 -11
  17. package/dist/src/keys/index.js.map +1 -1
  18. package/dist/src/keys/keys.d.ts +2 -1
  19. package/dist/src/keys/keys.d.ts.map +1 -1
  20. package/dist/src/keys/keys.js +2 -0
  21. package/dist/src/keys/keys.js.map +1 -1
  22. package/dist/src/keys/rsa/der.d.ts +2 -1
  23. package/dist/src/keys/rsa/der.d.ts.map +1 -1
  24. package/dist/src/keys/rsa/der.js +53 -10
  25. package/dist/src/keys/rsa/der.js.map +1 -1
  26. package/dist/src/keys/rsa/index.browser.d.ts +1 -0
  27. package/dist/src/keys/rsa/index.browser.d.ts.map +1 -1
  28. package/dist/src/keys/rsa/index.browser.js +1 -0
  29. package/dist/src/keys/rsa/index.browser.js.map +1 -1
  30. package/dist/src/keys/rsa/index.d.ts +1 -0
  31. package/dist/src/keys/rsa/index.d.ts.map +1 -1
  32. package/dist/src/keys/rsa/index.js +1 -0
  33. package/dist/src/keys/rsa/index.js.map +1 -1
  34. package/dist/src/keys/rsa/rsa.d.ts +4 -4
  35. package/dist/src/keys/rsa/rsa.d.ts.map +1 -1
  36. package/dist/src/keys/rsa/rsa.js +10 -10
  37. package/dist/src/keys/rsa/rsa.js.map +1 -1
  38. package/dist/src/keys/rsa/utils.d.ts +12 -2
  39. package/dist/src/keys/rsa/utils.d.ts.map +1 -1
  40. package/dist/src/keys/rsa/utils.js +41 -16
  41. package/dist/src/keys/rsa/utils.js.map +1 -1
  42. package/dist/src/keys/secp256k1/index.browser.d.ts +4 -0
  43. package/dist/src/keys/secp256k1/index.browser.d.ts.map +1 -1
  44. package/dist/src/keys/secp256k1/index.browser.js +4 -0
  45. package/dist/src/keys/secp256k1/index.browser.js.map +1 -1
  46. package/dist/src/keys/secp256k1/index.d.ts +4 -0
  47. package/dist/src/keys/secp256k1/index.d.ts.map +1 -1
  48. package/dist/src/keys/secp256k1/index.js +4 -0
  49. package/dist/src/keys/secp256k1/index.js.map +1 -1
  50. package/dist/typedoc-urls.json +4 -0
  51. package/package.json +2 -2
  52. package/src/keys/ecdsa/ecdsa.ts +91 -0
  53. package/src/keys/ecdsa/index.ts +50 -0
  54. package/src/keys/ecdsa/utils.ts +212 -0
  55. package/src/keys/index.ts +132 -15
  56. package/src/keys/keys.proto +1 -0
  57. package/src/keys/keys.ts +4 -2
  58. package/src/keys/rsa/der.ts +68 -11
  59. package/src/keys/rsa/index.browser.ts +1 -0
  60. package/src/keys/rsa/index.ts +2 -0
  61. package/src/keys/rsa/rsa.ts +10 -10
  62. package/src/keys/rsa/utils.ts +48 -16
  63. package/src/keys/secp256k1/index.browser.ts +6 -0
  64. package/src/keys/secp256k1/index.ts +6 -0
@@ -0,0 +1,72 @@
1
+ import { base58btc } from 'multiformats/bases/base58';
2
+ import { CID } from 'multiformats/cid';
3
+ import { identity } from 'multiformats/hashes/identity';
4
+ import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
5
+ import { publicKeyToProtobuf } from '../index.js';
6
+ import { privateKeyToPKIMessage, publicKeyToPKIMessage } from './utils.js';
7
+ import { hashAndVerify, hashAndSign } from './index.js';
8
+ export class ECDSAPublicKey {
9
+ type = 'ECDSA';
10
+ jwk;
11
+ _raw;
12
+ constructor(jwk) {
13
+ this.jwk = jwk;
14
+ }
15
+ get raw() {
16
+ if (this._raw == null) {
17
+ this._raw = publicKeyToPKIMessage(this.jwk);
18
+ }
19
+ return this._raw;
20
+ }
21
+ toMultihash() {
22
+ return identity.digest(publicKeyToProtobuf(this));
23
+ }
24
+ toCID() {
25
+ return CID.createV1(114, this.toMultihash());
26
+ }
27
+ toString() {
28
+ return base58btc.encode(this.toMultihash().bytes).substring(1);
29
+ }
30
+ equals(key) {
31
+ if (key == null || !(key.raw instanceof Uint8Array)) {
32
+ return false;
33
+ }
34
+ return uint8ArrayEquals(this.raw, key.raw);
35
+ }
36
+ async verify(data, sig) {
37
+ return hashAndVerify(this.jwk, sig, data);
38
+ }
39
+ }
40
+ export class ECDSAPrivateKey {
41
+ type = 'ECDSA';
42
+ jwk;
43
+ publicKey;
44
+ _raw;
45
+ constructor(jwk) {
46
+ this.jwk = jwk;
47
+ this.publicKey = new ECDSAPublicKey({
48
+ crv: jwk.crv,
49
+ ext: jwk.ext,
50
+ key_ops: ['verify'],
51
+ kty: 'EC',
52
+ x: jwk.x,
53
+ y: jwk.y
54
+ });
55
+ }
56
+ get raw() {
57
+ if (this._raw == null) {
58
+ this._raw = privateKeyToPKIMessage(this.jwk);
59
+ }
60
+ return this._raw;
61
+ }
62
+ equals(key) {
63
+ if (key == null || !(key.raw instanceof Uint8Array)) {
64
+ return false;
65
+ }
66
+ return uint8ArrayEquals(this.raw, key.raw);
67
+ }
68
+ async sign(message) {
69
+ return hashAndSign(this.jwk, message);
70
+ }
71
+ }
72
+ //# sourceMappingURL=ecdsa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecdsa.js","sourceRoot":"","sources":["../../../../src/keys/ecdsa/ecdsa.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { JWKKeyPair } from '../interface.js';
2
+ import type { Uint8ArrayList } from 'uint8arraylist';
3
+ export type Curve = 'P-256' | 'P-384' | 'P-521';
4
+ export declare const ECDSA_P_256_OID = "1.2.840.10045.3.1.7";
5
+ export declare const ECDSA_P_384_OID = "1.3.132.0.34";
6
+ export declare const ECDSA_P_521_OID = "1.3.132.0.35";
7
+ export declare function generateECDSAKey(curve?: Curve): Promise<JWKKeyPair>;
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
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/keys/ecdsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAE/C,eAAO,MAAM,eAAe,wBAAwB,CAAA;AACpD,eAAO,MAAM,eAAe,iBAAiB,CAAA;AAC7C,eAAO,MAAM,eAAe,iBAAiB,CAAA;AAE7C,wBAAsB,gBAAgB,CAAE,KAAK,GAAE,KAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAUnF;AAED,wBAAsB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAczG;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzH"}
@@ -0,0 +1,39 @@
1
+ export const ECDSA_P_256_OID = '1.2.840.10045.3.1.7';
2
+ export const ECDSA_P_384_OID = '1.3.132.0.34';
3
+ export const ECDSA_P_521_OID = '1.3.132.0.35';
4
+ export async function generateECDSAKey(curve = 'P-256') {
5
+ const keyPair = await crypto.subtle.generateKey({
6
+ name: 'ECDSA',
7
+ namedCurve: curve
8
+ }, true, ['sign', 'verify']);
9
+ return {
10
+ publicKey: await crypto.subtle.exportKey('jwk', keyPair.publicKey),
11
+ privateKey: await crypto.subtle.exportKey('jwk', keyPair.privateKey)
12
+ };
13
+ }
14
+ export async function hashAndSign(key, msg) {
15
+ const privateKey = await crypto.subtle.importKey('jwk', key, {
16
+ name: 'ECDSA',
17
+ namedCurve: key.crv ?? 'P-256'
18
+ }, false, ['sign']);
19
+ const signature = await crypto.subtle.sign({
20
+ name: 'ECDSA',
21
+ hash: {
22
+ name: 'SHA-256'
23
+ }
24
+ }, privateKey, msg.subarray());
25
+ return new Uint8Array(signature, 0, signature.byteLength);
26
+ }
27
+ export async function hashAndVerify(key, sig, msg) {
28
+ const publicKey = await crypto.subtle.importKey('jwk', key, {
29
+ name: 'ECDSA',
30
+ namedCurve: key.crv ?? 'P-256'
31
+ }, false, ['verify']);
32
+ return crypto.subtle.verify({
33
+ name: 'ECDSA',
34
+ hash: {
35
+ name: 'SHA-256'
36
+ }
37
+ }, publicKey, sig, msg.subarray());
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/keys/ecdsa/index.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAA;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAA;AAE7C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAE,QAAe,OAAO;IAC5D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QAC9C,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,KAAK;KAClB,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE5B,OAAO;QACL,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;QAClE,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;KACrE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAE,GAAe,EAAE,GAAgC;IAClF,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3D,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,OAAO;KAC/B,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEnB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;SAChB;KACF,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE9B,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAE,GAAe,EAAE,GAAe,EAAE,GAAgC;IACrG,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE;QAC1D,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,OAAO;KAC/B,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAErB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;SAChB;KACF,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Curve } from '../ecdh/index.js';
2
+ import type { ECDSAPublicKey, ECDSAPrivateKey } from '@libp2p/interface';
3
+ export declare function unmarshalECDSAPrivateKey(bytes: Uint8Array): ECDSAPrivateKey;
4
+ export declare function pkiMessageToECDSAPrivateKey(message: any): ECDSAPrivateKey;
5
+ export declare function unmarshalECDSAPublicKey(bytes: Uint8Array): ECDSAPublicKey;
6
+ export declare function pkiMessageToECDSAPublicKey(message: any): ECDSAPublicKey;
7
+ export declare function privateKeyToPKIMessage(privateKey: JsonWebKey): Uint8Array;
8
+ export declare function publicKeyToPKIMessage(publicKey: JsonWebKey): Uint8Array;
9
+ export declare function generateECDSAKeyPair(curve?: Curve): Promise<ECDSAPrivateKey>;
10
+ export declare function ensureECDSAKey(key: Uint8Array, length: number): Uint8Array;
11
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/keys/ecdsa/utils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA+BxE,wBAAgB,wBAAwB,CAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAI5E;AAED,wBAAgB,2BAA2B,CAAE,OAAO,EAAE,GAAG,GAAG,eAAe,CAgD1E;AAED,wBAAgB,uBAAuB,CAAE,KAAK,EAAE,UAAU,GAAG,cAAc,CAI1E;AAED,wBAAgB,0BAA0B,CAAE,OAAO,EAAE,GAAG,GAAG,cAAc,CA2CxE;AAED,wBAAgB,sBAAsB,CAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAiB1E;AAED,wBAAgB,qBAAqB,CAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAgBxE;AAkBD,wBAAsB,oBAAoB,CAAE,KAAK,GAAE,KAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAI5F;AAED,wBAAgB,cAAc,CAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAM3E"}
@@ -0,0 +1,165 @@
1
+ import { InvalidParametersError } from '@libp2p/interface';
2
+ import { Uint8ArrayList } from 'uint8arraylist';
3
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
4
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
5
+ import { decodeDer, encodeBitString, encodeInteger, encodeOctetString, encodeSequence } from '../rsa/der.js';
6
+ import { ECDSAPrivateKey as ECDSAPrivateKeyClass, ECDSAPublicKey as ECDSAPublicKeyClass } from './ecdsa.js';
7
+ import { generateECDSAKey } from './index.js';
8
+ // 1.2.840.10045.3.1.7 prime256v1 (ANSI X9.62 named elliptic curve)
9
+ const OID_256 = Uint8Array.from([0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07]);
10
+ // 1.3.132.0.34 secp384r1 (SECG (Certicom) named elliptic curve)
11
+ const OID_384 = Uint8Array.from([0x06, 0x05, 0x2B, 0x81, 0x04, 0x00, 0x22]);
12
+ // 1.3.132.0.35 secp521r1 (SECG (Certicom) named elliptic curve)
13
+ const OID_521 = Uint8Array.from([0x06, 0x05, 0x2B, 0x81, 0x04, 0x00, 0x23]);
14
+ const P_256_KEY_JWK = {
15
+ ext: true,
16
+ kty: 'EC',
17
+ crv: 'P-256'
18
+ };
19
+ const P_384_KEY_JWK = {
20
+ ext: true,
21
+ kty: 'EC',
22
+ crv: 'P-384'
23
+ };
24
+ const P_521_KEY_JWK = {
25
+ ext: true,
26
+ kty: 'EC',
27
+ crv: 'P-521'
28
+ };
29
+ const P_256_KEY_LENGTH = 32;
30
+ const P_384_KEY_LENGTH = 48;
31
+ const P_521_KEY_LENGTH = 66;
32
+ export function unmarshalECDSAPrivateKey(bytes) {
33
+ const message = decodeDer(bytes);
34
+ return pkiMessageToECDSAPrivateKey(message);
35
+ }
36
+ export function pkiMessageToECDSAPrivateKey(message) {
37
+ const privateKey = message[1];
38
+ const d = uint8ArrayToString(privateKey, 'base64url');
39
+ const coordinates = message[2][1][0];
40
+ const offset = 1;
41
+ let x;
42
+ let y;
43
+ if (privateKey.byteLength === P_256_KEY_LENGTH) {
44
+ x = uint8ArrayToString(coordinates.subarray(offset, offset + P_256_KEY_LENGTH), 'base64url');
45
+ y = uint8ArrayToString(coordinates.subarray(offset + P_256_KEY_LENGTH), 'base64url');
46
+ return new ECDSAPrivateKeyClass({
47
+ ...P_256_KEY_JWK,
48
+ key_ops: ['sign'],
49
+ d,
50
+ x,
51
+ y
52
+ });
53
+ }
54
+ if (privateKey.byteLength === P_384_KEY_LENGTH) {
55
+ x = uint8ArrayToString(coordinates.subarray(offset, offset + P_384_KEY_LENGTH), 'base64url');
56
+ y = uint8ArrayToString(coordinates.subarray(offset + P_384_KEY_LENGTH), 'base64url');
57
+ return new ECDSAPrivateKeyClass({
58
+ ...P_384_KEY_JWK,
59
+ key_ops: ['sign'],
60
+ d,
61
+ x,
62
+ y
63
+ });
64
+ }
65
+ if (privateKey.byteLength === P_521_KEY_LENGTH) {
66
+ x = uint8ArrayToString(coordinates.subarray(offset, offset + P_521_KEY_LENGTH), 'base64url');
67
+ y = uint8ArrayToString(coordinates.subarray(offset + P_521_KEY_LENGTH), 'base64url');
68
+ return new ECDSAPrivateKeyClass({
69
+ ...P_521_KEY_JWK,
70
+ key_ops: ['sign'],
71
+ d,
72
+ x,
73
+ y
74
+ });
75
+ }
76
+ throw new InvalidParametersError(`Private key length was wrong length, got ${privateKey.byteLength}, expected 32, 48 or 66`);
77
+ }
78
+ export function unmarshalECDSAPublicKey(bytes) {
79
+ const message = decodeDer(bytes);
80
+ return pkiMessageToECDSAPublicKey(message);
81
+ }
82
+ export function pkiMessageToECDSAPublicKey(message) {
83
+ const coordinates = message[1][1][0];
84
+ const offset = 1;
85
+ let x;
86
+ let y;
87
+ if (coordinates.byteLength === ((P_256_KEY_LENGTH * 2) + 1)) {
88
+ x = uint8ArrayToString(coordinates.subarray(offset, offset + P_256_KEY_LENGTH), 'base64url');
89
+ y = uint8ArrayToString(coordinates.subarray(offset + P_256_KEY_LENGTH), 'base64url');
90
+ return new ECDSAPublicKeyClass({
91
+ ...P_256_KEY_JWK,
92
+ key_ops: ['verify'],
93
+ x,
94
+ y
95
+ });
96
+ }
97
+ if (coordinates.byteLength === ((P_384_KEY_LENGTH * 2) + 1)) {
98
+ x = uint8ArrayToString(coordinates.subarray(offset, offset + P_384_KEY_LENGTH), 'base64url');
99
+ y = uint8ArrayToString(coordinates.subarray(offset + P_384_KEY_LENGTH), 'base64url');
100
+ return new ECDSAPublicKeyClass({
101
+ ...P_384_KEY_JWK,
102
+ key_ops: ['verify'],
103
+ x,
104
+ y
105
+ });
106
+ }
107
+ if (coordinates.byteLength === ((P_521_KEY_LENGTH * 2) + 1)) {
108
+ x = uint8ArrayToString(coordinates.subarray(offset, offset + P_521_KEY_LENGTH), 'base64url');
109
+ y = uint8ArrayToString(coordinates.subarray(offset + P_521_KEY_LENGTH), 'base64url');
110
+ return new ECDSAPublicKeyClass({
111
+ ...P_521_KEY_JWK,
112
+ key_ops: ['verify'],
113
+ x,
114
+ y
115
+ });
116
+ }
117
+ throw new InvalidParametersError(`coordinates were wrong length, got ${coordinates.byteLength}, expected 65, 97 or 133`);
118
+ }
119
+ export function privateKeyToPKIMessage(privateKey) {
120
+ return encodeSequence([
121
+ encodeInteger(Uint8Array.from([1])), // header
122
+ encodeOctetString(uint8ArrayFromString(privateKey.d ?? '', 'base64url')), // body
123
+ encodeSequence([
124
+ getOID(privateKey.crv)
125
+ ], 0xA0),
126
+ encodeSequence([
127
+ encodeBitString(new Uint8ArrayList(Uint8Array.from([0x04]), uint8ArrayFromString(privateKey.x ?? '', 'base64url'), uint8ArrayFromString(privateKey.y ?? '', 'base64url')))
128
+ ], 0xA1)
129
+ ]).subarray();
130
+ }
131
+ export function publicKeyToPKIMessage(publicKey) {
132
+ return encodeSequence([
133
+ encodeInteger(Uint8Array.from([1])), // header
134
+ encodeSequence([
135
+ getOID(publicKey.crv)
136
+ ], 0xA0),
137
+ encodeSequence([
138
+ encodeBitString(new Uint8ArrayList(Uint8Array.from([0x04]), uint8ArrayFromString(publicKey.x ?? '', 'base64url'), uint8ArrayFromString(publicKey.y ?? '', 'base64url')))
139
+ ], 0xA1)
140
+ ]).subarray();
141
+ }
142
+ function getOID(curve) {
143
+ if (curve === 'P-256') {
144
+ return OID_256;
145
+ }
146
+ if (curve === 'P-384') {
147
+ return OID_384;
148
+ }
149
+ if (curve === 'P-521') {
150
+ return OID_521;
151
+ }
152
+ throw new InvalidParametersError(`Invalid curve ${curve}`);
153
+ }
154
+ export async function generateECDSAKeyPair(curve = 'P-256') {
155
+ const key = await generateECDSAKey(curve);
156
+ return new ECDSAPrivateKeyClass(key.privateKey);
157
+ }
158
+ export function ensureECDSAKey(key, length) {
159
+ key = Uint8Array.from(key ?? []);
160
+ if (key.length !== length) {
161
+ throw new InvalidParametersError(`Key must be a Uint8Array of length ${length}, got ${key.length}`);
162
+ }
163
+ return key;
164
+ }
165
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/keys/ecdsa/utils.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,8 @@
7
7
  *
8
8
  * For encryption / decryption support, RSA keys should be used.
9
9
  */
10
- import type { PrivateKey, PublicKey, KeyType, RSAPrivateKey, Secp256k1PrivateKey, Ed25519PrivateKey, Secp256k1PublicKey, Ed25519PublicKey } from '@libp2p/interface';
10
+ import type { Curve } from './ecdsa/index.js';
11
+ import type { PrivateKey, PublicKey, KeyType, RSAPrivateKey, Secp256k1PrivateKey, Ed25519PrivateKey, Secp256k1PublicKey, Ed25519PublicKey, ECDSAPrivateKey, ECDSAPublicKey } from '@libp2p/interface';
11
12
  import type { MultihashDigest } from 'multiformats';
12
13
  import type { Digest } from 'multiformats/hashes/digest';
13
14
  export { generateEphemeralKeyPair } from './ecdh/index.js';
@@ -19,6 +20,7 @@ export { keyStretcher } from './key-stretcher.js';
19
20
  */
20
21
  export declare function generateKeyPair(type: 'Ed25519'): Promise<Ed25519PrivateKey>;
21
22
  export declare function generateKeyPair(type: 'secp256k1'): Promise<Secp256k1PrivateKey>;
23
+ export declare function generateKeyPair(type: 'ECDSA', curve?: Curve): Promise<ECDSAPrivateKey>;
22
24
  export declare function generateKeyPair(type: 'RSA', bits?: number): Promise<RSAPrivateKey>;
23
25
  export declare function generateKeyPair(type: KeyType, bits?: number): Promise<PrivateKey>;
24
26
  /**
@@ -50,7 +52,7 @@ export declare function publicKeyFromRaw(buf: Uint8Array): PublicKey;
50
52
  * RSA keys are not supported as in practice we they are not stored in identity
51
53
  * multihash since the hash would be very large.
52
54
  */
53
- export declare function publicKeyFromMultihash(digest: MultihashDigest<0x0>): Ed25519PublicKey | Secp256k1PublicKey;
55
+ export declare function publicKeyFromMultihash(digest: MultihashDigest<0x0>): Ed25519PublicKey | Secp256k1PublicKey | ECDSAPublicKey;
54
56
  /**
55
57
  * Converts a public key object into a protobuf serialized public key
56
58
  */
@@ -58,7 +60,7 @@ export declare function publicKeyToProtobuf(key: PublicKey): Uint8Array;
58
60
  /**
59
61
  * Converts a protobuf serialized private key into its representative object
60
62
  */
61
- export declare function privateKeyFromProtobuf(buf: Uint8Array): Ed25519PrivateKey | Secp256k1PrivateKey | RSAPrivateKey;
63
+ export declare function privateKeyFromProtobuf(buf: Uint8Array): Ed25519PrivateKey | Secp256k1PrivateKey | RSAPrivateKey | ECDSAPrivateKey;
62
64
  /**
63
65
  * Creates a private key from the raw key bytes. For Ed25519 keys this requires
64
66
  * the public key to be appended to the private key otherwise we can't
@@ -69,4 +71,12 @@ export declare function privateKeyFromRaw(buf: Uint8Array): PrivateKey;
69
71
  * Converts a private key object into a protobuf serialized private key
70
72
  */
71
73
  export declare function privateKeyToProtobuf(key: PrivateKey): Uint8Array;
74
+ /**
75
+ * Convert a libp2p RSA or ECDSA private key to a WebCrypto CryptoKeyPair
76
+ */
77
+ export declare function privateKeyToCryptoKeyPair(privateKey: PrivateKey): Promise<CryptoKeyPair>;
78
+ /**
79
+ * Convert a RSA or ECDSA WebCrypto CryptoKeyPair to a libp2p private key
80
+ */
81
+ export declare function privateKeyFromCryptoKeyPair(keyPair: CryptoKeyPair): Promise<PrivateKey>;
72
82
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACxF,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;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,SAAS,CAc9F;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACrM,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACxF,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,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAC9F,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;AAqBzF;;;;;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;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,SAAS,CAgB9F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CAmB5D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,CAc5H;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,GAAG,eAAe,CAgBlI;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAmB9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAKjE;AA0BD;;GAEG;AACH,wBAAsB,yBAAyB,CAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CA4B/F;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAc9F"}
@@ -7,10 +7,17 @@
7
7
  *
8
8
  * For encryption / decryption support, RSA keys should be used.
9
9
  */
10
- import { UnsupportedKeyTypeError } from '@libp2p/interface';
10
+ import { InvalidParametersError, UnsupportedKeyTypeError } from '@libp2p/interface';
11
+ import { ECDSAPrivateKey as ECDSAPrivateKeyClass } from './ecdsa/ecdsa.js';
12
+ import { ECDSA_P_256_OID, ECDSA_P_384_OID, ECDSA_P_521_OID } from './ecdsa/index.js';
13
+ import { generateECDSAKeyPair, pkiMessageToECDSAPrivateKey, pkiMessageToECDSAPublicKey, unmarshalECDSAPrivateKey, unmarshalECDSAPublicKey } from './ecdsa/utils.js';
14
+ import { privateKeyLength as ed25519PrivateKeyLength, publicKeyLength as ed25519PublicKeyLength } from './ed25519/index.js';
11
15
  import { generateEd25519KeyPair, generateEd25519KeyPairFromSeed, unmarshalEd25519PrivateKey, unmarshalEd25519PublicKey } from './ed25519/utils.js';
12
16
  import * as pb from './keys.js';
13
- import { pkcs1ToRSAPrivateKey, pkixToRSAPublicKey, generateRSAKeyPair } from './rsa/utils.js';
17
+ import { decodeDer } from './rsa/der.js';
18
+ import { RSAES_PKCS1_V1_5_OID } from './rsa/index.js';
19
+ import { pkcs1ToRSAPrivateKey, pkixToRSAPublicKey, generateRSAKeyPair, pkcs1MessageToRSAPrivateKey, pkixMessageToRSAPublicKey, jwkToRSAPrivateKey } from './rsa/utils.js';
20
+ import { privateKeyLength as secp256k1PrivateKeyLength, publicKeyLength as secp256k1PublicKeyLength } from './secp256k1/index.js';
14
21
  import { generateSecp256k1KeyPair, unmarshalSecp256k1PrivateKey, unmarshalSecp256k1PublicKey } from './secp256k1/utils.js';
15
22
  export { generateEphemeralKeyPair } from './ecdh/index.js';
16
23
  export { keyStretcher } from './key-stretcher.js';
@@ -22,7 +29,10 @@ export async function generateKeyPair(type, bits) {
22
29
  return generateSecp256k1KeyPair();
23
30
  }
24
31
  if (type === 'RSA') {
25
- return generateRSAKeyPair(bits ?? 2048);
32
+ return generateRSAKeyPair(toBits(bits));
33
+ }
34
+ if (type === 'ECDSA') {
35
+ return generateECDSAKeyPair(toCurve(bits));
26
36
  }
27
37
  throw new UnsupportedKeyTypeError();
28
38
  }
@@ -51,6 +61,8 @@ export function publicKeyFromProtobuf(buf, digest) {
51
61
  return unmarshalEd25519PublicKey(data);
52
62
  case pb.KeyType.secp256k1:
53
63
  return unmarshalSecp256k1PublicKey(data);
64
+ case pb.KeyType.ECDSA:
65
+ return unmarshalECDSAPublicKey(data);
54
66
  default:
55
67
  throw new UnsupportedKeyTypeError();
56
68
  }
@@ -59,15 +71,21 @@ export function publicKeyFromProtobuf(buf, digest) {
59
71
  * Creates a public key from the raw key bytes
60
72
  */
61
73
  export function publicKeyFromRaw(buf) {
62
- if (buf.byteLength === 32) {
74
+ if (buf.byteLength === ed25519PublicKeyLength) {
63
75
  return unmarshalEd25519PublicKey(buf);
64
76
  }
65
- else if (buf.byteLength === 33) {
77
+ else if (buf.byteLength === secp256k1PublicKeyLength) {
66
78
  return unmarshalSecp256k1PublicKey(buf);
67
79
  }
68
- else {
69
- return pkixToRSAPublicKey(buf);
80
+ const message = decodeDer(buf);
81
+ const ecdsaOid = message[1]?.[0];
82
+ if (ecdsaOid === ECDSA_P_256_OID || ecdsaOid === ECDSA_P_384_OID || ecdsaOid === ECDSA_P_521_OID) {
83
+ return pkiMessageToECDSAPublicKey(message);
84
+ }
85
+ if (message[0]?.[0] === RSAES_PKCS1_V1_5_OID) {
86
+ return pkixMessageToRSAPublicKey(message, buf);
70
87
  }
88
+ throw new InvalidParametersError('Could not extract public key from raw bytes');
71
89
  }
72
90
  /**
73
91
  * Creates a public key from an identity multihash which contains a protobuf
@@ -84,6 +102,8 @@ export function publicKeyFromMultihash(digest) {
84
102
  return unmarshalEd25519PublicKey(data);
85
103
  case pb.KeyType.secp256k1:
86
104
  return unmarshalSecp256k1PublicKey(data);
105
+ case pb.KeyType.ECDSA:
106
+ return unmarshalECDSAPublicKey(data);
87
107
  default:
88
108
  throw new UnsupportedKeyTypeError();
89
109
  }
@@ -110,6 +130,8 @@ export function privateKeyFromProtobuf(buf) {
110
130
  return unmarshalEd25519PrivateKey(data);
111
131
  case pb.KeyType.secp256k1:
112
132
  return unmarshalSecp256k1PrivateKey(data);
133
+ case pb.KeyType.ECDSA:
134
+ return unmarshalECDSAPrivateKey(data);
113
135
  default:
114
136
  throw new UnsupportedKeyTypeError();
115
137
  }
@@ -120,15 +142,21 @@ export function privateKeyFromProtobuf(buf) {
120
142
  * differentiate between Ed25519 and secp256k1 keys as they are the same length.
121
143
  */
122
144
  export function privateKeyFromRaw(buf) {
123
- if (buf.byteLength === 64) {
145
+ if (buf.byteLength === ed25519PrivateKeyLength) {
124
146
  return unmarshalEd25519PrivateKey(buf);
125
147
  }
126
- else if (buf.byteLength === 32) {
148
+ else if (buf.byteLength === secp256k1PrivateKeyLength) {
127
149
  return unmarshalSecp256k1PrivateKey(buf);
128
150
  }
129
- else {
130
- return pkcs1ToRSAPrivateKey(buf);
151
+ const message = decodeDer(buf);
152
+ const ecdsaOid = message[2]?.[0];
153
+ if (ecdsaOid === ECDSA_P_256_OID || ecdsaOid === ECDSA_P_384_OID || ecdsaOid === ECDSA_P_521_OID) {
154
+ return pkiMessageToECDSAPrivateKey(message);
155
+ }
156
+ if (message.length > 8) {
157
+ return pkcs1MessageToRSAPrivateKey(message);
131
158
  }
159
+ throw new InvalidParametersError('Could not extract private key from raw bytes');
132
160
  }
133
161
  /**
134
162
  * Converts a private key object into a protobuf serialized private key
@@ -139,4 +167,66 @@ export function privateKeyToProtobuf(key) {
139
167
  Data: key.raw
140
168
  });
141
169
  }
170
+ function toBits(bits) {
171
+ if (bits == null) {
172
+ return 2048;
173
+ }
174
+ return parseInt(bits, 10);
175
+ }
176
+ function toCurve(curve) {
177
+ if (curve === 'P-256' || curve == null) {
178
+ return 'P-256';
179
+ }
180
+ if (curve === 'P-384') {
181
+ return 'P-384';
182
+ }
183
+ if (curve === 'P-521') {
184
+ return 'P-521';
185
+ }
186
+ throw new InvalidParametersError('Unsupported curve, should be P-256, P-384 or P-521');
187
+ }
188
+ /**
189
+ * Convert a libp2p RSA or ECDSA private key to a WebCrypto CryptoKeyPair
190
+ */
191
+ export async function privateKeyToCryptoKeyPair(privateKey) {
192
+ if (privateKey.type === 'RSA') {
193
+ return {
194
+ privateKey: await crypto.subtle.importKey('jwk', privateKey.jwk, {
195
+ name: 'RSASSA-PKCS1-v1_5',
196
+ hash: { name: 'SHA-256' }
197
+ }, true, ['sign']),
198
+ publicKey: await crypto.subtle.importKey('jwk', privateKey.publicKey.jwk, {
199
+ name: 'RSASSA-PKCS1-v1_5',
200
+ hash: { name: 'SHA-256' }
201
+ }, true, ['verify'])
202
+ };
203
+ }
204
+ if (privateKey.type === 'ECDSA') {
205
+ return {
206
+ privateKey: await crypto.subtle.importKey('jwk', privateKey.jwk, {
207
+ name: 'ECDSA',
208
+ namedCurve: privateKey.jwk.crv ?? 'P-256'
209
+ }, true, ['sign']),
210
+ publicKey: await crypto.subtle.importKey('jwk', privateKey.publicKey.jwk, {
211
+ name: 'ECDSA',
212
+ namedCurve: privateKey.publicKey.jwk.crv ?? 'P-256'
213
+ }, true, ['verify'])
214
+ };
215
+ }
216
+ throw new InvalidParametersError('Only RSA and ECDSA keys are supported');
217
+ }
218
+ /**
219
+ * Convert a RSA or ECDSA WebCrypto CryptoKeyPair to a libp2p private key
220
+ */
221
+ export async function privateKeyFromCryptoKeyPair(keyPair) {
222
+ if (keyPair.privateKey.algorithm.name === 'RSASSA-PKCS1-v1_5') {
223
+ const jwk = await crypto.subtle.exportKey('jwk', keyPair.privateKey);
224
+ return jwkToRSAPrivateKey(jwk);
225
+ }
226
+ if (keyPair.privateKey.algorithm.name === 'ECDSA') {
227
+ const jwk = await crypto.subtle.exportKey('jwk', keyPair.privateKey);
228
+ return new ECDSAPrivateKeyClass(jwk);
229
+ }
230
+ throw new InvalidParametersError('Only RSA and ECDSA keys are supported');
231
+ }
142
232
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keys/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import type { Uint8ArrayList } from 'uint8arraylist';
3
3
  export declare enum KeyType {
4
4
  RSA = "RSA",
5
5
  Ed25519 = "Ed25519",
6
- secp256k1 = "secp256k1"
6
+ secp256k1 = "secp256k1",
7
+ ECDSA = "ECDSA"
7
8
  }
8
9
  export declare namespace KeyType {
9
10
  const codec: () => Codec<KeyType>;
@@ -1 +1 @@
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"}
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;IACvB,KAAK,UAAU;CAChB;AASD,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"}
@@ -9,12 +9,14 @@ export var KeyType;
9
9
  KeyType["RSA"] = "RSA";
10
10
  KeyType["Ed25519"] = "Ed25519";
11
11
  KeyType["secp256k1"] = "secp256k1";
12
+ KeyType["ECDSA"] = "ECDSA";
12
13
  })(KeyType || (KeyType = {}));
13
14
  var __KeyTypeValues;
14
15
  (function (__KeyTypeValues) {
15
16
  __KeyTypeValues[__KeyTypeValues["RSA"] = 0] = "RSA";
16
17
  __KeyTypeValues[__KeyTypeValues["Ed25519"] = 1] = "Ed25519";
17
18
  __KeyTypeValues[__KeyTypeValues["secp256k1"] = 2] = "secp256k1";
19
+ __KeyTypeValues[__KeyTypeValues["ECDSA"] = 3] = "ECDSA";
18
20
  })(__KeyTypeValues || (__KeyTypeValues = {}));
19
21
  (function (KeyType) {
20
22
  KeyType.codec = () => {