@matter/thread-br-client 0.0.1 → 0.17.5-alpha.0-20260706-fd4c49e2e
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/README.md +5 -5
- package/dist/cjs/coap/CoapClient.d.ts +2 -2
- package/dist/cjs/coap/CoapClient.d.ts.map +1 -1
- package/dist/cjs/coap/CoapClient.js +9 -16
- package/dist/cjs/coap/CoapClient.js.map +1 -1
- package/dist/cjs/coap/CoapMessage.d.ts +11 -6
- package/dist/cjs/coap/CoapMessage.d.ts.map +1 -1
- package/dist/cjs/coap/CoapMessage.js +8 -5
- package/dist/cjs/coap/CoapMessage.js.map +1 -1
- package/dist/cjs/commissioner/Commissioner.d.ts.map +1 -1
- package/dist/cjs/commissioner/Commissioner.js +5 -2
- package/dist/cjs/commissioner/Commissioner.js.map +1 -1
- package/dist/cjs/commissioner/LeadKa.d.ts +3 -3
- package/dist/cjs/commissioner/LeadKa.d.ts.map +1 -1
- package/dist/cjs/commissioner/LeadKa.js +1 -1
- package/dist/cjs/commissioner/LeadKa.js.map +1 -1
- package/dist/cjs/commissioner/LeadPet.d.ts +3 -2
- package/dist/cjs/commissioner/LeadPet.d.ts.map +1 -1
- package/dist/cjs/commissioner/LeadPet.js +4 -3
- package/dist/cjs/commissioner/LeadPet.js.map +1 -1
- package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts +5 -5
- package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts.map +1 -1
- package/dist/cjs/credentials/ThreadCredentialsRegistry.js +10 -9
- package/dist/cjs/credentials/ThreadCredentialsRegistry.js.map +1 -1
- package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts +4 -3
- package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts.map +1 -1
- package/dist/cjs/crypto/AesCmacPrf128.d.ts +4 -14
- package/dist/cjs/crypto/AesCmacPrf128.d.ts.map +1 -1
- package/dist/cjs/crypto/AesCmacPrf128.js +7 -71
- package/dist/cjs/crypto/AesCmacPrf128.js.map +2 -2
- package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts +5 -4
- package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts.map +1 -1
- package/dist/cjs/crypto/Pbkdf2AesCmac.js +5 -4
- package/dist/cjs/crypto/Pbkdf2AesCmac.js.map +1 -1
- package/dist/cjs/crypto/Pskc.d.ts +4 -3
- package/dist/cjs/crypto/Pskc.d.ts.map +1 -1
- package/dist/cjs/crypto/Pskc.js +6 -5
- package/dist/cjs/crypto/Pskc.js.map +1 -1
- package/dist/cjs/crypto/index.d.ts +1 -1
- package/dist/cjs/crypto/index.d.ts.map +1 -1
- package/dist/cjs/crypto/index.js +0 -1
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/cjs/dataset/OperationalDataset.d.ts +10 -10
- package/dist/cjs/dataset/OperationalDataset.d.ts.map +1 -1
- package/dist/cjs/dataset/OperationalDataset.js +32 -31
- package/dist/cjs/dataset/OperationalDataset.js.map +1 -1
- package/dist/cjs/dataset/SecurityPolicy.d.ts +3 -2
- package/dist/cjs/dataset/SecurityPolicy.d.ts.map +1 -1
- package/dist/cjs/dataset/SecurityPolicy.js +5 -4
- package/dist/cjs/dataset/SecurityPolicy.js.map +1 -1
- package/dist/cjs/diagnostic/DiagnosticResponse.d.ts +5 -4
- package/dist/cjs/diagnostic/DiagnosticResponse.d.ts.map +1 -1
- package/dist/cjs/diagnostic/DiagnosticSource.d.ts +2 -2
- package/dist/cjs/diagnostic/DiagnosticSource.d.ts.map +1 -1
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts +7 -3
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -1
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js +48 -43
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js.map +1 -1
- package/dist/cjs/diagnostic/connectMeshcop.d.ts.map +1 -1
- package/dist/cjs/diagnostic/connectMeshcop.js +5 -12
- package/dist/cjs/diagnostic/connectMeshcop.js.map +1 -1
- package/dist/cjs/diagnostic/errors.d.ts +1 -1
- package/dist/cjs/diagnostic/errors.d.ts.map +1 -1
- package/dist/cjs/discovery/BorderRouterRegistry.d.ts.map +1 -1
- package/dist/cjs/discovery/BorderRouterRegistry.js +2 -4
- package/dist/cjs/discovery/BorderRouterRegistry.js.map +1 -1
- package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts +3 -3
- package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts.map +1 -1
- package/dist/cjs/dtls/channel/NobleDtlsChannel.d.ts.map +1 -1
- package/dist/cjs/dtls/channel/NobleDtlsChannel.js +89 -58
- package/dist/cjs/dtls/channel/NobleDtlsChannel.js.map +1 -1
- package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts +5 -4
- package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts.map +1 -1
- package/dist/cjs/dtls/ecjpake/EcJpakePms.js +4 -5
- package/dist/cjs/dtls/ecjpake/EcJpakePms.js.map +1 -1
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts +16 -15
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -1
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.js +40 -29
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.js.map +1 -1
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts +10 -9
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -1
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.js +17 -13
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.js.map +1 -1
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts +2 -1
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.js +3 -1
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.js.map +1 -1
- package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts +27 -4
- package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/ClientHelloMessage.js +3 -1
- package/dist/cjs/dtls/handshake/ClientHelloMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts +2 -1
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/DtlsClient.d.ts +9 -6
- package/dist/cjs/dtls/handshake/DtlsClient.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/DtlsClient.js +99 -77
- package/dist/cjs/dtls/handshake/DtlsClient.js.map +1 -1
- package/dist/cjs/dtls/handshake/FinishedMessage.d.ts +10 -3
- package/dist/cjs/dtls/handshake/FinishedMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/FinishedMessage.js +4 -2
- package/dist/cjs/dtls/handshake/FinishedMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts +5 -4
- package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/HandshakeMessage.js +13 -11
- package/dist/cjs/dtls/handshake/HandshakeMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts +19 -2
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js +3 -1
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts +2 -1
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js +3 -2
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts +4 -3
- package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/ServerHelloMessage.js +3 -1
- package/dist/cjs/dtls/handshake/ServerHelloMessage.js.map +1 -1
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts +2 -1
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -1
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.js.map +1 -1
- package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts +7 -5
- package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts.map +1 -1
- package/dist/cjs/dtls/prf/HandshakeTranscript.js +14 -9
- package/dist/cjs/dtls/prf/HandshakeTranscript.js.map +1 -1
- package/dist/cjs/dtls/prf/TlsPrf.d.ts +23 -22
- package/dist/cjs/dtls/prf/TlsPrf.d.ts.map +1 -1
- package/dist/cjs/dtls/prf/TlsPrf.js +33 -30
- package/dist/cjs/dtls/prf/TlsPrf.js.map +1 -1
- package/dist/cjs/dtls/record/AesCcm8.d.ts +13 -12
- package/dist/cjs/dtls/record/AesCcm8.d.ts.map +1 -1
- package/dist/cjs/dtls/record/AesCcm8.js +12 -34
- package/dist/cjs/dtls/record/AesCcm8.js.map +1 -1
- package/dist/cjs/dtls/record/DtlsCipherState.d.ts +11 -10
- package/dist/cjs/dtls/record/DtlsCipherState.d.ts.map +1 -1
- package/dist/cjs/dtls/record/DtlsCipherState.js +10 -6
- package/dist/cjs/dtls/record/DtlsCipherState.js.map +1 -1
- package/dist/cjs/dtls/record/DtlsRecord.d.ts +10 -10
- package/dist/cjs/dtls/record/DtlsRecord.d.ts.map +1 -1
- package/dist/cjs/dtls/record/DtlsRecord.js +10 -8
- package/dist/cjs/dtls/record/DtlsRecord.js.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts +3 -4
- package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestClient.d.ts +27 -8
- package/dist/cjs/otbr-rest/OtbrRestClient.d.ts.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestClient.js +50 -20
- package/dist/cjs/otbr-rest/OtbrRestClient.js.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts +2 -1
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js +3 -3
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts +6 -4
- package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts.map +1 -1
- package/dist/cjs/otbr-rest/OtbrRestProbe.js +11 -43
- package/dist/cjs/otbr-rest/OtbrRestProbe.js.map +1 -1
- package/dist/cjs/otbr-rest/caseNormalizer.d.ts +7 -0
- package/dist/cjs/otbr-rest/caseNormalizer.d.ts.map +1 -1
- package/dist/cjs/otbr-rest/caseNormalizer.js +11 -0
- package/dist/cjs/otbr-rest/caseNormalizer.js.map +1 -1
- package/dist/cjs/otbr-rest/parseHexBytes.d.ts +22 -0
- package/dist/cjs/otbr-rest/parseHexBytes.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/parseHexBytes.js +50 -0
- package/dist/cjs/otbr-rest/parseHexBytes.js.map +6 -0
- package/dist/cjs/otbr-rest/translation.d.ts +2 -1
- package/dist/cjs/otbr-rest/translation.d.ts.map +1 -1
- package/dist/cjs/otbr-rest/translation.js +20 -22
- package/dist/cjs/otbr-rest/translation.js.map +1 -1
- package/dist/cjs/selection/selectBr.d.ts +8 -4
- package/dist/cjs/selection/selectBr.d.ts.map +1 -1
- package/dist/cjs/selection/selectBr.js +6 -5
- package/dist/cjs/selection/selectBr.js.map +1 -1
- package/dist/cjs/selection/withExtPanIdLock.d.ts +2 -1
- package/dist/cjs/selection/withExtPanIdLock.d.ts.map +1 -1
- package/dist/cjs/selection/withExtPanIdLock.js.map +1 -1
- package/dist/cjs/tlv/BasicTlvCodec.d.ts +4 -4
- package/dist/cjs/tlv/BasicTlvCodec.d.ts.map +1 -1
- package/dist/cjs/tlv/BasicTlvCodec.js +13 -11
- package/dist/cjs/tlv/BasicTlvCodec.js.map +1 -1
- package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts +3 -2
- package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts.map +1 -1
- package/dist/cjs/tlv/NetworkDiagnosticTlv.js.map +1 -1
- package/dist/cjs/tlv/TypeListTlv.d.ts +3 -2
- package/dist/cjs/tlv/TypeListTlv.d.ts.map +1 -1
- package/dist/cjs/tlv/TypeListTlv.js +1 -1
- package/dist/cjs/tlv/TypeListTlv.js.map +1 -1
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts +3 -2
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.js +5 -3
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.js.map +1 -1
- package/dist/cjs/tlv/diag/ChildTable.d.ts +3 -2
- package/dist/cjs/tlv/diag/ChildTable.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/ChildTable.js +7 -6
- package/dist/cjs/tlv/diag/ChildTable.js.map +1 -1
- package/dist/cjs/tlv/diag/Connectivity.d.ts +3 -2
- package/dist/cjs/tlv/diag/Connectivity.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/Connectivity.js +14 -14
- package/dist/cjs/tlv/diag/Connectivity.js.map +1 -1
- package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts +3 -2
- package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/Ipv6AddressList.js +6 -5
- package/dist/cjs/tlv/diag/Ipv6AddressList.js.map +1 -1
- package/dist/cjs/tlv/diag/LeaderData.d.ts +3 -2
- package/dist/cjs/tlv/diag/LeaderData.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/LeaderData.js +8 -7
- package/dist/cjs/tlv/diag/LeaderData.js.map +1 -1
- package/dist/cjs/tlv/diag/MacCounters.d.ts +3 -2
- package/dist/cjs/tlv/diag/MacCounters.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/MacCounters.js +12 -11
- package/dist/cjs/tlv/diag/MacCounters.js.map +1 -1
- package/dist/cjs/tlv/diag/MleCounters.d.ts +3 -2
- package/dist/cjs/tlv/diag/MleCounters.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/MleCounters.js +18 -17
- package/dist/cjs/tlv/diag/MleCounters.js.map +1 -1
- package/dist/cjs/tlv/diag/Mode.d.ts +3 -2
- package/dist/cjs/tlv/diag/Mode.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/Mode.js +5 -3
- package/dist/cjs/tlv/diag/Mode.js.map +1 -1
- package/dist/cjs/tlv/diag/NetworkData.d.ts +7 -6
- package/dist/cjs/tlv/diag/NetworkData.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/NetworkData.js +23 -18
- package/dist/cjs/tlv/diag/NetworkData.js.map +1 -1
- package/dist/cjs/tlv/diag/Primitives.d.ts +15 -14
- package/dist/cjs/tlv/diag/Primitives.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/Primitives.js +25 -19
- package/dist/cjs/tlv/diag/Primitives.js.map +1 -1
- package/dist/cjs/tlv/diag/Route64.d.ts +3 -2
- package/dist/cjs/tlv/diag/Route64.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/Route64.js +8 -7
- package/dist/cjs/tlv/diag/Route64.js.map +1 -1
- package/dist/cjs/tlv/diag/RouterNeighbor.d.ts +3 -2
- package/dist/cjs/tlv/diag/RouterNeighbor.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/RouterNeighbor.js +13 -11
- package/dist/cjs/tlv/diag/RouterNeighbor.js.map +1 -1
- package/dist/cjs/tlv/diag/Timeout.d.ts +3 -2
- package/dist/cjs/tlv/diag/Timeout.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/Timeout.js +4 -3
- package/dist/cjs/tlv/diag/Timeout.js.map +1 -1
- package/dist/cjs/tlv/diag/VendorInfo.d.ts +13 -12
- package/dist/cjs/tlv/diag/VendorInfo.d.ts.map +1 -1
- package/dist/cjs/tlv/diag/VendorInfo.js +4 -3
- package/dist/cjs/tlv/diag/VendorInfo.js.map +1 -1
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts +3 -2
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -1
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js +7 -4
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js.map +1 -1
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts +4 -3
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -1
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js +9 -7
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js.map +1 -1
- package/dist/cjs/util/meshLocalAddr.d.ts +5 -4
- package/dist/cjs/util/meshLocalAddr.d.ts.map +1 -1
- package/dist/cjs/util/meshLocalAddr.js +6 -4
- package/dist/cjs/util/meshLocalAddr.js.map +1 -1
- package/dist/esm/coap/CoapClient.d.ts +2 -2
- package/dist/esm/coap/CoapClient.d.ts.map +1 -1
- package/dist/esm/coap/CoapClient.js +11 -17
- package/dist/esm/coap/CoapClient.js.map +1 -1
- package/dist/esm/coap/CoapMessage.d.ts +11 -6
- package/dist/esm/coap/CoapMessage.d.ts.map +1 -1
- package/dist/esm/coap/CoapMessage.js +8 -5
- package/dist/esm/coap/CoapMessage.js.map +1 -1
- package/dist/esm/commissioner/Commissioner.d.ts.map +1 -1
- package/dist/esm/commissioner/Commissioner.js +5 -2
- package/dist/esm/commissioner/Commissioner.js.map +1 -1
- package/dist/esm/commissioner/LeadKa.d.ts +3 -3
- package/dist/esm/commissioner/LeadKa.d.ts.map +1 -1
- package/dist/esm/commissioner/LeadKa.js +2 -2
- package/dist/esm/commissioner/LeadKa.js.map +1 -1
- package/dist/esm/commissioner/LeadPet.d.ts +3 -2
- package/dist/esm/commissioner/LeadPet.d.ts.map +1 -1
- package/dist/esm/commissioner/LeadPet.js +4 -3
- package/dist/esm/commissioner/LeadPet.js.map +1 -1
- package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts +5 -5
- package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts.map +1 -1
- package/dist/esm/credentials/ThreadCredentialsRegistry.js +10 -9
- package/dist/esm/credentials/ThreadCredentialsRegistry.js.map +1 -1
- package/dist/esm/credentials/ThreadNetworkCredentials.d.ts +4 -3
- package/dist/esm/credentials/ThreadNetworkCredentials.d.ts.map +1 -1
- package/dist/esm/crypto/AesCmacPrf128.d.ts +4 -14
- package/dist/esm/crypto/AesCmacPrf128.d.ts.map +1 -1
- package/dist/esm/crypto/AesCmacPrf128.js +8 -72
- package/dist/esm/crypto/AesCmacPrf128.js.map +2 -2
- package/dist/esm/crypto/Pbkdf2AesCmac.d.ts +5 -4
- package/dist/esm/crypto/Pbkdf2AesCmac.d.ts.map +1 -1
- package/dist/esm/crypto/Pbkdf2AesCmac.js +6 -5
- package/dist/esm/crypto/Pbkdf2AesCmac.js.map +1 -1
- package/dist/esm/crypto/Pskc.d.ts +4 -3
- package/dist/esm/crypto/Pskc.d.ts.map +1 -1
- package/dist/esm/crypto/Pskc.js +7 -6
- package/dist/esm/crypto/Pskc.js.map +1 -1
- package/dist/esm/crypto/index.d.ts +1 -1
- package/dist/esm/crypto/index.d.ts.map +1 -1
- package/dist/esm/crypto/index.js +1 -2
- package/dist/esm/crypto/index.js.map +1 -1
- package/dist/esm/dataset/OperationalDataset.d.ts +10 -10
- package/dist/esm/dataset/OperationalDataset.d.ts.map +1 -1
- package/dist/esm/dataset/OperationalDataset.js +32 -31
- package/dist/esm/dataset/OperationalDataset.js.map +1 -1
- package/dist/esm/dataset/SecurityPolicy.d.ts +3 -2
- package/dist/esm/dataset/SecurityPolicy.d.ts.map +1 -1
- package/dist/esm/dataset/SecurityPolicy.js +6 -5
- package/dist/esm/dataset/SecurityPolicy.js.map +1 -1
- package/dist/esm/diagnostic/DiagnosticResponse.d.ts +5 -4
- package/dist/esm/diagnostic/DiagnosticResponse.d.ts.map +1 -1
- package/dist/esm/diagnostic/DiagnosticSource.d.ts +2 -2
- package/dist/esm/diagnostic/DiagnosticSource.d.ts.map +1 -1
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts +7 -3
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -1
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.js +49 -43
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.js.map +1 -1
- package/dist/esm/diagnostic/connectMeshcop.d.ts.map +1 -1
- package/dist/esm/diagnostic/connectMeshcop.js +6 -13
- package/dist/esm/diagnostic/connectMeshcop.js.map +1 -1
- package/dist/esm/diagnostic/errors.d.ts +1 -1
- package/dist/esm/diagnostic/errors.d.ts.map +1 -1
- package/dist/esm/discovery/BorderRouterRegistry.d.ts.map +1 -1
- package/dist/esm/discovery/BorderRouterRegistry.js +2 -4
- package/dist/esm/discovery/BorderRouterRegistry.js.map +1 -1
- package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts +3 -3
- package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts.map +1 -1
- package/dist/esm/dtls/channel/NobleDtlsChannel.d.ts.map +1 -1
- package/dist/esm/dtls/channel/NobleDtlsChannel.js +90 -58
- package/dist/esm/dtls/channel/NobleDtlsChannel.js.map +1 -1
- package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts +5 -4
- package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts.map +1 -1
- package/dist/esm/dtls/ecjpake/EcJpakePms.js +5 -6
- package/dist/esm/dtls/ecjpake/EcJpakePms.js.map +1 -1
- package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts +16 -15
- package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -1
- package/dist/esm/dtls/ecjpake/EcJpakeRound.js +41 -30
- package/dist/esm/dtls/ecjpake/EcJpakeRound.js.map +1 -1
- package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts +10 -9
- package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -1
- package/dist/esm/dtls/ecjpake/SchnorrZkp.js +18 -14
- package/dist/esm/dtls/ecjpake/SchnorrZkp.js.map +1 -1
- package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts +2 -1
- package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/ChangeCipherSpec.js +3 -1
- package/dist/esm/dtls/handshake/ChangeCipherSpec.js.map +1 -1
- package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts +27 -4
- package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/ClientHelloMessage.js +4 -2
- package/dist/esm/dtls/handshake/ClientHelloMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts +2 -1
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/DtlsClient.d.ts +9 -6
- package/dist/esm/dtls/handshake/DtlsClient.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/DtlsClient.js +100 -78
- package/dist/esm/dtls/handshake/DtlsClient.js.map +1 -1
- package/dist/esm/dtls/handshake/FinishedMessage.d.ts +10 -3
- package/dist/esm/dtls/handshake/FinishedMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/FinishedMessage.js +5 -3
- package/dist/esm/dtls/handshake/FinishedMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/HandshakeMessage.d.ts +5 -4
- package/dist/esm/dtls/handshake/HandshakeMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/HandshakeMessage.js +14 -12
- package/dist/esm/dtls/handshake/HandshakeMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts +19 -2
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js +3 -1
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts +2 -1
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js +3 -2
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts +4 -3
- package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/ServerHelloMessage.js +3 -1
- package/dist/esm/dtls/handshake/ServerHelloMessage.js.map +1 -1
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts +2 -1
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -1
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.js.map +1 -1
- package/dist/esm/dtls/prf/HandshakeTranscript.d.ts +7 -5
- package/dist/esm/dtls/prf/HandshakeTranscript.d.ts.map +1 -1
- package/dist/esm/dtls/prf/HandshakeTranscript.js +15 -10
- package/dist/esm/dtls/prf/HandshakeTranscript.js.map +1 -1
- package/dist/esm/dtls/prf/TlsPrf.d.ts +23 -22
- package/dist/esm/dtls/prf/TlsPrf.d.ts.map +1 -1
- package/dist/esm/dtls/prf/TlsPrf.js +34 -31
- package/dist/esm/dtls/prf/TlsPrf.js.map +1 -1
- package/dist/esm/dtls/record/AesCcm8.d.ts +13 -12
- package/dist/esm/dtls/record/AesCcm8.d.ts.map +1 -1
- package/dist/esm/dtls/record/AesCcm8.js +13 -35
- package/dist/esm/dtls/record/AesCcm8.js.map +1 -1
- package/dist/esm/dtls/record/DtlsCipherState.d.ts +11 -10
- package/dist/esm/dtls/record/DtlsCipherState.d.ts.map +1 -1
- package/dist/esm/dtls/record/DtlsCipherState.js +11 -7
- package/dist/esm/dtls/record/DtlsCipherState.js.map +1 -1
- package/dist/esm/dtls/record/DtlsRecord.d.ts +10 -10
- package/dist/esm/dtls/record/DtlsRecord.d.ts.map +1 -1
- package/dist/esm/dtls/record/DtlsRecord.js +11 -9
- package/dist/esm/dtls/record/DtlsRecord.js.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestCapability.d.ts +3 -4
- package/dist/esm/otbr-rest/OtbrRestCapability.d.ts.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestClient.d.ts +27 -8
- package/dist/esm/otbr-rest/OtbrRestClient.d.ts.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestClient.js +51 -21
- package/dist/esm/otbr-rest/OtbrRestClient.js.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts +2 -1
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js +4 -4
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestProbe.d.ts +6 -4
- package/dist/esm/otbr-rest/OtbrRestProbe.d.ts.map +1 -1
- package/dist/esm/otbr-rest/OtbrRestProbe.js +12 -44
- package/dist/esm/otbr-rest/OtbrRestProbe.js.map +1 -1
- package/dist/esm/otbr-rest/caseNormalizer.d.ts +7 -0
- package/dist/esm/otbr-rest/caseNormalizer.d.ts.map +1 -1
- package/dist/esm/otbr-rest/caseNormalizer.js +11 -0
- package/dist/esm/otbr-rest/caseNormalizer.js.map +1 -1
- package/dist/esm/otbr-rest/parseHexBytes.d.ts +22 -0
- package/dist/esm/otbr-rest/parseHexBytes.d.ts.map +1 -0
- package/dist/esm/otbr-rest/parseHexBytes.js +30 -0
- package/dist/esm/otbr-rest/parseHexBytes.js.map +6 -0
- package/dist/esm/otbr-rest/translation.d.ts +2 -1
- package/dist/esm/otbr-rest/translation.d.ts.map +1 -1
- package/dist/esm/otbr-rest/translation.js +16 -18
- package/dist/esm/otbr-rest/translation.js.map +1 -1
- package/dist/esm/selection/selectBr.d.ts +8 -4
- package/dist/esm/selection/selectBr.d.ts.map +1 -1
- package/dist/esm/selection/selectBr.js +6 -5
- package/dist/esm/selection/selectBr.js.map +1 -1
- package/dist/esm/selection/withExtPanIdLock.d.ts +2 -1
- package/dist/esm/selection/withExtPanIdLock.d.ts.map +1 -1
- package/dist/esm/selection/withExtPanIdLock.js.map +1 -1
- package/dist/esm/tlv/BasicTlvCodec.d.ts +4 -4
- package/dist/esm/tlv/BasicTlvCodec.d.ts.map +1 -1
- package/dist/esm/tlv/BasicTlvCodec.js +14 -12
- package/dist/esm/tlv/BasicTlvCodec.js.map +1 -1
- package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts +3 -2
- package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts.map +1 -1
- package/dist/esm/tlv/NetworkDiagnosticTlv.js.map +1 -1
- package/dist/esm/tlv/TypeListTlv.d.ts +3 -2
- package/dist/esm/tlv/TypeListTlv.d.ts.map +1 -1
- package/dist/esm/tlv/TypeListTlv.js +2 -2
- package/dist/esm/tlv/TypeListTlv.js.map +1 -1
- package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts +3 -2
- package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -1
- package/dist/esm/tlv/diag/ChildIpv6AddressList.js +5 -3
- package/dist/esm/tlv/diag/ChildIpv6AddressList.js.map +1 -1
- package/dist/esm/tlv/diag/ChildTable.d.ts +3 -2
- package/dist/esm/tlv/diag/ChildTable.d.ts.map +1 -1
- package/dist/esm/tlv/diag/ChildTable.js +8 -7
- package/dist/esm/tlv/diag/ChildTable.js.map +1 -1
- package/dist/esm/tlv/diag/Connectivity.d.ts +3 -2
- package/dist/esm/tlv/diag/Connectivity.d.ts.map +1 -1
- package/dist/esm/tlv/diag/Connectivity.js +14 -14
- package/dist/esm/tlv/diag/Connectivity.js.map +1 -1
- package/dist/esm/tlv/diag/Ipv6AddressList.d.ts +3 -2
- package/dist/esm/tlv/diag/Ipv6AddressList.d.ts.map +1 -1
- package/dist/esm/tlv/diag/Ipv6AddressList.js +7 -6
- package/dist/esm/tlv/diag/Ipv6AddressList.js.map +1 -1
- package/dist/esm/tlv/diag/LeaderData.d.ts +3 -2
- package/dist/esm/tlv/diag/LeaderData.d.ts.map +1 -1
- package/dist/esm/tlv/diag/LeaderData.js +9 -8
- package/dist/esm/tlv/diag/LeaderData.js.map +1 -1
- package/dist/esm/tlv/diag/MacCounters.d.ts +3 -2
- package/dist/esm/tlv/diag/MacCounters.d.ts.map +1 -1
- package/dist/esm/tlv/diag/MacCounters.js +13 -12
- package/dist/esm/tlv/diag/MacCounters.js.map +1 -1
- package/dist/esm/tlv/diag/MleCounters.d.ts +3 -2
- package/dist/esm/tlv/diag/MleCounters.d.ts.map +1 -1
- package/dist/esm/tlv/diag/MleCounters.js +19 -18
- package/dist/esm/tlv/diag/MleCounters.js.map +1 -1
- package/dist/esm/tlv/diag/Mode.d.ts +3 -2
- package/dist/esm/tlv/diag/Mode.d.ts.map +1 -1
- package/dist/esm/tlv/diag/Mode.js +5 -3
- package/dist/esm/tlv/diag/Mode.js.map +1 -1
- package/dist/esm/tlv/diag/NetworkData.d.ts +7 -6
- package/dist/esm/tlv/diag/NetworkData.d.ts.map +1 -1
- package/dist/esm/tlv/diag/NetworkData.js +23 -18
- package/dist/esm/tlv/diag/NetworkData.js.map +1 -1
- package/dist/esm/tlv/diag/Primitives.d.ts +15 -14
- package/dist/esm/tlv/diag/Primitives.d.ts.map +1 -1
- package/dist/esm/tlv/diag/Primitives.js +26 -20
- package/dist/esm/tlv/diag/Primitives.js.map +1 -1
- package/dist/esm/tlv/diag/Route64.d.ts +3 -2
- package/dist/esm/tlv/diag/Route64.d.ts.map +1 -1
- package/dist/esm/tlv/diag/Route64.js +9 -8
- package/dist/esm/tlv/diag/Route64.js.map +1 -1
- package/dist/esm/tlv/diag/RouterNeighbor.d.ts +3 -2
- package/dist/esm/tlv/diag/RouterNeighbor.d.ts.map +1 -1
- package/dist/esm/tlv/diag/RouterNeighbor.js +13 -11
- package/dist/esm/tlv/diag/RouterNeighbor.js.map +1 -1
- package/dist/esm/tlv/diag/Timeout.d.ts +3 -2
- package/dist/esm/tlv/diag/Timeout.d.ts.map +1 -1
- package/dist/esm/tlv/diag/Timeout.js +5 -4
- package/dist/esm/tlv/diag/Timeout.js.map +1 -1
- package/dist/esm/tlv/diag/VendorInfo.d.ts +13 -12
- package/dist/esm/tlv/diag/VendorInfo.d.ts.map +1 -1
- package/dist/esm/tlv/diag/VendorInfo.js +5 -4
- package/dist/esm/tlv/diag/VendorInfo.js.map +1 -1
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts +3 -2
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -1
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.js +7 -4
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.js.map +1 -1
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts +4 -3
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -1
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js +10 -8
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js.map +1 -1
- package/dist/esm/util/meshLocalAddr.d.ts +5 -4
- package/dist/esm/util/meshLocalAddr.d.ts.map +1 -1
- package/dist/esm/util/meshLocalAddr.js +7 -5
- package/dist/esm/util/meshLocalAddr.js.map +1 -1
- package/package.json +5 -5
- package/src/coap/CoapClient.ts +13 -20
- package/src/coap/CoapMessage.ts +17 -9
- package/src/commissioner/Commissioner.ts +5 -2
- package/src/commissioner/LeadKa.ts +4 -4
- package/src/commissioner/LeadPet.ts +6 -5
- package/src/credentials/ThreadCredentialsRegistry.ts +14 -13
- package/src/credentials/ThreadNetworkCredentials.ts +5 -3
- package/src/crypto/AesCmacPrf128.ts +10 -87
- package/src/crypto/Pbkdf2AesCmac.ts +14 -10
- package/src/crypto/Pskc.ts +7 -6
- package/src/crypto/index.ts +1 -1
- package/src/dataset/OperationalDataset.ts +48 -47
- package/src/dataset/SecurityPolicy.ts +8 -7
- package/src/diagnostic/DiagnosticResponse.ts +5 -4
- package/src/diagnostic/DiagnosticSource.ts +2 -2
- package/src/diagnostic/MeshCopDiagnosticSource.ts +80 -64
- package/src/diagnostic/connectMeshcop.ts +6 -14
- package/src/diagnostic/errors.ts +1 -1
- package/src/discovery/BorderRouterRegistry.ts +2 -4
- package/src/dtls/channel/DtlsConnectOpts.ts +3 -3
- package/src/dtls/channel/NobleDtlsChannel.ts +96 -60
- package/src/dtls/ecjpake/EcJpakePms.ts +5 -6
- package/src/dtls/ecjpake/EcJpakeRound.ts +57 -37
- package/src/dtls/ecjpake/SchnorrZkp.ts +43 -30
- package/src/dtls/handshake/ChangeCipherSpec.ts +3 -1
- package/src/dtls/handshake/ClientHelloMessage.ts +8 -6
- package/src/dtls/handshake/ClientKeyExchangeMessage.ts +2 -1
- package/src/dtls/handshake/DtlsClient.ts +119 -95
- package/src/dtls/handshake/FinishedMessage.ts +5 -3
- package/src/dtls/handshake/HandshakeMessage.ts +18 -16
- package/src/dtls/handshake/HelloVerifyRequestMessage.ts +3 -1
- package/src/dtls/handshake/ServerHelloDoneMessage.ts +5 -3
- package/src/dtls/handshake/ServerHelloMessage.ts +5 -3
- package/src/dtls/handshake/ServerKeyExchangeMessage.ts +2 -1
- package/src/dtls/prf/HandshakeTranscript.ts +18 -11
- package/src/dtls/prf/TlsPrf.ts +68 -54
- package/src/dtls/record/AesCcm8.ts +23 -49
- package/src/dtls/record/DtlsCipherState.ts +20 -16
- package/src/dtls/record/DtlsRecord.ts +17 -15
- package/src/otbr-rest/OtbrRestCapability.ts +4 -4
- package/src/otbr-rest/OtbrRestClient.ts +64 -29
- package/src/otbr-rest/OtbrRestDiagnosticSource.ts +5 -5
- package/src/otbr-rest/OtbrRestProbe.ts +12 -47
- package/src/otbr-rest/caseNormalizer.ts +17 -0
- package/src/otbr-rest/parseHexBytes.ts +47 -0
- package/src/otbr-rest/translation.ts +24 -22
- package/src/selection/selectBr.ts +26 -13
- package/src/selection/withExtPanIdLock.ts +1 -1
- package/src/tlv/BasicTlvCodec.ts +17 -15
- package/src/tlv/NetworkDiagnosticTlv.ts +3 -2
- package/src/tlv/TypeListTlv.ts +4 -4
- package/src/tlv/diag/ChildIpv6AddressList.ts +8 -5
- package/src/tlv/diag/ChildTable.ts +10 -9
- package/src/tlv/diag/Connectivity.ts +16 -16
- package/src/tlv/diag/Ipv6AddressList.ts +9 -8
- package/src/tlv/diag/LeaderData.ts +11 -10
- package/src/tlv/diag/MacCounters.ts +15 -14
- package/src/tlv/diag/MleCounters.ts +21 -20
- package/src/tlv/diag/Mode.ts +7 -5
- package/src/tlv/diag/NetworkData.ts +31 -26
- package/src/tlv/diag/Primitives.ts +42 -36
- package/src/tlv/diag/Route64.ts +11 -10
- package/src/tlv/diag/RouterNeighbor.ts +16 -13
- package/src/tlv/diag/Timeout.ts +7 -6
- package/src/tlv/diag/VendorInfo.ts +19 -18
- package/src/tlv/meshcop/Ip6AddressTlv.ts +9 -6
- package/src/tlv/meshcop/UdpEncapsulationTlv.ts +13 -11
- package/src/util/meshLocalAddr.ts +10 -8
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
import {
|
|
8
8
|
Bytes,
|
|
9
9
|
Crypto,
|
|
10
|
+
type Duration,
|
|
10
11
|
type Entropy,
|
|
11
12
|
type Environment,
|
|
13
|
+
errorOf,
|
|
12
14
|
ImplementationError,
|
|
13
15
|
Logger,
|
|
14
16
|
Millis,
|
|
@@ -99,6 +101,8 @@ export interface EnergyScanOpts {
|
|
|
99
101
|
count: number;
|
|
100
102
|
period: number;
|
|
101
103
|
scanDuration: number;
|
|
104
|
+
/** How long to wait for the `c/er` report before failing. Defaults to 30s. */
|
|
105
|
+
timeout?: Duration;
|
|
102
106
|
}
|
|
103
107
|
|
|
104
108
|
export interface EnergyScanEntry {
|
|
@@ -109,6 +113,8 @@ export interface EnergyScanEntry {
|
|
|
109
113
|
export interface PanIdQueryOpts {
|
|
110
114
|
panId: number;
|
|
111
115
|
channelMask: number;
|
|
116
|
+
/** How long to wait for a `c/pc` conflict before resolving `undefined`. Defaults to 30s. */
|
|
117
|
+
timeout?: Duration;
|
|
112
118
|
}
|
|
113
119
|
|
|
114
120
|
export interface PanIdConflict {
|
|
@@ -131,14 +137,14 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
131
137
|
readonly #commissioner: Pick<Commissioner, "withSession">;
|
|
132
138
|
readonly #coap: Pick<CoapClient, "request" | "listen">;
|
|
133
139
|
readonly #entropy: Entropy;
|
|
134
|
-
readonly #mlPrefix?:
|
|
140
|
+
readonly #mlPrefix?: Bytes;
|
|
135
141
|
#innerMessageId: number;
|
|
136
142
|
|
|
137
143
|
constructor(
|
|
138
144
|
commissioner: Pick<Commissioner, "withSession">,
|
|
139
145
|
coap: Pick<CoapClient, "request" | "listen">,
|
|
140
146
|
environment: Environment,
|
|
141
|
-
mlPrefix?:
|
|
147
|
+
mlPrefix?: Bytes,
|
|
142
148
|
) {
|
|
143
149
|
this.#commissioner = commissioner;
|
|
144
150
|
this.#coap = coap;
|
|
@@ -147,7 +153,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
147
153
|
this.#innerMessageId = this.#entropy.randomUint16;
|
|
148
154
|
}
|
|
149
155
|
|
|
150
|
-
canQuery(_extPanId:
|
|
156
|
+
canQuery(_extPanId: Bytes): boolean {
|
|
151
157
|
return true;
|
|
152
158
|
}
|
|
153
159
|
|
|
@@ -181,26 +187,28 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
181
187
|
const unsubscribe = this.#coap.listen(PROXY_RX_URI, msg => {
|
|
182
188
|
const inner = unwrapProxyRx(msg.payload);
|
|
183
189
|
if (inner === undefined) {
|
|
184
|
-
logger.debug("
|
|
190
|
+
logger.debug("unicast c/ur unwrap empty, dropping");
|
|
185
191
|
return;
|
|
186
192
|
}
|
|
187
193
|
this.#ackInnerIfNeeded(inner);
|
|
188
194
|
if (!tokensEqual(inner.message.token, token)) {
|
|
189
195
|
logger.debug(
|
|
190
|
-
`
|
|
196
|
+
`unicast c/ur token mismatch want=${Bytes.toHex(token)} got=${Bytes.toHex(inner.message.token)}, dropping`,
|
|
191
197
|
);
|
|
192
198
|
return;
|
|
193
199
|
}
|
|
194
200
|
try {
|
|
195
201
|
resolveResponse(decodeResponse(inner.message.payload));
|
|
196
202
|
} catch (err) {
|
|
197
|
-
rejectResponse(
|
|
203
|
+
rejectResponse(errorOf(err));
|
|
198
204
|
}
|
|
199
205
|
});
|
|
200
206
|
|
|
201
207
|
const timer = Time.getTimer("meshcop-unicast-timeout", DEFAULT_UNICAST_TIMEOUT, () => {
|
|
202
208
|
rejectResponse(
|
|
203
|
-
new
|
|
209
|
+
new ThreadDiagError(
|
|
210
|
+
`MeshCopDiagnosticSource: unicast diagnostic to ${formatIp6(targetAddr)} timed out`,
|
|
211
|
+
),
|
|
204
212
|
);
|
|
205
213
|
}).start();
|
|
206
214
|
|
|
@@ -251,7 +259,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
251
259
|
fillTimers = [];
|
|
252
260
|
unsubscribe?.();
|
|
253
261
|
logger.debug(
|
|
254
|
-
`
|
|
262
|
+
`queryMulticast DONE nodes=${nodeCount} duration=${Date.now() - start}ms window=${windowMs}ms`,
|
|
255
263
|
);
|
|
256
264
|
resolveTeardown();
|
|
257
265
|
};
|
|
@@ -264,7 +272,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
264
272
|
const sessionPromise = this.#commissioner
|
|
265
273
|
.withSession(async () => {
|
|
266
274
|
if (closed) return;
|
|
267
|
-
logger.debug(`
|
|
275
|
+
logger.debug(`queryMulticast START tlvs=${opts.tlvTypes.length} window=${windowMs}ms`);
|
|
268
276
|
const collected = new Array<DiagnosticResponse>();
|
|
269
277
|
const probed = new Set<number>();
|
|
270
278
|
const seenProxyRx = new Set<string>();
|
|
@@ -278,20 +286,20 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
278
286
|
seenProxyRx.add(rawKey);
|
|
279
287
|
const inner = unwrapProxyRx(msg.payload);
|
|
280
288
|
if (inner === undefined) {
|
|
281
|
-
logger.debug("
|
|
289
|
+
logger.debug("c/ur unwrap empty, dropping");
|
|
282
290
|
return;
|
|
283
291
|
}
|
|
284
292
|
this.#ackInnerIfNeeded(inner);
|
|
285
|
-
if (inner.message.payload.
|
|
293
|
+
if (inner.message.payload.byteLength === 0) return;
|
|
286
294
|
try {
|
|
287
295
|
const decoded = decodeResponse(inner.message.payload);
|
|
288
296
|
collected.push(decoded);
|
|
289
297
|
nodeCount++;
|
|
290
|
-
logger.debug(`
|
|
298
|
+
logger.debug(`c/ur arrival from=${formatIp6(inner.sourceAddr)}`);
|
|
291
299
|
onNode.emit(decoded);
|
|
292
300
|
} catch (err) {
|
|
293
|
-
logger.warn("
|
|
294
|
-
onError.emit(
|
|
301
|
+
logger.warn("failed to decode c/ur inner payload, dropping:", err);
|
|
302
|
+
onError.emit(errorOf(err));
|
|
295
303
|
}
|
|
296
304
|
});
|
|
297
305
|
|
|
@@ -310,10 +318,10 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
310
318
|
uriPath: PROXY_TX_URI,
|
|
311
319
|
payload: proxyPayload,
|
|
312
320
|
});
|
|
313
|
-
logger.debug(`
|
|
321
|
+
logger.debug(`c/ut ProxyTx (/d/dq -> ${scope}) sent`);
|
|
314
322
|
} catch (err) {
|
|
315
|
-
logger.warn(`
|
|
316
|
-
onError.emit(
|
|
323
|
+
logger.warn(`c/ut ProxyTx send failed: ${err}`);
|
|
324
|
+
onError.emit(errorOf(err));
|
|
317
325
|
}
|
|
318
326
|
|
|
319
327
|
if (this.#mlPrefix !== undefined && !closed) {
|
|
@@ -326,7 +334,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
326
334
|
const target = deriveMeshLocalAddress(mlPrefix, (routerId << 10) & 0xffff);
|
|
327
335
|
const fillToken = this.#freshToken();
|
|
328
336
|
const fillInner = this.#encodeInnerDiag("CON", DIAG_GET_URI, opts.tlvTypes, fillToken);
|
|
329
|
-
logger.debug(`
|
|
337
|
+
logger.debug(`unicast-fill router=${routerId} target=${formatIp6(target)}`);
|
|
330
338
|
void this.#coap
|
|
331
339
|
.request({
|
|
332
340
|
type: "NON",
|
|
@@ -334,9 +342,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
334
342
|
uriPath: PROXY_TX_URI,
|
|
335
343
|
payload: this.#wrapProxyTx(target, fillInner),
|
|
336
344
|
})
|
|
337
|
-
.catch(err =>
|
|
338
|
-
logger.warn(`[ThreadDiag] unicast-fill router=${routerId} send failed: ${err}`),
|
|
339
|
-
);
|
|
345
|
+
.catch(err => logger.warn(`unicast-fill router=${routerId} send failed: ${err}`));
|
|
340
346
|
}
|
|
341
347
|
};
|
|
342
348
|
fillTimers = [
|
|
@@ -352,13 +358,13 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
352
358
|
).start(),
|
|
353
359
|
];
|
|
354
360
|
} else {
|
|
355
|
-
logger.debug("
|
|
361
|
+
logger.debug("unicast-fill skipped: no mesh-local prefix");
|
|
356
362
|
}
|
|
357
363
|
|
|
358
364
|
await teardownPromise;
|
|
359
365
|
})
|
|
360
366
|
.catch(err => {
|
|
361
|
-
onError.emit(
|
|
367
|
+
onError.emit(errorOf(err));
|
|
362
368
|
teardown();
|
|
363
369
|
});
|
|
364
370
|
|
|
@@ -419,18 +425,21 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
419
425
|
rejectReport = rej;
|
|
420
426
|
});
|
|
421
427
|
|
|
428
|
+
// Start the timer before registering the listener: an out-of-range
|
|
429
|
+
// timeout makes getTimer throw, and doing so first avoids leaking
|
|
430
|
+
// the listener that a later throw would strand.
|
|
431
|
+
const timer = Time.getTimer("energy-scan-timeout", opts.timeout ?? DEFAULT_SCAN_TIMEOUT, () => {
|
|
432
|
+
rejectReport(new ThreadDiagError("MeshCopDiagnosticSource: energyScan timed out waiting for c/er"));
|
|
433
|
+
}).start();
|
|
434
|
+
|
|
422
435
|
const unsubscribe = this.#coap.listen(ENERGY_REPORT_URI, msg => {
|
|
423
436
|
try {
|
|
424
437
|
resolveReport(decodeEnergyReport(msg.payload, opts.channelMask));
|
|
425
438
|
} catch (err) {
|
|
426
|
-
rejectReport(
|
|
439
|
+
rejectReport(errorOf(err));
|
|
427
440
|
}
|
|
428
441
|
});
|
|
429
442
|
|
|
430
|
-
const timer = Time.getTimer("energy-scan-timeout", DEFAULT_SCAN_TIMEOUT, () => {
|
|
431
|
-
rejectReport(new Error("MeshCopDiagnosticSource: energyScan timed out waiting for c/er"));
|
|
432
|
-
}).start();
|
|
433
|
-
|
|
434
443
|
try {
|
|
435
444
|
await this.#coap.request({
|
|
436
445
|
type: "NON",
|
|
@@ -468,19 +477,21 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
468
477
|
rejectReport = rej;
|
|
469
478
|
});
|
|
470
479
|
|
|
480
|
+
// No conflict = no c/pc arrives; resolve undefined after timeout.
|
|
481
|
+
// Start the timer before the listener so an out-of-range timeout
|
|
482
|
+
// throws from getTimer without leaking the listener.
|
|
483
|
+
const timer = Time.getTimer("panid-query-timeout", opts.timeout ?? DEFAULT_SCAN_TIMEOUT, () => {
|
|
484
|
+
resolveReport(undefined);
|
|
485
|
+
}).start();
|
|
486
|
+
|
|
471
487
|
const unsubscribe = this.#coap.listen(PANID_CONFLICT_URI, msg => {
|
|
472
488
|
try {
|
|
473
489
|
resolveReport(decodePanIdConflict(msg.payload, opts.panId));
|
|
474
490
|
} catch (err) {
|
|
475
|
-
rejectReport(
|
|
491
|
+
rejectReport(errorOf(err));
|
|
476
492
|
}
|
|
477
493
|
});
|
|
478
494
|
|
|
479
|
-
// No conflict = no c/pc arrives; resolve undefined after timeout.
|
|
480
|
-
const timer = Time.getTimer("panid-query-timeout", DEFAULT_SCAN_TIMEOUT, () => {
|
|
481
|
-
resolveReport(undefined);
|
|
482
|
-
}).start();
|
|
483
|
-
|
|
484
495
|
try {
|
|
485
496
|
await this.#coap.request({
|
|
486
497
|
type: "NON",
|
|
@@ -496,7 +507,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
496
507
|
});
|
|
497
508
|
}
|
|
498
509
|
|
|
499
|
-
#encodeInnerDiag(type: "CON" | "NON", uriPath: string[], tlvTypes: number[], token:
|
|
510
|
+
#encodeInnerDiag(type: "CON" | "NON", uriPath: string[], tlvTypes: number[], token: Bytes): Bytes {
|
|
500
511
|
return CoapMessage.encode({
|
|
501
512
|
type,
|
|
502
513
|
code: "0.02",
|
|
@@ -510,11 +521,11 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
510
521
|
}
|
|
511
522
|
|
|
512
523
|
#wrapProxyTx(
|
|
513
|
-
targetAddr:
|
|
514
|
-
innerCoapBytes:
|
|
524
|
+
targetAddr: Bytes,
|
|
525
|
+
innerCoapBytes: Bytes,
|
|
515
526
|
sourcePort = PROXY_SRC_PORT,
|
|
516
527
|
destinationPort = TMF_PORT,
|
|
517
|
-
):
|
|
528
|
+
): Bytes {
|
|
518
529
|
return BasicTlv.encode([
|
|
519
530
|
{
|
|
520
531
|
type: MeshCopTlvType.UDP_ENCAPSULATION,
|
|
@@ -544,7 +555,7 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
544
555
|
const proxyPayload = this.#wrapProxyTx(inner.sourceAddr, ackBytes, inner.destinationPort, inner.sourcePort);
|
|
545
556
|
void this.#coap
|
|
546
557
|
.request({ type: "NON", code: "0.02", uriPath: PROXY_TX_URI, payload: proxyPayload })
|
|
547
|
-
.catch(err => logger.debug("
|
|
558
|
+
.catch(err => logger.debug("inner ACK send failed:", err));
|
|
548
559
|
}
|
|
549
560
|
|
|
550
561
|
#nextInnerMessageId(): number {
|
|
@@ -553,13 +564,13 @@ export class MeshCopDiagnosticSource implements DiagnosticSource {
|
|
|
553
564
|
return id;
|
|
554
565
|
}
|
|
555
566
|
|
|
556
|
-
#freshToken():
|
|
567
|
+
#freshToken(): Bytes {
|
|
557
568
|
return Bytes.of(this.#entropy.randomBytes(4));
|
|
558
569
|
}
|
|
559
570
|
}
|
|
560
571
|
|
|
561
572
|
interface ProxyRxInner {
|
|
562
|
-
sourceAddr:
|
|
573
|
+
sourceAddr: Bytes;
|
|
563
574
|
sourcePort: number;
|
|
564
575
|
destinationPort: number;
|
|
565
576
|
message: CoapMessage;
|
|
@@ -571,17 +582,17 @@ interface ProxyRxInner {
|
|
|
571
582
|
* responder's source address. Returns `undefined` if the required TLVs are
|
|
572
583
|
* absent or the inner CoAP message cannot be parsed.
|
|
573
584
|
*/
|
|
574
|
-
function unwrapProxyRx(payload:
|
|
585
|
+
function unwrapProxyRx(payload: Bytes): ProxyRxInner | undefined {
|
|
575
586
|
let entries: ReturnType<typeof BasicTlv.walk>;
|
|
576
587
|
try {
|
|
577
588
|
entries = BasicTlv.walk(payload);
|
|
578
589
|
} catch (err) {
|
|
579
|
-
logger.warn("
|
|
590
|
+
logger.warn("c/ur outer TLV parse failed, dropping:", err);
|
|
580
591
|
return undefined;
|
|
581
592
|
}
|
|
582
593
|
|
|
583
594
|
let encap: ReturnType<typeof UdpEncapsulationTlv.decode> | undefined;
|
|
584
|
-
let sourceAddr:
|
|
595
|
+
let sourceAddr: Bytes | undefined;
|
|
585
596
|
for (const entry of entries) {
|
|
586
597
|
if (entry.type === MeshCopTlvType.UDP_ENCAPSULATION) {
|
|
587
598
|
encap = UdpEncapsulationTlv.decode(entry.value);
|
|
@@ -591,7 +602,7 @@ function unwrapProxyRx(payload: Uint8Array): ProxyRxInner | undefined {
|
|
|
591
602
|
}
|
|
592
603
|
if (encap === undefined || sourceAddr === undefined) {
|
|
593
604
|
logger.debug(
|
|
594
|
-
`
|
|
605
|
+
`c/ur missing TLVs: encap=${encap !== undefined} ip6=${sourceAddr !== undefined} types=[${entries.map(e => e.type).join(",")}]`,
|
|
595
606
|
);
|
|
596
607
|
return undefined;
|
|
597
608
|
}
|
|
@@ -600,21 +611,23 @@ function unwrapProxyRx(payload: Uint8Array): ProxyRxInner | undefined {
|
|
|
600
611
|
try {
|
|
601
612
|
inner = CoapMessage.decode(encap.payload);
|
|
602
613
|
} catch (err) {
|
|
603
|
-
logger.warn("
|
|
614
|
+
logger.warn("c/ur inner CoAP parse failed, dropping:", err);
|
|
604
615
|
return undefined;
|
|
605
616
|
}
|
|
606
617
|
return { sourceAddr, sourcePort: encap.sourcePort, destinationPort: encap.destinationPort, message: inner };
|
|
607
618
|
}
|
|
608
619
|
|
|
609
|
-
function tokensEqual(a:
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
620
|
+
function tokensEqual(a: Bytes, b: Bytes): boolean {
|
|
621
|
+
const bufA = Bytes.of(a);
|
|
622
|
+
const bufB = Bytes.of(b);
|
|
623
|
+
if (bufA.length !== bufB.length) return false;
|
|
624
|
+
for (let i = 0; i < bufA.length; i++) {
|
|
625
|
+
if (bufA[i] !== bufB[i]) return false;
|
|
613
626
|
}
|
|
614
627
|
return true;
|
|
615
628
|
}
|
|
616
629
|
|
|
617
|
-
function encodeScanRequest(opts: EnergyScanOpts):
|
|
630
|
+
function encodeScanRequest(opts: EnergyScanOpts): Bytes {
|
|
618
631
|
const mask = new Uint8Array(4);
|
|
619
632
|
mask[0] = (opts.channelMask >> 24) & 0xff;
|
|
620
633
|
mask[1] = (opts.channelMask >> 16) & 0xff;
|
|
@@ -637,13 +650,13 @@ function encodeScanRequest(opts: EnergyScanOpts): Uint8Array {
|
|
|
637
650
|
]);
|
|
638
651
|
}
|
|
639
652
|
|
|
640
|
-
function decodeEnergyReport(payload:
|
|
653
|
+
function decodeEnergyReport(payload: Bytes, channelMask: number): Array<EnergyScanEntry> {
|
|
641
654
|
const entries = BasicTlv.walk(payload);
|
|
642
655
|
const energyEntry = entries.find(e => e.type === MeshCopTlvType.ENERGY_LIST);
|
|
643
656
|
if (energyEntry === undefined) {
|
|
644
657
|
throw new ThreadDiagError("MeshCopDiagnosticSource: c/er missing ENERGY_LIST TLV");
|
|
645
658
|
}
|
|
646
|
-
const energyBytes = energyEntry.value;
|
|
659
|
+
const energyBytes = Bytes.of(energyEntry.value);
|
|
647
660
|
const result = new Array<EnergyScanEntry>();
|
|
648
661
|
let byteIndex = 0;
|
|
649
662
|
for (let ch = 0; ch < 32; ch++) {
|
|
@@ -658,7 +671,7 @@ function decodeEnergyReport(payload: Uint8Array, channelMask: number): Array<Ene
|
|
|
658
671
|
return result;
|
|
659
672
|
}
|
|
660
673
|
|
|
661
|
-
function encodePanIdQuery(opts: PanIdQueryOpts):
|
|
674
|
+
function encodePanIdQuery(opts: PanIdQueryOpts): Bytes {
|
|
662
675
|
const mask = new Uint8Array(4);
|
|
663
676
|
mask[0] = (opts.channelMask >> 24) & 0xff;
|
|
664
677
|
mask[1] = (opts.channelMask >> 16) & 0xff;
|
|
@@ -675,25 +688,28 @@ function encodePanIdQuery(opts: PanIdQueryOpts): Uint8Array {
|
|
|
675
688
|
]);
|
|
676
689
|
}
|
|
677
690
|
|
|
678
|
-
function decodePanIdConflict(payload:
|
|
691
|
+
function decodePanIdConflict(payload: Bytes, expectedPanId: number): PanIdConflict {
|
|
679
692
|
const entries = BasicTlv.walk(payload);
|
|
680
693
|
const maskEntry = entries.find(e => e.type === MeshCopTlvType.CHANNEL_MASK);
|
|
681
694
|
if (maskEntry === undefined) {
|
|
682
695
|
throw new ThreadDiagError("MeshCopDiagnosticSource: c/pc missing CHANNEL_MASK TLV");
|
|
683
696
|
}
|
|
684
|
-
const mv = maskEntry.value;
|
|
697
|
+
const mv = Bytes.of(maskEntry.value);
|
|
685
698
|
if (mv.length < 4) {
|
|
686
699
|
throw new ThreadDiagError(`MeshCopDiagnosticSource: c/pc CHANNEL_MASK too short (${mv.length} bytes)`);
|
|
687
700
|
}
|
|
688
701
|
const conflictChannelMask = ((mv[0] << 24) | (mv[1] << 16) | (mv[2] << 8) | mv[3]) >>> 0;
|
|
689
702
|
|
|
690
703
|
const panIdEntry = entries.find(e => e.type === MeshCopTlvType.PANID);
|
|
691
|
-
if (panIdEntry !== undefined
|
|
692
|
-
const
|
|
693
|
-
if (
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
704
|
+
if (panIdEntry !== undefined) {
|
|
705
|
+
const panIdValue = Bytes.of(panIdEntry.value);
|
|
706
|
+
if (panIdValue.length >= 2) {
|
|
707
|
+
const reportedPanId = (panIdValue[0] << 8) | panIdValue[1];
|
|
708
|
+
if (reportedPanId !== expectedPanId) {
|
|
709
|
+
logger.warn(
|
|
710
|
+
`c/pc PAN-ID mismatch: expected=0x${expectedPanId.toString(16)} got=0x${reportedPanId.toString(16)}, ignoring`,
|
|
711
|
+
);
|
|
712
|
+
}
|
|
697
713
|
}
|
|
698
714
|
}
|
|
699
715
|
|
|
@@ -717,9 +733,9 @@ export function missingRouterIds(responses: ReadonlyArray<DiagnosticResponse>):
|
|
|
717
733
|
return missing.sort((a, b) => a - b);
|
|
718
734
|
}
|
|
719
735
|
|
|
720
|
-
function decodeResponse(payload:
|
|
736
|
+
function decodeResponse(payload: Bytes): DiagnosticResponse {
|
|
721
737
|
const entries = NetworkDiagnosticTlv.decode(payload);
|
|
722
|
-
const result: DiagnosticResponse = { unknown: new Array<{ type: number; value:
|
|
738
|
+
const result: DiagnosticResponse = { unknown: new Array<{ type: number; value: Bytes }>() };
|
|
723
739
|
|
|
724
740
|
for (const entry of entries) {
|
|
725
741
|
switch (entry.type) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { type Environment, ImplementationError, Logger } from "@matter/general";
|
|
7
|
+
import { type Environment, ImplementationError, Logger, ServerAddress } from "@matter/general";
|
|
8
8
|
import { CoapClient } from "../coap/CoapClient.js";
|
|
9
9
|
import { Commissioner } from "../commissioner/Commissioner.js";
|
|
10
10
|
import type { ThreadNetworkCredentials } from "../credentials/ThreadNetworkCredentials.js";
|
|
@@ -51,7 +51,7 @@ export async function connectMeshcop(opts: ConnectMeshcopOpts): Promise<MeshcopH
|
|
|
51
51
|
throw new ImplementationError("connectMeshcop: BR has no meshcopPort and no opts.port override");
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
logger.debug(`
|
|
54
|
+
logger.debug(`connectMeshcop START ${address}:${port}`);
|
|
55
55
|
const dtlsStart = Date.now();
|
|
56
56
|
const channel = await (opts.makeConnect ?? connectDtls)({
|
|
57
57
|
address,
|
|
@@ -60,7 +60,7 @@ export async function connectMeshcop(opts: ConnectMeshcopOpts): Promise<MeshcopH
|
|
|
60
60
|
type: address.includes(":") ? "udp6" : "udp4",
|
|
61
61
|
environment: opts.environment,
|
|
62
62
|
});
|
|
63
|
-
logger.debug(`
|
|
63
|
+
logger.debug(`DTLS handshake OK ${address}:${port} duration=${Date.now() - dtlsStart}ms`);
|
|
64
64
|
|
|
65
65
|
try {
|
|
66
66
|
const coap = new CoapClient(channel, opts.environment);
|
|
@@ -69,12 +69,12 @@ export async function connectMeshcop(opts: ConnectMeshcopOpts): Promise<MeshcopH
|
|
|
69
69
|
return {
|
|
70
70
|
source,
|
|
71
71
|
close: async () => {
|
|
72
|
-
logger.debug(`
|
|
72
|
+
logger.debug(`connectMeshcop CLOSE ${address}:${port}`);
|
|
73
73
|
await coap.close();
|
|
74
74
|
},
|
|
75
75
|
};
|
|
76
76
|
} catch (err) {
|
|
77
|
-
logger.warn(`
|
|
77
|
+
logger.warn(`connectMeshcop post-DTLS setup FAIL ${address}:${port}: ${err}`);
|
|
78
78
|
await channel.close().catch(() => {});
|
|
79
79
|
throw err;
|
|
80
80
|
}
|
|
@@ -87,7 +87,7 @@ function selectBrAddress(addresses: readonly string[]): string {
|
|
|
87
87
|
|
|
88
88
|
const usable = new Array<string>();
|
|
89
89
|
for (const addr of addresses) {
|
|
90
|
-
if (!
|
|
90
|
+
if (!ServerAddress.isIpv6LinkLocal(addr)) usable.push(addr);
|
|
91
91
|
}
|
|
92
92
|
if (usable.length === 0) {
|
|
93
93
|
throw new ImplementationError(
|
|
@@ -98,14 +98,6 @@ function selectBrAddress(addresses: readonly string[]): string {
|
|
|
98
98
|
return rankAddress(usable)[0];
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
function isLinkLocal(addr: string): boolean {
|
|
102
|
-
const lower = addr.toLowerCase();
|
|
103
|
-
if (lower.startsWith("fe8") || lower.startsWith("fe9") || lower.startsWith("fea") || lower.startsWith("feb")) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
101
|
/**
|
|
110
102
|
* Order: ULA IPv6 → other IPv6 → IPv4. ULA covers `fc00::/7` (`fc??`/`fd??`),
|
|
111
103
|
* which is what the OpenThread / OTBR routing prefix lives in.
|
package/src/diagnostic/errors.ts
CHANGED
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
|
|
7
7
|
import { MatterError } from "@matter/general";
|
|
8
8
|
|
|
9
|
-
/** Thrown when a MeshCoP diagnostic
|
|
9
|
+
/** Thrown when a MeshCoP diagnostic exchange fails — a malformed/missing TLV or a timed-out response. */
|
|
10
10
|
export class ThreadDiagError extends MatterError {}
|
|
@@ -335,9 +335,7 @@ export class BorderRouterRegistry {
|
|
|
335
335
|
// malformed; vendor stays unknown until/unless a `_meshcop` record arrives.
|
|
336
336
|
xaKey = deriveXaFromTrelInstance(name.qname);
|
|
337
337
|
if (xaKey !== undefined) {
|
|
338
|
-
logger.info(
|
|
339
|
-
`[ThreadDiag] TREL instance xa derived from instance name qname="${name.qname}" xa=${xaKey}`,
|
|
340
|
-
);
|
|
338
|
+
logger.info(`TREL instance xa derived from instance name qname="${name.qname}" xa=${xaKey}`);
|
|
341
339
|
}
|
|
342
340
|
}
|
|
343
341
|
if (xaKey === undefined) {
|
|
@@ -347,7 +345,7 @@ export class BorderRouterRegistry {
|
|
|
347
345
|
const nn = params.get("nn");
|
|
348
346
|
const vn = params.get("vn");
|
|
349
347
|
logger.info(
|
|
350
|
-
`
|
|
348
|
+
`BR instance dropped (no valid xa) qname="${name.qname}" source=${source} xa=${xaInfo} nn="${nn ?? ""}" vn="${vn ?? ""}"`,
|
|
351
349
|
);
|
|
352
350
|
return;
|
|
353
351
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { Environment } from "@matter/general";
|
|
7
|
+
import type { Bytes, Environment } from "@matter/general";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Connection parameters consumed by {@link connectDtls}. The `random` and
|
|
@@ -19,7 +19,7 @@ export interface DtlsConnectOpts {
|
|
|
19
19
|
port: number;
|
|
20
20
|
|
|
21
21
|
/** EC-JPAKE password (PSKc — 16 bytes for Thread MeshCoP). */
|
|
22
|
-
password:
|
|
22
|
+
password: Bytes;
|
|
23
23
|
|
|
24
24
|
/** Override the IPv4/IPv6 binding hint; default inferred from `address`. */
|
|
25
25
|
type?: "udp4" | "udp6";
|
|
@@ -40,7 +40,7 @@ export interface DtlsConnectOpts {
|
|
|
40
40
|
connectTimeoutMs?: number;
|
|
41
41
|
|
|
42
42
|
/** Override `random()` for deterministic testing. Production: CSPRNG. */
|
|
43
|
-
random?: () =>
|
|
43
|
+
random?: () => Bytes;
|
|
44
44
|
|
|
45
45
|
/** Override `ephemeralScalar()` for deterministic testing. Production: CSPRNG-backed. */
|
|
46
46
|
ephemeralScalar?: () => bigint;
|