@matter/general 0.15.0-alpha.0-20250613-a55f991d4 → 0.15.0-alpha.0-20250616-4b3754906

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 (63) hide show
  1. package/dist/cjs/crypto/Crypto.d.ts +21 -47
  2. package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
  3. package/dist/cjs/crypto/Crypto.js +24 -101
  4. package/dist/cjs/crypto/Crypto.js.map +1 -1
  5. package/dist/cjs/crypto/MockCrypto.d.ts +24 -0
  6. package/dist/cjs/crypto/MockCrypto.d.ts.map +1 -0
  7. package/dist/cjs/crypto/MockCrypto.js +61 -0
  8. package/dist/cjs/crypto/MockCrypto.js.map +6 -0
  9. package/dist/cjs/crypto/Spake2p.d.ts +6 -7
  10. package/dist/cjs/crypto/Spake2p.d.ts.map +1 -1
  11. package/dist/cjs/crypto/Spake2p.js +29 -24
  12. package/dist/cjs/crypto/Spake2p.js.map +1 -1
  13. package/dist/cjs/crypto/StandardCrypto.d.ts +2 -2
  14. package/dist/cjs/crypto/StandardCrypto.d.ts.map +1 -1
  15. package/dist/cjs/crypto/StandardCrypto.js +4 -8
  16. package/dist/cjs/crypto/StandardCrypto.js.map +1 -1
  17. package/dist/cjs/crypto/index.d.ts +1 -1
  18. package/dist/cjs/crypto/index.d.ts.map +1 -1
  19. package/dist/cjs/crypto/index.js +1 -1
  20. package/dist/cjs/crypto/index.js.map +1 -1
  21. package/dist/cjs/util/Bytes.d.ts +1 -0
  22. package/dist/cjs/util/Bytes.d.ts.map +1 -1
  23. package/dist/cjs/util/Bytes.js +22 -0
  24. package/dist/cjs/util/Bytes.js.map +1 -1
  25. package/dist/esm/crypto/Crypto.d.ts +21 -47
  26. package/dist/esm/crypto/Crypto.d.ts.map +1 -1
  27. package/dist/esm/crypto/Crypto.js +24 -101
  28. package/dist/esm/crypto/Crypto.js.map +1 -1
  29. package/dist/esm/crypto/MockCrypto.d.ts +24 -0
  30. package/dist/esm/crypto/MockCrypto.d.ts.map +1 -0
  31. package/dist/esm/crypto/MockCrypto.js +41 -0
  32. package/dist/esm/crypto/MockCrypto.js.map +6 -0
  33. package/dist/esm/crypto/Spake2p.d.ts +6 -7
  34. package/dist/esm/crypto/Spake2p.d.ts.map +1 -1
  35. package/dist/esm/crypto/Spake2p.js +30 -25
  36. package/dist/esm/crypto/Spake2p.js.map +1 -1
  37. package/dist/esm/crypto/StandardCrypto.d.ts +2 -2
  38. package/dist/esm/crypto/StandardCrypto.d.ts.map +1 -1
  39. package/dist/esm/crypto/StandardCrypto.js +4 -8
  40. package/dist/esm/crypto/StandardCrypto.js.map +1 -1
  41. package/dist/esm/crypto/index.d.ts +1 -1
  42. package/dist/esm/crypto/index.d.ts.map +1 -1
  43. package/dist/esm/crypto/index.js +1 -1
  44. package/dist/esm/util/Bytes.d.ts +1 -0
  45. package/dist/esm/util/Bytes.d.ts.map +1 -1
  46. package/dist/esm/util/Bytes.js +22 -0
  47. package/dist/esm/util/Bytes.js.map +1 -1
  48. package/package.json +2 -2
  49. package/src/crypto/Crypto.ts +46 -146
  50. package/src/crypto/MockCrypto.ts +64 -0
  51. package/src/crypto/Spake2p.ts +30 -24
  52. package/src/crypto/StandardCrypto.ts +6 -10
  53. package/src/crypto/index.ts +1 -1
  54. package/src/util/Bytes.ts +22 -0
  55. package/dist/cjs/crypto/nonentropic.d.ts +0 -16
  56. package/dist/cjs/crypto/nonentropic.d.ts.map +0 -1
  57. package/dist/cjs/crypto/nonentropic.js +0 -70
  58. package/dist/cjs/crypto/nonentropic.js.map +0 -6
  59. package/dist/esm/crypto/nonentropic.d.ts +0 -16
  60. package/dist/esm/crypto/nonentropic.d.ts.map +0 -1
  61. package/dist/esm/crypto/nonentropic.js +0 -50
  62. package/dist/esm/crypto/nonentropic.js.map +0 -6
  63. package/src/crypto/nonentropic.ts +0 -65
@@ -22,7 +22,7 @@ __export(StandardCrypto_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(StandardCrypto_exports);
24
24
  var import_DerCodec = require("#codec/DerCodec.js");
25
- var import_Boot = require("#util/Boot.js");
25
+ var import_Environment = require("#environment/Environment.js");
26
26
  var import_Bytes = require("#util/Bytes.js");
27
27
  var import_Ccm = require("./aes/Ccm.js");
28
28
  var import_Crypto = require("./Crypto.js");
@@ -40,12 +40,12 @@ const SIGNATURE_ALGORITHM = {
40
40
  namedCurve: "P-256",
41
41
  hash: { name: "SHA-256" }
42
42
  };
43
- class StandardCrypto {
43
+ class StandardCrypto extends import_Crypto.Crypto {
44
44
  implementationName = "JS";
45
45
  static provider() {
46
46
  return new StandardCrypto();
47
47
  }
48
- getRandomData(length) {
48
+ randomBytes(length) {
49
49
  const result = new Uint8Array(length);
50
50
  crypto.getRandomValues(result);
51
51
  return result;
@@ -193,11 +193,6 @@ class StandardCrypto {
193
193
  return new Uint8Array(secret);
194
194
  }
195
195
  }
196
- if (globalThis.crypto?.subtle?.[Symbol.toStringTag] === "SubtleCrypto") {
197
- import_Boot.Boot.init(() => {
198
- import_Crypto.Crypto.provider = StandardCrypto.provider;
199
- });
200
- }
201
196
  async function importKey(...params) {
202
197
  try {
203
198
  return await crypto.subtle.importKey(...params);
@@ -205,4 +200,5 @@ async function importKey(...params) {
205
200
  throw new import_CryptoError.KeyInputError("Invalid key", { cause });
206
201
  }
207
202
  }
203
+ import_Environment.Environment.default.set(import_Crypto.Crypto, new StandardCrypto());
208
204
  //# sourceMappingURL=StandardCrypto.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/crypto/StandardCrypto.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -7,7 +7,7 @@ export * from "./Crypto.js";
7
7
  export * from "./CryptoConstants.js";
8
8
  export * from "./CryptoError.js";
9
9
  export * from "./Key.js";
10
- export * from "./nonentropic.js";
10
+ export * from "./MockCrypto.js";
11
11
  export * from "./Spake2p.js";
12
12
  export * from "./StandardCrypto.js";
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
@@ -19,7 +19,7 @@ __reExport(crypto_exports, require("./Crypto.js"), module.exports);
19
19
  __reExport(crypto_exports, require("./CryptoConstants.js"), module.exports);
20
20
  __reExport(crypto_exports, require("./CryptoError.js"), module.exports);
21
21
  __reExport(crypto_exports, require("./Key.js"), module.exports);
22
- __reExport(crypto_exports, require("./nonentropic.js"), module.exports);
22
+ __reExport(crypto_exports, require("./MockCrypto.js"), module.exports);
23
23
  __reExport(crypto_exports, require("./Spake2p.js"), module.exports);
24
24
  __reExport(crypto_exports, require("./StandardCrypto.js"), module.exports);
25
25
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/crypto/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,wBANd;AAOA,2BAAc,iCAPd;AAQA,2BAAc,6BARd;AASA,2BAAc,qBATd;AAUA,2BAAc,6BAVd;AAWA,2BAAc,yBAXd;AAYA,2BAAc,gCAZd;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,wBANd;AAOA,2BAAc,iCAPd;AAQA,2BAAc,6BARd;AASA,2BAAc,qBATd;AAUA,2BAAc,4BAVd;AAWA,2BAAc,yBAXd;AAYA,2BAAc,gCAZd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -25,5 +25,6 @@ export declare namespace Bytes {
25
25
  function fromBase64(base64String: string): Uint8Array<ArrayBuffer>;
26
26
  function fromString(string: string): Uint8Array<ArrayBufferLike>;
27
27
  function concat(...arrays: Uint8Array[]): Uint8Array;
28
+ function asBigInt(bytes: Uint8Array): bigint;
28
29
  }
29
30
  //# sourceMappingURL=Bytes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Bytes.d.ts","sourceRoot":"","sources":["../../../src/util/Bytes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,oBAAY,MAAM;IACd,MAAM,IAAA;IACN,GAAG,IAAA;CACN;AAED;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,2BAYrE;AAED;;GAEG;AACH,yBAAiB,KAAK,CAAC;IACnB,SAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,UAKtC;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,UAIzC;IAED,SAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,6BAE3C;IAED,SAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,WAG9D;IAED,SAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,2BAMxC;IAED,SAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,2BAQ9C;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,+BAExC;IAED,SAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAU1D;CACJ"}
1
+ {"version":3,"file":"Bytes.d.ts","sourceRoot":"","sources":["../../../src/util/Bytes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,oBAAY,MAAM;IACd,MAAM,IAAA;IACN,GAAG,IAAA;CACN;AAED;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,2BAYrE;AAED;;GAEG;AACH,yBAAiB,KAAK,CAAC;IACnB,SAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,UAKtC;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,UAIzC;IAED,SAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,6BAE3C;IAED,SAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,WAG9D;IAED,SAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,2BAMxC;IAED,SAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,2BAQ9C;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,+BAExC;IAED,SAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAU1D;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,UAoBzC;CACJ"}
@@ -105,5 +105,27 @@ var Bytes;
105
105
  return result;
106
106
  }
107
107
  Bytes2.concat = concat;
108
+ function asBigInt(bytes) {
109
+ const view = new DataView(bytes.buffer);
110
+ let result = 0n;
111
+ for (let i = 0; i < bytes.length; ) {
112
+ const remaining = bytes.length - i;
113
+ if (remaining >= 8) {
114
+ result = (result << 64n) + view.getBigUint64(i);
115
+ i += 8;
116
+ } else if (remaining >= 4) {
117
+ result = (result << 32n) + BigInt(view.getUint32(i));
118
+ i += 4;
119
+ } else if (remaining >= 2) {
120
+ result = (result << 16n) + BigInt(view.getUint16(i));
121
+ i += 2;
122
+ } else {
123
+ result = (result << 8n) + BigInt(view.getUint8(i));
124
+ i++;
125
+ }
126
+ }
127
+ return result;
128
+ }
129
+ Bytes2.asBigInt = asBigInt;
108
130
  })(Bytes || (Bytes = {}));
109
131
  //# sourceMappingURL=Bytes.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/Bytes.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAoC;AANpC;AAAA;AAAA;AAAA;AAAA;AAQO,IAAK,SAAL,kBAAKA,YAAL;AACH,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AAFQ,SAAAA;AAAA,GAAA;AAUL,SAAS,GAAG,YAAkC,QAAmB;AACpE,MAAI,QAAQ,WAAW,KAAK,OAAO,WAAW,GAAG;AAC7C,WAAO,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACnC;AACA,QAAM,QAAQ,MAAc;AAC5B,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,UAAM,KAAK,QAAQ,CAAC,CAAC;AACrB,QAAI,IAAI,OAAO,QAAQ;AACnB,YAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE;AAAA,IAC7B;AAAA,EACJ;AACA,SAAO,MAAM,QAAQ,MAAM,KAAK,EAAE,CAAC;AACvC;AAKO,IAAU;AAAA,CAAV,CAAUC,WAAV;AACI,WAAS,MAAM,OAAmB;AACrC,UAAM,WAAW,IAAI,MAAc;AACnC,aAAS,SAAS,MAAM;AACxB,UAAM,QAAQ,UAAQ,SAAS,KAAK,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AACvE,WAAO,SAAS,KAAK,EAAE;AAAA,EAC3B;AALO,EAAAA,OAAS;AAOT,WAAS,SAAS,OAAmB;AACxC,QAAI,SAAS;AACb,UAAM,QAAQ,UAAS,UAAU,OAAO,aAAa,IAAI,CAAE;AAC3D,WAAO,KAAK,MAAM;AAAA,EACtB;AAJO,EAAAA,OAAS;AAMT,WAAS,WAAW,OAAmB;AAC1C,WAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EACxE;AAFO,EAAAA,OAAS;AAIT,WAAS,SAAS,QAAoB,QAAoB;AAC7D,QAAI,OAAO,WAAW,OAAO,OAAQ,QAAO;AAC5C,WAAO,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK;AAAA,EACjE;AAHO,EAAAA,OAAS;AAKT,WAAS,QAAQ,WAAmB;AACvC,QAAI,UAAU,WAAW,EAAG,QAAO,IAAI,WAAW,CAAC;AACnD,QAAI,UAAU,SAAS,MAAM,EAAG,OAAM,IAAI,uCAAoB,wCAAwC;AACtG,UAAM,QAAQ,UAAU,MAAM,SAAS,GAAG,IAAI,aAAW,SAAS,SAAS,EAAE,CAAC;AAC9E,QAAI,UAAU,OAAW,OAAM,IAAI,uCAAoB,iCAAiC;AACxF,WAAO,WAAW,KAAK,KAAK;AAAA,EAChC;AANO,EAAAA,OAAS;AAQT,WAAS,WAAW,cAAsB;AAC7C,UAAM,MAAM,KAAK,YAAY;AAC7B,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,YAAM,MAAM,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE;AACzC,gBAAU,IAAI,WAAW,IAAI,MAAM,MAAM;AAAA,IAC7C;AACA,WAAO,QAAQ,MAAM;AAAA,EACzB;AARO,EAAAA,OAAS;AAUT,WAAS,WAAW,QAAgB;AACvC,WAAO,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,EAC1C;AAFO,EAAAA,OAAS;AAIT,WAAS,UAAU,QAAkC;AACxD,QAAI,SAAS;AACb,WAAO,QAAQ,WAAU,UAAU,MAAM,MAAO;AAChD,UAAM,SAAS,IAAI,WAAW,MAAM;AACpC,QAAI,SAAS;AACb,WAAO,QAAQ,WAAS;AACpB,aAAO,IAAI,OAAO,MAAM;AACxB,gBAAU,MAAM;AAAA,IACpB,CAAC;AACD,WAAO;AAAA,EACX;AAVO,EAAAA,OAAS;AAAA,GA7CH;",
4
+ "mappings": "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",
5
5
  "names": ["Endian", "Bytes"]
6
6
  }
@@ -68,7 +68,6 @@ export declare const ec: {
68
68
  notImplemented: () => never;
69
69
  p256: import("@noble/curves/_shortw_utils").CurveFnWithCreate;
70
70
  };
71
- export declare const CRYPTO_RANDOM_LENGTH = 32;
72
71
  export declare const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
73
72
  export declare const CRYPTO_HASH_ALGORITHM = "sha256";
74
73
  export declare const CRYPTO_EC_CURVE = "prime256v1";
@@ -83,89 +82,64 @@ export type CryptoDsaEncoding = "ieee-p1363" | "der";
83
82
  * AES-CCM implementation.
84
83
  *
85
84
  * If your platform does not fully implement Web Crypto, or offers a native implementation of AES-CCM, you can replace
86
- * {@link Crypto.get} to expose a different implementation.
85
+ * the implementation in {@link Environment.default}.
87
86
  *
88
87
  * WARNING: The standard implementation is unaudited. See relevant warnings in StandardCrypto.ts.
89
88
  */
90
- export interface Crypto {
89
+ export declare abstract class Crypto {
91
90
  /**
92
91
  * The name used in log messages.
93
92
  */
94
- implementationName: string;
93
+ abstract implementationName: string;
95
94
  /**
96
95
  * Encrypt using AES-CCM with constants limited to those required by Matter.
97
96
  */
98
- encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
97
+ abstract encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
99
98
  /**
100
99
  * Decrypt using AES-CCM with constants limited to those required by Matter.
101
100
  */
102
- decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
101
+ abstract decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
103
102
  /**
104
- * Obtain random bytes from the most cryptographically-appropriate source available.
103
+ * Create a random buffer from the most cryptographically-appropriate source available.
105
104
  */
106
- getRandomData(length: number): Uint8Array;
105
+ abstract randomBytes(length: number): Uint8Array;
107
106
  /**
108
107
  * Compute the SHA-256 hash of a buffer.
109
108
  */
110
- computeSha256(data: Uint8Array | Uint8Array[]): MaybePromise<Uint8Array>;
109
+ abstract computeSha256(data: Uint8Array | Uint8Array[]): MaybePromise<Uint8Array>;
111
110
  /**
112
111
  * Create a key from a secret using PBKDF2.
113
112
  */
114
- createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): MaybePromise<Uint8Array>;
113
+ abstract createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): MaybePromise<Uint8Array>;
115
114
  /**
116
115
  * Create a key from a secret using HKDF.
117
116
  */
118
- createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): MaybePromise<Uint8Array>;
117
+ abstract createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): MaybePromise<Uint8Array>;
119
118
  /**
120
119
  * Create an HMAC signature.
121
120
  */
122
- signHmac(key: Uint8Array, data: Uint8Array): MaybePromise<Uint8Array>;
121
+ abstract signHmac(key: Uint8Array, data: Uint8Array): MaybePromise<Uint8Array>;
123
122
  /**
124
123
  * Create an ECDSA signature.
125
124
  */
126
- signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): MaybePromise<Uint8Array>;
125
+ abstract signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): MaybePromise<Uint8Array>;
127
126
  /**
128
127
  * Authenticate an ECDSA signature.
129
128
  */
130
- verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): MaybePromise<void>;
129
+ abstract verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): MaybePromise<void>;
131
130
  /**
132
131
  * Create a general-purpose EC key.
133
132
  */
134
- createKeyPair(): MaybePromise<PrivateKey>;
133
+ abstract createKeyPair(): MaybePromise<PrivateKey>;
135
134
  /**
136
135
  * Compute the shared secret for a Diffie-Hellman exchange.
137
136
  */
138
- generateDhSecret(key: PrivateKey, peerKey: PublicKey): MaybePromise<Uint8Array>;
137
+ abstract generateDhSecret(key: PrivateKey, peerKey: PublicKey): MaybePromise<Uint8Array>;
138
+ get randomUint8(): number;
139
+ get randomUint16(): number;
140
+ get randomUint32(): number;
141
+ get randomBigUint64(): bigint;
142
+ randomBigInt(size: number, maxValue?: bigint): bigint;
143
+ reportUsage(component?: string): void;
139
144
  }
140
- /**
141
- * Crypto support functions.
142
- */
143
- export declare const Crypto: {
144
- /**
145
- * The default crypto implementation.
146
- */
147
- readonly default: Crypto;
148
- get provider(): undefined | (() => Crypto);
149
- /**
150
- * Set the default crypto provider.
151
- */
152
- set provider(provider: () => Crypto);
153
- readonly implementationName: string;
154
- encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array<ArrayBufferLike>;
155
- decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array<ArrayBufferLike>;
156
- getRandomData(length: number): Uint8Array<ArrayBufferLike>;
157
- getRandom(): Uint8Array<ArrayBufferLike>;
158
- getRandomUInt16(): number;
159
- getRandomUInt32(): number;
160
- getRandomBigUInt64(): bigint;
161
- getRandomBigInt(size: number, maxValue?: bigint): bigint;
162
- computeSha256(data: Uint8Array | Uint8Array[]): MaybePromise<Uint8Array<ArrayBufferLike>>;
163
- createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): MaybePromise<Uint8Array<ArrayBufferLike>>;
164
- createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): MaybePromise<Uint8Array<ArrayBufferLike>>;
165
- signHmac(key: Uint8Array, data: Uint8Array): MaybePromise<Uint8Array<ArrayBufferLike>>;
166
- signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): MaybePromise<Uint8Array<ArrayBufferLike>>;
167
- verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): MaybePromise<void>;
168
- createKeyPair(): MaybePromise<PrivateKey>;
169
- generateDhSecret(key: PrivateKey, peerKey: PublicKey): MaybePromise<Uint8Array<ArrayBufferLike>>;
170
- };
171
145
  //# sourceMappingURL=Crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"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"}
@@ -5,19 +5,15 @@
5
5
  */
6
6
  import { Diagnostic } from "#log/Diagnostic.js";
7
7
  import { Logger } from "#log/Logger.js";
8
- import { Boot } from "#util/Boot.js";
8
+ import { Bytes } from "#util/Bytes.js";
9
9
  import * as mod from "@noble/curves/abstract/modular";
10
10
  import * as utils from "@noble/curves/abstract/utils";
11
11
  import { p256 } from "@noble/curves/p256";
12
- import { NoProviderError } from "../MatterError.js";
13
- import { Endian } from "../util/Bytes.js";
14
- import { DataReader } from "../util/DataReader.js";
15
12
  const ec = {
16
13
  p256,
17
14
  ...utils,
18
15
  ...mod
19
16
  };
20
- const CRYPTO_RANDOM_LENGTH = 32;
21
17
  const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
22
18
  const CRYPTO_HASH_ALGORITHM = "sha256";
23
19
  const CRYPTO_EC_CURVE = "prime256v1";
@@ -25,115 +21,42 @@ const CRYPTO_EC_KEY_BYTES = 32;
25
21
  const CRYPTO_AUTH_TAG_LENGTH = 16;
26
22
  const CRYPTO_SYMMETRIC_KEY_LENGTH = 16;
27
23
  const logger = Logger.get("Crypto");
28
- let logImplementationName = true;
29
- let defaultInstance;
30
- let defaultProvider;
31
- const Crypto = {
32
- /**
33
- * The default crypto implementation.
34
- */
35
- get default() {
36
- if (defaultInstance) {
37
- return defaultInstance;
38
- }
39
- if (defaultProvider === void 0) {
40
- throw new NoProviderError("There is no cryptography implementation installed");
41
- }
42
- defaultInstance = defaultProvider();
43
- if (logImplementationName) {
44
- logger.debug("Using", Diagnostic.strong(defaultInstance.implementationName), "cryptography implementation");
45
- }
46
- return defaultInstance;
47
- },
48
- get provider() {
49
- return defaultProvider;
50
- },
51
- /**
52
- * Set the default crypto provider.
53
- */
54
- set provider(provider) {
55
- if (defaultProvider === provider) {
56
- return;
57
- }
58
- defaultProvider = void 0;
59
- defaultProvider = provider;
60
- },
61
- get implementationName() {
62
- return Crypto.default.implementationName;
63
- },
64
- encrypt(key, data, nonce, aad) {
65
- return Crypto.default.encrypt(key, data, nonce, aad);
66
- },
67
- decrypt(key, data, nonce, aad) {
68
- return Crypto.default.decrypt(key, data, nonce, aad);
69
- },
70
- getRandomData(length) {
71
- return Crypto.default.getRandomData(length);
72
- },
73
- getRandom() {
74
- return Crypto.default.getRandomData(CRYPTO_RANDOM_LENGTH);
75
- },
76
- getRandomUInt16() {
77
- return new DataReader(Crypto.default.getRandomData(2), Endian.Little).readUInt16();
78
- },
79
- getRandomUInt32() {
80
- return new DataReader(Crypto.default.getRandomData(4), Endian.Little).readUInt32();
81
- },
82
- getRandomBigUInt64() {
83
- return new DataReader(Crypto.default.getRandomData(8), Endian.Little).readUInt64();
84
- },
85
- getRandomBigInt(size, maxValue) {
86
- const { bytesToNumberBE } = ec;
24
+ class Crypto {
25
+ get randomUint8() {
26
+ return this.randomBytes(1)[0];
27
+ }
28
+ get randomUint16() {
29
+ return new DataView(this.randomBytes(2).buffer).getUint16(0);
30
+ }
31
+ get randomUint32() {
32
+ return new DataView(this.randomBytes(4).buffer).getUint32(0);
33
+ }
34
+ get randomBigUint64() {
35
+ return new DataView(this.randomBytes(8).buffer).getBigUint64(0);
36
+ }
37
+ randomBigInt(size, maxValue) {
87
38
  if (maxValue === void 0) {
88
- return bytesToNumberBE(Crypto.getRandomData(size));
39
+ return Bytes.asBigInt(this.randomBytes(size));
89
40
  }
90
41
  while (true) {
91
- const random = bytesToNumberBE(Crypto.getRandomData(size));
42
+ const random = Bytes.asBigInt(this.randomBytes(size));
92
43
  if (random < maxValue) return random;
93
44
  }
94
- },
95
- computeSha256(data) {
96
- return Crypto.default.computeSha256(data);
97
- },
98
- createPbkdf2Key(secret, salt, iteration, keyLength) {
99
- return Crypto.default.createPbkdf2Key(secret, salt, iteration, keyLength);
100
- },
101
- createHkdfKey(secret, salt, info, length) {
102
- return Crypto.default.createHkdfKey(secret, salt, info, length);
103
- },
104
- signHmac(key, data) {
105
- return Crypto.default.signHmac(key, data);
106
- },
107
- signEcdsa(privateKey, data, dsaEncoding) {
108
- return Crypto.default.signEcdsa(privateKey, data, dsaEncoding);
109
- },
110
- verifyEcdsa(publicKey, data, signature, dsaEncoding) {
111
- return Crypto.default.verifyEcdsa(publicKey, data, signature, dsaEncoding);
112
- },
113
- createKeyPair() {
114
- return Crypto.default.createKeyPair();
115
- },
116
- generateDhSecret(key, peerKey) {
117
- return Crypto.default.generateDhSecret(key, peerKey);
118
45
  }
119
- };
120
- Crypto;
121
- Boot.init(() => {
122
- logImplementationName = true;
123
- defaultInstance = void 0;
124
- defaultProvider = void 0;
125
- if (typeof MatterHooks !== "undefined") {
126
- logImplementationName = true;
127
- MatterHooks.cryptoSetup?.(Crypto);
46
+ reportUsage(component) {
47
+ const message = ["Using", Diagnostic.strong(this.implementationName), "crypto implementation"];
48
+ if (component) {
49
+ message.push("for", component);
50
+ }
51
+ logger.debug(...message);
128
52
  }
129
- });
53
+ }
130
54
  export {
131
55
  CRYPTO_AUTH_TAG_LENGTH,
132
56
  CRYPTO_EC_CURVE,
133
57
  CRYPTO_EC_KEY_BYTES,
134
58
  CRYPTO_ENCRYPT_ALGORITHM,
135
59
  CRYPTO_HASH_ALGORITHM,
136
- CRYPTO_RANDOM_LENGTH,
137
60
  CRYPTO_SYMMETRIC_KEY_LENGTH,
138
61
  Crypto,
139
62
  ec
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/crypto/Crypto.ts"],
4
- "mappings": "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",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,aAAa;AAEtB,YAAY,SAAS;AACrB,YAAY,WAAW;AACvB,SAAS,YAAY;AAGd,MAAM,KAAK;AAAA,EACd;AAAA,EACA,GAAG;AAAA,EACH,GAAG;AACP;AAEO,MAAM,2BAA2B;AACjC,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAC/B,MAAM,8BAA8B;AAG3C,MAAM,SAAS,OAAO,IAAI,QAAQ;AAa3B,MAAe,OAAO;AAAA,EAgFzB,IAAI,cAAc;AACd,WAAO,KAAK,YAAY,CAAC,EAAE,CAAC;AAAA,EAChC;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC;AAAA,EAC/D;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC;AAAA,EAC/D;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC;AAAA,EAClE;AAAA,EAEA,aAAa,MAAc,UAAmB;AAC1C,QAAI,aAAa,QAAW;AACxB,aAAO,MAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AAAA,IAChD;AAEA,WAAO,MAAM;AACT,YAAM,SAAS,MAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AACpD,UAAI,SAAS,SAAU,QAAO;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,YAAY,WAAoB;AAC5B,UAAM,UAAU,CAAC,SAAS,WAAW,OAAO,KAAK,kBAAkB,GAAG,uBAAuB;AAC7F,QAAI,WAAW;AACX,cAAQ,KAAK,OAAO,SAAS;AAAA,IACjC;AACA,WAAO,MAAM,GAAG,OAAO;AAAA,EAC3B;AACJ;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto } from "./Crypto.js";
7
+ /**
8
+ * WARNING: ONLY FOR USE IN PROTECTED TESTING ENVIRONMENTS WHERE SECURITY IS NOT A CONCERN
9
+ *
10
+ * A {@link Crypto} with sources of entropy replaced to produce stable values based on an input index.
11
+ *
12
+ * This is useful in testing environments where Matter logic is difficult to test with true entropy.
13
+ *
14
+ * Depending on implementation some methods may need further mocking to remove entropy entirely. Mocking is sufficient
15
+ * for current testing purposes.
16
+ */
17
+ export interface MockCrypto extends Crypto {
18
+ /**
19
+ * The index of the random space. May be modified to adjust computations going forward.
20
+ */
21
+ index: number;
22
+ }
23
+ export declare function MockCrypto(index?: number, implementation?: new () => Crypto): MockCrypto;
24
+ //# sourceMappingURL=MockCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/MockCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAIzC;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM;IACtC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,MAAa,EAAE,cAAc,GAAE,UAAU,MAAuB,GAkC7E,UAAU,CAC9B"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Project CHIP Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ImplementationError } from "#MatterError.js";
7
+ import { ec } from "./Crypto.js";
8
+ import { CurveType, Key, KeyType } from "./Key.js";
9
+ import { StandardCrypto } from "./StandardCrypto.js";
10
+ function MockCrypto(index = 128, implementation = StandardCrypto) {
11
+ if (index < 0 || index > 255) {
12
+ throw new ImplementationError(`Index for stable crypto must be 0-255`);
13
+ }
14
+ const crypto = new implementation();
15
+ crypto.randomBytes = function getRandomDataNONENTROPIC(length) {
16
+ const result = new Uint8Array(length);
17
+ result.fill(index);
18
+ return result;
19
+ };
20
+ crypto.createKeyPair = function getRandomDataNONENTROPIC() {
21
+ const privateBits = ec.mapHashToField(new Uint8Array(crypto.randomBytes(48)), ec.p256.CURVE.n);
22
+ return Key({
23
+ kty: KeyType.EC,
24
+ crv: CurveType.p256,
25
+ privateBits
26
+ });
27
+ };
28
+ Object.defineProperty(crypto, "index", {
29
+ get() {
30
+ return index;
31
+ },
32
+ set(newIndex) {
33
+ index = newIndex % 256;
34
+ }
35
+ });
36
+ return crypto;
37
+ }
38
+ export {
39
+ MockCrypto
40
+ };
41
+ //# sourceMappingURL=MockCrypto.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/crypto/MockCrypto.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,2BAA2B;AACpC,SAAiB,UAAU;AAC3B,SAAS,WAAW,KAAK,eAA2B;AACpD,SAAS,sBAAsB;AAmBxB,SAAS,WAAW,QAAgB,KAAM,iBAAmC,gBAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,oBAAoB,uCAAuC;AAAA,EACzE;AAEA,QAAM,SAAS,IAAI,eAAe;AAGlC,SAAO,cAAc,SAAS,yBAAyB,QAAQ;AAC3D,UAAM,SAAS,IAAI,WAAW,MAAM;AACpC,WAAO,KAAK,KAAK;AACjB,WAAO;AAAA,EACX;AAGA,SAAO,gBAAgB,SAAS,2BAA2B;AACvD,UAAM,cAAc,GAAG,eAAe,IAAI,WAAW,OAAO,YAAY,EAAE,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC;AAC7F,WAAO,IAAI;AAAA,MACP,KAAK,QAAQ;AAAA,MACb,KAAK,UAAU;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO,eAAe,QAAQ,SAAS;AAAA,IACnC,MAAM;AACF,aAAO;AAAA,IACX;AAAA,IAEA,IAAI,UAAkB;AAClB,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
5
+ "names": []
6
+ }
@@ -3,24 +3,23 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Crypto } from "./Crypto.js";
6
7
  export interface PbkdfParameters {
7
8
  iterations: number;
8
9
  salt: Uint8Array;
9
10
  }
10
11
  export declare class Spake2p {
11
- private readonly context;
12
- private readonly random;
13
- private readonly w0;
14
- static computeW0W1({ iterations, salt }: PbkdfParameters, pin: number): Promise<{
12
+ #private;
13
+ static computeW0W1(crypto: Crypto, { iterations, salt }: PbkdfParameters, pin: number): Promise<{
15
14
  w0: bigint;
16
15
  w1: bigint;
17
16
  }>;
18
- static computeW0L(pbkdfParameters: PbkdfParameters, pin: number): Promise<{
17
+ static computeW0L(crypto: Crypto, pbkdfParameters: PbkdfParameters, pin: number): Promise<{
19
18
  w0: bigint;
20
19
  L: Uint8Array<ArrayBufferLike>;
21
20
  }>;
22
- static create(context: Uint8Array, w0: bigint): Spake2p;
23
- constructor(context: Uint8Array, random: bigint, w0: bigint);
21
+ static create(crypto: Crypto, context: Uint8Array, w0: bigint): Spake2p;
22
+ constructor(crypto: Crypto, context: Uint8Array, random: bigint, w0: bigint);
24
23
  computeX(): Uint8Array;
25
24
  computeY(): Uint8Array;
26
25
  computeSecretAndVerifiersFromY(w1: bigint, X: Uint8Array, Y: Uint8Array): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,qBAAa,OAAO;IAsBZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE;WAvBV,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;WAS9D,UAAU,CAAC,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;IAMrE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM;gBAMxB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM;IAG/B,QAAQ,IAAI,UAAU;IAKtB,QAAQ,IAAI,UAAU;IAKhB,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;;;;;IAavE,8BAA8B,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;;;;;YAalE,yBAAyB;IAevC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,YAAY;CAIvB"}
1
+ {"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,qBAAa,OAAO;;WAMH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;WAS9E,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;IAMrF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM;gBAKjD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAO3E,QAAQ,IAAI,UAAU;IAKtB,QAAQ,IAAI,UAAU;IAKhB,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;;;;;IAavE,8BAA8B,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;;;;;YAalE,yBAAyB;IAevC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,YAAY;CAIvB"}