@matter/protocol 0.16.0-alpha.0-20251203-aaf94bca8 → 0.16.0-alpha.0-20251207-37e501b18
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.
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +82 -34
- package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
- package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
- package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
- package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
- package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
- package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
- package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
- package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
- package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
- package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
- package/dist/cjs/action/request/Invoke.js +2 -2
- package/dist/cjs/action/request/Invoke.js.map +1 -1
- package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
- package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
- package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
- package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/cjs/action/server/DataResponse.d.ts +1 -0
- package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/DataResponse.js +3 -0
- package/dist/cjs/action/server/DataResponse.js.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.js +4 -4
- package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
- package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertisement.js +66 -14
- package/dist/cjs/advertisement/Advertisement.js.map +1 -1
- package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
- package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertiser.js +63 -2
- package/dist/cjs/advertisement/Advertiser.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.js +2 -2
- package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
- package/dist/cjs/codec/MessageCodec.d.ts +8 -1
- package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
- package/dist/cjs/codec/MessageCodec.js +38 -28
- package/dist/cjs/codec/MessageCodec.js.map +2 -2
- package/dist/cjs/common/FailsafeContext.d.ts +8 -9
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +27 -33
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
- package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeTimer.js +4 -4
- package/dist/cjs/common/FailsafeTimer.js.map +1 -1
- package/dist/cjs/common/Mark.d.ts +17 -0
- package/dist/cjs/common/Mark.d.ts.map +1 -0
- package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
- package/dist/cjs/common/Mark.js.map +6 -0
- package/dist/cjs/common/index.d.ts +1 -0
- package/dist/cjs/common/index.d.ts.map +1 -1
- package/dist/cjs/common/index.js +1 -0
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +16 -8
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +35 -18
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
- package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.js +3 -3
- package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
- package/dist/cjs/fabric/FabricManager.d.ts +10 -14
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricManager.js +44 -40
- package/dist/cjs/fabric/FabricManager.js.map +2 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +39 -22
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +35 -27
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +16 -37
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js +15 -68
- package/dist/cjs/interaction/Subscription.js.map +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +2 -2
- package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +165 -80
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +173 -94
- package/dist/cjs/mdns/MdnsServer.js.map +2 -2
- package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsService.js +3 -2
- package/dist/cjs/mdns/MdnsService.js.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
- package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.js +2 -1
- package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +26 -28
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js +3 -3
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/peer/Peer.d.ts +57 -0
- package/dist/cjs/peer/Peer.d.ts.map +1 -0
- package/dist/cjs/peer/Peer.js +182 -0
- package/dist/cjs/peer/Peer.js.map +6 -0
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddress.js +5 -2
- package/dist/cjs/peer/PeerAddress.js.map +1 -1
- package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
- package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
- package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
- package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
- package/dist/cjs/peer/PeerDescriptor.js +71 -0
- package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
- package/dist/cjs/peer/PeerSet.d.ts +23 -26
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +173 -173
- package/dist/cjs/peer/PeerSet.js.map +2 -2
- package/dist/cjs/peer/index.d.ts +1 -1
- package/dist/cjs/peer/index.d.ts.map +1 -1
- package/dist/cjs/peer/index.js +1 -1
- package/dist/cjs/peer/index.js.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +306 -246
- package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
- package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
- package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.js +79 -32
- package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
- package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +14 -16
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
- package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageCounter.js +7 -7
- package/dist/cjs/protocol/MessageCounter.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +316 -231
- package/dist/cjs/protocol/MessageExchange.js.map +2 -2
- package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
- package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
- package/dist/cjs/protocol/ProtocolMocks.js +237 -0
- package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
- package/dist/cjs/protocol/errors.d.ts +35 -0
- package/dist/cjs/protocol/errors.d.ts.map +1 -0
- package/dist/cjs/protocol/errors.js +50 -0
- package/dist/cjs/protocol/errors.js.map +6 -0
- package/dist/cjs/protocol/index.d.ts +2 -1
- package/dist/cjs/protocol/index.d.ts.map +1 -1
- package/dist/cjs/protocol/index.js +2 -1
- package/dist/cjs/protocol/index.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/session/GroupSession.d.ts +21 -10
- package/dist/cjs/session/GroupSession.d.ts.map +1 -1
- package/dist/cjs/session/GroupSession.js +37 -12
- package/dist/cjs/session/GroupSession.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +56 -50
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +95 -103
- package/dist/cjs/session/NodeSession.js.map +1 -1
- package/dist/cjs/session/SecureSession.d.ts +4 -4
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js +1 -1
- package/dist/cjs/session/SecureSession.js.map +1 -1
- package/dist/cjs/session/Session.d.ts +82 -66
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +218 -45
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +33 -36
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +112 -150
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/cjs/session/SessionParameters.d.ts +87 -0
- package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
- package/dist/cjs/session/SessionParameters.js +81 -0
- package/dist/cjs/session/SessionParameters.js.map +6 -0
- package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
- package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
- package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
- package/dist/cjs/session/UnsecuredSession.js.map +6 -0
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +6 -4
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +14 -10
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/index.d.ts +2 -1
- package/dist/cjs/session/index.d.ts.map +1 -1
- package/dist/cjs/session/index.js +2 -1
- package/dist/cjs/session/index.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
- package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseClient.js +5 -3
- package/dist/cjs/session/pase/PaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +13 -13
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +82 -34
- package/dist/esm/action/client/ClientInteraction.js.map +2 -2
- package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
- package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
- package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
- package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
- package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
- package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
- package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
- package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
- package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
- package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
- package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
- package/dist/esm/action/request/Invoke.js +2 -2
- package/dist/esm/action/request/Invoke.js.map +1 -1
- package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeReadResponse.js +78 -25
- package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
- package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
- package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/esm/action/server/DataResponse.d.ts +1 -0
- package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
- package/dist/esm/action/server/DataResponse.js +3 -0
- package/dist/esm/action/server/DataResponse.js.map +1 -1
- package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/esm/action/server/ServerInteraction.js +4 -4
- package/dist/esm/action/server/ServerInteraction.js.map +1 -1
- package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertisement.js +66 -14
- package/dist/esm/advertisement/Advertisement.js.map +1 -1
- package/dist/esm/advertisement/Advertiser.d.ts +4 -1
- package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertiser.js +63 -2
- package/dist/esm/advertisement/Advertiser.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
- package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.js +1 -1
- package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
- package/dist/esm/codec/MessageCodec.d.ts +8 -1
- package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
- package/dist/esm/codec/MessageCodec.js +39 -28
- package/dist/esm/codec/MessageCodec.js.map +2 -2
- package/dist/esm/common/FailsafeContext.d.ts +8 -9
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +27 -33
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/common/FailsafeTimer.d.ts +4 -3
- package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/esm/common/FailsafeTimer.js +4 -4
- package/dist/esm/common/FailsafeTimer.js.map +1 -1
- package/dist/esm/common/Mark.d.ts +17 -0
- package/dist/esm/common/Mark.d.ts.map +1 -0
- package/dist/esm/common/Mark.js +18 -0
- package/dist/esm/common/Mark.js.map +6 -0
- package/dist/esm/common/index.d.ts +1 -0
- package/dist/esm/common/index.d.ts.map +1 -1
- package/dist/esm/common/index.js +1 -0
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts +16 -8
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +36 -18
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
- package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/esm/fabric/FabricAuthority.js +5 -5
- package/dist/esm/fabric/FabricAuthority.js.map +1 -1
- package/dist/esm/fabric/FabricManager.d.ts +10 -14
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
- package/dist/esm/fabric/FabricManager.js +45 -40
- package/dist/esm/fabric/FabricManager.js.map +2 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +2 -2
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +39 -22
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +33 -28
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +16 -37
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js +16 -69
- package/dist/esm/interaction/Subscription.js.map +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +2 -2
- package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.d.ts +10 -10
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +166 -80
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts +2 -2
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +176 -94
- package/dist/esm/mdns/MdnsServer.js.map +2 -2
- package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsService.js +3 -2
- package/dist/esm/mdns/MdnsService.js.map +1 -1
- package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
- package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsSocket.js +2 -1
- package/dist/esm/mdns/MdnsSocket.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +26 -28
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js +1 -1
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/peer/Peer.d.ts +57 -0
- package/dist/esm/peer/Peer.d.ts.map +1 -0
- package/dist/esm/peer/Peer.js +162 -0
- package/dist/esm/peer/Peer.js.map +6 -0
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddress.js +5 -2
- package/dist/esm/peer/PeerAddress.js.map +1 -1
- package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
- package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
- package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
- package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
- package/dist/esm/peer/PeerDescriptor.js +51 -0
- package/dist/esm/peer/PeerDescriptor.js.map +6 -0
- package/dist/esm/peer/PeerSet.d.ts +23 -26
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +173 -175
- package/dist/esm/peer/PeerSet.js.map +2 -2
- package/dist/esm/peer/index.d.ts +1 -1
- package/dist/esm/peer/index.d.ts.map +1 -1
- package/dist/esm/peer/index.js +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
- package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +308 -251
- package/dist/esm/protocol/ExchangeManager.js.map +2 -2
- package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
- package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.js +81 -37
- package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
- package/dist/esm/protocol/MessageChannel.d.ts +6 -7
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +22 -18
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageCounter.d.ts +4 -4
- package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
- package/dist/esm/protocol/MessageCounter.js +7 -7
- package/dist/esm/protocol/MessageCounter.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +31 -20
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +318 -238
- package/dist/esm/protocol/MessageExchange.js.map +2 -2
- package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
- package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
- package/dist/esm/protocol/ProtocolMocks.js +230 -0
- package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
- package/dist/esm/protocol/errors.d.ts +35 -0
- package/dist/esm/protocol/errors.d.ts.map +1 -0
- package/dist/esm/protocol/errors.js +30 -0
- package/dist/esm/protocol/errors.js.map +6 -0
- package/dist/esm/protocol/index.d.ts +2 -1
- package/dist/esm/protocol/index.d.ts.map +1 -1
- package/dist/esm/protocol/index.js +2 -1
- package/dist/esm/protocol/index.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/session/GroupSession.d.ts +21 -10
- package/dist/esm/session/GroupSession.d.ts.map +1 -1
- package/dist/esm/session/GroupSession.js +41 -12
- package/dist/esm/session/GroupSession.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +56 -50
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +99 -105
- package/dist/esm/session/NodeSession.js.map +1 -1
- package/dist/esm/session/SecureSession.d.ts +4 -4
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js +1 -1
- package/dist/esm/session/SecureSession.js.map +1 -1
- package/dist/esm/session/Session.d.ts +82 -66
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +223 -45
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +33 -36
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +113 -157
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/SessionParameters.d.ts +87 -0
- package/dist/esm/session/SessionParameters.d.ts.map +1 -0
- package/dist/esm/session/SessionParameters.js +61 -0
- package/dist/esm/session/SessionParameters.js.map +6 -0
- package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
- package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
- package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
- package/dist/esm/session/UnsecuredSession.js.map +6 -0
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +5 -3
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
- package/dist/esm/session/case/CaseServer.js +14 -10
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/index.d.ts +2 -1
- package/dist/esm/session/index.d.ts.map +1 -1
- package/dist/esm/session/index.js +2 -1
- package/dist/esm/session/index.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.d.ts +3 -3
- package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseClient.js +5 -3
- package/dist/esm/session/pase/PaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +13 -13
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/action/client/ClientInteraction.ts +47 -13
- package/src/action/client/subscription/ClientSubscription.ts +30 -5
- package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
- package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
- package/src/action/client/subscription/PeerSubscription.ts +2 -2
- package/src/action/client/subscription/SustainedSubscription.ts +2 -6
- package/src/action/request/Invoke.ts +2 -2
- package/src/action/server/AttributeReadResponse.ts +2 -0
- package/src/action/server/AttributeWriteResponse.ts +2 -0
- package/src/action/server/CommandInvokeResponse.ts +1 -0
- package/src/action/server/DataResponse.ts +4 -0
- package/src/action/server/ServerInteraction.ts +4 -4
- package/src/advertisement/Advertisement.ts +6 -7
- package/src/advertisement/Advertiser.ts +12 -1
- package/src/advertisement/ble/BleAdvertiser.ts +7 -2
- package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
- package/src/certificate/kinds/definitions/asn.ts +2 -2
- package/src/certificate/kinds/definitions/attestation.ts +1 -0
- package/src/cluster/client/AttributeClient.ts +1 -1
- package/src/codec/MessageCodec.ts +39 -32
- package/src/common/FailsafeContext.ts +36 -39
- package/src/common/FailsafeTimer.ts +7 -6
- package/src/common/Mark.ts +17 -0
- package/src/common/index.ts +1 -0
- package/src/fabric/Fabric.ts +51 -23
- package/src/fabric/FabricAuthority.ts +4 -4
- package/src/fabric/FabricManager.ts +53 -40
- package/src/index.ts +3 -1
- package/src/interaction/InteractionClient.ts +40 -23
- package/src/interaction/InteractionMessenger.ts +38 -32
- package/src/interaction/Subscription.ts +20 -92
- package/src/interaction/SubscriptionClient.ts +3 -3
- package/src/mdns/MdnsClient.ts +20 -3
- package/src/mdns/MdnsServer.ts +13 -1
- package/src/mdns/MdnsService.ts +3 -2
- package/src/mdns/MdnsSocket.ts +9 -3
- package/src/peer/ControllerCommissioner.ts +35 -37
- package/src/peer/ControllerDiscovery.ts +1 -1
- package/src/peer/Peer.ts +161 -0
- package/src/peer/PeerAddress.ts +6 -2
- package/src/peer/PeerAddressStore.ts +3 -3
- package/src/peer/PeerDescriptor.ts +89 -0
- package/src/peer/PeerSet.ts +145 -213
- package/src/peer/index.ts +1 -1
- package/src/protocol/DeviceAdvertiser.ts +4 -4
- package/src/protocol/ExchangeManager.ts +161 -181
- package/src/protocol/ExchangeProvider.ts +31 -40
- package/src/protocol/MessageChannel.ts +29 -18
- package/src/protocol/MessageCounter.ts +8 -8
- package/src/protocol/MessageExchange.ts +181 -144
- package/src/protocol/ProtocolMocks.ts +302 -0
- package/src/protocol/errors.ts +44 -0
- package/src/protocol/index.ts +2 -1
- package/src/securechannel/SecureChannelMessenger.ts +4 -0
- package/src/securechannel/SecureChannelProtocol.ts +2 -2
- package/src/session/GroupSession.ts +67 -23
- package/src/session/NodeSession.ts +140 -136
- package/src/session/SecureSession.ts +6 -5
- package/src/session/Session.ts +234 -101
- package/src/session/SessionManager.ts +148 -187
- package/src/session/SessionParameters.ts +108 -0
- package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
- package/src/session/case/CaseClient.ts +6 -3
- package/src/session/case/CaseServer.ts +15 -11
- package/src/session/index.ts +2 -1
- package/src/session/pase/PaseClient.ts +12 -5
- package/src/session/pase/PaseServer.ts +14 -13
- package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
- package/dist/cjs/peer/OperationalPeer.js.map +0 -6
- package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
- package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
- package/dist/cjs/protocol/ChannelManager.js +0 -178
- package/dist/cjs/protocol/ChannelManager.js.map +0 -6
- package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
- package/dist/cjs/session/InsecureSession.js.map +0 -6
- package/dist/esm/peer/OperationalPeer.d.ts +0 -38
- package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
- package/dist/esm/peer/OperationalPeer.js +0 -6
- package/dist/esm/peer/OperationalPeer.js.map +0 -6
- package/dist/esm/protocol/ChannelManager.d.ts +0 -29
- package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
- package/dist/esm/protocol/ChannelManager.js +0 -158
- package/dist/esm/protocol/ChannelManager.js.map +0 -6
- package/dist/esm/session/InsecureSession.d.ts.map +0 -1
- package/dist/esm/session/InsecureSession.js.map +0 -6
- package/src/protocol/ChannelManager.ts +0 -180
|
@@ -6,46 +6,40 @@
|
|
|
6
6
|
|
|
7
7
|
import { Subject } from "#action/server/Subject.js";
|
|
8
8
|
import { DecodedMessage, DecodedPacket, Message, MessageCodec, Packet, SessionType } from "#codec/MessageCodec.js";
|
|
9
|
+
import { Mark } from "#common/Mark.js";
|
|
9
10
|
import { Fabric } from "#fabric/Fabric.js";
|
|
10
11
|
import {
|
|
12
|
+
AsyncObservableValue,
|
|
11
13
|
BasicSet,
|
|
12
14
|
Bytes,
|
|
13
15
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
14
16
|
Crypto,
|
|
15
17
|
Diagnostic,
|
|
16
18
|
Duration,
|
|
19
|
+
InternalError,
|
|
17
20
|
Logger,
|
|
18
|
-
MatterError,
|
|
19
21
|
MatterFlowError,
|
|
22
|
+
hex,
|
|
20
23
|
} from "#general";
|
|
21
|
-
import
|
|
24
|
+
import { Subscription } from "#interaction/Subscription.js";
|
|
22
25
|
import { PeerAddress } from "#peer/PeerAddress.js";
|
|
26
|
+
import { NoAssociatedFabricError } from "#protocol/errors.js";
|
|
23
27
|
import { MessageCounter } from "#protocol/MessageCounter.js";
|
|
28
|
+
import { MessageExchange } from "#protocol/MessageExchange.js";
|
|
24
29
|
import { MessageReceptionStateEncryptedWithoutRollover } from "#protocol/MessageReceptionState.js";
|
|
25
30
|
import { SecureChannelMessenger } from "#securechannel/SecureChannelMessenger.js";
|
|
26
|
-
import { CaseAuthenticatedTag, FabricIndex, NodeId
|
|
31
|
+
import { CaseAuthenticatedTag, FabricIndex, NodeId } from "#types";
|
|
27
32
|
import { SecureSession } from "./SecureSession.js";
|
|
28
|
-
import { Session
|
|
29
|
-
import
|
|
33
|
+
import { Session } from "./Session.js";
|
|
34
|
+
import { SessionParameters } from "./SessionParameters.js";
|
|
30
35
|
|
|
31
36
|
const logger = Logger.get("SecureSession");
|
|
32
37
|
|
|
33
38
|
const SESSION_KEYS_INFO = Bytes.fromString("SessionKeys");
|
|
34
39
|
const SESSION_RESUMPTION_KEYS_INFO = Bytes.fromString("SessionResumptionKeys");
|
|
35
40
|
|
|
36
|
-
export class NoChannelError extends MatterError {}
|
|
37
|
-
|
|
38
|
-
export class NoAssociatedFabricError extends StatusResponseError {
|
|
39
|
-
constructor(message: string) {
|
|
40
|
-
super(message, StatusCode.UnsupportedAccess);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
41
|
export class NodeSession extends SecureSession {
|
|
45
42
|
readonly #crypto: Crypto;
|
|
46
|
-
readonly #subscriptions = new BasicSet<Subscription>();
|
|
47
|
-
#closingAfterExchangeFinished = false;
|
|
48
|
-
#sendCloseMessageWhenClosing = true;
|
|
49
43
|
readonly #id: number;
|
|
50
44
|
readonly #isInitiator: boolean;
|
|
51
45
|
#fabric: Fabric | undefined;
|
|
@@ -55,40 +49,23 @@ export class NodeSession extends SecureSession {
|
|
|
55
49
|
readonly #encryptKey: Bytes;
|
|
56
50
|
readonly #attestationKey: Bytes;
|
|
57
51
|
#caseAuthenticatedTags: CaseAuthenticatedTag[];
|
|
58
|
-
#isClosing = false;
|
|
59
52
|
readonly supportsMRP = true;
|
|
60
53
|
readonly type = SessionType.Unicast;
|
|
54
|
+
readonly #closedByPeer = AsyncObservableValue();
|
|
55
|
+
#isPeerLost = false;
|
|
56
|
+
|
|
57
|
+
// TODO - remove this; subscriptions should be owned by the peer, not the session
|
|
58
|
+
readonly #subscriptions = new BasicSet<Subscription>();
|
|
59
|
+
|
|
60
|
+
static async create(config: NodeSession.CreateConfig) {
|
|
61
|
+
const { manager, sharedSecret, salt, isResumption, peerSessionParameters, isInitiator } = config;
|
|
62
|
+
|
|
63
|
+
if (manager) {
|
|
64
|
+
await manager.construction;
|
|
65
|
+
}
|
|
61
66
|
|
|
62
|
-
static async create(args: {
|
|
63
|
-
crypto: Crypto;
|
|
64
|
-
manager?: SessionManager;
|
|
65
|
-
id: number;
|
|
66
|
-
fabric: Fabric | undefined;
|
|
67
|
-
peerNodeId: NodeId;
|
|
68
|
-
peerSessionId: number;
|
|
69
|
-
sharedSecret: Bytes;
|
|
70
|
-
salt: Bytes;
|
|
71
|
-
isInitiator: boolean;
|
|
72
|
-
isResumption: boolean;
|
|
73
|
-
peerSessionParameters?: SessionParameterOptions;
|
|
74
|
-
caseAuthenticatedTags?: CaseAuthenticatedTag[];
|
|
75
|
-
}) {
|
|
76
|
-
const {
|
|
77
|
-
crypto,
|
|
78
|
-
manager,
|
|
79
|
-
id,
|
|
80
|
-
fabric,
|
|
81
|
-
peerNodeId,
|
|
82
|
-
peerSessionId,
|
|
83
|
-
sharedSecret,
|
|
84
|
-
salt,
|
|
85
|
-
isInitiator,
|
|
86
|
-
isResumption,
|
|
87
|
-
peerSessionParameters,
|
|
88
|
-
caseAuthenticatedTags,
|
|
89
|
-
} = args;
|
|
90
67
|
const keys = Bytes.of(
|
|
91
|
-
await
|
|
68
|
+
await config.crypto.createHkdfKey(
|
|
92
69
|
sharedSecret,
|
|
93
70
|
salt,
|
|
94
71
|
isResumption ? SESSION_RESUMPTION_KEYS_INFO : SESSION_KEYS_INFO,
|
|
@@ -98,36 +75,17 @@ export class NodeSession extends SecureSession {
|
|
|
98
75
|
const decryptKey = isInitiator ? keys.slice(16, 32) : keys.slice(0, 16);
|
|
99
76
|
const encryptKey = isInitiator ? keys.slice(0, 16) : keys.slice(16, 32);
|
|
100
77
|
const attestationKey = keys.slice(32, 48);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
id,
|
|
105
|
-
fabric,
|
|
106
|
-
peerNodeId,
|
|
107
|
-
peerSessionId,
|
|
78
|
+
|
|
79
|
+
return new this({
|
|
80
|
+
...config,
|
|
108
81
|
decryptKey,
|
|
109
82
|
encryptKey,
|
|
110
83
|
attestationKey,
|
|
111
84
|
sessionParameters: peerSessionParameters,
|
|
112
|
-
isInitiator,
|
|
113
|
-
caseAuthenticatedTags,
|
|
114
85
|
});
|
|
115
86
|
}
|
|
116
87
|
|
|
117
|
-
constructor(
|
|
118
|
-
crypto: Crypto;
|
|
119
|
-
manager?: SessionManager;
|
|
120
|
-
id: number;
|
|
121
|
-
fabric: Fabric | undefined;
|
|
122
|
-
peerNodeId: NodeId;
|
|
123
|
-
peerSessionId: number;
|
|
124
|
-
decryptKey: Bytes;
|
|
125
|
-
encryptKey: Bytes;
|
|
126
|
-
attestationKey: Bytes;
|
|
127
|
-
sessionParameters?: SessionParameterOptions;
|
|
128
|
-
caseAuthenticatedTags?: CaseAuthenticatedTag[];
|
|
129
|
-
isInitiator: boolean;
|
|
130
|
-
}) {
|
|
88
|
+
constructor(config: NodeSession.Config) {
|
|
131
89
|
const {
|
|
132
90
|
crypto,
|
|
133
91
|
manager,
|
|
@@ -140,16 +98,18 @@ export class NodeSession extends SecureSession {
|
|
|
140
98
|
attestationKey,
|
|
141
99
|
caseAuthenticatedTags,
|
|
142
100
|
isInitiator,
|
|
143
|
-
} =
|
|
101
|
+
} = config;
|
|
144
102
|
|
|
145
103
|
super({
|
|
146
|
-
...
|
|
104
|
+
...config,
|
|
147
105
|
setActiveTimestamp: true, // We always set the active timestamp for Secure sessions
|
|
148
106
|
// Can be changed to a PersistedMessageCounter if we implement session storage
|
|
149
|
-
messageCounter: new MessageCounter(crypto, () => {
|
|
107
|
+
messageCounter: new MessageCounter(crypto, async () => {
|
|
150
108
|
// Secure Session Message Counter
|
|
151
109
|
// Expire/End the session before the counter rolls over
|
|
152
|
-
this.
|
|
110
|
+
await this.initiateClose(async () => {
|
|
111
|
+
await this.closeSubscriptions(true);
|
|
112
|
+
});
|
|
153
113
|
}),
|
|
154
114
|
messageReceptionState: new MessageReceptionStateEncryptedWithoutRollover(),
|
|
155
115
|
});
|
|
@@ -170,7 +130,7 @@ export class NodeSession extends SecureSession {
|
|
|
170
130
|
|
|
171
131
|
logger.debug(
|
|
172
132
|
`Created secure ${this.isPase ? "PASE" : "CASE"} session for fabric index ${fabric?.fabricIndex}`,
|
|
173
|
-
this.
|
|
133
|
+
this.via,
|
|
174
134
|
this.parameterDiagnostics,
|
|
175
135
|
);
|
|
176
136
|
}
|
|
@@ -195,14 +155,6 @@ export class NodeSession extends SecureSession {
|
|
|
195
155
|
return this.#caseAuthenticatedTags;
|
|
196
156
|
}
|
|
197
157
|
|
|
198
|
-
get closingAfterExchangeFinished() {
|
|
199
|
-
return this.#closingAfterExchangeFinished;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
get sendCloseMessageWhenClosing() {
|
|
203
|
-
return this.#sendCloseMessageWhenClosing;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
158
|
get isPase(): boolean {
|
|
207
159
|
return this.#peerNodeId === NodeId.UNSPECIFIED_NODE_ID;
|
|
208
160
|
}
|
|
@@ -215,10 +167,6 @@ export class NodeSession extends SecureSession {
|
|
|
215
167
|
return this.#isInitiator;
|
|
216
168
|
}
|
|
217
169
|
|
|
218
|
-
get isClosing() {
|
|
219
|
-
return this.#isClosing;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
170
|
subjectFor(_message?: Message): Subject {
|
|
223
171
|
return Subject.Node({
|
|
224
172
|
id: this.peerNodeId,
|
|
@@ -226,13 +174,6 @@ export class NodeSession extends SecureSession {
|
|
|
226
174
|
});
|
|
227
175
|
}
|
|
228
176
|
|
|
229
|
-
async close(closeAfterExchangeFinished?: boolean) {
|
|
230
|
-
if (closeAfterExchangeFinished === undefined) {
|
|
231
|
-
closeAfterExchangeFinished = this.isPeerActive(); // We delay session close if the peer is actively communicating with us
|
|
232
|
-
}
|
|
233
|
-
await this.end(true, closeAfterExchangeFinished);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
177
|
decode({ header, applicationPayload, messageExtension }: DecodedPacket, aad: Bytes): DecodedMessage {
|
|
237
178
|
if (header.hasMessageExtensions) {
|
|
238
179
|
logger.info(
|
|
@@ -273,23 +214,24 @@ export class NodeSession extends SecureSession {
|
|
|
273
214
|
return this.#attestationKey;
|
|
274
215
|
}
|
|
275
216
|
|
|
276
|
-
get fabric() {
|
|
217
|
+
get fabric(): Fabric | undefined {
|
|
277
218
|
return this.#fabric;
|
|
278
219
|
}
|
|
279
220
|
|
|
280
|
-
|
|
281
|
-
if (this.#fabric !== undefined) {
|
|
282
|
-
throw new
|
|
221
|
+
set fabric(fabric: Fabric) {
|
|
222
|
+
if (this.#fabric !== undefined && this.#fabric !== fabric) {
|
|
223
|
+
throw new InternalError("Cannot change session fabric");
|
|
283
224
|
}
|
|
284
225
|
this.#fabric = fabric;
|
|
226
|
+
fabric.addSession(this);
|
|
285
227
|
}
|
|
286
228
|
|
|
287
229
|
get id() {
|
|
288
230
|
return this.#id;
|
|
289
231
|
}
|
|
290
232
|
|
|
291
|
-
get
|
|
292
|
-
return
|
|
233
|
+
get via() {
|
|
234
|
+
return Diagnostic.via(`${this.peerAddress.toString()}${Mark.SESSION}${hex.word(this.id)}`);
|
|
293
235
|
}
|
|
294
236
|
|
|
295
237
|
get peerSessionId(): number {
|
|
@@ -317,54 +259,89 @@ export class NodeSession extends SecureSession {
|
|
|
317
259
|
return this.#fabric;
|
|
318
260
|
}
|
|
319
261
|
|
|
320
|
-
async
|
|
262
|
+
override async closeSubscriptions(flush = false) {
|
|
321
263
|
const subscriptions = [...this.#subscriptions]; // get all values because subscriptions will remove themselves when cancelled
|
|
322
264
|
for (const subscription of subscriptions) {
|
|
323
|
-
await subscription.close(
|
|
265
|
+
await subscription.close(flush ? this : undefined);
|
|
324
266
|
}
|
|
325
267
|
return subscriptions.length;
|
|
326
268
|
}
|
|
327
269
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
await this.clearSubscriptions(true);
|
|
331
|
-
await this.destroy(sendClose, closeAfterExchangeFinished);
|
|
270
|
+
get closedByPeer() {
|
|
271
|
+
return this.#closedByPeer;
|
|
332
272
|
}
|
|
333
273
|
|
|
334
|
-
async
|
|
335
|
-
|
|
336
|
-
await this
|
|
274
|
+
async handlePeerClose() {
|
|
275
|
+
this.#isPeerLost = true;
|
|
276
|
+
await this.#closedByPeer.emit(true);
|
|
277
|
+
await this.handlePeerLoss();
|
|
337
278
|
}
|
|
338
279
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
await this.
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
280
|
+
async handlePeerLoss(currentExchange?: MessageExchange) {
|
|
281
|
+
this.#isPeerLost = true;
|
|
282
|
+
await this.initiateForceClose(currentExchange);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
get isPeerLost() {
|
|
286
|
+
return this.#isPeerLost;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Close the session.
|
|
291
|
+
*
|
|
292
|
+
* If there are open subscriptions they are closed without flushing. To flush, use {@link closeSubscriptions}
|
|
293
|
+
* before invoking.
|
|
294
|
+
*
|
|
295
|
+
* TODO - subscription handling is only relevant for server; needs to move to server-specific component
|
|
296
|
+
*
|
|
297
|
+
* If there are active exchanges the close is deferred until the final exchange closes. To close sooner, use
|
|
298
|
+
* {@link initiateForceClose}.
|
|
299
|
+
*
|
|
300
|
+
* A final exchange will be opened to notify the peer of closure unless the peer is marked as lost.
|
|
301
|
+
*/
|
|
302
|
+
override async initiateClose(shutdownLogic?: () => Promise<void>) {
|
|
303
|
+
await super.initiateClose(async () => {
|
|
304
|
+
await shutdownLogic?.();
|
|
305
|
+
|
|
306
|
+
// If there are active exchanges defer closing until they complete
|
|
307
|
+
if (this.hasActiveExchanges) {
|
|
308
|
+
logger.debug(this.via, "Session ends when exchanges end");
|
|
309
|
+
this.deferredClose = true;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
override async initiateForceClose(currentExchange?: MessageExchange) {
|
|
315
|
+
this.#isPeerLost = true;
|
|
316
|
+
await super.initiateForceClose(currentExchange);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
override addExchange(exchange: MessageExchange) {
|
|
320
|
+
super.addExchange(exchange);
|
|
321
|
+
exchange.closed.on(async () => {
|
|
322
|
+
this.exchanges.delete(exchange);
|
|
323
|
+
if (this.deferredClose && !this.exchanges.size) {
|
|
324
|
+
this.deferredClose = false;
|
|
325
|
+
await this.close();
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
}
|
|
346
329
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
this.manager?.sessions.delete(this);
|
|
354
|
-
|
|
355
|
-
// Wait for the exchange to finish closing, but ignore errors if channel is already closed
|
|
356
|
-
if (this.closer) {
|
|
357
|
-
try {
|
|
358
|
-
await this.closer;
|
|
359
|
-
} catch (error) {
|
|
360
|
-
NoChannelError.accept(error);
|
|
361
|
-
} finally {
|
|
362
|
-
await this.destroyed.emit();
|
|
363
|
-
}
|
|
364
|
-
return;
|
|
330
|
+
protected override async close() {
|
|
331
|
+
if (!this.#isPeerLost) {
|
|
332
|
+
try {
|
|
333
|
+
await this.gracefulClose.emit();
|
|
334
|
+
} catch (e) {
|
|
335
|
+
logger.error(`Unhandled error in ${this.via} graceful close handler:`, e);
|
|
365
336
|
}
|
|
366
|
-
await this.destroyed.emit();
|
|
367
337
|
}
|
|
338
|
+
|
|
339
|
+
await this.closeSubscriptions();
|
|
340
|
+
|
|
341
|
+
this.#fabric?.deleteSession(this);
|
|
342
|
+
await super.close();
|
|
343
|
+
|
|
344
|
+
this.manager?.sessions.delete(this);
|
|
368
345
|
}
|
|
369
346
|
|
|
370
347
|
/**
|
|
@@ -391,7 +368,7 @@ export class NodeSession extends SecureSession {
|
|
|
391
368
|
export namespace NodeSession {
|
|
392
369
|
export function assert(session?: Session, errorText?: string): asserts session is NodeSession {
|
|
393
370
|
if (!is(session)) {
|
|
394
|
-
throw new MatterFlowError(errorText ?? "
|
|
371
|
+
throw new MatterFlowError(errorText ?? "Unsecured session in secure context");
|
|
395
372
|
}
|
|
396
373
|
}
|
|
397
374
|
|
|
@@ -408,10 +385,10 @@ export namespace NodeSession {
|
|
|
408
385
|
peerNodeId: NodeId,
|
|
409
386
|
) {
|
|
410
387
|
logger.info(
|
|
388
|
+
session.via,
|
|
411
389
|
`${operation} session with`,
|
|
412
390
|
Diagnostic.strong(PeerAddress({ fabricIndex: fabric.fabricIndex, nodeId: peerNodeId }).toString()),
|
|
413
391
|
Diagnostic.dict({
|
|
414
|
-
id: session.id,
|
|
415
392
|
address: messenger.channelName,
|
|
416
393
|
fabric: `${NodeId.toHexString(fabric.nodeId)} (#${fabric.fabricIndex})`,
|
|
417
394
|
...session.parameterDiagnostics,
|
|
@@ -419,3 +396,30 @@ export namespace NodeSession {
|
|
|
419
396
|
);
|
|
420
397
|
}
|
|
421
398
|
}
|
|
399
|
+
|
|
400
|
+
export namespace NodeSession {
|
|
401
|
+
export interface CommonConfig extends Session.CommonConfig {
|
|
402
|
+
crypto: Crypto;
|
|
403
|
+
id: number;
|
|
404
|
+
fabric?: Fabric;
|
|
405
|
+
peerNodeId: NodeId;
|
|
406
|
+
peerSessionId: number;
|
|
407
|
+
caseAuthenticatedTags?: CaseAuthenticatedTag[];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
export interface Config extends CommonConfig {
|
|
411
|
+
decryptKey: Bytes;
|
|
412
|
+
encryptKey: Bytes;
|
|
413
|
+
attestationKey: Bytes;
|
|
414
|
+
sessionParameters?: SessionParameters.Config;
|
|
415
|
+
isInitiator: boolean;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
export interface CreateConfig extends CommonConfig {
|
|
419
|
+
sharedSecret: Bytes;
|
|
420
|
+
salt: Bytes;
|
|
421
|
+
isInitiator: boolean;
|
|
422
|
+
isResumption: boolean;
|
|
423
|
+
peerSessionParameters?: SessionParameters.Config;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
|
|
7
|
+
import type { Subject } from "#action/server/Subject.js";
|
|
8
|
+
import type { Message } from "#codec/MessageCodec.js";
|
|
9
|
+
import type { Fabric } from "#fabric/Fabric.js";
|
|
9
10
|
import { MatterFlowError } from "#general";
|
|
10
|
-
import { PeerAddress } from "#peer/PeerAddress.js";
|
|
11
|
+
import type { PeerAddress } from "#peer/PeerAddress.js";
|
|
11
12
|
import { Session } from "./Session.js";
|
|
12
13
|
|
|
13
14
|
export abstract class SecureSession extends Session {
|
|
@@ -20,7 +21,7 @@ export abstract class SecureSession extends Session {
|
|
|
20
21
|
export namespace SecureSession {
|
|
21
22
|
export function assert(session?: Session, errorText?: string): asserts session is SecureSession {
|
|
22
23
|
if (!session?.isSecure) {
|
|
23
|
-
throw new MatterFlowError(errorText ?? "
|
|
24
|
+
throw new MatterFlowError(errorText ?? "Unsecured session in secure context");
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
}
|