@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
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { ImplementationError, InternalError } from "@matter/general";
7
+ import { Bytes, Crypto, ImplementationError, InternalError } from "@matter/general";
8
8
  import { DtlsError } from "../channel/DtlsChannel.js";
9
9
  import { EcJpakePms } from "../ecjpake/EcJpakePms.js";
10
10
  import { ECJPAKE_ID_CLIENT, ECJPAKE_ID_SERVER, EcJpakeRound } from "../ecjpake/EcJpakeRound.js";
@@ -52,10 +52,12 @@ export type DtlsClientState =
52
52
  | "failed";
53
53
 
54
54
  export interface DtlsClientConfig {
55
+ /** Crypto backend threaded through record codec, EC-JPAKE, PRF and transcript. */
56
+ crypto: Crypto;
55
57
  /** EC-JPAKE password (PSKc bytes for Thread). Hashed by mbedTLS as the integer of these bytes. */
56
- password: Uint8Array;
58
+ password: Bytes;
57
59
  /** Returns 32 bytes for `ClientHello.random`. Production: CSPRNG. */
58
- random: () => Uint8Array;
60
+ random: () => Bytes;
59
61
  /**
60
62
  * Returns a fresh scalar in [1, n-1]. Called five times per attempt:
61
63
  * x1, x2 (round-1 private keys), v1, v2 (round-1 ZKP ephemerals), v3 (round-2 ZKP ephemeral).
@@ -71,7 +73,7 @@ export interface DtlsClientConfig {
71
73
 
72
74
  export interface DtlsClientStep {
73
75
  /** Records to emit on the wire (already framed as DTLS records). */
74
- records: Uint8Array[];
76
+ records: Bytes[];
75
77
  }
76
78
 
77
79
  const RANDOM_LEN = 32;
@@ -85,14 +87,14 @@ interface InboundRecord {
85
87
 
86
88
  interface InboundHandshake {
87
89
  msgType: HandshakeType;
88
- body: Uint8Array;
90
+ body: Bytes;
89
91
  /** TLS-form bytes for transcript hashing. */
90
- transcriptBytes: Uint8Array;
92
+ transcriptBytes: Bytes;
91
93
  }
92
94
 
93
- function bigintFromBE(bytes: Uint8Array): bigint {
95
+ function bigintFromBE(bytes: Bytes): bigint {
94
96
  let v = 0n;
95
- for (const byte of bytes) {
97
+ for (const byte of Bytes.of(bytes)) {
96
98
  v = (v << 8n) | BigInt(byte);
97
99
  }
98
100
  return v;
@@ -100,31 +102,34 @@ function bigintFromBE(bytes: Uint8Array): bigint {
100
102
 
101
103
  export class DtlsClient {
102
104
  readonly #config: DtlsClientConfig;
105
+ readonly #crypto: Crypto;
103
106
 
104
107
  #state: DtlsClientState = "initial";
105
- #transcript = new HandshakeTranscript();
108
+ #transcript: HandshakeTranscript;
106
109
  #handshakeMessageSeq = 0;
107
110
  #recordSeq = 0n;
108
111
  #lastFlight = new Array<Uint8Array>();
109
112
 
110
113
  #x2!: bigint;
111
- #X1!: Uint8Array;
112
- #X2!: Uint8Array;
114
+ #X1!: Bytes;
115
+ #X2!: Bytes;
113
116
  /** Round-1 wire bytes — bytes-identical across cookie-exchange retries (mbedTLS `ecjpake_cache`). */
114
- #round1Bytes!: Uint8Array;
117
+ #round1Bytes!: Bytes;
115
118
 
116
119
  /** 32-byte ClientHello.random — bytes-identical across cookie retries. */
117
- #clientRandom!: Uint8Array;
120
+ #clientRandom!: Bytes;
118
121
 
119
- #X3?: Uint8Array;
120
- #X4?: Uint8Array;
121
- #serverRandom?: Uint8Array;
122
+ #X3?: Bytes;
123
+ #X4?: Bytes;
124
+ #serverRandom?: Bytes;
122
125
 
123
126
  #masterSecret?: Uint8Array;
124
127
  #cipherState?: DtlsCipherState;
125
128
 
126
129
  constructor(config: DtlsClientConfig) {
127
130
  this.#config = config;
131
+ this.#crypto = config.crypto;
132
+ this.#transcript = new HandshakeTranscript(this.#crypto);
128
133
  }
129
134
 
130
135
  state(): DtlsClientState {
@@ -145,11 +150,11 @@ export class DtlsClient {
145
150
  }
146
151
 
147
152
  /** Initial flight: ClientHello with empty cookie. */
148
- start(): DtlsClientStep {
153
+ async start(): Promise<DtlsClientStep> {
149
154
  if (this.#state !== "initial") {
150
155
  throw new ImplementationError(`DtlsClient.start() called in state '${this.#state}'`);
151
156
  }
152
- const random = this.#config.random();
157
+ const random = Bytes.of(this.#config.random());
153
158
  if (random.length !== RANDOM_LEN) {
154
159
  throw new ImplementationError(
155
160
  `DtlsClient config.random() returned ${random.length} bytes, need ${RANDOM_LEN}`,
@@ -160,41 +165,42 @@ export class DtlsClient {
160
165
  const x2 = this.#config.ephemeralScalar();
161
166
  const v1 = this.#config.ephemeralScalar();
162
167
  const v2 = this.#config.ephemeralScalar();
163
- const round1 = EcJpakeRound.buildRound1({ x1, x2, v1, v2, id: ECJPAKE_ID_CLIENT });
168
+ const round1 = await EcJpakeRound.buildRound1(this.#crypto, { x1, x2, v1, v2, id: ECJPAKE_ID_CLIENT });
164
169
  this.#x2 = x2;
165
170
  this.#X1 = round1.kp1.X;
166
171
  this.#X2 = round1.kp2.X;
167
172
  this.#round1Bytes = EcJpakeRound.serializeRound1(round1.kp1, round1.kp2);
168
173
 
169
- const records = this.#emitClientHello(new Uint8Array(0), false);
174
+ const records = await this.#emitClientHello(new Uint8Array(0), false);
170
175
  this.#state = "sent_first_clienthello";
171
176
  return { records };
172
177
  }
173
178
 
174
179
  /** Re-emit the last flight bytes-identically (RFC 6347 §4.2.4). */
175
- onRetransmit(): DtlsClientStep {
180
+ async onRetransmit(): Promise<DtlsClientStep> {
176
181
  if (this.#state === "initial" || this.#state === "established" || this.#state === "failed") {
177
182
  throw new ImplementationError(`DtlsClient.onRetransmit() called in state '${this.#state}'`);
178
183
  }
179
184
  return { records: this.#lastFlight.map(r => r.slice()) };
180
185
  }
181
186
 
182
- onDatagram(bytes: Uint8Array): DtlsClientStep {
187
+ async onDatagram(bytes: Bytes): Promise<DtlsClientStep> {
183
188
  if (this.#state === "established" || this.#state === "failed" || this.#state === "initial") {
184
189
  throw new ImplementationError(`DtlsClient.onDatagram() called in state '${this.#state}'`);
185
190
  }
191
+ const buf = Bytes.of(bytes);
186
192
  try {
187
193
  switch (this.#state) {
188
194
  case "sent_first_clienthello":
189
- return this.#handleHelloVerifyOrServerHello(this.#splitDatagramIntoRecords(bytes));
195
+ return await this.#handleHelloVerifyOrServerHello(await this.#splitDatagramIntoRecords(buf));
190
196
  case "sent_clienthello_with_cookie":
191
- return this.#handleServerHelloFlight(this.#splitDatagramIntoRecords(bytes));
197
+ return await this.#handleServerHelloFlight(await this.#splitDatagramIntoRecords(buf));
192
198
  case "sent_clientkeyexchange_flight":
193
199
  // Cannot eagerly split this datagram — the encrypted Finished record is at
194
200
  // epoch 1 and needs the CCS earlier in the same datagram to bump the read
195
201
  // epoch first. Walk the record envelopes lazily so CCS arrives before the
196
202
  // AEAD decrypt is attempted.
197
- return this.#handleServerFinishedFlightLazy(bytes);
203
+ return await this.#handleServerFinishedFlightLazy(buf);
198
204
  default:
199
205
  throw new InternalError(`DtlsClient: state ${this.#state} cannot consume a datagram`);
200
206
  }
@@ -207,12 +213,12 @@ export class DtlsClient {
207
213
  // -----------------------------------------------------------------------
208
214
  // Datagram / record splitting
209
215
 
210
- #splitDatagramIntoRecords(bytes: Uint8Array): InboundRecord[] {
216
+ async #splitDatagramIntoRecords(bytes: Uint8Array): Promise<InboundRecord[]> {
211
217
  const out = new Array<InboundRecord>();
212
218
  let p = 0;
213
219
  while (p < bytes.length) {
214
- const { record, consumed } = DtlsRecord.decode(bytes.subarray(p), this.#cipherState);
215
- out.push(record);
220
+ const { record, consumed } = await DtlsRecord.decode(this.#crypto, bytes.subarray(p), this.#cipherState);
221
+ out.push({ ...record, fragment: Bytes.of(record.fragment) });
216
222
  p += consumed;
217
223
  }
218
224
  return out;
@@ -241,7 +247,7 @@ export class DtlsClient {
241
247
  // -----------------------------------------------------------------------
242
248
  // Outbound encoding helpers
243
249
 
244
- #emitClientHello(cookie: Uint8Array, contributesToTranscript: boolean): Uint8Array[] {
250
+ async #emitClientHello(cookie: Bytes, contributesToTranscript: boolean): Promise<Uint8Array[]> {
245
251
  const body = ClientHelloMessage.build({
246
252
  random: this.#clientRandom,
247
253
  cookie,
@@ -261,12 +267,14 @@ export class DtlsClient {
261
267
  }),
262
268
  );
263
269
  }
264
- const record = DtlsRecord.encode({
265
- type: ContentType.HANDSHAKE,
266
- epoch: 0,
267
- sequenceNumber: this.#recordSeq,
268
- fragment: handshake,
269
- });
270
+ const record = Bytes.of(
271
+ await DtlsRecord.encode(this.#crypto, {
272
+ type: ContentType.HANDSHAKE,
273
+ epoch: 0,
274
+ sequenceNumber: this.#recordSeq,
275
+ fragment: handshake,
276
+ }),
277
+ );
270
278
  this.#recordSeq += 1n;
271
279
  this.#handshakeMessageSeq += 1;
272
280
  this.#lastFlight = [record];
@@ -276,7 +284,7 @@ export class DtlsClient {
276
284
  // -----------------------------------------------------------------------
277
285
  // State handlers
278
286
 
279
- #handleHelloVerifyOrServerHello(records: InboundRecord[]): DtlsClientStep {
287
+ async #handleHelloVerifyOrServerHello(records: InboundRecord[]): Promise<DtlsClientStep> {
280
288
  const messages = this.#extractHandshakeMessages(records);
281
289
  if (messages.length === 0) {
282
290
  throw new DtlsError("DtlsClient: expected handshake message, got none");
@@ -285,14 +293,14 @@ export class DtlsClient {
285
293
  const { cookie } = HelloVerifyRequestMessage.parse(messages[0].body);
286
294
  // RFC 6347 §4.2.6: the first ClientHello and HelloVerifyRequest are NOT in the
287
295
  // transcript; the transcript starts with the second ClientHello.
288
- this.#transcript = new HandshakeTranscript();
289
- const records2 = this.#emitClientHello(cookie, true);
296
+ this.#transcript = new HandshakeTranscript(this.#crypto);
297
+ const records2 = await this.#emitClientHello(cookie, true);
290
298
  this.#state = "sent_clienthello_with_cookie";
291
299
  return { records: records2 };
292
300
  }
293
301
  // Cookieless server (mbedTLS always cookies, but the spec allows skipping). Seed the
294
302
  // transcript with our first (and only) ClientHello — the bytes match what we sent.
295
- this.#transcript = new HandshakeTranscript();
303
+ this.#transcript = new HandshakeTranscript(this.#crypto);
296
304
  const firstHelloBody = ClientHelloMessage.build({
297
305
  random: this.#clientRandom,
298
306
  cookie: new Uint8Array(0),
@@ -305,15 +313,15 @@ export class DtlsClient {
305
313
  body: firstHelloBody,
306
314
  }),
307
315
  );
308
- return this.#consumeServerFlight(messages);
316
+ return await this.#consumeServerFlight(messages);
309
317
  }
310
318
 
311
- #handleServerHelloFlight(records: InboundRecord[]): DtlsClientStep {
319
+ async #handleServerHelloFlight(records: InboundRecord[]): Promise<DtlsClientStep> {
312
320
  const messages = this.#extractHandshakeMessages(records);
313
- return this.#consumeServerFlight(messages);
321
+ return await this.#consumeServerFlight(messages);
314
322
  }
315
323
 
316
- #consumeServerFlight(messages: InboundHandshake[]): DtlsClientStep {
324
+ async #consumeServerFlight(messages: InboundHandshake[]): Promise<DtlsClientStep> {
317
325
  if (messages.length < 3) {
318
326
  throw new DtlsError(
319
327
  `DtlsClient: server flight needs ServerHello+ServerKeyExchange+ServerHelloDone, got ${messages.length} message(s)`,
@@ -342,20 +350,20 @@ export class DtlsClient {
342
350
  this.#X4 = serverRound1.kp2.X;
343
351
  // Verify the server's round-1 ZKPs against the curve base point.
344
352
  if (
345
- !SchnorrZkp.verify({
353
+ !(await SchnorrZkp.verify(this.#crypto, {
346
354
  zkp: serverRound1.kp1.zkp,
347
355
  publicKey: serverRound1.kp1.X,
348
356
  id: ECJPAKE_ID_SERVER,
349
- })
357
+ }))
350
358
  ) {
351
359
  throw new DtlsError("DtlsClient: server round-1 KP1 ZKP verification failed");
352
360
  }
353
361
  if (
354
- !SchnorrZkp.verify({
362
+ !(await SchnorrZkp.verify(this.#crypto, {
355
363
  zkp: serverRound1.kp2.zkp,
356
364
  publicKey: serverRound1.kp2.X,
357
365
  id: ECJPAKE_ID_SERVER,
358
- })
366
+ }))
359
367
  ) {
360
368
  throw new DtlsError("DtlsClient: server round-1 KP2 ZKP verification failed");
361
369
  }
@@ -369,11 +377,11 @@ export class DtlsClient {
369
377
  Xm1: this.#X3,
370
378
  });
371
379
  if (
372
- !EcJpakeRound.verifyRound2Zkp({
380
+ !(await EcJpakeRound.verifyRound2Zkp(this.#crypto, {
373
381
  kp: skeKp,
374
382
  generator: serverGenerator,
375
383
  peerId: ECJPAKE_ID_SERVER,
376
- })
384
+ }))
377
385
  ) {
378
386
  throw new DtlsError("DtlsClient: server round-2 ZKP verification failed");
379
387
  }
@@ -386,14 +394,14 @@ export class DtlsClient {
386
394
  this.#transcript.appendHandshakeMessage(shd.transcriptBytes);
387
395
 
388
396
  this.#state = "received_serverhello_flight";
389
- return this.#emitClientFlight(skeKp.X);
397
+ return await this.#emitClientFlight(skeKp.X);
390
398
  }
391
399
 
392
400
  /**
393
401
  * Build the client's CKE + CCS + Finished flight and arm the cipher state.
394
402
  * `serverRound2X` is the server's round-2 public point (`Xp` for the PMS derivation).
395
403
  */
396
- #emitClientFlight(serverRound2X: Uint8Array): DtlsClientStep {
404
+ async #emitClientFlight(serverRound2X: Bytes): Promise<DtlsClientStep> {
397
405
  if (this.#X3 === undefined || this.#X4 === undefined || this.#serverRandom === undefined) {
398
406
  throw new InternalError("DtlsClient: emitClientFlight called before server flight was parsed");
399
407
  }
@@ -406,7 +414,7 @@ export class DtlsClient {
406
414
  Xp2: this.#X4,
407
415
  Xm1: this.#X1,
408
416
  });
409
- const clientRound2 = EcJpakeRound.buildRound2({
417
+ const clientRound2 = await EcJpakeRound.buildRound2(this.#crypto, {
410
418
  xm2: this.#x2,
411
419
  s,
412
420
  v: v3,
@@ -432,19 +440,21 @@ export class DtlsClient {
432
440
  );
433
441
 
434
442
  // Derive PMS, master_secret, key_block, cipher state.
435
- const pms = EcJpakePms.derive({
443
+ const pms = await EcJpakePms.derive(this.#crypto, {
436
444
  Xp: serverRound2X,
437
445
  Xp2: this.#X4,
438
446
  xm2: this.#x2,
439
447
  s,
440
448
  });
441
- const masterSecret = TlsPrf.masterSecret({
442
- premasterSecret: pms,
443
- clientRandom: this.#clientRandom,
444
- serverRandom: this.#serverRandom,
445
- });
449
+ const masterSecret = Bytes.of(
450
+ await TlsPrf.masterSecret(this.#crypto, {
451
+ premasterSecret: pms,
452
+ clientRandom: this.#clientRandom,
453
+ serverRandom: this.#serverRandom,
454
+ }),
455
+ );
446
456
  this.#masterSecret = masterSecret;
447
- const keyBlock = TlsPrf.keyBlock({
457
+ const keyBlock = await TlsPrf.keyBlock(this.#crypto, {
448
458
  masterSecret,
449
459
  clientRandom: this.#clientRandom,
450
460
  serverRandom: this.#serverRandom,
@@ -458,11 +468,13 @@ export class DtlsClient {
458
468
  this.#cipherState = cipherState;
459
469
 
460
470
  // Compute client Finished verify_data over the transcript (CH..SHD..CKE).
461
- const verifyData = TlsPrf.verifyData({
462
- masterSecret,
463
- role: "client",
464
- transcriptDigest: this.#transcript.digest(),
465
- });
471
+ const verifyData = Bytes.of(
472
+ await TlsPrf.verifyData(this.#crypto, {
473
+ masterSecret,
474
+ role: "client",
475
+ transcriptDigest: await this.#transcript.digest(),
476
+ }),
477
+ );
466
478
  const finishedBody = FinishedMessage.build(verifyData);
467
479
  const finishedMsgSeq = this.#handshakeMessageSeq;
468
480
  const finishedHandshake = HandshakeMessage.encode({
@@ -481,30 +493,37 @@ export class DtlsClient {
481
493
  }),
482
494
  );
483
495
 
484
- const ckeRecord = DtlsRecord.encode({
485
- type: ContentType.HANDSHAKE,
486
- epoch: 0,
487
- sequenceNumber: this.#recordSeq,
488
- fragment: ckeHandshake,
489
- });
496
+ const ckeRecord = Bytes.of(
497
+ await DtlsRecord.encode(this.#crypto, {
498
+ type: ContentType.HANDSHAKE,
499
+ epoch: 0,
500
+ sequenceNumber: this.#recordSeq,
501
+ fragment: ckeHandshake,
502
+ }),
503
+ );
490
504
  this.#recordSeq += 1n;
491
- const ccsRecord = DtlsRecord.encode({
492
- type: ContentType.CHANGE_CIPHER_SPEC,
493
- epoch: 0,
494
- sequenceNumber: this.#recordSeq,
495
- fragment: CHANGE_CIPHER_SPEC_BODY,
496
- });
505
+ const ccsRecord = Bytes.of(
506
+ await DtlsRecord.encode(this.#crypto, {
507
+ type: ContentType.CHANGE_CIPHER_SPEC,
508
+ epoch: 0,
509
+ sequenceNumber: this.#recordSeq,
510
+ fragment: CHANGE_CIPHER_SPEC_BODY,
511
+ }),
512
+ );
497
513
  this.#recordSeq += 1n;
498
514
  cipherState.advanceWriteEpoch();
499
515
  const finishedSeq = cipherState.nextWriteSeq();
500
- const finishedRecord = DtlsRecord.encode(
501
- {
502
- type: ContentType.HANDSHAKE,
503
- epoch: cipherState.writeEpoch,
504
- sequenceNumber: finishedSeq,
505
- fragment: finishedHandshake,
506
- },
507
- cipherState,
516
+ const finishedRecord = Bytes.of(
517
+ await DtlsRecord.encode(
518
+ this.#crypto,
519
+ {
520
+ type: ContentType.HANDSHAKE,
521
+ epoch: cipherState.writeEpoch,
522
+ sequenceNumber: finishedSeq,
523
+ fragment: finishedHandshake,
524
+ },
525
+ cipherState,
526
+ ),
508
527
  );
509
528
 
510
529
  const flight = [ckeRecord, ccsRecord, finishedRecord];
@@ -520,14 +539,14 @@ export class DtlsClient {
520
539
  * `DtlsRecord.decode` for both records would feed CCS to the codec only after the
521
540
  * decrypt of the Finished record had already failed with a wrong-epoch error.
522
541
  */
523
- #handleServerFinishedFlightLazy(bytes: Uint8Array): DtlsClientStep {
542
+ async #handleServerFinishedFlightLazy(bytes: Uint8Array): Promise<DtlsClientStep> {
524
543
  const cipherState = this.#cipherState;
525
544
  const masterSecret = this.#masterSecret;
526
545
  if (cipherState === undefined || masterSecret === undefined) {
527
546
  throw new InternalError("DtlsClient: server-finished handler reached without armed cipher state");
528
547
  }
529
548
  let sawCcs = false;
530
- let serverFinishedBody: Uint8Array | undefined;
549
+ let serverFinishedBody: Bytes | undefined;
531
550
  let serverFinishedMsgSeq = 0;
532
551
  let p = 0;
533
552
  while (p < bytes.length) {
@@ -542,7 +561,7 @@ export class DtlsClient {
542
561
  }
543
562
  const recordBytes = bytes.subarray(p, recordEnd);
544
563
  const stateForDecode = epoch === 0 ? undefined : cipherState;
545
- const { record } = DtlsRecord.decode(recordBytes, stateForDecode);
564
+ const { record } = await DtlsRecord.decode(this.#crypto, recordBytes, stateForDecode);
546
565
  if (record.type === ContentType.CHANGE_CIPHER_SPEC) {
547
566
  ChangeCipherSpec.parse(record.fragment);
548
567
  cipherState.advanceReadEpoch();
@@ -556,9 +575,10 @@ export class DtlsClient {
556
575
  `DtlsClient: server Finished record at epoch ${record.epoch}, expected ${cipherState.readEpoch}`,
557
576
  );
558
577
  }
578
+ const fragment = Bytes.of(record.fragment);
559
579
  let q = 0;
560
- while (q < record.fragment.length) {
561
- const { message, consumed } = HandshakeMessage.decode(record.fragment.subarray(q));
580
+ while (q < fragment.length) {
581
+ const { message, consumed } = HandshakeMessage.decode(fragment.subarray(q));
562
582
  if (message.msgType !== HandshakeType.FINISHED) {
563
583
  throw new DtlsError(`DtlsClient: expected Finished, got msg_type=${message.msgType}`);
564
584
  }
@@ -577,11 +597,13 @@ export class DtlsClient {
577
597
  // Snapshot the transcript BEFORE appending the server's Finished body — the server's
578
598
  // verify_data was computed over (CH..SHD..CKE..clientFinished), exactly the digest we
579
599
  // already hold from the previous append in #emitClientFlight.
580
- const expected = TlsPrf.verifyData({
581
- masterSecret,
582
- role: "server",
583
- transcriptDigest: this.#transcript.digest(),
584
- });
600
+ const expected = Bytes.of(
601
+ await TlsPrf.verifyData(this.#crypto, {
602
+ masterSecret,
603
+ role: "server",
604
+ transcriptDigest: await this.#transcript.digest(),
605
+ }),
606
+ );
585
607
  const actual = FinishedMessage.parse(serverFinishedBody).verifyData;
586
608
  if (!constantTimeEqual(expected, actual)) {
587
609
  throw new DtlsError("DtlsClient: server Finished verify_data mismatch");
@@ -598,7 +620,9 @@ export class DtlsClient {
598
620
  }
599
621
  }
600
622
 
601
- function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean {
623
+ function constantTimeEqual(rawA: Bytes, rawB: Bytes): boolean {
624
+ const a = Bytes.of(rawA);
625
+ const b = Bytes.of(rawB);
602
626
  if (a.length !== b.length || a.length !== FINISHED_VERIFY_DATA_LEN) {
603
627
  return false;
604
628
  }
@@ -11,13 +11,14 @@
11
11
  * `TlsPrf.verifyData` and the state machine.
12
12
  */
13
13
 
14
- import { InternalError } from "@matter/general";
14
+ import { Bytes, InternalError } from "@matter/general";
15
15
  import { DtlsError } from "../channel/DtlsChannel.js";
16
16
 
17
17
  const VERIFY_DATA_LEN = 12;
18
18
 
19
19
  export const FinishedMessage = {
20
- build(verifyData: Uint8Array): Uint8Array {
20
+ build(rawVerifyData: Bytes): Bytes {
21
+ const verifyData = Bytes.of(rawVerifyData);
21
22
  if (verifyData.length !== VERIFY_DATA_LEN) {
22
23
  throw new InternalError(`Finished verify_data must be ${VERIFY_DATA_LEN} bytes, got ${verifyData.length}`);
23
24
  }
@@ -25,7 +26,8 @@ export const FinishedMessage = {
25
26
  return verifyData.slice();
26
27
  },
27
28
 
28
- parse(body: Uint8Array): { verifyData: Uint8Array } {
29
+ parse(rawBody: Bytes): { verifyData: Bytes } {
30
+ const body = Bytes.of(rawBody);
29
31
  if (body.length !== VERIFY_DATA_LEN) {
30
32
  throw new DtlsError(`Finished body must be ${VERIFY_DATA_LEN} bytes, got ${body.length}`);
31
33
  }
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { InternalError } from "@matter/general";
7
+ import { Bytes, InternalError } from "@matter/general";
8
8
  import { DtlsError } from "../channel/DtlsChannel.js";
9
9
  import { HandshakeType, isHandshakeType } from "./HandshakeType.js";
10
10
 
@@ -34,7 +34,7 @@ const UINT16_MAX = 0xffff;
34
34
  export interface HandshakeMessage {
35
35
  msgType: HandshakeType;
36
36
  messageSeq: number;
37
- body: Uint8Array;
37
+ body: Bytes;
38
38
  }
39
39
 
40
40
  function writeUint16BE(buf: Uint8Array, offset: number, value: number): void {
@@ -77,8 +77,9 @@ function readUint24BE(buf: Uint8Array, offset: number): number {
77
77
  * `fragment_length=length`).
78
78
  */
79
79
  export namespace HandshakeMessage {
80
- export function encode(message: HandshakeMessage): Uint8Array {
81
- const { msgType, messageSeq, body } = message;
80
+ export function encode(message: HandshakeMessage): Bytes {
81
+ const { msgType, messageSeq } = message;
82
+ const body = Bytes.of(message.body);
82
83
  if (!isHandshakeType(msgType)) {
83
84
  throw new InternalError(`HandshakeMessage unknown msg_type: ${msgType}`);
84
85
  }
@@ -98,7 +99,7 @@ export namespace HandshakeMessage {
98
99
  return out;
99
100
  }
100
101
 
101
- export function encodeForTranscript(message: HandshakeMessage): Uint8Array {
102
+ export function encodeForTranscript(message: HandshakeMessage): Bytes {
102
103
  return encode(message);
103
104
  }
104
105
 
@@ -107,36 +108,37 @@ export namespace HandshakeMessage {
107
108
  consumed: number;
108
109
  }
109
110
 
110
- export function decode(bytes: Uint8Array): DecodeResult {
111
- if (bytes.length < DTLS_HANDSHAKE_HEADER_LEN) {
111
+ export function decode(bytes: Bytes): DecodeResult {
112
+ const buf = Bytes.of(bytes);
113
+ if (buf.length < DTLS_HANDSHAKE_HEADER_LEN) {
112
114
  throw new DtlsError(
113
- `HandshakeMessage header truncated: have ${bytes.length}, need ${DTLS_HANDSHAKE_HEADER_LEN}`,
115
+ `HandshakeMessage header truncated: have ${buf.length}, need ${DTLS_HANDSHAKE_HEADER_LEN}`,
114
116
  );
115
117
  }
116
- const msgType = bytes[0];
118
+ const msgType = buf[0];
117
119
  if (!isHandshakeType(msgType)) {
118
120
  throw new DtlsError(`HandshakeMessage unknown msg_type: ${msgType}`);
119
121
  }
120
- const length = readUint24BE(bytes, 1);
121
- const messageSeq = readUint16BE(bytes, 4);
122
- const fragmentOffset = readUint24BE(bytes, 6);
123
- const fragmentLength = readUint24BE(bytes, 9);
122
+ const length = readUint24BE(buf, 1);
123
+ const messageSeq = readUint16BE(buf, 4);
124
+ const fragmentOffset = readUint24BE(buf, 6);
125
+ const fragmentLength = readUint24BE(buf, 9);
124
126
  if (fragmentOffset !== 0 || fragmentLength !== length) {
125
127
  throw new DtlsError(
126
128
  `HandshakeMessage fragmented input not supported: offset=${fragmentOffset} fragLen=${fragmentLength} totalLen=${length}`,
127
129
  );
128
130
  }
129
131
  const total = DTLS_HANDSHAKE_HEADER_LEN + length;
130
- if (bytes.length < total) {
132
+ if (buf.length < total) {
131
133
  throw new DtlsError(
132
- `HandshakeMessage body truncated: header says ${length}, have ${bytes.length - DTLS_HANDSHAKE_HEADER_LEN}`,
134
+ `HandshakeMessage body truncated: header says ${length}, have ${buf.length - DTLS_HANDSHAKE_HEADER_LEN}`,
133
135
  );
134
136
  }
135
137
  return {
136
138
  message: {
137
139
  msgType,
138
140
  messageSeq,
139
- body: bytes.slice(DTLS_HANDSHAKE_HEADER_LEN, total),
141
+ body: buf.slice(DTLS_HANDSHAKE_HEADER_LEN, total),
140
142
  },
141
143
  consumed: total,
142
144
  };
@@ -21,12 +21,14 @@
21
21
  * ClientHello carry the spec-mandated DTLS 1.2 version regardless.
22
22
  */
23
23
 
24
+ import { Bytes } from "@matter/general";
24
25
  import { DtlsError } from "../channel/DtlsChannel.js";
25
26
 
26
27
  const MAX_COOKIE_LEN = 0xff;
27
28
 
28
29
  export const HelloVerifyRequestMessage = {
29
- parse(body: Uint8Array): { cookie: Uint8Array } {
30
+ parse(rawBody: Bytes): { cookie: Bytes } {
31
+ const body = Bytes.of(rawBody);
30
32
  if (body.length < 2 + 1) {
31
33
  throw new DtlsError(`HelloVerifyRequest body truncated: have ${body.length}, need >= 3`);
32
34
  }
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Bytes } from "@matter/general";
7
8
  import { DtlsError } from "../channel/DtlsChannel.js";
8
9
 
9
10
  /**
@@ -12,9 +13,10 @@ import { DtlsError } from "../channel/DtlsChannel.js";
12
13
  * a single place to fail loudly if a future BR ever sends payload bytes here.
13
14
  */
14
15
  export const ServerHelloDoneMessage = {
15
- parse(body: Uint8Array): void {
16
- if (body.length !== 0) {
17
- throw new DtlsError(`ServerHelloDone body must be empty, got ${body.length} bytes`);
16
+ parse(body: Bytes): void {
17
+ const length = body.byteLength;
18
+ if (length !== 0) {
19
+ throw new DtlsError(`ServerHelloDone body must be empty, got ${length} bytes`);
18
20
  }
19
21
  },
20
22
  } as const;
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Bytes } from "@matter/general";
7
8
  import { DtlsError } from "../channel/DtlsChannel.js";
8
9
  import { CIPHER_SUITE_ECJPAKE_WITH_AES_128_CCM_8, EXTENSION_TYPE_ECJPAKE_KKPP } from "./ClientHelloMessage.js";
9
10
 
@@ -44,13 +45,14 @@ function readUint16BE(buf: Uint8Array, offset: number): number {
44
45
 
45
46
  export interface ParsedServerHello {
46
47
  /** Server's 32-byte random — feeds the TLS PRF. */
47
- serverRandom: Uint8Array;
48
+ serverRandom: Bytes;
48
49
  /** Server's `ecjpake_kkpp` extension data (round-1 ECJPAKEKeyKPPairList). */
49
- ecjpakeKkpp: Uint8Array;
50
+ ecjpakeKkpp: Bytes;
50
51
  }
51
52
 
52
53
  export const ServerHelloMessage = {
53
- parse(body: Uint8Array): ParsedServerHello {
54
+ parse(rawBody: Bytes): ParsedServerHello {
55
+ const body = Bytes.of(rawBody);
54
56
  if (body.length < 2 + RANDOM_LEN + 1 + 2 + 1) {
55
57
  throw new DtlsError(`ServerHello body truncated: have ${body.length}`);
56
58
  }