@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
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { GroupKeyManagement } from "#clusters/group-key-management";
7
+ import { BasicSet } from "#general";
8
+ export declare const GROUP_KEY_INFO: Uint8Array<ArrayBufferLike>;
9
+ export declare class KeySets<T extends OperationalKeySet> extends BasicSet<T> {
10
+ #private;
11
+ get sessions(): Map<number, {
12
+ keySetId: number;
13
+ key: Uint8Array;
14
+ }[]>;
15
+ add(item: T): void;
16
+ delete<F extends keyof T>(itemOrField: T | F, value?: T[F]): boolean;
17
+ forId(groupKeySetId: number): OperationalKeySet | undefined;
18
+ /**
19
+ * Return an operative list of operational keys, start time and their session IDs for a specified
20
+ * group key set id. This is mainly used for receiving messages.
21
+ */
22
+ allKeysForId(keySetId: number): {
23
+ key: Uint8Array;
24
+ sessionId?: number;
25
+ startTime: number | bigint;
26
+ }[];
27
+ /**
28
+ * Returns the current operational group key for a given group KeySet Id and returns the keys, start time and
29
+ * their session IDs. This is mainly used for sending messages.
30
+ */
31
+ currentKeyForId(keySetId: number): {
32
+ key: Uint8Array;
33
+ sessionId?: number;
34
+ startTime: number | bigint;
35
+ };
36
+ /**
37
+ * Returns the group key set for a given group key set id in the official data format from the Group key Management
38
+ * cluster.
39
+ */
40
+ asGroupKeySet(groupKeySetId: number): {
41
+ groupKeySetId: number;
42
+ epochKey0: Uint8Array<ArrayBufferLike> | null;
43
+ epochStartTime0: number | bigint | null;
44
+ epochKey1: Uint8Array<ArrayBufferLike> | null;
45
+ epochStartTime1: number | bigint | null;
46
+ epochKey2: Uint8Array<ArrayBufferLike> | null;
47
+ epochStartTime2: number | bigint | null;
48
+ groupKeySecurityPolicy: GroupKeyManagement.GroupKeySecurityPolicy;
49
+ groupKeyMulticastPolicy: GroupKeyManagement.GroupKeyMulticastPolicy | undefined;
50
+ } | undefined;
51
+ /** Calculates a group session id based on the operational group key. */
52
+ sessionIdFromKey(operationalGroupKey: Uint8Array): Promise<number>;
53
+ }
54
+ export type GroupKeySet = GroupKeyManagement.GroupKeySet;
55
+ /** Enhanced structure of GroupKeySet to include operational data for easier operational processing. */
56
+ export type OperationalKeySet = GroupKeySet & {
57
+ operationalEpochKey0: Uint8Array;
58
+ groupSessionId0: number | null;
59
+ operationalEpochKey1: Uint8Array | null;
60
+ groupSessionId1: number | null;
61
+ operationalEpochKey2: Uint8Array | null;
62
+ groupSessionId2: number | null;
63
+ };
64
+ //# sourceMappingURL=KeySets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeySets.d.ts","sourceRoot":"","sources":["../../../src/groups/KeySets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAyE,MAAM,UAAU,CAAC;AAE3G,eAAO,MAAM,cAAc,6BAAmC,CAAC;AAE/D,qBAAa,OAAO,CAAC,CAAC,SAAS,iBAAiB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;;IAIjE,IAAI,QAAQ;kBAFqC,MAAM;aAAO,UAAU;SAIvE;IAEQ,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAMlB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAQ7E,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM;aAKY,UAAU;oBAAc,MAAM;mBAAa,MAAM,GAAG,MAAM;;IA8BnG;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM;aAlCS,UAAU;oBAAc,MAAM;mBAAa,MAAM,GAAG,MAAM;;IA+DnG;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM;;;;;;;;;;;IA6BnC,wEAAwE;IAClE,gBAAgB,CAAC,mBAAmB,EAAE,UAAU;CAsCzD;AAED,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC;AAEzD,uGAAuG;AACvG,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC1C,oBAAoB,EAAE,UAAU,CAAC;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC"}
@@ -0,0 +1,179 @@
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 KeySets_exports = {};
20
+ __export(KeySets_exports, {
21
+ GROUP_KEY_INFO: () => GROUP_KEY_INFO,
22
+ KeySets: () => KeySets
23
+ });
24
+ module.exports = __toCommonJS(KeySets_exports);
25
+ var import_general = require("#general");
26
+ /**
27
+ * @license
28
+ * Copyright 2022-2025 Matter.js Authors
29
+ * SPDX-License-Identifier: Apache-2.0
30
+ */
31
+ const GROUP_KEY_INFO = import_general.Bytes.fromString("GroupKeyHash");
32
+ class KeySets extends import_general.BasicSet {
33
+ /** Operational enhanced structure for fast access based on the group session id. */
34
+ #sessions = /* @__PURE__ */ new Map();
35
+ get sessions() {
36
+ return this.#sessions;
37
+ }
38
+ add(item) {
39
+ this.delete("groupKeySetId", item.groupKeySetId);
40
+ super.add(item);
41
+ this.#updateSessions();
42
+ }
43
+ delete(itemOrField, value) {
44
+ const deleted = super.delete(itemOrField, value);
45
+ if (deleted) {
46
+ this.#updateSessions();
47
+ }
48
+ return deleted;
49
+ }
50
+ forId(groupKeySetId) {
51
+ return this.get("groupKeySetId", groupKeySetId);
52
+ }
53
+ /**
54
+ * Return an operative list of operational keys, start time and their session IDs for a specified
55
+ * group key set id. This is mainly used for receiving messages.
56
+ */
57
+ allKeysForId(keySetId) {
58
+ const groupKeySet = this.forId(keySetId);
59
+ if (groupKeySet === void 0) {
60
+ throw new import_general.MatterFlowError(`GroupKeySet for groupKeySet ${keySetId} not found.`);
61
+ }
62
+ const operationalKeys = Array();
63
+ const {
64
+ operationalEpochKey0,
65
+ groupSessionId0,
66
+ epochStartTime0,
67
+ operationalEpochKey1,
68
+ groupSessionId1,
69
+ epochStartTime1,
70
+ operationalEpochKey2,
71
+ groupSessionId2,
72
+ epochStartTime2
73
+ } = groupKeySet;
74
+ if (operationalEpochKey0 === null || epochStartTime0 === null || keySetId !== 0 && groupSessionId0 === null) {
75
+ throw new import_general.MatterFlowError(`EpochKey0 for groupKeySet ${keySetId} not found.`);
76
+ }
77
+ operationalKeys.push({
78
+ key: operationalEpochKey0,
79
+ sessionId: groupSessionId0 !== null ? groupSessionId0 : void 0,
80
+ startTime: epochStartTime0
81
+ });
82
+ if (operationalEpochKey1 !== null && groupSessionId1 !== null && epochStartTime1 !== null) {
83
+ operationalKeys.push({ key: operationalEpochKey1, sessionId: groupSessionId1, startTime: epochStartTime1 });
84
+ }
85
+ if (operationalEpochKey2 !== null && groupSessionId2 !== null && epochStartTime2 !== null) {
86
+ operationalKeys.push({ key: operationalEpochKey2, sessionId: groupSessionId2, startTime: epochStartTime2 });
87
+ }
88
+ return operationalKeys;
89
+ }
90
+ /**
91
+ * Returns the current operational group key for a given group KeySet Id and returns the keys, start time and
92
+ * their session IDs. This is mainly used for sending messages.
93
+ */
94
+ currentKeyForId(keySetId) {
95
+ const operationalKeys = this.allKeysForId(keySetId);
96
+ if (operationalKeys.length === 0) {
97
+ throw new import_general.MatterFlowError(`No operational keys found for groupKeySet ${keySetId}.`);
98
+ }
99
+ if (keySetId === 0) {
100
+ if (operationalKeys.length > 2) {
101
+ return operationalKeys[1];
102
+ }
103
+ return operationalKeys[0];
104
+ } else {
105
+ const now = import_general.Time.nowUs();
106
+ const relevantKeys = operationalKeys.filter(({ startTime }) => startTime <= now);
107
+ if (relevantKeys.length === 0) {
108
+ throw new import_general.ImplementationError(
109
+ `No operational keys found for groupKeySet ${keySetId} that are not in the future.`
110
+ );
111
+ }
112
+ return relevantKeys[operationalKeys.length - 1];
113
+ }
114
+ }
115
+ /**
116
+ * Returns the group key set for a given group key set id in the official data format from the Group key Management
117
+ * cluster.
118
+ */
119
+ asGroupKeySet(groupKeySetId) {
120
+ const groupKeySet = this.forId(groupKeySetId);
121
+ if (groupKeySet === void 0) {
122
+ return void 0;
123
+ }
124
+ const {
125
+ epochKey0,
126
+ epochStartTime0,
127
+ epochKey1,
128
+ epochStartTime1,
129
+ epochKey2,
130
+ epochStartTime2,
131
+ groupKeySecurityPolicy,
132
+ groupKeyMulticastPolicy
133
+ } = groupKeySet;
134
+ return {
135
+ groupKeySetId,
136
+ epochKey0,
137
+ epochStartTime0,
138
+ epochKey1,
139
+ epochStartTime1,
140
+ epochKey2,
141
+ epochStartTime2,
142
+ groupKeySecurityPolicy,
143
+ groupKeyMulticastPolicy
144
+ };
145
+ }
146
+ /** Calculates a group session id based on the operational group key. */
147
+ async sessionIdFromKey(operationalGroupKey) {
148
+ const groupKeyHash = await import_general.Crypto.hkdf(operationalGroupKey, new Uint8Array(), GROUP_KEY_INFO, 2);
149
+ return new import_general.DataReader(groupKeyHash).readUInt16();
150
+ }
151
+ /**
152
+ * Updates the group session map based on the current group key sets.
153
+ * This is used to quickly find the operational keys by their group session id.
154
+ */
155
+ #updateSessions() {
156
+ this.#sessions.clear();
157
+ for (const [id, keySet] of this.mapOf("groupKeySetId").entries()) {
158
+ if (id === 0) {
159
+ continue;
160
+ }
161
+ if (keySet.groupSessionId0 !== null) {
162
+ const list = this.#sessions.get(keySet.groupSessionId0) ?? [];
163
+ list.push({ key: keySet.operationalEpochKey0, keySetId: id });
164
+ this.#sessions.set(keySet.groupSessionId0, list);
165
+ }
166
+ if (keySet.groupSessionId1 !== null && keySet.operationalEpochKey1 !== null) {
167
+ const list = this.#sessions.get(keySet.groupSessionId1) ?? [];
168
+ list.push({ key: keySet.operationalEpochKey1, keySetId: id });
169
+ this.#sessions.set(keySet.groupSessionId1, list);
170
+ }
171
+ if (keySet.groupSessionId2 !== null && keySet.operationalEpochKey2 !== null) {
172
+ const list = this.#sessions.get(keySet.groupSessionId2) ?? [];
173
+ list.push({ key: keySet.operationalEpochKey2, keySetId: id });
174
+ this.#sessions.set(keySet.groupSessionId2, list);
175
+ }
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=KeySets.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/groups/KeySets.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { StorageContext } from "#general";
7
+ import { PersistedMessageCounter } from "#protocol/MessageCounter.js";
8
+ import { MessageReceptionStateEncryptedWithRollover } from "#protocol/MessageReceptionState.js";
9
+ import { NodeId } from "#types";
10
+ export declare class MessagingState {
11
+ #private;
12
+ constructor(storage?: StorageContext);
13
+ set storage(storage: StorageContext);
14
+ /**
15
+ * Return the message counter for sending messages to a group with the given operational key.
16
+ */
17
+ counterFor(operationalKey: Uint8Array): PersistedMessageCounter;
18
+ removeCounter(key: Uint8Array, forDelete?: boolean): Promise<void>;
19
+ /**
20
+ * Returns the message reception state for a given source node id and operational key.
21
+ */
22
+ receptionStateFor(sourceNodeId: NodeId, operationalKey: Uint8Array): MessageReceptionStateEncryptedWithRollover;
23
+ }
24
+ //# sourceMappingURL=MessagingState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessagingState.d.ts","sourceRoot":"","sources":["../../../src/groups/MessagingState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA6C,cAAc,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,qBAAa,cAAc;;gBAaX,OAAO,CAAC,EAAE,cAAc;IAMpC,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAKlC;IAED;;OAEG;IACH,UAAU,CAAC,cAAc,EAAE,UAAU;IAa/B,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,UAAQ;IAStD;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU;CAWrE"}
@@ -0,0 +1,91 @@
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 MessagingState_exports = {};
20
+ __export(MessagingState_exports, {
21
+ MessagingState: () => MessagingState
22
+ });
23
+ module.exports = __toCommonJS(MessagingState_exports);
24
+ var import_general = require("#general");
25
+ var import_MessageCounter = require("#protocol/MessageCounter.js");
26
+ var import_MessageReceptionState = require("#protocol/MessageReceptionState.js");
27
+ /**
28
+ * @license
29
+ * Copyright 2022-2025 Matter.js Authors
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ */
32
+ class MessagingState {
33
+ /**
34
+ * Message counter for sending data messages to a group per Operational key. No need to scope to a source node
35
+ * because we are the sending node
36
+ * TODO: For management: Make sure to start rotating the key early enough that a former counter-value is not used
37
+ * again for the same key.
38
+ */
39
+ #groupDataCounters = /* @__PURE__ */ new Map();
40
+ /** Message reception state for data messages per Operational key and source node. */
41
+ #messageDataReceptionState = /* @__PURE__ */ new Map();
42
+ #storage;
43
+ constructor(storage) {
44
+ if (storage !== void 0) {
45
+ this.#storage = storage;
46
+ }
47
+ }
48
+ set storage(storage) {
49
+ if (this.#storage !== void 0) {
50
+ throw new import_general.InternalError("Storage context can only be set once.");
51
+ }
52
+ this.#storage = storage;
53
+ }
54
+ /**
55
+ * Return the message counter for sending messages to a group with the given operational key.
56
+ */
57
+ counterFor(operationalKey) {
58
+ if (!this.#storage) {
59
+ throw new import_general.ImplementationError("Group session cannot be created without storage context.");
60
+ }
61
+ const operationalKeyHex = import_general.Bytes.toHex(operationalKey);
62
+ let counter = this.#groupDataCounters.get(operationalKeyHex);
63
+ if (counter === void 0) {
64
+ counter = new import_MessageCounter.PersistedMessageCounter(this.#storage, `${operationalKeyHex}-data`);
65
+ this.#groupDataCounters.set(operationalKeyHex, counter);
66
+ }
67
+ return counter;
68
+ }
69
+ async removeCounter(key, forDelete = false) {
70
+ const operationalKeyHex = import_general.Bytes.toHex(key);
71
+ this.#groupDataCounters.delete(operationalKeyHex);
72
+ if (forDelete) {
73
+ await this.#storage?.delete(`${operationalKeyHex}-data`);
74
+ }
75
+ }
76
+ /**
77
+ * Returns the message reception state for a given source node id and operational key.
78
+ */
79
+ receptionStateFor(sourceNodeId, operationalKey) {
80
+ const operationalKeyHex = import_general.Bytes.toHex(operationalKey);
81
+ let receptionState = this.#messageDataReceptionState.get(operationalKeyHex)?.get(sourceNodeId);
82
+ if (receptionState === void 0) {
83
+ receptionState = new import_MessageReceptionState.MessageReceptionStateEncryptedWithRollover();
84
+ const keyMap = this.#messageDataReceptionState.get(operationalKeyHex) ?? /* @__PURE__ */ new Map();
85
+ keyMap.set(sourceNodeId, receptionState);
86
+ this.#messageDataReceptionState.set(operationalKeyHex, keyMap);
87
+ }
88
+ return receptionState;
89
+ }
90
+ }
91
+ //# sourceMappingURL=MessagingState.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/groups/MessagingState.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA0E;AAC1E,4BAAwC;AACxC,mCAA2D;AAP3D;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOf,qBAAqB,oBAAI,IAAqC;AAAA;AAAA,EAG9D,6BAA6B,oBAAI,IAAqE;AAAA,EAC/G;AAAA,EAEA,YAAY,SAA0B;AAClC,QAAI,YAAY,QAAW;AACvB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,6BAAc,uCAAuC;AAAA,IACnE;AACA,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,gBAA4B;AACnC,QAAI,CAAC,KAAK,UAAU;AAChB,YAAM,IAAI,mCAAoB,0DAA0D;AAAA,IAC5F;AACA,UAAM,oBAAoB,qBAAM,MAAM,cAAc;AACpD,QAAI,UAAU,KAAK,mBAAmB,IAAI,iBAAiB;AAC3D,QAAI,YAAY,QAAW;AACvB,gBAAU,IAAI,8CAAwB,KAAK,UAAU,GAAG,iBAAiB,OAAO;AAChF,WAAK,mBAAmB,IAAI,mBAAmB,OAAO;AAAA,IAC1D;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,cAAc,KAAiB,YAAY,OAAO;AACpD,UAAM,oBAAoB,qBAAM,MAAM,GAAG;AACzC,SAAK,mBAAmB,OAAO,iBAAiB;AAChD,QAAI,WAAW;AAEX,YAAM,KAAK,UAAU,OAAO,GAAG,iBAAiB,OAAO;AAAA,IAC3D;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,cAAsB,gBAA4B;AAChE,UAAM,oBAAoB,qBAAM,MAAM,cAAc;AACpD,QAAI,iBAAiB,KAAK,2BAA2B,IAAI,iBAAiB,GAAG,IAAI,YAAY;AAC7F,QAAI,mBAAmB,QAAW;AAC9B,uBAAiB,IAAI,wEAA2C;AAChE,YAAM,SAAS,KAAK,2BAA2B,IAAI,iBAAiB,KAAK,oBAAI,IAAI;AACjF,aAAO,IAAI,cAAc,cAAc;AACvC,WAAK,2BAA2B,IAAI,mBAAmB,MAAM;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./FabricGroupsManager.js";
7
+ export * from "./KeySets.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/groups/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,25 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var groups_exports = {};
17
+ module.exports = __toCommonJS(groups_exports);
18
+ __reExport(groups_exports, require("./FabricGroupsManager.js"), module.exports);
19
+ __reExport(groups_exports, require("./KeySets.js"), module.exports);
20
+ /**
21
+ * @license
22
+ * Copyright 2022-2025 Matter.js Authors
23
+ * SPDX-License-Identifier: Apache-2.0
24
+ */
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/groups/index.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,qCANd;AAOA,2BAAc,yBAPd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -11,6 +11,7 @@ export * from "./codec/index.js";
11
11
  export * from "./common/index.js";
12
12
  export * from "./events/index.js";
13
13
  export * from "./fabric/index.js";
14
+ export * from "./groups/index.js";
14
15
  export * from "./interaction/index.js";
15
16
  export * from "./mdns/index.js";
16
17
  export * from "./peer/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -23,6 +23,7 @@ __reExport(src_exports, require("./codec/index.js"), module.exports);
23
23
  __reExport(src_exports, require("./common/index.js"), module.exports);
24
24
  __reExport(src_exports, require("./events/index.js"), module.exports);
25
25
  __reExport(src_exports, require("./fabric/index.js"), module.exports);
26
+ __reExport(src_exports, require("./groups/index.js"), module.exports);
26
27
  __reExport(src_exports, require("./interaction/index.js"), module.exports);
27
28
  __reExport(src_exports, require("./mdns/index.js"), module.exports);
28
29
  __reExport(src_exports, require("./peer/index.js"), module.exports);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,8BANd;AAOA,wBAAc,2BAPd;AAQA,wBAAc,mCARd;AASA,wBAAc,+BATd;AAUA,wBAAc,6BAVd;AAWA,wBAAc,8BAXd;AAYA,wBAAc,8BAZd;AAaA,wBAAc,8BAbd;AAcA,wBAAc,mCAdd;AAeA,wBAAc,4BAfd;AAgBA,wBAAc,4BAhBd;AAiBA,wBAAc,gCAjBd;AAkBA,wBAAc,qCAlBd;AAmBA,wBAAc,+BAnBd;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,8BANd;AAOA,wBAAc,2BAPd;AAQA,wBAAc,mCARd;AASA,wBAAc,+BATd;AAUA,wBAAc,6BAVd;AAWA,wBAAc,8BAXd;AAYA,wBAAc,8BAZd;AAaA,wBAAc,8BAbd;AAcA,wBAAc,8BAdd;AAeA,wBAAc,mCAfd;AAgBA,wBAAc,4BAhBd;AAiBA,wBAAc,4BAjBd;AAkBA,wBAAc,gCAlBd;AAmBA,wBAAc,qCAnBd;AAoBA,wBAAc,+BApBd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -1,12 +1,7 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2023 Project CHIP Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
1
  import { AccessControl } from "#clusters/access-control";
7
2
  import { AccessLevel } from "#model";
8
- import { ClusterId, DeviceTypeId, EndpointNumber, FabricIndex, NodeId, StatusResponseError } from "#types";
9
- import { SecureSession } from "../session/SecureSession.js";
3
+ import { ClusterId, DeviceTypeId, EndpointNumber, FabricIndex, StatusResponseError, SubjectId } from "#types";
4
+ import { AccessControl as AccessControlContext } from "../action/server/AccessControl.js";
10
5
  export type AclEntry = Omit<AccessControl.AccessControlEntry, "privilege"> & {
11
6
  privilege: AccessLevel;
12
7
  };
@@ -23,7 +18,7 @@ declare enum AuthModeNone {
23
18
  export type IncomingSubjectDescriptor = {
24
19
  isCommissioning: boolean;
25
20
  authMode: AccessControl.AccessControlEntryAuthMode | AuthModeNone;
26
- subjects: NodeId[];
21
+ subjects: SubjectId[];
27
22
  fabricIndex: FabricIndex;
28
23
  };
29
24
  export declare class AccessDeniedError extends StatusResponseError {
@@ -39,14 +34,10 @@ export declare class AccessControlManager {
39
34
  * Public method used to update the Access Control List on changes.
40
35
  */
41
36
  updateAccessControlList(aclList?: AccessControl.AccessControlEntry[]): void;
42
- /**
43
- * Check if the given ACL entry is allowed to be used for the given subject descriptor, endpoint, and cluster ID.
44
- */
45
- allowsPrivilege(session: SecureSession, endpoint: AclEndpointContext, clusterId: ClusterId, privilege: AccessLevel): boolean;
46
37
  /**
47
38
  * Determines the granted privileges for the given session, endpoint, and cluster ID and returns them.
48
39
  */
49
- getGrantedPrivileges(session: SecureSession, endpoint: AclEndpointContext, clusterId: ClusterId): AccessLevel[];
40
+ getGrantedPrivileges(context: AccessControlContext.Session, endpoint: AclEndpointContext, clusterId: ClusterId): AccessLevel[];
50
41
  }
51
42
  export {};
52
43
  //# sourceMappingURL=AccessControlManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessControlManager.d.ts","sourceRoot":"","sources":["../../../src/interaction/AccessControlManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAEH,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EACX,MAAM,EAEN,mBAAmB,EACtB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;IACzE,SAAS,EAAE,WAAW,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,sBAAsB,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,cAAc,CAAC;IACnB,WAAW,EAAE,YAAY,EAAE,CAAC;CAC/B,CAAC;AAUF,aAAK,YAAY;IACb,IAAI,IAAI;CACX;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC,0BAA0B,GAAG,YAAY,CAAC;IAClE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,mBAAmB;gBAC1C,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED;;GAEG;AACH,qBAAa,oBAAoB;;gBAWzB,OAAO,GAAE,aAAa,CAAC,kBAAkB,EAAO,EAChD,yBAAyB,CAAC,EAAE,CACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,KACnB,OAAO;IAQhB;;OAEG;IACH,uBAAuB,CAAC,OAAO,GAAE,aAAa,CAAC,kBAAkB,EAAO,GAAG,IAAI;IAyD/E;;OAEG;IACH,eAAe,CACX,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GACvB,OAAO;IAoBV;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW,EAAE;CA6KlH"}
1
+ {"version":3,"file":"AccessControlManager.d.ts","sourceRoot":"","sources":["../../../src/interaction/AccessControlManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAEH,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,mBAAmB,EACnB,SAAS,EACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE1F,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;IACzE,SAAS,EAAE,WAAW,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,sBAAsB,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,cAAc,CAAC;IACnB,WAAW,EAAE,YAAY,EAAE,CAAC;CAC/B,CAAC;AAUF,aAAK,YAAY;IACb,IAAI,IAAI;CACX;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC,0BAA0B,GAAG,YAAY,CAAC;IAClE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,mBAAmB;gBAC1C,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED;;GAEG;AACH,qBAAa,oBAAoB;;gBAWzB,OAAO,GAAE,aAAa,CAAC,kBAAkB,EAAO,EAChD,yBAAyB,CAAC,EAAE,CACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,KACnB,OAAO;IAQhB;;OAEG;IACH,uBAAuB,CAAC,OAAO,GAAE,aAAa,CAAC,kBAAkB,EAAO,GAAG,IAAI;IA2D/E;;OAEG;IACH,oBAAoB,CAChB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EACrC,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,GACrB,WAAW,EAAE;CAoKnB"}