@libp2p/crypto 2.0.0 → 2.0.1

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.
@@ -9,4 +9,5 @@ export declare function hashAndSign(key: JsonWebKey, msg: Uint8Array): Promise<U
9
9
  export declare function hashAndVerify(key: JsonWebKey, sig: Uint8Array, msg: Uint8Array): Promise<boolean>;
10
10
  export declare function encrypt(key: JsonWebKey, msg: Uint8Array): Uint8Array;
11
11
  export declare function decrypt(key: JsonWebKey, msg: Uint8Array): Uint8Array;
12
+ export declare function keySize(jwk: JsonWebKey): number;
12
13
  //# 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":"AAGA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,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,OAAO,CAAC,UAAU,CAAC,CAmBxF;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBxG;AAiDD,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAErE;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAErE"}
1
+ {"version":3,"file":"rsa-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"AAGA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,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,OAAO,CAAC,UAAU,CAAC,CAmBxF;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBxG;AAiDD,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAErE;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAErE;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAQhD"}
@@ -96,4 +96,14 @@ export function encrypt(key, msg) {
96
96
  export function decrypt(key, msg) {
97
97
  return convertKey(key, false, msg, (msg, key) => key.decrypt(msg));
98
98
  }
99
+ export function keySize(jwk) {
100
+ if (jwk.kty !== 'RSA') {
101
+ throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');
102
+ }
103
+ else if (jwk.n == null) {
104
+ throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');
105
+ }
106
+ const bytes = uint8ArrayFromString(jwk.n, 'base64url');
107
+ return bytes.length * 8;
108
+ }
99
109
  //# sourceMappingURL=rsa-browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsa-browser.js","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsa-browser.js","sourceRoot":"","sources":["../../../src/keys/rsa-browser.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import 'node-forge/lib/sha512.js';
2
2
  import type { Multibase } from 'multiformats';
3
+ export declare const MAX_KEY_SIZE = 8192;
3
4
  export declare class RsaPublicKey {
4
5
  private readonly _key;
5
6
  constructor(key: JsonWebKey);
@@ -1 +1 @@
1
- {"version":3,"file":"rsa-class.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"AAKA,OAAO,0BAA0B,CAAA;AAKjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;gBAEpB,GAAG,EAAE,UAAU;IAItB,MAAM,CAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,OAAO,CAAE,KAAK,EAAE,UAAU,GAAG,UAAU;IAIvC,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAIpB,IAAI,IAAK,OAAO,CAAC,UAAU,CAAC;CAKnC;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;IAIlB,IAAI,CAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrD,IAAI,MAAM,IAAK,YAAY,CAM1B;IAED,OAAO,CAAE,KAAK,EAAE,UAAU,GAAG,UAAU;IAIvC,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAIpB,IAAI,IAAK,OAAO,CAAC,UAAU,CAAC;IAMlC;;;;;;OAMG;IACG,EAAE,IAAK,OAAO,CAAC,MAAM,CAAC;IAK5B;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAmB5E;AAED,wBAAsB,sBAAsB,CAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAIvF;AAED,wBAAgB,qBAAqB,CAAE,KAAK,EAAE,UAAU,GAAG,YAAY,CAGtE;AAED,wBAAsB,OAAO,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAGtE;AAED,wBAAsB,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG3E"}
1
+ {"version":3,"file":"rsa-class.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"AAKA,OAAO,0BAA0B,CAAA;AAKjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,eAAO,MAAM,YAAY,OAAO,CAAA;AAEhC,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;gBAEpB,GAAG,EAAE,UAAU;IAItB,MAAM,CAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,OAAO,CAAE,KAAK,EAAE,UAAU,GAAG,UAAU;IAIvC,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAIpB,IAAI,IAAK,OAAO,CAAC,UAAU,CAAC;CAKnC;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;IAIlB,IAAI,CAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrD,IAAI,MAAM,IAAK,YAAY,CAM1B;IAED,OAAO,CAAE,KAAK,EAAE,UAAU,GAAG,UAAU;IAIvC,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAIpB,IAAI,IAAK,OAAO,CAAC,UAAU,CAAC;IAMlC;;;;;;OAMG;IACG,EAAE,IAAK,OAAO,CAAC,MAAM,CAAC;IAK5B;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAmB5E;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"}
@@ -8,6 +8,7 @@ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
8
8
  import { exporter } from './exporter.js';
9
9
  import * as pbm from './keys.js';
10
10
  import * as crypto from './rsa.js';
11
+ export const MAX_KEY_SIZE = 8192;
11
12
  export class RsaPublicKey {
12
13
  _key;
13
14
  constructor(key) {
@@ -111,18 +112,30 @@ export class RsaPrivateKey {
111
112
  }
112
113
  export async function unmarshalRsaPrivateKey(bytes) {
113
114
  const jwk = crypto.utils.pkcs1ToJwk(bytes);
115
+ if (crypto.keySize(jwk) > MAX_KEY_SIZE) {
116
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
117
+ }
114
118
  const keys = await crypto.unmarshalPrivateKey(jwk);
115
119
  return new RsaPrivateKey(keys.privateKey, keys.publicKey);
116
120
  }
117
121
  export function unmarshalRsaPublicKey(bytes) {
118
122
  const jwk = crypto.utils.pkixToJwk(bytes);
123
+ if (crypto.keySize(jwk) > MAX_KEY_SIZE) {
124
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
125
+ }
119
126
  return new RsaPublicKey(jwk);
120
127
  }
121
128
  export async function fromJwk(jwk) {
129
+ if (crypto.keySize(jwk) > MAX_KEY_SIZE) {
130
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
131
+ }
122
132
  const keys = await crypto.unmarshalPrivateKey(jwk);
123
133
  return new RsaPrivateKey(keys.privateKey, keys.publicKey);
124
134
  }
125
135
  export async function generateKeyPair(bits) {
136
+ if (bits > MAX_KEY_SIZE) {
137
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE');
138
+ }
126
139
  const keys = await crypto.generateKey(bits);
127
140
  return new RsaPrivateKey(keys.privateKey, keys.publicKey);
128
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rsa-class.js","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsa-class.js","sourceRoot":"","sources":["../../../src/keys/rsa-class.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,5 @@ export declare function hashAndSign(key: JsonWebKey, msg: Uint8Array): Promise<U
9
9
  export declare function hashAndVerify(key: JsonWebKey, sig: Uint8Array, msg: Uint8Array): Promise<boolean>;
10
10
  export declare function encrypt(key: JsonWebKey, bytes: Uint8Array): Uint8Array;
11
11
  export declare function decrypt(key: JsonWebKey, bytes: Uint8Array): Uint8Array;
12
+ export declare function keySize(jwk: JsonWebKey): number;
12
13
  //# sourceMappingURL=rsa.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa.ts"],"names":[],"mappings":"AAGA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,wBAAsB,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAcpE;AAGD,wBAAsB,mBAAmB,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAY/E;AAED,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,wBAAsB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAKxF;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxG;AAID,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAGvE;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAGvE"}
1
+ {"version":3,"file":"rsa.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa.ts"],"names":[],"mappings":"AAGA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,wBAAsB,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAcpE;AAGD,wBAAsB,mBAAmB,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAY/E;AAED,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,wBAAsB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAKxF;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxG;AAID,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAGvE;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAGvE;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAQhD"}
@@ -55,4 +55,14 @@ export function decrypt(key, bytes) {
55
55
  // @ts-expect-error node types are missing jwk as a format
56
56
  return crypto.privateDecrypt({ format: 'jwk', key, padding }, bytes);
57
57
  }
58
+ export function keySize(jwk) {
59
+ if (jwk.kty !== 'RSA') {
60
+ throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE');
61
+ }
62
+ else if (jwk.n == null) {
63
+ throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS');
64
+ }
65
+ const modulus = Buffer.from(jwk.n, 'base64');
66
+ return modulus.length * 8;
67
+ }
58
68
  //# sourceMappingURL=rsa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.js","sourceRoot":"","sources":["../../../src/keys/rsa.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAGvC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAE,IAAY;IAC7C,0DAA0D;IAC1D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE;QAC/B,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QACnD,kBAAkB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;KACrD,CAAC,CAAA;IAEF,OAAO;QACL,0DAA0D;QAC1D,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,0DAA0D;QAC1D,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;AACH,CAAC;AAED,kBAAkB;AAClB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAE,GAAe;IACxD,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,MAAM,IAAI,SAAS,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAA;KAChE;IACD,OAAO;QACL,UAAU,EAAE,GAAG;QACf,SAAS,EAAE;YACT,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;KACF,CAAA;AACH,CAAC;AAED,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAE,GAAe,EAAE,GAAe;IACjE,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;SACnC,MAAM,CAAC,GAAG,CAAC;QACZ,0DAA0D;SACzD,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAE,GAAe,EAAE,GAAe,EAAE,GAAe;IACpF,OAAO,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;SACrC,MAAM,CAAC,GAAG,CAAC;QACZ,0DAA0D;SACzD,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAA;AAElD,MAAM,UAAU,OAAO,CAAE,GAAe,EAAE,KAAiB;IACzD,0DAA0D;IAC1D,OAAO,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,GAAe,EAAE,KAAiB;IACzD,0DAA0D;IAC1D,OAAO,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;AACtE,CAAC"}
1
+ {"version":3,"file":"rsa.js","sourceRoot":"","sources":["../../../src/keys/rsa.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ {
2
+ "AESCipher": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.aes.AESCipher.html",
3
+ "create": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.aes.create.html",
4
+ "HMAC": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.hmac.HMAC.html",
5
+ "pbkdf2": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.index.pbkdf2.html",
6
+ "randomBytes": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.index.randomBytes.html",
7
+ "Ed25519PrivateKey": "https://libp2p.github.io/js-libp2p/classes/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_ed25519_class_.Ed25519PrivateKey.html",
8
+ "Ed25519PublicKey": "https://libp2p.github.io/js-libp2p/classes/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_ed25519_class_.Ed25519PublicKey.html",
9
+ "generateKeyPair": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_ed25519_class_.generateKeyPair.html",
10
+ "generateKeyPairFromSeed": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_ed25519_class_.generateKeyPairFromSeed.html",
11
+ "unmarshalEd25519PrivateKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_ed25519_class_.unmarshalEd25519PrivateKey.html",
12
+ "unmarshalEd25519PublicKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_ed25519_class_.unmarshalEd25519PublicKey.html",
13
+ "RsaPrivateKey": "https://libp2p.github.io/js-libp2p/classes/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_rsa_class_.RsaPrivateKey.html",
14
+ "RsaPublicKey": "https://libp2p.github.io/js-libp2p/classes/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_rsa_class_.RsaPublicKey.html",
15
+ "MAX_KEY_SIZE": "https://libp2p.github.io/js-libp2p/variables/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_rsa_class_.MAX_KEY_SIZE.html",
16
+ "fromJwk": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_rsa_class_.fromJwk.html",
17
+ "unmarshalRsaPrivateKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_rsa_class_.unmarshalRsaPrivateKey.html",
18
+ "unmarshalRsaPublicKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_rsa_class_.unmarshalRsaPublicKey.html",
19
+ "Secp256k1PrivateKey": "https://libp2p.github.io/js-libp2p/classes/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_secp256k1_class_.Secp256k1PrivateKey.html",
20
+ "Secp256k1PublicKey": "https://libp2p.github.io/js-libp2p/classes/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_secp256k1_class_.Secp256k1PublicKey.html",
21
+ "unmarshalSecp256k1PrivateKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_secp256k1_class_.unmarshalSecp256k1PrivateKey.html",
22
+ "unmarshalSecp256k1PublicKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unknown.__home_runner_work_js_libp2p_js_libp2p_packages_crypto_src_keys_secp256k1_class_.unmarshalSecp256k1PublicKey.html",
23
+ "ECDHKey": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.unknown.ECDHKey.html",
24
+ "ECDHKeyPair": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.unknown.ECDHKeyPair.html",
25
+ "EnhancedKey": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.unknown.EnhancedKey.html",
26
+ "EnhancedKeyPair": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.unknown.EnhancedKeyPair.html",
27
+ "codec": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.keysPBM.KeyType.codec.html",
28
+ "decode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.keysPBM.PrivateKey.decode.html",
29
+ "encode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.keysPBM.PrivateKey.encode.html",
30
+ "KeyType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_crypto.keys.keysPBM.KeyType-1.html",
31
+ "PrivateKey": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.keysPBM.PrivateKey-1.html",
32
+ "PublicKey": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.keysPBM.PublicKey-1.html",
33
+ "KeyTypes": "https://libp2p.github.io/js-libp2p/types/_libp2p_crypto.keys.KeyTypes.html",
34
+ "supportedKeys": "https://libp2p.github.io/js-libp2p/variables/_libp2p_crypto.keys.supportedKeys.html",
35
+ "generateEphemeralKeyPair": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.generateEphemeralKeyPair.html",
36
+ "importKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.importKey.html",
37
+ "keyStretcher": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.keyStretcher.html",
38
+ "marshalPrivateKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.marshalPrivateKey.html",
39
+ "marshalPublicKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.marshalPublicKey.html",
40
+ "unmarshalPrivateKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unmarshalPrivateKey.html",
41
+ "unmarshalPublicKey": "https://libp2p.github.io/js-libp2p/functions/_libp2p_crypto.keys.unmarshalPublicKey.html"
42
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/crypto",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Crypto primitives for libp2p",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/crypto#readme",
@@ -155,3 +155,13 @@ export function encrypt (key: JsonWebKey, msg: Uint8Array): Uint8Array {
155
155
  export function decrypt (key: JsonWebKey, msg: Uint8Array): Uint8Array {
156
156
  return convertKey(key, false, msg, (msg, key) => key.decrypt(msg))
157
157
  }
158
+
159
+ export function keySize (jwk: JsonWebKey): number {
160
+ if (jwk.kty !== 'RSA') {
161
+ throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE')
162
+ } else if (jwk.n == null) {
163
+ throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS')
164
+ }
165
+ const bytes = uint8ArrayFromString(jwk.n, 'base64url')
166
+ return bytes.length * 8
167
+ }
@@ -10,6 +10,8 @@ import * as pbm from './keys.js'
10
10
  import * as crypto from './rsa.js'
11
11
  import type { Multibase } from 'multiformats'
12
12
 
13
+ export const MAX_KEY_SIZE = 8192
14
+
13
15
  export class RsaPublicKey {
14
16
  private readonly _key: JsonWebKey
15
17
 
@@ -135,21 +137,42 @@ export class RsaPrivateKey {
135
137
 
136
138
  export async function unmarshalRsaPrivateKey (bytes: Uint8Array): Promise<RsaPrivateKey> {
137
139
  const jwk = crypto.utils.pkcs1ToJwk(bytes)
140
+
141
+ if (crypto.keySize(jwk) > MAX_KEY_SIZE) {
142
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE')
143
+ }
144
+
138
145
  const keys = await crypto.unmarshalPrivateKey(jwk)
146
+
139
147
  return new RsaPrivateKey(keys.privateKey, keys.publicKey)
140
148
  }
141
149
 
142
150
  export function unmarshalRsaPublicKey (bytes: Uint8Array): RsaPublicKey {
143
151
  const jwk = crypto.utils.pkixToJwk(bytes)
152
+
153
+ if (crypto.keySize(jwk) > MAX_KEY_SIZE) {
154
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE')
155
+ }
156
+
144
157
  return new RsaPublicKey(jwk)
145
158
  }
146
159
 
147
160
  export async function fromJwk (jwk: JsonWebKey): Promise<RsaPrivateKey> {
161
+ if (crypto.keySize(jwk) > MAX_KEY_SIZE) {
162
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE')
163
+ }
164
+
148
165
  const keys = await crypto.unmarshalPrivateKey(jwk)
166
+
149
167
  return new RsaPrivateKey(keys.privateKey, keys.publicKey)
150
168
  }
151
169
 
152
170
  export async function generateKeyPair (bits: number): Promise<RsaPrivateKey> {
171
+ if (bits > MAX_KEY_SIZE) {
172
+ throw new CodeError('key size is too large', 'ERR_KEY_SIZE_TOO_LARGE')
173
+ }
174
+
153
175
  const keys = await crypto.generateKey(bits)
176
+
154
177
  return new RsaPrivateKey(keys.privateKey, keys.publicKey)
155
178
  }
package/src/keys/rsa.ts CHANGED
@@ -67,3 +67,13 @@ export function decrypt (key: JsonWebKey, bytes: Uint8Array): Uint8Array {
67
67
  // @ts-expect-error node types are missing jwk as a format
68
68
  return crypto.privateDecrypt({ format: 'jwk', key, padding }, bytes)
69
69
  }
70
+
71
+ export function keySize (jwk: JsonWebKey): number {
72
+ if (jwk.kty !== 'RSA') {
73
+ throw new CodeError('invalid key type', 'ERR_INVALID_KEY_TYPE')
74
+ } else if (jwk.n == null) {
75
+ throw new CodeError('invalid key modulus', 'ERR_INVALID_KEY_MODULUS')
76
+ }
77
+ const modulus = Buffer.from(jwk.n, 'base64')
78
+ return modulus.length * 8
79
+ }