@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
@@ -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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"}
@@ -33,7 +33,6 @@ __export(Crypto_exports, {
33
33
  CRYPTO_EC_KEY_BYTES: () => CRYPTO_EC_KEY_BYTES,
34
34
  CRYPTO_ENCRYPT_ALGORITHM: () => CRYPTO_ENCRYPT_ALGORITHM,
35
35
  CRYPTO_HASH_ALGORITHM: () => CRYPTO_HASH_ALGORITHM,
36
- CRYPTO_RANDOM_LENGTH: () => CRYPTO_RANDOM_LENGTH,
37
36
  CRYPTO_SYMMETRIC_KEY_LENGTH: () => CRYPTO_SYMMETRIC_KEY_LENGTH,
38
37
  Crypto: () => Crypto,
39
38
  ec: () => ec
@@ -41,13 +40,10 @@ __export(Crypto_exports, {
41
40
  module.exports = __toCommonJS(Crypto_exports);
42
41
  var import_Diagnostic = require("#log/Diagnostic.js");
43
42
  var import_Logger = require("#log/Logger.js");
44
- var import_Boot = require("#util/Boot.js");
43
+ var import_Bytes = require("#util/Bytes.js");
45
44
  var mod = __toESM(require("@noble/curves/abstract/modular"), 1);
46
45
  var utils = __toESM(require("@noble/curves/abstract/utils"), 1);
47
46
  var import_p256 = require("@noble/curves/p256");
48
- var import_MatterError = require("../MatterError.js");
49
- var import_Bytes = require("../util/Bytes.js");
50
- var import_DataReader = require("../util/DataReader.js");
51
47
  /**
52
48
  * @license
53
49
  * Copyright 2022-2025 Matter.js Authors
@@ -58,7 +54,6 @@ const ec = {
58
54
  ...utils,
59
55
  ...mod
60
56
  };
61
- const CRYPTO_RANDOM_LENGTH = 32;
62
57
  const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
63
58
  const CRYPTO_HASH_ALGORITHM = "sha256";
64
59
  const CRYPTO_EC_CURVE = "prime256v1";
@@ -66,106 +61,34 @@ const CRYPTO_EC_KEY_BYTES = 32;
66
61
  const CRYPTO_AUTH_TAG_LENGTH = 16;
67
62
  const CRYPTO_SYMMETRIC_KEY_LENGTH = 16;
68
63
  const logger = import_Logger.Logger.get("Crypto");
69
- let logImplementationName = true;
70
- let defaultInstance;
71
- let defaultProvider;
72
- const Crypto = {
73
- /**
74
- * The default crypto implementation.
75
- */
76
- get default() {
77
- if (defaultInstance) {
78
- return defaultInstance;
79
- }
80
- if (defaultProvider === void 0) {
81
- throw new import_MatterError.NoProviderError("There is no cryptography implementation installed");
82
- }
83
- defaultInstance = defaultProvider();
84
- if (logImplementationName) {
85
- logger.debug("Using", import_Diagnostic.Diagnostic.strong(defaultInstance.implementationName), "cryptography implementation");
86
- }
87
- return defaultInstance;
88
- },
89
- get provider() {
90
- return defaultProvider;
91
- },
92
- /**
93
- * Set the default crypto provider.
94
- */
95
- set provider(provider) {
96
- if (defaultProvider === provider) {
97
- return;
98
- }
99
- defaultProvider = void 0;
100
- defaultProvider = provider;
101
- },
102
- get implementationName() {
103
- return Crypto.default.implementationName;
104
- },
105
- encrypt(key, data, nonce, aad) {
106
- return Crypto.default.encrypt(key, data, nonce, aad);
107
- },
108
- decrypt(key, data, nonce, aad) {
109
- return Crypto.default.decrypt(key, data, nonce, aad);
110
- },
111
- getRandomData(length) {
112
- return Crypto.default.getRandomData(length);
113
- },
114
- getRandom() {
115
- return Crypto.default.getRandomData(CRYPTO_RANDOM_LENGTH);
116
- },
117
- getRandomUInt16() {
118
- return new import_DataReader.DataReader(Crypto.default.getRandomData(2), import_Bytes.Endian.Little).readUInt16();
119
- },
120
- getRandomUInt32() {
121
- return new import_DataReader.DataReader(Crypto.default.getRandomData(4), import_Bytes.Endian.Little).readUInt32();
122
- },
123
- getRandomBigUInt64() {
124
- return new import_DataReader.DataReader(Crypto.default.getRandomData(8), import_Bytes.Endian.Little).readUInt64();
125
- },
126
- getRandomBigInt(size, maxValue) {
127
- const { bytesToNumberBE } = ec;
64
+ class Crypto {
65
+ get randomUint8() {
66
+ return this.randomBytes(1)[0];
67
+ }
68
+ get randomUint16() {
69
+ return new DataView(this.randomBytes(2).buffer).getUint16(0);
70
+ }
71
+ get randomUint32() {
72
+ return new DataView(this.randomBytes(4).buffer).getUint32(0);
73
+ }
74
+ get randomBigUint64() {
75
+ return new DataView(this.randomBytes(8).buffer).getBigUint64(0);
76
+ }
77
+ randomBigInt(size, maxValue) {
128
78
  if (maxValue === void 0) {
129
- return bytesToNumberBE(Crypto.getRandomData(size));
79
+ return import_Bytes.Bytes.asBigInt(this.randomBytes(size));
130
80
  }
131
81
  while (true) {
132
- const random = bytesToNumberBE(Crypto.getRandomData(size));
82
+ const random = import_Bytes.Bytes.asBigInt(this.randomBytes(size));
133
83
  if (random < maxValue) return random;
134
84
  }
135
- },
136
- computeSha256(data) {
137
- return Crypto.default.computeSha256(data);
138
- },
139
- createPbkdf2Key(secret, salt, iteration, keyLength) {
140
- return Crypto.default.createPbkdf2Key(secret, salt, iteration, keyLength);
141
- },
142
- createHkdfKey(secret, salt, info, length) {
143
- return Crypto.default.createHkdfKey(secret, salt, info, length);
144
- },
145
- signHmac(key, data) {
146
- return Crypto.default.signHmac(key, data);
147
- },
148
- signEcdsa(privateKey, data, dsaEncoding) {
149
- return Crypto.default.signEcdsa(privateKey, data, dsaEncoding);
150
- },
151
- verifyEcdsa(publicKey, data, signature, dsaEncoding) {
152
- return Crypto.default.verifyEcdsa(publicKey, data, signature, dsaEncoding);
153
- },
154
- createKeyPair() {
155
- return Crypto.default.createKeyPair();
156
- },
157
- generateDhSecret(key, peerKey) {
158
- return Crypto.default.generateDhSecret(key, peerKey);
159
85
  }
160
- };
161
- Crypto;
162
- import_Boot.Boot.init(() => {
163
- logImplementationName = true;
164
- defaultInstance = void 0;
165
- defaultProvider = void 0;
166
- if (typeof MatterHooks !== "undefined") {
167
- logImplementationName = true;
168
- MatterHooks.cryptoSetup?.(Crypto);
86
+ reportUsage(component) {
87
+ const message = ["Using", import_Diagnostic.Diagnostic.strong(this.implementationName), "crypto implementation"];
88
+ if (component) {
89
+ message.push("for", component);
90
+ }
91
+ logger.debug(...message);
169
92
  }
170
- });
93
+ }
171
94
  //# sourceMappingURL=Crypto.js.map
@@ -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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAA2B;AAC3B,oBAAuB;AACvB,mBAAsB;AAEtB,UAAqB;AACrB,YAAuB;AACvB,kBAAqB;AAbrB;AAAA;AAAA;AAAA;AAAA;AAgBO,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,qBAAO,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,mBAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AAAA,IAChD;AAEA,WAAO,MAAM;AACT,YAAM,SAAS,mBAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AACpD,UAAI,SAAS,SAAU,QAAO;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,YAAY,WAAoB;AAC5B,UAAM,UAAU,CAAC,SAAS,6BAAW,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,61 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var MockCrypto_exports = {};
20
+ __export(MockCrypto_exports, {
21
+ MockCrypto: () => MockCrypto
22
+ });
23
+ module.exports = __toCommonJS(MockCrypto_exports);
24
+ var import_MatterError = require("#MatterError.js");
25
+ var import_Crypto = require("./Crypto.js");
26
+ var import_Key = require("./Key.js");
27
+ var import_StandardCrypto = require("./StandardCrypto.js");
28
+ /**
29
+ * @license
30
+ * Copyright 2022-2025 Project CHIP Authors
31
+ * SPDX-License-Identifier: Apache-2.0
32
+ */
33
+ function MockCrypto(index = 128, implementation = import_StandardCrypto.StandardCrypto) {
34
+ if (index < 0 || index > 255) {
35
+ throw new import_MatterError.ImplementationError(`Index for stable crypto must be 0-255`);
36
+ }
37
+ const crypto = new implementation();
38
+ crypto.randomBytes = function getRandomDataNONENTROPIC(length) {
39
+ const result = new Uint8Array(length);
40
+ result.fill(index);
41
+ return result;
42
+ };
43
+ crypto.createKeyPair = function getRandomDataNONENTROPIC() {
44
+ const privateBits = import_Crypto.ec.mapHashToField(new Uint8Array(crypto.randomBytes(48)), import_Crypto.ec.p256.CURVE.n);
45
+ return (0, import_Key.Key)({
46
+ kty: import_Key.KeyType.EC,
47
+ crv: import_Key.CurveType.p256,
48
+ privateBits
49
+ });
50
+ };
51
+ Object.defineProperty(crypto, "index", {
52
+ get() {
53
+ return index;
54
+ },
55
+ set(newIndex) {
56
+ index = newIndex % 256;
57
+ }
58
+ });
59
+ return crypto;
60
+ }
61
+ //# 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,yBAAoC;AACpC,oBAA2B;AAC3B,iBAAoD;AACpD,4BAA+B;AAT/B;AAAA;AAAA;AAAA;AAAA;AA4BO,SAAS,WAAW,QAAgB,KAAM,iBAAmC,sCAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,uCAAoB,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,iBAAG,eAAe,IAAI,WAAW,OAAO,YAAY,EAAE,CAAC,GAAG,iBAAG,KAAK,MAAM,CAAC;AAC7F,eAAO,gBAAI;AAAA,MACP,KAAK,mBAAQ;AAAA,MACb,KAAK,qBAAU;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"}
@@ -41,34 +41,39 @@ const M = ProjectivePoint.fromHex("02886e2f97ace46e55ba9dd7242579f2993b64e16ef3d
41
41
  const N = ProjectivePoint.fromHex("03d8bbd6c639c62937b04d997f38c3770719c629d7014d49a24b4f98baa1292b49");
42
42
  const CRYPTO_W_SIZE_BYTES = import_CryptoConstants.CRYPTO_GROUP_SIZE_BYTES + 8;
43
43
  class Spake2p {
44
- constructor(context, random, w0) {
45
- this.context = context;
46
- this.random = random;
47
- this.w0 = w0;
48
- }
49
- static async computeW0W1({ iterations, salt }, pin) {
44
+ #crypto;
45
+ #context;
46
+ #random;
47
+ #w0;
48
+ static async computeW0W1(crypto, { iterations, salt }, pin) {
50
49
  const pinWriter = new import_DataWriter.DataWriter(import_Bytes.Endian.Little);
51
50
  pinWriter.writeUInt32(pin);
52
- const ws = await import_Crypto.Crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2);
51
+ const ws = await crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2);
53
52
  const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), P256_CURVE.n);
54
53
  const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), P256_CURVE.n);
55
54
  return { w0, w1 };
56
55
  }
57
- static async computeW0L(pbkdfParameters, pin) {
58
- const { w0, w1 } = await this.computeW0W1(pbkdfParameters, pin);
56
+ static async computeW0L(crypto, pbkdfParameters, pin) {
57
+ const { w0, w1 } = await this.computeW0W1(crypto, pbkdfParameters, pin);
59
58
  const L = ProjectivePoint.BASE.multiply(w1).toRawBytes(false);
60
59
  return { w0, L };
61
60
  }
62
- static create(context, w0) {
63
- const random = import_Crypto.Crypto.getRandomBigInt(32, P256_CURVE.Fp.ORDER);
64
- return new Spake2p(context, random, w0);
61
+ static create(crypto, context, w0) {
62
+ const random = crypto.randomBigInt(32, P256_CURVE.Fp.ORDER);
63
+ return new Spake2p(crypto, context, random, w0);
64
+ }
65
+ constructor(crypto, context, random, w0) {
66
+ this.#crypto = crypto;
67
+ this.#context = context;
68
+ this.#random = random;
69
+ this.#w0 = w0;
65
70
  }
66
71
  computeX() {
67
- const X = ProjectivePoint.BASE.multiply(this.random).add(M.multiply(this.w0));
72
+ const X = ProjectivePoint.BASE.multiply(this.#random).add(M.multiply(this.#w0));
68
73
  return X.toRawBytes(false);
69
74
  }
70
75
  computeY() {
71
- const Y = ProjectivePoint.BASE.multiply(this.random).add(N.multiply(this.w0));
76
+ const Y = ProjectivePoint.BASE.multiply(this.#random).add(N.multiply(this.#w0));
72
77
  return Y.toRawBytes(false);
73
78
  }
74
79
  async computeSecretAndVerifiersFromY(w1, X, Y) {
@@ -78,8 +83,8 @@ class Spake2p {
78
83
  } catch (error) {
79
84
  throw new import_MatterError.InternalError(`Y is not on the curve: ${error.message}`);
80
85
  }
81
- const yNwo = YPoint.add(N.multiply(this.w0).negate());
82
- const Z = yNwo.multiply(this.random);
86
+ const yNwo = YPoint.add(N.multiply(this.#w0).negate());
87
+ const Z = yNwo.multiply(this.#random);
83
88
  const V = yNwo.multiply(w1);
84
89
  return this.computeSecretAndVerifiers(X, Y, Z.toRawBytes(false), V.toRawBytes(false));
85
90
  }
@@ -91,24 +96,24 @@ class Spake2p {
91
96
  } catch (error) {
92
97
  throw new import_MatterError.InternalError(`X is not on the curve: ${error.message}`);
93
98
  }
94
- const Z = XPoint.add(M.multiply(this.w0).negate()).multiply(this.random);
95
- const V = LPoint.multiply(this.random);
99
+ const Z = XPoint.add(M.multiply(this.#w0).negate()).multiply(this.#random);
100
+ const V = LPoint.multiply(this.#random);
96
101
  return this.computeSecretAndVerifiers(X, Y, Z.toRawBytes(false), V.toRawBytes(false));
97
102
  }
98
103
  async computeSecretAndVerifiers(X, Y, Z, V) {
99
104
  const TT_HASH = await this.computeTranscriptHash(X, Y, Z, V);
100
105
  const Ka = TT_HASH.slice(0, 16);
101
106
  const Ke = TT_HASH.slice(16, 32);
102
- const KcAB = await import_Crypto.Crypto.createHkdfKey(Ka, new Uint8Array(0), import_Bytes.Bytes.fromString("ConfirmationKeys"), 32);
107
+ const KcAB = await this.#crypto.createHkdfKey(Ka, new Uint8Array(0), import_Bytes.Bytes.fromString("ConfirmationKeys"), 32);
103
108
  const KcA = KcAB.slice(0, 16);
104
109
  const KcB = KcAB.slice(16, 32);
105
- const hAY = await import_Crypto.Crypto.signHmac(KcA, Y);
106
- const hBX = await import_Crypto.Crypto.signHmac(KcB, X);
110
+ const hAY = await this.#crypto.signHmac(KcA, Y);
111
+ const hBX = await this.#crypto.signHmac(KcB, X);
107
112
  return { Ke, hAY, hBX };
108
113
  }
109
114
  computeTranscriptHash(X, Y, Z, V) {
110
115
  const TTwriter = new import_DataWriter.DataWriter(import_Bytes.Endian.Little);
111
- this.addToContext(TTwriter, this.context);
116
+ this.addToContext(TTwriter, this.#context);
112
117
  this.addToContext(TTwriter, import_Bytes.Bytes.fromString(""));
113
118
  this.addToContext(TTwriter, import_Bytes.Bytes.fromString(""));
114
119
  this.addToContext(TTwriter, M.toRawBytes(false));
@@ -117,8 +122,8 @@ class Spake2p {
117
122
  this.addToContext(TTwriter, Y);
118
123
  this.addToContext(TTwriter, Z);
119
124
  this.addToContext(TTwriter, V);
120
- this.addToContext(TTwriter, numberToBytesBE(this.w0, 32));
121
- return import_Crypto.Crypto.computeSha256(TTwriter.toByteArray());
125
+ this.addToContext(TTwriter, numberToBytesBE(this.#w0, 32));
126
+ return this.#crypto.computeSha256(TTwriter.toByteArray());
122
127
  }
123
128
  addToContext(TTwriter, data) {
124
129
  TTwriter.writeUInt64(data.length);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/crypto/Spake2p.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -15,10 +15,10 @@ import { PrivateKey, PublicKey } from "./Key.js";
15
15
  * Web Crypto doesn't support AES-CCM required by Matter so fall back to a JS implementation for that. See relevant
16
16
  * warnings in the "aes" subdirectory.
17
17
  */
18
- export declare class StandardCrypto implements Crypto {
18
+ export declare class StandardCrypto extends Crypto {
19
19
  implementationName: string;
20
20
  static provider(): StandardCrypto;
21
- getRandomData(length: number): Uint8Array;
21
+ randomBytes(length: number): Uint8Array;
22
22
  encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, associatedData?: Uint8Array): Uint8Array<ArrayBufferLike>;
23
23
  decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, associatedData?: Uint8Array): Uint8Array<ArrayBufferLike>;
24
24
  computeSha256(buffer: Uint8Array | Uint8Array[]): Promise<Uint8Array<ArrayBuffer>>;
@@ -1 +1 @@
1
- {"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAU1E;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,MAAM;IACzC,kBAAkB,SAAQ;IAE1B,MAAM,CAAC,QAAQ;IAIf,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMzC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKzF,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKnF,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE;IAO/C,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAe1F,aAAa,CACf,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC;IAgB1C,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;IAK7C,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+B3F,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA2BrG,aAAa;IA2Bb,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CAkC7D"}
1
+ {"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAU1E;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;IACtC,kBAAkB,SAAQ;IAE1B,MAAM,CAAC,QAAQ;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAMvC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKzF,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU;IAKnF,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE;IAO/C,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAe1F,aAAa,CACf,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC;IAgB1C,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;IAK7C,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+B3F,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA2BrG,aAAa;IA2Bb,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CAkC7D"}