@matter/protocol 0.11.0-alpha.0-20241005-e3e4e4a7a
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/LICENSE +201 -0
- package/dist/cjs/MatterDevice.d.ts +79 -0
- package/dist/cjs/MatterDevice.d.ts.map +1 -0
- package/dist/cjs/MatterDevice.js +253 -0
- package/dist/cjs/MatterDevice.js.map +6 -0
- package/dist/cjs/ble/Ble.d.ts +29 -0
- package/dist/cjs/ble/Ble.d.ts.map +1 -0
- package/dist/cjs/ble/Ble.js +50 -0
- package/dist/cjs/ble/Ble.js.map +6 -0
- package/dist/cjs/ble/BleConsts.d.ts +32 -0
- package/dist/cjs/ble/BleConsts.d.ts.map +1 -0
- package/dist/cjs/ble/BleConsts.js +53 -0
- package/dist/cjs/ble/BleConsts.js.map +6 -0
- package/dist/cjs/ble/BtpSessionHandler.d.ts +87 -0
- package/dist/cjs/ble/BtpSessionHandler.d.ts.map +1 -0
- package/dist/cjs/ble/BtpSessionHandler.js +432 -0
- package/dist/cjs/ble/BtpSessionHandler.js.map +6 -0
- package/dist/cjs/ble/index.d.ts +9 -0
- package/dist/cjs/ble/index.d.ts.map +1 -0
- package/dist/cjs/ble/index.js +26 -0
- package/dist/cjs/ble/index.js.map +6 -0
- package/dist/cjs/certificate/AttestationCertificateManager.d.ts +28 -0
- package/dist/cjs/certificate/AttestationCertificateManager.d.ts.map +1 -0
- package/dist/cjs/certificate/AttestationCertificateManager.js +171 -0
- package/dist/cjs/certificate/AttestationCertificateManager.js.map +6 -0
- package/dist/cjs/certificate/CertificateManager.d.ts +575 -0
- package/dist/cjs/certificate/CertificateManager.d.ts.map +1 -0
- package/dist/cjs/certificate/CertificateManager.js +810 -0
- package/dist/cjs/certificate/CertificateManager.js.map +6 -0
- package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +5 -0
- package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +1 -0
- package/dist/cjs/certificate/CertificationDeclarationManager.js +54 -0
- package/dist/cjs/certificate/CertificationDeclarationManager.js.map +6 -0
- package/dist/cjs/certificate/ChipPAAuthorities.d.ts +14 -0
- package/dist/cjs/certificate/ChipPAAuthorities.d.ts.map +1 -0
- package/dist/cjs/certificate/ChipPAAuthorities.js +57 -0
- package/dist/cjs/certificate/ChipPAAuthorities.js.map +6 -0
- package/dist/cjs/certificate/DeviceCertification.d.ts +30 -0
- package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -0
- package/dist/cjs/certificate/DeviceCertification.js +103 -0
- package/dist/cjs/certificate/DeviceCertification.js.map +6 -0
- package/dist/cjs/certificate/RootCertificateManager.d.ts +33 -0
- package/dist/cjs/certificate/RootCertificateManager.d.ts.map +1 -0
- package/dist/cjs/certificate/RootCertificateManager.js +142 -0
- package/dist/cjs/certificate/RootCertificateManager.js.map +6 -0
- package/dist/cjs/certificate/index.d.ts +12 -0
- package/dist/cjs/certificate/index.d.ts.map +1 -0
- package/dist/cjs/certificate/index.js +29 -0
- package/dist/cjs/certificate/index.js.map +6 -0
- package/dist/cjs/cluster/client/AttributeClient.d.ts +61 -0
- package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -0
- package/dist/cjs/cluster/client/AttributeClient.js +177 -0
- package/dist/cjs/cluster/client/AttributeClient.js.map +6 -0
- package/dist/cjs/cluster/client/ClusterClient.d.ts +10 -0
- package/dist/cjs/cluster/client/ClusterClient.d.ts.map +1 -0
- package/dist/cjs/cluster/client/ClusterClient.js +281 -0
- package/dist/cjs/cluster/client/ClusterClient.js.map +6 -0
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +171 -0
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -0
- package/dist/cjs/cluster/client/ClusterClientTypes.js +22 -0
- package/dist/cjs/cluster/client/ClusterClientTypes.js.map +6 -0
- package/dist/cjs/cluster/client/EventClient.d.ts +41 -0
- package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -0
- package/dist/cjs/cluster/client/EventClient.js +94 -0
- package/dist/cjs/cluster/client/EventClient.js.map +6 -0
- package/dist/cjs/cluster/client/index.d.ts +10 -0
- package/dist/cjs/cluster/client/index.d.ts.map +1 -0
- package/dist/cjs/cluster/client/index.js +27 -0
- package/dist/cjs/cluster/client/index.js.map +6 -0
- package/dist/cjs/cluster/index.d.ts +8 -0
- package/dist/cjs/cluster/index.d.ts.map +1 -0
- package/dist/cjs/cluster/index.js +25 -0
- package/dist/cjs/cluster/index.js.map +6 -0
- package/dist/cjs/cluster/server/AttributeServer.d.ts +307 -0
- package/dist/cjs/cluster/server/AttributeServer.d.ts.map +1 -0
- package/dist/cjs/cluster/server/AttributeServer.js +734 -0
- package/dist/cjs/cluster/server/AttributeServer.js.map +6 -0
- package/dist/cjs/cluster/server/ClusterDatasource.d.ts +16 -0
- package/dist/cjs/cluster/server/ClusterDatasource.d.ts.map +1 -0
- package/dist/cjs/cluster/server/ClusterDatasource.js +22 -0
- package/dist/cjs/cluster/server/ClusterDatasource.js.map +6 -0
- package/dist/cjs/cluster/server/ClusterServer.d.ts +40 -0
- package/dist/cjs/cluster/server/ClusterServer.d.ts.map +1 -0
- package/dist/cjs/cluster/server/ClusterServer.js +22 -0
- package/dist/cjs/cluster/server/ClusterServer.js.map +6 -0
- package/dist/cjs/cluster/server/CommandServer.d.ts +34 -0
- package/dist/cjs/cluster/server/CommandServer.d.ts.map +1 -0
- package/dist/cjs/cluster/server/CommandServer.js +76 -0
- package/dist/cjs/cluster/server/CommandServer.js.map +6 -0
- package/dist/cjs/cluster/server/EventServer.d.ts +41 -0
- package/dist/cjs/cluster/server/EventServer.d.ts.map +1 -0
- package/dist/cjs/cluster/server/EventServer.js +149 -0
- package/dist/cjs/cluster/server/EventServer.js.map +6 -0
- package/dist/cjs/cluster/server/index.d.ts +11 -0
- package/dist/cjs/cluster/server/index.d.ts.map +1 -0
- package/dist/cjs/cluster/server/index.js +28 -0
- package/dist/cjs/cluster/server/index.js.map +6 -0
- package/dist/cjs/codec/BtpCodec.d.ts +78 -0
- package/dist/cjs/codec/BtpCodec.d.ts.map +1 -0
- package/dist/cjs/codec/BtpCodec.js +254 -0
- package/dist/cjs/codec/BtpCodec.js.map +6 -0
- package/dist/cjs/codec/MessageCodec.d.ts +63 -0
- package/dist/cjs/codec/MessageCodec.d.ts.map +1 -0
- package/dist/cjs/codec/MessageCodec.js +220 -0
- package/dist/cjs/codec/MessageCodec.js.map +6 -0
- package/dist/cjs/codec/index.d.ts +9 -0
- package/dist/cjs/codec/index.d.ts.map +1 -0
- package/dist/cjs/codec/index.js +36 -0
- package/dist/cjs/codec/index.js.map +6 -0
- package/dist/cjs/common/FailsafeContext.d.ts +79 -0
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -0
- package/dist/cjs/common/FailsafeContext.js +237 -0
- package/dist/cjs/common/FailsafeContext.js.map +6 -0
- package/dist/cjs/common/FailsafeTimer.d.ts +25 -0
- package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -0
- package/dist/cjs/common/FailsafeTimer.js +91 -0
- package/dist/cjs/common/FailsafeTimer.js.map +6 -0
- package/dist/cjs/common/InstanceBroadcaster.d.ts +273 -0
- package/dist/cjs/common/InstanceBroadcaster.d.ts.map +1 -0
- package/dist/cjs/common/InstanceBroadcaster.js +139 -0
- package/dist/cjs/common/InstanceBroadcaster.js.map +6 -0
- package/dist/cjs/common/OperationalCredentialsTypes.d.ts +21 -0
- package/dist/cjs/common/OperationalCredentialsTypes.d.ts.map +1 -0
- package/dist/cjs/common/OperationalCredentialsTypes.js +45 -0
- package/dist/cjs/common/OperationalCredentialsTypes.js.map +6 -0
- package/dist/cjs/common/Scanner.d.ts +121 -0
- package/dist/cjs/common/Scanner.d.ts.map +1 -0
- package/dist/cjs/common/Scanner.js +51 -0
- package/dist/cjs/common/Scanner.js.map +6 -0
- package/dist/cjs/common/index.d.ts +12 -0
- package/dist/cjs/common/index.d.ts.map +1 -0
- package/dist/cjs/common/index.js +29 -0
- package/dist/cjs/common/index.js.map +6 -0
- package/dist/cjs/endpoint/EndpointInterface.d.ts +37 -0
- package/dist/cjs/endpoint/EndpointInterface.d.ts.map +1 -0
- package/dist/cjs/endpoint/EndpointInterface.js +22 -0
- package/dist/cjs/endpoint/EndpointInterface.js.map +6 -0
- package/dist/cjs/endpoint/EndpointStructureLogger.d.ts +31 -0
- package/dist/cjs/endpoint/EndpointStructureLogger.d.ts.map +1 -0
- package/dist/cjs/endpoint/EndpointStructureLogger.js +236 -0
- package/dist/cjs/endpoint/EndpointStructureLogger.js.map +6 -0
- package/dist/cjs/endpoint/index.d.ts +8 -0
- package/dist/cjs/endpoint/index.d.ts.map +1 -0
- package/dist/cjs/endpoint/index.js +25 -0
- package/dist/cjs/endpoint/index.js.map +6 -0
- package/dist/cjs/fabric/Fabric.d.ts +121 -0
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -0
- package/dist/cjs/fabric/Fabric.js +427 -0
- package/dist/cjs/fabric/Fabric.js.map +6 -0
- package/dist/cjs/fabric/FabricManager.d.ts +44 -0
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -0
- package/dist/cjs/fabric/FabricManager.js +209 -0
- package/dist/cjs/fabric/FabricManager.js.map +6 -0
- package/dist/cjs/fabric/index.d.ts +8 -0
- package/dist/cjs/fabric/index.d.ts.map +1 -0
- package/dist/cjs/fabric/index.js +25 -0
- package/dist/cjs/fabric/index.js.map +6 -0
- package/dist/cjs/index.d.ts +20 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/interaction/AccessControlManager.d.ts +49 -0
- package/dist/cjs/interaction/AccessControlManager.d.ts.map +1 -0
- package/dist/cjs/interaction/AccessControlManager.js +248 -0
- package/dist/cjs/interaction/AccessControlManager.js.map +6 -0
- package/dist/cjs/interaction/AttributeDataDecoder.d.ts +52 -0
- package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -0
- package/dist/cjs/interaction/AttributeDataDecoder.js +185 -0
- package/dist/cjs/interaction/AttributeDataDecoder.js.map +6 -0
- package/dist/cjs/interaction/AttributeDataEncoder.d.ts +71 -0
- package/dist/cjs/interaction/AttributeDataEncoder.d.ts.map +1 -0
- package/dist/cjs/interaction/AttributeDataEncoder.js +190 -0
- package/dist/cjs/interaction/AttributeDataEncoder.js.map +6 -0
- package/dist/cjs/interaction/EventDataDecoder.d.ts +30 -0
- package/dist/cjs/interaction/EventDataDecoder.d.ts.map +1 -0
- package/dist/cjs/interaction/EventDataDecoder.js +103 -0
- package/dist/cjs/interaction/EventDataDecoder.js.map +6 -0
- package/dist/cjs/interaction/EventHandler.d.ts +42 -0
- package/dist/cjs/interaction/EventHandler.d.ts.map +1 -0
- package/dist/cjs/interaction/EventHandler.js +112 -0
- package/dist/cjs/interaction/EventHandler.js.map +6 -0
- package/dist/cjs/interaction/InteractionClient.d.ts +294 -0
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -0
- package/dist/cjs/interaction/InteractionClient.js +829 -0
- package/dist/cjs/interaction/InteractionClient.js.map +6 -0
- package/dist/cjs/interaction/InteractionEndpointStructure.d.ts +59 -0
- package/dist/cjs/interaction/InteractionEndpointStructure.d.ts.map +1 -0
- package/dist/cjs/interaction/InteractionEndpointStructure.js +341 -0
- package/dist/cjs/interaction/InteractionEndpointStructure.js.map +6 -0
- package/dist/cjs/interaction/InteractionMessenger.d.ts +315 -0
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -0
- package/dist/cjs/interaction/InteractionMessenger.js +484 -0
- package/dist/cjs/interaction/InteractionMessenger.js.map +6 -0
- package/dist/cjs/interaction/InteractionServer.d.ts +97 -0
- package/dist/cjs/interaction/InteractionServer.d.ts.map +1 -0
- package/dist/cjs/interaction/InteractionServer.js +1026 -0
- package/dist/cjs/interaction/InteractionServer.js.map +6 -0
- package/dist/cjs/interaction/ServerSubscription.d.ts +121 -0
- package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -0
- package/dist/cjs/interaction/ServerSubscription.js +672 -0
- package/dist/cjs/interaction/ServerSubscription.js.map +6 -0
- package/dist/cjs/interaction/Subscription.d.ts +44 -0
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -0
- package/dist/cjs/interaction/Subscription.js +85 -0
- package/dist/cjs/interaction/Subscription.js.map +6 -0
- package/dist/cjs/interaction/SubscriptionOptions.d.ts +43 -0
- package/dist/cjs/interaction/SubscriptionOptions.d.ts.map +1 -0
- package/dist/cjs/interaction/SubscriptionOptions.js +46 -0
- package/dist/cjs/interaction/SubscriptionOptions.js.map +6 -0
- package/dist/cjs/interaction/index.d.ts +17 -0
- package/dist/cjs/interaction/index.d.ts.map +1 -0
- package/dist/cjs/interaction/index.js +34 -0
- package/dist/cjs/interaction/index.js.map +6 -0
- package/dist/cjs/mdns/MdnsBroadcaster.d.ts +34 -0
- package/dist/cjs/mdns/MdnsBroadcaster.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsBroadcaster.js +338 -0
- package/dist/cjs/mdns/MdnsBroadcaster.js.map +6 -0
- package/dist/cjs/mdns/MdnsConsts.d.ts +19 -0
- package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsConsts.js +52 -0
- package/dist/cjs/mdns/MdnsConsts.js.map +6 -0
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts +28 -0
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.js +87 -0
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.js.map +6 -0
- package/dist/cjs/mdns/MdnsScanner.d.ts +79 -0
- package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsScanner.js +842 -0
- package/dist/cjs/mdns/MdnsScanner.js.map +6 -0
- package/dist/cjs/mdns/MdnsServer.d.ts +29 -0
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsServer.js +275 -0
- package/dist/cjs/mdns/MdnsServer.js.map +6 -0
- package/dist/cjs/mdns/MdnsService.d.ts +28 -0
- package/dist/cjs/mdns/MdnsService.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsService.js +95 -0
- package/dist/cjs/mdns/MdnsService.js.map +6 -0
- package/dist/cjs/mdns/index.d.ts +12 -0
- package/dist/cjs/mdns/index.d.ts.map +1 -0
- package/dist/cjs/mdns/index.js +29 -0
- package/dist/cjs/mdns/index.js.map +6 -0
- package/dist/cjs/package.json +10 -0
- package/dist/cjs/peer/ControllerCommissioner.d.ts +82 -0
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -0
- package/dist/cjs/peer/ControllerCommissioner.js +224 -0
- package/dist/cjs/peer/ControllerCommissioner.js.map +6 -0
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts +88 -0
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -0
- package/dist/cjs/peer/ControllerCommissioningFlow.js +849 -0
- package/dist/cjs/peer/ControllerCommissioningFlow.js.map +6 -0
- package/dist/cjs/peer/ControllerDiscovery.d.ts +43 -0
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -0
- package/dist/cjs/peer/ControllerDiscovery.js +192 -0
- package/dist/cjs/peer/ControllerDiscovery.js.map +6 -0
- package/dist/cjs/peer/OperationalPeer.d.ts +28 -0
- package/dist/cjs/peer/OperationalPeer.d.ts.map +1 -0
- package/dist/cjs/peer/OperationalPeer.js +22 -0
- package/dist/cjs/peer/OperationalPeer.js.map +6 -0
- package/dist/cjs/peer/PeerAddress.d.ts +30 -0
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -0
- package/dist/cjs/peer/PeerAddress.js +71 -0
- package/dist/cjs/peer/PeerAddress.js.map +6 -0
- package/dist/cjs/peer/PeerSet.d.ts +98 -0
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -0
- package/dist/cjs/peer/PeerSet.js +500 -0
- package/dist/cjs/peer/PeerSet.js.map +6 -0
- package/dist/cjs/peer/PeerStore.d.ts +17 -0
- package/dist/cjs/peer/PeerStore.d.ts.map +1 -0
- package/dist/cjs/peer/PeerStore.js +31 -0
- package/dist/cjs/peer/PeerStore.js.map +6 -0
- package/dist/cjs/peer/index.d.ts +13 -0
- package/dist/cjs/peer/index.d.ts.map +1 -0
- package/dist/cjs/peer/index.js +30 -0
- package/dist/cjs/peer/index.js.map +6 -0
- package/dist/cjs/protocol/ChannelManager.d.ts +30 -0
- package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -0
- package/dist/cjs/protocol/ChannelManager.js +168 -0
- package/dist/cjs/protocol/ChannelManager.js.map +6 -0
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts +43 -0
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -0
- package/dist/cjs/protocol/DeviceAdvertiser.js +185 -0
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +6 -0
- package/dist/cjs/protocol/DeviceCommissioner.d.ts +49 -0
- package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -0
- package/dist/cjs/protocol/DeviceCommissioner.js +198 -0
- package/dist/cjs/protocol/DeviceCommissioner.js.map +6 -0
- package/dist/cjs/protocol/ExchangeManager.d.ts +73 -0
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -0
- package/dist/cjs/protocol/ExchangeManager.js +407 -0
- package/dist/cjs/protocol/ExchangeManager.js.map +6 -0
- package/dist/cjs/protocol/MessageCounter.d.ts +57 -0
- package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -0
- package/dist/cjs/protocol/MessageCounter.js +104 -0
- package/dist/cjs/protocol/MessageCounter.js.map +6 -0
- package/dist/cjs/protocol/MessageExchange.d.ts +84 -0
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -0
- package/dist/cjs/protocol/MessageExchange.js +508 -0
- package/dist/cjs/protocol/MessageExchange.js.map +6 -0
- package/dist/cjs/protocol/MessageReceptionState.d.ts +65 -0
- package/dist/cjs/protocol/MessageReceptionState.d.ts.map +1 -0
- package/dist/cjs/protocol/MessageReceptionState.js +173 -0
- package/dist/cjs/protocol/MessageReceptionState.js.map +6 -0
- package/dist/cjs/protocol/ProtocolHandler.d.ts +13 -0
- package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -0
- package/dist/cjs/protocol/ProtocolHandler.js +22 -0
- package/dist/cjs/protocol/ProtocolHandler.js.map +6 -0
- package/dist/cjs/protocol/index.d.ts +14 -0
- package/dist/cjs/protocol/index.d.ts.map +1 -0
- package/dist/cjs/protocol/index.js +31 -0
- package/dist/cjs/protocol/index.js.map +6 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +53 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.js +143 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +6 -0
- package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +31 -0
- package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -0
- package/dist/cjs/securechannel/SecureChannelProtocol.js +140 -0
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +6 -0
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts +23 -0
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -0
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js +53 -0
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js.map +6 -0
- package/dist/cjs/securechannel/index.d.ts +9 -0
- package/dist/cjs/securechannel/index.d.ts.map +1 -0
- package/dist/cjs/securechannel/index.js +26 -0
- package/dist/cjs/securechannel/index.js.map +6 -0
- package/dist/cjs/session/InsecureSession.d.ts +38 -0
- package/dist/cjs/session/InsecureSession.d.ts.map +1 -0
- package/dist/cjs/session/InsecureSession.js +95 -0
- package/dist/cjs/session/InsecureSession.js.map +6 -0
- package/dist/cjs/session/SecureSession.d.ts +81 -0
- package/dist/cjs/session/SecureSession.d.ts.map +1 -0
- package/dist/cjs/session/SecureSession.js +291 -0
- package/dist/cjs/session/SecureSession.js.map +6 -0
- package/dist/cjs/session/Session.d.ts +102 -0
- package/dist/cjs/session/Session.d.ts.map +1 -0
- package/dist/cjs/session/Session.js +141 -0
- package/dist/cjs/session/Session.js.map +6 -0
- package/dist/cjs/session/SessionManager.d.ts +132 -0
- package/dist/cjs/session/SessionManager.d.ts.map +1 -0
- package/dist/cjs/session/SessionManager.js +410 -0
- package/dist/cjs/session/SessionManager.js.map +6 -0
- package/dist/cjs/session/case/CaseClient.d.ts +18 -0
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -0
- package/dist/cjs/session/case/CaseClient.js +216 -0
- package/dist/cjs/session/case/CaseClient.js.map +6 -0
- package/dist/cjs/session/case/CaseMessages.d.ts +82 -0
- package/dist/cjs/session/case/CaseMessages.d.ts.map +1 -0
- package/dist/cjs/session/case/CaseMessages.js +97 -0
- package/dist/cjs/session/case/CaseMessages.js.map +6 -0
- package/dist/cjs/session/case/CaseMessenger.d.ts +79 -0
- package/dist/cjs/session/case/CaseMessenger.d.ts.map +1 -0
- package/dist/cjs/session/case/CaseMessenger.js +74 -0
- package/dist/cjs/session/case/CaseMessenger.js.map +6 -0
- package/dist/cjs/session/case/CaseServer.d.ts +18 -0
- package/dist/cjs/session/case/CaseServer.d.ts.map +1 -0
- package/dist/cjs/session/case/CaseServer.js +232 -0
- package/dist/cjs/session/case/CaseServer.js.map +6 -0
- package/dist/cjs/session/index.d.ts +18 -0
- package/dist/cjs/session/index.d.ts.map +1 -0
- package/dist/cjs/session/index.js +35 -0
- package/dist/cjs/session/index.js.map +6 -0
- package/dist/cjs/session/pase/PaseClient.d.ts +18 -0
- package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -0
- package/dist/cjs/session/pase/PaseClient.js +101 -0
- package/dist/cjs/session/pase/PaseClient.js.map +6 -0
- package/dist/cjs/session/pase/PaseMessages.d.ts +85 -0
- package/dist/cjs/session/pase/PaseMessages.d.ts.map +1 -0
- package/dist/cjs/session/pase/PaseMessages.js +88 -0
- package/dist/cjs/session/pase/PaseMessages.js.map +6 -0
- package/dist/cjs/session/pase/PaseMessenger.d.ts +75 -0
- package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -0
- package/dist/cjs/session/pase/PaseMessenger.js +86 -0
- package/dist/cjs/session/pase/PaseMessenger.js.map +6 -0
- package/dist/cjs/session/pase/PaseServer.d.ts +29 -0
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -0
- package/dist/cjs/session/pase/PaseServer.js +159 -0
- package/dist/cjs/session/pase/PaseServer.js.map +6 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/MatterDevice.d.ts +79 -0
- package/dist/esm/MatterDevice.d.ts.map +1 -0
- package/dist/esm/MatterDevice.js +239 -0
- package/dist/esm/MatterDevice.js.map +6 -0
- package/dist/esm/ble/Ble.d.ts +29 -0
- package/dist/esm/ble/Ble.d.ts.map +1 -0
- package/dist/esm/ble/Ble.js +30 -0
- package/dist/esm/ble/Ble.js.map +6 -0
- package/dist/esm/ble/BleConsts.d.ts +32 -0
- package/dist/esm/ble/BleConsts.d.ts.map +1 -0
- package/dist/esm/ble/BleConsts.js +33 -0
- package/dist/esm/ble/BleConsts.js.map +6 -0
- package/dist/esm/ble/BtpSessionHandler.d.ts +87 -0
- package/dist/esm/ble/BtpSessionHandler.d.ts.map +1 -0
- package/dist/esm/ble/BtpSessionHandler.js +419 -0
- package/dist/esm/ble/BtpSessionHandler.js.map +6 -0
- package/dist/esm/ble/index.d.ts +9 -0
- package/dist/esm/ble/index.d.ts.map +1 -0
- package/dist/esm/ble/index.js +9 -0
- package/dist/esm/ble/index.js.map +6 -0
- package/dist/esm/certificate/AttestationCertificateManager.d.ts +28 -0
- package/dist/esm/certificate/AttestationCertificateManager.d.ts.map +1 -0
- package/dist/esm/certificate/AttestationCertificateManager.js +155 -0
- package/dist/esm/certificate/AttestationCertificateManager.js.map +6 -0
- package/dist/esm/certificate/CertificateManager.d.ts +575 -0
- package/dist/esm/certificate/CertificateManager.d.ts.map +1 -0
- package/dist/esm/certificate/CertificateManager.js +837 -0
- package/dist/esm/certificate/CertificateManager.js.map +6 -0
- package/dist/esm/certificate/CertificationDeclarationManager.d.ts +5 -0
- package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +1 -0
- package/dist/esm/certificate/CertificationDeclarationManager.js +34 -0
- package/dist/esm/certificate/CertificationDeclarationManager.js.map +6 -0
- package/dist/esm/certificate/ChipPAAuthorities.d.ts +14 -0
- package/dist/esm/certificate/ChipPAAuthorities.d.ts.map +1 -0
- package/dist/esm/certificate/ChipPAAuthorities.js +37 -0
- package/dist/esm/certificate/ChipPAAuthorities.js.map +6 -0
- package/dist/esm/certificate/DeviceCertification.d.ts +30 -0
- package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -0
- package/dist/esm/certificate/DeviceCertification.js +83 -0
- package/dist/esm/certificate/DeviceCertification.js.map +6 -0
- package/dist/esm/certificate/RootCertificateManager.d.ts +33 -0
- package/dist/esm/certificate/RootCertificateManager.d.ts.map +1 -0
- package/dist/esm/certificate/RootCertificateManager.js +139 -0
- package/dist/esm/certificate/RootCertificateManager.js.map +6 -0
- package/dist/esm/certificate/index.d.ts +12 -0
- package/dist/esm/certificate/index.d.ts.map +1 -0
- package/dist/esm/certificate/index.js +12 -0
- package/dist/esm/certificate/index.js.map +6 -0
- package/dist/esm/cluster/client/AttributeClient.d.ts +61 -0
- package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -0
- package/dist/esm/cluster/client/AttributeClient.js +157 -0
- package/dist/esm/cluster/client/AttributeClient.js.map +6 -0
- package/dist/esm/cluster/client/ClusterClient.d.ts +10 -0
- package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -0
- package/dist/esm/cluster/client/ClusterClient.js +267 -0
- package/dist/esm/cluster/client/ClusterClient.js.map +6 -0
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts +171 -0
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -0
- package/dist/esm/cluster/client/ClusterClientTypes.js +6 -0
- package/dist/esm/cluster/client/ClusterClientTypes.js.map +6 -0
- package/dist/esm/cluster/client/EventClient.d.ts +41 -0
- package/dist/esm/cluster/client/EventClient.d.ts.map +1 -0
- package/dist/esm/cluster/client/EventClient.js +74 -0
- package/dist/esm/cluster/client/EventClient.js.map +6 -0
- package/dist/esm/cluster/client/index.d.ts +10 -0
- package/dist/esm/cluster/client/index.d.ts.map +1 -0
- package/dist/esm/cluster/client/index.js +10 -0
- package/dist/esm/cluster/client/index.js.map +6 -0
- package/dist/esm/cluster/index.d.ts +8 -0
- package/dist/esm/cluster/index.d.ts.map +1 -0
- package/dist/esm/cluster/index.js +8 -0
- package/dist/esm/cluster/index.js.map +6 -0
- package/dist/esm/cluster/server/AttributeServer.d.ts +307 -0
- package/dist/esm/cluster/server/AttributeServer.d.ts.map +1 -0
- package/dist/esm/cluster/server/AttributeServer.js +718 -0
- package/dist/esm/cluster/server/AttributeServer.js.map +6 -0
- package/dist/esm/cluster/server/ClusterDatasource.d.ts +16 -0
- package/dist/esm/cluster/server/ClusterDatasource.d.ts.map +1 -0
- package/dist/esm/cluster/server/ClusterDatasource.js +6 -0
- package/dist/esm/cluster/server/ClusterDatasource.js.map +6 -0
- package/dist/esm/cluster/server/ClusterServer.d.ts +40 -0
- package/dist/esm/cluster/server/ClusterServer.d.ts.map +1 -0
- package/dist/esm/cluster/server/ClusterServer.js +6 -0
- package/dist/esm/cluster/server/ClusterServer.js.map +6 -0
- package/dist/esm/cluster/server/CommandServer.d.ts +34 -0
- package/dist/esm/cluster/server/CommandServer.d.ts.map +1 -0
- package/dist/esm/cluster/server/CommandServer.js +56 -0
- package/dist/esm/cluster/server/CommandServer.js.map +6 -0
- package/dist/esm/cluster/server/EventServer.d.ts +41 -0
- package/dist/esm/cluster/server/EventServer.d.ts.map +1 -0
- package/dist/esm/cluster/server/EventServer.js +137 -0
- package/dist/esm/cluster/server/EventServer.js.map +6 -0
- package/dist/esm/cluster/server/index.d.ts +11 -0
- package/dist/esm/cluster/server/index.d.ts.map +1 -0
- package/dist/esm/cluster/server/index.js +11 -0
- package/dist/esm/cluster/server/index.js.map +6 -0
- package/dist/esm/codec/BtpCodec.d.ts +78 -0
- package/dist/esm/codec/BtpCodec.d.ts.map +1 -0
- package/dist/esm/codec/BtpCodec.js +234 -0
- package/dist/esm/codec/BtpCodec.js.map +6 -0
- package/dist/esm/codec/MessageCodec.d.ts +63 -0
- package/dist/esm/codec/MessageCodec.d.ts.map +1 -0
- package/dist/esm/codec/MessageCodec.js +200 -0
- package/dist/esm/codec/MessageCodec.js.map +6 -0
- package/dist/esm/codec/index.d.ts +9 -0
- package/dist/esm/codec/index.d.ts.map +1 -0
- package/dist/esm/codec/index.js +15 -0
- package/dist/esm/codec/index.js.map +6 -0
- package/dist/esm/common/FailsafeContext.d.ts +79 -0
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -0
- package/dist/esm/common/FailsafeContext.js +217 -0
- package/dist/esm/common/FailsafeContext.js.map +6 -0
- package/dist/esm/common/FailsafeTimer.d.ts +25 -0
- package/dist/esm/common/FailsafeTimer.d.ts.map +1 -0
- package/dist/esm/common/FailsafeTimer.js +71 -0
- package/dist/esm/common/FailsafeTimer.js.map +6 -0
- package/dist/esm/common/InstanceBroadcaster.d.ts +273 -0
- package/dist/esm/common/InstanceBroadcaster.d.ts.map +1 -0
- package/dist/esm/common/InstanceBroadcaster.js +119 -0
- package/dist/esm/common/InstanceBroadcaster.js.map +6 -0
- package/dist/esm/common/OperationalCredentialsTypes.d.ts +21 -0
- package/dist/esm/common/OperationalCredentialsTypes.d.ts.map +1 -0
- package/dist/esm/common/OperationalCredentialsTypes.js +25 -0
- package/dist/esm/common/OperationalCredentialsTypes.js.map +6 -0
- package/dist/esm/common/Scanner.d.ts +121 -0
- package/dist/esm/common/Scanner.d.ts.map +1 -0
- package/dist/esm/common/Scanner.js +31 -0
- package/dist/esm/common/Scanner.js.map +6 -0
- package/dist/esm/common/index.d.ts +12 -0
- package/dist/esm/common/index.d.ts.map +1 -0
- package/dist/esm/common/index.js +12 -0
- package/dist/esm/common/index.js.map +6 -0
- package/dist/esm/endpoint/EndpointInterface.d.ts +37 -0
- package/dist/esm/endpoint/EndpointInterface.d.ts.map +1 -0
- package/dist/esm/endpoint/EndpointInterface.js +6 -0
- package/dist/esm/endpoint/EndpointInterface.js.map +6 -0
- package/dist/esm/endpoint/EndpointStructureLogger.d.ts +31 -0
- package/dist/esm/endpoint/EndpointStructureLogger.d.ts.map +1 -0
- package/dist/esm/endpoint/EndpointStructureLogger.js +216 -0
- package/dist/esm/endpoint/EndpointStructureLogger.js.map +6 -0
- package/dist/esm/endpoint/index.d.ts +8 -0
- package/dist/esm/endpoint/index.d.ts.map +1 -0
- package/dist/esm/endpoint/index.js +8 -0
- package/dist/esm/endpoint/index.js.map +6 -0
- package/dist/esm/fabric/Fabric.d.ts +121 -0
- package/dist/esm/fabric/Fabric.d.ts.map +1 -0
- package/dist/esm/fabric/Fabric.js +422 -0
- package/dist/esm/fabric/Fabric.js.map +6 -0
- package/dist/esm/fabric/FabricManager.d.ts +44 -0
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -0
- package/dist/esm/fabric/FabricManager.js +200 -0
- package/dist/esm/fabric/FabricManager.js.map +6 -0
- package/dist/esm/fabric/index.d.ts +8 -0
- package/dist/esm/fabric/index.d.ts.map +1 -0
- package/dist/esm/fabric/index.js +8 -0
- package/dist/esm/fabric/index.js.map +6 -0
- package/dist/esm/index.d.ts +20 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +20 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/interaction/AccessControlManager.d.ts +49 -0
- package/dist/esm/interaction/AccessControlManager.d.ts.map +1 -0
- package/dist/esm/interaction/AccessControlManager.js +228 -0
- package/dist/esm/interaction/AccessControlManager.js.map +6 -0
- package/dist/esm/interaction/AttributeDataDecoder.d.ts +52 -0
- package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -0
- package/dist/esm/interaction/AttributeDataDecoder.js +171 -0
- package/dist/esm/interaction/AttributeDataDecoder.js.map +6 -0
- package/dist/esm/interaction/AttributeDataEncoder.d.ts +71 -0
- package/dist/esm/interaction/AttributeDataEncoder.d.ts.map +1 -0
- package/dist/esm/interaction/AttributeDataEncoder.js +174 -0
- package/dist/esm/interaction/AttributeDataEncoder.js.map +6 -0
- package/dist/esm/interaction/EventDataDecoder.d.ts +30 -0
- package/dist/esm/interaction/EventDataDecoder.d.ts.map +1 -0
- package/dist/esm/interaction/EventDataDecoder.js +87 -0
- package/dist/esm/interaction/EventDataDecoder.js.map +6 -0
- package/dist/esm/interaction/EventHandler.d.ts +42 -0
- package/dist/esm/interaction/EventHandler.d.ts.map +1 -0
- package/dist/esm/interaction/EventHandler.js +96 -0
- package/dist/esm/interaction/EventHandler.js.map +6 -0
- package/dist/esm/interaction/InteractionClient.d.ts +294 -0
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -0
- package/dist/esm/interaction/InteractionClient.js +827 -0
- package/dist/esm/interaction/InteractionClient.js.map +6 -0
- package/dist/esm/interaction/InteractionEndpointStructure.d.ts +59 -0
- package/dist/esm/interaction/InteractionEndpointStructure.d.ts.map +1 -0
- package/dist/esm/interaction/InteractionEndpointStructure.js +343 -0
- package/dist/esm/interaction/InteractionEndpointStructure.js.map +6 -0
- package/dist/esm/interaction/InteractionMessenger.d.ts +315 -0
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -0
- package/dist/esm/interaction/InteractionMessenger.js +489 -0
- package/dist/esm/interaction/InteractionMessenger.js.map +6 -0
- package/dist/esm/interaction/InteractionServer.d.ts +97 -0
- package/dist/esm/interaction/InteractionServer.d.ts.map +1 -0
- package/dist/esm/interaction/InteractionServer.js +1027 -0
- package/dist/esm/interaction/InteractionServer.js.map +6 -0
- package/dist/esm/interaction/ServerSubscription.d.ts +121 -0
- package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -0
- package/dist/esm/interaction/ServerSubscription.js +669 -0
- package/dist/esm/interaction/ServerSubscription.js.map +6 -0
- package/dist/esm/interaction/Subscription.d.ts +44 -0
- package/dist/esm/interaction/Subscription.d.ts.map +1 -0
- package/dist/esm/interaction/Subscription.js +65 -0
- package/dist/esm/interaction/Subscription.js.map +6 -0
- package/dist/esm/interaction/SubscriptionOptions.d.ts +43 -0
- package/dist/esm/interaction/SubscriptionOptions.d.ts.map +1 -0
- package/dist/esm/interaction/SubscriptionOptions.js +26 -0
- package/dist/esm/interaction/SubscriptionOptions.js.map +6 -0
- package/dist/esm/interaction/index.d.ts +17 -0
- package/dist/esm/interaction/index.d.ts.map +1 -0
- package/dist/esm/interaction/index.js +17 -0
- package/dist/esm/interaction/index.js.map +6 -0
- package/dist/esm/mdns/MdnsBroadcaster.d.ts +34 -0
- package/dist/esm/mdns/MdnsBroadcaster.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsBroadcaster.js +351 -0
- package/dist/esm/mdns/MdnsBroadcaster.js.map +6 -0
- package/dist/esm/mdns/MdnsConsts.d.ts +19 -0
- package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsConsts.js +32 -0
- package/dist/esm/mdns/MdnsConsts.js.map +6 -0
- package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts +28 -0
- package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsInstanceBroadcaster.js +67 -0
- package/dist/esm/mdns/MdnsInstanceBroadcaster.js.map +6 -0
- package/dist/esm/mdns/MdnsScanner.d.ts +79 -0
- package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsScanner.js +847 -0
- package/dist/esm/mdns/MdnsScanner.js.map +6 -0
- package/dist/esm/mdns/MdnsServer.d.ts +29 -0
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsServer.js +266 -0
- package/dist/esm/mdns/MdnsServer.js.map +6 -0
- package/dist/esm/mdns/MdnsService.d.ts +28 -0
- package/dist/esm/mdns/MdnsService.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsService.js +83 -0
- package/dist/esm/mdns/MdnsService.js.map +6 -0
- package/dist/esm/mdns/index.d.ts +12 -0
- package/dist/esm/mdns/index.d.ts.map +1 -0
- package/dist/esm/mdns/index.js +12 -0
- package/dist/esm/mdns/index.js.map +6 -0
- package/dist/esm/package.json +10 -0
- package/dist/esm/peer/ControllerCommissioner.d.ts +82 -0
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -0
- package/dist/esm/peer/ControllerCommissioner.js +211 -0
- package/dist/esm/peer/ControllerCommissioner.js.map +6 -0
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts +88 -0
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -0
- package/dist/esm/peer/ControllerCommissioningFlow.js +832 -0
- package/dist/esm/peer/ControllerCommissioningFlow.js.map +6 -0
- package/dist/esm/peer/ControllerDiscovery.d.ts +43 -0
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -0
- package/dist/esm/peer/ControllerDiscovery.js +172 -0
- package/dist/esm/peer/ControllerDiscovery.js.map +6 -0
- package/dist/esm/peer/OperationalPeer.d.ts +28 -0
- package/dist/esm/peer/OperationalPeer.d.ts.map +1 -0
- package/dist/esm/peer/OperationalPeer.js +6 -0
- package/dist/esm/peer/OperationalPeer.js.map +6 -0
- package/dist/esm/peer/PeerAddress.d.ts +30 -0
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -0
- package/dist/esm/peer/PeerAddress.js +51 -0
- package/dist/esm/peer/PeerAddress.js.map +6 -0
- package/dist/esm/peer/PeerSet.d.ts +98 -0
- package/dist/esm/peer/PeerSet.d.ts.map +1 -0
- package/dist/esm/peer/PeerSet.js +495 -0
- package/dist/esm/peer/PeerSet.js.map +6 -0
- package/dist/esm/peer/PeerStore.d.ts +17 -0
- package/dist/esm/peer/PeerStore.d.ts.map +1 -0
- package/dist/esm/peer/PeerStore.js +11 -0
- package/dist/esm/peer/PeerStore.js.map +6 -0
- package/dist/esm/peer/index.d.ts +13 -0
- package/dist/esm/peer/index.d.ts.map +1 -0
- package/dist/esm/peer/index.js +13 -0
- package/dist/esm/peer/index.js.map +6 -0
- package/dist/esm/protocol/ChannelManager.d.ts +30 -0
- package/dist/esm/protocol/ChannelManager.d.ts.map +1 -0
- package/dist/esm/protocol/ChannelManager.js +148 -0
- package/dist/esm/protocol/ChannelManager.js.map +6 -0
- package/dist/esm/protocol/DeviceAdvertiser.d.ts +43 -0
- package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -0
- package/dist/esm/protocol/DeviceAdvertiser.js +173 -0
- package/dist/esm/protocol/DeviceAdvertiser.js.map +6 -0
- package/dist/esm/protocol/DeviceCommissioner.d.ts +49 -0
- package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -0
- package/dist/esm/protocol/DeviceCommissioner.js +187 -0
- package/dist/esm/protocol/DeviceCommissioner.js.map +6 -0
- package/dist/esm/protocol/ExchangeManager.d.ts +73 -0
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -0
- package/dist/esm/protocol/ExchangeManager.js +398 -0
- package/dist/esm/protocol/ExchangeManager.js.map +6 -0
- package/dist/esm/protocol/MessageCounter.d.ts +57 -0
- package/dist/esm/protocol/MessageCounter.d.ts.map +1 -0
- package/dist/esm/protocol/MessageCounter.js +84 -0
- package/dist/esm/protocol/MessageCounter.js.map +6 -0
- package/dist/esm/protocol/MessageExchange.d.ts +84 -0
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -0
- package/dist/esm/protocol/MessageExchange.js +504 -0
- package/dist/esm/protocol/MessageExchange.js.map +6 -0
- package/dist/esm/protocol/MessageReceptionState.d.ts +65 -0
- package/dist/esm/protocol/MessageReceptionState.d.ts.map +1 -0
- package/dist/esm/protocol/MessageReceptionState.js +153 -0
- package/dist/esm/protocol/MessageReceptionState.js.map +6 -0
- package/dist/esm/protocol/ProtocolHandler.d.ts +13 -0
- package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -0
- package/dist/esm/protocol/ProtocolHandler.js +6 -0
- package/dist/esm/protocol/ProtocolHandler.js.map +6 -0
- package/dist/esm/protocol/index.d.ts +14 -0
- package/dist/esm/protocol/index.d.ts.map +1 -0
- package/dist/esm/protocol/index.js +14 -0
- package/dist/esm/protocol/index.js.map +6 -0
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +53 -0
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -0
- package/dist/esm/securechannel/SecureChannelMessenger.js +128 -0
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +6 -0
- package/dist/esm/securechannel/SecureChannelProtocol.d.ts +31 -0
- package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -0
- package/dist/esm/securechannel/SecureChannelProtocol.js +127 -0
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +6 -0
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts +23 -0
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -0
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js +33 -0
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js.map +6 -0
- package/dist/esm/securechannel/index.d.ts +9 -0
- package/dist/esm/securechannel/index.d.ts.map +1 -0
- package/dist/esm/securechannel/index.js +9 -0
- package/dist/esm/securechannel/index.js.map +6 -0
- package/dist/esm/session/InsecureSession.d.ts +38 -0
- package/dist/esm/session/InsecureSession.d.ts.map +1 -0
- package/dist/esm/session/InsecureSession.js +75 -0
- package/dist/esm/session/InsecureSession.js.map +6 -0
- package/dist/esm/session/SecureSession.d.ts +81 -0
- package/dist/esm/session/SecureSession.d.ts.map +1 -0
- package/dist/esm/session/SecureSession.js +281 -0
- package/dist/esm/session/SecureSession.js.map +6 -0
- package/dist/esm/session/Session.d.ts +102 -0
- package/dist/esm/session/Session.d.ts.map +1 -0
- package/dist/esm/session/Session.js +121 -0
- package/dist/esm/session/Session.js.map +6 -0
- package/dist/esm/session/SessionManager.d.ts +132 -0
- package/dist/esm/session/SessionManager.d.ts.map +1 -0
- package/dist/esm/session/SessionManager.js +411 -0
- package/dist/esm/session/SessionManager.js.map +6 -0
- package/dist/esm/session/case/CaseClient.d.ts +18 -0
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -0
- package/dist/esm/session/case/CaseClient.js +208 -0
- package/dist/esm/session/case/CaseClient.js.map +6 -0
- package/dist/esm/session/case/CaseMessages.d.ts +82 -0
- package/dist/esm/session/case/CaseMessages.d.ts.map +1 -0
- package/dist/esm/session/case/CaseMessages.js +83 -0
- package/dist/esm/session/case/CaseMessages.js.map +6 -0
- package/dist/esm/session/case/CaseMessenger.d.ts +79 -0
- package/dist/esm/session/case/CaseMessenger.d.ts.map +1 -0
- package/dist/esm/session/case/CaseMessenger.js +54 -0
- package/dist/esm/session/case/CaseMessenger.js.map +6 -0
- package/dist/esm/session/case/CaseServer.d.ts +18 -0
- package/dist/esm/session/case/CaseServer.d.ts.map +1 -0
- package/dist/esm/session/case/CaseServer.js +224 -0
- package/dist/esm/session/case/CaseServer.js.map +6 -0
- package/dist/esm/session/index.d.ts +18 -0
- package/dist/esm/session/index.d.ts.map +1 -0
- package/dist/esm/session/index.js +18 -0
- package/dist/esm/session/index.js.map +6 -0
- package/dist/esm/session/pase/PaseClient.d.ts +18 -0
- package/dist/esm/session/pase/PaseClient.d.ts.map +1 -0
- package/dist/esm/session/pase/PaseClient.js +81 -0
- package/dist/esm/session/pase/PaseClient.js.map +6 -0
- package/dist/esm/session/pase/PaseMessages.d.ts +85 -0
- package/dist/esm/session/pase/PaseMessages.d.ts.map +1 -0
- package/dist/esm/session/pase/PaseMessages.js +68 -0
- package/dist/esm/session/pase/PaseMessages.js.map +6 -0
- package/dist/esm/session/pase/PaseMessenger.d.ts +75 -0
- package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -0
- package/dist/esm/session/pase/PaseMessenger.js +75 -0
- package/dist/esm/session/pase/PaseMessenger.js.map +6 -0
- package/dist/esm/session/pase/PaseServer.d.ts +29 -0
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -0
- package/dist/esm/session/pase/PaseServer.js +148 -0
- package/dist/esm/session/pase/PaseServer.js.map +6 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +83 -0
- package/src/MatterDevice.ts +319 -0
- package/src/ble/Ble.ts +40 -0
- package/src/ble/BleConsts.ts +41 -0
- package/src/ble/BtpSessionHandler.ts +490 -0
- package/src/ble/index.ts +9 -0
- package/src/certificate/AttestationCertificateManager.ts +166 -0
- package/src/certificate/CertificateManager.ts +1136 -0
- package/src/certificate/CertificationDeclarationManager.ts +52 -0
- package/src/certificate/ChipPAAuthorities.ts +35 -0
- package/src/certificate/DeviceCertification.ts +116 -0
- package/src/certificate/RootCertificateManager.ts +179 -0
- package/src/certificate/index.ts +12 -0
- package/src/cluster/client/AttributeClient.ts +196 -0
- package/src/cluster/client/ClusterClient.ts +354 -0
- package/src/cluster/client/ClusterClientTypes.ts +257 -0
- package/src/cluster/client/EventClient.ts +110 -0
- package/src/cluster/client/index.ts +10 -0
- package/src/cluster/index.ts +8 -0
- package/src/cluster/server/AttributeServer.ts +986 -0
- package/src/cluster/server/ClusterDatasource.ts +17 -0
- package/src/cluster/server/ClusterServer.ts +46 -0
- package/src/cluster/server/CommandServer.ts +89 -0
- package/src/cluster/server/EventServer.ts +198 -0
- package/src/cluster/server/index.ts +11 -0
- package/src/codec/BtpCodec.ts +333 -0
- package/src/codec/MessageCodec.ts +276 -0
- package/src/codec/index.ts +9 -0
- package/src/common/FailsafeContext.ts +330 -0
- package/src/common/FailsafeTimer.ts +91 -0
- package/src/common/InstanceBroadcaster.ts +220 -0
- package/src/common/OperationalCredentialsTypes.ts +24 -0
- package/src/common/Scanner.ts +188 -0
- package/src/common/index.ts +12 -0
- package/src/endpoint/EndpointInterface.ts +41 -0
- package/src/endpoint/EndpointStructureLogger.ts +277 -0
- package/src/endpoint/index.ts +8 -0
- package/src/fabric/Fabric.ts +528 -0
- package/src/fabric/FabricManager.ts +231 -0
- package/src/fabric/index.ts +8 -0
- package/src/index.ts +20 -0
- package/src/interaction/AccessControlManager.ts +343 -0
- package/src/interaction/AttributeDataDecoder.ts +266 -0
- package/src/interaction/AttributeDataEncoder.ts +268 -0
- package/src/interaction/EventDataDecoder.ts +133 -0
- package/src/interaction/EventHandler.ts +141 -0
- package/src/interaction/InteractionClient.ts +1215 -0
- package/src/interaction/InteractionEndpointStructure.ts +462 -0
- package/src/interaction/InteractionMessenger.ts +592 -0
- package/src/interaction/InteractionServer.ts +1428 -0
- package/src/interaction/ServerSubscription.ts +908 -0
- package/src/interaction/Subscription.ts +89 -0
- package/src/interaction/SubscriptionOptions.ts +49 -0
- package/src/interaction/index.ts +17 -0
- package/src/mdns/MdnsBroadcaster.ts +415 -0
- package/src/mdns/MdnsConsts.ts +24 -0
- package/src/mdns/MdnsInstanceBroadcaster.ts +88 -0
- package/src/mdns/MdnsScanner.ts +1042 -0
- package/src/mdns/MdnsServer.ts +322 -0
- package/src/mdns/MdnsService.ts +102 -0
- package/src/mdns/index.ts +12 -0
- package/src/peer/ControllerCommissioner.ts +372 -0
- package/src/peer/ControllerCommissioningFlow.ts +1127 -0
- package/src/peer/ControllerDiscovery.ts +231 -0
- package/src/peer/OperationalPeer.ts +32 -0
- package/src/peer/PeerAddress.ts +78 -0
- package/src/peer/PeerSet.ts +684 -0
- package/src/peer/PeerStore.ts +19 -0
- package/src/peer/index.ts +13 -0
- package/src/protocol/ChannelManager.ts +168 -0
- package/src/protocol/DeviceAdvertiser.ts +208 -0
- package/src/protocol/DeviceCommissioner.ts +280 -0
- package/src/protocol/ExchangeManager.ts +493 -0
- package/src/protocol/MessageCounter.ts +128 -0
- package/src/protocol/MessageExchange.ts +662 -0
- package/src/protocol/MessageReceptionState.ts +207 -0
- package/src/protocol/ProtocolHandler.ts +14 -0
- package/src/protocol/index.ts +14 -0
- package/src/securechannel/SecureChannelMessenger.ts +166 -0
- package/src/securechannel/SecureChannelProtocol.ts +150 -0
- package/src/securechannel/SecureChannelStatusMessageSchema.ts +40 -0
- package/src/securechannel/index.ts +10 -0
- package/src/session/InsecureSession.ts +96 -0
- package/src/session/SecureSession.ts +349 -0
- package/src/session/Session.ts +188 -0
- package/src/session/SessionManager.ts +559 -0
- package/src/session/case/CaseClient.ts +235 -0
- package/src/session/case/CaseMessages.ts +81 -0
- package/src/session/case/CaseMessenger.ts +57 -0
- package/src/session/case/CaseServer.ts +269 -0
- package/src/session/index.ts +21 -0
- package/src/session/pase/PaseClient.ts +100 -0
- package/src/session/pase/PaseMessages.ts +72 -0
- package/src/session/pase/PaseMessenger.ts +86 -0
- package/src/session/pase/PaseServer.ts +187 -0
- package/src/tsconfig.json +20 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Bytes, DataReader, Diagnostic, Endian, Logger, MatterError, Time } from "#general";
|
|
7
|
+
import { BtpCodec } from "../codec/BtpCodec.js";
|
|
8
|
+
import {
|
|
9
|
+
BLE_MAXIMUM_BTP_MTU,
|
|
10
|
+
BLE_MINIMUM_ATT_MTU,
|
|
11
|
+
BTP_ACK_TIMEOUT_MS,
|
|
12
|
+
BTP_CONN_IDLE_TIMEOUT,
|
|
13
|
+
BTP_MAXIMUM_WINDOW_SIZE,
|
|
14
|
+
BTP_SEND_ACK_TIMEOUT_MS
|
|
15
|
+
} from "./BleConsts.js";
|
|
16
|
+
class BtpMatterError extends MatterError {
|
|
17
|
+
}
|
|
18
|
+
class BtpProtocolError extends BtpMatterError {
|
|
19
|
+
}
|
|
20
|
+
class BtpFlowError extends BtpMatterError {
|
|
21
|
+
}
|
|
22
|
+
const BTP_SUPPORTED_VERSIONS = [4];
|
|
23
|
+
const MAXIMUM_SEQUENCE_NUMBER = 255;
|
|
24
|
+
const logger = Logger.get("BtpSessionHandler");
|
|
25
|
+
class BtpSessionHandler {
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new BTP session handler
|
|
28
|
+
*
|
|
29
|
+
* @param role The role of the BTP session handler
|
|
30
|
+
* @param btpVersion The BTP protocol version to use
|
|
31
|
+
* @param fragmentSize The fragment size to use for the messages
|
|
32
|
+
* @param clientWindowSize The client window size to use
|
|
33
|
+
* @param writeBleCallback Callback to write data to the BLE transport
|
|
34
|
+
* @param disconnectBleCallback Callback to disconnect the BLE transport
|
|
35
|
+
* @param handleMatterMessagePayload Callback to handle a Matter message payload
|
|
36
|
+
*/
|
|
37
|
+
constructor(role, btpVersion, fragmentSize, clientWindowSize, writeBleCallback, disconnectBleCallback, handleMatterMessagePayload) {
|
|
38
|
+
this.role = role;
|
|
39
|
+
this.fragmentSize = fragmentSize;
|
|
40
|
+
this.clientWindowSize = clientWindowSize;
|
|
41
|
+
this.writeBleCallback = writeBleCallback;
|
|
42
|
+
this.disconnectBleCallback = disconnectBleCallback;
|
|
43
|
+
this.handleMatterMessagePayload = handleMatterMessagePayload;
|
|
44
|
+
if (btpVersion !== 4) {
|
|
45
|
+
throw new BtpProtocolError(`Unsupported BTP version ${btpVersion}`);
|
|
46
|
+
}
|
|
47
|
+
if (role === "peripheral") {
|
|
48
|
+
this.ackReceiveTimer.start();
|
|
49
|
+
} else {
|
|
50
|
+
this.sendAckTimer.start();
|
|
51
|
+
this.prevIncomingSequenceNumber = 0;
|
|
52
|
+
this.prevIncomingAckNumber = -1;
|
|
53
|
+
this.sequenceNumber = -1;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
currentIncomingSegmentedMsgLength;
|
|
57
|
+
currentIncomingSegmentedPayload;
|
|
58
|
+
prevIncomingSequenceNumber = 255;
|
|
59
|
+
// Incoming Sequence Number received. Set to 255 to start at 0
|
|
60
|
+
prevIncomingAckNumber = -1;
|
|
61
|
+
// Previous ackNumber received
|
|
62
|
+
ackReceiveTimer = Time.getTimer(
|
|
63
|
+
"BTP ack timeout",
|
|
64
|
+
BTP_ACK_TIMEOUT_MS,
|
|
65
|
+
() => this.btpAckTimeoutTriggered()
|
|
66
|
+
);
|
|
67
|
+
sequenceNumber = 0;
|
|
68
|
+
// Sequence number is set to 0 already for the handshake, next sequence number is 1
|
|
69
|
+
prevAckedSequenceNumber = -1;
|
|
70
|
+
// Previous (outgoing) Acked Sequence Number
|
|
71
|
+
queuedOutgoingMatterMessages = new Array();
|
|
72
|
+
sendInProgress = false;
|
|
73
|
+
sendAckTimer = Time.getTimer(
|
|
74
|
+
"BTP send timeout",
|
|
75
|
+
BTP_SEND_ACK_TIMEOUT_MS,
|
|
76
|
+
() => this.btpSendAckTimeoutTriggered()
|
|
77
|
+
);
|
|
78
|
+
isActive = true;
|
|
79
|
+
idleTimeout = Time.getTimer("Central Device Idle Timer", BTP_CONN_IDLE_TIMEOUT, async () => {
|
|
80
|
+
logger.info("Central Device Connection Idle Timer expired, closing BTP session");
|
|
81
|
+
await this.close();
|
|
82
|
+
});
|
|
83
|
+
/** Factory method to create a new BTPSessionHandler from a received handshake request */
|
|
84
|
+
static async createFromHandshakeRequest(maxDataSize, handshakeRequestPayload, writeBleCallback, disconnectBleCallback, handleMatterMessagePayload) {
|
|
85
|
+
const handshakeRequest = BtpCodec.decodeBtpHandshakeRequest(handshakeRequestPayload);
|
|
86
|
+
const {
|
|
87
|
+
versions,
|
|
88
|
+
attMtu: handshakeMtu,
|
|
89
|
+
// Number excluding 3 header bytes
|
|
90
|
+
clientWindowSize
|
|
91
|
+
} = handshakeRequest;
|
|
92
|
+
logger.debug(`Received BTP handshake request:`, Diagnostic.dict({ maxDataSize, ...handshakeRequest }));
|
|
93
|
+
const version = BTP_SUPPORTED_VERSIONS.find((version2) => versions.includes(version2));
|
|
94
|
+
if (version === void 0) {
|
|
95
|
+
await disconnectBleCallback();
|
|
96
|
+
throw new BtpProtocolError(`No supported BTP version found in ${versions}`);
|
|
97
|
+
}
|
|
98
|
+
let attMtu = BLE_MINIMUM_ATT_MTU;
|
|
99
|
+
if (maxDataSize !== void 0) {
|
|
100
|
+
if (maxDataSize > BLE_MINIMUM_ATT_MTU) {
|
|
101
|
+
if (handshakeMtu <= BLE_MINIMUM_ATT_MTU) {
|
|
102
|
+
attMtu = Math.min(maxDataSize, BLE_MAXIMUM_BTP_MTU);
|
|
103
|
+
} else {
|
|
104
|
+
attMtu = Math.min(handshakeMtu, maxDataSize, BLE_MAXIMUM_BTP_MTU);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const fragmentSize = attMtu;
|
|
109
|
+
const windowSize = Math.min(BTP_MAXIMUM_WINDOW_SIZE, clientWindowSize);
|
|
110
|
+
const handshakeResponse = BtpCodec.encodeBtpHandshakeResponse({
|
|
111
|
+
version,
|
|
112
|
+
attMtu,
|
|
113
|
+
windowSize
|
|
114
|
+
});
|
|
115
|
+
logger.debug(
|
|
116
|
+
`Sending BTP handshake response:`,
|
|
117
|
+
Diagnostic.dict({
|
|
118
|
+
version,
|
|
119
|
+
attMtu,
|
|
120
|
+
windowSize
|
|
121
|
+
})
|
|
122
|
+
);
|
|
123
|
+
const btpSession = new BtpSessionHandler(
|
|
124
|
+
"peripheral",
|
|
125
|
+
version,
|
|
126
|
+
fragmentSize,
|
|
127
|
+
windowSize,
|
|
128
|
+
writeBleCallback,
|
|
129
|
+
disconnectBleCallback,
|
|
130
|
+
handleMatterMessagePayload
|
|
131
|
+
);
|
|
132
|
+
await writeBleCallback(handshakeResponse);
|
|
133
|
+
return btpSession;
|
|
134
|
+
}
|
|
135
|
+
static async createAsCentral(handshakeResponsePayload, writeBleCallback, disconnectBleCallback, handleMatterMessagePayload) {
|
|
136
|
+
const handshakeRequest = BtpCodec.decodeBtpHandshakeResponsePayload(handshakeResponsePayload);
|
|
137
|
+
logger.debug("Handshake request", Diagnostic.dict(handshakeRequest));
|
|
138
|
+
const { version, attMtu: handshakeMtu, windowSize } = handshakeRequest;
|
|
139
|
+
const fragmentSize = Math.min(handshakeMtu, BLE_MAXIMUM_BTP_MTU);
|
|
140
|
+
return new BtpSessionHandler(
|
|
141
|
+
"central",
|
|
142
|
+
version,
|
|
143
|
+
fragmentSize,
|
|
144
|
+
windowSize,
|
|
145
|
+
writeBleCallback,
|
|
146
|
+
disconnectBleCallback,
|
|
147
|
+
handleMatterMessagePayload
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Handle incoming data from the transport layer and hand over completely received matter messages to the
|
|
152
|
+
* ExchangeManager layer
|
|
153
|
+
*
|
|
154
|
+
* @param data ByteArray containing the data
|
|
155
|
+
*/
|
|
156
|
+
async handleIncomingBleData(data) {
|
|
157
|
+
if (!this.isActive) {
|
|
158
|
+
logger.debug(`BTP session is not active, ignoring incoming BLE data`);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
if (data.length > this.fragmentSize) {
|
|
163
|
+
if (data.length > this.fragmentSize + 3) {
|
|
164
|
+
throw new BtpProtocolError(
|
|
165
|
+
`Received data ${data.length} bytes exceeds fragment size of ${this.fragmentSize} bytes`
|
|
166
|
+
);
|
|
167
|
+
} else {
|
|
168
|
+
logger.warn(
|
|
169
|
+
`Received data ${data.length} bytes exceeds fragment size of ${this.fragmentSize} bytes, still accepting`
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const btpPacket = BtpCodec.decodeBtpPacket(data);
|
|
174
|
+
logger.debug(`Received BTP packet: ${Logger.toJSON(btpPacket)}`);
|
|
175
|
+
const {
|
|
176
|
+
header: {
|
|
177
|
+
hasAckNumber,
|
|
178
|
+
isHandshakeRequest,
|
|
179
|
+
hasManagementOpcode,
|
|
180
|
+
isEndingSegment,
|
|
181
|
+
isBeginningSegment,
|
|
182
|
+
isContinuingSegment
|
|
183
|
+
},
|
|
184
|
+
payload: { ackNumber, sequenceNumber, messageLength, segmentPayload }
|
|
185
|
+
} = btpPacket;
|
|
186
|
+
if (isHandshakeRequest || hasManagementOpcode) {
|
|
187
|
+
throw new BtpProtocolError("BTP packet must not be a handshake request or have a management opcode.");
|
|
188
|
+
}
|
|
189
|
+
if (segmentPayload.length === 0 && !hasAckNumber) {
|
|
190
|
+
throw new BtpProtocolError("BTP packet must have a segment payload or an ack number.");
|
|
191
|
+
}
|
|
192
|
+
if (sequenceNumber !== (this.prevIncomingSequenceNumber + 1) % 256) {
|
|
193
|
+
logger.debug(
|
|
194
|
+
`sequenceNumber : ${sequenceNumber}, prevClientSequenceNumber : ${this.prevIncomingSequenceNumber}`
|
|
195
|
+
);
|
|
196
|
+
throw new BtpProtocolError("Expected and actual BTP packets sequence number does not match");
|
|
197
|
+
}
|
|
198
|
+
this.prevIncomingSequenceNumber = sequenceNumber;
|
|
199
|
+
if (!this.sendAckTimer.isRunning) {
|
|
200
|
+
this.sendAckTimer.start();
|
|
201
|
+
}
|
|
202
|
+
if (hasAckNumber && ackNumber !== void 0) {
|
|
203
|
+
if (ackNumber > this.sequenceNumber || this.exceedsWindowSize(this.prevIncomingAckNumber, ackNumber)) {
|
|
204
|
+
throw new BtpProtocolError(
|
|
205
|
+
`Invalid Ack Number, Ack Number: ${ackNumber}, Sequence Number: ${this.sequenceNumber}, Previous AckNumber: ${this.prevIncomingAckNumber}`
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
this.ackReceiveTimer.stop();
|
|
209
|
+
this.prevIncomingAckNumber = ackNumber;
|
|
210
|
+
if (ackNumber !== this.sequenceNumber) {
|
|
211
|
+
this.ackReceiveTimer.start();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (isBeginningSegment) {
|
|
215
|
+
if (this.currentIncomingSegmentedPayload !== void 0) {
|
|
216
|
+
throw new BtpProtocolError(
|
|
217
|
+
`BTP message flow error! New beginning packet was received without previous message being completed.`
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
this.currentIncomingSegmentedMsgLength = messageLength;
|
|
221
|
+
this.currentIncomingSegmentedPayload = segmentPayload;
|
|
222
|
+
} else if (isContinuingSegment || isEndingSegment) {
|
|
223
|
+
if (this.currentIncomingSegmentedPayload === void 0) {
|
|
224
|
+
throw new BtpProtocolError(`BTP Continuing or ending packet received without beginning packet.`);
|
|
225
|
+
}
|
|
226
|
+
if (segmentPayload.length === 0) {
|
|
227
|
+
throw new BtpProtocolError(`BTP Continuing or ending packet received without payload.`);
|
|
228
|
+
}
|
|
229
|
+
this.currentIncomingSegmentedPayload = Bytes.concat(
|
|
230
|
+
this.currentIncomingSegmentedPayload,
|
|
231
|
+
segmentPayload
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
if (isEndingSegment) {
|
|
235
|
+
if (this.currentIncomingSegmentedMsgLength === void 0 || this.currentIncomingSegmentedPayload === void 0) {
|
|
236
|
+
throw new BtpProtocolError("BTP beginning packet missing but ending packet received.");
|
|
237
|
+
}
|
|
238
|
+
if (this.currentIncomingSegmentedPayload.length !== this.currentIncomingSegmentedMsgLength) {
|
|
239
|
+
throw new BtpProtocolError(
|
|
240
|
+
`BTP packet payload length does not match message length: ${this.currentIncomingSegmentedPayload.length} !== ${this.currentIncomingSegmentedMsgLength}`
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
const payloadToProcess = this.currentIncomingSegmentedPayload;
|
|
244
|
+
this.currentIncomingSegmentedMsgLength = void 0;
|
|
245
|
+
this.currentIncomingSegmentedPayload = void 0;
|
|
246
|
+
await this.handleMatterMessagePayload(payloadToProcess);
|
|
247
|
+
}
|
|
248
|
+
} catch (error) {
|
|
249
|
+
logger.error(`Error while handling incoming BTP data: ${error}`);
|
|
250
|
+
await this.close();
|
|
251
|
+
BtpProtocolError.accept(error);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Send a Matter message to the transport layer, but before that encode it into a BTP packet and potentially split
|
|
256
|
+
* it into multiple segments. This Method is indirectly called by the ExchangeManager layer when a Matter message
|
|
257
|
+
* should be sent.
|
|
258
|
+
*
|
|
259
|
+
* @param data ByteArray containing the Matter message
|
|
260
|
+
*/
|
|
261
|
+
async sendMatterMessage(data) {
|
|
262
|
+
if (!this.isActive) {
|
|
263
|
+
throw new BtpFlowError("BTP session is not active");
|
|
264
|
+
}
|
|
265
|
+
logger.debug(`Got Matter message to send via BLE transport: ${Bytes.toHex(data)}`);
|
|
266
|
+
if (data.length === 0) {
|
|
267
|
+
throw new BtpFlowError("BTP packet must not be empty");
|
|
268
|
+
}
|
|
269
|
+
const dataReader = new DataReader(data, Endian.Little);
|
|
270
|
+
this.queuedOutgoingMatterMessages.push(dataReader);
|
|
271
|
+
await this.processSendQueue();
|
|
272
|
+
}
|
|
273
|
+
async processSendQueue() {
|
|
274
|
+
if (this.sendInProgress) return;
|
|
275
|
+
if (this.exceedsWindowSize(this.prevIncomingAckNumber, this.sequenceNumber)) return;
|
|
276
|
+
if (this.queuedOutgoingMatterMessages.length === 0) return;
|
|
277
|
+
this.sendInProgress = true;
|
|
278
|
+
while (this.queuedOutgoingMatterMessages.length > 0) {
|
|
279
|
+
const currentProcessedMessage = this.queuedOutgoingMatterMessages[0];
|
|
280
|
+
const remainingMessageLength = currentProcessedMessage.getRemainingBytesCount();
|
|
281
|
+
logger.debug(
|
|
282
|
+
"Sending BTP fragment: ",
|
|
283
|
+
Diagnostic.dict({
|
|
284
|
+
fullMessageLength: currentProcessedMessage.getLength(),
|
|
285
|
+
remainingLengthInBytes: remainingMessageLength
|
|
286
|
+
})
|
|
287
|
+
);
|
|
288
|
+
const hasAckNumber = this.prevIncomingSequenceNumber !== this.prevAckedSequenceNumber;
|
|
289
|
+
if (hasAckNumber) {
|
|
290
|
+
this.prevAckedSequenceNumber = this.prevIncomingSequenceNumber;
|
|
291
|
+
this.sendAckTimer.stop();
|
|
292
|
+
}
|
|
293
|
+
const isBeginningSegment = remainingMessageLength === currentProcessedMessage.getLength();
|
|
294
|
+
const btpHeaderLength = 2 + (isBeginningSegment ? 2 : 0) + (hasAckNumber ? 1 : 0);
|
|
295
|
+
const isEndingSegment = remainingMessageLength <= this.fragmentSize - btpHeaderLength;
|
|
296
|
+
const packetHeader = {
|
|
297
|
+
isHandshakeRequest: false,
|
|
298
|
+
hasManagementOpcode: false,
|
|
299
|
+
hasAckNumber,
|
|
300
|
+
isBeginningSegment,
|
|
301
|
+
isContinuingSegment: !isBeginningSegment,
|
|
302
|
+
isEndingSegment
|
|
303
|
+
};
|
|
304
|
+
logger.debug(
|
|
305
|
+
`Take up to ${this.fragmentSize - btpHeaderLength} bytes from Rest of message: ${remainingMessageLength}`
|
|
306
|
+
);
|
|
307
|
+
const segmentPayload = currentProcessedMessage.readByteArray(this.fragmentSize - btpHeaderLength);
|
|
308
|
+
const btpPacket = {
|
|
309
|
+
header: packetHeader,
|
|
310
|
+
payload: {
|
|
311
|
+
ackNumber: hasAckNumber ? this.prevIncomingSequenceNumber : void 0,
|
|
312
|
+
sequenceNumber: this.getNextSequenceNumber(),
|
|
313
|
+
messageLength: packetHeader.isBeginningSegment ? remainingMessageLength : void 0,
|
|
314
|
+
// remainingMessageLength if the fill length on beginning packet
|
|
315
|
+
segmentPayload
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
logger.debug(`Sending BTP packet: ${Logger.toJSON(btpPacket)}`);
|
|
319
|
+
const packet = BtpCodec.encodeBtpPacket(btpPacket);
|
|
320
|
+
logger.debug(`Sending BTP packet raw: ${Bytes.toHex(packet)}`);
|
|
321
|
+
await this.writeBleCallback(packet);
|
|
322
|
+
if (!this.ackReceiveTimer.isRunning) {
|
|
323
|
+
this.ackReceiveTimer.start();
|
|
324
|
+
}
|
|
325
|
+
if (this.role === "central") {
|
|
326
|
+
if (this.idleTimeout.isRunning) {
|
|
327
|
+
this.idleTimeout.stop();
|
|
328
|
+
}
|
|
329
|
+
this.idleTimeout.start();
|
|
330
|
+
}
|
|
331
|
+
if (isEndingSegment) {
|
|
332
|
+
this.queuedOutgoingMatterMessages.shift();
|
|
333
|
+
}
|
|
334
|
+
if (this.exceedsWindowSize(this.prevIncomingAckNumber, this.sequenceNumber)) {
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
this.sendInProgress = false;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Close the BTP session. This method is called when the BLE transport is disconnected and so the BTP session gets closed.
|
|
342
|
+
*/
|
|
343
|
+
async close() {
|
|
344
|
+
this.sendAckTimer.stop();
|
|
345
|
+
this.ackReceiveTimer.stop();
|
|
346
|
+
this.idleTimeout.stop();
|
|
347
|
+
if (this.isActive) {
|
|
348
|
+
logger.debug(`Closing BTP session`);
|
|
349
|
+
this.isActive = false;
|
|
350
|
+
await this.disconnectBleCallback();
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* If this timer expires and the peer has a pending acknowledgement, the peer SHALL immediately send that
|
|
355
|
+
* acknowledgement
|
|
356
|
+
*/
|
|
357
|
+
async btpSendAckTimeoutTriggered() {
|
|
358
|
+
if (this.prevIncomingSequenceNumber > this.prevAckedSequenceNumber) {
|
|
359
|
+
logger.debug(`Sending BTP ACK for sequence number ${this.prevIncomingSequenceNumber}`);
|
|
360
|
+
const btpPacket = {
|
|
361
|
+
header: {
|
|
362
|
+
isHandshakeRequest: false,
|
|
363
|
+
hasManagementOpcode: false,
|
|
364
|
+
hasAckNumber: true,
|
|
365
|
+
isBeginningSegment: false,
|
|
366
|
+
isContinuingSegment: false,
|
|
367
|
+
isEndingSegment: false
|
|
368
|
+
},
|
|
369
|
+
payload: {
|
|
370
|
+
ackNumber: this.prevIncomingSequenceNumber,
|
|
371
|
+
sequenceNumber: this.getNextSequenceNumber()
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
this.prevAckedSequenceNumber = this.prevIncomingSequenceNumber;
|
|
375
|
+
const packet = BtpCodec.encodeBtpPacket(btpPacket);
|
|
376
|
+
await this.writeBleCallback(packet);
|
|
377
|
+
if (!this.ackReceiveTimer.isRunning) {
|
|
378
|
+
this.ackReceiveTimer.start();
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* If a peer’s acknowledgement-received timer expires, or if a peer receives an invalid acknowledgement,
|
|
384
|
+
* the peer SHALL close the BTP session and report an error to the application.
|
|
385
|
+
*/
|
|
386
|
+
async btpAckTimeoutTriggered() {
|
|
387
|
+
if (this.prevIncomingAckNumber !== this.sequenceNumber) {
|
|
388
|
+
logger.warn("Acknowledgement for the sent sequence number was not received ... disconnect");
|
|
389
|
+
await this.close();
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Increments sequence number for the packets and round it off to 0 when it reaches the maximum limit.
|
|
394
|
+
*/
|
|
395
|
+
getNextSequenceNumber() {
|
|
396
|
+
this.sequenceNumber++;
|
|
397
|
+
if (this.sequenceNumber > MAXIMUM_SEQUENCE_NUMBER) {
|
|
398
|
+
this.sequenceNumber = 0;
|
|
399
|
+
}
|
|
400
|
+
return this.sequenceNumber;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Checks if incoming ackNumber and sent sequence number exceeds the client window size or not.
|
|
404
|
+
*/
|
|
405
|
+
exceedsWindowSize(prevIncomingAckNumber, currentSequenceNumber) {
|
|
406
|
+
if (prevIncomingAckNumber > currentSequenceNumber) {
|
|
407
|
+
prevIncomingAckNumber = prevIncomingAckNumber % MAXIMUM_SEQUENCE_NUMBER - 1;
|
|
408
|
+
}
|
|
409
|
+
return currentSequenceNumber - prevIncomingAckNumber > this.clientWindowSize - 1;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
export {
|
|
413
|
+
BTP_SUPPORTED_VERSIONS,
|
|
414
|
+
BtpFlowError,
|
|
415
|
+
BtpMatterError,
|
|
416
|
+
BtpProtocolError,
|
|
417
|
+
BtpSessionHandler
|
|
418
|
+
};
|
|
419
|
+
//# sourceMappingURL=BtpSessionHandler.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ble/BtpSessionHandler.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["version"]
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ble/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { PrivateKey } from "#general";
|
|
7
|
+
import { VendorId } from "#types";
|
|
8
|
+
export declare class AttestationCertificateManager {
|
|
9
|
+
private readonly vendorId;
|
|
10
|
+
private paaCertId;
|
|
11
|
+
private readonly paaKeyPair;
|
|
12
|
+
private readonly paaKeyIdentifier;
|
|
13
|
+
private readonly paiCertId;
|
|
14
|
+
private readonly paiKeyPair;
|
|
15
|
+
private readonly paiKeyIdentifier;
|
|
16
|
+
private readonly paiCertBytes;
|
|
17
|
+
private nextCertificateId;
|
|
18
|
+
constructor(vendorId: VendorId);
|
|
19
|
+
getPAICert(): Uint8Array;
|
|
20
|
+
getDACert(productId: number): {
|
|
21
|
+
keyPair: PrivateKey;
|
|
22
|
+
dac: Uint8Array;
|
|
23
|
+
};
|
|
24
|
+
private generatePAACert;
|
|
25
|
+
private generatePAICert;
|
|
26
|
+
generateDaCert(publicKey: Uint8Array, vendorId: VendorId, productId: number): Uint8Array;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=AttestationCertificateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttestationCertificateManager.d.ts","sourceRoot":"","sources":["../../../src/certificate/AttestationCertificateManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,UAAU,EAAe,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAuBlC,qBAAa,6BAA6B;IAe1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAdrC,OAAO,CAAC,SAAS,CAAa;IAI9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAExB;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;IACxF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,OAAO,CAAC,iBAAiB,CAAK;gBAED,QAAQ,EAAE,QAAQ;IAI/C,UAAU;IAIV,SAAS,CAAC,SAAS,EAAE,MAAM;;;;IAW3B,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,eAAe;IAkCvB,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;CAiC9E"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Bytes, Crypto, PrivateKey, Time, toHex } from "#general";
|
|
7
|
+
import { CertificateManager, jsToMatterDate } from "./CertificateManager.js";
|
|
8
|
+
import {
|
|
9
|
+
TestCert_PAA_NoVID_PrivateKey,
|
|
10
|
+
TestCert_PAA_NoVID_PublicKey,
|
|
11
|
+
TestCert_PAA_NoVID_SKID
|
|
12
|
+
} from "./ChipPAAuthorities.js";
|
|
13
|
+
function getPaiCommonName(vendorId, productId) {
|
|
14
|
+
return `node-matter Dev PAI 0x${vendorId.toString(16).toUpperCase()} ${productId === void 0 ? "no PID" : `0x${productId.toString(16).toUpperCase()}`}`;
|
|
15
|
+
}
|
|
16
|
+
function getDacCommonName(vendorId, productId) {
|
|
17
|
+
return `node-matter Dev DAC 0x${vendorId.toString(16).toUpperCase()}/0x${productId.toString(16).toUpperCase()}`;
|
|
18
|
+
}
|
|
19
|
+
function getPaaCommonName() {
|
|
20
|
+
return "Matter Test PAA";
|
|
21
|
+
}
|
|
22
|
+
class AttestationCertificateManager {
|
|
23
|
+
constructor(vendorId) {
|
|
24
|
+
this.vendorId = vendorId;
|
|
25
|
+
this.paiCertBytes = this.generatePAICert(vendorId);
|
|
26
|
+
}
|
|
27
|
+
paaCertId = BigInt(0);
|
|
28
|
+
// We use the official PAA cert for now because else pairing with Chip tool do not work because
|
|
29
|
+
// only this one is the Certificate store
|
|
30
|
+
paaKeyPair = PrivateKey(TestCert_PAA_NoVID_PrivateKey, {
|
|
31
|
+
publicKey: TestCert_PAA_NoVID_PublicKey
|
|
32
|
+
});
|
|
33
|
+
paaKeyIdentifier = TestCert_PAA_NoVID_SKID;
|
|
34
|
+
paiCertId = BigInt(1);
|
|
35
|
+
paiKeyPair = Crypto.createKeyPair();
|
|
36
|
+
paiKeyIdentifier = Crypto.hash(this.paiKeyPair.publicKey).slice(0, 20);
|
|
37
|
+
paiCertBytes;
|
|
38
|
+
nextCertificateId = 2;
|
|
39
|
+
getPAICert() {
|
|
40
|
+
return this.paiCertBytes;
|
|
41
|
+
}
|
|
42
|
+
getDACert(productId) {
|
|
43
|
+
const dacKeyPair = Crypto.createKeyPair();
|
|
44
|
+
return {
|
|
45
|
+
keyPair: dacKeyPair,
|
|
46
|
+
dac: this.generateDaCert(dacKeyPair.publicKey, this.vendorId, productId)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Method unused for now because we use the official Matter Test PAA, but is functional
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
51
|
+
// @ts-ignore
|
|
52
|
+
generatePAACert(vendorId) {
|
|
53
|
+
const now = Time.get().now();
|
|
54
|
+
const unsignedCertificate = {
|
|
55
|
+
serialNumber: Bytes.fromHex(toHex(this.paaCertId)),
|
|
56
|
+
signatureAlgorithm: 1,
|
|
57
|
+
publicKeyAlgorithm: 1,
|
|
58
|
+
ellipticCurveIdentifier: 1,
|
|
59
|
+
issuer: {
|
|
60
|
+
commonName: getPaaCommonName(),
|
|
61
|
+
vendorId
|
|
62
|
+
},
|
|
63
|
+
notBefore: jsToMatterDate(now, -1),
|
|
64
|
+
notAfter: jsToMatterDate(now, 10),
|
|
65
|
+
subject: {
|
|
66
|
+
commonName: getPaaCommonName(),
|
|
67
|
+
vendorId
|
|
68
|
+
},
|
|
69
|
+
ellipticCurvePublicKey: this.paaKeyPair.publicKey,
|
|
70
|
+
extensions: {
|
|
71
|
+
basicConstraints: {
|
|
72
|
+
isCa: true,
|
|
73
|
+
pathLen: 1
|
|
74
|
+
},
|
|
75
|
+
keyUsage: {
|
|
76
|
+
keyCertSign: true,
|
|
77
|
+
cRLSign: true
|
|
78
|
+
},
|
|
79
|
+
subjectKeyIdentifier: this.paaKeyIdentifier,
|
|
80
|
+
authorityKeyIdentifier: this.paaKeyIdentifier
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return CertificateManager.productAttestationAuthorityCertToAsn1(unsignedCertificate, this.paaKeyPair);
|
|
84
|
+
}
|
|
85
|
+
generatePAICert(vendorId, productId) {
|
|
86
|
+
const now = Time.get().now();
|
|
87
|
+
const unsignedCertificate = {
|
|
88
|
+
serialNumber: Bytes.fromHex(toHex(this.paiCertId)),
|
|
89
|
+
signatureAlgorithm: 1,
|
|
90
|
+
publicKeyAlgorithm: 1,
|
|
91
|
+
ellipticCurveIdentifier: 1,
|
|
92
|
+
issuer: {
|
|
93
|
+
commonName: getPaaCommonName()
|
|
94
|
+
},
|
|
95
|
+
notBefore: jsToMatterDate(now, -1),
|
|
96
|
+
notAfter: jsToMatterDate(now, 10),
|
|
97
|
+
subject: {
|
|
98
|
+
commonName: getPaiCommonName(vendorId, productId),
|
|
99
|
+
vendorId,
|
|
100
|
+
productId
|
|
101
|
+
},
|
|
102
|
+
ellipticCurvePublicKey: this.paiKeyPair.publicKey,
|
|
103
|
+
extensions: {
|
|
104
|
+
basicConstraints: {
|
|
105
|
+
isCa: true,
|
|
106
|
+
pathLen: 0
|
|
107
|
+
},
|
|
108
|
+
keyUsage: {
|
|
109
|
+
keyCertSign: true,
|
|
110
|
+
cRLSign: true
|
|
111
|
+
},
|
|
112
|
+
subjectKeyIdentifier: this.paiKeyIdentifier,
|
|
113
|
+
authorityKeyIdentifier: this.paaKeyIdentifier
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
return CertificateManager.productAttestationIntermediateCertToAsn1(unsignedCertificate, this.paaKeyPair);
|
|
117
|
+
}
|
|
118
|
+
generateDaCert(publicKey, vendorId, productId) {
|
|
119
|
+
const now = Time.get().now();
|
|
120
|
+
const certId = this.nextCertificateId++;
|
|
121
|
+
const unsignedCertificate = {
|
|
122
|
+
serialNumber: Bytes.fromHex(toHex(certId)),
|
|
123
|
+
signatureAlgorithm: 1,
|
|
124
|
+
publicKeyAlgorithm: 1,
|
|
125
|
+
ellipticCurveIdentifier: 1,
|
|
126
|
+
notBefore: jsToMatterDate(now, -1),
|
|
127
|
+
notAfter: jsToMatterDate(now, 10),
|
|
128
|
+
issuer: {
|
|
129
|
+
commonName: getPaiCommonName(vendorId),
|
|
130
|
+
vendorId
|
|
131
|
+
},
|
|
132
|
+
subject: {
|
|
133
|
+
commonName: getDacCommonName(vendorId, productId),
|
|
134
|
+
vendorId,
|
|
135
|
+
productId
|
|
136
|
+
},
|
|
137
|
+
ellipticCurvePublicKey: publicKey,
|
|
138
|
+
extensions: {
|
|
139
|
+
basicConstraints: {
|
|
140
|
+
isCa: false
|
|
141
|
+
},
|
|
142
|
+
keyUsage: {
|
|
143
|
+
digitalSignature: true
|
|
144
|
+
},
|
|
145
|
+
subjectKeyIdentifier: Crypto.hash(publicKey).slice(0, 20),
|
|
146
|
+
authorityKeyIdentifier: this.paiKeyIdentifier
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
return CertificateManager.deviceAttestationCertToAsn1(unsignedCertificate, this.paiKeyPair);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export {
|
|
153
|
+
AttestationCertificateManager
|
|
154
|
+
};
|
|
155
|
+
//# sourceMappingURL=AttestationCertificateManager.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/certificate/AttestationCertificateManager.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|