@matter/protocol 0.16.0-alpha.0-20251205-dfb1e1556 → 0.16.0-alpha.0-20251209-d6072d23e
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/Val.js +1 -1
- package/dist/cjs/action/Val.js.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +83 -35
- 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/response/ReadResult.d.ts +1 -1
- package/dist/cjs/action/response/ReadResult.d.ts.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/Noc.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/Noc.js +8 -6
- package/dist/cjs/certificate/kinds/Noc.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 +6 -3
- 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 +301 -243
- 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/Val.js +1 -1
- package/dist/esm/action/Val.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +83 -35
- 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/response/ReadResult.d.ts +1 -1
- package/dist/esm/action/response/ReadResult.d.ts.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/Noc.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/Noc.js +8 -6
- package/dist/esm/certificate/kinds/Noc.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 +6 -3
- 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 +303 -248
- 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/response/ReadResult.ts +1 -1
- 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/Noc.ts +12 -7
- 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 +149 -178
- 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
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Message } from "#codec/MessageCodec.js";
|
|
8
|
+
import { Fabric as RealFabric } from "#fabric/Fabric.js";
|
|
9
|
+
import {
|
|
10
|
+
AsyncObservable,
|
|
11
|
+
b$,
|
|
12
|
+
Bytes,
|
|
13
|
+
Channel,
|
|
14
|
+
ChannelType,
|
|
15
|
+
Crypto,
|
|
16
|
+
DataReadQueue,
|
|
17
|
+
Environment,
|
|
18
|
+
ImplementationError,
|
|
19
|
+
IpNetworkChannel,
|
|
20
|
+
Lifetime,
|
|
21
|
+
MAX_UDP_MESSAGE_SIZE,
|
|
22
|
+
MaybePromise,
|
|
23
|
+
MockCrypto,
|
|
24
|
+
Observable,
|
|
25
|
+
ServerAddressUdp,
|
|
26
|
+
} from "#general";
|
|
27
|
+
import { MessageType } from "#interaction/InteractionMessenger.js";
|
|
28
|
+
import { NodeSession as RealNodeSession } from "#session/NodeSession.js";
|
|
29
|
+
import { Session } from "#session/Session.js";
|
|
30
|
+
import { SessionParameters } from "#session/SessionParameters.js";
|
|
31
|
+
import { FabricId, FabricIndex, NodeId, SECURE_CHANNEL_PROTOCOL_ID, Status, TlvStatusResponse, VendorId } from "#types";
|
|
32
|
+
import { Specification } from "@matter/model";
|
|
33
|
+
import { MessageChannel as RealMessageChannel } from "./MessageChannel.js";
|
|
34
|
+
import { MessageExchange, MessageExchangeContext } from "./MessageExchange.js";
|
|
35
|
+
|
|
36
|
+
export namespace ProtocolMocks {
|
|
37
|
+
/**
|
|
38
|
+
* A fabric that will fill any fields not provided with placeholder values.
|
|
39
|
+
*/
|
|
40
|
+
export class Fabric extends RealFabric {
|
|
41
|
+
constructor(config?: Partial<RealFabric.Config>, crypto?: Crypto) {
|
|
42
|
+
if (!crypto) {
|
|
43
|
+
crypto = Environment.default.maybeGet(Crypto);
|
|
44
|
+
if (!(crypto instanceof MockCrypto)) {
|
|
45
|
+
crypto = MockCrypto();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const keyPair = config?.keyPair ?? crypto.createKeyPair();
|
|
50
|
+
if (MaybePromise.is(keyPair)) {
|
|
51
|
+
throw new ImplementationError("Must provide key pair with async crypto");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
super(crypto, {
|
|
55
|
+
...Fabric.defaults,
|
|
56
|
+
...config,
|
|
57
|
+
keyPair,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export namespace Fabric {
|
|
63
|
+
export const defaults: RealFabric.Config = {
|
|
64
|
+
fabricId: FabricId(0x2906c908d115d362n),
|
|
65
|
+
fabricIndex: FabricIndex(1),
|
|
66
|
+
identityProtectionKey: Bytes.empty,
|
|
67
|
+
intermediateCACert: Bytes.empty,
|
|
68
|
+
keyPair: { publicKey: Bytes.empty, privateKey: Bytes.empty },
|
|
69
|
+
label: "test-fabric",
|
|
70
|
+
nodeId: NodeId(0xcd5544aa7b13ef14n),
|
|
71
|
+
operationalCert: Bytes.empty,
|
|
72
|
+
operationalId: Bytes.empty,
|
|
73
|
+
operationalIdentityProtectionKey: b$`9bc61cd9c62a2df6d64dfcaa9dc472d4`,
|
|
74
|
+
rootCert: Bytes.empty,
|
|
75
|
+
rootNodeId: NodeId(1),
|
|
76
|
+
rootPublicKey: b$`044a9f42b1ca4840d37292bbc7f6a7e11e22200c976fc900dbc98a7a383a641cb8254a2e56d4e295a847943b4e3897c4a773e930277b4d9fbede8a052686bfacfa`,
|
|
77
|
+
rootVendorId: VendorId(1),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* A mock {@link NodeSession} that supports functional tests without full mock networking.
|
|
83
|
+
*/
|
|
84
|
+
export class NodeSession extends RealNodeSession {
|
|
85
|
+
constructor(config?: NodeSession.Config) {
|
|
86
|
+
const index = config?.index ?? 1;
|
|
87
|
+
const fabricIndex = (config?.fabricIndex ?? 1) as FabricIndex;
|
|
88
|
+
const crypto = config?.crypto ?? Environment.default.get(Crypto);
|
|
89
|
+
const fabric = config && "fabric" in config ? config.fabric : new Fabric({ fabricIndex });
|
|
90
|
+
const maxPayloadSize = config?.maxPayloadSize;
|
|
91
|
+
|
|
92
|
+
// Channel is optional so support "channel: undefined" to disable the default channel
|
|
93
|
+
let channel;
|
|
94
|
+
if (config && "channel" in config) {
|
|
95
|
+
channel = config.channel;
|
|
96
|
+
} else {
|
|
97
|
+
channel = new NetworkChannel({ index, maxPayloadSize });
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const fullConfig = {
|
|
101
|
+
id: index,
|
|
102
|
+
peerNodeId: NodeId(index),
|
|
103
|
+
attestationKey: Bytes.empty,
|
|
104
|
+
caseAuthenticatedTags: [],
|
|
105
|
+
peerSessionId: index,
|
|
106
|
+
decryptKey: Bytes.empty,
|
|
107
|
+
encryptKey: Bytes.empty,
|
|
108
|
+
isInitiator: true,
|
|
109
|
+
...config,
|
|
110
|
+
crypto,
|
|
111
|
+
fabric,
|
|
112
|
+
};
|
|
113
|
+
delete fullConfig.channel;
|
|
114
|
+
|
|
115
|
+
super(fullConfig);
|
|
116
|
+
|
|
117
|
+
// Initialize with a mocked message channel
|
|
118
|
+
this.channel = new MessageChannel({ channel, session: this });
|
|
119
|
+
|
|
120
|
+
// ...and mock lifetime
|
|
121
|
+
this.lifetime = Lifetime.mock;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
static override async create(config: NodeSession.CreateConfig) {
|
|
125
|
+
const crypto = config?.crypto ?? config?.manager?.crypto ?? Environment.default.get(Crypto);
|
|
126
|
+
const index = config?.index ?? 1;
|
|
127
|
+
return RealNodeSession.create.call(this, {
|
|
128
|
+
id: index,
|
|
129
|
+
crypto,
|
|
130
|
+
peerNodeId: NodeId(0),
|
|
131
|
+
peerSessionId: index,
|
|
132
|
+
sharedSecret: Bytes.empty,
|
|
133
|
+
salt: Bytes.empty,
|
|
134
|
+
isInitiator: true,
|
|
135
|
+
isResumption: false,
|
|
136
|
+
...config,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export namespace NodeSession {
|
|
142
|
+
export type Config = Partial<RealNodeSession.Config> & MockSessionConfig;
|
|
143
|
+
export type CreateConfig = Partial<RealNodeSession.CreateConfig & MockSessionConfig>;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* A mock channel that can act as a placeholder without full mock networking.
|
|
148
|
+
*/
|
|
149
|
+
export class NetworkChannel implements IpNetworkChannel<Bytes> {
|
|
150
|
+
maxPayloadSize: number;
|
|
151
|
+
isReliable = true;
|
|
152
|
+
supportsLargeMessages = false;
|
|
153
|
+
name = "mock-byte-channel";
|
|
154
|
+
type = ChannelType.UDP;
|
|
155
|
+
networkAddress: ServerAddressUdp;
|
|
156
|
+
|
|
157
|
+
constructor(config: MockNetworkConfig) {
|
|
158
|
+
const index = config.index ?? 1;
|
|
159
|
+
this.maxPayloadSize = config.maxPayloadSize ?? MAX_UDP_MESSAGE_SIZE;
|
|
160
|
+
this.networkAddress = { type: "udp", ip: `::${index}`, port: 5540 };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
async send(): Promise<void> {
|
|
164
|
+
// Currently we just ignore transmissions
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
async close() {}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* A mock message channel that stores outbound messages for later analysis.
|
|
172
|
+
*/
|
|
173
|
+
export class MessageChannel extends RealMessageChannel {
|
|
174
|
+
#requests = new DataReadQueue<Message>();
|
|
175
|
+
#readReady?: AsyncObservable<[]>;
|
|
176
|
+
|
|
177
|
+
constructor(config?: {
|
|
178
|
+
channel?: Channel<Bytes>;
|
|
179
|
+
session?: Session;
|
|
180
|
+
onClose?: () => MaybePromise<void>;
|
|
181
|
+
index?: number;
|
|
182
|
+
fabricIndex?: number;
|
|
183
|
+
}) {
|
|
184
|
+
const index = config?.index ?? 1;
|
|
185
|
+
const fabricIndex = config?.fabricIndex ?? 1;
|
|
186
|
+
const channel = config?.channel ?? new NetworkChannel({ index });
|
|
187
|
+
const session = config?.session ?? new NodeSession({ index, fabricIndex });
|
|
188
|
+
super(channel, session, config?.onClose);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
override async send(message: Message) {
|
|
192
|
+
this.#requests.write(message);
|
|
193
|
+
await this.#readReady?.emit();
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
read() {
|
|
197
|
+
return this.#requests.read();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
get readReady() {
|
|
201
|
+
return (this.#readReady ??= new Observable());
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* A mock message exchange that "transports" messages via internal queues.
|
|
207
|
+
*/
|
|
208
|
+
export class Exchange extends MessageExchange {
|
|
209
|
+
#responses = new DataReadQueue<Message>();
|
|
210
|
+
|
|
211
|
+
constructor(
|
|
212
|
+
config?: Omit<Partial<MessageExchange.Config>, "context"> &
|
|
213
|
+
MockSessionConfig & {
|
|
214
|
+
context?: Partial<MessageExchangeContext>;
|
|
215
|
+
fabric?: Fabric;
|
|
216
|
+
},
|
|
217
|
+
) {
|
|
218
|
+
const context = config?.context;
|
|
219
|
+
|
|
220
|
+
const index = config?.index ?? 1;
|
|
221
|
+
const fabricIndex = config?.fabricIndex ?? 1;
|
|
222
|
+
const maxPayloadSize = config?.maxPayloadSize;
|
|
223
|
+
|
|
224
|
+
super({
|
|
225
|
+
isInitiator: true,
|
|
226
|
+
exchangeId: index,
|
|
227
|
+
peerSessionId: index,
|
|
228
|
+
protocolId: config?.protocolId ?? SECURE_CHANNEL_PROTOCOL_ID,
|
|
229
|
+
|
|
230
|
+
...config,
|
|
231
|
+
|
|
232
|
+
context: {
|
|
233
|
+
session: context?.session ?? new NodeSession({ index, fabricIndex, maxPayloadSize }),
|
|
234
|
+
localSessionParameters: SessionParameters(
|
|
235
|
+
context?.localSessionParameters ?? SessionParameters.defaults,
|
|
236
|
+
),
|
|
237
|
+
retry() {},
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Enqueue a mock response.
|
|
244
|
+
*/
|
|
245
|
+
async write(message: Message) {
|
|
246
|
+
this.#responses.write(message);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Enqueue a mock status response.
|
|
251
|
+
*/
|
|
252
|
+
async writeStatus(status = Status.Success) {
|
|
253
|
+
await this.write({
|
|
254
|
+
packetHeader: {
|
|
255
|
+
messageId: 123,
|
|
256
|
+
},
|
|
257
|
+
payloadHeader: {
|
|
258
|
+
messageType: MessageType.StatusResponse,
|
|
259
|
+
},
|
|
260
|
+
payload: TlvStatusResponse.encode({
|
|
261
|
+
status,
|
|
262
|
+
interactionModelRevision: Specification.INTERACTION_MODEL_REVISION,
|
|
263
|
+
}),
|
|
264
|
+
} as Message);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Wait for a mock request.
|
|
269
|
+
*/
|
|
270
|
+
read() {
|
|
271
|
+
return this.#mockChannel.read();
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Emits when read() won't block.
|
|
276
|
+
*/
|
|
277
|
+
get readReady() {
|
|
278
|
+
return this.#mockChannel.readReady;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
override nextMessage() {
|
|
282
|
+
return this.#responses.read();
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
get #mockChannel() {
|
|
286
|
+
const channel = this.channel;
|
|
287
|
+
if (!(channel instanceof MessageChannel)) {
|
|
288
|
+
throw new ImplementationError("Message channel is not mocked");
|
|
289
|
+
}
|
|
290
|
+
return channel;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export interface MockNetworkConfig {
|
|
295
|
+
index?: number;
|
|
296
|
+
maxPayloadSize?: number;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
export interface MockSessionConfig extends MockNetworkConfig {
|
|
300
|
+
fabricIndex?: number;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Message } from "#codec/MessageCodec.js";
|
|
8
|
+
import type { Session } from "#session/Session.js";
|
|
9
|
+
import { Status, StatusResponseError } from "#types";
|
|
10
|
+
import { MatterError, NoResponseTimeoutError } from "@matter/general";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Indicates MRP retries were exhausted without a response from the client.
|
|
14
|
+
*
|
|
15
|
+
* TODO - we use this error far too broadly and throw in places that do not involve MRP
|
|
16
|
+
*/
|
|
17
|
+
export class RetransmissionLimitReachedError extends NoResponseTimeoutError {}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Thrown when we receive a message on an exchange that we did not expect.
|
|
21
|
+
*/
|
|
22
|
+
export class UnexpectedMessageError extends MatterError {
|
|
23
|
+
public constructor(
|
|
24
|
+
message: string,
|
|
25
|
+
session: Session,
|
|
26
|
+
public readonly receivedMessage: Message,
|
|
27
|
+
) {
|
|
28
|
+
super(`(${Message.diagnosticsOf(session, receivedMessage)}) ${message}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Thrown for communication attempts on closed sessions.
|
|
34
|
+
*/
|
|
35
|
+
export class SessionClosedError extends MatterError {}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Thrown for operations that are illegal because a session is not associated with a fabric.
|
|
39
|
+
*/
|
|
40
|
+
export class NoAssociatedFabricError extends StatusResponseError {
|
|
41
|
+
constructor(message: string) {
|
|
42
|
+
super(message, Status.UnsupportedAccess);
|
|
43
|
+
}
|
|
44
|
+
}
|
package/src/protocol/index.ts
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
export * from "./ChannelManager.js";
|
|
8
7
|
export * from "./DeviceAdvertiser.js";
|
|
9
8
|
export * from "./DeviceCommissioner.js";
|
|
9
|
+
export * from "./errors.js";
|
|
10
10
|
export * from "./ExchangeManager.js";
|
|
11
11
|
export * from "./ExchangeProvider.js";
|
|
12
12
|
export * from "./MessageChannel.js";
|
|
@@ -14,4 +14,5 @@ export * from "./MessageCounter.js";
|
|
|
14
14
|
export * from "./MessageExchange.js";
|
|
15
15
|
export * from "./MessageReceptionState.js";
|
|
16
16
|
export * from "./ProtocolHandler.js";
|
|
17
|
+
export * from "./ProtocolMocks.js";
|
|
17
18
|
export * from "./ProtocolStatusMessage.js";
|
|
@@ -84,8 +84,8 @@ export class StatusReportOnlySecureChannelProtocol implements ProtocolHandler {
|
|
|
84
84
|
|
|
85
85
|
const { session } = exchange;
|
|
86
86
|
NodeSession.assert(session);
|
|
87
|
-
logger.debug(
|
|
88
|
-
await session.
|
|
87
|
+
logger.debug(exchange.via, "Closed by peer");
|
|
88
|
+
await session.handlePeerClose();
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
async close() {
|
|
@@ -5,22 +5,29 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Subject } from "#action/server/Subject.js";
|
|
7
7
|
import { DecodedMessage, DecodedPacket, Message, MessageCodec, Packet, SessionType } from "#codec/MessageCodec.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { Mark } from "#common/Mark.js";
|
|
9
|
+
import type { Fabric } from "#fabric/Fabric.js";
|
|
10
|
+
import type { FabricManager } from "#fabric/FabricManager.js";
|
|
10
11
|
import {
|
|
11
12
|
Bytes,
|
|
13
|
+
ChannelType,
|
|
14
|
+
ConnectionlessTransportSet,
|
|
12
15
|
CryptoDecryptError,
|
|
16
|
+
Diagnostic,
|
|
17
|
+
hex,
|
|
13
18
|
ImplementationError,
|
|
14
19
|
InternalError,
|
|
15
20
|
Logger,
|
|
16
21
|
MatterFlowError,
|
|
22
|
+
STANDARD_MATTER_PORT,
|
|
17
23
|
UnexpectedDataError,
|
|
18
24
|
} from "#general";
|
|
25
|
+
import { PairRetransmissionLimitReachedError } from "#peer/ControllerDiscovery.js";
|
|
19
26
|
import { PeerAddress } from "#peer/PeerAddress.js";
|
|
20
|
-
import type { SessionManager } from "#session/SessionManager.js";
|
|
21
27
|
import { FabricIndex, GroupId, NodeId } from "#types";
|
|
22
28
|
import { SecureSession } from "./SecureSession.js";
|
|
23
29
|
import { Session } from "./Session.js";
|
|
30
|
+
import { SessionManager } from "./SessionManager.js";
|
|
24
31
|
|
|
25
32
|
const logger = Logger.get("SecureGroupSession");
|
|
26
33
|
|
|
@@ -35,17 +42,10 @@ export class GroupSession extends SecureSession {
|
|
|
35
42
|
|
|
36
43
|
readonly keySetId: number;
|
|
37
44
|
|
|
38
|
-
constructor(
|
|
39
|
-
manager
|
|
40
|
-
id: number; // Records the Group Session ID derived from the Operational Group Key used to encrypt the message.
|
|
41
|
-
fabric: Fabric;
|
|
42
|
-
keySetId: number; // The Group Key Set ID that was used to encrypt the incoming group message.
|
|
43
|
-
peerNodeId: NodeId; //The Target Group Node Id
|
|
44
|
-
operationalGroupKey: Bytes; // The Operational Group Key that was used to encrypt the incoming group message.
|
|
45
|
-
}) {
|
|
46
|
-
const { manager, fabric, operationalGroupKey, id, peerNodeId, keySetId } = args;
|
|
45
|
+
constructor(config: GroupSession.Config) {
|
|
46
|
+
const { manager, fabric, operationalGroupKey, id, peerNodeId, keySetId } = config;
|
|
47
47
|
super({
|
|
48
|
-
...
|
|
48
|
+
...config,
|
|
49
49
|
setActiveTimestamp: false, // We always set the active timestamp for Secure sessions TODO Check
|
|
50
50
|
messageCounter: fabric.groups.messaging.counterFor(operationalGroupKey),
|
|
51
51
|
});
|
|
@@ -58,7 +58,47 @@ export class GroupSession extends SecureSession {
|
|
|
58
58
|
manager?.registerGroupSession(this);
|
|
59
59
|
fabric.addSession(this);
|
|
60
60
|
|
|
61
|
-
logger.debug(`Created secure GROUP session for fabric index ${fabric.fabricIndex}
|
|
61
|
+
logger.debug(this.via, `Created secure GROUP session for fabric index ${fabric.fabricIndex}`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Create an outbound group session.
|
|
66
|
+
*/
|
|
67
|
+
static async create(options: {
|
|
68
|
+
manager?: SessionManager;
|
|
69
|
+
transports: ConnectionlessTransportSet;
|
|
70
|
+
id: number;
|
|
71
|
+
fabric: Fabric;
|
|
72
|
+
keySetId: number;
|
|
73
|
+
groupNodeId: NodeId;
|
|
74
|
+
operationalGroupKey: Bytes;
|
|
75
|
+
}) {
|
|
76
|
+
const { manager, transports, id, fabric, keySetId, groupNodeId, operationalGroupKey } = options;
|
|
77
|
+
|
|
78
|
+
const groupId = GroupId.fromNodeId(groupNodeId);
|
|
79
|
+
const multicastAddress = fabric.groups.multicastAddressFor(groupId);
|
|
80
|
+
|
|
81
|
+
const operationalInterface = transports.interfaceFor(ChannelType.UDP, multicastAddress);
|
|
82
|
+
if (operationalInterface === undefined) {
|
|
83
|
+
// TODO - better error class
|
|
84
|
+
throw new PairRetransmissionLimitReachedError(`IPv6 interface not initialized`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const channel = await operationalInterface.openChannel({
|
|
88
|
+
type: ChannelType.UDP,
|
|
89
|
+
ip: multicastAddress,
|
|
90
|
+
port: STANDARD_MATTER_PORT,
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return new GroupSession({
|
|
94
|
+
manager,
|
|
95
|
+
channel,
|
|
96
|
+
id,
|
|
97
|
+
fabric,
|
|
98
|
+
keySetId,
|
|
99
|
+
peerNodeId: groupNodeId,
|
|
100
|
+
operationalGroupKey,
|
|
101
|
+
});
|
|
62
102
|
}
|
|
63
103
|
|
|
64
104
|
override get type() {
|
|
@@ -77,8 +117,8 @@ export class GroupSession extends SecureSession {
|
|
|
77
117
|
return this.#id; // we use the same peer session ID then ours because should be the same keys
|
|
78
118
|
}
|
|
79
119
|
|
|
80
|
-
get
|
|
81
|
-
return
|
|
120
|
+
get via() {
|
|
121
|
+
return Diagnostic.via(`${Mark.SESSION}group#${hex.word(this.id)}`);
|
|
82
122
|
}
|
|
83
123
|
|
|
84
124
|
get nodeId() {
|
|
@@ -215,20 +255,24 @@ export class GroupSession extends SecureSession {
|
|
|
215
255
|
return { message, key, sessionId, sourceNodeId, keySetId, fabric };
|
|
216
256
|
}
|
|
217
257
|
|
|
218
|
-
async
|
|
219
|
-
logger.info(`End group session ${this.name}`);
|
|
258
|
+
override async close() {
|
|
220
259
|
this.manager?.removeGroupSession(this);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
end() {
|
|
224
|
-
return this.destroy();
|
|
260
|
+
await super.close();
|
|
225
261
|
}
|
|
226
262
|
}
|
|
227
263
|
|
|
228
264
|
export namespace GroupSession {
|
|
265
|
+
export interface Config extends Session.CommonConfig {
|
|
266
|
+
id: number; // Records the Group Session ID derived from the Operational Group Key used to encrypt the message.
|
|
267
|
+
fabric: Fabric;
|
|
268
|
+
keySetId: number; // The Group Key Set ID that was used to encrypt the incoming group message.
|
|
269
|
+
peerNodeId: NodeId; //The Target Group Node Id
|
|
270
|
+
operationalGroupKey: Bytes; // The Operational Group Key that was used to encrypt the incoming group message.
|
|
271
|
+
}
|
|
272
|
+
|
|
229
273
|
export function assert(session?: Session, errorText?: string): asserts session is GroupSession {
|
|
230
274
|
if (!is(session)) {
|
|
231
|
-
throw new MatterFlowError(errorText ?? "
|
|
275
|
+
throw new MatterFlowError(errorText ?? "Unsecured session in secure context");
|
|
232
276
|
}
|
|
233
277
|
}
|
|
234
278
|
|