@matter/protocol 0.14.1-alpha.0-20250607-a93593303 → 0.15.0-alpha.0-20250613-a55f991d4

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 (217) hide show
  1. package/dist/cjs/certificate/AttestationCertificateManager.js +2 -2
  2. package/dist/cjs/certificate/AttestationCertificateManager.js.map +1 -1
  3. package/dist/cjs/certificate/CertificateAuthority.d.ts +2 -2
  4. package/dist/cjs/certificate/CertificateAuthority.d.ts.map +1 -1
  5. package/dist/cjs/certificate/CertificateAuthority.js +5 -5
  6. package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
  7. package/dist/cjs/certificate/CertificateManager.d.ts +1 -1
  8. package/dist/cjs/certificate/CertificateManager.d.ts.map +1 -1
  9. package/dist/cjs/certificate/CertificateManager.js +21 -10
  10. package/dist/cjs/certificate/CertificateManager.js.map +1 -1
  11. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +1 -1
  12. package/dist/cjs/certificate/DeviceCertification.d.ts +1 -1
  13. package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -1
  14. package/dist/cjs/certificate/DeviceCertification.js +5 -3
  15. package/dist/cjs/certificate/DeviceCertification.js.map +1 -1
  16. package/dist/cjs/codec/BtpCodec.d.ts +1 -1
  17. package/dist/cjs/codec/MessageCodec.d.ts +1 -1
  18. package/dist/cjs/events/OccurrenceManager.d.ts +1 -0
  19. package/dist/cjs/events/OccurrenceManager.d.ts.map +1 -1
  20. package/dist/cjs/events/OccurrenceManager.js +14 -8
  21. package/dist/cjs/events/OccurrenceManager.js.map +1 -1
  22. package/dist/cjs/fabric/Fabric.d.ts +8 -6
  23. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  24. package/dist/cjs/fabric/Fabric.js +22 -15
  25. package/dist/cjs/fabric/Fabric.js.map +1 -1
  26. package/dist/cjs/fabric/FabricAuthority.d.ts +4 -0
  27. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  28. package/dist/cjs/fabric/FabricAuthority.js +6 -0
  29. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  30. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  31. package/dist/cjs/fabric/FabricManager.js +9 -2
  32. package/dist/cjs/fabric/FabricManager.js.map +1 -1
  33. package/dist/cjs/fabric/TestFabric.d.ts +30 -0
  34. package/dist/cjs/fabric/TestFabric.d.ts.map +1 -0
  35. package/dist/cjs/fabric/TestFabric.js +70 -0
  36. package/dist/cjs/fabric/TestFabric.js.map +6 -0
  37. package/dist/cjs/fabric/index.d.ts +1 -0
  38. package/dist/cjs/fabric/index.d.ts.map +1 -1
  39. package/dist/cjs/fabric/index.js +1 -0
  40. package/dist/cjs/fabric/index.js.map +1 -1
  41. package/dist/cjs/groups/{FabricGroupsManager.d.ts → FabricGroups.d.ts} +2 -2
  42. package/dist/cjs/groups/FabricGroups.d.ts.map +1 -0
  43. package/dist/cjs/groups/{FabricGroupsManager.js → FabricGroups.js} +9 -9
  44. package/dist/cjs/groups/FabricGroups.js.map +6 -0
  45. package/dist/cjs/groups/KeySets.js +1 -1
  46. package/dist/cjs/groups/KeySets.js.map +1 -1
  47. package/dist/cjs/groups/index.d.ts +1 -1
  48. package/dist/cjs/groups/index.d.ts.map +1 -1
  49. package/dist/cjs/groups/index.js +1 -1
  50. package/dist/cjs/groups/index.js.map +1 -1
  51. package/dist/cjs/interaction/{AccessControlManager.d.ts → FabricAccessControl.d.ts} +12 -7
  52. package/dist/cjs/interaction/FabricAccessControl.d.ts.map +1 -0
  53. package/dist/cjs/interaction/{AccessControlManager.js → FabricAccessControl.js} +46 -21
  54. package/dist/cjs/interaction/FabricAccessControl.js.map +6 -0
  55. package/dist/cjs/interaction/index.d.ts +1 -1
  56. package/dist/cjs/interaction/index.d.ts.map +1 -1
  57. package/dist/cjs/interaction/index.js +1 -1
  58. package/dist/cjs/interaction/index.js.map +1 -1
  59. package/dist/cjs/mdns/MdnsScanner.d.ts +1 -1
  60. package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -1
  61. package/dist/cjs/mdns/MdnsScanner.js +2 -6
  62. package/dist/cjs/mdns/MdnsScanner.js.map +1 -1
  63. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  64. package/dist/cjs/peer/ControllerCommissioningFlow.js +2 -4
  65. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  66. package/dist/cjs/protocol/DeviceCommissioner.js +1 -1
  67. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  68. package/dist/cjs/protocol/MessageExchange.d.ts +6 -0
  69. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  70. package/dist/cjs/protocol/MessageExchange.js +13 -0
  71. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  72. package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts +1 -1
  73. package/dist/cjs/session/NodeSession.js +1 -1
  74. package/dist/cjs/session/Session.d.ts +1 -1
  75. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  76. package/dist/cjs/session/SessionManager.js +1 -0
  77. package/dist/cjs/session/SessionManager.js.map +1 -1
  78. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  79. package/dist/cjs/session/case/CaseClient.js +34 -30
  80. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  81. package/dist/cjs/session/case/CaseMessages.d.ts +8 -8
  82. package/dist/cjs/session/case/CaseMessages.js +8 -8
  83. package/dist/cjs/session/case/CaseMessages.js.map +1 -1
  84. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  85. package/dist/cjs/session/case/CaseServer.js +26 -23
  86. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  87. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
  88. package/dist/cjs/session/pase/PaseClient.js +4 -1
  89. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  90. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  91. package/dist/cjs/session/pase/PaseServer.js +4 -1
  92. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  93. package/dist/esm/certificate/AttestationCertificateManager.js +2 -2
  94. package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
  95. package/dist/esm/certificate/CertificateAuthority.d.ts +2 -2
  96. package/dist/esm/certificate/CertificateAuthority.d.ts.map +1 -1
  97. package/dist/esm/certificate/CertificateAuthority.js +5 -5
  98. package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
  99. package/dist/esm/certificate/CertificateManager.d.ts +1 -1
  100. package/dist/esm/certificate/CertificateManager.d.ts.map +1 -1
  101. package/dist/esm/certificate/CertificateManager.js +22 -11
  102. package/dist/esm/certificate/CertificateManager.js.map +1 -1
  103. package/dist/esm/certificate/CertificationDeclarationManager.d.ts +1 -1
  104. package/dist/esm/certificate/DeviceCertification.d.ts +1 -1
  105. package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -1
  106. package/dist/esm/certificate/DeviceCertification.js +5 -3
  107. package/dist/esm/certificate/DeviceCertification.js.map +1 -1
  108. package/dist/esm/codec/BtpCodec.d.ts +1 -1
  109. package/dist/esm/codec/MessageCodec.d.ts +1 -1
  110. package/dist/esm/events/OccurrenceManager.d.ts +1 -0
  111. package/dist/esm/events/OccurrenceManager.d.ts.map +1 -1
  112. package/dist/esm/events/OccurrenceManager.js +14 -8
  113. package/dist/esm/events/OccurrenceManager.js.map +1 -1
  114. package/dist/esm/fabric/Fabric.d.ts +8 -6
  115. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  116. package/dist/esm/fabric/Fabric.js +22 -14
  117. package/dist/esm/fabric/Fabric.js.map +1 -1
  118. package/dist/esm/fabric/FabricAuthority.d.ts +4 -0
  119. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  120. package/dist/esm/fabric/FabricAuthority.js +6 -0
  121. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  122. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  123. package/dist/esm/fabric/FabricManager.js +9 -2
  124. package/dist/esm/fabric/FabricManager.js.map +1 -1
  125. package/dist/esm/fabric/TestFabric.d.ts +30 -0
  126. package/dist/esm/fabric/TestFabric.d.ts.map +1 -0
  127. package/dist/esm/fabric/TestFabric.js +50 -0
  128. package/dist/esm/fabric/TestFabric.js.map +6 -0
  129. package/dist/esm/fabric/index.d.ts +1 -0
  130. package/dist/esm/fabric/index.d.ts.map +1 -1
  131. package/dist/esm/fabric/index.js +1 -0
  132. package/dist/esm/fabric/index.js.map +1 -1
  133. package/dist/esm/groups/{FabricGroupsManager.d.ts → FabricGroups.d.ts} +2 -2
  134. package/dist/esm/groups/FabricGroups.d.ts.map +1 -0
  135. package/dist/esm/groups/{FabricGroupsManager.js → FabricGroups.js} +6 -6
  136. package/dist/esm/groups/FabricGroups.js.map +6 -0
  137. package/dist/esm/groups/KeySets.js +1 -1
  138. package/dist/esm/groups/KeySets.js.map +1 -1
  139. package/dist/esm/groups/index.d.ts +1 -1
  140. package/dist/esm/groups/index.d.ts.map +1 -1
  141. package/dist/esm/groups/index.js +1 -1
  142. package/dist/esm/interaction/{AccessControlManager.d.ts → FabricAccessControl.d.ts} +12 -7
  143. package/dist/esm/interaction/FabricAccessControl.d.ts.map +1 -0
  144. package/dist/esm/interaction/{AccessControlManager.js → FabricAccessControl.js} +44 -19
  145. package/dist/esm/interaction/FabricAccessControl.js.map +6 -0
  146. package/dist/esm/interaction/index.d.ts +1 -1
  147. package/dist/esm/interaction/index.d.ts.map +1 -1
  148. package/dist/esm/interaction/index.js +1 -1
  149. package/dist/esm/mdns/MdnsScanner.d.ts +1 -1
  150. package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -1
  151. package/dist/esm/mdns/MdnsScanner.js +2 -6
  152. package/dist/esm/mdns/MdnsScanner.js.map +1 -1
  153. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  154. package/dist/esm/peer/ControllerCommissioningFlow.js +2 -4
  155. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  156. package/dist/esm/protocol/DeviceCommissioner.js +1 -1
  157. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  158. package/dist/esm/protocol/MessageExchange.d.ts +6 -0
  159. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  160. package/dist/esm/protocol/MessageExchange.js +13 -0
  161. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  162. package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts +1 -1
  163. package/dist/esm/session/NodeSession.js +1 -1
  164. package/dist/esm/session/Session.d.ts +1 -1
  165. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  166. package/dist/esm/session/SessionManager.js +1 -0
  167. package/dist/esm/session/SessionManager.js.map +1 -1
  168. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  169. package/dist/esm/session/case/CaseClient.js +34 -30
  170. package/dist/esm/session/case/CaseClient.js.map +1 -1
  171. package/dist/esm/session/case/CaseMessages.d.ts +8 -8
  172. package/dist/esm/session/case/CaseMessages.js +8 -8
  173. package/dist/esm/session/case/CaseMessages.js.map +1 -1
  174. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  175. package/dist/esm/session/case/CaseServer.js +26 -23
  176. package/dist/esm/session/case/CaseServer.js.map +1 -1
  177. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
  178. package/dist/esm/session/pase/PaseClient.js +4 -1
  179. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  180. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  181. package/dist/esm/session/pase/PaseServer.js +4 -1
  182. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  183. package/package.json +6 -6
  184. package/src/certificate/AttestationCertificateManager.ts +2 -2
  185. package/src/certificate/CertificateAuthority.ts +7 -7
  186. package/src/certificate/CertificateManager.ts +22 -11
  187. package/src/certificate/DeviceCertification.ts +5 -3
  188. package/src/events/OccurrenceManager.ts +16 -9
  189. package/src/fabric/Fabric.ts +24 -15
  190. package/src/fabric/FabricAuthority.ts +7 -0
  191. package/src/fabric/FabricManager.ts +9 -2
  192. package/src/fabric/TestFabric.ts +73 -0
  193. package/src/fabric/index.ts +1 -0
  194. package/src/groups/{FabricGroupsManager.ts → FabricGroups.ts} +4 -4
  195. package/src/groups/KeySets.ts +1 -1
  196. package/src/groups/index.ts +1 -1
  197. package/src/interaction/{AccessControlManager.ts → FabricAccessControl.ts} +61 -25
  198. package/src/interaction/index.ts +1 -1
  199. package/src/mdns/MdnsScanner.ts +2 -6
  200. package/src/peer/ControllerCommissioningFlow.ts +2 -4
  201. package/src/protocol/DeviceCommissioner.ts +1 -1
  202. package/src/protocol/MessageExchange.ts +14 -0
  203. package/src/session/NodeSession.ts +1 -1
  204. package/src/session/SessionManager.ts +1 -0
  205. package/src/session/case/CaseClient.ts +34 -30
  206. package/src/session/case/CaseMessages.ts +8 -8
  207. package/src/session/case/CaseServer.ts +27 -23
  208. package/src/session/pase/PaseClient.ts +4 -1
  209. package/src/session/pase/PaseServer.ts +4 -1
  210. package/dist/cjs/groups/FabricGroupsManager.d.ts.map +0 -1
  211. package/dist/cjs/groups/FabricGroupsManager.js.map +0 -6
  212. package/dist/cjs/interaction/AccessControlManager.d.ts.map +0 -1
  213. package/dist/cjs/interaction/AccessControlManager.js.map +0 -6
  214. package/dist/esm/groups/FabricGroupsManager.d.ts.map +0 -1
  215. package/dist/esm/groups/FabricGroupsManager.js.map +0 -6
  216. package/dist/esm/interaction/AccessControlManager.d.ts.map +0 -1
  217. package/dist/esm/interaction/AccessControlManager.js.map +0 -6
@@ -70,7 +70,7 @@ class CaseServer {
70
70
  return false;
71
71
  }
72
72
  const { sharedSecret, fabric, peerNodeId, caseAuthenticatedTags } = cx.resumptionRecord;
73
- const peerResumeKey = await Crypto.hkdf(
73
+ const peerResumeKey = await Crypto.createHkdfKey(
74
74
  sharedSecret,
75
75
  Bytes.concat(cx.peerRandom, cx.peerResumptionId),
76
76
  KDFSR1_KEY_INFO
@@ -97,7 +97,7 @@ class CaseServer {
97
97
  caseAuthenticatedTags
98
98
  });
99
99
  const resumeSalt = Bytes.concat(cx.peerRandom, cx.localResumptionId);
100
- const resumeKey = await Crypto.hkdf(sharedSecret, resumeSalt, KDFSR2_KEY_INFO);
100
+ const resumeKey = await Crypto.createHkdfKey(sharedSecret, resumeSalt, KDFSR2_KEY_INFO);
101
101
  const resumeMic = Crypto.encrypt(resumeKey, new Uint8Array(0), RESUME2_MIC_NONCE);
102
102
  try {
103
103
  await cx.messenger.sendSigma2Resume({
@@ -135,26 +135,26 @@ class CaseServer {
135
135
  const responderRandom = Crypto.getRandom();
136
136
  const fabric = await this.#fabrics.findFabricFromDestinationId(cx.destinationId, cx.peerRandom);
137
137
  const { operationalCert: nodeOpCert, intermediateCACert, operationalIdentityProtectionKey } = fabric;
138
- const { publicKey: responderEcdhPublicKey, sharedSecret } = await Crypto.ecdhGeneratePublicKeyAndSecret(
139
- cx.peerEcdhPublicKey
140
- );
138
+ const key = await Crypto.createKeyPair();
139
+ const responderEcdhPublicKey = key.publicBits;
140
+ const sharedSecret = await Crypto.generateDhSecret(key, PublicKey(cx.peerEcdhPublicKey));
141
141
  const sigma2Salt = Bytes.concat(
142
142
  operationalIdentityProtectionKey,
143
143
  responderRandom,
144
144
  responderEcdhPublicKey,
145
- await Crypto.hash(cx.bytes)
145
+ await Crypto.computeSha256(cx.bytes)
146
146
  );
147
- const sigma2Key = await Crypto.hkdf(sharedSecret, sigma2Salt, KDFSR2_INFO);
147
+ const sigma2Key = await Crypto.createHkdfKey(sharedSecret, sigma2Salt, KDFSR2_INFO);
148
148
  const signatureData = TlvSignedData.encode({
149
- nodeOpCert,
150
- intermediateCACert,
151
- ecdhPublicKey: responderEcdhPublicKey,
152
- peerEcdhPublicKey: cx.peerEcdhPublicKey
149
+ responderNoc: nodeOpCert,
150
+ responderIcac: intermediateCACert,
151
+ responderPublicKey: responderEcdhPublicKey,
152
+ initiatorPublicKey: cx.peerEcdhPublicKey
153
153
  });
154
154
  const signature = await fabric.sign(signatureData);
155
155
  const encryptedData = TlvEncryptedDataSigma2.encode({
156
- nodeOpCert,
157
- intermediateCACert,
156
+ responderNoc: nodeOpCert,
157
+ responderIcac: intermediateCACert,
158
158
  signature,
159
159
  resumptionId: cx.localResumptionId
160
160
  });
@@ -172,20 +172,23 @@ class CaseServer {
172
172
  sigma3Bytes,
173
173
  sigma3: { encrypted: peerEncrypted }
174
174
  } = await cx.messenger.readSigma3();
175
- const sigma3Salt = Bytes.concat(operationalIdentityProtectionKey, await Crypto.hash([cx.bytes, sigma2Bytes]));
176
- const sigma3Key = await Crypto.hkdf(sharedSecret, sigma3Salt, KDFSR3_INFO);
175
+ const sigma3Salt = Bytes.concat(
176
+ operationalIdentityProtectionKey,
177
+ await Crypto.computeSha256([cx.bytes, sigma2Bytes])
178
+ );
179
+ const sigma3Key = await Crypto.createHkdfKey(sharedSecret, sigma3Salt, KDFSR3_INFO);
177
180
  const peerDecryptedData = Crypto.decrypt(sigma3Key, peerEncrypted, TBE_DATA3_NONCE);
178
181
  const {
179
- nodeOpCert: peerNewOpCert,
180
- intermediateCACert: peerIntermediateCACert,
182
+ responderNoc: peerNewOpCert,
183
+ responderIcac: peerIntermediateCACert,
181
184
  signature: peerSignature
182
185
  } = TlvEncryptedDataSigma3.decode(peerDecryptedData);
183
186
  await fabric.verifyCredentials(peerNewOpCert, peerIntermediateCACert);
184
187
  const peerSignatureData = TlvSignedData.encode({
185
- nodeOpCert: peerNewOpCert,
186
- intermediateCACert: peerIntermediateCACert,
187
- ecdhPublicKey: cx.peerEcdhPublicKey,
188
- peerEcdhPublicKey: responderEcdhPublicKey
188
+ responderNoc: peerNewOpCert,
189
+ responderIcac: peerIntermediateCACert,
190
+ responderPublicKey: cx.peerEcdhPublicKey,
191
+ initiatorPublicKey: responderEcdhPublicKey
189
192
  });
190
193
  const {
191
194
  ellipticCurvePublicKey: peerPublicKey,
@@ -194,10 +197,10 @@ class CaseServer {
194
197
  if (fabric.fabricId !== peerFabricId) {
195
198
  throw new UnexpectedDataError(`Fabric ID mismatch: ${fabric.fabricId} !== ${peerFabricId}`);
196
199
  }
197
- await Crypto.verify(PublicKey(peerPublicKey), peerSignatureData, peerSignature);
200
+ await Crypto.verifyEcdsa(PublicKey(peerPublicKey), peerSignatureData, peerSignature);
198
201
  const secureSessionSalt = Bytes.concat(
199
202
  operationalIdentityProtectionKey,
200
- await Crypto.hash([cx.bytes, sigma2Bytes, sigma3Bytes])
203
+ await Crypto.computeSha256([cx.bytes, sigma2Bytes, sigma3Bytes])
201
204
  );
202
205
  const secureSession = await this.#sessions.createSecureSession({
203
206
  sessionId: responderSessionId,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/session/case/CaseServer.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,QAAQ,oBAAoB,QAAQ,WAAW,2BAA2B;AAG1F,SAAS,QAAQ,oBAAoB,kCAAkD;AACvF,SAAS,iCAAiC;AAC1C,SAAwB,2BAA2B;AAGnD,SAAS,kCAAkC;AAC3C;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,2BAA2B;AAEpC,MAAM,SAAS,OAAO,IAAI,YAAY;AAE/B,MAAM,WAAsC;AAAA,EACtC,KAAK;AAAA,EACL,wBAAwB;AAAA,EAEjC;AAAA,EACA;AAAA,EAEA,YAAY,UAA0B,SAAwB;AAC1D,SAAK,YAAY;AACjB,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,MAAM,cAAc,UAA2B;AAC3C,UAAM,YAAY,IAAI,oBAAoB,QAAQ;AAClD,QAAI;AACA,YAAM,KAAK,cAAc,SAAS;AAAA,IACtC,SAAS,OAAO;AACZ,aAAO,MAAM,8CAA8C,KAAK;AAEhE,UAAI,iBAAiB,qBAAqB;AACtC,cAAM,UAAU,UAAU,mBAAmB,kBAAkB;AAAA,MACnE,WAES,EAAE,iBAAiB,6BAA6B;AACrD,cAAM,UAAU,UAAU,mBAAmB,YAAY;AAAA,MAC7D;AAAA,IACJ,UAAE;AAEE,YAAM,SAAS,QAAQ,QAAQ;AAAA,IACnC;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc,WAAgC;AAChD,WAAO,KAAK,iCAAiC,UAAU,eAAe,CAAC,EAAE;AAGzE,UAAM,EAAE,aAAa,OAAO,IAAI,MAAM,UAAU,WAAW;AAC3D,UAAM,mBACF,OAAO,iBAAiB,UAAa,OAAO,uBAAuB,SAC7D,KAAK,UAAU,yBAAyB,OAAO,YAAY,IAC3D;AAEV,UAAM,UAAU,IAAI,cAAc,WAAW,aAAa,QAAQ,gBAAgB;AAGlF,QAAI,MAAM,KAAK,QAAQ,OAAO,GAAG;AAC7B;AAAA,IACJ;AAGA,QAAI,MAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,qDAAqD,UAAU,eAAe,CAAC;AAAA,MAC/E,QAAQ;AAAA,MACR,QAAQ;AAAA,IACZ;AAEA,UAAM,IAAI,oBAAoB,sCAAsC;AAAA,EACxE;AAAA,EAEA,MAAM,QAAQ,IAAmB;AAC7B,QAAI,GAAG,qBAAqB,UAAa,GAAG,kBAAkB,UAAa,GAAG,qBAAqB,QAAW;AAC1G,aAAO;AAAA,IACX;AAEA,UAAM,EAAE,cAAc,QAAQ,YAAY,sBAAsB,IAAI,GAAG;AACvE,UAAM,gBAAgB,MAAM,OAAO;AAAA,MAC/B;AAAA,MACA,MAAM,OAAO,GAAG,YAAY,GAAG,gBAAgB;AAAA,MAC/C;AAAA,IACJ;AAEA,QAAI;AACA,aAAO,QAAQ,eAAe,GAAG,eAAe,iBAAiB;AAAA,IACrE,SAAS,GAAG;AACR,yBAAmB,OAAO,CAAC;AAG3B,SAAG,mBAAmB,GAAG,gBAAgB;AAEzC,aAAO;AAAA,IACX;AAGA,UAAM,qBAAqB,MAAM,KAAK,UAAU,0BAA0B;AAC1E,UAAM,oBAAoB,MAAM,OAAO,GAAG,YAAY,GAAG,gBAAgB;AACzE,UAAM,gBAAgB,MAAM,KAAK,UAAU,oBAAoB;AAAA,MAC3D,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,eAAe,GAAG;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,MACd,uBAAuB,GAAG;AAAA,MAC1B;AAAA,IACJ,CAAC;AAGD,UAAM,aAAa,MAAM,OAAO,GAAG,YAAY,GAAG,iBAAiB;AACnE,UAAM,YAAY,MAAM,OAAO,KAAK,cAAc,YAAY,eAAe;AAC7E,UAAM,YAAY,OAAO,QAAQ,WAAW,IAAI,WAAW,CAAC,GAAG,iBAAiB;AAChF,QAAI;AACA,YAAM,GAAG,UAAU,iBAAiB;AAAA,QAChC,cAAc,GAAG;AAAA,QACjB;AAAA,QACA;AAAA,QACA,wBAAwB,KAAK,UAAU;AAAA;AAAA,MAC3C,CAAC;AAAA,IACL,SAAS,OAAO;AAEZ,YAAM,cAAc,QAAQ,KAAK;AACjC,YAAM;AAAA,IACV;AAEA,WAAO;AAAA,MACH,WAAW,cAAc,EAAE,iBAAiB,GAAG,UAAU,eAAe,CAAC,eAAe,OAAO;AAAA,QAC3F,OAAO;AAAA,MACX,CAAC,WAAW,OAAO,WAAW,kBAAkB,OAAO,YAAY,UAAU,CAAC;AAAA,MAC9E;AAAA,MACA;AAAA,IACJ;AACA,OAAG,iBAAiB,eAAe,GAAG;AAGtC,UAAM,GAAG,UAAU,eAAe,sBAAsB;AAExD,UAAM,GAAG,UAAU,MAAM;AACzB,UAAM,KAAK,UAAU,qBAAqB,GAAG,gBAAgB;AAE7D,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,gBAAgB,IAAmB;AACrC;AAAA;AAAA,MAEI,EAAE,GAAG,qBAAqB,UAAa,GAAG,kBAAkB;AAAA,MAE5D,EAAE,GAAG,qBAAqB,UAAa,GAAG,kBAAkB,UAAa,GAAG,qBAAqB;AAAA,MACnG;AACE,aAAO;AAAA,IACX;AAGA,UAAM,kBAAkB,OAAO,UAAU;AAGzC,UAAM,SAAS,MAAM,KAAK,SAAS,4BAA4B,GAAG,eAAe,GAAG,UAAU;AAC9F,UAAM,EAAE,iBAAiB,YAAY,oBAAoB,iCAAiC,IAAI;AAC9F,UAAM,EAAE,WAAW,wBAAwB,aAAa,IAAI,MAAM,OAAO;AAAA,MACrE,GAAG;AAAA,IACP;AACA,UAAM,aAAa,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,OAAO,KAAK,GAAG,KAAK;AAAA,IAC9B;AACA,UAAM,YAAY,MAAM,OAAO,KAAK,cAAc,YAAY,WAAW;AACzE,UAAM,gBAAgB,cAAc,OAAO;AAAA,MACvC;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,mBAAmB,GAAG;AAAA,IAC1B,CAAC;AACD,UAAM,YAAY,MAAM,OAAO,KAAK,aAAa;AACjD,UAAM,gBAAgB,uBAAuB,OAAO;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,GAAG;AAAA,IACrB,CAAC;AACD,UAAM,YAAY,OAAO,QAAQ,WAAW,eAAe,eAAe;AAC1E,UAAM,qBAAqB,MAAM,KAAK,UAAU,0BAA0B;AAC1E,UAAM,cAAc,MAAM,GAAG,UAAU,WAAW;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,wBAAwB,KAAK,UAAU;AAAA;AAAA,IAC3C,CAAC;AAGD,UAAM;AAAA,MACF;AAAA,MACA,QAAQ,EAAE,WAAW,cAAc;AAAA,IACvC,IAAI,MAAM,GAAG,UAAU,WAAW;AAClC,UAAM,aAAa,MAAM,OAAO,kCAAkC,MAAM,OAAO,KAAK,CAAC,GAAG,OAAO,WAAW,CAAC,CAAC;AAC5G,UAAM,YAAY,MAAM,OAAO,KAAK,cAAc,YAAY,WAAW;AACzE,UAAM,oBAAoB,OAAO,QAAQ,WAAW,eAAe,eAAe;AAClF,UAAM;AAAA,MACF,YAAY;AAAA,MACZ,oBAAoB;AAAA,MACpB,WAAW;AAAA,IACf,IAAI,uBAAuB,OAAO,iBAAiB;AAEnD,UAAM,OAAO,kBAAkB,eAAe,sBAAsB;AAEpE,UAAM,oBAAoB,cAAc,OAAO;AAAA,MAC3C,YAAY;AAAA,MACZ,oBAAoB;AAAA,MACpB,eAAe,GAAG;AAAA,MAClB,mBAAmB;AAAA,IACvB,CAAC;AACD,UAAM;AAAA,MACF,wBAAwB;AAAA,MACxB,SAAS,EAAE,UAAU,cAAc,QAAQ,YAAY,sBAAsB;AAAA,IACjF,IAAI,0BAA0B,OAAO,aAAa;AAElD,QAAI,OAAO,aAAa,cAAc;AAClC,YAAM,IAAI,oBAAoB,uBAAuB,OAAO,QAAQ,QAAQ,YAAY,EAAE;AAAA,IAC9F;AAEA,UAAM,OAAO,OAAO,UAAU,aAAa,GAAG,mBAAmB,aAAa;AAG9E,UAAM,oBAAoB,MAAM;AAAA,MAC5B;AAAA,MACA,MAAM,OAAO,KAAK,CAAC,GAAG,OAAO,aAAa,WAAW,CAAC;AAAA,IAC1D;AACA,UAAM,gBAAgB,MAAM,KAAK,UAAU,oBAAoB;AAAA,MAC3D,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,eAAe,GAAG;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,MACd,uBAAuB,GAAG;AAAA,MAC1B;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,MACH,WAAW,cAAc,EAAE,iBAAiB,GAAG,UAAU,eAAe,CAAC,eAAe,OAAO;AAAA,QAC3F,OAAO;AAAA,MACX,CAAC,WAAW,OAAO,WAAW,kBAAkB,OAAO,YAAY,UAAU,CAAC;AAAA,MAC9E;AAAA,MACA;AAAA,IACJ;AACA,UAAM,GAAG,UAAU,YAAY;AAE/B,UAAM,mBAAmB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,GAAG;AAAA,MACjB,mBAAmB,cAAc;AAAA,MACjC;AAAA,IACJ;AAEA,UAAM,GAAG,UAAU,MAAM;AACzB,UAAM,KAAK,UAAU,qBAAqB,gBAAgB;AAE1D,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QAAQ;AAAA,EAEd;AACJ;AAEA,MAAM,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA,YACI,WACA,OACA,QACA,kBACF;AACE,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,gBAAgB,OAAO;AAC5B,SAAK,mBAAmB,OAAO;AAC/B,SAAK,gBAAgB,OAAO;AAC5B,SAAK,gBAAgB,OAAO;AAC5B,SAAK,aAAa,OAAO;AACzB,SAAK,oBAAoB,OAAO;AAChC,SAAK,oBAAoB,OAAO;AAChC,SAAK,mBAAmB;AAAA,EAC5B;AAAA,EAEA,IAAI,oBAAoB;AACpB,WAAQ,KAAK,uBAAuB,OAAO,cAAc,EAAE;AAAA,EAC/D;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PaseClient.d.ts","sourceRoot":"","sources":["../../../../src/session/pase/PaseClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA6B,eAAe,EAAgC,MAAM,UAAU,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOlD,qBAAa,UAAU;;gBAGP,QAAQ,EAAE,cAAc;WAIvB,4BAA4B,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAKhG,MAAM,CAAC,sBAAsB;IAS7B,MAAM,CAAC,2BAA2B;IAI5B,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM;CA0E/F"}
1
+ {"version":3,"file":"PaseClient.d.ts","sourceRoot":"","sources":["../../../../src/session/pase/PaseClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA6B,eAAe,EAAgC,MAAM,UAAU,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOlD,qBAAa,UAAU;;gBAGP,QAAQ,EAAE,cAAc;WAIvB,4BAA4B,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAKhG,MAAM,CAAC,sBAAsB;IAS7B,MAAM,CAAC,2BAA2B;IAI5B,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM;CA6E/F"}
@@ -58,7 +58,10 @@ class PaseClient {
58
58
  ...responderSessionParams ?? {}
59
59
  };
60
60
  const { w0, w1 } = await Spake2p.computeW0W1(pbkdfParameters, setupPin);
61
- const spake2p = Spake2p.create(await Crypto.hash([SPAKE_CONTEXT, requestPayload, responsePayload]), w0);
61
+ const spake2p = Spake2p.create(
62
+ await Crypto.computeSha256([SPAKE_CONTEXT, requestPayload, responsePayload]),
63
+ w0
64
+ );
62
65
  const X = spake2p.computeX();
63
66
  await messenger.sendPasePake1({ x: X });
64
67
  const { y: Y, verifier } = await messenger.readPasePake2();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/session/pase/PaseClient.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PaseServer.d.ts","sourceRoot":"","sources":["../../../../src/session/pase/PaseServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKH,eAAe,EACf,eAAe,EAKlB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAuB,mBAAmB,EAAiB,MAAM,oBAAoB,CAAC;AAS7F,qBAAa,oCAAqC,SAAQ,eAAe;CAAG;AAE5E,qBAAa,UAAW,YAAW,eAAe;;IAuB1C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAzBrC,QAAQ,CAAC,EAAE,KAA8B;IACzC,QAAQ,CAAC,qBAAqB,SAAS;WAK1B,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAKrG,MAAM,CAAC,qBAAqB,CACxB,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,UAAU,EAC7B,eAAe,CAAC,EAAE,eAAe;gBAQzB,QAAQ,EAAE,cAAc,EACf,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,UAAU,EACb,eAAe,CAAC,EAAE,eAAe,YAAA;IAGhD,aAAa,CAAC,QAAQ,EAAE,eAAe;YAuC/B,oBAAoB;IA6E5B,aAAa,CAAC,SAAS,EAAE,mBAAmB,EAAE,SAAS,UAAO;IAU9D,KAAK;CAGd"}
1
+ {"version":3,"file":"PaseServer.d.ts","sourceRoot":"","sources":["../../../../src/session/pase/PaseServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKH,eAAe,EACf,eAAe,EAKlB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAuB,mBAAmB,EAAiB,MAAM,oBAAoB,CAAC;AAS7F,qBAAa,oCAAqC,SAAQ,eAAe;CAAG;AAE5E,qBAAa,UAAW,YAAW,eAAe;;IAuB1C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAzBrC,QAAQ,CAAC,EAAE,KAA8B;IACzC,QAAQ,CAAC,qBAAqB,SAAS;WAK1B,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAKrG,MAAM,CAAC,qBAAqB,CACxB,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,UAAU,EAC7B,eAAe,CAAC,EAAE,eAAe;gBAQzB,QAAQ,EAAE,cAAc,EACf,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,UAAU,EACb,eAAe,CAAC,EAAE,eAAe,YAAA;IAGhD,aAAa,CAAC,QAAQ,EAAE,eAAe;YAuC/B,oBAAoB;IAgF5B,aAAa,CAAC,SAAS,EAAE,mBAAmB,EAAE,SAAS,UAAO;IAU9D,KAAK;CAGd"}
@@ -107,7 +107,10 @@ class PaseServer {
107
107
  maxTcpMessageSize: tcpSupported ? responderSessionParams.maxTcpMessageSize : void 0
108
108
  }
109
109
  });
110
- const spake2p = Spake2p.create(await Crypto.hash([SPAKE_CONTEXT, requestPayload, responsePayload]), this.w0);
110
+ const spake2p = Spake2p.create(
111
+ await Crypto.computeSha256([SPAKE_CONTEXT, requestPayload, responsePayload]),
112
+ this.w0
113
+ );
111
114
  const { x: X } = await messenger.readPasePake1();
112
115
  const Y = spake2p.computeY();
113
116
  const { Ke, hAY, hBX } = await spake2p.computeSecretAndVerifiersFromX(this.L, X, Y);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/session/pase/PaseServer.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/protocol",
3
- "version": "0.14.1-alpha.0-20250607-a93593303",
3
+ "version": "0.15.0-alpha.0-20250613-a55f991d4",
4
4
  "description": "Low-level APIs for Matter interaction",
5
5
  "keywords": [
6
6
  "iot",
@@ -40,13 +40,13 @@
40
40
  "#*": "./src/*"
41
41
  },
42
42
  "dependencies": {
43
- "@matter/general": "0.14.1-alpha.0-20250607-a93593303",
44
- "@matter/model": "0.14.1-alpha.0-20250607-a93593303",
45
- "@matter/types": "0.14.1-alpha.0-20250607-a93593303"
43
+ "@matter/general": "0.15.0-alpha.0-20250613-a55f991d4",
44
+ "@matter/model": "0.15.0-alpha.0-20250613-a55f991d4",
45
+ "@matter/types": "0.15.0-alpha.0-20250613-a55f991d4"
46
46
  },
47
47
  "devDependencies": {
48
- "@matter/tools": "0.14.1-alpha.0-20250607-a93593303",
49
- "@matter/testing": "0.14.1-alpha.0-20250607-a93593303"
48
+ "@matter/tools": "0.15.0-alpha.0-20250613-a55f991d4",
49
+ "@matter/testing": "0.15.0-alpha.0-20250613-a55f991d4"
50
50
  },
51
51
  "files": [
52
52
  "dist/**/*",
@@ -53,7 +53,7 @@ export class AttestationCertificateManager {
53
53
 
54
54
  static async create(vendorId: VendorId) {
55
55
  const key = await Crypto.createKeyPair();
56
- const identifier = await Crypto.hash(key.publicKey);
56
+ const identifier = await Crypto.computeSha256(key.publicKey);
57
57
  return new AttestationCertificateManager(vendorId, key, identifier.slice(0, 20));
58
58
  }
59
59
 
@@ -167,7 +167,7 @@ export class AttestationCertificateManager {
167
167
  keyUsage: {
168
168
  digitalSignature: true,
169
169
  },
170
- subjectKeyIdentifier: (await Crypto.hash(publicKey)).slice(0, 20),
170
+ subjectKeyIdentifier: (await Crypto.computeSha256(publicKey)).slice(0, 20),
171
171
  authorityKeyIdentifier: this.#paiKeyIdentifier,
172
172
  },
173
173
  };
@@ -49,17 +49,17 @@ export class CertificateAuthority {
49
49
  return this.#construction;
50
50
  }
51
51
 
52
- static async create(options: StorageContext | CertificateAuthority.Configuration) {
52
+ static async create(options?: StorageContext | CertificateAuthority.Configuration) {
53
53
  return asyncNew(CertificateAuthority, options);
54
54
  }
55
55
 
56
- constructor(options: StorageContext | CertificateAuthority.Configuration) {
56
+ constructor(options?: StorageContext | CertificateAuthority.Configuration) {
57
57
  this.#construction = Construction(this, async () => {
58
58
  // Use provided CA config or read from storage, otherwise initialize and store
59
- const certValues = options instanceof StorageContext ? await options.values() : options;
59
+ const certValues = options instanceof StorageContext ? await options.values() : (options ?? {});
60
60
 
61
61
  this.#rootKeyPair = await Crypto.createKeyPair();
62
- this.#rootKeyIdentifier = (await Crypto.hash(this.#rootKeyPair.publicKey)).slice(0, 20);
62
+ this.#rootKeyIdentifier = (await Crypto.computeSha256(this.#rootKeyPair.publicKey)).slice(0, 20);
63
63
  this.#rootCertBytes = await this.#generateRootCert();
64
64
 
65
65
  if (
@@ -135,7 +135,7 @@ export class CertificateAuthority {
135
135
  authorityKeyIdentifier: this.#initializedRootKeyIdentifier,
136
136
  },
137
137
  };
138
- const signature = await Crypto.sign(
138
+ const signature = await Crypto.signEcdsa(
139
139
  this.#initializedRootKeyPair,
140
140
  CertificateManager.rootCertToAsn1(unsignedCertificate),
141
141
  );
@@ -166,12 +166,12 @@ export class CertificateAuthority {
166
166
  digitalSignature: true,
167
167
  },
168
168
  extendedKeyUsage: [2, 1],
169
- subjectKeyIdentifier: (await Crypto.hash(publicKey)).slice(0, 20),
169
+ subjectKeyIdentifier: (await Crypto.computeSha256(publicKey)).slice(0, 20),
170
170
  authorityKeyIdentifier: this.#initializedRootKeyIdentifier,
171
171
  },
172
172
  };
173
173
 
174
- const signature = await Crypto.sign(
174
+ const signature = await Crypto.signEcdsa(
175
175
  this.#initializedRootKeyPair,
176
176
  CertificateManager.nodeOperationalCertToAsn1(unsignedCertificate),
177
177
  );
@@ -5,12 +5,12 @@
5
5
  */
6
6
 
7
7
  import {
8
- BitByteArray,
9
8
  Bytes,
10
9
  ContextTagged,
11
10
  ContextTaggedBytes,
12
11
  Crypto,
13
12
  DatatypeOverride,
13
+ DerBitString,
14
14
  DerCodec,
15
15
  DerKey,
16
16
  DerObject,
@@ -666,10 +666,11 @@ export namespace CertificateManager {
666
666
 
667
667
  export async function deviceAttestationCertToAsn1(cert: Unsigned<DeviceAttestationCertificate>, key: Key) {
668
668
  const certificate = genericBuildAsn1Structure(cert);
669
+ const signature = await Crypto.signEcdsa(key, DerCodec.encode(certificate), "der");
669
670
  const certBytes = DerCodec.encode({
670
671
  certificate,
671
672
  signAlgorithm: X962.EcdsaWithSHA256,
672
- signature: BitByteArray(await Crypto.sign(key, DerCodec.encode(certificate), "der")),
673
+ signature: DerBitString(signature),
673
674
  });
674
675
  assertCertificateDerSize(certBytes);
675
676
  return certBytes;
@@ -680,10 +681,11 @@ export namespace CertificateManager {
680
681
  key: Key,
681
682
  ) {
682
683
  const certificate = genericBuildAsn1Structure(cert);
684
+ const signature = await Crypto.signEcdsa(key, DerCodec.encode(certificate), "der");
683
685
  const certBytes = DerCodec.encode({
684
686
  certificate,
685
687
  signAlgorithm: X962.EcdsaWithSHA256,
686
- signature: BitByteArray(await Crypto.sign(key, DerCodec.encode(certificate), "der")),
688
+ signature: DerBitString(signature),
687
689
  });
688
690
  assertCertificateDerSize(certBytes);
689
691
  return certBytes;
@@ -697,13 +699,13 @@ export namespace CertificateManager {
697
699
  const certBytes = DerCodec.encode({
698
700
  certificate,
699
701
  signAlgorithm: X962.EcdsaWithSHA256,
700
- signature: BitByteArray(await Crypto.sign(key, DerCodec.encode(certificate), "der")),
702
+ signature: DerBitString(await Crypto.signEcdsa(key, DerCodec.encode(certificate), "der")),
701
703
  });
702
704
  assertCertificateDerSize(certBytes);
703
705
  return certBytes;
704
706
  }
705
707
 
706
- export function certificationDeclarationToAsn1(
708
+ export async function certificationDeclarationToAsn1(
707
709
  eContent: Uint8Array,
708
710
  subjectKeyIdentifier: Uint8Array,
709
711
  privateKey: JsonWebKey,
@@ -718,7 +720,7 @@ export namespace CertificateManager {
718
720
  subjectKeyIdentifier: ContextTaggedBytes(0, subjectKeyIdentifier),
719
721
  digestAlgorithm: SHA256_CMS,
720
722
  signatureAlgorithm: X962.EcdsaWithSHA256,
721
- signature: Crypto.sign(privateKey, eContent, "der"),
723
+ signature: await Crypto.signEcdsa(privateKey, eContent, "der"),
722
724
  },
723
725
  ],
724
726
  };
@@ -861,7 +863,11 @@ export namespace CertificateManager {
861
863
  );
862
864
  }
863
865
 
864
- await Crypto.verify(PublicKey(rootCert.ellipticCurvePublicKey), rootCertToAsn1(rootCert), rootCert.signature);
866
+ await Crypto.verifyEcdsa(
867
+ PublicKey(rootCert.ellipticCurvePublicKey),
868
+ rootCertToAsn1(rootCert),
869
+ rootCert.signature,
870
+ );
865
871
  }
866
872
 
867
873
  /**
@@ -985,7 +991,7 @@ export namespace CertificateManager {
985
991
  );
986
992
  }
987
993
 
988
- await Crypto.verify(
994
+ await Crypto.verifyEcdsa(
989
995
  PublicKey((icaCert ?? rootCert).ellipticCurvePublicKey),
990
996
  nodeOperationalCertToAsn1(nocCert),
991
997
  nocCert.signature,
@@ -1103,7 +1109,7 @@ export namespace CertificateManager {
1103
1109
  );
1104
1110
  }
1105
1111
 
1106
- await Crypto.verify(
1112
+ await Crypto.verifyEcdsa(
1107
1113
  PublicKey(rootCert.ellipticCurvePublicKey),
1108
1114
  intermediateCaCertToAsn1(icaCert),
1109
1115
  icaCert.signature,
@@ -1121,7 +1127,7 @@ export namespace CertificateManager {
1121
1127
  return DerCodec.encode({
1122
1128
  request,
1123
1129
  signAlgorithm: X962.EcdsaWithSHA256,
1124
- signature: BitByteArray(await Crypto.sign(key, DerCodec.encode(request), "der")),
1130
+ signature: DerBitString(await Crypto.signEcdsa(key, DerCodec.encode(request), "der")),
1125
1131
  });
1126
1132
  }
1127
1133
 
@@ -1153,7 +1159,12 @@ export namespace CertificateManager {
1153
1159
  )
1154
1160
  )
1155
1161
  throw new CertificateError("Unsupported signature type");
1156
- await Crypto.verify(PublicKey(publicKey), DerCodec.encode(requestNode), signatureNode[DerKey.Bytes], "der");
1162
+ await Crypto.verifyEcdsa(
1163
+ PublicKey(publicKey),
1164
+ DerCodec.encode(requestNode),
1165
+ signatureNode[DerKey.Bytes],
1166
+ "der",
1167
+ );
1157
1168
 
1158
1169
  return publicKey;
1159
1170
  }
@@ -55,7 +55,7 @@ export class DeviceCertification {
55
55
  privateKey: PrivateKey(dacKeyPair.privateKey),
56
56
  certificate: dac,
57
57
  intermediateCertificate: await paa.getPAICert(),
58
- declaration: CertificationDeclarationManager.generate(product.vendorId, product.productId),
58
+ declaration: await CertificationDeclarationManager.generate(product.vendorId, product.productId),
59
59
  };
60
60
  };
61
61
  }
@@ -71,8 +71,10 @@ export class DeviceCertification {
71
71
  });
72
72
  }
73
73
 
74
- sign(session: NodeSession, data: Uint8Array) {
75
- return Crypto.sign(this.#assertInitialized().privateKey, [data, session.attestationChallengeKey]);
74
+ async sign(session: NodeSession, data: Uint8Array) {
75
+ const { privateKey } = this.#assertInitialized();
76
+ const signature = await Crypto.signEcdsa(privateKey, [data, session.attestationChallengeKey]);
77
+ return signature;
76
78
  }
77
79
 
78
80
  /**
@@ -49,7 +49,6 @@ export interface OccurrenceManagerContext {
49
49
  */
50
50
  export class OccurrenceManager {
51
51
  #store: EventStore;
52
- #storedEventCount = 0;
53
52
  #bufferConfig: OccurrenceManager.BufferConfig;
54
53
  #cull?: Promise<void>;
55
54
  #iteratingValuesInProgress = false;
@@ -87,7 +86,6 @@ export class OccurrenceManager {
87
86
 
88
87
  this.#construction = Construction(this, () => {
89
88
  return MaybePromise.then(this.#store.load(), index => {
90
- this.#storedEventCount = index.length;
91
89
  // To be sure, sort the entries by number
92
90
  index.sort(
93
91
  // sort that way because Bigint & Number mix
@@ -108,7 +106,6 @@ export class OccurrenceManager {
108
106
  async clear() {
109
107
  await this.construction;
110
108
  await this.#store.clear();
111
- this.#storedEventCount = 0;
112
109
  this.#occurrences.length = 0;
113
110
  }
114
111
 
@@ -282,8 +279,7 @@ export class OccurrenceManager {
282
279
  return MaybePromise.then(this.#store.add(occurrence), entry => {
283
280
  logger.debug(`Recorded event #${entry.number}: ${Diagnostic.json(occurrence)}`);
284
281
  this.#occurrences.push(entry);
285
- this.#storedEventCount++;
286
- if (this.#storedEventCount > this.#bufferConfig.maxEventAllowance) {
282
+ if (this.#occurrences.length > this.#bufferConfig.maxEventAllowance) {
287
283
  this.#startCull();
288
284
  }
289
285
  const numberedOccurrence = {
@@ -295,6 +291,19 @@ export class OccurrenceManager {
295
291
  });
296
292
  }
297
293
 
294
+ remove(number: EventNumber) {
295
+ const index = this.#occurrences.findIndex(entry => entry.number === number);
296
+ if (index === -1) {
297
+ // Should not happen but just in case
298
+ return;
299
+ }
300
+ this.#occurrences.splice(index, 1);
301
+ if (this.#cull) {
302
+ return this.#cull.then(() => this.#store.delete(number));
303
+ }
304
+ return this.#store.delete(number);
305
+ }
306
+
298
307
  #startCull() {
299
308
  if (this.#cull || this.#iteratingValuesInProgress) {
300
309
  return;
@@ -306,7 +315,7 @@ export class OccurrenceManager {
306
315
  }
307
316
 
308
317
  #dropOldOccurrences() {
309
- let toDelete = this.#storedEventCount - this.#bufferConfig.minEventAllowance;
318
+ let toDelete = this.#occurrences.length - this.#bufferConfig.minEventAllowance;
310
319
  if (toDelete <= 0) {
311
320
  return;
312
321
  }
@@ -357,7 +366,7 @@ export class OccurrenceManager {
357
366
  const occurrences = this.#occurrences as Array<OccurrenceSummary | undefined>;
358
367
  for (const priority of [EventPriority.Debug, EventPriority.Info, EventPriority.Critical]) {
359
368
  const checkUpTo =
360
- priority === EventPriority.Critical ? this.#storedEventCount : prioData[priority].minPosition;
369
+ priority === EventPriority.Critical ? this.#occurrences.length : prioData[priority].minPosition;
361
370
  if (checkUpTo === -1) {
362
371
  // We have less than the minimum of this event type, so we can not remove any
363
372
  continue;
@@ -382,8 +391,6 @@ export class OccurrenceManager {
382
391
  }
383
392
  this.#occurrences = occurrences.filter(entry => entry) as OccurrenceSummary[];
384
393
 
385
- this.#storedEventCount = this.#occurrences.length;
386
-
387
394
  if (asyncDrops.length) {
388
395
  return MatterAggregateError.allSettled(asyncDrops, "Error dropping occurrences")
389
396
  .then(() => {})
@@ -15,6 +15,7 @@ import {
15
15
  Bytes,
16
16
  Crypto,
17
17
  DataWriter,
18
+ Diagnostic,
18
19
  Endian,
19
20
  ImplementationError,
20
21
  InternalError,
@@ -26,7 +27,8 @@ import {
26
27
  PrivateKey,
27
28
  StorageContext,
28
29
  } from "#general";
29
- import { FabricGroupsManager, GROUP_SECURITY_INFO } from "#groups/FabricGroupsManager.js";
30
+ import { FabricGroups, GROUP_SECURITY_INFO } from "#groups/FabricGroups.js";
31
+ import { FabricAccessControl } from "#interaction/FabricAccessControl.js";
30
32
  import { PeerAddress } from "#peer/PeerAddress.js";
31
33
  import { Session } from "#session/Session.js";
32
34
  import { CaseAuthenticatedTag, FabricId, FabricIndex, GroupId, NodeId, VendorId } from "#types";
@@ -61,7 +63,8 @@ export class Fabric {
61
63
  readonly operationalCert: Uint8Array;
62
64
  readonly #keyPair: Key;
63
65
  readonly #sessions = new Set<Session>();
64
- readonly #groupManager: FabricGroupsManager;
66
+ readonly #groupManager: FabricGroups;
67
+ readonly #aclManager: FabricAccessControl;
65
68
  #label: string;
66
69
  #removeCallbacks = new Array<() => MaybePromise<void>>();
67
70
  #persistCallback: ((isUpdate?: boolean) => MaybePromise<void>) | undefined;
@@ -82,7 +85,8 @@ export class Fabric {
82
85
  this.operationalCert = config.operationalCert;
83
86
  this.#label = config.label;
84
87
  this.#keyPair = PrivateKey(config.keyPair);
85
- this.#groupManager = new FabricGroupsManager(this);
88
+ this.#aclManager = new FabricAccessControl(this);
89
+ this.#groupManager = new FabricGroups(this);
86
90
  }
87
91
 
88
92
  get config(): Fabric.Config {
@@ -132,12 +136,16 @@ export class Fabric {
132
136
  return this.#groupManager;
133
137
  }
134
138
 
139
+ get acl() {
140
+ return this.#aclManager;
141
+ }
142
+
135
143
  get publicKey() {
136
144
  return this.#keyPair.publicKey;
137
145
  }
138
146
 
139
147
  sign(data: Uint8Array) {
140
- return Crypto.sign(this.#keyPair, data);
148
+ return Crypto.signEcdsa(this.#keyPair, data);
141
149
  }
142
150
 
143
151
  async verifyCredentials(operationalCert: Uint8Array, intermediateCACert?: Uint8Array) {
@@ -174,21 +182,21 @@ export class Fabric {
174
182
  }
175
183
 
176
184
  /**
177
- * Returns the destination IDs for a given nodeId, random value and optional groupId.
178
- * When groupId is provided, it returns the time-wise valid operational keys for that groupId.
185
+ * Returns the destination IDs for a given nodeId, random value and optional groupId. When groupId is provided, it
186
+ * returns the time-wise valid operational keys for that groupId.
179
187
  */
180
188
  async currentDestinationIdFor(nodeId: NodeId, random: Uint8Array) {
181
- return await Crypto.hmac(this.groups.keySets.currentKeyForId(0).key, this.#generateSalt(nodeId, random));
189
+ return await Crypto.signHmac(this.groups.keySets.currentKeyForId(0).key, this.#generateSalt(nodeId, random));
182
190
  }
183
191
 
184
192
  /**
185
- * Returns the destination IDs for a given nodeId, random value and optional groupId.
186
- * When groupId is provided, it returns all operational keys for that groupId.
193
+ * Returns the destination IDs for a given nodeId, random value and optional groupId. When groupId is provided, it
194
+ * returns all operational keys for that groupId.
187
195
  */
188
196
  async destinationIdsFor(nodeId: NodeId, random: Uint8Array) {
189
197
  const salt = this.#generateSalt(nodeId, random);
190
198
  // Check all keys of keyset 0 - typically it is only the IPK
191
- const destinationIds = this.groups.keySets.allKeysForId(0).map(({ key }) => Crypto.hmac(key, salt));
199
+ const destinationIds = this.groups.keySets.allKeysForId(0).map(({ key }) => Crypto.signHmac(key, salt));
192
200
  return await Promise.all(destinationIds);
193
201
  }
194
202
 
@@ -306,18 +314,19 @@ export class FabricBuilder {
306
314
  ellipticCurvePublicKey,
307
315
  } = TlvOperationalCertificate.decode(operationalCert);
308
316
  logger.debug(
309
- `FabricBuilder setOperationalCert: nodeId=${nodeId}, fabricId=${fabricId}, caseAuthenticatedTags=${caseAuthenticatedTags}`,
317
+ "Installing operational certificate",
318
+ Diagnostic.dict({ nodeId, fabricId, caseAuthenticatedTags }),
310
319
  );
311
320
  if (caseAuthenticatedTags !== undefined) {
312
321
  CaseAuthenticatedTag.validateNocTagList(caseAuthenticatedTags);
313
322
  }
314
323
 
315
324
  if (!Bytes.areEqual(ellipticCurvePublicKey, this.#keyPair.publicKey)) {
316
- throw new PublicKeyError("Operational Certificate does not match public key.");
325
+ throw new PublicKeyError("Operational certificate does not match public key");
317
326
  }
318
327
 
319
328
  if (this.#rootCert === undefined) {
320
- throw new MatterFlowError("Root Certificate needs to be set first.");
329
+ throw new MatterFlowError("Root certificate needs to be set first");
321
330
  }
322
331
 
323
332
  const rootCert = TlvRootCertificate.decode(this.#rootCert);
@@ -401,7 +410,7 @@ export class FabricBuilder {
401
410
  this.#fabricIndex = fabricIndex;
402
411
  const saltWriter = new DataWriter();
403
412
  saltWriter.writeUInt64(this.#fabricId);
404
- const operationalId = await Crypto.hkdf(
413
+ const operationalId = await Crypto.createHkdfKey(
405
414
  this.#rootPublicKey.slice(1),
406
415
  saltWriter.toByteArray(),
407
416
  COMPRESSED_FABRIC_ID_INFO,
@@ -419,7 +428,7 @@ export class FabricBuilder {
419
428
  rootVendorId: this.#rootVendorId,
420
429
  rootCert: this.#rootCert,
421
430
  identityProtectionKey: this.#identityProtectionKey, // Epoch Key
422
- operationalIdentityProtectionKey: await Crypto.hkdf(
431
+ operationalIdentityProtectionKey: await Crypto.createHkdfKey(
423
432
  this.#identityProtectionKey,
424
433
  operationalId,
425
434
  GROUP_SECURITY_INFO,