@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
@@ -18,296 +18,25 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var SecureSession_exports = {};
20
20
  __export(SecureSession_exports, {
21
- NoAssociatedFabricError: () => NoAssociatedFabricError,
22
- SecureSession: () => SecureSession,
23
- assertSecureSession: () => assertSecureSession
21
+ SecureSession: () => SecureSession
24
22
  });
25
23
  module.exports = __toCommonJS(SecureSession_exports);
26
24
  var import_general = require("#general");
27
- var import_PeerAddress = require("#peer/PeerAddress.js");
28
- var import_types = require("#types");
29
- var import_MessageCodec = require("../codec/MessageCodec.js");
30
- var import_ChannelManager = require("../protocol/ChannelManager.js");
31
- var import_MessageCounter = require("../protocol/MessageCounter.js");
32
- var import_MessageReceptionState = require("../protocol/MessageReceptionState.js");
33
25
  var import_Session = require("./Session.js");
34
26
  /**
35
27
  * @license
36
28
  * Copyright 2022-2025 Matter.js Authors
37
29
  * SPDX-License-Identifier: Apache-2.0
38
30
  */
39
- const logger = import_general.Logger.get("SecureSession");
40
- const SESSION_KEYS_INFO = import_general.Bytes.fromString("SessionKeys");
41
- const SESSION_RESUMPTION_KEYS_INFO = import_general.Bytes.fromString("SessionResumptionKeys");
42
- class NoAssociatedFabricError extends import_types.StatusResponseError {
43
- constructor(message) {
44
- super(message, import_types.StatusCode.UnsupportedAccess);
45
- }
46
- }
47
31
  class SecureSession extends import_Session.Session {
48
- #subscriptions = new import_general.BasicSet();
49
- #closingAfterExchangeFinished = false;
50
- #sendCloseMessageWhenClosing = true;
51
- #id;
52
- #isInitiator;
53
- #fabric;
54
- #peerNodeId;
55
- #peerSessionId;
56
- #decryptKey;
57
- #encryptKey;
58
- #attestationKey;
59
- #caseAuthenticatedTags;
60
- #isClosing = false;
61
- supportsMRP = true;
62
- static async create(args) {
63
- const {
64
- manager,
65
- id,
66
- fabric,
67
- peerNodeId,
68
- peerSessionId,
69
- sharedSecret,
70
- salt,
71
- isInitiator,
72
- isResumption,
73
- peerSessionParameters,
74
- caseAuthenticatedTags
75
- } = args;
76
- const keys = await import_general.Crypto.hkdf(
77
- sharedSecret,
78
- salt,
79
- isResumption ? SESSION_RESUMPTION_KEYS_INFO : SESSION_KEYS_INFO,
80
- import_general.CRYPTO_SYMMETRIC_KEY_LENGTH * 3
81
- );
82
- const decryptKey = isInitiator ? keys.slice(16, 32) : keys.slice(0, 16);
83
- const encryptKey = isInitiator ? keys.slice(0, 16) : keys.slice(16, 32);
84
- const attestationKey = keys.slice(32, 48);
85
- return new SecureSession({
86
- manager,
87
- id,
88
- fabric,
89
- peerNodeId,
90
- peerSessionId,
91
- decryptKey,
92
- encryptKey,
93
- attestationKey,
94
- sessionParameters: peerSessionParameters,
95
- isInitiator,
96
- caseAuthenticatedTags
97
- });
98
- }
99
- constructor(args) {
100
- super({
101
- ...args,
102
- setActiveTimestamp: true,
103
- // We always set the active timestamp for Secure sessions
104
- // Can be changed to a PersistedMessageCounter if we implement session storage
105
- messageCounter: new import_MessageCounter.MessageCounter(() => {
106
- this.end(true, true).catch((error) => logger.error(`Error while closing session: ${error}`));
107
- }),
108
- messageReceptionState: new import_MessageReceptionState.MessageReceptionStateEncryptedWithoutRollover()
109
- });
110
- const {
111
- manager,
112
- id,
113
- fabric,
114
- peerNodeId,
115
- peerSessionId,
116
- decryptKey,
117
- encryptKey,
118
- attestationKey,
119
- caseAuthenticatedTags,
120
- isInitiator
121
- } = args;
122
- this.#id = id;
123
- this.#fabric = fabric;
124
- this.#peerNodeId = peerNodeId;
125
- this.#peerSessionId = peerSessionId;
126
- this.#decryptKey = decryptKey;
127
- this.#encryptKey = encryptKey;
128
- this.#attestationKey = attestationKey;
129
- this.#caseAuthenticatedTags = caseAuthenticatedTags ?? [];
130
- this.#isInitiator = isInitiator;
131
- manager?.sessions.add(this);
132
- fabric?.addSession(this);
133
- logger.debug(
134
- `Created secure ${this.isPase ? "PASE" : "CASE"} session for fabric index ${fabric?.fabricIndex}`,
135
- this.name,
136
- this.parameterDiagnostics()
137
- );
138
- }
139
- parameterDiagnostics() {
140
- return import_general.Diagnostic.dict(
141
- {
142
- SII: this.idleIntervalMs,
143
- SAI: this.activeIntervalMs,
144
- SAT: this.activeThresholdMs,
145
- DMRev: this.dataModelRevision,
146
- IMRev: this.interactionModelRevision,
147
- spec: import_general.Diagnostic.hex(this.specificationVersion),
148
- maxPaths: this.maxPathsPerInvoke,
149
- CATs: this.#caseAuthenticatedTags
150
- },
151
- true
152
- );
153
- }
154
- get caseAuthenticatedTags() {
155
- return this.#caseAuthenticatedTags;
156
- }
157
- get closingAfterExchangeFinished() {
158
- return this.#closingAfterExchangeFinished;
159
- }
160
- get sendCloseMessageWhenClosing() {
161
- return this.#sendCloseMessageWhenClosing;
162
- }
163
- get isSecure() {
164
- return true;
165
- }
166
- get isPase() {
167
- return this.#peerNodeId === import_types.NodeId.UNSPECIFIED_NODE_ID;
168
- }
169
- get subscriptions() {
170
- return this.#subscriptions;
171
- }
172
- get isInitiator() {
173
- return this.#isInitiator;
174
- }
175
- get isClosing() {
176
- return this.#isClosing;
177
- }
178
- async close(closeAfterExchangeFinished) {
179
- if (closeAfterExchangeFinished === void 0) {
180
- closeAfterExchangeFinished = this.isPeerActive();
181
- }
182
- await this.end(true, closeAfterExchangeFinished);
183
- }
184
- decode({ header, applicationPayload, messageExtension }, aad) {
185
- if (header.hasMessageExtensions) {
186
- logger.info(
187
- `Message extensions are not supported. Ignoring ${messageExtension ? import_general.Bytes.toHex(messageExtension) : void 0}`
188
- );
189
- }
190
- const nonce = this.generateNonce(header.securityFlags, header.messageId, this.#peerNodeId);
191
- const message = import_MessageCodec.MessageCodec.decodePayload({
192
- header,
193
- applicationPayload: import_general.Crypto.decrypt(this.#decryptKey, applicationPayload, nonce, aad)
194
- });
195
- if (message.payloadHeader.hasSecuredExtension) {
196
- logger.info(
197
- `Secured extensions are not supported. Ignoring ${message.securityExtension ? import_general.Bytes.toHex(message.securityExtension) : void 0}`
198
- );
199
- }
200
- return message;
201
- }
202
- encode(message) {
203
- message.packetHeader.sessionId = this.#peerSessionId;
204
- const { header, applicationPayload } = import_MessageCodec.MessageCodec.encodePayload(message);
205
- const headerBytes = import_MessageCodec.MessageCodec.encodePacketHeader(message.packetHeader);
206
- const securityFlags = headerBytes[3];
207
- const sessionNodeId = this.isPase ? import_types.NodeId.UNSPECIFIED_NODE_ID : this.#fabric?.nodeId ?? import_types.NodeId.UNSPECIFIED_NODE_ID;
208
- const nonce = this.generateNonce(securityFlags, header.messageId, sessionNodeId);
209
- return { header, applicationPayload: import_general.Crypto.encrypt(this.#encryptKey, applicationPayload, nonce, headerBytes) };
210
- }
211
- get attestationChallengeKey() {
212
- return this.#attestationKey;
213
- }
214
- get fabric() {
215
- return this.#fabric;
216
- }
217
- addAssociatedFabric(fabric) {
218
- if (this.#fabric !== void 0) {
219
- throw new import_general.MatterFlowError("Session already has an associated Fabric. Cannot change this.");
220
- }
221
- this.#fabric = fabric;
222
- }
223
- get id() {
224
- return this.#id;
225
- }
226
- get name() {
227
- return `secure/${this.#id}`;
228
- }
229
- get peerSessionId() {
230
- return this.#peerSessionId;
231
- }
232
- get nodeId() {
233
- return this.#fabric?.nodeId ?? import_types.NodeId.UNSPECIFIED_NODE_ID;
234
- }
235
- get peerNodeId() {
236
- return this.#peerNodeId;
237
- }
238
- get associatedFabric() {
239
- if (this.#fabric === void 0) {
240
- throw new NoAssociatedFabricError(
241
- `${this.isPase ? "PASE " : ""}Session needs to have an associated Fabric for fabric sensitive data handling.`
242
- );
243
- }
244
- return this.#fabric;
245
- }
246
- async clearSubscriptions(flushSubscriptions = false, cancelledByPeer = false) {
247
- const subscriptions = [...this.#subscriptions];
248
- for (const subscription of subscriptions) {
249
- await subscription.close(flushSubscriptions, cancelledByPeer);
250
- }
251
- return subscriptions.length;
252
- }
253
- /** Ends a session. Outstanding subscription data will be flushed before the session is destroyed. */
254
- async end(sendClose, closeAfterExchangeFinished = false) {
255
- await this.clearSubscriptions(true);
256
- await this.destroy(sendClose, closeAfterExchangeFinished);
257
- }
258
- /** Destroys a session. Outstanding subscription data will be discarded. */
259
- async destroy(sendClose = false, closeAfterExchangeFinished = true) {
260
- await this.clearSubscriptions(false);
261
- this.#fabric?.removeSession(this);
262
- if (!sendClose) {
263
- this.#sendCloseMessageWhenClosing = false;
264
- }
265
- if (closeAfterExchangeFinished) {
266
- logger.info(`Register Session ${this.name} to close when exchange is ended.`);
267
- this.#closingAfterExchangeFinished = true;
268
- } else {
269
- this.#isClosing = true;
270
- logger.info(`End ${this.isPase ? "PASE" : "CASE"} session ${this.name}`);
271
- this.manager?.sessions.delete(this);
272
- if (this.closer) {
273
- try {
274
- await this.closer;
275
- } catch (error) {
276
- import_ChannelManager.NoChannelError.accept(error);
277
- } finally {
278
- await this.destroyed.emit();
279
- }
280
- return;
281
- }
282
- await this.destroyed.emit();
283
- }
284
- }
285
- /**
286
- * The peer node's address.
287
- */
288
- get peerAddress() {
289
- return (0, import_PeerAddress.PeerAddress)({
290
- fabricIndex: this.#fabric?.fabricIndex ?? import_types.FabricIndex.NO_FABRIC,
291
- nodeId: this.#peerNodeId
292
- });
293
- }
294
- /**
295
- * Indicates whether a peer matches a specific address.
296
- */
297
- peerIs(address) {
298
- return (this.#fabric?.fabricIndex ?? import_types.FabricIndex.NO_FABRIC) === address.fabricIndex && this.#peerNodeId === address.nodeId;
299
- }
300
- generateNonce(securityFlags, messageId, nodeId) {
301
- const writer = new import_general.DataWriter(import_general.Endian.Little);
302
- writer.writeUInt8(securityFlags);
303
- writer.writeUInt32(messageId);
304
- writer.writeUInt64(nodeId);
305
- return writer.toByteArray();
306
- }
32
+ isSecure = true;
307
33
  }
308
- function assertSecureSession(session, errorText) {
309
- if (!session?.isSecure) {
310
- throw new import_general.MatterFlowError(errorText ?? "Insecure session in secure context");
34
+ ((SecureSession2) => {
35
+ function assert(session, errorText) {
36
+ if (!session?.isSecure) {
37
+ throw new import_general.MatterFlowError(errorText ?? "Insecure session in secure context");
38
+ }
311
39
  }
312
- }
40
+ SecureSession2.assert = assert;
41
+ })(SecureSession || (SecureSession = {}));
313
42
  //# sourceMappingURL=SecureSession.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/session/SecureSession.ts"],
4
- "mappings": "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",
5
- "names": []
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,qBAAgC;AAChC,qBAAwB;AATxB;AAAA;AAAA;AAAA;AAAA;AAWO,MAAe,sBAAsB,uBAAQ;AAAA,EACvC,WAAW;AAGxB;AAAA,CAEO,CAAUA,mBAAV;AACI,WAAS,OAAO,SAAmB,WAAsD;AAC5F,QAAI,CAAC,SAAS,UAAU;AACpB,YAAM,IAAI,+BAAgB,aAAa,oCAAoC;AAAA,IAC/E;AAAA,EACJ;AAJO,EAAAA,eAAS;AAAA,GADH;",
5
+ "names": ["SecureSession"]
6
6
  }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { AsyncObservable } from "#general";
7
7
  import { NodeId, TypeFromPartialBitSchema } from "#types";
8
- import { DecodedMessage, DecodedPacket, Message, Packet } from "../codec/MessageCodec.js";
8
+ import { DecodedMessage, DecodedPacket, Message, Packet, SessionType } from "../codec/MessageCodec.js";
9
9
  import { SupportedTransportsBitmap } from "../common/Scanner.js";
10
10
  import { Fabric } from "../fabric/Fabric.js";
11
11
  import { MessageCounter } from "../protocol/MessageCounter.js";
@@ -83,6 +83,7 @@ export declare abstract class Session {
83
83
  timestamp: number;
84
84
  readonly createdAt: number;
85
85
  activeTimestamp: number;
86
+ abstract type: SessionType;
86
87
  protected readonly idleIntervalMs: number;
87
88
  protected readonly activeIntervalMs: number;
88
89
  protected readonly activeThresholdMs: number;
@@ -91,7 +92,7 @@ export declare abstract class Session {
91
92
  protected readonly specificationVersion: number;
92
93
  protected readonly maxPathsPerInvoke: number;
93
94
  protected readonly messageCounter: MessageCounter;
94
- protected readonly messageReceptionState: MessageReceptionState;
95
+ protected readonly messageReceptionState?: MessageReceptionState;
95
96
  protected readonly supportedTransports: TypeFromPartialBitSchema<typeof SupportedTransportsBitmap>;
96
97
  protected readonly maxTcpMessageSize: number;
97
98
  /**
@@ -103,7 +104,7 @@ export declare abstract class Session {
103
104
  constructor(args: {
104
105
  manager?: SessionManager;
105
106
  messageCounter: MessageCounter;
106
- messageReceptionState: MessageReceptionState;
107
+ messageReceptionState?: MessageReceptionState;
107
108
  sessionParameters?: SessionParameterOptions;
108
109
  setActiveTimestamp: boolean;
109
110
  });
@@ -111,13 +112,13 @@ export declare abstract class Session {
111
112
  notifyActivity(messageReceived: boolean): void;
112
113
  isPeerActive(): boolean;
113
114
  getIncrementedMessageCounter(): Promise<number>;
114
- updateMessageCounter(messageCounter: number, _sourceNodeId?: NodeId): void;
115
+ updateMessageCounter(messageCounter: number, _sourceNodeId?: NodeId, _operationalKey?: Uint8Array): void;
116
+ protected static generateNonce(securityFlags: number, messageId: number, nodeId: NodeId): Uint8Array<ArrayBufferLike>;
115
117
  /**
116
118
  * The peer's session parameters.
117
119
  */
118
120
  get parameters(): SessionParameters;
119
121
  abstract isSecure: boolean;
120
- abstract isPase: boolean;
121
122
  abstract id: number;
122
123
  abstract peerSessionId: number;
123
124
  abstract nodeId: NodeId | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../src/session/Session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../src/session/Session.ts"],"names":[],"mappings":"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"}
@@ -116,9 +116,19 @@ class Session {
116
116
  getIncrementedMessageCounter() {
117
117
  return this.messageCounter.getIncrementedCounter();
118
118
  }
119
- updateMessageCounter(messageCounter, _sourceNodeId) {
119
+ updateMessageCounter(messageCounter, _sourceNodeId, _operationalKey) {
120
+ if (this.messageReceptionState === void 0) {
121
+ throw new import_general.InternalError("MessageReceptionState is not defined for this session");
122
+ }
120
123
  this.messageReceptionState.updateMessageCounter(messageCounter);
121
124
  }
125
+ static generateNonce(securityFlags, messageId, nodeId) {
126
+ const writer = new import_general.DataWriter(import_general.Endian.Little);
127
+ writer.writeUInt8(securityFlags);
128
+ writer.writeUInt32(messageId);
129
+ writer.writeUInt64(nodeId);
130
+ return writer.toByteArray();
131
+ }
122
132
  /**
123
133
  * The peer's session parameters.
124
134
  */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/session/Session.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAsC;AANtC;AAAA;AAAA;AAAA;AAAA;AAmBO,MAAM,6BAA6B;AAMnC,MAAM,2BAA2B;AAGjC,MAAM,8BAA8B;AAGpC,MAAM,8BAA8B;AAGpC,MAAM,qCAAqC;AAM3C,MAAM,iCAAiC;AAMvC,MAAM,gCAAgC;AAEtC,MAAM,gCAAgC;AAkDtC,MAAe,QAAQ;AAAA,EAG1B;AAAA,EACA,YAAY,oBAAK,MAAM;AAAA,EACd,YAAY,oBAAK,MAAM;AAAA,EAChC,kBAAkB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnB;AAAA,EACA,iBAAa,gCAAoB;AAAA,EAEjC,YAAY,MAMT;AACC,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,QACf,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,QACpB,2BAA2B;AAAA,QAC3B,uBAAuB;AAAA,QACvB,oBAAoB;AAAA,QACpB,sBAAsB,CAAC;AAAA;AAAA,QACvB,oBAAoB;AAAA,MACxB,IAAI,CAAC;AAAA,MACL;AAAA,IACJ,IAAI;AACJ,SAAK,WAAW;AAChB,SAAK,iBAAiB;AACtB,SAAK,wBAAwB;AAC7B,SAAK,iBAAiB;AACtB,SAAK,mBAAmB;AACxB,SAAK,oBAAoB;AACzB,SAAK,oBAAoB;AACzB,SAAK,2BAA2B;AAChC,SAAK,uBAAuB;AAC5B,SAAK,oBAAoB;AACzB,SAAK,sBAAsB;AAC3B,SAAK,oBAAoB;AACzB,QAAI,oBAAoB;AACpB,WAAK,kBAAkB,KAAK;AAAA,IAChC;AAAA,EACJ;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,eAAe,iBAA0B;AACrC,SAAK,YAAY,oBAAK,MAAM;AAC5B,QAAI,iBAAiB;AAEjB,WAAK,kBAAkB,KAAK;AAAA,IAChC;AAAA,EACJ;AAAA,EAEA,eAAwB;AACpB,WAAO,oBAAK,MAAM,IAAI,KAAK,kBAAkB,KAAK;AAAA,EACtD;AAAA,EAEA,+BAA+B;AAC3B,WAAO,KAAK,eAAe,sBAAsB;AAAA,EACrD;AAAA,EAEA,qBAAqB,gBAAwB,eAAwB;AACjE,SAAK,sBAAsB,qBAAqB,cAAc;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,aAAgC;AAChC,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI;AACJ,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAgBA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,QAAQ;AACR,WAAO,KAAK,UAAU;AAAA,EAC1B;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -3,14 +3,16 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { DecodedPacket } from "#codec/index.js";
6
7
  import { FabricManager } from "#fabric/FabricManager.js";
7
8
  import { BasicSet, Construction, Environment, Environmental, Observable, StorageContext } from "#general";
8
9
  import { Subscription } from "#interaction/Subscription.js";
9
10
  import { PeerAddress } from "#peer/PeerAddress.js";
11
+ import { GroupSession } from "#session/GroupSession.js";
10
12
  import { CaseAuthenticatedTag, FabricIndex, NodeId } from "#types";
11
13
  import { Fabric } from "../fabric/Fabric.js";
12
14
  import { InsecureSession } from "./InsecureSession.js";
13
- import { SecureSession } from "./SecureSession.js";
15
+ import { NodeSession } from "./NodeSession.js";
14
16
  import { Session, SessionParameterOptions, SessionParameters } from "./Session.js";
15
17
  export declare const UNICAST_UNSECURE_SESSION_ID = 0;
16
18
  export interface ResumptionRecord {
@@ -50,7 +52,7 @@ export declare class SessionManager {
50
52
  /**
51
53
  * Active secure sessions.
52
54
  */
53
- get sessions(): BasicSet<SecureSession, SecureSession>;
55
+ get sessions(): BasicSet<NodeSession, NodeSession>;
54
56
  /**
55
57
  * Active insecure sessions.
56
58
  */
@@ -70,7 +72,7 @@ export declare class SessionManager {
70
72
  /**
71
73
  * Emits when there is a change to the subscription set.
72
74
  */
73
- get subscriptionsChanged(): Observable<[session: SecureSession, subscription: Subscription], void>;
75
+ get subscriptionsChanged(): Observable<[session: NodeSession, subscription: Subscription], void>;
74
76
  /**
75
77
  * Emits when resubmission is necessary due to timeout or network error.
76
78
  */
@@ -99,7 +101,7 @@ export declare class SessionManager {
99
101
  isResumption: boolean;
100
102
  peerSessionParameters?: SessionParameterOptions;
101
103
  caseAuthenticatedTags?: CaseAuthenticatedTag[];
102
- }): Promise<SecureSession>;
104
+ }): Promise<NodeSession>;
103
105
  /**
104
106
  * Deletes a resumption record for a given address. Returns true if the record was deleted, false if it did not
105
107
  * exist.
@@ -110,14 +112,30 @@ export declare class SessionManager {
110
112
  * existed.
111
113
  */
112
114
  deleteResumptionRecordsForFabric(fabric: Fabric): Promise<boolean>;
113
- findOldestInactiveSession(): SecureSession;
115
+ findOldestInactiveSession(): NodeSession;
114
116
  getNextAvailableSessionId(): Promise<number>;
115
- getSession(sessionId: number): SecureSession | undefined;
116
- getPaseSession(): SecureSession;
117
- getSessionForNode(address: PeerAddress): SecureSession | undefined;
117
+ getSession(sessionId: number): NodeSession | undefined;
118
+ getPaseSession(): NodeSession;
119
+ getSessionForNode(address: PeerAddress): NodeSession | undefined;
118
120
  removeAllSessionsForNode(address: PeerAddress, sendClose?: boolean, closeBeforeCreatedTimestamp?: number): Promise<void>;
119
121
  getUnsecureSession(sourceNodeId?: NodeId): InsecureSession | undefined;
120
- findGroupSession(groupId: number, groupSessionId: number): void;
122
+ /**
123
+ * Creates or Returns a Group Session for a Group Peer Address.
124
+ * This is used for sending group messages because it returns the session for the current
125
+ * Group Epoch key. The Source Node Id is the own Node.
126
+ */
127
+ groupSessionForAddress(address: PeerAddress): GroupSession;
128
+ /**
129
+ * Creates or Returns the Group session based on an incoming packet.
130
+ * The Session ID is determined by trying to decrypt te packet with possible keys.
131
+ */
132
+ groupSessionFromPacket(packet: DecodedPacket, aad: Uint8Array): {
133
+ session: GroupSession;
134
+ message: import("#codec/index.js").DecodedMessage;
135
+ key: Uint8Array<ArrayBufferLike>;
136
+ };
137
+ registerGroupSession(session: GroupSession): void;
138
+ removeGroupSession(session: GroupSession): void;
121
139
  findResumptionRecordById(resumptionId: Uint8Array): ResumptionRecord | undefined;
122
140
  findResumptionRecordByAddress(address: PeerAddress): ResumptionRecord | undefined;
123
141
  saveResumptionRecord(resumptionRecord: ResumptionRecord): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../src/session/SessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../src/session/SessionManager.ts"],"names":[],"mappings":"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"}
@@ -26,10 +26,13 @@ var import_FabricManager = require("#fabric/FabricManager.js");
26
26
  var import_general = require("#general");
27
27
  var import_model = require("#model");
28
28
  var import_PeerAddress = require("#peer/PeerAddress.js");
29
+ var import_GroupSession = require("#session/GroupSession.js");
29
30
  var import_types = require("#types");
31
+ var import_general2 = require("@matter/general");
30
32
  var import_Scanner = require("../common/Scanner.js");
31
33
  var import_MessageCounter = require("../protocol/MessageCounter.js");
32
34
  var import_InsecureSession = require("./InsecureSession.js");
35
+ var import_NodeSession = require("./NodeSession.js");
33
36
  var import_SecureSession = require("./SecureSession.js");
34
37
  var import_Session = require("./Session.js");
35
38
  /**
@@ -55,6 +58,7 @@ class SessionManager {
55
58
  #context;
56
59
  #insecureSessions = /* @__PURE__ */ new Map();
57
60
  #sessions = new import_general.BasicSet();
61
+ #groupSessions = /* @__PURE__ */ new Map();
58
62
  #nextSessionId = import_general.Crypto.getRandomUInt16();
59
63
  #resumptionRecords = new import_PeerAddress.PeerAddressMap();
60
64
  #globalUnencryptedMessageCounter = new import_MessageCounter.MessageCounter();
@@ -178,7 +182,7 @@ class SessionManager {
178
182
  peerSessionParameters,
179
183
  caseAuthenticatedTags
180
184
  } = args;
181
- const session = await import_SecureSession.SecureSession.create({
185
+ const session = await import_NodeSession.NodeSession.create({
182
186
  manager: this,
183
187
  id: sessionId,
184
188
  fabric,
@@ -268,7 +272,7 @@ class SessionManager {
268
272
  getPaseSession() {
269
273
  this.#construction.assert();
270
274
  return [...this.#sessions].find(
271
- (session) => session.isSecure && session.isPase && !session.closingAfterExchangeFinished
275
+ (session) => import_NodeSession.NodeSession.is(session) && session.isPase && !session.closingAfterExchangeFinished
272
276
  );
273
277
  }
274
278
  getSessionForNode(address) {
@@ -298,9 +302,78 @@ class SessionManager {
298
302
  }
299
303
  return this.#insecureSessions.get(sourceNodeId);
300
304
  }
301
- findGroupSession(groupId, groupSessionId) {
302
- this.#construction.assert();
303
- throw new Error(`Not implemented ${groupId} ${groupSessionId}`);
305
+ /**
306
+ * Creates or Returns a Group Session for a Group Peer Address.
307
+ * This is used for sending group messages because it returns the session for the current
308
+ * Group Epoch key. The Source Node Id is the own Node.
309
+ */
310
+ groupSessionForAddress(address) {
311
+ const groupId = import_types.GroupId.fromNodeId(address.nodeId);
312
+ import_types.GroupId.assertGroupId(groupId);
313
+ const fabric = this.fabricFor(address);
314
+ const { key, keySetId, sessionId } = fabric.groups.currentKeyForGroup(groupId);
315
+ if (sessionId === void 0 || key === void 0) {
316
+ throw new import_general2.UnexpectedDataError(
317
+ `No group session data found for group ${groupId} in fabric ${fabric.fabricId}.`
318
+ );
319
+ }
320
+ let session = this.#groupSessions.get(fabric.nodeId)?.get("id", sessionId);
321
+ if (session === void 0) {
322
+ session = new import_GroupSession.GroupSession({
323
+ manager: this,
324
+ id: sessionId,
325
+ fabric,
326
+ keySetId,
327
+ operationalGroupKey: key,
328
+ peerNodeId: address.nodeId
329
+ // The peer node ID is the group node ID
330
+ });
331
+ }
332
+ return session;
333
+ }
334
+ /**
335
+ * Creates or Returns the Group session based on an incoming packet.
336
+ * The Session ID is determined by trying to decrypt te packet with possible keys.
337
+ */
338
+ groupSessionFromPacket(packet, aad) {
339
+ const groupId = packet.header.destGroupId;
340
+ if (groupId === void 0) {
341
+ throw new import_general2.UnexpectedDataError("Group ID is required for GroupSession fromPacket.");
342
+ }
343
+ import_types.GroupId.assertGroupId((0, import_types.GroupId)(groupId));
344
+ const { message, key, sessionId, sourceNodeId, keySetId, fabric } = import_GroupSession.GroupSession.decode(
345
+ this.#context.fabrics,
346
+ packet,
347
+ aad
348
+ );
349
+ let session = this.#groupSessions.get(sourceNodeId)?.get("id", sessionId);
350
+ if (session === void 0) {
351
+ session = new import_GroupSession.GroupSession({
352
+ manager: this,
353
+ id: sessionId,
354
+ fabric,
355
+ keySetId,
356
+ operationalGroupKey: key,
357
+ peerNodeId: sourceNodeId
358
+ });
359
+ }
360
+ return { session, message, key };
361
+ }
362
+ registerGroupSession(session) {
363
+ const sourceNodeId = session.peerNodeId;
364
+ const peerSessions = this.#groupSessions.get(sourceNodeId) ?? new import_general.BasicSet();
365
+ peerSessions.add(session);
366
+ this.#groupSessions.set(sourceNodeId, peerSessions);
367
+ }
368
+ removeGroupSession(session) {
369
+ const sourceNodeId = session.peerNodeId;
370
+ const peerSessions = this.#groupSessions.get(sourceNodeId);
371
+ if (peerSessions) {
372
+ peerSessions.delete(session);
373
+ if (peerSessions.size === 0) {
374
+ this.#groupSessions.delete(sourceNodeId);
375
+ }
376
+ }
304
377
  }
305
378
  findResumptionRecordById(resumptionId) {
306
379
  this.#construction.assert();
@@ -427,6 +500,11 @@ class SessionManager {
427
500
  for (const session of this.#insecureSessions.values()) {
428
501
  closePromises.push(session?.end());
429
502
  }
503
+ for (const sessions of this.#groupSessions.values()) {
504
+ for (const session of sessions) {
505
+ closePromises.push(session?.end());
506
+ }
507
+ }
430
508
  await import_general.MatterAggregateError.allSettled(closePromises, "Error closing sessions").catch(
431
509
  (error) => logger.error(error)
432
510
  );