@matter/protocol 0.16.0-alpha.0-20250816-d22ad240d → 0.16.0-alpha.0-20250819-0a388db8b
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.d.ts +6 -0
- package/dist/cjs/action/Val.d.ts.map +1 -1
- package/dist/cjs/action/Val.js.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +4 -4
- package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
- package/dist/cjs/action/client/ClientSubscription.d.ts +2 -1
- package/dist/cjs/action/client/ClientSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientSubscriptionHandler.js +2 -2
- package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +1 -1
- package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientSubscriptions.js +11 -7
- package/dist/cjs/action/client/ClientSubscriptions.js.map +1 -1
- package/dist/cjs/action/request/Subscribe.d.ts +6 -6
- package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
- package/dist/cjs/action/request/Subscribe.js +11 -9
- package/dist/cjs/action/request/Subscribe.js.map +1 -1
- package/dist/cjs/advertisement/Advertisement.d.ts +3 -3
- package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertisement.js +5 -5
- package/dist/cjs/advertisement/Advertisement.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertisement.js +7 -6
- package/dist/cjs/advertisement/ble/BleAdvertisement.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +11 -10
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js +4 -4
- package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js +7 -7
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +4 -4
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/cjs/ble/Ble.d.ts +2 -2
- package/dist/cjs/ble/Ble.d.ts.map +1 -1
- package/dist/cjs/ble/Ble.js.map +1 -1
- package/dist/cjs/ble/BleConsts.d.ts +4 -4
- package/dist/cjs/ble/BleConsts.d.ts.map +1 -1
- package/dist/cjs/ble/BleConsts.js +7 -7
- package/dist/cjs/ble/BleConsts.js.map +1 -1
- package/dist/cjs/ble/BtpSessionHandler.js +2 -2
- package/dist/cjs/ble/BtpSessionHandler.js.map +1 -1
- package/dist/cjs/certificate/AttestationCertificateManager.js +3 -3
- package/dist/cjs/certificate/AttestationCertificateManager.js.map +1 -1
- package/dist/cjs/certificate/CertificateAuthority.js +2 -2
- package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
- package/dist/cjs/certificate/kinds/OperationalBase.js +2 -2
- package/dist/cjs/certificate/kinds/OperationalBase.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClient.js +5 -5
- package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +3 -3
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/cjs/cluster/client/EventClient.d.ts +2 -1
- package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/EventClient.js +3 -3
- package/dist/cjs/cluster/client/EventClient.js.map +1 -1
- package/dist/cjs/common/FailsafeContext.d.ts +4 -4
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +8 -8
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/common/FailsafeTimer.d.ts +3 -3
- package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeTimer.js +8 -8
- package/dist/cjs/common/FailsafeTimer.js.map +1 -1
- package/dist/cjs/common/Scanner.d.ts +7 -7
- package/dist/cjs/common/Scanner.d.ts.map +1 -1
- package/dist/cjs/common/Scanner.js.map +1 -1
- package/dist/cjs/events/OccurrenceManager.js +1 -1
- package/dist/cjs/events/OccurrenceManager.js.map +1 -1
- package/dist/cjs/groups/FabricGroups.d.ts +1 -1
- package/dist/cjs/groups/FabricGroups.js +1 -1
- package/dist/cjs/groups/Groups.d.ts +1 -1
- package/dist/cjs/groups/KeySets.d.ts +3 -3
- package/dist/cjs/groups/KeySets.d.ts.map +1 -1
- package/dist/cjs/groups/KeySets.js +12 -4
- package/dist/cjs/groups/KeySets.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +9 -9
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +33 -33
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +10 -10
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +15 -15
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +3 -4
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js +9 -12
- package/dist/cjs/interaction/Subscription.js.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.d.ts +3 -3
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +3 -3
- package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.d.ts +9 -9
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +86 -82
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +11 -9
- package/dist/cjs/mdns/MdnsServer.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 +7 -7
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js +37 -35
- package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts +4 -4
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js +12 -17
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/peer/InteractionQueue.d.ts.map +1 -1
- package/dist/cjs/peer/InteractionQueue.js +2 -2
- package/dist/cjs/peer/InteractionQueue.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts +2 -2
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +25 -25
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.js +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +2 -5
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.d.ts +4 -4
- package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.js +3 -3
- package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
- package/dist/cjs/protocol/MessageChannel.d.ts +5 -5
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +19 -15
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +6 -6
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +35 -33
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +8 -8
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +17 -17
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/session/InsecureSession.d.ts +2 -2
- package/dist/cjs/session/InsecureSession.d.ts.map +1 -1
- package/dist/cjs/session/InsecureSession.js.map +1 -1
- package/dist/cjs/session/NodeSession.js +3 -3
- package/dist/cjs/session/Session.d.ts +7 -7
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +19 -19
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionIntervals.d.ts +7 -6
- package/dist/cjs/session/SessionIntervals.d.ts.map +1 -1
- package/dist/cjs/session/SessionIntervals.js +8 -8
- package/dist/cjs/session/SessionIntervals.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +2 -2
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +6 -6
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/cjs/session/case/CaseClient.d.ts +2 -1
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +2 -2
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseMessenger.js +4 -7
- package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +1 -1
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/action/Val.d.ts +6 -0
- package/dist/esm/action/Val.d.ts.map +1 -1
- package/dist/esm/action/Val.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +5 -5
- package/dist/esm/action/client/ClientInteraction.js.map +1 -1
- package/dist/esm/action/client/ClientSubscription.d.ts +2 -1
- package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/ClientSubscriptionHandler.js +2 -2
- package/dist/esm/action/client/ClientSubscriptionHandler.js.map +1 -1
- package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -1
- package/dist/esm/action/client/ClientSubscriptions.js +14 -8
- package/dist/esm/action/client/ClientSubscriptions.js.map +1 -1
- package/dist/esm/action/request/Subscribe.d.ts +6 -6
- package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
- package/dist/esm/action/request/Subscribe.js +12 -10
- package/dist/esm/action/request/Subscribe.js.map +1 -1
- package/dist/esm/advertisement/Advertisement.d.ts +3 -3
- package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertisement.js +16 -7
- package/dist/esm/advertisement/Advertisement.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertisement.js +7 -6
- package/dist/esm/advertisement/ble/BleAdvertisement.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +11 -10
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js +6 -6
- package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.js +17 -8
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +14 -6
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/esm/ble/Ble.d.ts +2 -2
- package/dist/esm/ble/Ble.d.ts.map +1 -1
- package/dist/esm/ble/Ble.js +5 -1
- package/dist/esm/ble/Ble.js.map +1 -1
- package/dist/esm/ble/BleConsts.d.ts +4 -4
- package/dist/esm/ble/BleConsts.d.ts.map +1 -1
- package/dist/esm/ble/BleConsts.js +8 -8
- package/dist/esm/ble/BleConsts.js.map +1 -1
- package/dist/esm/ble/BtpSessionHandler.js +4 -4
- package/dist/esm/ble/BtpSessionHandler.js.map +1 -1
- package/dist/esm/certificate/AttestationCertificateManager.js +3 -3
- package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
- package/dist/esm/certificate/CertificateAuthority.js +2 -2
- package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
- package/dist/esm/certificate/kinds/OperationalBase.js +2 -2
- package/dist/esm/certificate/kinds/OperationalBase.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.js +5 -5
- package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts +3 -3
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/esm/cluster/client/EventClient.d.ts +2 -1
- package/dist/esm/cluster/client/EventClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/EventClient.js +3 -3
- package/dist/esm/cluster/client/EventClient.js.map +1 -1
- package/dist/esm/common/FailsafeContext.d.ts +4 -4
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +9 -8
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/common/FailsafeTimer.d.ts +3 -3
- package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/esm/common/FailsafeTimer.js +8 -8
- package/dist/esm/common/FailsafeTimer.js.map +1 -1
- package/dist/esm/common/Scanner.d.ts +7 -7
- package/dist/esm/common/Scanner.d.ts.map +1 -1
- package/dist/esm/common/Scanner.js +5 -1
- package/dist/esm/common/Scanner.js.map +1 -1
- package/dist/esm/events/OccurrenceManager.js +1 -1
- package/dist/esm/events/OccurrenceManager.js.map +1 -1
- package/dist/esm/groups/FabricGroups.d.ts +1 -1
- package/dist/esm/groups/FabricGroups.js +1 -1
- package/dist/esm/groups/Groups.d.ts +1 -1
- package/dist/esm/groups/KeySets.d.ts +3 -3
- package/dist/esm/groups/KeySets.d.ts.map +1 -1
- package/dist/esm/groups/KeySets.js +13 -5
- package/dist/esm/groups/KeySets.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +9 -9
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +34 -33
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +10 -10
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +16 -15
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +3 -4
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js +9 -12
- package/dist/esm/interaction/Subscription.js.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.d.ts +3 -3
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +4 -4
- package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.d.ts +9 -9
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +94 -82
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +14 -9
- package/dist/esm/mdns/MdnsServer.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 +11 -8
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js +44 -35
- package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts +4 -4
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js +20 -18
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/peer/InteractionQueue.d.ts.map +1 -1
- package/dist/esm/peer/InteractionQueue.js +3 -3
- package/dist/esm/peer/InteractionQueue.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts +2 -2
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +29 -26
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.js +2 -2
- package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +3 -6
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.d.ts +4 -4
- package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.js +4 -4
- package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
- package/dist/esm/protocol/MessageChannel.d.ts +5 -5
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +20 -16
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +6 -6
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +39 -34
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +8 -8
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +18 -18
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/session/InsecureSession.d.ts +2 -2
- package/dist/esm/session/InsecureSession.d.ts.map +1 -1
- package/dist/esm/session/InsecureSession.js.map +1 -1
- package/dist/esm/session/NodeSession.js +3 -3
- package/dist/esm/session/Session.d.ts +7 -7
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +27 -20
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionIntervals.d.ts +7 -6
- package/dist/esm/session/SessionIntervals.d.ts.map +1 -1
- package/dist/esm/session/SessionIntervals.js +8 -8
- package/dist/esm/session/SessionIntervals.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +2 -2
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +6 -6
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/case/CaseClient.d.ts +2 -1
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +2 -2
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseMessenger.js +5 -11
- package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +2 -1
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/action/Val.ts +5 -0
- package/src/action/client/ClientInteraction.ts +4 -4
- package/src/action/client/ClientSubscription.ts +2 -1
- package/src/action/client/ClientSubscriptionHandler.ts +2 -2
- package/src/action/client/ClientSubscriptions.ts +14 -8
- package/src/action/request/Subscribe.ts +17 -15
- package/src/advertisement/Advertisement.ts +18 -8
- package/src/advertisement/ble/BleAdvertisement.ts +7 -6
- package/src/advertisement/ble/BleAdvertiser.ts +11 -11
- package/src/advertisement/mdns/MdnsAdvertisement.ts +20 -9
- package/src/advertisement/mdns/MdnsAdvertiser.ts +17 -7
- package/src/ble/Ble.ts +11 -2
- package/src/ble/BleConsts.ts +5 -5
- package/src/ble/BtpSessionHandler.ts +4 -4
- package/src/certificate/AttestationCertificateManager.ts +3 -3
- package/src/certificate/CertificateAuthority.ts +2 -2
- package/src/certificate/kinds/OperationalBase.ts +3 -3
- package/src/cluster/client/ClusterClient.ts +8 -8
- package/src/cluster/client/ClusterClientTypes.ts +3 -3
- package/src/cluster/client/EventClient.ts +5 -5
- package/src/common/FailsafeContext.ts +11 -13
- package/src/common/FailsafeTimer.ts +11 -13
- package/src/common/Scanner.ts +16 -7
- package/src/events/OccurrenceManager.ts +1 -1
- package/src/groups/FabricGroups.ts +1 -1
- package/src/groups/KeySets.ts +14 -6
- package/src/interaction/InteractionClient.ts +46 -44
- package/src/interaction/InteractionMessenger.ts +24 -22
- package/src/interaction/Subscription.ts +10 -14
- package/src/interaction/SubscriptionClient.ts +6 -6
- package/src/mdns/MdnsClient.ts +105 -82
- package/src/mdns/MdnsServer.ts +14 -9
- package/src/peer/ControllerCommissioner.ts +12 -9
- package/src/peer/ControllerCommissioningFlow.ts +48 -39
- package/src/peer/ControllerDiscovery.ts +22 -18
- package/src/peer/InteractionQueue.ts +3 -3
- package/src/peer/PeerSet.ts +34 -28
- package/src/protocol/DeviceCommissioner.ts +2 -2
- package/src/protocol/ExchangeManager.ts +3 -6
- package/src/protocol/ExchangeProvider.ts +6 -6
- package/src/protocol/MessageChannel.ts +26 -21
- package/src/protocol/MessageExchange.ts +42 -38
- package/src/securechannel/SecureChannelMessenger.ts +16 -22
- package/src/session/InsecureSession.ts +2 -2
- package/src/session/NodeSession.ts +3 -3
- package/src/session/Session.ts +31 -21
- package/src/session/SessionIntervals.ts +11 -11
- package/src/session/SessionManager.ts +10 -9
- package/src/session/case/CaseClient.ts +3 -3
- package/src/session/pase/PaseMessenger.ts +5 -11
- package/src/session/pase/PaseServer.ts +2 -1
|
@@ -76,7 +76,7 @@ export class AttestationCertificateManager {
|
|
|
76
76
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
77
77
|
// @ts-ignore
|
|
78
78
|
private async generatePAACert(vendorId?: VendorId) {
|
|
79
|
-
const now = Time.
|
|
79
|
+
const now = Time.now;
|
|
80
80
|
const cert = new Paa({
|
|
81
81
|
serialNumber: Bytes.fromHex(toHex(this.paaCertId)),
|
|
82
82
|
signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
|
|
@@ -111,7 +111,7 @@ export class AttestationCertificateManager {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
private async generatePAICert(vendorId: VendorId, productId?: number) {
|
|
114
|
-
const now = Time.
|
|
114
|
+
const now = Time.now;
|
|
115
115
|
const cert = new Pai({
|
|
116
116
|
serialNumber: Bytes.fromHex(toHex(this.#paiCertId)),
|
|
117
117
|
signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
|
|
@@ -146,7 +146,7 @@ export class AttestationCertificateManager {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
async generateDaCert(publicKey: Bytes, vendorId: VendorId, productId: number) {
|
|
149
|
-
const now = Time.
|
|
149
|
+
const now = Time.now;
|
|
150
150
|
const certId = this.#nextCertificateId++;
|
|
151
151
|
const cert = new Dac({
|
|
152
152
|
serialNumber: Bytes.fromHex(toHex(certId)),
|
|
@@ -117,7 +117,7 @@ export class CertificateAuthority {
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
async #generateRootCert() {
|
|
120
|
-
const now = Time.
|
|
120
|
+
const now = Time.now;
|
|
121
121
|
const cert = new Rcac({
|
|
122
122
|
serialNumber: Bytes.fromHex(toHex(this.#rootCertId)),
|
|
123
123
|
signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
|
|
@@ -148,7 +148,7 @@ export class CertificateAuthority {
|
|
|
148
148
|
nodeId: NodeId,
|
|
149
149
|
caseAuthenticatedTags?: CaseAuthenticatedTag[],
|
|
150
150
|
) {
|
|
151
|
-
const now = Time.
|
|
151
|
+
const now = Time.now;
|
|
152
152
|
const certId = this.#nextCertificateId++;
|
|
153
153
|
const cert = new Noc({
|
|
154
154
|
serialNumber: Bytes.fromHex(toHex(certId)),
|
|
@@ -62,10 +62,10 @@ export abstract class OperationalBase<CT extends X509Certificate> extends X509Ba
|
|
|
62
62
|
|
|
63
63
|
// notBefore date should be already reached, notAfter is not checked right now
|
|
64
64
|
// TODO: implement real checks when we add "Last known Good UTC time"
|
|
65
|
-
if (cert.notBefore * 1000 > Time.nowMs
|
|
66
|
-
logger.warn(`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs
|
|
65
|
+
if (cert.notBefore * 1000 > Time.nowMs) {
|
|
66
|
+
logger.warn(`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs}`);
|
|
67
67
|
/*throw new CertificateError(
|
|
68
|
-
`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs
|
|
68
|
+
`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs}`,
|
|
69
69
|
);*/
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { capitalize, Diagnostic, ImplementationError, Logger, Merge } from "#general";
|
|
7
|
+
import { capitalize, Diagnostic, Duration, ImplementationError, Logger, Merge } from "#general";
|
|
8
8
|
import {
|
|
9
9
|
Attribute,
|
|
10
10
|
AttributeId,
|
|
@@ -387,16 +387,16 @@ export function ClusterClient<const T extends ClusterType>(
|
|
|
387
387
|
request: RequestT,
|
|
388
388
|
options: {
|
|
389
389
|
asTimedRequest?: boolean;
|
|
390
|
-
|
|
391
|
-
|
|
390
|
+
timedRequestTimeout?: Duration;
|
|
391
|
+
expectedProcessingTime?: Duration;
|
|
392
392
|
useExtendedFailSafeMessageResponseTimeout?: boolean;
|
|
393
393
|
} = {},
|
|
394
394
|
) => {
|
|
395
395
|
const {
|
|
396
396
|
asTimedRequest,
|
|
397
|
-
|
|
397
|
+
timedRequestTimeout,
|
|
398
398
|
useExtendedFailSafeMessageResponseTimeout,
|
|
399
|
-
|
|
399
|
+
expectedProcessingTime,
|
|
400
400
|
} = options;
|
|
401
401
|
if (isGroupAddress) {
|
|
402
402
|
return interactionClient.invokeWithSuppressedResponse<Command<RequestT, ResponseT, any>>({
|
|
@@ -404,7 +404,7 @@ export function ClusterClient<const T extends ClusterType>(
|
|
|
404
404
|
command: commandDef[commandName],
|
|
405
405
|
request,
|
|
406
406
|
asTimedRequest,
|
|
407
|
-
|
|
407
|
+
timedRequestTimeout,
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
return interactionClient.invoke<Command<RequestT, ResponseT, any>>({
|
|
@@ -413,8 +413,8 @@ export function ClusterClient<const T extends ClusterType>(
|
|
|
413
413
|
command: commandDef[commandName],
|
|
414
414
|
request,
|
|
415
415
|
asTimedRequest,
|
|
416
|
-
|
|
417
|
-
|
|
416
|
+
timedRequestTimeout,
|
|
417
|
+
expectedProcessingTime,
|
|
418
418
|
useExtendedFailSafeMessageResponseTimeout,
|
|
419
419
|
});
|
|
420
420
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { Merge } from "#general";
|
|
6
|
+
import { Duration, Merge } from "#general";
|
|
7
7
|
import {
|
|
8
8
|
Attribute,
|
|
9
9
|
AttributeId,
|
|
@@ -63,13 +63,13 @@ export type SignatureFromCommandSpec<C extends Command<any, any, any>> = (
|
|
|
63
63
|
asTimedRequest?: boolean;
|
|
64
64
|
|
|
65
65
|
/** Override the request timeout when the command is sent as times request. Default are 10s. */
|
|
66
|
-
|
|
66
|
+
timedRequestTimeout?: Duration;
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* Expected processing time on the device side for this command.
|
|
70
70
|
* useExtendedFailSafeMessageResponseTimeout is ignored if this value is set.
|
|
71
71
|
*/
|
|
72
|
-
|
|
72
|
+
expectedProcessingTime?: Duration;
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
75
|
* Use the extended fail-safe message response timeout of 30 seconds. Use this for all commands
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { ImplementationError } from "#general";
|
|
7
|
+
import { Duration, ImplementationError } from "#general";
|
|
8
8
|
import { ClusterId, EndpointNumber, Event, EventId, EventNumber } from "#types";
|
|
9
9
|
import { DecodedEventData } from "../../interaction/EventDataDecoder.js";
|
|
10
10
|
import { InteractionClient } from "../../interaction/InteractionClient.js";
|
|
@@ -58,8 +58,8 @@ export class EventClient<T> {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
async subscribe(
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
minIntervalFloor: Duration,
|
|
62
|
+
maxIntervalCeiling: Duration,
|
|
63
63
|
isUrgent = true,
|
|
64
64
|
minimumEventNumber?: EventNumber,
|
|
65
65
|
isFabricFiltered?: boolean,
|
|
@@ -71,8 +71,8 @@ export class EventClient<T> {
|
|
|
71
71
|
endpointId: this.endpointId,
|
|
72
72
|
clusterId: this.clusterId,
|
|
73
73
|
event: this.event,
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
minIntervalFloor,
|
|
75
|
+
maxIntervalCeiling,
|
|
76
76
|
isUrgent,
|
|
77
77
|
minimumEventNumber,
|
|
78
78
|
isFabricFiltered,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
AsyncObservable,
|
|
9
9
|
Bytes,
|
|
10
10
|
Construction,
|
|
11
|
+
Duration,
|
|
11
12
|
Logger,
|
|
12
13
|
MatterFlowError,
|
|
13
14
|
UnexpectedDataError,
|
|
@@ -46,7 +47,7 @@ export abstract class FailsafeContext {
|
|
|
46
47
|
#commissioned = AsyncObservable<[], void>();
|
|
47
48
|
|
|
48
49
|
constructor(options: FailsafeContext.Options) {
|
|
49
|
-
const {
|
|
50
|
+
const { expiryLength, associatedFabric, maxCumulativeFailsafe } = options;
|
|
50
51
|
|
|
51
52
|
this.#sessions = options.sessions;
|
|
52
53
|
this.#fabrics = options.fabrics;
|
|
@@ -61,21 +62,18 @@ export abstract class FailsafeContext {
|
|
|
61
62
|
|
|
62
63
|
// If ExpiryLengthSeconds is non-zero and the fail-safe timer was not currently armed, then the fail-safe
|
|
63
64
|
// timer SHALL be armed for that duration.
|
|
64
|
-
this.#failsafe = new FailsafeTimer(
|
|
65
|
-
|
|
66
|
-
expiryLengthSeconds,
|
|
67
|
-
maxCumulativeFailsafeSeconds,
|
|
68
|
-
() => this.#failSafeExpired(),
|
|
65
|
+
this.#failsafe = new FailsafeTimer(associatedFabric, expiryLength, maxCumulativeFailsafe, () =>
|
|
66
|
+
this.#failSafeExpired(),
|
|
69
67
|
);
|
|
70
|
-
logger.debug(`Arm failSafe timer for ${
|
|
68
|
+
logger.debug(`Arm failSafe timer for ${Duration.format(expiryLength)}`);
|
|
71
69
|
});
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
async extend(fabric: Fabric | undefined,
|
|
72
|
+
async extend(fabric: Fabric | undefined, expiryLength: Duration) {
|
|
75
73
|
await this.#construction;
|
|
76
|
-
await this.#failsafe?.reArm(fabric,
|
|
77
|
-
if (
|
|
78
|
-
logger.debug(`Extend failSafe timer for ${
|
|
74
|
+
await this.#failsafe?.reArm(fabric, expiryLength);
|
|
75
|
+
if (expiryLength > 0) {
|
|
76
|
+
logger.debug(`Extend failSafe timer for ${Duration.format(expiryLength)}`);
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
79
|
|
|
@@ -341,8 +339,8 @@ export namespace FailsafeContext {
|
|
|
341
339
|
export interface Options {
|
|
342
340
|
sessions: SessionManager;
|
|
343
341
|
fabrics: FabricManager;
|
|
344
|
-
|
|
345
|
-
|
|
342
|
+
expiryLength: Duration;
|
|
343
|
+
maxCumulativeFailsafe: Duration;
|
|
346
344
|
associatedFabric: Fabric | undefined;
|
|
347
345
|
}
|
|
348
346
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Logger, MatterFlowError, Time, Timer } from "#general";
|
|
7
|
+
import { Duration, Logger, MatterFlowError, Time, Timer } from "#general";
|
|
8
8
|
import { Fabric } from "../fabric/Fabric.js";
|
|
9
9
|
import type { FailsafeContext } from "./FailsafeContext.js";
|
|
10
10
|
|
|
@@ -22,16 +22,14 @@ export class FailsafeTimer {
|
|
|
22
22
|
|
|
23
23
|
constructor(
|
|
24
24
|
public associatedFabric: Fabric | undefined,
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
expiryLength: Duration,
|
|
26
|
+
maxCumulativeFailsafe: Duration,
|
|
27
27
|
expiryCallback: () => Promise<void>,
|
|
28
28
|
) {
|
|
29
29
|
this.#expiryCallback = expiryCallback;
|
|
30
|
-
this.#failsafeTimer = this.#startFailsafeTimer(
|
|
31
|
-
this.#maxCumulativeFailsafeTimer = Time.getTimer(
|
|
32
|
-
|
|
33
|
-
maxCumulativeFailsafeSeconds * 1000,
|
|
34
|
-
() => this.expire(),
|
|
30
|
+
this.#failsafeTimer = this.#startFailsafeTimer(expiryLength);
|
|
31
|
+
this.#maxCumulativeFailsafeTimer = Time.getTimer("Max cumulative failsafe", maxCumulativeFailsafe, () =>
|
|
32
|
+
this.expire(),
|
|
35
33
|
).start();
|
|
36
34
|
}
|
|
37
35
|
|
|
@@ -45,7 +43,7 @@ export class FailsafeTimer {
|
|
|
45
43
|
}
|
|
46
44
|
|
|
47
45
|
/** Handle "Re-Arming" an existing FailSafe context to extend the timer, expire or fail if not allowed. */
|
|
48
|
-
async reArm(associatedFabric: Fabric | undefined,
|
|
46
|
+
async reArm(associatedFabric: Fabric | undefined, expiry: Duration) {
|
|
49
47
|
if (!this.#failsafeTimer.isRunning) {
|
|
50
48
|
throw new MatterFlowError("FailSafe already expired.");
|
|
51
49
|
}
|
|
@@ -58,7 +56,7 @@ export class FailsafeTimer {
|
|
|
58
56
|
|
|
59
57
|
this.#failsafeTimer.stop();
|
|
60
58
|
|
|
61
|
-
if (
|
|
59
|
+
if (expiry === 0) {
|
|
62
60
|
// If ExpiryLengthSeconds is 0 and the fail-safe timer was already armed and the accessing fabric matches
|
|
63
61
|
// the Fabric currently associated with the fail-safe context, then the fail-safe timer SHALL be
|
|
64
62
|
// immediately expired (see further below for side-effects of expiration).
|
|
@@ -67,7 +65,7 @@ export class FailsafeTimer {
|
|
|
67
65
|
// If ExpiryLengthSeconds is non-zero and the fail-safe timer was currently armed, and the accessing Fabric
|
|
68
66
|
// matches the fail-safe context’s associated Fabric, then the fail-safe timer SHALL be re- armed to expire
|
|
69
67
|
// in ExpiryLengthSeconds.
|
|
70
|
-
this.#failsafeTimer = this.#startFailsafeTimer(
|
|
68
|
+
this.#failsafeTimer = this.#startFailsafeTimer(expiry);
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
|
|
@@ -83,8 +81,8 @@ export class FailsafeTimer {
|
|
|
83
81
|
this.#maxCumulativeFailsafeTimer.stop();
|
|
84
82
|
}
|
|
85
83
|
|
|
86
|
-
#startFailsafeTimer(
|
|
87
|
-
return Time.getTimer("Failsafe expiration",
|
|
84
|
+
#startFailsafeTimer(expiry: Duration) {
|
|
85
|
+
return Time.getTimer("Failsafe expiration", expiry, () =>
|
|
88
86
|
this.expire().catch(e => logger.error("Error during failsafe expiration", e)),
|
|
89
87
|
).start();
|
|
90
88
|
}
|
package/src/common/Scanner.ts
CHANGED
|
@@ -4,7 +4,16 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
BasicSet,
|
|
9
|
+
ChannelType,
|
|
10
|
+
Duration,
|
|
11
|
+
Environment,
|
|
12
|
+
Environmental,
|
|
13
|
+
Lifespan,
|
|
14
|
+
ServerAddress,
|
|
15
|
+
ServerAddressIp,
|
|
16
|
+
} from "#general";
|
|
8
17
|
import { DiscoveryCapabilitiesBitmap, NodeId, TypeFromPartialBitSchema, VendorId } from "#types";
|
|
9
18
|
import { Fabric } from "../fabric/Fabric.js";
|
|
10
19
|
|
|
@@ -32,13 +41,13 @@ export type DiscoveryData = {
|
|
|
32
41
|
PI?: string;
|
|
33
42
|
|
|
34
43
|
/** Sleep Idle Interval */
|
|
35
|
-
SII?:
|
|
44
|
+
SII?: Duration;
|
|
36
45
|
|
|
37
46
|
/** Sleep Active Interval */
|
|
38
|
-
SAI?:
|
|
47
|
+
SAI?: Duration;
|
|
39
48
|
|
|
40
49
|
/** Session active threshold */
|
|
41
|
-
SAT?:
|
|
50
|
+
SAT?: Duration;
|
|
42
51
|
|
|
43
52
|
/** TCP supported */
|
|
44
53
|
T?: number; // SupportedTransportsBitmap but comes in as number, so converted on usage
|
|
@@ -116,7 +125,7 @@ export interface Scanner {
|
|
|
116
125
|
findOperationalDevice(
|
|
117
126
|
fabric: Fabric,
|
|
118
127
|
nodeId: NodeId,
|
|
119
|
-
|
|
128
|
+
timeout?: Duration,
|
|
120
129
|
ignoreExistingRecords?: boolean,
|
|
121
130
|
): Promise<OperationalDevice | undefined>;
|
|
122
131
|
|
|
@@ -132,7 +141,7 @@ export interface Scanner {
|
|
|
132
141
|
*/
|
|
133
142
|
findCommissionableDevices(
|
|
134
143
|
identifier: CommissionableDeviceIdentifiers,
|
|
135
|
-
|
|
144
|
+
timeout?: Duration,
|
|
136
145
|
ignoreExistingRecords?: boolean,
|
|
137
146
|
): Promise<CommissionableDevice[]>;
|
|
138
147
|
|
|
@@ -144,7 +153,7 @@ export interface Scanner {
|
|
|
144
153
|
findCommissionableDevicesContinuously(
|
|
145
154
|
identifier: CommissionableDeviceIdentifiers,
|
|
146
155
|
callback: (device: CommissionableDevice) => void,
|
|
147
|
-
|
|
156
|
+
timeout?: Duration,
|
|
148
157
|
cancelSignal?: Promise<void>,
|
|
149
158
|
): Promise<CommissionableDevice[]>;
|
|
150
159
|
|
|
@@ -277,7 +277,7 @@ export class OccurrenceManager {
|
|
|
277
277
|
|
|
278
278
|
add(occurrence: Occurrence): MaybePromise<NumberedOccurrence> {
|
|
279
279
|
return MaybePromise.then(this.#store.add(occurrence), entry => {
|
|
280
|
-
logger.debug(`Recorded event #${entry.number}
|
|
280
|
+
logger.debug(`Recorded event #${entry.number}`, Diagnostic.dict(occurrence));
|
|
281
281
|
this.#occurrences.push(entry);
|
|
282
282
|
if (this.#occurrences.length > this.#bufferConfig.maxEventAllowance) {
|
|
283
283
|
this.#startCull();
|
|
@@ -96,7 +96,7 @@ export class FabricGroups {
|
|
|
96
96
|
|
|
97
97
|
/*
|
|
98
98
|
TODO for Controller to generate new epochs
|
|
99
|
-
addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs
|
|
99
|
+
addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs) {
|
|
100
100
|
// TODO for Controller to generate new epochs
|
|
101
101
|
const epochKey = Crypto.getRandomData(CRYPTO_SYMMETRIC_KEY_LENGTH);
|
|
102
102
|
const operationalEpochKey = Crypto.hkdf(epochKey, this.#fabric.operationalId, GROUP_SECURITY_INFO);
|
package/src/groups/KeySets.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type { GroupKeyManagement } from "#clusters/group-key-management";
|
|
8
|
-
import { BasicSet, Bytes, Crypto, DataReader, ImplementationError, MatterFlowError, Time } from "#general";
|
|
8
|
+
import { BasicSet, Bytes, Crypto, DataReader, ImplementationError, MatterFlowError, Time, Timestamp } from "#general";
|
|
9
9
|
|
|
10
10
|
export const GROUP_KEY_INFO = Bytes.fromString("GroupKeyHash");
|
|
11
11
|
|
|
@@ -44,7 +44,7 @@ export class KeySets<T extends OperationalKeySet> extends BasicSet<T> {
|
|
|
44
44
|
if (groupKeySet === undefined) {
|
|
45
45
|
throw new MatterFlowError(`GroupKeySet for groupKeySet ${keySetId} not found.`);
|
|
46
46
|
}
|
|
47
|
-
const operationalKeys = Array<{ key: Bytes; sessionId?: number; startTime:
|
|
47
|
+
const operationalKeys = Array<{ key: Bytes; sessionId?: number; startTime: Timestamp }>();
|
|
48
48
|
const {
|
|
49
49
|
operationalEpochKey0,
|
|
50
50
|
groupSessionId0,
|
|
@@ -63,13 +63,21 @@ export class KeySets<T extends OperationalKeySet> extends BasicSet<T> {
|
|
|
63
63
|
operationalKeys.push({
|
|
64
64
|
key: operationalEpochKey0,
|
|
65
65
|
sessionId: groupSessionId0 !== null ? groupSessionId0 : undefined,
|
|
66
|
-
startTime: epochStartTime0,
|
|
66
|
+
startTime: Timestamp.fromMicroseconds(epochStartTime0),
|
|
67
67
|
});
|
|
68
68
|
if (operationalEpochKey1 !== null && groupSessionId1 !== null && epochStartTime1 !== null) {
|
|
69
|
-
operationalKeys.push({
|
|
69
|
+
operationalKeys.push({
|
|
70
|
+
key: operationalEpochKey1,
|
|
71
|
+
sessionId: groupSessionId1,
|
|
72
|
+
startTime: Timestamp.fromMicroseconds(epochStartTime1),
|
|
73
|
+
});
|
|
70
74
|
}
|
|
71
75
|
if (operationalEpochKey2 !== null && groupSessionId2 !== null && epochStartTime2 !== null) {
|
|
72
|
-
operationalKeys.push({
|
|
76
|
+
operationalKeys.push({
|
|
77
|
+
key: operationalEpochKey2,
|
|
78
|
+
sessionId: groupSessionId2,
|
|
79
|
+
startTime: Timestamp.fromMicroseconds(epochStartTime2),
|
|
80
|
+
});
|
|
73
81
|
}
|
|
74
82
|
return operationalKeys;
|
|
75
83
|
}
|
|
@@ -96,7 +104,7 @@ export class KeySets<T extends OperationalKeySet> extends BasicSet<T> {
|
|
|
96
104
|
// epoch key (specifically, the epoch key with the latest start time that is not in the future).
|
|
97
105
|
// TODO Nodes that cannot reliably keep track of time calculate the current epoch key as described in
|
|
98
106
|
// Section 4.17.3.4, “Epoch Key Rotation without Time Synchronization”.
|
|
99
|
-
const now = Time.nowUs
|
|
107
|
+
const now = Time.nowUs;
|
|
100
108
|
const relevantKeys = operationalKeys.filter(({ startTime }) => startTime <= now);
|
|
101
109
|
if (relevantKeys.length === 0) {
|
|
102
110
|
throw new ImplementationError(
|