@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
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { Mark } from "#common/Mark.js";
|
|
7
8
|
import {
|
|
8
9
|
Bytes,
|
|
9
10
|
DataReader,
|
|
10
11
|
DataWriter,
|
|
11
12
|
Diagnostic,
|
|
12
13
|
Endian,
|
|
14
|
+
hex,
|
|
13
15
|
InternalError,
|
|
14
16
|
NotImplementedError,
|
|
15
17
|
UnexpectedDataError,
|
|
@@ -53,6 +55,7 @@ export interface Packet {
|
|
|
53
55
|
export interface DecodedPacket extends Packet {
|
|
54
56
|
header: DecodedPacketHeader;
|
|
55
57
|
}
|
|
58
|
+
|
|
56
59
|
export interface Message {
|
|
57
60
|
packetHeader: PacketHeader;
|
|
58
61
|
payloadHeader: PayloadHeader;
|
|
@@ -60,6 +63,42 @@ export interface Message {
|
|
|
60
63
|
payload: Bytes;
|
|
61
64
|
}
|
|
62
65
|
|
|
66
|
+
export namespace Message {
|
|
67
|
+
export function via({ via }: { via: string }, { packetHeader: { messageId } }: Message) {
|
|
68
|
+
return Diagnostic.via(`${via}${Mark.MESSAGE}${hex.fixed(messageId, 8)}`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function diagnosticsOf(context: { via: string }, message: Message, logContext?: ExchangeLogContext) {
|
|
72
|
+
const {
|
|
73
|
+
payloadHeader: { messageType, protocolId, ackedMessageId, requiresAck },
|
|
74
|
+
payload,
|
|
75
|
+
} = message;
|
|
76
|
+
|
|
77
|
+
const duplicate = !!logContext?.duplicate;
|
|
78
|
+
const forInfo = logContext?.for;
|
|
79
|
+
const log = { ...logContext };
|
|
80
|
+
delete log.duplicate;
|
|
81
|
+
delete log.for;
|
|
82
|
+
const { type, for: forType } = mapProtocolAndMessageType(protocolId, messageType);
|
|
83
|
+
return Diagnostic.dict(
|
|
84
|
+
{
|
|
85
|
+
for: forInfo ?? forType,
|
|
86
|
+
...log,
|
|
87
|
+
id: Message.via(context, message),
|
|
88
|
+
type,
|
|
89
|
+
acked: ackedMessageId === undefined ? undefined : hex.fixed(ackedMessageId, 8),
|
|
90
|
+
msgFlags: Diagnostic.asFlags({
|
|
91
|
+
reqAck: requiresAck,
|
|
92
|
+
dup: duplicate,
|
|
93
|
+
}),
|
|
94
|
+
size: payload.byteLength ? payload.byteLength : undefined,
|
|
95
|
+
payload: payload.byteLength ? payload : undefined,
|
|
96
|
+
},
|
|
97
|
+
true,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
63
102
|
export interface DecodedMessage extends Message {
|
|
64
103
|
packetHeader: DecodedPacketHeader;
|
|
65
104
|
}
|
|
@@ -291,38 +330,6 @@ export class MessageCodec {
|
|
|
291
330
|
return writer.toByteArray();
|
|
292
331
|
}
|
|
293
332
|
|
|
294
|
-
static messageDiagnostics(
|
|
295
|
-
{
|
|
296
|
-
packetHeader: { messageId, sessionId },
|
|
297
|
-
payloadHeader: { exchangeId, messageType, protocolId, ackedMessageId, requiresAck },
|
|
298
|
-
payload,
|
|
299
|
-
}: Message,
|
|
300
|
-
logContext?: ExchangeLogContext,
|
|
301
|
-
) {
|
|
302
|
-
const duplicate = !!logContext?.duplicate;
|
|
303
|
-
const forInfo = logContext?.for;
|
|
304
|
-
const log = { ...logContext };
|
|
305
|
-
delete log.duplicate;
|
|
306
|
-
delete log.for;
|
|
307
|
-
const { type, for: forType } = mapProtocolAndMessageType(protocolId, messageType);
|
|
308
|
-
return Diagnostic.dict(
|
|
309
|
-
{
|
|
310
|
-
for: forInfo ?? forType,
|
|
311
|
-
...log,
|
|
312
|
-
msgId: `${sessionId}/${exchangeId}/${messageId}`,
|
|
313
|
-
type,
|
|
314
|
-
acked: ackedMessageId,
|
|
315
|
-
msgFlags: Diagnostic.asFlags({
|
|
316
|
-
reqAck: requiresAck,
|
|
317
|
-
dup: duplicate,
|
|
318
|
-
}),
|
|
319
|
-
size: payload.byteLength ? payload.byteLength : undefined,
|
|
320
|
-
payload: payload.byteLength ? payload : undefined,
|
|
321
|
-
},
|
|
322
|
-
true,
|
|
323
|
-
);
|
|
324
|
-
}
|
|
325
|
-
|
|
326
333
|
private static encodePayloadHeader({
|
|
327
334
|
exchangeId,
|
|
328
335
|
isInitiatorMessage,
|
|
@@ -14,7 +14,8 @@ import {
|
|
|
14
14
|
UnexpectedDataError,
|
|
15
15
|
UninitializedDependencyError,
|
|
16
16
|
} from "#general";
|
|
17
|
-
import {
|
|
17
|
+
import type { MessageExchange } from "#protocol/MessageExchange.js";
|
|
18
|
+
import type { NodeSession } from "#session/NodeSession.js";
|
|
18
19
|
import { CaseAuthenticatedTag, NodeId, ValidationError, VendorId } from "#types";
|
|
19
20
|
import { Fabric, FabricBuilder } from "../fabric/Fabric.js";
|
|
20
21
|
import { FabricManager } from "../fabric/FabricManager.js";
|
|
@@ -63,8 +64,11 @@ export abstract class FailsafeContext {
|
|
|
63
64
|
|
|
64
65
|
// If ExpiryLengthSeconds is non-zero and the fail-safe timer was not currently armed, then the fail-safe
|
|
65
66
|
// timer SHALL be armed for that duration.
|
|
66
|
-
this.#failsafe = new FailsafeTimer(
|
|
67
|
-
this.#
|
|
67
|
+
this.#failsafe = new FailsafeTimer(
|
|
68
|
+
this.#associatedFabric,
|
|
69
|
+
expiryLength,
|
|
70
|
+
maxCumulativeFailsafe,
|
|
71
|
+
this.#failSafeExpired.bind(this),
|
|
68
72
|
);
|
|
69
73
|
logger.debug(`Arm failSafe timer for ${Duration.format(expiryLength)}`);
|
|
70
74
|
|
|
@@ -78,9 +82,9 @@ export abstract class FailsafeContext {
|
|
|
78
82
|
});
|
|
79
83
|
}
|
|
80
84
|
|
|
81
|
-
async extend(fabric: Fabric | undefined, expiryLength: Duration) {
|
|
85
|
+
async extend(fabric: Fabric | undefined, expiryLength: Duration, currentExchange?: MessageExchange) {
|
|
82
86
|
await this.#construction;
|
|
83
|
-
await this.#failsafe?.reArm(fabric, expiryLength);
|
|
87
|
+
await this.#failsafe?.reArm(fabric, expiryLength, currentExchange);
|
|
84
88
|
if (expiryLength > 0) {
|
|
85
89
|
logger.debug(`Extend failSafe timer for ${Duration.format(expiryLength)}`);
|
|
86
90
|
}
|
|
@@ -141,7 +145,7 @@ export abstract class FailsafeContext {
|
|
|
141
145
|
// TODO 3. Any temporary administrative privileges automatically granted to any open PASE session SHALL be revoked (see Section 6.6.2.8, “Bootstrapping of the Access Control Cluster”).
|
|
142
146
|
|
|
143
147
|
// 4. The Secure Session Context of any PASE session still established at the Server SHALL be cleared.
|
|
144
|
-
await this.
|
|
148
|
+
await this.closePaseSession();
|
|
145
149
|
|
|
146
150
|
await this.close();
|
|
147
151
|
}
|
|
@@ -155,16 +159,8 @@ export abstract class FailsafeContext {
|
|
|
155
159
|
return this.#fabrics.allocateFabricIndex();
|
|
156
160
|
}
|
|
157
161
|
|
|
158
|
-
async
|
|
159
|
-
this.#fabrics.
|
|
160
|
-
if (this.#failsafe !== undefined) {
|
|
161
|
-
this.#associatedFabric = this.#failsafe.associatedFabric = fabric;
|
|
162
|
-
}
|
|
163
|
-
return fabric.fabricIndex;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
async updateFabric(fabric: Fabric) {
|
|
167
|
-
await this.#fabrics.updateFabric(fabric);
|
|
162
|
+
async replaceFabric(fabric: Fabric) {
|
|
163
|
+
await this.#fabrics.replaceFabric(fabric);
|
|
168
164
|
await this.#sessions.deleteResumptionRecordsForFabric(fabric);
|
|
169
165
|
}
|
|
170
166
|
|
|
@@ -183,19 +179,19 @@ export abstract class FailsafeContext {
|
|
|
183
179
|
return result;
|
|
184
180
|
}
|
|
185
181
|
|
|
186
|
-
async
|
|
182
|
+
async closePaseSession(currentExchange?: MessageExchange) {
|
|
187
183
|
const session = this.#sessions.getPaseSession();
|
|
188
|
-
if (session
|
|
189
|
-
await session.
|
|
184
|
+
if (session) {
|
|
185
|
+
await session.initiateForceClose(currentExchange);
|
|
190
186
|
}
|
|
191
187
|
}
|
|
192
188
|
|
|
193
|
-
async close() {
|
|
189
|
+
async close(currentExchange?: MessageExchange) {
|
|
194
190
|
await this.#construction.close(async () => {
|
|
195
191
|
if (this.#failsafe) {
|
|
196
192
|
await this.#failsafe.close();
|
|
197
193
|
this.#failsafe = undefined;
|
|
198
|
-
await this.rollback();
|
|
194
|
+
await this.rollback(currentExchange);
|
|
199
195
|
}
|
|
200
196
|
});
|
|
201
197
|
}
|
|
@@ -256,28 +252,35 @@ export abstract class FailsafeContext {
|
|
|
256
252
|
);
|
|
257
253
|
}
|
|
258
254
|
|
|
259
|
-
|
|
255
|
+
this.#associatedFabric = await builder
|
|
260
256
|
.setRootVendorId(adminVendorId)
|
|
261
257
|
.setIdentityProtectionKey(ipkValue)
|
|
262
258
|
.setRootNodeId(caseAdminSubject)
|
|
263
259
|
.build(this.#fabrics.allocateFabricIndex());
|
|
260
|
+
this.#fabrics.addFabric(this.#associatedFabric);
|
|
261
|
+
|
|
262
|
+
if (this.#failsafe) {
|
|
263
|
+
this.#failsafe.associatedFabric = this.#associatedFabric;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return this.#associatedFabric;
|
|
264
267
|
}
|
|
265
268
|
|
|
266
|
-
async #failSafeExpired() {
|
|
269
|
+
async #failSafeExpired(currentExchange?: MessageExchange) {
|
|
267
270
|
logger.info("Failsafe timer expired; resetting fabric builder");
|
|
268
271
|
|
|
269
|
-
await this.close();
|
|
272
|
+
await this.close(currentExchange);
|
|
270
273
|
}
|
|
271
274
|
|
|
272
|
-
protected async rollback() {
|
|
275
|
+
protected async rollback(currentExchange?: MessageExchange) {
|
|
273
276
|
if (this.fabricIndex !== undefined && !this.#forUpdateNoc) {
|
|
274
|
-
logger.debug(`Revoking fabric
|
|
275
|
-
await this.#
|
|
277
|
+
logger.debug(`Revoking fabric index ${this.fabricIndex}`);
|
|
278
|
+
await this.#associatedFabric?.delete(currentExchange);
|
|
276
279
|
}
|
|
277
280
|
|
|
278
281
|
// On expiry of the fail-safe timer, the following actions SHALL be performed in order:
|
|
279
282
|
// 1. Terminate any open PASE secure session by clearing any associated Secure Session Context at the Server.
|
|
280
|
-
await this.
|
|
283
|
+
await this.closePaseSession(currentExchange);
|
|
281
284
|
|
|
282
285
|
// TODO 2. Revoke the temporary administrative privileges granted to any open PASE session (see Section 6.6.2.8, “Bootstrapping of the Access Control Cluster”) at the Server.
|
|
283
286
|
|
|
@@ -287,9 +290,8 @@ export abstract class FailsafeContext {
|
|
|
287
290
|
const fabricIndex = this.fabricIndex;
|
|
288
291
|
if (this.#fabrics.has(fabricIndex)) {
|
|
289
292
|
fabric = this.#fabrics.for(fabricIndex);
|
|
290
|
-
const session
|
|
291
|
-
|
|
292
|
-
await session.close(false);
|
|
293
|
+
for (const session of this.#sessions.sessionsForFabricIndex(fabricIndex)) {
|
|
294
|
+
await session.initiateForceClose(currentExchange);
|
|
293
295
|
}
|
|
294
296
|
}
|
|
295
297
|
}
|
|
@@ -309,10 +311,7 @@ export abstract class FailsafeContext {
|
|
|
309
311
|
// 6. If an AddNOC command had been successfully invoked, achieve the equivalent effect of invoking the RemoveFabric command against the Fabric Index stored in the Fail-Safe Context for the Fabric Index that was the subject of the AddNOC command. This SHALL remove all associations to that Fabric including all fabric-scoped data, and MAY possibly factory-reset the device depending on current device state. This SHALL only apply to Fabrics added during the fail-safe period as the result of the AddNOC command.
|
|
310
312
|
// 7. Remove any RCACs added by the AddTrustedRootCertificate command that are not currently referenced by any entry in the Fabrics attribute.
|
|
311
313
|
if (!this.#forUpdateNoc && fabric !== undefined) {
|
|
312
|
-
|
|
313
|
-
if (fabricIndex !== undefined && this.#fabrics.has(fabricIndex)) {
|
|
314
|
-
await this.revokeFabric(this.#fabrics.for(fabricIndex));
|
|
315
|
-
}
|
|
314
|
+
await this.#associatedFabric?.delete();
|
|
316
315
|
}
|
|
317
316
|
|
|
318
317
|
// 8. Reset the Breadcrumb attribute to zero.
|
|
@@ -329,11 +328,9 @@ export abstract class FailsafeContext {
|
|
|
329
328
|
abstract restoreNetworkState(): Promise<void>;
|
|
330
329
|
|
|
331
330
|
async restoreFabric(fabric: Fabric) {
|
|
332
|
-
await this.
|
|
331
|
+
await this.replaceFabric(fabric);
|
|
333
332
|
}
|
|
334
333
|
|
|
335
|
-
abstract revokeFabric(fabric: Fabric): Promise<void>;
|
|
336
|
-
|
|
337
334
|
abstract restoreBreadcrumb(): Promise<void>;
|
|
338
335
|
|
|
339
336
|
get #builder() {
|
|
@@ -350,6 +347,6 @@ export namespace FailsafeContext {
|
|
|
350
347
|
fabrics: FabricManager;
|
|
351
348
|
expiryLength: Duration;
|
|
352
349
|
maxCumulativeFailsafe: Duration;
|
|
353
|
-
session:
|
|
350
|
+
session: NodeSession;
|
|
354
351
|
}
|
|
355
352
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Duration, Logger, MatterFlowError, Time, Timer } from "#general";
|
|
8
|
+
import { MessageExchange } from "#protocol/MessageExchange.js";
|
|
8
9
|
import { Fabric } from "../fabric/Fabric.js";
|
|
9
10
|
import type { FailsafeContext } from "./FailsafeContext.js";
|
|
10
11
|
|
|
@@ -16,7 +17,7 @@ const logger = Logger.get("FailsafeTimer");
|
|
|
16
17
|
* Manages the failsafe timer associated with a {@link FailsafeContext}.
|
|
17
18
|
*/
|
|
18
19
|
export class FailsafeTimer {
|
|
19
|
-
#expiryCallback: () => Promise<void>;
|
|
20
|
+
#expiryCallback: (currentExchange?: MessageExchange) => Promise<void>;
|
|
20
21
|
#failsafeTimer: Timer;
|
|
21
22
|
#maxCumulativeFailsafeTimer: Timer;
|
|
22
23
|
#completed = false;
|
|
@@ -25,7 +26,7 @@ export class FailsafeTimer {
|
|
|
25
26
|
public associatedFabric: Fabric | undefined,
|
|
26
27
|
expiryLength: Duration,
|
|
27
28
|
maxCumulativeFailsafe: Duration,
|
|
28
|
-
expiryCallback: () => Promise<void>,
|
|
29
|
+
expiryCallback: (currentExchange?: MessageExchange) => Promise<void>,
|
|
29
30
|
) {
|
|
30
31
|
this.#expiryCallback = expiryCallback;
|
|
31
32
|
this.#failsafeTimer = this.#startFailsafeTimer(expiryLength);
|
|
@@ -44,7 +45,7 @@ export class FailsafeTimer {
|
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
/** Handle "Re-Arming" an existing FailSafe context to extend the timer, expire or fail if not allowed. */
|
|
47
|
-
async reArm(associatedFabric: Fabric | undefined, expiry: Duration) {
|
|
48
|
+
async reArm(associatedFabric: Fabric | undefined, expiry: Duration, currentExchange?: MessageExchange) {
|
|
48
49
|
if (!this.#failsafeTimer.isRunning) {
|
|
49
50
|
throw new MatterFlowError("FailSafe already expired.");
|
|
50
51
|
}
|
|
@@ -61,7 +62,7 @@ export class FailsafeTimer {
|
|
|
61
62
|
// If ExpiryLengthSeconds is 0 and the fail-safe timer was already armed and the accessing fabric matches
|
|
62
63
|
// the Fabric currently associated with the fail-safe context, then the fail-safe timer SHALL be
|
|
63
64
|
// immediately expired (see further below for side-effects of expiration).
|
|
64
|
-
await this.expire();
|
|
65
|
+
await this.expire(currentExchange);
|
|
65
66
|
} else {
|
|
66
67
|
// If ExpiryLengthSeconds is non-zero and the fail-safe timer was currently armed, and the accessing Fabric
|
|
67
68
|
// matches the fail-safe context’s associated Fabric, then the fail-safe timer SHALL be re- armed to expire
|
|
@@ -76,13 +77,13 @@ export class FailsafeTimer {
|
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
/** Expire the FailSafe context. This is called by the timer and can also be called manually if needed. */
|
|
79
|
-
async expire() {
|
|
80
|
+
async expire(currentExchange?: MessageExchange) {
|
|
80
81
|
if (this.#completed) {
|
|
81
82
|
// Completion was already triggered, so do nothing
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
84
85
|
this.complete();
|
|
85
|
-
await this.#expiryCallback();
|
|
86
|
+
await this.#expiryCallback(currentExchange);
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
/** Complete the FailSafe context. This is called when the commissioning is completed. */
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Visual demarcators for specific log elements.
|
|
9
|
+
*/
|
|
10
|
+
export namespace Mark {
|
|
11
|
+
export const INBOUND = "«";
|
|
12
|
+
export const OUTBOUND = "»";
|
|
13
|
+
export const SESSION = "•"; // Makes more sense but renders poorly: "⚭" (marriage). Infinity OK too: "∞"
|
|
14
|
+
export const LOCAL_SESSION = "◦";
|
|
15
|
+
export const EXCHANGE = "⇵";
|
|
16
|
+
export const MESSAGE = "✉";
|
|
17
|
+
}
|
package/src/common/index.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from "../peer/PeerAddress.js";
|
|
|
8
8
|
export * from "./ExpandedPath.js";
|
|
9
9
|
export * from "./FailsafeContext.js";
|
|
10
10
|
export * from "./FailsafeTimer.js";
|
|
11
|
+
export * from "./Mark.js";
|
|
11
12
|
export * from "./OperationalCredentialsTypes.js";
|
|
12
13
|
export * from "./Scanner.js";
|
|
13
14
|
export * from "./SupportedTransportsBitmap.js";
|
package/src/fabric/Fabric.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { Icac } from "#certificate/kinds/Icac.js";
|
|
|
9
9
|
import { Noc } from "#certificate/kinds/Noc.js";
|
|
10
10
|
import { Rcac } from "#certificate/kinds/Rcac.js";
|
|
11
11
|
import {
|
|
12
|
+
AsyncObservable,
|
|
12
13
|
BinaryKeyPair,
|
|
13
14
|
Bytes,
|
|
14
15
|
Crypto,
|
|
@@ -28,7 +29,8 @@ import {
|
|
|
28
29
|
import { FabricGroups, GROUP_SECURITY_INFO } from "#groups/FabricGroups.js";
|
|
29
30
|
import { FabricAccessControl } from "#interaction/FabricAccessControl.js";
|
|
30
31
|
import { PeerAddress } from "#peer/PeerAddress.js";
|
|
31
|
-
import {
|
|
32
|
+
import { MessageExchange } from "#protocol/MessageExchange.js";
|
|
33
|
+
import { SecureSession } from "#session/SecureSession.js";
|
|
32
34
|
import { CaseAuthenticatedTag, FabricId, FabricIndex, GroupId, NodeId, StatusResponse, VendorId } from "#types";
|
|
33
35
|
|
|
34
36
|
const logger = Logger.get("Fabric");
|
|
@@ -61,15 +63,20 @@ export class Fabric {
|
|
|
61
63
|
readonly intermediateCACert: Bytes | undefined;
|
|
62
64
|
readonly operationalCert: Bytes;
|
|
63
65
|
readonly #keyPair: Key;
|
|
64
|
-
readonly #sessions = new Set<
|
|
66
|
+
readonly #sessions = new Set<SecureSession>();
|
|
65
67
|
readonly #groups: FabricGroups;
|
|
66
68
|
readonly #accessControl: FabricAccessControl;
|
|
69
|
+
|
|
70
|
+
readonly #leaving = AsyncObservable<[]>();
|
|
71
|
+
readonly #deleting = AsyncObservable<[]>();
|
|
72
|
+
readonly #deleted = AsyncObservable<[]>();
|
|
73
|
+
|
|
67
74
|
#vidVerificationStatement?: Bytes;
|
|
68
75
|
#vvsc?: Bytes;
|
|
69
76
|
#label: string;
|
|
70
|
-
#removeCallbacks = new Array<() => MaybePromise<void>>();
|
|
71
77
|
#persistCallback: ((isUpdate?: boolean) => MaybePromise<void>) | undefined;
|
|
72
78
|
#storage?: StorageContext;
|
|
79
|
+
#isDeleting?: boolean;
|
|
73
80
|
|
|
74
81
|
constructor(crypto: Crypto, config: Fabric.Config) {
|
|
75
82
|
this.#crypto = crypto;
|
|
@@ -203,6 +210,22 @@ export class Fabric {
|
|
|
203
210
|
return this.#keyPair.publicKey;
|
|
204
211
|
}
|
|
205
212
|
|
|
213
|
+
get isDeleting() {
|
|
214
|
+
return this.#isDeleting;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
get leaving() {
|
|
218
|
+
return this.#leaving;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
get deleting() {
|
|
222
|
+
return this.#deleting;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
get deleted() {
|
|
226
|
+
return this.#deleted;
|
|
227
|
+
}
|
|
228
|
+
|
|
206
229
|
sign(data: Bytes) {
|
|
207
230
|
return this.crypto.signEcdsa(this.#keyPair, data);
|
|
208
231
|
}
|
|
@@ -258,11 +281,11 @@ export class Fabric {
|
|
|
258
281
|
return await Promise.all(destinationIds);
|
|
259
282
|
}
|
|
260
283
|
|
|
261
|
-
addSession(session:
|
|
284
|
+
addSession(session: SecureSession) {
|
|
262
285
|
this.#sessions.add(session);
|
|
263
286
|
}
|
|
264
287
|
|
|
265
|
-
|
|
288
|
+
deleteSession(session: SecureSession) {
|
|
266
289
|
this.#sessions.delete(session);
|
|
267
290
|
}
|
|
268
291
|
|
|
@@ -274,17 +297,6 @@ export class Fabric {
|
|
|
274
297
|
}
|
|
275
298
|
}
|
|
276
299
|
|
|
277
|
-
addRemoveCallback(callback: () => MaybePromise<void>) {
|
|
278
|
-
this.#removeCallbacks.push(callback);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
deleteRemoveCallback(callback: () => MaybePromise<void>) {
|
|
282
|
-
const index = this.#removeCallbacks.indexOf(callback);
|
|
283
|
-
if (index >= 0) {
|
|
284
|
-
this.#removeCallbacks.splice(index, 1);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
300
|
set persistCallback(callback: (isUpdate?: boolean) => MaybePromise<void>) {
|
|
289
301
|
// TODO Remove "isUpdate" parameter as soon as the fabric scoped data are removed from here/legacy API gets removed
|
|
290
302
|
this.#persistCallback = callback;
|
|
@@ -296,17 +308,33 @@ export class Fabric {
|
|
|
296
308
|
* Devices should use this to cleanly exit a fabric. It flushes subscriptions to ensure the "leave" event emits
|
|
297
309
|
* and closes sessions.
|
|
298
310
|
*/
|
|
299
|
-
leave(
|
|
300
|
-
|
|
301
|
-
}
|
|
311
|
+
async leave(currentExchange?: MessageExchange) {
|
|
312
|
+
await this.#leaving.emit();
|
|
302
313
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
314
|
+
for (const session of [...this.#sessions]) {
|
|
315
|
+
await session.initiateClose(async () => {
|
|
316
|
+
await session.closeSubscriptions(true);
|
|
317
|
+
});
|
|
306
318
|
}
|
|
319
|
+
|
|
320
|
+
await this.delete(currentExchange);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Permanently remove the fabric.
|
|
325
|
+
*
|
|
326
|
+
* Does not emit the leave event.
|
|
327
|
+
*/
|
|
328
|
+
async delete(currentExchange?: MessageExchange) {
|
|
329
|
+
this.#isDeleting = true;
|
|
330
|
+
|
|
331
|
+
await this.#deleting.emit();
|
|
332
|
+
|
|
307
333
|
for (const session of [...this.#sessions]) {
|
|
308
|
-
await session.
|
|
334
|
+
await session.initiateForceClose(currentExchange);
|
|
309
335
|
}
|
|
336
|
+
|
|
337
|
+
await this.#deleted.emit();
|
|
310
338
|
}
|
|
311
339
|
|
|
312
340
|
persist(isUpdate = true) {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { CertificateAuthority } from "#certificate/CertificateAuthority.js";
|
|
8
8
|
import {
|
|
9
|
+
AsyncObservable,
|
|
9
10
|
Bytes,
|
|
10
11
|
Construction,
|
|
11
12
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
Environmental,
|
|
14
15
|
ImplementationError,
|
|
15
16
|
Logger,
|
|
16
|
-
Observable,
|
|
17
17
|
} from "#general";
|
|
18
18
|
import { CaseAuthenticatedTag, FabricId, FabricIndex, NodeId, VendorId } from "#types";
|
|
19
19
|
import { Fabric, FabricBuilder } from "./Fabric.js";
|
|
@@ -52,7 +52,7 @@ export class FabricAuthority {
|
|
|
52
52
|
#construction: Construction<FabricAuthority>;
|
|
53
53
|
#ca: CertificateAuthority;
|
|
54
54
|
#fabrics: FabricManager;
|
|
55
|
-
#fabricAdded = new
|
|
55
|
+
#fabricAdded = new AsyncObservable<[Fabric]>();
|
|
56
56
|
|
|
57
57
|
constructor({ ca, fabrics }: FabricAuthorityContext) {
|
|
58
58
|
this.#ca = ca;
|
|
@@ -143,7 +143,7 @@ export class FabricAuthority {
|
|
|
143
143
|
let index = config.adminFabricIndex;
|
|
144
144
|
if (index === undefined) {
|
|
145
145
|
index = this.#fabrics.allocateFabricIndex();
|
|
146
|
-
} else if (this.#fabrics.
|
|
146
|
+
} else if (this.#fabrics.maybeForIndex(index) !== undefined) {
|
|
147
147
|
throw new ImplementationError(`Cannot allocate controller fabric ${index} because index is in use`);
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -153,7 +153,7 @@ export class FabricAuthority {
|
|
|
153
153
|
fabric.persist();
|
|
154
154
|
|
|
155
155
|
logger.debug(`Created new controller fabric ${index}`);
|
|
156
|
-
this.#fabricAdded.emit(fabric);
|
|
156
|
+
await this.#fabricAdded.emit(fabric);
|
|
157
157
|
|
|
158
158
|
return fabric;
|
|
159
159
|
}
|