@matter/protocol 0.14.1-alpha.0-20250605-9fc134af0 → 0.14.1-alpha.0-20250606-a9bcd03f9

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 (312) hide show
  1. package/dist/cjs/action/server/AccessControl.d.ts +5 -7
  2. package/dist/cjs/action/server/AccessControl.d.ts.map +1 -1
  3. package/dist/cjs/action/server/AccessControl.js.map +1 -1
  4. package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
  5. package/dist/cjs/action/server/AttributeWriteResponse.js +23 -0
  6. package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
  7. package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
  8. package/dist/cjs/action/server/CommandInvokeResponse.js +24 -1
  9. package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
  10. package/dist/cjs/action/server/DataResponse.d.ts +1 -1
  11. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
  12. package/dist/cjs/action/server/Subject.d.ts +25 -0
  13. package/dist/cjs/action/server/Subject.d.ts.map +1 -0
  14. package/dist/cjs/action/server/Subject.js +54 -0
  15. package/dist/cjs/action/server/Subject.js.map +6 -0
  16. package/dist/cjs/action/server/index.d.ts +1 -0
  17. package/dist/cjs/action/server/index.d.ts.map +1 -1
  18. package/dist/cjs/action/server/index.js +1 -0
  19. package/dist/cjs/action/server/index.js.map +1 -1
  20. package/dist/cjs/certificate/DeviceCertification.d.ts +2 -2
  21. package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -1
  22. package/dist/cjs/certificate/DeviceCertification.js.map +1 -1
  23. package/dist/cjs/cluster/client/AttributeClient.d.ts +3 -3
  24. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
  25. package/dist/cjs/cluster/client/AttributeClient.js +14 -2
  26. package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
  27. package/dist/cjs/cluster/client/ClusterClient.d.ts +3 -2
  28. package/dist/cjs/cluster/client/ClusterClient.d.ts.map +1 -1
  29. package/dist/cjs/cluster/client/ClusterClient.js +60 -1
  30. package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
  31. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +33 -8
  32. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  33. package/dist/cjs/cluster/client/EventClient.d.ts +3 -3
  34. package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -1
  35. package/dist/cjs/cluster/client/EventClient.js +7 -0
  36. package/dist/cjs/cluster/client/EventClient.js.map +1 -1
  37. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
  38. package/dist/cjs/codec/MessageCodec.js +31 -6
  39. package/dist/cjs/codec/MessageCodec.js.map +1 -1
  40. package/dist/cjs/fabric/Fabric.d.ts +20 -30
  41. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  42. package/dist/cjs/fabric/Fabric.js +38 -62
  43. package/dist/cjs/fabric/Fabric.js.map +2 -2
  44. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  45. package/dist/cjs/fabric/FabricManager.js +10 -4
  46. package/dist/cjs/fabric/FabricManager.js.map +1 -1
  47. package/dist/cjs/groups/FabricGroupsManager.d.ts +46 -0
  48. package/dist/cjs/groups/FabricGroupsManager.d.ts.map +1 -0
  49. package/dist/cjs/groups/FabricGroupsManager.js +155 -0
  50. package/dist/cjs/groups/FabricGroupsManager.js.map +6 -0
  51. package/dist/cjs/groups/Groups.d.ts +34 -0
  52. package/dist/cjs/groups/Groups.d.ts.map +1 -0
  53. package/dist/cjs/groups/Groups.js +89 -0
  54. package/dist/cjs/groups/Groups.js.map +6 -0
  55. package/dist/cjs/groups/KeySets.d.ts +64 -0
  56. package/dist/cjs/groups/KeySets.d.ts.map +1 -0
  57. package/dist/cjs/groups/KeySets.js +179 -0
  58. package/dist/cjs/groups/KeySets.js.map +6 -0
  59. package/dist/cjs/groups/MessagingState.d.ts +24 -0
  60. package/dist/cjs/groups/MessagingState.d.ts.map +1 -0
  61. package/dist/cjs/groups/MessagingState.js +91 -0
  62. package/dist/cjs/groups/MessagingState.js.map +6 -0
  63. package/dist/cjs/groups/index.d.ts +8 -0
  64. package/dist/cjs/groups/index.d.ts.map +1 -0
  65. package/dist/cjs/groups/index.js +25 -0
  66. package/dist/cjs/groups/index.js.map +6 -0
  67. package/dist/cjs/index.d.ts +1 -0
  68. package/dist/cjs/index.d.ts.map +1 -1
  69. package/dist/cjs/index.js +1 -0
  70. package/dist/cjs/index.js.map +1 -1
  71. package/dist/cjs/interaction/AccessControlManager.d.ts +4 -13
  72. package/dist/cjs/interaction/AccessControlManager.d.ts.map +1 -1
  73. package/dist/cjs/interaction/AccessControlManager.js +38 -47
  74. package/dist/cjs/interaction/AccessControlManager.js.map +1 -1
  75. package/dist/cjs/interaction/InteractionClient.d.ts +5 -4
  76. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  77. package/dist/cjs/interaction/InteractionClient.js +53 -3
  78. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  79. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  80. package/dist/cjs/interaction/InteractionMessenger.js +15 -0
  81. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  82. package/dist/cjs/interaction/Subscription.d.ts +3 -3
  83. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  84. package/dist/cjs/interaction/Subscription.js.map +1 -1
  85. package/dist/cjs/peer/PeerAddress.d.ts +1 -0
  86. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  87. package/dist/cjs/peer/PeerAddress.js +5 -0
  88. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  89. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  90. package/dist/cjs/peer/PeerSet.js +31 -2
  91. package/dist/cjs/peer/PeerSet.js.map +1 -1
  92. package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -1
  93. package/dist/cjs/protocol/ChannelManager.js +7 -8
  94. package/dist/cjs/protocol/ChannelManager.js.map +1 -1
  95. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  96. package/dist/cjs/protocol/ExchangeManager.js +39 -25
  97. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  98. package/dist/cjs/protocol/MessageExchange.d.ts +1 -1
  99. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  100. package/dist/cjs/protocol/MessageExchange.js +32 -4
  101. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  102. package/dist/cjs/protocol/MessageReceptionState.d.ts +1 -1
  103. package/dist/cjs/securechannel/SecureChannelProtocol.js +1 -1
  104. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  105. package/dist/cjs/session/GroupSession.d.ts +56 -0
  106. package/dist/cjs/session/GroupSession.d.ts.map +1 -0
  107. package/dist/cjs/session/GroupSession.js +188 -0
  108. package/dist/cjs/session/GroupSession.js.map +6 -0
  109. package/dist/cjs/session/InsecureSession.d.ts +2 -1
  110. package/dist/cjs/session/InsecureSession.d.ts.map +1 -1
  111. package/dist/cjs/session/InsecureSession.js +3 -2
  112. package/dist/cjs/session/InsecureSession.js.map +1 -1
  113. package/dist/cjs/session/NodeSession.d.ts +88 -0
  114. package/dist/cjs/session/NodeSession.d.ts.map +1 -0
  115. package/dist/cjs/session/NodeSession.js +318 -0
  116. package/dist/cjs/session/NodeSession.js.map +6 -0
  117. package/dist/cjs/session/SecureSession.d.ts +10 -75
  118. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  119. package/dist/cjs/session/SecureSession.js +9 -280
  120. package/dist/cjs/session/SecureSession.js.map +2 -2
  121. package/dist/cjs/session/Session.d.ts +6 -5
  122. package/dist/cjs/session/Session.d.ts.map +1 -1
  123. package/dist/cjs/session/Session.js +11 -1
  124. package/dist/cjs/session/Session.js.map +1 -1
  125. package/dist/cjs/session/SessionManager.d.ts +27 -9
  126. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  127. package/dist/cjs/session/SessionManager.js +83 -5
  128. package/dist/cjs/session/SessionManager.js.map +2 -2
  129. package/dist/cjs/session/case/CaseClient.d.ts +1 -1
  130. package/dist/cjs/session/case/CaseClient.js +2 -2
  131. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  132. package/dist/cjs/session/index.d.ts +2 -0
  133. package/dist/cjs/session/index.d.ts.map +1 -1
  134. package/dist/cjs/session/index.js +2 -0
  135. package/dist/cjs/session/index.js.map +1 -1
  136. package/dist/cjs/session/pase/PaseClient.d.ts +1 -1
  137. package/dist/esm/action/server/AccessControl.d.ts +5 -7
  138. package/dist/esm/action/server/AccessControl.d.ts.map +1 -1
  139. package/dist/esm/action/server/AccessControl.js.map +1 -1
  140. package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
  141. package/dist/esm/action/server/AttributeWriteResponse.js +23 -0
  142. package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
  143. package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
  144. package/dist/esm/action/server/CommandInvokeResponse.js +24 -1
  145. package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
  146. package/dist/esm/action/server/DataResponse.d.ts +1 -1
  147. package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
  148. package/dist/esm/action/server/Subject.d.ts +25 -0
  149. package/dist/esm/action/server/Subject.d.ts.map +1 -0
  150. package/dist/esm/action/server/Subject.js +34 -0
  151. package/dist/esm/action/server/Subject.js.map +6 -0
  152. package/dist/esm/action/server/index.d.ts +1 -0
  153. package/dist/esm/action/server/index.d.ts.map +1 -1
  154. package/dist/esm/action/server/index.js +1 -0
  155. package/dist/esm/action/server/index.js.map +1 -1
  156. package/dist/esm/certificate/DeviceCertification.d.ts +2 -2
  157. package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -1
  158. package/dist/esm/certificate/DeviceCertification.js.map +1 -1
  159. package/dist/esm/cluster/client/AttributeClient.d.ts +3 -3
  160. package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
  161. package/dist/esm/cluster/client/AttributeClient.js +13 -1
  162. package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
  163. package/dist/esm/cluster/client/ClusterClient.d.ts +3 -2
  164. package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -1
  165. package/dist/esm/cluster/client/ClusterClient.js +61 -2
  166. package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
  167. package/dist/esm/cluster/client/ClusterClientTypes.d.ts +33 -8
  168. package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  169. package/dist/esm/cluster/client/EventClient.d.ts +3 -3
  170. package/dist/esm/cluster/client/EventClient.d.ts.map +1 -1
  171. package/dist/esm/cluster/client/EventClient.js +7 -0
  172. package/dist/esm/cluster/client/EventClient.js.map +1 -1
  173. package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
  174. package/dist/esm/codec/MessageCodec.js +41 -7
  175. package/dist/esm/codec/MessageCodec.js.map +1 -1
  176. package/dist/esm/fabric/Fabric.d.ts +20 -30
  177. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  178. package/dist/esm/fabric/Fabric.js +38 -62
  179. package/dist/esm/fabric/Fabric.js.map +2 -2
  180. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  181. package/dist/esm/fabric/FabricManager.js +10 -4
  182. package/dist/esm/fabric/FabricManager.js.map +1 -1
  183. package/dist/esm/groups/FabricGroupsManager.d.ts +46 -0
  184. package/dist/esm/groups/FabricGroupsManager.d.ts.map +1 -0
  185. package/dist/esm/groups/FabricGroupsManager.js +135 -0
  186. package/dist/esm/groups/FabricGroupsManager.js.map +6 -0
  187. package/dist/esm/groups/Groups.d.ts +34 -0
  188. package/dist/esm/groups/Groups.d.ts.map +1 -0
  189. package/dist/esm/groups/Groups.js +69 -0
  190. package/dist/esm/groups/Groups.js.map +6 -0
  191. package/dist/esm/groups/KeySets.d.ts +64 -0
  192. package/dist/esm/groups/KeySets.d.ts.map +1 -0
  193. package/dist/esm/groups/KeySets.js +159 -0
  194. package/dist/esm/groups/KeySets.js.map +6 -0
  195. package/dist/esm/groups/MessagingState.d.ts +24 -0
  196. package/dist/esm/groups/MessagingState.d.ts.map +1 -0
  197. package/dist/esm/groups/MessagingState.js +71 -0
  198. package/dist/esm/groups/MessagingState.js.map +6 -0
  199. package/dist/esm/groups/index.d.ts +8 -0
  200. package/dist/esm/groups/index.d.ts.map +1 -0
  201. package/dist/esm/groups/index.js +8 -0
  202. package/dist/esm/groups/index.js.map +6 -0
  203. package/dist/esm/index.d.ts +1 -0
  204. package/dist/esm/index.d.ts.map +1 -1
  205. package/dist/esm/index.js +1 -0
  206. package/dist/esm/index.js.map +1 -1
  207. package/dist/esm/interaction/AccessControlManager.d.ts +4 -13
  208. package/dist/esm/interaction/AccessControlManager.d.ts.map +1 -1
  209. package/dist/esm/interaction/AccessControlManager.js +39 -48
  210. package/dist/esm/interaction/AccessControlManager.js.map +1 -1
  211. package/dist/esm/interaction/InteractionClient.d.ts +5 -4
  212. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  213. package/dist/esm/interaction/InteractionClient.js +54 -4
  214. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  215. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  216. package/dist/esm/interaction/InteractionMessenger.js +15 -0
  217. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  218. package/dist/esm/interaction/Subscription.d.ts +3 -3
  219. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  220. package/dist/esm/interaction/Subscription.js.map +1 -1
  221. package/dist/esm/peer/PeerAddress.d.ts +1 -0
  222. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  223. package/dist/esm/peer/PeerAddress.js +5 -0
  224. package/dist/esm/peer/PeerAddress.js.map +1 -1
  225. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  226. package/dist/esm/peer/PeerSet.js +33 -3
  227. package/dist/esm/peer/PeerSet.js.map +1 -1
  228. package/dist/esm/protocol/ChannelManager.d.ts.map +1 -1
  229. package/dist/esm/protocol/ChannelManager.js +7 -8
  230. package/dist/esm/protocol/ChannelManager.js.map +1 -1
  231. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  232. package/dist/esm/protocol/ExchangeManager.js +41 -27
  233. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  234. package/dist/esm/protocol/MessageExchange.d.ts +1 -1
  235. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  236. package/dist/esm/protocol/MessageExchange.js +39 -5
  237. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  238. package/dist/esm/protocol/MessageReceptionState.d.ts +1 -1
  239. package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
  240. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  241. package/dist/esm/session/GroupSession.d.ts +56 -0
  242. package/dist/esm/session/GroupSession.d.ts.map +1 -0
  243. package/dist/esm/session/GroupSession.js +177 -0
  244. package/dist/esm/session/GroupSession.js.map +6 -0
  245. package/dist/esm/session/InsecureSession.d.ts +2 -1
  246. package/dist/esm/session/InsecureSession.d.ts.map +1 -1
  247. package/dist/esm/session/InsecureSession.js +3 -2
  248. package/dist/esm/session/InsecureSession.js.map +1 -1
  249. package/dist/esm/session/NodeSession.d.ts +88 -0
  250. package/dist/esm/session/NodeSession.d.ts.map +1 -0
  251. package/dist/esm/session/NodeSession.js +298 -0
  252. package/dist/esm/session/NodeSession.js.map +6 -0
  253. package/dist/esm/session/SecureSession.d.ts +10 -75
  254. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  255. package/dist/esm/session/SecureSession.js +10 -291
  256. package/dist/esm/session/SecureSession.js.map +2 -2
  257. package/dist/esm/session/Session.d.ts +6 -5
  258. package/dist/esm/session/Session.d.ts.map +1 -1
  259. package/dist/esm/session/Session.js +12 -2
  260. package/dist/esm/session/Session.js.map +1 -1
  261. package/dist/esm/session/SessionManager.d.ts +27 -9
  262. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  263. package/dist/esm/session/SessionManager.js +84 -6
  264. package/dist/esm/session/SessionManager.js.map +1 -1
  265. package/dist/esm/session/case/CaseClient.d.ts +1 -1
  266. package/dist/esm/session/case/CaseClient.js +2 -2
  267. package/dist/esm/session/case/CaseClient.js.map +1 -1
  268. package/dist/esm/session/index.d.ts +2 -0
  269. package/dist/esm/session/index.d.ts.map +1 -1
  270. package/dist/esm/session/index.js +2 -0
  271. package/dist/esm/session/index.js.map +1 -1
  272. package/dist/esm/session/pase/PaseClient.d.ts +1 -1
  273. package/package.json +6 -6
  274. package/src/action/server/AccessControl.ts +4 -7
  275. package/src/action/server/AttributeWriteResponse.ts +29 -7
  276. package/src/action/server/CommandInvokeResponse.ts +28 -7
  277. package/src/action/server/DataResponse.ts +1 -1
  278. package/src/action/server/Subject.ts +45 -0
  279. package/src/action/server/index.ts +1 -0
  280. package/src/certificate/DeviceCertification.ts +2 -2
  281. package/src/cluster/client/AttributeClient.ts +15 -3
  282. package/src/cluster/client/ClusterClient.ts +90 -4
  283. package/src/cluster/client/ClusterClientTypes.ts +38 -9
  284. package/src/cluster/client/EventClient.ts +9 -2
  285. package/src/codec/MessageCodec.ts +49 -8
  286. package/src/fabric/Fabric.ts +51 -85
  287. package/src/fabric/FabricManager.ts +11 -4
  288. package/src/groups/FabricGroupsManager.ts +164 -0
  289. package/src/groups/Groups.ts +81 -0
  290. package/src/groups/KeySets.ts +194 -0
  291. package/src/groups/MessagingState.ts +76 -0
  292. package/src/groups/index.ts +8 -0
  293. package/src/index.ts +1 -0
  294. package/src/interaction/AccessControlManager.ts +49 -81
  295. package/src/interaction/InteractionClient.ts +66 -6
  296. package/src/interaction/InteractionMessenger.ts +15 -0
  297. package/src/interaction/Subscription.ts +3 -3
  298. package/src/peer/PeerAddress.ts +4 -0
  299. package/src/peer/PeerSet.ts +39 -4
  300. package/src/protocol/ChannelManager.ts +7 -9
  301. package/src/protocol/ExchangeManager.ts +51 -35
  302. package/src/protocol/MessageExchange.ts +42 -7
  303. package/src/protocol/MessageReceptionState.ts +2 -2
  304. package/src/securechannel/SecureChannelProtocol.ts +2 -2
  305. package/src/session/GroupSession.ts +223 -0
  306. package/src/session/InsecureSession.ts +3 -2
  307. package/src/session/NodeSession.ts +367 -0
  308. package/src/session/SecureSession.ts +14 -363
  309. package/src/session/Session.ts +17 -6
  310. package/src/session/SessionManager.ts +94 -14
  311. package/src/session/case/CaseClient.ts +2 -2
  312. package/src/session/index.ts +2 -3
@@ -24,8 +24,8 @@ __export(Fabric_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(Fabric_exports);
26
26
  var import_CertificateManager = require("#certificate/CertificateManager.js");
27
- var import_group_key_management = require("#clusters/group-key-management");
28
27
  var import_general = require("#general");
28
+ var import_FabricGroupsManager = require("#groups/FabricGroupsManager.js");
29
29
  var import_PeerAddress = require("#peer/PeerAddress.js");
30
30
  var import_types = require("#types");
31
31
  /**
@@ -35,36 +35,8 @@ var import_types = require("#types");
35
35
  */
36
36
  const logger = import_general.Logger.get("Fabric");
37
37
  const COMPRESSED_FABRIC_ID_INFO = import_general.Bytes.fromString("CompressedFabric");
38
- const GROUP_SECURITY_INFO = import_general.Bytes.fromString("GroupKey v1.0");
39
38
  class PublicKeyError extends import_general.MatterError {
40
39
  }
41
- var OperationalGroupKeySet;
42
- ((OperationalGroupKeySet2) => {
43
- OperationalGroupKeySet2.asTlvGroupSet = (operationalGroupSet) => {
44
- const {
45
- groupKeySetId,
46
- epochKey0,
47
- epochStartTime0,
48
- epochKey1,
49
- epochStartTime1,
50
- epochKey2,
51
- epochStartTime2,
52
- groupKeySecurityPolicy,
53
- groupKeyMulticastPolicy
54
- } = operationalGroupSet;
55
- return {
56
- groupKeySetId,
57
- epochKey0,
58
- epochStartTime0,
59
- epochKey1,
60
- epochStartTime1,
61
- epochKey2,
62
- epochStartTime2,
63
- groupKeySecurityPolicy,
64
- groupKeyMulticastPolicy
65
- };
66
- };
67
- })(OperationalGroupKeySet || (OperationalGroupKeySet = {}));
68
40
  class Fabric {
69
41
  fabricIndex;
70
42
  fabricId;
@@ -80,9 +52,11 @@ class Fabric {
80
52
  operationalCert;
81
53
  #keyPair;
82
54
  #sessions = /* @__PURE__ */ new Set();
55
+ #groupManager;
83
56
  #label;
84
57
  #removeCallbacks = new Array();
85
58
  #persistCallback;
59
+ #storage;
86
60
  constructor(config) {
87
61
  this.fabricIndex = config.fabricIndex;
88
62
  this.fabricId = config.fabricId;
@@ -98,6 +72,7 @@ class Fabric {
98
72
  this.operationalCert = config.operationalCert;
99
73
  this.#label = config.label;
100
74
  this.#keyPair = (0, import_general.PrivateKey)(config.keyPair);
75
+ this.#groupManager = new import_FabricGroupsManager.FabricGroupsManager(this);
101
76
  }
102
77
  get config() {
103
78
  return {
@@ -130,6 +105,16 @@ class Fabric {
130
105
  this.#label = label;
131
106
  await this.persist();
132
107
  }
108
+ set storage(storage) {
109
+ this.#storage = storage;
110
+ this.#groupManager.storage = storage;
111
+ }
112
+ get storage() {
113
+ return this.#storage;
114
+ }
115
+ get groups() {
116
+ return this.#groupManager;
117
+ }
133
118
  get publicKey() {
134
119
  return this.#keyPair.publicKey;
135
120
  }
@@ -151,13 +136,29 @@ class Fabric {
151
136
  matchesKeyPair(keyPair) {
152
137
  return import_general.Bytes.areEqual(this.#keyPair.publicKey, keyPair.publicKey) && import_general.Bytes.areEqual(this.#keyPair.privateKey, keyPair.privateKey);
153
138
  }
154
- getDestinationId(nodeId, random) {
139
+ #generateSalt(nodeId, random) {
155
140
  const writer = new import_general.DataWriter(import_general.Endian.Little);
156
141
  writer.writeByteArray(random);
157
142
  writer.writeByteArray(this.rootPublicKey);
158
143
  writer.writeUInt64(this.fabricId);
159
144
  writer.writeUInt64(nodeId);
160
- return import_general.Crypto.hmac(this.operationalIdentityProtectionKey, writer.toByteArray());
145
+ return writer.toByteArray();
146
+ }
147
+ /**
148
+ * Returns the destination IDs for a given nodeId, random value and optional groupId.
149
+ * When groupId is provided, it returns the time-wise valid operational keys for that groupId.
150
+ */
151
+ async currentDestinationIdFor(nodeId, random) {
152
+ return await import_general.Crypto.hmac(this.groups.keySets.currentKeyForId(0).key, this.#generateSalt(nodeId, random));
153
+ }
154
+ /**
155
+ * Returns the destination IDs for a given nodeId, random value and optional groupId.
156
+ * When groupId is provided, it returns all operational keys for that groupId.
157
+ */
158
+ async destinationIdsFor(nodeId, random) {
159
+ const salt = this.#generateSalt(nodeId, random);
160
+ const destinationIds = this.groups.keySets.allKeysForId(0).map(({ key }) => import_general.Crypto.hmac(key, salt));
161
+ return await Promise.all(destinationIds);
161
162
  }
162
163
  addSession(session) {
163
164
  this.#sessions.add(session);
@@ -188,35 +189,6 @@ class Fabric {
188
189
  persist(isUpdate = true) {
189
190
  return this.#persistCallback?.(isUpdate);
190
191
  }
191
- getGroupKeySet(groupKeySetId) {
192
- if (groupKeySetId === 0) {
193
- return OperationalGroupKeySet.asTlvGroupSet(this.getGroupSetForIpk());
194
- }
195
- return void 0;
196
- }
197
- getGroupSetForIpk() {
198
- return {
199
- groupKeySetId: 0,
200
- epochKey0: this.identityProtectionKey,
201
- operationalEpochKey0: this.operationalIdentityProtectionKey,
202
- epochStartTime0: 0,
203
- // or do we need to track Fabric creation date?
204
- groupSessionId0: null,
205
- epochKey1: null,
206
- operationalEpochKey1: null,
207
- epochStartTime1: null,
208
- groupSessionId1: null,
209
- epochKey2: null,
210
- operationalEpochKey2: null,
211
- epochStartTime2: null,
212
- groupSessionId2: null,
213
- groupKeySecurityPolicy: import_group_key_management.GroupKeyManagement.GroupKeySecurityPolicy.TrustFirst,
214
- groupKeyMulticastPolicy: import_group_key_management.GroupKeyManagement.GroupKeyMulticastPolicy.PerGroupId
215
- };
216
- }
217
- getAllGroupKeySets() {
218
- return [OperationalGroupKeySet.asTlvGroupSet(this.getGroupSetForIpk())];
219
- }
220
192
  get externalInformation() {
221
193
  return {
222
194
  fabricIndex: this.fabricIndex,
@@ -230,6 +202,10 @@ class Fabric {
230
202
  addressOf(nodeId) {
231
203
  return (0, import_PeerAddress.PeerAddress)({ fabricIndex: this.fabricIndex, nodeId });
232
204
  }
205
+ groupAddressOf(groupId) {
206
+ import_types.GroupId.assertGroupId(groupId);
207
+ return (0, import_PeerAddress.PeerAddress)({ fabricIndex: this.fabricIndex, nodeId: import_types.NodeId.fromGroupId(groupId) });
208
+ }
233
209
  }
234
210
  class FabricBuilder {
235
211
  #keyPair;
@@ -354,7 +330,7 @@ class FabricBuilder {
354
330
  if (this.#operationalCert === void 0 || this.#fabricId === void 0 || this.#nodeId === void 0)
355
331
  throw new import_general.InternalError("operationalCert needs to be set");
356
332
  this.#fabricIndex = fabricIndex;
357
- const saltWriter = new import_general.DataWriter(import_general.Endian.Big);
333
+ const saltWriter = new import_general.DataWriter();
358
334
  saltWriter.writeUInt64(this.#fabricId);
359
335
  const operationalId = await import_general.Crypto.hkdf(
360
336
  this.#rootPublicKey.slice(1),
@@ -377,7 +353,7 @@ class FabricBuilder {
377
353
  operationalIdentityProtectionKey: await import_general.Crypto.hkdf(
378
354
  this.#identityProtectionKey,
379
355
  operationalId,
380
- GROUP_SECURITY_INFO
356
+ import_FabricGroupsManager.GROUP_SECURITY_INFO
381
357
  ),
382
358
  intermediateCACert: this.#intermediateCACert,
383
359
  operationalCert: this.#operationalCert,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/fabric/Fabric.ts"],
4
- "mappings": "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",
5
- "names": ["OperationalGroupKeySet"]
4
+ "mappings": "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",
5
+ "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FabricManager.d.ts","sourceRoot":"","sources":["../../../src/fabric/FabricManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,GAAG,EACH,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,cAAc,EAEjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,WAAW;CAAG;AACvD,qBAAa,oBAAqB,SAAQ,WAAW;CAAG;AAExD,oBAAY,YAAY;IACpB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,OAAO,IAAA;CACV;AAED,qBAAa,aAAa;;gBAaV,OAAO,CAAC,EAAE,cAAc;IA2BpC,IAAI,YAAY,gCAEf;IAEK,CAAC,YAAY,CAAC,SAAS,CAAC;IAI9B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C,IAAI,MAAM;;;;;MAET;IAEK,KAAK;IAOX,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAOtC,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAWtC,mBAAmB;IAanB,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC;IAmBpC,SAAS,CAAC,MAAM,EAAE,MAAM;IAyBlB,YAAY,CAAC,WAAW,EAAE,WAAW;IAa3C,CAAC,MAAM,CAAC,QAAQ,CAAC;IAMjB,IAAI,OAAO,aAIV;IAED,IAAI,MAAM,WAET;IAED,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO;IAI3C,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC;IAIlC,2BAA2B,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU;IAYxF,aAAa,CAAC,OAAO,EAAE,GAAG;IAW1B,WAAW,CAAC,KAAK,EAAE,WAAW;IAIxB,YAAY,CAAC,MAAM,EAAE,MAAM;IAc3B,YAAY,CAAC,WAAW,EAAE,WAAW;CAS9C"}
1
+ {"version":3,"file":"FabricManager.d.ts","sourceRoot":"","sources":["../../../src/fabric/FabricManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,GAAG,EACH,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,cAAc,EAEjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,WAAW;CAAG;AACvD,qBAAa,oBAAqB,SAAQ,WAAW;CAAG;AAExD,oBAAY,YAAY;IACpB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,OAAO,IAAA;CACV;AAED,qBAAa,aAAa;;gBAaV,OAAO,CAAC,EAAE,cAAc;IA2BpC,IAAI,YAAY,gCAEf;IAEK,CAAC,YAAY,CAAC,SAAS,CAAC;IAI9B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C,IAAI,MAAM;;;;;MAET;IAEK,KAAK;IAOX,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAOtC,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAWtC,mBAAmB;IAanB,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC;IAmBpC,SAAS,CAAC,MAAM,EAAE,MAAM;IA4BlB,YAAY,CAAC,WAAW,EAAE,WAAW;IAc3C,CAAC,MAAM,CAAC,QAAQ,CAAC;IAMjB,IAAI,OAAO,aAIV;IAED,IAAI,MAAM,WAET;IAED,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO;IAI3C,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC;IAIlC,2BAA2B,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU;IAaxF,aAAa,CAAC,OAAO,EAAE,GAAG;IAW1B,WAAW,CAAC,KAAK,EAAE,WAAW;IAMxB,YAAY,CAAC,MAAM,EAAE,MAAM;IAc3B,YAAY,CAAC,WAAW,EAAE,WAAW;CAS9C"}
@@ -157,6 +157,9 @@ class FabricManager {
157
157
  }
158
158
  });
159
159
  };
160
+ if (this.#storage !== void 0) {
161
+ fabric.storage = this.#storage.createContext(`fabric-${fabricIndex}`);
162
+ }
160
163
  if (this.#initializationDone) {
161
164
  this.#events.added.emit(fabric);
162
165
  }
@@ -170,6 +173,7 @@ class FabricManager {
170
173
  );
171
174
  this.#fabrics.delete(fabricIndex);
172
175
  await this.persistFabrics();
176
+ await fabric.storage?.clearAll();
173
177
  this.#events.deleted.emit(fabric);
174
178
  }
175
179
  [Symbol.iterator]() {
@@ -192,9 +196,10 @@ class FabricManager {
192
196
  async findFabricFromDestinationId(destinationId, initiatorRandom) {
193
197
  this.#construction.assert();
194
198
  for (const fabric of this.#fabrics.values()) {
195
- const candidateDestinationId = await fabric.getDestinationId(fabric.nodeId, initiatorRandom);
196
- if (!import_general.Bytes.areEqual(candidateDestinationId, destinationId)) continue;
197
- return fabric;
199
+ const candidateDestinationIds = await fabric.destinationIdsFor(fabric.nodeId, initiatorRandom);
200
+ if (candidateDestinationIds.some((candidate) => import_general.Bytes.areEqual(candidate, destinationId))) {
201
+ return fabric;
202
+ }
198
203
  }
199
204
  throw new FabricNotFoundError();
200
205
  }
@@ -208,7 +213,8 @@ class FabricManager {
208
213
  return void 0;
209
214
  }
210
215
  findByIndex(index) {
211
- return Array.from(this.#fabrics.values()).find((fabric) => fabric.fabricIndex === index);
216
+ this.#construction.assert();
217
+ return this.#fabrics.get(index);
212
218
  }
213
219
  async updateFabric(fabric) {
214
220
  await this.#construction;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/fabric/FabricManager.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAaO;AAEP,mBAA4B;AAC5B,oBAAuB;AAtBvB;AAAA;AAAA;AAAA;AAAA;AAyBO,MAAM,4BAA4B,2BAAY;AAAC;AAC/C,MAAM,6BAA6B,2BAAY;AAAC;AAEhD,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AAHQ,SAAAA;AAAA,GAAA;AAML,MAAM,cAAc;AAAA,EACvB,mBAAmB;AAAA,EACV,WAAW,oBAAI,IAAyB;AAAA,EACjD,sBAAsB;AAAA,EACtB;AAAA,EACA,UAAU;AAAA,IACN,WAAO,2BAA6B;AAAA,IACpC,aAAS,2BAA6B;AAAA,IACtC,aAAS,2BAA6B;AAAA,IACtC,oBAAgB,2BAAe;AAAA,EACnC;AAAA,EACA;AAAA,EAEA,YAAY,SAA0B;AAClC,SAAK,WAAW;AAEhB,QAAI;AACJ,QAAI,KAAK,aAAa,QAAW;AAC7B,kBAAY,MAAM;AAAA,MAAC;AAAA,IACvB,OAAO;AACH,kBAAY,YAAY;AACpB,YAAI,KAAK,aAAa,QAAW;AAE7B;AAAA,QACJ;AAEA,cAAM,UAAU,MAAM,KAAK,SAAS,IAAqB,WAAW,CAAC,CAAC;AACtE,mBAAW,gBAAgB,SAAS;AAChC,eAAK,WAAW,IAAI,qBAAO,YAAY,CAAC;AAAA,QAC5C;AAEA,aAAK,mBAAmB,MAAM,KAAK,SAAS,IAAI,mBAAmB,KAAK,gBAAgB;AAExF,aAAK,sBAAsB;AAAA,MAC/B;AAAA,IACJ;AAEA,SAAK,oBAAgB,6BAAa,MAAM,SAAS;AAAA,EACrD;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,OAAO,4BAAa,SAAS,IAAI;AAC7B,UAAM,KAAK;AAAA,EACf;AAAA,EAEA,QAAQ,6BAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,cAAc,IAAI,IAAI,6BAAc,EAAE,cAAc,SAAS,CAAC;AACnF,QAAI,IAAI,eAAe,QAAQ;AAC/B,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK;AACX,SAAK,mBAAmB;AACxB,SAAK,SAAS,MAAM;AACpB,UAAM,KAAK,UAAU,MAAM;AAAA,EAC/B;AAAA,EAEA,IAAI,SAAoC;AACpC,QAAI,OAAO,YAAY,UAAU;AAC7B,gBAAU,QAAQ;AAAA,IACtB;AACA,WAAO,KAAK,SAAS,IAAI,OAAO;AAAA,EACpC;AAAA,EAEA,IAAI,SAAoC;AACpC,QAAI,OAAO,YAAY,UAAU;AAC7B,gBAAU,QAAQ;AAAA,IACtB;AACA,UAAM,SAAS,KAAK,SAAS,IAAI,OAAO;AACxC,QAAI,WAAW,QAAW;AACtB,YAAM,IAAI,oBAAoB,0CAA0C,OAAO,EAAE;AAAA,IACrF;AACA,WAAO;AAAA,EACX;AAAA,EAEA,sBAAsB;AAClB,SAAK,cAAc,OAAO;AAE1B,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC1B,YAAM,cAAc,KAAK;AACzB,UAAI,KAAK,mBAAmB,IAAK,MAAK,mBAAmB;AACzD,UAAI,CAAC,KAAK,SAAS,QAAI,0BAAY,WAAW,CAAC,GAAG;AAC9C,mBAAO,0BAAY,WAAW;AAAA,MAClC;AAAA,IACJ;AACA,UAAM,IAAI,qBAAqB,iCAAiC;AAAA,EACpE;AAAA,EAEA,iBAAqC;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAEA,SAAK,cAAc,OAAO;AAE1B,UAAM,cAAc,KAAK,SAAS;AAAA,MAC9B;AAAA,MACA,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAAE,IAAI,YAAU,OAAO,MAAM;AAAA,IAClE;AACA,QAAI,4BAAa,GAAG,WAAW,GAAG;AAC9B,aAAO,YAAY,KAAK,MAAM,KAAK,SAAU,IAAI,mBAAmB,KAAK,gBAAgB,CAAC;AAAA,IAC9F;AACA,WAAO,KAAK,SAAS,IAAI,mBAAmB,KAAK,gBAAgB;AAAA,EACrE;AAAA,EAEA,UAAU,QAAgB;AACtB,SAAK,cAAc,OAAO;AAC1B,SAAK,WAAW,MAAM;AAAA,EAC1B;AAAA,EAEA,WAAW,QAAgB;AACvB,UAAM,EAAE,YAAY,IAAI;AACxB,QAAI,KAAK,SAAS,IAAI,WAAW,GAAG;AAChC,YAAM,IAAI,+BAAgB,qBAAqB,WAAW,kBAAkB;AAAA,IAChF;AACA,SAAK,SAAS,IAAI,aAAa,MAAM;AACrC,WAAO,kBAAkB,YAAY,KAAK,aAAa,WAAW,CAAC;AACnE,WAAO,kBAAkB,CAAC,WAAW,SAAS;AAC1C,YAAM,gBAAgB,KAAK,eAAe;AAC1C,aAAO,4BAAa,KAAK,eAAe,MAAM;AAC1C,YAAI,UAAU;AACV,eAAK,QAAQ,QAAQ,KAAK,MAAM;AAAA,QACpC;AAAA,MACJ,CAAC;AAAA,IACL;AACA,QAAI,KAAK,qBAAqB;AAC1B,WAAK,QAAQ,MAAM,KAAK,MAAM;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,MAAM,aAAa,aAA0B;AACzC,UAAM,KAAK;AAEX,UAAM,SAAS,KAAK,SAAS,IAAI,WAAW;AAC5C,QAAI,WAAW;AACX,YAAM,IAAI;AAAA,QACN,qBAAqB,WAAW;AAAA,MACpC;AACJ,SAAK,SAAS,OAAO,WAAW;AAChC,UAAM,KAAK,eAAe;AAC1B,SAAK,QAAQ,QAAQ,KAAK,MAAM;AAAA,EACpC;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAI;AAChB,SAAK,cAAc,OAAO;AAE1B,WAAO,KAAK,SAAS,OAAO;AAAA,EAChC;AAAA,EAEA,IAAI,UAAU;AACV,SAAK,cAAc,OAAO;AAE1B,WAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC;AAAA,EAC5C;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,KAAK,WAAwC;AACzC,WAAO,KAAK,QAAQ,KAAK,SAAS;AAAA,EACtC;AAAA,EAEA,IAAO,YAAmC;AACtC,WAAO,KAAK,QAAQ,IAAI,UAAU;AAAA,EACtC;AAAA,EAEA,MAAM,4BAA4B,eAA2B,iBAA6B;AACtF,SAAK,cAAc,OAAO;AAE1B,eAAW,UAAU,KAAK,SAAS,OAAO,GAAG;AACzC,YAAM,yBAAyB,MAAM,OAAO,iBAAiB,OAAO,QAAQ,eAAe;AAC3F,UAAI,CAAC,qBAAM,SAAS,wBAAwB,aAAa,EAAG;AAC5D,aAAO;AAAA,IACX;AAEA,UAAM,IAAI,oBAAoB;AAAA,EAClC;AAAA,EAEA,cAAc,SAAc;AACxB,SAAK,cAAc,OAAO;AAE1B,eAAW,UAAU,KAAK,SAAS,OAAO,GAAG;AACzC,UAAI,OAAO,eAAe,OAAO,GAAG;AAChC,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,OAAoB;AAC5B,WAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAAE,KAAK,YAAU,OAAO,gBAAgB,KAAK;AAAA,EACzF;AAAA,EAEA,MAAM,aAAa,QAAgB;AAC/B,UAAM,KAAK;AAEX,UAAM,EAAE,YAAY,IAAI;AACxB,QAAI,CAAC,KAAK,SAAS,IAAI,WAAW,GAAG;AACjC,YAAM,IAAI;AAAA,QACN,qBAAqB,WAAW;AAAA,MACpC;AAAA,IACJ;AACA,SAAK,SAAS,IAAI,aAAa,MAAM;AACrC,UAAM,KAAK,eAAe;AAC1B,SAAK,QAAQ,QAAQ,KAAK,MAAM;AAAA,EACpC;AAAA,EAEA,MAAM,aAAa,aAA0B;AACzC,UAAM,KAAK;AAEX,UAAM,SAAS,KAAK,SAAS,IAAI,WAAW;AAC5C,QAAI,WAAW,QAAW;AACtB,YAAM,IAAI,+BAAgB,qBAAqB,WAAW,4BAA4B;AAAA,IAC1F;AACA,UAAM,OAAO,OAAO;AAAA,EACxB;AACJ;",
4
+ "mappings": "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",
5
5
  "names": ["FabricAction"]
6
6
  }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Fabric } from "#fabric/Fabric.js";
7
+ import { BasicMap, StorageContext } from "#general";
8
+ import { GroupKeySet, KeySets, OperationalKeySet } from "#groups/KeySets.js";
9
+ import { MessagingState } from "#groups/MessagingState.js";
10
+ import { GroupId } from "#types";
11
+ export declare const GROUP_SECURITY_INFO: Uint8Array<ArrayBufferLike>;
12
+ /**
13
+ * Class that contains an operational view on the Group Keys for a fabric
14
+ */
15
+ export declare class FabricGroupsManager {
16
+ #private;
17
+ constructor(fabric: Fabric, storage?: StorageContext);
18
+ set storage(storage: StorageContext);
19
+ /** Operative lookup of the group key sets by their id. */
20
+ get keySets(): KeySets<OperationalKeySet>;
21
+ get messaging(): MessagingState;
22
+ /** Operative lookup of the group key set id and the key by a group session Id. */
23
+ get sessions(): Map<number, {
24
+ keySetId: number;
25
+ key: Uint8Array;
26
+ }[]>;
27
+ get groupKeyIdMap(): BasicMap<GroupId, number>;
28
+ set groupKeyIdMap(map: Map<GroupId, number>);
29
+ get endpoints(): Map<GroupId, import("#types").EndpointNumber[]>;
30
+ currentKeyForGroup(groupId: GroupId): {
31
+ keySetId: number;
32
+ key: Uint8Array;
33
+ sessionId?: number;
34
+ startTime: number | bigint;
35
+ };
36
+ subjectForGroup(id: GroupId, keySetId: number): import("../index.js").Subject;
37
+ multicastAddressFor(groupId: GroupId): string;
38
+ /**
39
+ * Sets new group key set data and pre-calculates all operative data like session ids and operational keys.
40
+ * Overwriting the existing one if it exists.
41
+ */
42
+ setFromGroupKeySet(groupKeySet: GroupKeySet): Promise<void>;
43
+ /** Removes a group key set by its id and cleans up the counters and data. */
44
+ removeGroupKeySet(groupKeySetId: number): Promise<boolean>;
45
+ }
46
+ //# sourceMappingURL=FabricGroupsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FabricGroupsManager.d.ts","sourceRoot":"","sources":["../../../src/groups/FabricGroupsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAiD,cAAc,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,eAAO,MAAM,mBAAmB,6BAAoC,CAAC;AAErE;;GAEG;AACH,qBAAa,mBAAmB;;gBAQhB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IA6BpD,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAElC;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAExC;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,kFAAkF;IAClF,IAAI,QAAQ;;;SAEX;IAED,IAAI,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAE7C;IAED,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI,SAAS,oDAEZ;IAED,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;IAInC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAI7C,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAgB7C;;;OAGG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW;IA8BjD,6EAA6E;IACvE,iBAAiB,CAAC,aAAa,EAAE,MAAM;CAoBhD"}
@@ -0,0 +1,155 @@
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 FabricGroupsManager_exports = {};
20
+ __export(FabricGroupsManager_exports, {
21
+ FabricGroupsManager: () => FabricGroupsManager,
22
+ GROUP_SECURITY_INFO: () => GROUP_SECURITY_INFO
23
+ });
24
+ module.exports = __toCommonJS(FabricGroupsManager_exports);
25
+ var import_general = require("#general");
26
+ var import_KeySets = require("#groups/KeySets.js");
27
+ var import_MessagingState = require("#groups/MessagingState.js");
28
+ var import_Groups = require("./Groups.js");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2025 Matter.js Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ const GROUP_SECURITY_INFO = import_general.Bytes.fromString("GroupKey v1.0");
35
+ class FabricGroupsManager {
36
+ #fabric;
37
+ #groups;
38
+ #messagingState;
39
+ /** Operationally enhanced variants of the group key sets based on their ID. */
40
+ #keySets = new import_KeySets.KeySets();
41
+ constructor(fabric, storage) {
42
+ this.#fabric = fabric;
43
+ this.#groups = new import_Groups.Groups(fabric, this.#keySets);
44
+ this.#messagingState = new import_MessagingState.MessagingState(storage);
45
+ this.#keySets.add({
46
+ groupKeySetId: 0,
47
+ epochKey0: fabric.identityProtectionKey,
48
+ operationalEpochKey0: fabric.operationalIdentityProtectionKey,
49
+ epochStartTime0: 0,
50
+ // 0 is always ok, but only for the IPK key
51
+ groupSessionId0: null,
52
+ epochKey1: null,
53
+ operationalEpochKey1: null,
54
+ epochStartTime1: null,
55
+ groupSessionId1: null,
56
+ epochKey2: null,
57
+ operationalEpochKey2: null,
58
+ epochStartTime2: null,
59
+ groupSessionId2: null,
60
+ groupKeySecurityPolicy: 0,
61
+ // GroupKeyManagement.GroupKeySecurityPolicy.TrustFirst, the other option is provisional
62
+ groupKeyMulticastPolicy: 0
63
+ // GroupKeyManagement.GroupKeyMulticastPolicy.PerGroupId, provisional!
64
+ });
65
+ if (storage !== void 0) {
66
+ this.storage = storage;
67
+ }
68
+ }
69
+ set storage(storage) {
70
+ this.#messagingState.storage = storage;
71
+ }
72
+ /** Operative lookup of the group key sets by their id. */
73
+ get keySets() {
74
+ return this.#keySets;
75
+ }
76
+ get messaging() {
77
+ return this.#messagingState;
78
+ }
79
+ /** Operative lookup of the group key set id and the key by a group session Id. */
80
+ get sessions() {
81
+ return this.#keySets.sessions;
82
+ }
83
+ get groupKeyIdMap() {
84
+ return this.#groups.idMap;
85
+ }
86
+ set groupKeyIdMap(map) {
87
+ this.#groups.idMap = map;
88
+ }
89
+ get endpoints() {
90
+ return this.#groups.endpointMap;
91
+ }
92
+ currentKeyForGroup(groupId) {
93
+ return this.#groups.currentKeyForId(groupId);
94
+ }
95
+ subjectForGroup(id, keySetId) {
96
+ return this.#groups.subjectForGroup(id, keySetId);
97
+ }
98
+ multicastAddressFor(groupId) {
99
+ return this.#groups.multicastAddress(groupId);
100
+ }
101
+ /*
102
+ TODO for Controller to generate new epochs
103
+ addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs()) {
104
+ // TODO for Controller to generate new epochs
105
+ const epochKey = Crypto.getRandomData(CRYPTO_SYMMETRIC_KEY_LENGTH);
106
+ const operationalEpochKey = Crypto.hkdf(epochKey, this.#fabric.operationalId, GROUP_SECURITY_INFO);
107
+ const epochStartTime = startTimeMs * 1000;
108
+ logger.debug(`addGroupEpoch: epochStartTime=${epochStartTime}`, operationalEpochKey);
109
+ // TODO extend in structure and such
110
+ }
111
+ */
112
+ /**
113
+ * Sets new group key set data and pre-calculates all operative data like session ids and operational keys.
114
+ * Overwriting the existing one if it exists.
115
+ */
116
+ async setFromGroupKeySet(groupKeySet) {
117
+ const { groupKeySetId, epochKey0, epochKey1, epochKey2 } = groupKeySet;
118
+ if (epochKey0 === null) {
119
+ throw new import_general.MatterFlowError("EpochKey0 must be set");
120
+ }
121
+ await this.#cleanUpCounters(groupKeySetId);
122
+ const operationalId = this.#fabric.operationalId;
123
+ const operationalEpochKey0 = await import_general.Crypto.hkdf(epochKey0, operationalId, GROUP_SECURITY_INFO);
124
+ const operationalEpochKey1 = epochKey1 !== null ? await import_general.Crypto.hkdf(epochKey1, operationalId, GROUP_SECURITY_INFO) : null;
125
+ const operationalEpochKey2 = epochKey2 !== null ? await import_general.Crypto.hkdf(epochKey2, operationalId, GROUP_SECURITY_INFO) : null;
126
+ this.#keySets.add({
127
+ ...groupKeySet,
128
+ operationalEpochKey0,
129
+ groupSessionId0: await this.#keySets.sessionIdFromKey(operationalEpochKey0),
130
+ operationalEpochKey1,
131
+ groupSessionId1: operationalEpochKey1 !== null ? await this.#keySets.sessionIdFromKey(operationalEpochKey1) : null,
132
+ operationalEpochKey2,
133
+ groupSessionId2: operationalEpochKey2 !== null ? await this.#keySets.sessionIdFromKey(operationalEpochKey2) : null
134
+ });
135
+ }
136
+ /** Removes a group key set by its id and cleans up the counters and data. */
137
+ async removeGroupKeySet(groupKeySetId) {
138
+ if (groupKeySetId === 0) {
139
+ throw new import_general.InternalError("Cannot remove the group key set 0.");
140
+ }
141
+ await this.#cleanUpCounters(groupKeySetId, true);
142
+ return this.#keySets.delete("groupKeySetId", groupKeySetId);
143
+ }
144
+ /** Cleans up the counters and data for a group key set by its id. */
145
+ async #cleanUpCounters(groupKeySetId, forDelete = false) {
146
+ if (this.#keySets.forId(groupKeySetId) === void 0) {
147
+ return;
148
+ }
149
+ const operationalKeys = this.#keySets.allKeysForId(groupKeySetId);
150
+ for (const { key } of operationalKeys) {
151
+ await this.#messagingState.removeCounter(key, forDelete);
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=FabricGroupsManager.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/groups/FabricGroupsManager.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Subject } from "#action/index.js";
7
+ import { Fabric } from "#fabric/Fabric.js";
8
+ import { BasicMap } from "#general";
9
+ import { EndpointNumber, GroupId } from "#types";
10
+ import { KeySets, OperationalKeySet } from "./KeySets.js";
11
+ export declare class Groups {
12
+ #private;
13
+ /** Operational variant of the group table, maps group Ids to a list of enabled endpoints. */
14
+ readonly endpointMap: Map<GroupId, EndpointNumber[]>;
15
+ constructor(fabric: Fabric, keySets: KeySets<OperationalKeySet>);
16
+ /** Operative lookup of the group key sets by a group id and to react on added removed groups. */
17
+ get idMap(): BasicMap<GroupId, number>;
18
+ /** Updates the group key id map when changed in Group Key Management Cluster. Only changes are taken over. */
19
+ set idMap(map: Map<GroupId, number>);
20
+ subjectForGroup(id: GroupId, keySetId: number): Subject;
21
+ /** Returns the multicast address for a given group id for this fabric. */
22
+ multicastAddress(groupId: GroupId): string;
23
+ /**
24
+ * Returns the current operational group key for a given group id and returns the keys, start time and
25
+ * their session IDs.
26
+ */
27
+ currentKeyForId(groupId: GroupId): {
28
+ keySetId: number;
29
+ key: Uint8Array;
30
+ sessionId?: number;
31
+ startTime: number | bigint;
32
+ };
33
+ }
34
+ //# sourceMappingURL=Groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Groups.d.ts","sourceRoot":"","sources":["../../../src/groups/Groups.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAsD,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,MAAM;;IAOf,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,iCAAwC;gBAEhD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAK/D,iGAAiG;IACjG,IAAI,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAErC;IAED,8GAA8G;IAC9G,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAUlC;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAQ7C,0EAA0E;IAC1E,gBAAgB,CAAC,OAAO,EAAE,OAAO;IAgBjC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO;;;;;;CAOnC"}
@@ -0,0 +1,89 @@
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 Groups_exports = {};
20
+ __export(Groups_exports, {
21
+ Groups: () => Groups
22
+ });
23
+ module.exports = __toCommonJS(Groups_exports);
24
+ var import_action = require("#action/index.js");
25
+ var import_general = require("#general");
26
+ var import_types = require("#types");
27
+ /**
28
+ * @license
29
+ * Copyright 2022-2025 Matter.js Authors
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ */
32
+ class Groups {
33
+ #fabric;
34
+ #keySets;
35
+ /** Operational variant of the group key map attribute from Group Key Management cluster, maps group Ids to key sets. */
36
+ #groupKeyIdMap = new import_general.BasicMap();
37
+ /** Operational variant of the group table, maps group Ids to a list of enabled endpoints. */
38
+ endpointMap = /* @__PURE__ */ new Map();
39
+ constructor(fabric, keySets) {
40
+ this.#fabric = fabric;
41
+ this.#keySets = keySets;
42
+ }
43
+ /** Operative lookup of the group key sets by a group id and to react on added removed groups. */
44
+ get idMap() {
45
+ return this.#groupKeyIdMap;
46
+ }
47
+ /** Updates the group key id map when changed in Group Key Management Cluster. Only changes are taken over. */
48
+ set idMap(map) {
49
+ for (const [groupId, keySetId] of map.entries()) {
50
+ this.#groupKeyIdMap.set(groupId, keySetId);
51
+ }
52
+ for (const groupId of this.#groupKeyIdMap.keys()) {
53
+ if (!map.has(groupId)) {
54
+ this.#groupKeyIdMap.delete(groupId);
55
+ }
56
+ }
57
+ }
58
+ subjectForGroup(id, keySetId) {
59
+ return import_action.Subject.Group({
60
+ id,
61
+ hasValidMapping: this.idMap.get(id) === keySetId,
62
+ endpoints: this.endpointMap.get(id) ?? []
63
+ });
64
+ }
65
+ /** Returns the multicast address for a given group id for this fabric. */
66
+ multicastAddress(groupId) {
67
+ import_types.GroupId.assertGroupId(groupId);
68
+ const writer = new import_general.DataWriter();
69
+ writer.writeUInt16(65333);
70
+ writer.writeUInt16(64);
71
+ writer.writeUInt8(253);
72
+ writer.writeUInt64(this.#fabric.fabricId);
73
+ writer.writeUInt8(0);
74
+ writer.writeUInt16((0, import_types.GroupId)(groupId));
75
+ return (0, import_general.ipv6BytesToString)(writer.toByteArray());
76
+ }
77
+ /**
78
+ * Returns the current operational group key for a given group id and returns the keys, start time and
79
+ * their session IDs.
80
+ */
81
+ currentKeyForId(groupId) {
82
+ const keySetId = this.#groupKeyIdMap.get(groupId);
83
+ if (keySetId === void 0) {
84
+ throw new import_general.ImplementationError(`No group key set found for groupId ${groupId}.`);
85
+ }
86
+ return { ...this.#keySets.currentKeyForId(keySetId), keySetId };
87
+ }
88
+ }
89
+ //# sourceMappingURL=Groups.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/groups/Groups.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAAwB;AAExB,qBAA6E;AAC7E,mBAAwC;AARxC;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,OAAO;AAAA,EAChB;AAAA,EACA;AAAA;AAAA,EAGS,iBAAiB,IAAI,wBAA0B;AAAA;AAAA,EAG/C,cAAc,oBAAI,IAA+B;AAAA,EAE1D,YAAY,QAAgB,SAAqC;AAC7D,SAAK,UAAU;AACf,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA,EAGA,IAAI,QAAmC;AACnC,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAI,MAAM,KAA2B;AACjC,eAAW,CAAC,SAAS,QAAQ,KAAK,IAAI,QAAQ,GAAG;AAC7C,WAAK,eAAe,IAAI,SAAS,QAAQ;AAAA,IAC7C;AACA,eAAW,WAAW,KAAK,eAAe,KAAK,GAAG;AAC9C,UAAI,CAAC,IAAI,IAAI,OAAO,GAAG;AAEnB,aAAK,eAAe,OAAO,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,gBAAgB,IAAa,UAAkB;AAC3C,WAAO,sBAAQ,MAAM;AAAA,MACjB;AAAA,MACA,iBAAiB,KAAK,MAAM,IAAI,EAAE,MAAM;AAAA,MACxC,WAAW,KAAK,YAAY,IAAI,EAAE,KAAK,CAAC;AAAA,IAC5C,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,iBAAiB,SAAkB;AAC/B,yBAAQ,cAAc,OAAO;AAK7B,UAAM,SAAS,IAAI,0BAAW;AAC9B,WAAO,YAAY,KAAM;AACzB,WAAO,YAAY,EAAM;AACzB,WAAO,WAAW,GAAI;AACtB,WAAO,YAAY,KAAK,QAAQ,QAAQ;AACxC,WAAO,WAAW,CAAI;AACtB,WAAO,gBAAY,sBAAQ,OAAO,CAAC;AACnC,eAAO,kCAAkB,OAAO,YAAY,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB,SAAkB;AAC9B,UAAM,WAAW,KAAK,eAAe,IAAI,OAAO;AAChD,QAAI,aAAa,QAAW;AACxB,YAAM,IAAI,mCAAoB,sCAAsC,OAAO,GAAG;AAAA,IAClF;AACA,WAAO,EAAE,GAAG,KAAK,SAAS,gBAAgB,QAAQ,GAAG,SAAS;AAAA,EAClE;AACJ;",
5
+ "names": []
6
+ }