@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.
Files changed (575) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +5 -5
  3. package/dist/cjs/coap/CoapClient.d.ts +2 -2
  4. package/dist/cjs/coap/CoapClient.d.ts.map +1 -1
  5. package/dist/cjs/coap/CoapClient.js +9 -16
  6. package/dist/cjs/coap/CoapClient.js.map +1 -1
  7. package/dist/cjs/coap/CoapMessage.d.ts +11 -6
  8. package/dist/cjs/coap/CoapMessage.d.ts.map +1 -1
  9. package/dist/cjs/coap/CoapMessage.js +8 -5
  10. package/dist/cjs/coap/CoapMessage.js.map +1 -1
  11. package/dist/cjs/commissioner/Commissioner.d.ts.map +1 -1
  12. package/dist/cjs/commissioner/Commissioner.js +5 -2
  13. package/dist/cjs/commissioner/Commissioner.js.map +1 -1
  14. package/dist/cjs/commissioner/LeadKa.d.ts +3 -3
  15. package/dist/cjs/commissioner/LeadKa.d.ts.map +1 -1
  16. package/dist/cjs/commissioner/LeadKa.js +1 -1
  17. package/dist/cjs/commissioner/LeadKa.js.map +1 -1
  18. package/dist/cjs/commissioner/LeadPet.d.ts +3 -2
  19. package/dist/cjs/commissioner/LeadPet.d.ts.map +1 -1
  20. package/dist/cjs/commissioner/LeadPet.js +4 -3
  21. package/dist/cjs/commissioner/LeadPet.js.map +1 -1
  22. package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts +5 -5
  23. package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts.map +1 -1
  24. package/dist/cjs/credentials/ThreadCredentialsRegistry.js +10 -9
  25. package/dist/cjs/credentials/ThreadCredentialsRegistry.js.map +1 -1
  26. package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts +4 -3
  27. package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts.map +1 -1
  28. package/dist/cjs/crypto/AesCmacPrf128.d.ts +4 -14
  29. package/dist/cjs/crypto/AesCmacPrf128.d.ts.map +1 -1
  30. package/dist/cjs/crypto/AesCmacPrf128.js +7 -71
  31. package/dist/cjs/crypto/AesCmacPrf128.js.map +2 -2
  32. package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts +5 -4
  33. package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts.map +1 -1
  34. package/dist/cjs/crypto/Pbkdf2AesCmac.js +5 -4
  35. package/dist/cjs/crypto/Pbkdf2AesCmac.js.map +1 -1
  36. package/dist/cjs/crypto/Pskc.d.ts +4 -3
  37. package/dist/cjs/crypto/Pskc.d.ts.map +1 -1
  38. package/dist/cjs/crypto/Pskc.js +6 -5
  39. package/dist/cjs/crypto/Pskc.js.map +1 -1
  40. package/dist/cjs/crypto/index.d.ts +1 -1
  41. package/dist/cjs/crypto/index.d.ts.map +1 -1
  42. package/dist/cjs/crypto/index.js +0 -1
  43. package/dist/cjs/crypto/index.js.map +1 -1
  44. package/dist/cjs/dataset/OperationalDataset.d.ts +10 -10
  45. package/dist/cjs/dataset/OperationalDataset.d.ts.map +1 -1
  46. package/dist/cjs/dataset/OperationalDataset.js +32 -31
  47. package/dist/cjs/dataset/OperationalDataset.js.map +1 -1
  48. package/dist/cjs/dataset/SecurityPolicy.d.ts +3 -2
  49. package/dist/cjs/dataset/SecurityPolicy.d.ts.map +1 -1
  50. package/dist/cjs/dataset/SecurityPolicy.js +5 -4
  51. package/dist/cjs/dataset/SecurityPolicy.js.map +1 -1
  52. package/dist/cjs/diagnostic/DiagnosticResponse.d.ts +5 -4
  53. package/dist/cjs/diagnostic/DiagnosticResponse.d.ts.map +1 -1
  54. package/dist/cjs/diagnostic/DiagnosticSource.d.ts +2 -2
  55. package/dist/cjs/diagnostic/DiagnosticSource.d.ts.map +1 -1
  56. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts +7 -3
  57. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -1
  58. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js +48 -43
  59. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js.map +1 -1
  60. package/dist/cjs/diagnostic/connectMeshcop.d.ts.map +1 -1
  61. package/dist/cjs/diagnostic/connectMeshcop.js +5 -12
  62. package/dist/cjs/diagnostic/connectMeshcop.js.map +1 -1
  63. package/dist/cjs/diagnostic/errors.d.ts +1 -1
  64. package/dist/cjs/diagnostic/errors.d.ts.map +1 -1
  65. package/dist/cjs/discovery/BorderRouterRegistry.d.ts.map +1 -1
  66. package/dist/cjs/discovery/BorderRouterRegistry.js +2 -4
  67. package/dist/cjs/discovery/BorderRouterRegistry.js.map +1 -1
  68. package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts +3 -3
  69. package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts.map +1 -1
  70. package/dist/cjs/dtls/channel/NobleDtlsChannel.d.ts.map +1 -1
  71. package/dist/cjs/dtls/channel/NobleDtlsChannel.js +89 -58
  72. package/dist/cjs/dtls/channel/NobleDtlsChannel.js.map +1 -1
  73. package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts +5 -4
  74. package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts.map +1 -1
  75. package/dist/cjs/dtls/ecjpake/EcJpakePms.js +4 -5
  76. package/dist/cjs/dtls/ecjpake/EcJpakePms.js.map +1 -1
  77. package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts +16 -15
  78. package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -1
  79. package/dist/cjs/dtls/ecjpake/EcJpakeRound.js +40 -29
  80. package/dist/cjs/dtls/ecjpake/EcJpakeRound.js.map +1 -1
  81. package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts +10 -9
  82. package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -1
  83. package/dist/cjs/dtls/ecjpake/SchnorrZkp.js +17 -13
  84. package/dist/cjs/dtls/ecjpake/SchnorrZkp.js.map +1 -1
  85. package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts +2 -1
  86. package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -1
  87. package/dist/cjs/dtls/handshake/ChangeCipherSpec.js +3 -1
  88. package/dist/cjs/dtls/handshake/ChangeCipherSpec.js.map +1 -1
  89. package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts +27 -4
  90. package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts.map +1 -1
  91. package/dist/cjs/dtls/handshake/ClientHelloMessage.js +3 -1
  92. package/dist/cjs/dtls/handshake/ClientHelloMessage.js.map +1 -1
  93. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts +2 -1
  94. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -1
  95. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.js.map +1 -1
  96. package/dist/cjs/dtls/handshake/DtlsClient.d.ts +9 -6
  97. package/dist/cjs/dtls/handshake/DtlsClient.d.ts.map +1 -1
  98. package/dist/cjs/dtls/handshake/DtlsClient.js +99 -77
  99. package/dist/cjs/dtls/handshake/DtlsClient.js.map +1 -1
  100. package/dist/cjs/dtls/handshake/FinishedMessage.d.ts +10 -3
  101. package/dist/cjs/dtls/handshake/FinishedMessage.d.ts.map +1 -1
  102. package/dist/cjs/dtls/handshake/FinishedMessage.js +4 -2
  103. package/dist/cjs/dtls/handshake/FinishedMessage.js.map +1 -1
  104. package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts +5 -4
  105. package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts.map +1 -1
  106. package/dist/cjs/dtls/handshake/HandshakeMessage.js +13 -11
  107. package/dist/cjs/dtls/handshake/HandshakeMessage.js.map +1 -1
  108. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts +19 -2
  109. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -1
  110. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js +3 -1
  111. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js.map +1 -1
  112. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts +2 -1
  113. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -1
  114. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js +3 -2
  115. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js.map +1 -1
  116. package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts +4 -3
  117. package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts.map +1 -1
  118. package/dist/cjs/dtls/handshake/ServerHelloMessage.js +3 -1
  119. package/dist/cjs/dtls/handshake/ServerHelloMessage.js.map +1 -1
  120. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts +2 -1
  121. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -1
  122. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.js.map +1 -1
  123. package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts +7 -5
  124. package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts.map +1 -1
  125. package/dist/cjs/dtls/prf/HandshakeTranscript.js +14 -9
  126. package/dist/cjs/dtls/prf/HandshakeTranscript.js.map +1 -1
  127. package/dist/cjs/dtls/prf/TlsPrf.d.ts +23 -22
  128. package/dist/cjs/dtls/prf/TlsPrf.d.ts.map +1 -1
  129. package/dist/cjs/dtls/prf/TlsPrf.js +33 -30
  130. package/dist/cjs/dtls/prf/TlsPrf.js.map +1 -1
  131. package/dist/cjs/dtls/record/AesCcm8.d.ts +13 -12
  132. package/dist/cjs/dtls/record/AesCcm8.d.ts.map +1 -1
  133. package/dist/cjs/dtls/record/AesCcm8.js +12 -34
  134. package/dist/cjs/dtls/record/AesCcm8.js.map +1 -1
  135. package/dist/cjs/dtls/record/DtlsCipherState.d.ts +11 -10
  136. package/dist/cjs/dtls/record/DtlsCipherState.d.ts.map +1 -1
  137. package/dist/cjs/dtls/record/DtlsCipherState.js +10 -6
  138. package/dist/cjs/dtls/record/DtlsCipherState.js.map +1 -1
  139. package/dist/cjs/dtls/record/DtlsRecord.d.ts +10 -10
  140. package/dist/cjs/dtls/record/DtlsRecord.d.ts.map +1 -1
  141. package/dist/cjs/dtls/record/DtlsRecord.js +10 -8
  142. package/dist/cjs/dtls/record/DtlsRecord.js.map +1 -1
  143. package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts +3 -4
  144. package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts.map +1 -1
  145. package/dist/cjs/otbr-rest/OtbrRestClient.d.ts +27 -8
  146. package/dist/cjs/otbr-rest/OtbrRestClient.d.ts.map +1 -1
  147. package/dist/cjs/otbr-rest/OtbrRestClient.js +50 -20
  148. package/dist/cjs/otbr-rest/OtbrRestClient.js.map +1 -1
  149. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts +2 -1
  150. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -1
  151. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js +3 -3
  152. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js.map +1 -1
  153. package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts +6 -4
  154. package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts.map +1 -1
  155. package/dist/cjs/otbr-rest/OtbrRestProbe.js +11 -43
  156. package/dist/cjs/otbr-rest/OtbrRestProbe.js.map +1 -1
  157. package/dist/cjs/otbr-rest/caseNormalizer.d.ts +7 -0
  158. package/dist/cjs/otbr-rest/caseNormalizer.d.ts.map +1 -1
  159. package/dist/cjs/otbr-rest/caseNormalizer.js +11 -0
  160. package/dist/cjs/otbr-rest/caseNormalizer.js.map +1 -1
  161. package/dist/cjs/otbr-rest/parseHexBytes.d.ts +22 -0
  162. package/dist/cjs/otbr-rest/parseHexBytes.d.ts.map +1 -0
  163. package/dist/cjs/otbr-rest/parseHexBytes.js +50 -0
  164. package/dist/cjs/otbr-rest/parseHexBytes.js.map +6 -0
  165. package/dist/cjs/otbr-rest/translation.d.ts +2 -1
  166. package/dist/cjs/otbr-rest/translation.d.ts.map +1 -1
  167. package/dist/cjs/otbr-rest/translation.js +20 -22
  168. package/dist/cjs/otbr-rest/translation.js.map +1 -1
  169. package/dist/cjs/selection/selectBr.d.ts +8 -4
  170. package/dist/cjs/selection/selectBr.d.ts.map +1 -1
  171. package/dist/cjs/selection/selectBr.js +6 -5
  172. package/dist/cjs/selection/selectBr.js.map +1 -1
  173. package/dist/cjs/selection/withExtPanIdLock.d.ts +2 -1
  174. package/dist/cjs/selection/withExtPanIdLock.d.ts.map +1 -1
  175. package/dist/cjs/selection/withExtPanIdLock.js.map +1 -1
  176. package/dist/cjs/tlv/BasicTlvCodec.d.ts +4 -4
  177. package/dist/cjs/tlv/BasicTlvCodec.d.ts.map +1 -1
  178. package/dist/cjs/tlv/BasicTlvCodec.js +13 -11
  179. package/dist/cjs/tlv/BasicTlvCodec.js.map +1 -1
  180. package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts +3 -2
  181. package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts.map +1 -1
  182. package/dist/cjs/tlv/NetworkDiagnosticTlv.js.map +1 -1
  183. package/dist/cjs/tlv/TypeListTlv.d.ts +3 -2
  184. package/dist/cjs/tlv/TypeListTlv.d.ts.map +1 -1
  185. package/dist/cjs/tlv/TypeListTlv.js +1 -1
  186. package/dist/cjs/tlv/TypeListTlv.js.map +1 -1
  187. package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts +3 -2
  188. package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -1
  189. package/dist/cjs/tlv/diag/ChildIpv6AddressList.js +5 -3
  190. package/dist/cjs/tlv/diag/ChildIpv6AddressList.js.map +1 -1
  191. package/dist/cjs/tlv/diag/ChildTable.d.ts +3 -2
  192. package/dist/cjs/tlv/diag/ChildTable.d.ts.map +1 -1
  193. package/dist/cjs/tlv/diag/ChildTable.js +7 -6
  194. package/dist/cjs/tlv/diag/ChildTable.js.map +1 -1
  195. package/dist/cjs/tlv/diag/Connectivity.d.ts +3 -2
  196. package/dist/cjs/tlv/diag/Connectivity.d.ts.map +1 -1
  197. package/dist/cjs/tlv/diag/Connectivity.js +14 -14
  198. package/dist/cjs/tlv/diag/Connectivity.js.map +1 -1
  199. package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts +3 -2
  200. package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts.map +1 -1
  201. package/dist/cjs/tlv/diag/Ipv6AddressList.js +6 -5
  202. package/dist/cjs/tlv/diag/Ipv6AddressList.js.map +1 -1
  203. package/dist/cjs/tlv/diag/LeaderData.d.ts +3 -2
  204. package/dist/cjs/tlv/diag/LeaderData.d.ts.map +1 -1
  205. package/dist/cjs/tlv/diag/LeaderData.js +8 -7
  206. package/dist/cjs/tlv/diag/LeaderData.js.map +1 -1
  207. package/dist/cjs/tlv/diag/MacCounters.d.ts +3 -2
  208. package/dist/cjs/tlv/diag/MacCounters.d.ts.map +1 -1
  209. package/dist/cjs/tlv/diag/MacCounters.js +12 -11
  210. package/dist/cjs/tlv/diag/MacCounters.js.map +1 -1
  211. package/dist/cjs/tlv/diag/MleCounters.d.ts +3 -2
  212. package/dist/cjs/tlv/diag/MleCounters.d.ts.map +1 -1
  213. package/dist/cjs/tlv/diag/MleCounters.js +18 -17
  214. package/dist/cjs/tlv/diag/MleCounters.js.map +1 -1
  215. package/dist/cjs/tlv/diag/Mode.d.ts +3 -2
  216. package/dist/cjs/tlv/diag/Mode.d.ts.map +1 -1
  217. package/dist/cjs/tlv/diag/Mode.js +5 -3
  218. package/dist/cjs/tlv/diag/Mode.js.map +1 -1
  219. package/dist/cjs/tlv/diag/NetworkData.d.ts +7 -6
  220. package/dist/cjs/tlv/diag/NetworkData.d.ts.map +1 -1
  221. package/dist/cjs/tlv/diag/NetworkData.js +23 -18
  222. package/dist/cjs/tlv/diag/NetworkData.js.map +1 -1
  223. package/dist/cjs/tlv/diag/Primitives.d.ts +15 -14
  224. package/dist/cjs/tlv/diag/Primitives.d.ts.map +1 -1
  225. package/dist/cjs/tlv/diag/Primitives.js +25 -19
  226. package/dist/cjs/tlv/diag/Primitives.js.map +1 -1
  227. package/dist/cjs/tlv/diag/Route64.d.ts +3 -2
  228. package/dist/cjs/tlv/diag/Route64.d.ts.map +1 -1
  229. package/dist/cjs/tlv/diag/Route64.js +8 -7
  230. package/dist/cjs/tlv/diag/Route64.js.map +1 -1
  231. package/dist/cjs/tlv/diag/RouterNeighbor.d.ts +3 -2
  232. package/dist/cjs/tlv/diag/RouterNeighbor.d.ts.map +1 -1
  233. package/dist/cjs/tlv/diag/RouterNeighbor.js +13 -11
  234. package/dist/cjs/tlv/diag/RouterNeighbor.js.map +1 -1
  235. package/dist/cjs/tlv/diag/Timeout.d.ts +3 -2
  236. package/dist/cjs/tlv/diag/Timeout.d.ts.map +1 -1
  237. package/dist/cjs/tlv/diag/Timeout.js +4 -3
  238. package/dist/cjs/tlv/diag/Timeout.js.map +1 -1
  239. package/dist/cjs/tlv/diag/VendorInfo.d.ts +13 -12
  240. package/dist/cjs/tlv/diag/VendorInfo.d.ts.map +1 -1
  241. package/dist/cjs/tlv/diag/VendorInfo.js +4 -3
  242. package/dist/cjs/tlv/diag/VendorInfo.js.map +1 -1
  243. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts +3 -2
  244. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -1
  245. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js +7 -4
  246. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js.map +1 -1
  247. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts +4 -3
  248. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -1
  249. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js +9 -7
  250. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js.map +1 -1
  251. package/dist/cjs/util/meshLocalAddr.d.ts +5 -4
  252. package/dist/cjs/util/meshLocalAddr.d.ts.map +1 -1
  253. package/dist/cjs/util/meshLocalAddr.js +6 -4
  254. package/dist/cjs/util/meshLocalAddr.js.map +1 -1
  255. package/dist/esm/coap/CoapClient.d.ts +2 -2
  256. package/dist/esm/coap/CoapClient.d.ts.map +1 -1
  257. package/dist/esm/coap/CoapClient.js +11 -17
  258. package/dist/esm/coap/CoapClient.js.map +1 -1
  259. package/dist/esm/coap/CoapMessage.d.ts +11 -6
  260. package/dist/esm/coap/CoapMessage.d.ts.map +1 -1
  261. package/dist/esm/coap/CoapMessage.js +8 -5
  262. package/dist/esm/coap/CoapMessage.js.map +1 -1
  263. package/dist/esm/commissioner/Commissioner.d.ts.map +1 -1
  264. package/dist/esm/commissioner/Commissioner.js +5 -2
  265. package/dist/esm/commissioner/Commissioner.js.map +1 -1
  266. package/dist/esm/commissioner/LeadKa.d.ts +3 -3
  267. package/dist/esm/commissioner/LeadKa.d.ts.map +1 -1
  268. package/dist/esm/commissioner/LeadKa.js +2 -2
  269. package/dist/esm/commissioner/LeadKa.js.map +1 -1
  270. package/dist/esm/commissioner/LeadPet.d.ts +3 -2
  271. package/dist/esm/commissioner/LeadPet.d.ts.map +1 -1
  272. package/dist/esm/commissioner/LeadPet.js +4 -3
  273. package/dist/esm/commissioner/LeadPet.js.map +1 -1
  274. package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts +5 -5
  275. package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts.map +1 -1
  276. package/dist/esm/credentials/ThreadCredentialsRegistry.js +10 -9
  277. package/dist/esm/credentials/ThreadCredentialsRegistry.js.map +1 -1
  278. package/dist/esm/credentials/ThreadNetworkCredentials.d.ts +4 -3
  279. package/dist/esm/credentials/ThreadNetworkCredentials.d.ts.map +1 -1
  280. package/dist/esm/crypto/AesCmacPrf128.d.ts +4 -14
  281. package/dist/esm/crypto/AesCmacPrf128.d.ts.map +1 -1
  282. package/dist/esm/crypto/AesCmacPrf128.js +8 -72
  283. package/dist/esm/crypto/AesCmacPrf128.js.map +2 -2
  284. package/dist/esm/crypto/Pbkdf2AesCmac.d.ts +5 -4
  285. package/dist/esm/crypto/Pbkdf2AesCmac.d.ts.map +1 -1
  286. package/dist/esm/crypto/Pbkdf2AesCmac.js +6 -5
  287. package/dist/esm/crypto/Pbkdf2AesCmac.js.map +1 -1
  288. package/dist/esm/crypto/Pskc.d.ts +4 -3
  289. package/dist/esm/crypto/Pskc.d.ts.map +1 -1
  290. package/dist/esm/crypto/Pskc.js +7 -6
  291. package/dist/esm/crypto/Pskc.js.map +1 -1
  292. package/dist/esm/crypto/index.d.ts +1 -1
  293. package/dist/esm/crypto/index.d.ts.map +1 -1
  294. package/dist/esm/crypto/index.js +1 -2
  295. package/dist/esm/crypto/index.js.map +1 -1
  296. package/dist/esm/dataset/OperationalDataset.d.ts +10 -10
  297. package/dist/esm/dataset/OperationalDataset.d.ts.map +1 -1
  298. package/dist/esm/dataset/OperationalDataset.js +32 -31
  299. package/dist/esm/dataset/OperationalDataset.js.map +1 -1
  300. package/dist/esm/dataset/SecurityPolicy.d.ts +3 -2
  301. package/dist/esm/dataset/SecurityPolicy.d.ts.map +1 -1
  302. package/dist/esm/dataset/SecurityPolicy.js +6 -5
  303. package/dist/esm/dataset/SecurityPolicy.js.map +1 -1
  304. package/dist/esm/diagnostic/DiagnosticResponse.d.ts +5 -4
  305. package/dist/esm/diagnostic/DiagnosticResponse.d.ts.map +1 -1
  306. package/dist/esm/diagnostic/DiagnosticSource.d.ts +2 -2
  307. package/dist/esm/diagnostic/DiagnosticSource.d.ts.map +1 -1
  308. package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts +7 -3
  309. package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -1
  310. package/dist/esm/diagnostic/MeshCopDiagnosticSource.js +49 -43
  311. package/dist/esm/diagnostic/MeshCopDiagnosticSource.js.map +1 -1
  312. package/dist/esm/diagnostic/connectMeshcop.d.ts.map +1 -1
  313. package/dist/esm/diagnostic/connectMeshcop.js +6 -13
  314. package/dist/esm/diagnostic/connectMeshcop.js.map +1 -1
  315. package/dist/esm/diagnostic/errors.d.ts +1 -1
  316. package/dist/esm/diagnostic/errors.d.ts.map +1 -1
  317. package/dist/esm/discovery/BorderRouterRegistry.d.ts.map +1 -1
  318. package/dist/esm/discovery/BorderRouterRegistry.js +2 -4
  319. package/dist/esm/discovery/BorderRouterRegistry.js.map +1 -1
  320. package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts +3 -3
  321. package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts.map +1 -1
  322. package/dist/esm/dtls/channel/NobleDtlsChannel.d.ts.map +1 -1
  323. package/dist/esm/dtls/channel/NobleDtlsChannel.js +90 -58
  324. package/dist/esm/dtls/channel/NobleDtlsChannel.js.map +1 -1
  325. package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts +5 -4
  326. package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts.map +1 -1
  327. package/dist/esm/dtls/ecjpake/EcJpakePms.js +5 -6
  328. package/dist/esm/dtls/ecjpake/EcJpakePms.js.map +1 -1
  329. package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts +16 -15
  330. package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -1
  331. package/dist/esm/dtls/ecjpake/EcJpakeRound.js +41 -30
  332. package/dist/esm/dtls/ecjpake/EcJpakeRound.js.map +1 -1
  333. package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts +10 -9
  334. package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -1
  335. package/dist/esm/dtls/ecjpake/SchnorrZkp.js +18 -14
  336. package/dist/esm/dtls/ecjpake/SchnorrZkp.js.map +1 -1
  337. package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts +2 -1
  338. package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -1
  339. package/dist/esm/dtls/handshake/ChangeCipherSpec.js +3 -1
  340. package/dist/esm/dtls/handshake/ChangeCipherSpec.js.map +1 -1
  341. package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts +27 -4
  342. package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts.map +1 -1
  343. package/dist/esm/dtls/handshake/ClientHelloMessage.js +4 -2
  344. package/dist/esm/dtls/handshake/ClientHelloMessage.js.map +1 -1
  345. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts +2 -1
  346. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -1
  347. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.js.map +1 -1
  348. package/dist/esm/dtls/handshake/DtlsClient.d.ts +9 -6
  349. package/dist/esm/dtls/handshake/DtlsClient.d.ts.map +1 -1
  350. package/dist/esm/dtls/handshake/DtlsClient.js +100 -78
  351. package/dist/esm/dtls/handshake/DtlsClient.js.map +1 -1
  352. package/dist/esm/dtls/handshake/FinishedMessage.d.ts +10 -3
  353. package/dist/esm/dtls/handshake/FinishedMessage.d.ts.map +1 -1
  354. package/dist/esm/dtls/handshake/FinishedMessage.js +5 -3
  355. package/dist/esm/dtls/handshake/FinishedMessage.js.map +1 -1
  356. package/dist/esm/dtls/handshake/HandshakeMessage.d.ts +5 -4
  357. package/dist/esm/dtls/handshake/HandshakeMessage.d.ts.map +1 -1
  358. package/dist/esm/dtls/handshake/HandshakeMessage.js +14 -12
  359. package/dist/esm/dtls/handshake/HandshakeMessage.js.map +1 -1
  360. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts +19 -2
  361. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -1
  362. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js +3 -1
  363. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js.map +1 -1
  364. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts +2 -1
  365. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -1
  366. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js +3 -2
  367. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js.map +1 -1
  368. package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts +4 -3
  369. package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts.map +1 -1
  370. package/dist/esm/dtls/handshake/ServerHelloMessage.js +3 -1
  371. package/dist/esm/dtls/handshake/ServerHelloMessage.js.map +1 -1
  372. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts +2 -1
  373. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -1
  374. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.js.map +1 -1
  375. package/dist/esm/dtls/prf/HandshakeTranscript.d.ts +7 -5
  376. package/dist/esm/dtls/prf/HandshakeTranscript.d.ts.map +1 -1
  377. package/dist/esm/dtls/prf/HandshakeTranscript.js +15 -10
  378. package/dist/esm/dtls/prf/HandshakeTranscript.js.map +1 -1
  379. package/dist/esm/dtls/prf/TlsPrf.d.ts +23 -22
  380. package/dist/esm/dtls/prf/TlsPrf.d.ts.map +1 -1
  381. package/dist/esm/dtls/prf/TlsPrf.js +34 -31
  382. package/dist/esm/dtls/prf/TlsPrf.js.map +1 -1
  383. package/dist/esm/dtls/record/AesCcm8.d.ts +13 -12
  384. package/dist/esm/dtls/record/AesCcm8.d.ts.map +1 -1
  385. package/dist/esm/dtls/record/AesCcm8.js +13 -35
  386. package/dist/esm/dtls/record/AesCcm8.js.map +1 -1
  387. package/dist/esm/dtls/record/DtlsCipherState.d.ts +11 -10
  388. package/dist/esm/dtls/record/DtlsCipherState.d.ts.map +1 -1
  389. package/dist/esm/dtls/record/DtlsCipherState.js +11 -7
  390. package/dist/esm/dtls/record/DtlsCipherState.js.map +1 -1
  391. package/dist/esm/dtls/record/DtlsRecord.d.ts +10 -10
  392. package/dist/esm/dtls/record/DtlsRecord.d.ts.map +1 -1
  393. package/dist/esm/dtls/record/DtlsRecord.js +11 -9
  394. package/dist/esm/dtls/record/DtlsRecord.js.map +1 -1
  395. package/dist/esm/otbr-rest/OtbrRestCapability.d.ts +3 -4
  396. package/dist/esm/otbr-rest/OtbrRestCapability.d.ts.map +1 -1
  397. package/dist/esm/otbr-rest/OtbrRestClient.d.ts +27 -8
  398. package/dist/esm/otbr-rest/OtbrRestClient.d.ts.map +1 -1
  399. package/dist/esm/otbr-rest/OtbrRestClient.js +51 -21
  400. package/dist/esm/otbr-rest/OtbrRestClient.js.map +1 -1
  401. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts +2 -1
  402. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -1
  403. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js +4 -4
  404. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js.map +1 -1
  405. package/dist/esm/otbr-rest/OtbrRestProbe.d.ts +6 -4
  406. package/dist/esm/otbr-rest/OtbrRestProbe.d.ts.map +1 -1
  407. package/dist/esm/otbr-rest/OtbrRestProbe.js +12 -44
  408. package/dist/esm/otbr-rest/OtbrRestProbe.js.map +1 -1
  409. package/dist/esm/otbr-rest/caseNormalizer.d.ts +7 -0
  410. package/dist/esm/otbr-rest/caseNormalizer.d.ts.map +1 -1
  411. package/dist/esm/otbr-rest/caseNormalizer.js +11 -0
  412. package/dist/esm/otbr-rest/caseNormalizer.js.map +1 -1
  413. package/dist/esm/otbr-rest/parseHexBytes.d.ts +22 -0
  414. package/dist/esm/otbr-rest/parseHexBytes.d.ts.map +1 -0
  415. package/dist/esm/otbr-rest/parseHexBytes.js +30 -0
  416. package/dist/esm/otbr-rest/parseHexBytes.js.map +6 -0
  417. package/dist/esm/otbr-rest/translation.d.ts +2 -1
  418. package/dist/esm/otbr-rest/translation.d.ts.map +1 -1
  419. package/dist/esm/otbr-rest/translation.js +16 -18
  420. package/dist/esm/otbr-rest/translation.js.map +1 -1
  421. package/dist/esm/selection/selectBr.d.ts +8 -4
  422. package/dist/esm/selection/selectBr.d.ts.map +1 -1
  423. package/dist/esm/selection/selectBr.js +6 -5
  424. package/dist/esm/selection/selectBr.js.map +1 -1
  425. package/dist/esm/selection/withExtPanIdLock.d.ts +2 -1
  426. package/dist/esm/selection/withExtPanIdLock.d.ts.map +1 -1
  427. package/dist/esm/selection/withExtPanIdLock.js.map +1 -1
  428. package/dist/esm/tlv/BasicTlvCodec.d.ts +4 -4
  429. package/dist/esm/tlv/BasicTlvCodec.d.ts.map +1 -1
  430. package/dist/esm/tlv/BasicTlvCodec.js +14 -12
  431. package/dist/esm/tlv/BasicTlvCodec.js.map +1 -1
  432. package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts +3 -2
  433. package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts.map +1 -1
  434. package/dist/esm/tlv/NetworkDiagnosticTlv.js.map +1 -1
  435. package/dist/esm/tlv/TypeListTlv.d.ts +3 -2
  436. package/dist/esm/tlv/TypeListTlv.d.ts.map +1 -1
  437. package/dist/esm/tlv/TypeListTlv.js +2 -2
  438. package/dist/esm/tlv/TypeListTlv.js.map +1 -1
  439. package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts +3 -2
  440. package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -1
  441. package/dist/esm/tlv/diag/ChildIpv6AddressList.js +5 -3
  442. package/dist/esm/tlv/diag/ChildIpv6AddressList.js.map +1 -1
  443. package/dist/esm/tlv/diag/ChildTable.d.ts +3 -2
  444. package/dist/esm/tlv/diag/ChildTable.d.ts.map +1 -1
  445. package/dist/esm/tlv/diag/ChildTable.js +8 -7
  446. package/dist/esm/tlv/diag/ChildTable.js.map +1 -1
  447. package/dist/esm/tlv/diag/Connectivity.d.ts +3 -2
  448. package/dist/esm/tlv/diag/Connectivity.d.ts.map +1 -1
  449. package/dist/esm/tlv/diag/Connectivity.js +14 -14
  450. package/dist/esm/tlv/diag/Connectivity.js.map +1 -1
  451. package/dist/esm/tlv/diag/Ipv6AddressList.d.ts +3 -2
  452. package/dist/esm/tlv/diag/Ipv6AddressList.d.ts.map +1 -1
  453. package/dist/esm/tlv/diag/Ipv6AddressList.js +7 -6
  454. package/dist/esm/tlv/diag/Ipv6AddressList.js.map +1 -1
  455. package/dist/esm/tlv/diag/LeaderData.d.ts +3 -2
  456. package/dist/esm/tlv/diag/LeaderData.d.ts.map +1 -1
  457. package/dist/esm/tlv/diag/LeaderData.js +9 -8
  458. package/dist/esm/tlv/diag/LeaderData.js.map +1 -1
  459. package/dist/esm/tlv/diag/MacCounters.d.ts +3 -2
  460. package/dist/esm/tlv/diag/MacCounters.d.ts.map +1 -1
  461. package/dist/esm/tlv/diag/MacCounters.js +13 -12
  462. package/dist/esm/tlv/diag/MacCounters.js.map +1 -1
  463. package/dist/esm/tlv/diag/MleCounters.d.ts +3 -2
  464. package/dist/esm/tlv/diag/MleCounters.d.ts.map +1 -1
  465. package/dist/esm/tlv/diag/MleCounters.js +19 -18
  466. package/dist/esm/tlv/diag/MleCounters.js.map +1 -1
  467. package/dist/esm/tlv/diag/Mode.d.ts +3 -2
  468. package/dist/esm/tlv/diag/Mode.d.ts.map +1 -1
  469. package/dist/esm/tlv/diag/Mode.js +5 -3
  470. package/dist/esm/tlv/diag/Mode.js.map +1 -1
  471. package/dist/esm/tlv/diag/NetworkData.d.ts +7 -6
  472. package/dist/esm/tlv/diag/NetworkData.d.ts.map +1 -1
  473. package/dist/esm/tlv/diag/NetworkData.js +23 -18
  474. package/dist/esm/tlv/diag/NetworkData.js.map +1 -1
  475. package/dist/esm/tlv/diag/Primitives.d.ts +15 -14
  476. package/dist/esm/tlv/diag/Primitives.d.ts.map +1 -1
  477. package/dist/esm/tlv/diag/Primitives.js +26 -20
  478. package/dist/esm/tlv/diag/Primitives.js.map +1 -1
  479. package/dist/esm/tlv/diag/Route64.d.ts +3 -2
  480. package/dist/esm/tlv/diag/Route64.d.ts.map +1 -1
  481. package/dist/esm/tlv/diag/Route64.js +9 -8
  482. package/dist/esm/tlv/diag/Route64.js.map +1 -1
  483. package/dist/esm/tlv/diag/RouterNeighbor.d.ts +3 -2
  484. package/dist/esm/tlv/diag/RouterNeighbor.d.ts.map +1 -1
  485. package/dist/esm/tlv/diag/RouterNeighbor.js +13 -11
  486. package/dist/esm/tlv/diag/RouterNeighbor.js.map +1 -1
  487. package/dist/esm/tlv/diag/Timeout.d.ts +3 -2
  488. package/dist/esm/tlv/diag/Timeout.d.ts.map +1 -1
  489. package/dist/esm/tlv/diag/Timeout.js +5 -4
  490. package/dist/esm/tlv/diag/Timeout.js.map +1 -1
  491. package/dist/esm/tlv/diag/VendorInfo.d.ts +13 -12
  492. package/dist/esm/tlv/diag/VendorInfo.d.ts.map +1 -1
  493. package/dist/esm/tlv/diag/VendorInfo.js +5 -4
  494. package/dist/esm/tlv/diag/VendorInfo.js.map +1 -1
  495. package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts +3 -2
  496. package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -1
  497. package/dist/esm/tlv/meshcop/Ip6AddressTlv.js +7 -4
  498. package/dist/esm/tlv/meshcop/Ip6AddressTlv.js.map +1 -1
  499. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts +4 -3
  500. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -1
  501. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js +10 -8
  502. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js.map +1 -1
  503. package/dist/esm/util/meshLocalAddr.d.ts +5 -4
  504. package/dist/esm/util/meshLocalAddr.d.ts.map +1 -1
  505. package/dist/esm/util/meshLocalAddr.js +7 -5
  506. package/dist/esm/util/meshLocalAddr.js.map +1 -1
  507. package/package.json +5 -5
  508. package/src/coap/CoapClient.ts +13 -20
  509. package/src/coap/CoapMessage.ts +17 -9
  510. package/src/commissioner/Commissioner.ts +5 -2
  511. package/src/commissioner/LeadKa.ts +4 -4
  512. package/src/commissioner/LeadPet.ts +6 -5
  513. package/src/credentials/ThreadCredentialsRegistry.ts +14 -13
  514. package/src/credentials/ThreadNetworkCredentials.ts +5 -3
  515. package/src/crypto/AesCmacPrf128.ts +10 -87
  516. package/src/crypto/Pbkdf2AesCmac.ts +14 -10
  517. package/src/crypto/Pskc.ts +7 -6
  518. package/src/crypto/index.ts +1 -1
  519. package/src/dataset/OperationalDataset.ts +48 -47
  520. package/src/dataset/SecurityPolicy.ts +8 -7
  521. package/src/diagnostic/DiagnosticResponse.ts +5 -4
  522. package/src/diagnostic/DiagnosticSource.ts +2 -2
  523. package/src/diagnostic/MeshCopDiagnosticSource.ts +80 -64
  524. package/src/diagnostic/connectMeshcop.ts +6 -14
  525. package/src/diagnostic/errors.ts +1 -1
  526. package/src/discovery/BorderRouterRegistry.ts +2 -4
  527. package/src/dtls/channel/DtlsConnectOpts.ts +3 -3
  528. package/src/dtls/channel/NobleDtlsChannel.ts +96 -60
  529. package/src/dtls/ecjpake/EcJpakePms.ts +5 -6
  530. package/src/dtls/ecjpake/EcJpakeRound.ts +57 -37
  531. package/src/dtls/ecjpake/SchnorrZkp.ts +43 -30
  532. package/src/dtls/handshake/ChangeCipherSpec.ts +3 -1
  533. package/src/dtls/handshake/ClientHelloMessage.ts +8 -6
  534. package/src/dtls/handshake/ClientKeyExchangeMessage.ts +2 -1
  535. package/src/dtls/handshake/DtlsClient.ts +119 -95
  536. package/src/dtls/handshake/FinishedMessage.ts +5 -3
  537. package/src/dtls/handshake/HandshakeMessage.ts +18 -16
  538. package/src/dtls/handshake/HelloVerifyRequestMessage.ts +3 -1
  539. package/src/dtls/handshake/ServerHelloDoneMessage.ts +5 -3
  540. package/src/dtls/handshake/ServerHelloMessage.ts +5 -3
  541. package/src/dtls/handshake/ServerKeyExchangeMessage.ts +2 -1
  542. package/src/dtls/prf/HandshakeTranscript.ts +18 -11
  543. package/src/dtls/prf/TlsPrf.ts +68 -54
  544. package/src/dtls/record/AesCcm8.ts +23 -49
  545. package/src/dtls/record/DtlsCipherState.ts +20 -16
  546. package/src/dtls/record/DtlsRecord.ts +17 -15
  547. package/src/otbr-rest/OtbrRestCapability.ts +4 -4
  548. package/src/otbr-rest/OtbrRestClient.ts +64 -29
  549. package/src/otbr-rest/OtbrRestDiagnosticSource.ts +5 -5
  550. package/src/otbr-rest/OtbrRestProbe.ts +12 -47
  551. package/src/otbr-rest/caseNormalizer.ts +17 -0
  552. package/src/otbr-rest/parseHexBytes.ts +47 -0
  553. package/src/otbr-rest/translation.ts +24 -22
  554. package/src/selection/selectBr.ts +26 -13
  555. package/src/selection/withExtPanIdLock.ts +1 -1
  556. package/src/tlv/BasicTlvCodec.ts +17 -15
  557. package/src/tlv/NetworkDiagnosticTlv.ts +3 -2
  558. package/src/tlv/TypeListTlv.ts +4 -4
  559. package/src/tlv/diag/ChildIpv6AddressList.ts +8 -5
  560. package/src/tlv/diag/ChildTable.ts +10 -9
  561. package/src/tlv/diag/Connectivity.ts +16 -16
  562. package/src/tlv/diag/Ipv6AddressList.ts +9 -8
  563. package/src/tlv/diag/LeaderData.ts +11 -10
  564. package/src/tlv/diag/MacCounters.ts +15 -14
  565. package/src/tlv/diag/MleCounters.ts +21 -20
  566. package/src/tlv/diag/Mode.ts +7 -5
  567. package/src/tlv/diag/NetworkData.ts +31 -26
  568. package/src/tlv/diag/Primitives.ts +42 -36
  569. package/src/tlv/diag/Route64.ts +11 -10
  570. package/src/tlv/diag/RouterNeighbor.ts +16 -13
  571. package/src/tlv/diag/Timeout.ts +7 -6
  572. package/src/tlv/diag/VendorInfo.ts +19 -18
  573. package/src/tlv/meshcop/Ip6AddressTlv.ts +9 -6
  574. package/src/tlv/meshcop/UdpEncapsulationTlv.ts +13 -11
  575. package/src/util/meshLocalAddr.ts +10 -8
@@ -3,25 +3,26 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Bytes } from "@matter/general";
6
7
  /**
7
8
  * Realm-local all-Thread-nodes multicast address (`ff03::1`).
8
9
  */
9
- export declare const ALL_THREAD_NODES_REALM_LOCAL: Uint8Array;
10
+ export declare const ALL_THREAD_NODES_REALM_LOCAL: Bytes;
10
11
  /**
11
12
  * Realm-local all-Thread-routers multicast address (`ff03::2`). Diagnostic
12
13
  * multicast queries (`MGMT_DIAG_GET.qry`) target this group.
13
14
  */
14
- export declare const ALL_THREAD_ROUTERS_REALM_LOCAL: Uint8Array;
15
+ export declare const ALL_THREAD_ROUTERS_REALM_LOCAL: Bytes;
15
16
  /**
16
17
  * Derive the mesh-local IPv6 address of a node from its RLOC16.
17
18
  *
18
19
  * Layout: `mlPrefix(8) || 0x0000 00FF FE00 || rloc16(2 BE)` — the well-known
19
20
  * Thread RLOC interface identifier with the locator in the low 16 bits.
20
21
  */
21
- export declare function deriveMeshLocalAddress(mlPrefix: Uint8Array, rloc16: number): Uint8Array;
22
+ export declare function deriveMeshLocalAddress(mlPrefix: Bytes, rloc16: number): Bytes;
22
23
  /**
23
24
  * Format a 16-byte IPv6 address as colon-separated hextets with leading zeros
24
25
  * trimmed. No `::` compression — for logs, where unambiguity beats brevity.
25
26
  */
26
- export declare function formatIp6(addr: Uint8Array): string;
27
+ export declare function formatIp6(input: Bytes): string;
27
28
  //# sourceMappingURL=meshLocalAddr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meshLocalAddr.d.ts","sourceRoot":"","sources":["../../../src/util/meshLocalAddr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,UAA6B,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,UAA6B,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAcvF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CASlD"}
1
+ {"version":3,"file":"meshLocalAddr.d.ts","sourceRoot":"","sources":["../../../src/util/meshLocalAddr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAuB,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,KAAwB,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,KAAwB,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAe7E;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAU9C"}
@@ -3,25 +3,27 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { ImplementationError } from "@matter/general";
6
+ import { Bytes, ImplementationError } from "@matter/general";
7
7
  const ALL_THREAD_NODES_REALM_LOCAL = realmLocal(1);
8
8
  const ALL_THREAD_ROUTERS_REALM_LOCAL = realmLocal(2);
9
9
  function deriveMeshLocalAddress(mlPrefix, rloc16) {
10
- if (mlPrefix.length !== 8) {
11
- throw new ImplementationError(`deriveMeshLocalAddress: mlPrefix must be 8 bytes, got ${mlPrefix.length}`);
10
+ const prefix = Bytes.of(mlPrefix);
11
+ if (prefix.length !== 8) {
12
+ throw new ImplementationError(`deriveMeshLocalAddress: mlPrefix must be 8 bytes, got ${prefix.length}`);
12
13
  }
13
14
  if (!Number.isInteger(rloc16) || rloc16 < 0 || rloc16 > 65535) {
14
15
  throw new ImplementationError(`deriveMeshLocalAddress: rloc16 out of range: ${rloc16}`);
15
16
  }
16
17
  const addr = new Uint8Array(16);
17
- addr.set(mlPrefix, 0);
18
+ addr.set(prefix, 0);
18
19
  addr[11] = 255;
19
20
  addr[12] = 254;
20
21
  addr[14] = rloc16 >> 8 & 255;
21
22
  addr[15] = rloc16 & 255;
22
23
  return addr;
23
24
  }
24
- function formatIp6(addr) {
25
+ function formatIp6(input) {
26
+ const addr = Bytes.of(input);
25
27
  if (addr.length !== 16) {
26
28
  throw new ImplementationError(`formatIp6: address must be 16 bytes, got ${addr.length}`);
27
29
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/meshLocalAddr.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,2BAA2B;AAK7B,MAAM,+BAA2C,WAAW,CAAI;AAMhE,MAAM,iCAA6C,WAAW,CAAI;AAQlE,SAAS,uBAAuB,UAAsB,QAA4B;AACrF,MAAI,SAAS,WAAW,GAAG;AACvB,UAAM,IAAI,oBAAoB,yDAAyD,SAAS,MAAM,EAAE;AAAA,EAC5G;AACA,MAAI,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,KAAK,SAAS,OAAQ;AAC5D,UAAM,IAAI,oBAAoB,gDAAgD,MAAM,EAAE;AAAA,EAC1F;AACA,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,OAAK,IAAI,UAAU,CAAC;AACpB,OAAK,EAAE,IAAI;AACX,OAAK,EAAE,IAAI;AACX,OAAK,EAAE,IAAK,UAAU,IAAK;AAC3B,OAAK,EAAE,IAAI,SAAS;AACpB,SAAO;AACX;AAMO,SAAS,UAAU,MAA0B;AAChD,MAAI,KAAK,WAAW,IAAI;AACpB,UAAM,IAAI,oBAAoB,4CAA4C,KAAK,MAAM,EAAE;AAAA,EAC3F;AACA,QAAM,SAAS,IAAI,MAAc;AACjC,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC5B,WAAO,MAAO,KAAK,CAAC,KAAK,IAAK,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;AAAA,EAC3D;AACA,SAAO,OAAO,KAAK,GAAG;AAC1B;AAEA,SAAS,WAAW,UAA8B;AAC9C,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,OAAK,CAAC,IAAI;AACV,OAAK,CAAC,IAAI;AACV,OAAK,EAAE,IAAI;AACX,SAAO;AACX;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,2BAA2B;AAKpC,MAAM,+BAAsC,WAAW,CAAI;AAM3D,MAAM,iCAAwC,WAAW,CAAI;AAQ7D,SAAS,uBAAuB,UAAiB,QAAuB;AAC3E,QAAM,SAAS,MAAM,GAAG,QAAQ;AAChC,MAAI,OAAO,WAAW,GAAG;AACrB,UAAM,IAAI,oBAAoB,yDAAyD,OAAO,MAAM,EAAE;AAAA,EAC1G;AACA,MAAI,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,KAAK,SAAS,OAAQ;AAC5D,UAAM,IAAI,oBAAoB,gDAAgD,MAAM,EAAE;AAAA,EAC1F;AACA,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,OAAK,IAAI,QAAQ,CAAC;AAClB,OAAK,EAAE,IAAI;AACX,OAAK,EAAE,IAAI;AACX,OAAK,EAAE,IAAK,UAAU,IAAK;AAC3B,OAAK,EAAE,IAAI,SAAS;AACpB,SAAO;AACX;AAMO,SAAS,UAAU,OAAsB;AAC5C,QAAM,OAAO,MAAM,GAAG,KAAK;AAC3B,MAAI,KAAK,WAAW,IAAI;AACpB,UAAM,IAAI,oBAAoB,4CAA4C,KAAK,MAAM,EAAE;AAAA,EAC3F;AACA,QAAM,SAAS,IAAI,MAAc;AACjC,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC5B,WAAO,MAAO,KAAK,CAAC,KAAK,IAAK,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;AAAA,EAC3D;AACA,SAAO,OAAO,KAAK,GAAG;AAC1B;AAEA,SAAS,WAAW,UAA8B;AAC9C,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,OAAK,CAAC,IAAI;AACV,OAAK,CAAC,IAAI;AACV,OAAK,EAAE,IAAI;AACX,SAAO;AACX;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/thread-br-client",
3
- "version": "0.0.1",
3
+ "version": "0.17.5-alpha.0-20260706-fd4c49e2e",
4
4
  "description": "Thread Border Router discovery, dataset codec, and MeshCoP/OTBR diagnostics for matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -28,12 +28,12 @@
28
28
  "coverage": "c8 matter-test esm"
29
29
  },
30
30
  "dependencies": {
31
- "@matter/general": "*",
32
- "@matter/protocol": "*",
31
+ "@matter/general": "0.17.5-alpha.0-20260706-fd4c49e2e",
32
+ "@matter/protocol": "0.17.5-alpha.0-20260706-fd4c49e2e",
33
33
  "@noble/curves": "^2.2.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@matter/testing": "*"
36
+ "@matter/testing": "0.17.5-alpha.0-20260706-fd4c49e2e"
37
37
  },
38
38
  "files": [
39
39
  "dist/**/*",
@@ -70,4 +70,4 @@
70
70
  "publishConfig": {
71
71
  "access": "public"
72
72
  }
73
- }
73
+ }
@@ -10,6 +10,7 @@ import {
10
10
  type Duration,
11
11
  type Entropy,
12
12
  type Environment,
13
+ errorOf,
13
14
  ImplementationError,
14
15
  Logger,
15
16
  Millis,
@@ -19,7 +20,7 @@ import {
19
20
  Timer,
20
21
  } from "@matter/general";
21
22
  import type { DtlsChannel } from "../dtls/channel/DtlsChannel.js";
22
- import { CoapMessage } from "./CoapMessage.js";
23
+ import { CoapError, CoapMessage } from "./CoapMessage.js";
23
24
 
24
25
  const logger = Logger.get("CoapClient");
25
26
 
@@ -71,14 +72,6 @@ function pathsEqual(a: string[], b: string[]): boolean {
71
72
  return true;
72
73
  }
73
74
 
74
- function tokenHex(token: Uint8Array): string {
75
- let out = "";
76
- for (const b of token) {
77
- out += b.toString(16).padStart(2, "0");
78
- }
79
- return out;
80
- }
81
-
82
75
  export class CoapClient {
83
76
  #entropy: Entropy;
84
77
  #messageId: number;
@@ -110,7 +103,7 @@ export class CoapClient {
110
103
  type: "CON" | "NON";
111
104
  code: string;
112
105
  uriPath: string[];
113
- payload?: Uint8Array;
106
+ payload?: Bytes;
114
107
  }): Promise<CoapMessage> {
115
108
  const messageId = this.#nextMessageId();
116
109
  const token = this.#randomToken();
@@ -152,7 +145,7 @@ export class CoapClient {
152
145
  `CoapClient: messageId collision at ${msg.messageId} — too many concurrent CON requests`,
153
146
  );
154
147
  }
155
- const reqTokenHex = tokenHex(msg.token);
148
+ const reqTokenHex = Bytes.toHex(msg.token);
156
149
  if (this.#pendingByToken.has(reqTokenHex)) {
157
150
  throw new ImplementationError(`CoapClient: token collision for ${reqTokenHex}`);
158
151
  }
@@ -229,7 +222,7 @@ export class CoapClient {
229
222
  scheduleRetransmit(initialDelay);
230
223
  })
231
224
  .catch(err => {
232
- state.reject(err instanceof Error ? err : new Error(String(err)));
225
+ state.reject(errorOf(err));
233
226
  });
234
227
  });
235
228
  }
@@ -240,7 +233,7 @@ export class CoapClient {
240
233
  for await (const bytes of this.#channel) {
241
234
  let msg: CoapMessage;
242
235
  try {
243
- msg = CoapMessage.decode(Bytes.of(bytes));
236
+ msg = CoapMessage.decode(bytes);
244
237
  } catch (err) {
245
238
  logger.debug(`CoAP inbound decode failed, dropping: ${err}`);
246
239
  continue;
@@ -249,9 +242,9 @@ export class CoapClient {
249
242
  await this.#dispatchInbound(msg);
250
243
  }
251
244
  } catch (err) {
252
- channelError = err instanceof Error ? err : new Error(String(err));
245
+ channelError = errorOf(err);
253
246
  } finally {
254
- const err = channelError ?? new Error("CoapClient: channel closed");
247
+ const err = channelError ?? new CoapError("CoapClient: channel closed");
255
248
  // Reject all outstanding requests (both maps reference the same PendingState entries).
256
249
  for (const state of this.#pendingByToken.values()) {
257
250
  state.reject(err);
@@ -268,7 +261,7 @@ export class CoapClient {
268
261
  // Stray ACK (duplicate or for a request we no longer track) — ignore.
269
262
  return;
270
263
  }
271
- const isEmptyAck = msg.code === "0.00" && msg.payload.length === 0;
264
+ const isEmptyAck = msg.code === "0.00" && msg.payload.byteLength === 0;
272
265
  if (isEmptyAck) {
273
266
  // Separate response coming.
274
267
  state.onEmptyAck();
@@ -282,14 +275,14 @@ export class CoapClient {
282
275
  if (msg.type === "RST") {
283
276
  const state = this.#pendingByMsgId.get(msg.messageId);
284
277
  if (state !== undefined) {
285
- state.reject(new Error(`CoAP RST received for messageId=${msg.messageId}`));
278
+ state.reject(new CoapError(`CoAP RST received for messageId=${msg.messageId}`));
286
279
  }
287
280
  return;
288
281
  }
289
282
 
290
283
  // CON or NON. Check token first so a separate response is routed back to the
291
284
  // originating #sendCon call regardless of which Uri-Path the BR replied on.
292
- const inboundTokenHex = tokenHex(msg.token);
285
+ const inboundTokenHex = Bytes.toHex(msg.token);
293
286
  const pending = this.#pendingByToken.get(inboundTokenHex);
294
287
  if (pending !== undefined) {
295
288
  if (msg.type === "CON") {
@@ -338,7 +331,7 @@ export class CoapClient {
338
331
  }
339
332
  if (delivered === 0) {
340
333
  logger.debug(
341
- `CoAP inbound consumed by no request or listener: uri=${uri} type=${msg.type} code=${msg.code} payloadLen=${msg.payload.length}`,
334
+ `CoAP inbound consumed by no request or listener: uri=${uri} type=${msg.type} code=${msg.code} payloadLen=${msg.payload.byteLength}`,
342
335
  );
343
336
  }
344
337
  }
@@ -349,7 +342,7 @@ export class CoapClient {
349
342
  return id;
350
343
  }
351
344
 
352
- #randomToken(): Uint8Array {
345
+ #randomToken(): Bytes {
353
346
  return Bytes.of(this.#entropy.randomBytes(4));
354
347
  }
355
348
  }
@@ -12,12 +12,17 @@ export interface CoapMessage {
12
12
  type: CoapType;
13
13
  code: string;
14
14
  messageId: number;
15
- token: Uint8Array;
15
+ token: Bytes;
16
16
  uriPath?: string[];
17
- payload: Uint8Array;
17
+ payload: Bytes;
18
18
  }
19
19
 
20
- /** Thrown when a CoAP datagram cannot be decoded per RFC 7252 §3. */
20
+ /**
21
+ * Thrown for CoAP-layer failures: a datagram that cannot be decoded per RFC
22
+ * 7252 §3, an RST response, or a clean close of the underlying channel while
23
+ * requests are still outstanding. A channel that fails with its own error
24
+ * propagates that error unchanged.
25
+ */
21
26
  export class CoapError extends MatterError {}
22
27
 
23
28
  const VERSION = 1;
@@ -75,8 +80,10 @@ function encodeOption(out: number[], delta: number, value: Uint8Array): void {
75
80
  }
76
81
 
77
82
  export namespace CoapMessage {
78
- export function encode(msg: CoapMessage): Uint8Array {
79
- const tokenLength = msg.token.length;
83
+ export function encode(msg: CoapMessage): Bytes {
84
+ const token = Bytes.of(msg.token);
85
+ const payload = Bytes.of(msg.payload);
86
+ const tokenLength = token.length;
80
87
  if (tokenLength > 8) {
81
88
  throw new CoapError(`CoAP token too long: ${tokenLength} (max 8)`);
82
89
  }
@@ -85,7 +92,7 @@ export namespace CoapMessage {
85
92
  out.push((VERSION << 6) | (TYPE_TO_BITS[msg.type] << 4) | tokenLength);
86
93
  out.push(encodeCode(msg.code));
87
94
  out.push((msg.messageId >> 8) & 0xff, msg.messageId & 0xff);
88
- pushAll(out, msg.token);
95
+ pushAll(out, token);
89
96
 
90
97
  if (msg.uriPath !== undefined) {
91
98
  let lastOptionNumber = 0;
@@ -95,15 +102,16 @@ export namespace CoapMessage {
95
102
  }
96
103
  }
97
104
 
98
- if (msg.payload.length > 0) {
105
+ if (payload.length > 0) {
99
106
  out.push(PAYLOAD_MARKER);
100
- pushAll(out, msg.payload);
107
+ pushAll(out, payload);
101
108
  }
102
109
 
103
110
  return Uint8Array.from(out);
104
111
  }
105
112
 
106
- export function decode(bytes: Uint8Array): CoapMessage {
113
+ export function decode(input: Bytes): CoapMessage {
114
+ const bytes = Bytes.of(input);
107
115
  if (bytes.length < 4) {
108
116
  throw new CoapError(`CoAP message too short: ${bytes.length} bytes`);
109
117
  }
@@ -86,7 +86,7 @@ export class Commissioner {
86
86
  payload: LeadPet.buildRequest(Commissioner.COMMISSIONER_ID),
87
87
  });
88
88
 
89
- logger.debug(`[ThreadDiag] COMM_PET response code=${response.code} payloadLen=${response.payload.length}`);
89
+ logger.debug(`COMM_PET response code=${response.code} payloadLen=${response.payload.byteLength}`);
90
90
  const parsed = LeadPet.parseResponse(response.payload);
91
91
 
92
92
  if (parsed.state === "accept") {
@@ -162,7 +162,10 @@ export class Commissioner {
162
162
  sessionBytes[1] = sessionId & 0xff;
163
163
  const releasePayload = BasicTlv.encode([
164
164
  { type: MeshCopTlvType.COMMISSIONER_SESSION_ID, value: sessionBytes },
165
- { type: MeshCopTlvType.COMMISSIONER_ID, value: new TextEncoder().encode(Commissioner.COMMISSIONER_ID) },
165
+ {
166
+ type: MeshCopTlvType.COMMISSIONER_ID,
167
+ value: new TextEncoder().encode(Commissioner.COMMISSIONER_ID),
168
+ },
166
169
  ]);
167
170
  await this.#coap.request({
168
171
  type: "CON",
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { MatterError } from "@matter/general";
7
+ import { Bytes, MatterError } from "@matter/general";
8
8
  import { MeshCopTlvType } from "../dataset/meshcopTlvTypes.js";
9
9
  import { BasicTlv } from "../tlv/BasicTlvCodec.js";
10
10
 
@@ -19,7 +19,7 @@ export interface LeadKaResponse {
19
19
  const STATE_ACCEPT = 0x01;
20
20
 
21
21
  export namespace LeadKa {
22
- export function buildRequest(sessionId: number): Uint8Array {
22
+ export function buildRequest(sessionId: number): Bytes {
23
23
  const sessionBytes = new Uint8Array(2);
24
24
  sessionBytes[0] = (sessionId >> 8) & 0xff;
25
25
  sessionBytes[1] = sessionId & 0xff;
@@ -32,11 +32,11 @@ export namespace LeadKa {
32
32
  ]);
33
33
  }
34
34
 
35
- export function parseResponse(payload: Uint8Array): LeadKaResponse {
35
+ export function parseResponse(payload: Bytes): LeadKaResponse {
36
36
  const entries = BasicTlv.walk(payload);
37
37
  for (const entry of entries) {
38
38
  if (entry.type === MeshCopTlvType.STATE) {
39
- const byte = entry.value[0];
39
+ const byte = Bytes.of(entry.value)[0];
40
40
  if (byte === 0x01) return { state: "accept" };
41
41
  if (byte === 0xff) return { state: "reject" };
42
42
  if (byte === 0x00) return { state: "pending" };
@@ -15,26 +15,27 @@ export interface LeadPetResponse {
15
15
  }
16
16
 
17
17
  export namespace LeadPet {
18
- export function buildRequest(commissionerId: string): Uint8Array {
18
+ export function buildRequest(commissionerId: string): Bytes {
19
19
  return BasicTlv.encode([
20
20
  { type: MeshCopTlvType.COMMISSIONER_ID, value: new TextEncoder().encode(commissionerId) },
21
21
  ]);
22
22
  }
23
23
 
24
- export function parseResponse(payload: Uint8Array): LeadPetResponse {
24
+ export function parseResponse(payload: Bytes): LeadPetResponse {
25
25
  const entries = BasicTlv.walk(payload);
26
26
  let state: "accept" | "reject" | "pending" | undefined;
27
27
  let sessionId: number | undefined;
28
28
 
29
29
  for (const entry of entries) {
30
30
  if (entry.type === MeshCopTlvType.STATE) {
31
- const byte = entry.value[0];
31
+ const byte = Bytes.of(entry.value)[0];
32
32
  if (byte === 0x01) state = "accept";
33
33
  else if (byte === 0xff) state = "reject";
34
34
  else if (byte === 0x00) state = "pending";
35
35
  else throw new CommissionerProtocolError(`LeadPet: unknown state byte ${byte}`);
36
36
  } else if (entry.type === MeshCopTlvType.COMMISSIONER_SESSION_ID) {
37
- sessionId = (entry.value[0] << 8) | entry.value[1];
37
+ const sessionIdBytes = Bytes.of(entry.value);
38
+ sessionId = (sessionIdBytes[0] << 8) | sessionIdBytes[1];
38
39
  }
39
40
  }
40
41
 
@@ -42,7 +43,7 @@ export namespace LeadPet {
42
43
  const tlvSummary =
43
44
  entries.length === 0
44
45
  ? "none"
45
- : entries.map(e => `t=0x${e.type.toString(16)}/${e.value.length}b`).join(",");
46
+ : entries.map(e => `t=0x${e.type.toString(16)}/${e.value.byteLength}b`).join(",");
46
47
  throw new CommissionerProtocolError(
47
48
  `LeadPet: response missing STATE TLV (payload=${Bytes.toHex(payload)}, tlvs=[${tlvSummary}])`,
48
49
  );
@@ -19,7 +19,7 @@ export class ThreadCredentialsRegistry {
19
19
  readonly #byExtPanId = new Map<string, ThreadNetworkCredentials>();
20
20
  readonly events = {
21
21
  registered: new Observable<[creds: ThreadNetworkCredentials]>(),
22
- unregistered: new Observable<[extPanId: Uint8Array]>(),
22
+ unregistered: new Observable<[extPanId: Bytes]>(),
23
23
  };
24
24
 
25
25
  /**
@@ -62,10 +62,10 @@ export class ThreadCredentialsRegistry {
62
62
  */
63
63
  registerCredentials(creds: ThreadNetworkCredentials): void {
64
64
  const stored: ThreadNetworkCredentials = {
65
- extPanId: creds.extPanId.slice(),
65
+ extPanId: Bytes.of(creds.extPanId).slice(),
66
66
  networkName: creds.networkName,
67
- pskc: creds.pskc.slice(),
68
- meshLocalPrefix: creds.meshLocalPrefix?.slice(),
67
+ pskc: Bytes.of(creds.pskc).slice(),
68
+ meshLocalPrefix: creds.meshLocalPrefix === undefined ? undefined : Bytes.of(creds.meshLocalPrefix).slice(),
69
69
  activeTimestamp: creds.activeTimestamp,
70
70
  };
71
71
  this.#byExtPanId.set(keyOf(stored.extPanId), stored);
@@ -74,15 +74,15 @@ export class ThreadCredentialsRegistry {
74
74
  }
75
75
 
76
76
  /** Remove an entry. No-op if absent. */
77
- unregister(extPanId: Uint8Array): void {
77
+ unregister(extPanId: Bytes): void {
78
78
  const key = keyOf(extPanId);
79
79
  if (!this.#byExtPanId.has(key)) return;
80
80
  this.#byExtPanId.delete(key);
81
- this.events.unregistered.emit(extPanId.slice());
81
+ this.events.unregistered.emit(Bytes.of(extPanId).slice());
82
82
  }
83
83
 
84
- /** Lookup by extPanId. Comparison is by Uint8Array equality, not reference. */
85
- getCredentials(extPanId: Uint8Array): ThreadNetworkCredentials | undefined {
84
+ /** Lookup by extPanId. Comparison is by byte equality, not reference. */
85
+ getCredentials(extPanId: Bytes): ThreadNetworkCredentials | undefined {
86
86
  return this.#byExtPanId.get(keyOf(extPanId));
87
87
  }
88
88
 
@@ -92,23 +92,24 @@ export class ThreadCredentialsRegistry {
92
92
  }
93
93
  }
94
94
 
95
- function keyOf(extPanId: Uint8Array): string {
95
+ function keyOf(extPanId: Bytes): string {
96
96
  return Bytes.toHex(extPanId);
97
97
  }
98
98
 
99
99
  function snapshot(creds: ThreadNetworkCredentials): ThreadNetworkCredentials {
100
100
  return {
101
- extPanId: creds.extPanId.slice(),
101
+ extPanId: Bytes.of(creds.extPanId).slice(),
102
102
  networkName: creds.networkName,
103
- pskc: creds.pskc.slice(),
104
- meshLocalPrefix: creds.meshLocalPrefix?.slice(),
103
+ pskc: Bytes.of(creds.pskc).slice(),
104
+ meshLocalPrefix: creds.meshLocalPrefix === undefined ? undefined : Bytes.of(creds.meshLocalPrefix).slice(),
105
105
  activeTimestamp: creds.activeTimestamp,
106
106
  };
107
107
  }
108
108
 
109
109
  // matter.js exposes `Bytes.fromBigInt` but no inverse `Bytes.toBigInt` yet —
110
110
  // dataset's activeTimestamp is a fixed-width 8-byte BE field so the loop is safe.
111
- function bytesToBigint(bytes: Uint8Array): bigint {
111
+ function bytesToBigint(input: Bytes): bigint {
112
+ const bytes = Bytes.of(input);
112
113
  let result = 0n;
113
114
  for (const b of bytes) {
114
115
  result = (result << 8n) | BigInt(b);
@@ -4,6 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import type { Bytes } from "@matter/general";
8
+
7
9
  /**
8
10
  * Credentials needed to authenticate against a Thread network's commissioner.
9
11
  *
@@ -13,14 +15,14 @@
13
15
  */
14
16
  export interface ThreadNetworkCredentials {
15
17
  /** 8-byte extended PAN ID — primary registry key. */
16
- extPanId: Uint8Array;
18
+ extPanId: Bytes;
17
19
  /** Thread network name (UTF-8, ≤16 bytes). */
18
20
  networkName: string;
19
21
  /** 16-byte EC-JPAKE password (PSKc). Sensitive — redact when logging. */
20
- pskc: Uint8Array;
22
+ pskc: Bytes;
21
23
  /** 8-byte mesh-local prefix, used to derive node mesh-local addresses for
22
24
  * UDP-proxy unicast diagnostics. Absent if the dataset omits it. */
23
- meshLocalPrefix?: Uint8Array;
25
+ meshLocalPrefix?: Bytes;
24
26
  /** Active timestamp from the dataset, used for change detection. */
25
27
  activeTimestamp?: bigint;
26
28
  }
@@ -4,98 +4,21 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { InternalError } from "@matter/general";
8
- import { createCipheriv } from "node:crypto";
7
+ import { Bytes, Crypto } from "@matter/general";
9
8
 
10
- const BLOCK_SIZE = 16;
11
- const RB = 0x87;
12
- const ZERO_BLOCK = new Uint8Array(BLOCK_SIZE);
13
-
14
- function aesEcbEncryptBlock(key: Uint8Array, block: Uint8Array): Uint8Array {
15
- const cipher = createCipheriv("aes-128-ecb", key, null);
16
- cipher.setAutoPadding(false);
17
- const out = cipher.update(block);
18
- cipher.final();
19
- return new Uint8Array(out.buffer, out.byteOffset, out.byteLength);
20
- }
21
-
22
- function leftShift1(input: Uint8Array): Uint8Array {
23
- const out = new Uint8Array(input.length);
24
- let carry = 0;
25
- for (let i = input.length - 1; i >= 0; i--) {
26
- const b = input[i];
27
- out[i] = ((b << 1) & 0xff) | carry;
28
- carry = (b & 0x80) >> 7;
29
- }
30
- return out;
31
- }
32
-
33
- function xorInto(target: Uint8Array, source: Uint8Array, offset = 0): void {
34
- for (let i = 0; i < BLOCK_SIZE; i++) {
35
- target[i] ^= source[offset + i];
36
- }
37
- }
38
-
39
- function generateSubkeys(key: Uint8Array): { k1: Uint8Array; k2: Uint8Array } {
40
- const l = aesEcbEncryptBlock(key, ZERO_BLOCK);
41
- const k1 = leftShift1(l);
42
- if ((l[0] & 0x80) !== 0) k1[BLOCK_SIZE - 1] ^= RB;
43
- const k2 = leftShift1(k1);
44
- if ((k1[0] & 0x80) !== 0) k2[BLOCK_SIZE - 1] ^= RB;
45
- return { k1, k2 };
46
- }
47
-
48
- /**
49
- * AES-CMAC per RFC 4493.
50
- *
51
- * Block-cipher-based MAC with a 128-bit AES key and a 16-byte tag. Empty messages
52
- * are explicitly supported and pad to a single all-zero block XORed with K2.
53
- */
54
- export namespace AesCmac {
55
- export function compute(key: Uint8Array, message: Uint8Array): Uint8Array {
56
- if (key.length !== 16) {
57
- throw new InternalError(`AES-CMAC key must be 16 bytes, got ${key.length}`);
58
- }
59
- const { k1, k2 } = generateSubkeys(key);
60
-
61
- const numBlocks = Math.max(1, Math.ceil(message.length / BLOCK_SIZE));
62
- const lastBlockComplete = message.length > 0 && message.length % BLOCK_SIZE === 0;
63
-
64
- const lastBlock = new Uint8Array(BLOCK_SIZE);
65
- const lastBlockOffset = (numBlocks - 1) * BLOCK_SIZE;
66
- if (lastBlockComplete) {
67
- lastBlock.set(message.subarray(lastBlockOffset, lastBlockOffset + BLOCK_SIZE));
68
- xorInto(lastBlock, k1);
69
- } else {
70
- const remaining = message.length - lastBlockOffset;
71
- lastBlock.set(message.subarray(lastBlockOffset, lastBlockOffset + remaining));
72
- lastBlock[remaining] = 0x80;
73
- xorInto(lastBlock, k2);
74
- }
75
-
76
- const x = new Uint8Array(BLOCK_SIZE);
77
- for (let i = 0; i < numBlocks - 1; i++) {
78
- xorInto(x, message, i * BLOCK_SIZE);
79
- const enc = aesEcbEncryptBlock(key, x);
80
- x.set(enc);
81
- }
82
- xorInto(x, lastBlock);
83
- return aesEcbEncryptBlock(key, x);
84
- }
85
- }
9
+ const ZERO_BLOCK = new Uint8Array(16);
86
10
 
87
11
  /**
88
- * AES-CMAC-PRF-128 per RFC 4615.
89
- *
90
- * Lifts AES-CMAC into a variable-length-key PRF: a 16-byte key is used directly,
91
- * any other key is first compressed via CMAC under an all-zero key.
12
+ * AES-CMAC-PRF-128 per RFC 4615: a 16-byte key is used directly; any other length is
13
+ * first compressed via CMAC under an all-zero key. Built on {@link Crypto.cmac}.
92
14
  */
93
15
  export namespace AesCmacPrf128 {
94
- export function compute(key: Uint8Array, message: Uint8Array): Uint8Array {
95
- if (key.length === 16) {
96
- return AesCmac.compute(key, message);
16
+ export function compute(crypto: Crypto, key: Bytes, message: Bytes): Bytes {
17
+ const keyBytes = Bytes.of(key);
18
+ if (keyBytes.length === 16) {
19
+ return crypto.cmac(keyBytes, message);
97
20
  }
98
- const derivedKey = AesCmac.compute(ZERO_BLOCK, key);
99
- return AesCmac.compute(derivedKey, message);
21
+ const derivedKey = crypto.cmac(ZERO_BLOCK, keyBytes);
22
+ return crypto.cmac(derivedKey, message);
100
23
  }
101
24
  }
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { ImplementationError } from "@matter/general";
7
+ import { Bytes, Crypto, ImplementationError } from "@matter/general";
8
8
  import { AesCmacPrf128 } from "./AesCmacPrf128.js";
9
9
 
10
10
  const HLEN = 16;
@@ -15,13 +15,17 @@ const HLEN = 16;
15
15
  * Hand-rolled because Node's `crypto.pbkdf2` is hardwired to HMAC. The PRF here
16
16
  * always emits 16 bytes, so each output block needs one PRF call per iteration.
17
17
  */
18
- export function pbkdf2AesCmac(args: {
19
- password: Uint8Array;
20
- salt: Uint8Array;
21
- iterations: number;
22
- dkLen: number;
23
- }): Uint8Array {
24
- const { password, salt, iterations, dkLen } = args;
18
+ export function pbkdf2AesCmac(
19
+ crypto: Crypto,
20
+ args: {
21
+ password: Bytes;
22
+ salt: Bytes;
23
+ iterations: number;
24
+ dkLen: number;
25
+ },
26
+ ): Bytes {
27
+ const { password, iterations, dkLen } = args;
28
+ const salt = Bytes.of(args.salt);
25
29
  if (!Number.isInteger(iterations) || iterations <= 0) {
26
30
  throw new ImplementationError(`iterations must be a positive integer, got ${iterations}`);
27
31
  }
@@ -44,10 +48,10 @@ export function pbkdf2AesCmac(args: {
44
48
  saltedBlock[salt.length + 2] = (i >>> 8) & 0xff;
45
49
  saltedBlock[salt.length + 3] = i & 0xff;
46
50
 
47
- let u = AesCmacPrf128.compute(password, saltedBlock);
51
+ let u = Bytes.of(AesCmacPrf128.compute(crypto, password, saltedBlock));
48
52
  const t = new Uint8Array(u);
49
53
  for (let j = 1; j < iterations; j++) {
50
- u = AesCmacPrf128.compute(password, u);
54
+ u = Bytes.of(AesCmacPrf128.compute(crypto, password, u));
51
55
  for (let k = 0; k < HLEN; k++) t[k] ^= u[k];
52
56
  }
53
57
  out.set(t, (i - 1) * HLEN);