@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
@@ -9,6 +9,7 @@ import {
9
9
  Crypto,
10
10
  type Duration,
11
11
  type Entropy,
12
+ errorOf,
12
13
  ImplementationError,
13
14
  InternalError,
14
15
  Logger,
@@ -102,8 +103,16 @@ export class NobleDtlsChannel implements DtlsChannel {
102
103
 
103
104
  #udp: UdpSocket | undefined;
104
105
  #client: DtlsClient | undefined;
106
+ #crypto: Crypto | undefined;
105
107
  #retransmit: DtlsRetransmitTimer | undefined;
106
108
 
109
+ /**
110
+ * Serializes every DtlsClient / record-codec interaction. UDP `onData` fires
111
+ * sequentially but async handlers interleave at each `await`; chaining onto this
112
+ * promise guarantees datagrams and retransmits never re-enter the client concurrently.
113
+ */
114
+ #inbound: Promise<void> = Promise.resolve();
115
+
107
116
  /** Established cipher state (snapshot of the DtlsClient's after handshake). */
108
117
  #cipherState: DtlsCipherState | undefined;
109
118
  #connected = false;
@@ -153,14 +162,18 @@ export class NobleDtlsChannel implements DtlsChannel {
153
162
 
154
163
  const environment = this.#opts.environment;
155
164
  const network = environment.get(Network);
156
- const entropy = environment.get(Crypto);
165
+ const crypto = environment.get(Crypto);
166
+ this.#crypto = crypto;
157
167
  const udp = await network.createUdpSocket({ type: this.#udpType, listeningPort: 0 });
158
168
  if (this.#closed) {
159
169
  await udp.close();
160
170
  throw new ImplementationError("NobleDtlsChannel.connect: closed");
161
171
  }
162
172
  this.#udp = udp;
163
- udp.onData((_netInterface, _peerAddress, _peerPort, data) => this.#onDatagram(Bytes.of(data)));
173
+ udp.onData((_netInterface, _peerAddress, _peerPort, data) => {
174
+ const bytes = Bytes.of(data);
175
+ this.#enqueue(() => this.#onDatagram(bytes));
176
+ });
164
177
 
165
178
  const initialRetransmit: Duration =
166
179
  this.#opts.initialRetransmitMs !== undefined
@@ -170,9 +183,10 @@ export class NobleDtlsChannel implements DtlsChannel {
170
183
  this.#opts.maxRetransmitMs !== undefined ? Millis(this.#opts.maxRetransmitMs) : DEFAULT_MAX_RETRANSMIT;
171
184
 
172
185
  const clientCfg: DtlsClientConfig = {
186
+ crypto,
173
187
  password: this.#opts.password,
174
- random: this.#opts.random ?? (() => defaultRandom(entropy)),
175
- ephemeralScalar: this.#opts.ephemeralScalar ?? (() => defaultEphemeralScalar(entropy)),
188
+ random: this.#opts.random ?? (() => defaultRandom(crypto)),
189
+ ephemeralScalar: this.#opts.ephemeralScalar ?? (() => defaultEphemeralScalar(crypto)),
176
190
  initialRetransmitMs: initialRetransmit,
177
191
  maxRetransmitMs: maxRetransmit,
178
192
  mtu: this.#opts.mtu ?? DEFAULT_MTU,
@@ -184,7 +198,7 @@ export class NobleDtlsChannel implements DtlsChannel {
184
198
  initialMs: initialRetransmit,
185
199
  maxMs: maxRetransmit,
186
200
  maxRetransmits: this.#opts.maxRetransmits ?? DEFAULT_MAX_RETRANSMITS,
187
- onRetransmit: () => this.#onRetransmit(),
201
+ onRetransmit: () => this.#enqueue(() => this.#onRetransmit()),
188
202
  onGiveUp: () => this.#fail(new DtlsError("NobleDtlsChannel: handshake gave up after max retransmits")),
189
203
  });
190
204
 
@@ -197,14 +211,9 @@ export class NobleDtlsChannel implements DtlsChannel {
197
211
  this.#fail(new TimeoutError(`NobleDtlsChannel: connect timed out after ${connectTimeout}ms`)),
198
212
  ).start();
199
213
 
200
- // Drive the first flight.
201
- try {
202
- const step = client.start();
203
- this.#sendRecords(step.records);
204
- this.#retransmit.armNewFlight();
205
- } catch (e) {
206
- this.#fail(e instanceof Error ? e : new InternalError(String(e)));
207
- }
214
+ // Drive the first flight on the same serialization queue as inbound/retransmit,
215
+ // so a datagram arriving mid-`start()` cannot re-enter the client concurrently.
216
+ this.#enqueue(() => this.#startHandshake());
208
217
 
209
218
  try {
210
219
  await connectPromise;
@@ -223,18 +232,22 @@ export class NobleDtlsChannel implements DtlsChannel {
223
232
  }
224
233
  const cipherState = this.#cipherState;
225
234
  const udp = this.#udp;
226
- if (cipherState === undefined || udp === undefined) {
235
+ const crypto = this.#crypto;
236
+ if (cipherState === undefined || udp === undefined || crypto === undefined) {
227
237
  throw new InternalError("NobleDtlsChannel.send: missing cipher state or transport");
228
238
  }
229
239
  const seq = cipherState.nextWriteSeq();
230
- const record = DtlsRecord.encode(
231
- {
232
- type: ContentType.APPLICATION_DATA,
233
- epoch: cipherState.writeEpoch,
234
- sequenceNumber: seq,
235
- fragment: Bytes.of(bytes),
236
- },
237
- cipherState,
240
+ const record = Bytes.of(
241
+ await DtlsRecord.encode(
242
+ crypto,
243
+ {
244
+ type: ContentType.APPLICATION_DATA,
245
+ epoch: cipherState.writeEpoch,
246
+ sequenceNumber: seq,
247
+ fragment: Bytes.of(bytes),
248
+ },
249
+ cipherState,
250
+ ),
238
251
  );
239
252
  await this.#sendDatagram(udp, record);
240
253
  }
@@ -285,17 +298,21 @@ export class NobleDtlsChannel implements DtlsChannel {
285
298
  // Best-effort close_notify alert at epoch 1 if armed.
286
299
  const cipherState = this.#cipherState;
287
300
  const udp = this.#udp;
288
- if (this.#connected && cipherState !== undefined && udp !== undefined) {
301
+ const crypto = this.#crypto;
302
+ if (this.#connected && cipherState !== undefined && udp !== undefined && crypto !== undefined) {
289
303
  try {
290
304
  const seq = cipherState.nextWriteSeq();
291
- const alertRecord = DtlsRecord.encode(
292
- {
293
- type: ContentType.ALERT,
294
- epoch: cipherState.writeEpoch,
295
- sequenceNumber: seq,
296
- fragment: Uint8Array.of(ALERT_LEVEL_WARNING, ALERT_DESC_CLOSE_NOTIFY),
297
- },
298
- cipherState,
305
+ const alertRecord = Bytes.of(
306
+ await DtlsRecord.encode(
307
+ crypto,
308
+ {
309
+ type: ContentType.ALERT,
310
+ epoch: cipherState.writeEpoch,
311
+ sequenceNumber: seq,
312
+ fragment: Uint8Array.of(ALERT_LEVEL_WARNING, ALERT_DESC_CLOSE_NOTIFY),
313
+ },
314
+ cipherState,
315
+ ),
299
316
  );
300
317
  await this.#sendDatagram(udp, alertRecord).catch(() => {});
301
318
  } catch {
@@ -337,28 +354,50 @@ export class NobleDtlsChannel implements DtlsChannel {
337
354
  // -----------------------------------------------------------------------
338
355
  // Internals
339
356
 
340
- #onDatagram(bytes: Uint8Array): void {
357
+ /**
358
+ * Chain `work` onto the single serialization queue. The `.catch` routes any error to
359
+ * {@link #fail} (which rejects the pending connect / settles the channel error state)
360
+ * and keeps the queue alive — errors surface, never swallowed.
361
+ */
362
+ #enqueue(work: () => Promise<void>): void {
363
+ this.#inbound = this.#inbound.then(work).catch(err => this.#fail(errorOf(err)));
364
+ }
365
+
366
+ async #startHandshake(): Promise<void> {
367
+ const client = this.#client;
368
+ const retransmit = this.#retransmit;
369
+ if (client === undefined || retransmit === undefined) {
370
+ throw new InternalError("NobleDtlsChannel: start before client/timer initialised");
371
+ }
372
+ const step = await client.start();
373
+ if (this.#closed) {
374
+ return;
375
+ }
376
+ this.#sendRecords(step.records);
377
+ retransmit.armNewFlight();
378
+ }
379
+
380
+ async #onDatagram(bytes: Uint8Array): Promise<void> {
341
381
  if (this.#closed) {
342
382
  return;
343
383
  }
344
- try {
345
- if (this.#connected) {
346
- this.#handleAppDatagram(bytes);
347
- } else {
348
- this.#handleHandshakeDatagram(bytes);
349
- }
350
- } catch (e) {
351
- this.#fail(e instanceof Error ? e : new InternalError(String(e)));
384
+ if (this.#connected) {
385
+ await this.#handleAppDatagram(bytes);
386
+ } else {
387
+ await this.#handleHandshakeDatagram(bytes);
352
388
  }
353
389
  }
354
390
 
355
- #handleHandshakeDatagram(bytes: Uint8Array): void {
391
+ async #handleHandshakeDatagram(bytes: Uint8Array): Promise<void> {
356
392
  const client = this.#client;
357
393
  const retransmit = this.#retransmit;
358
394
  if (client === undefined || retransmit === undefined) {
359
395
  throw new InternalError("NobleDtlsChannel: handshake datagram before client/timer initialised");
360
396
  }
361
- const step = client.onDatagram(bytes);
397
+ const step = await client.onDatagram(bytes);
398
+ if (this.#closed) {
399
+ return;
400
+ }
362
401
  // RFC 6347 §4.2.4: receiving the next flight implicitly acknowledges the previous one.
363
402
  retransmit.cancel();
364
403
  if (step.records.length > 0) {
@@ -377,9 +416,10 @@ export class NobleDtlsChannel implements DtlsChannel {
377
416
  }
378
417
  }
379
418
 
380
- #handleAppDatagram(bytes: Uint8Array): void {
419
+ async #handleAppDatagram(bytes: Uint8Array): Promise<void> {
381
420
  const cipherState = this.#cipherState;
382
- if (cipherState === undefined) {
421
+ const crypto = this.#crypto;
422
+ if (cipherState === undefined || crypto === undefined) {
383
423
  throw new InternalError("NobleDtlsChannel: post-handshake datagram with no cipher state");
384
424
  }
385
425
  let p = 0;
@@ -395,7 +435,7 @@ export class NobleDtlsChannel implements DtlsChannel {
395
435
  const slice = bytes.subarray(p, recordEnd);
396
436
  let record: DtlsRecord;
397
437
  try {
398
- ({ record } = DtlsRecord.decode(slice, cipherState));
438
+ ({ record } = await DtlsRecord.decode(crypto, slice, cipherState));
399
439
  } catch (e) {
400
440
  // RFC 6347 §4.1.2.6: a replayed/old-sequence record is benign (normal UDP
401
441
  // duplication) — drop just this record and keep processing the datagram.
@@ -408,16 +448,17 @@ export class NobleDtlsChannel implements DtlsChannel {
408
448
  throw e;
409
449
  }
410
450
  if (record.type === ContentType.APPLICATION_DATA) {
411
- this.#deliverPlaintext(record.fragment);
451
+ this.#deliverPlaintext(Bytes.of(record.fragment));
412
452
  } else if (record.type === ContentType.ALERT) {
453
+ const alertFragment = Bytes.of(record.fragment);
413
454
  // close_notify (level=1, desc=0) ends the session; other alerts surface as errors.
414
- if (record.fragment.length >= 2 && record.fragment[1] === ALERT_DESC_CLOSE_NOTIFY) {
455
+ if (alertFragment.length >= 2 && alertFragment[1] === ALERT_DESC_CLOSE_NOTIFY) {
415
456
  this.#fail(new DtlsError("NobleDtlsChannel: peer sent close_notify"));
416
457
  return;
417
458
  }
418
459
  this.#fail(
419
460
  new DtlsError(
420
- `NobleDtlsChannel: peer alert level=${record.fragment[0] ?? -1} desc=${record.fragment[1] ?? -1}`,
461
+ `NobleDtlsChannel: peer alert level=${alertFragment[0] ?? -1} desc=${alertFragment[1] ?? -1}`,
421
462
  ),
422
463
  );
423
464
  return;
@@ -441,20 +482,16 @@ export class NobleDtlsChannel implements DtlsChannel {
441
482
  }
442
483
  }
443
484
 
444
- #onRetransmit(): void {
485
+ async #onRetransmit(): Promise<void> {
445
486
  const client = this.#client;
446
487
  if (client === undefined || this.#connected || this.#closed) {
447
488
  return;
448
489
  }
449
- try {
450
- const step = client.onRetransmit();
451
- this.#sendRecords(step.records);
452
- } catch (e) {
453
- this.#fail(e instanceof Error ? e : new InternalError(String(e)));
454
- }
490
+ const step = await client.onRetransmit();
491
+ this.#sendRecords(step.records);
455
492
  }
456
493
 
457
- #sendRecords(records: Uint8Array[]): void {
494
+ #sendRecords(records: Bytes[]): void {
458
495
  const udp = this.#udp;
459
496
  if (udp === undefined) {
460
497
  throw new InternalError("NobleDtlsChannel: send before bind");
@@ -469,7 +506,8 @@ export class NobleDtlsChannel implements DtlsChannel {
469
506
  const datagrams = new Array<Uint8Array>();
470
507
  let acc = new Array<Uint8Array>();
471
508
  let accLen = 0;
472
- for (const record of records) {
509
+ for (const rawRecord of records) {
510
+ const record = Bytes.of(rawRecord);
473
511
  if (accLen > 0 && accLen + record.length > mtu) {
474
512
  datagrams.push(concatBuffers(acc));
475
513
  acc = [];
@@ -482,9 +520,7 @@ export class NobleDtlsChannel implements DtlsChannel {
482
520
  datagrams.push(concatBuffers(acc));
483
521
  }
484
522
  for (const dg of datagrams) {
485
- void this.#sendDatagram(udp, dg).catch(e =>
486
- this.#fail(e instanceof Error ? e : new InternalError(String(e))),
487
- );
523
+ void this.#sendDatagram(udp, dg).catch(e => this.#fail(errorOf(e)));
488
524
  }
489
525
  }
490
526
 
@@ -4,9 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { InternalError } from "@matter/general";
7
+ import { Bytes, Crypto, InternalError } from "@matter/general";
8
8
  import { p256 } from "@noble/curves/nist.js";
9
- import { sha256 } from "@noble/hashes/sha2.js";
10
9
  import { DtlsError } from "../channel/DtlsChannel.js";
11
10
 
12
11
  const Point = p256.Point;
@@ -35,7 +34,7 @@ const COORDINATE_BYTES = 32;
35
34
  * TLS 1.2 PRF takes over (Phase 0c.5 / DTLS layer).
36
35
  */
37
36
  export const EcJpakePms = {
38
- derive(args: { Xp: Uint8Array; Xp2: Uint8Array; xm2: bigint; s: bigint }): Uint8Array {
37
+ async derive(crypto: Crypto, args: { Xp: Bytes; Xp2: Bytes; xm2: bigint; s: bigint }): Promise<Bytes> {
39
38
  const { Xp, Xp2, xm2, s } = args;
40
39
  if (xm2 <= 0n || xm2 >= N) {
41
40
  throw new InternalError("xm2 must be in [1, n-1]");
@@ -43,8 +42,8 @@ export const EcJpakePms = {
43
42
  if (s <= 0n) {
44
43
  throw new InternalError("s (password as integer) must be positive");
45
44
  }
46
- const Xp_pt = Point.fromBytes(Xp);
47
- const Xp2_pt = Point.fromBytes(Xp2);
45
+ const Xp_pt = Point.fromBytes(Bytes.of(Xp));
46
+ const Xp2_pt = Point.fromBytes(Bytes.of(Xp2));
48
47
  if (Xp_pt.is0() || Xp2_pt.is0()) {
49
48
  throw new DtlsError("peer points must not be the point at infinity");
50
49
  }
@@ -60,6 +59,6 @@ export const EcJpakePms = {
60
59
  // 0x04 || X(32) || Y(32) — slice X out at offset 1.
61
60
  const sec1 = K.toBytes(false);
62
61
  const xBytes = sec1.subarray(1, 1 + COORDINATE_BYTES);
63
- return sha256(xBytes);
62
+ return Bytes.of(await crypto.computeHash(xBytes));
64
63
  },
65
64
  } as const;
@@ -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, Crypto, InternalError } from "@matter/general";
8
8
  import { p256 } from "@noble/curves/nist.js";
9
9
  import { DtlsError } from "../channel/DtlsChannel.js";
10
10
  import { SchnorrZkp, type SchnorrZkpGenerator } from "./SchnorrZkp.js";
@@ -22,7 +22,7 @@ import { SchnorrZkp, type SchnorrZkpGenerator } from "./SchnorrZkp.js";
22
22
  */
23
23
  export interface EcJpakeKeyKP {
24
24
  /** SEC1-uncompressed public key `X = x*G`. */
25
- X: Uint8Array;
25
+ X: Bytes;
26
26
  /** Schnorr ZKP proving knowledge of `x`. */
27
27
  zkp: SchnorrZkp;
28
28
  }
@@ -57,38 +57,44 @@ function readSlice(bytes: Uint8Array, offset: number, length: number): Uint8Arra
57
57
  }
58
58
 
59
59
  function validateKeyKP(keyKP: EcJpakeKeyKP): void {
60
- if (keyKP.X.length !== POINT_LEN || keyKP.X[0] !== 0x04) {
60
+ const X = Bytes.of(keyKP.X);
61
+ const V = Bytes.of(keyKP.zkp.V);
62
+ const r = Bytes.of(keyKP.zkp.r);
63
+ if (X.length !== POINT_LEN || X[0] !== 0x04) {
61
64
  throw new InternalError("X must be SEC1-uncompressed P-256 (65 bytes, 0x04 prefix)");
62
65
  }
63
- if (keyKP.zkp.V.length !== POINT_LEN || keyKP.zkp.V[0] !== 0x04) {
66
+ if (V.length !== POINT_LEN || V[0] !== 0x04) {
64
67
  throw new InternalError("ZKP.V must be SEC1-uncompressed P-256 (65 bytes, 0x04 prefix)");
65
68
  }
66
- if (keyKP.zkp.r.length === 0 || keyKP.zkp.r.length > 255) {
67
- throw new InternalError(`ZKP.r length must be 1..255, got ${keyKP.zkp.r.length}`);
69
+ if (r.length === 0 || r.length > 255) {
70
+ throw new InternalError(`ZKP.r length must be 1..255, got ${r.length}`);
68
71
  }
69
72
  // Minimal-encoding invariant: leading byte must be non-zero (except r === 0,
70
73
  // already excluded above). mbedTLS produces the minimal form via mbedtls_mpi_size,
71
74
  // so ours must too if we want byte-identical output.
72
- if (keyKP.zkp.r[0] === 0x00) {
75
+ if (r[0] === 0x00) {
73
76
  throw new InternalError("ZKP.r must be minimal big-endian (no leading zero)");
74
77
  }
75
78
  }
76
79
 
77
80
  function keyKpEncodedLength(keyKP: EcJpakeKeyKP): number {
78
- return 1 + POINT_LEN + 1 + POINT_LEN + 1 + keyKP.zkp.r.length;
81
+ return 1 + POINT_LEN + 1 + POINT_LEN + 1 + keyKP.zkp.r.byteLength;
79
82
  }
80
83
 
81
84
  function writeKeyKP(keyKP: EcJpakeKeyKP, out: Uint8Array, offset: number): number {
85
+ const X = Bytes.of(keyKP.X);
86
+ const V = Bytes.of(keyKP.zkp.V);
87
+ const r = Bytes.of(keyKP.zkp.r);
82
88
  let p = offset;
83
89
  out[p++] = POINT_LEN;
84
- out.set(keyKP.X, p);
90
+ out.set(X, p);
85
91
  p += POINT_LEN;
86
92
  out[p++] = POINT_LEN;
87
- out.set(keyKP.zkp.V, p);
93
+ out.set(V, p);
88
94
  p += POINT_LEN;
89
- out[p++] = keyKP.zkp.r.length;
90
- out.set(keyKP.zkp.r, p);
91
- p += keyKP.zkp.r.length;
95
+ out[p++] = r.length;
96
+ out.set(r, p);
97
+ p += r.length;
92
98
  return p;
93
99
  }
94
100
 
@@ -137,22 +143,25 @@ export const EcJpakeRound = {
137
143
  *
138
144
  * `id` is `ECJPAKE_ID_CLIENT` for the joiner and `ECJPAKE_ID_SERVER` for the commissioner.
139
145
  */
140
- buildRound1(args: { x1: bigint; x2: bigint; v1: bigint; v2: bigint; id: string }): {
146
+ async buildRound1(
147
+ crypto: Crypto,
148
+ args: { x1: bigint; x2: bigint; v1: bigint; v2: bigint; id: string },
149
+ ): Promise<{
141
150
  kp1: EcJpakeKeyKP;
142
151
  kp2: EcJpakeKeyKP;
143
- } {
152
+ }> {
144
153
  const { x1, x2, v1, v2, id } = args;
145
154
  const X1 = Point.BASE.multiply(x1).toBytes(false);
146
155
  const X2 = Point.BASE.multiply(x2).toBytes(false);
147
- const zkp1 = SchnorrZkp.generate({ privateKey: x1, publicKey: X1, ephemeral: v1, id });
148
- const zkp2 = SchnorrZkp.generate({ privateKey: x2, publicKey: X2, ephemeral: v2, id });
156
+ const zkp1 = await SchnorrZkp.generate(crypto, { privateKey: x1, publicKey: X1, ephemeral: v1, id });
157
+ const zkp2 = await SchnorrZkp.generate(crypto, { privateKey: x2, publicKey: X2, ephemeral: v2, id });
149
158
  return {
150
159
  kp1: { X: X1, zkp: zkp1 },
151
160
  kp2: { X: X2, zkp: zkp2 },
152
161
  };
153
162
  },
154
163
 
155
- serializeRound1(kp1: EcJpakeKeyKP, kp2: EcJpakeKeyKP): Uint8Array {
164
+ serializeRound1(kp1: EcJpakeKeyKP, kp2: EcJpakeKeyKP): Bytes {
156
165
  validateKeyKP(kp1);
157
166
  validateKeyKP(kp2);
158
167
  const out = new Uint8Array(keyKpEncodedLength(kp1) + keyKpEncodedLength(kp2));
@@ -161,11 +170,12 @@ export const EcJpakeRound = {
161
170
  return out;
162
171
  },
163
172
 
164
- parseRound1(bytes: Uint8Array): { kp1: EcJpakeKeyKP; kp2: EcJpakeKeyKP } {
165
- const first = readKeyKP(bytes, 0);
166
- const second = readKeyKP(bytes, first.nextOffset);
167
- if (second.nextOffset !== bytes.length) {
168
- throw new DtlsError(`trailing bytes after round-1 pair: ${bytes.length - second.nextOffset} extra`);
173
+ parseRound1(bytes: Bytes): { kp1: EcJpakeKeyKP; kp2: EcJpakeKeyKP } {
174
+ const buf = Bytes.of(bytes);
175
+ const first = readKeyKP(buf, 0);
176
+ const second = readKeyKP(buf, first.nextOffset);
177
+ if (second.nextOffset !== buf.length) {
178
+ throw new DtlsError(`trailing bytes after round-1 pair: ${buf.length - second.nextOffset} extra`);
169
179
  }
170
180
  return { kp1: first.kp, kp2: second.kp };
171
181
  },
@@ -176,8 +186,11 @@ export const EcJpakeRound = {
176
186
  * Both sides use the same formula by symmetry — for the client `Xp1 = X3`,
177
187
  * `Xp2 = X4`, `Xm1 = X1`; for the server `Xp1 = X1`, `Xp2 = X2`, `Xm1 = X3`.
178
188
  */
179
- composeRound2Generator(args: { Xp1: Uint8Array; Xp2: Uint8Array; Xm1: Uint8Array }): SchnorrZkpGenerator {
180
- const point = Point.fromBytes(args.Xp1).add(Point.fromBytes(args.Xp2)).add(Point.fromBytes(args.Xm1));
189
+ composeRound2Generator(args: { Xp1: Bytes; Xp2: Bytes; Xm1: Bytes }): SchnorrZkpGenerator {
190
+ const Xp1 = Bytes.of(args.Xp1);
191
+ const Xp2 = Bytes.of(args.Xp2);
192
+ const Xm1 = Bytes.of(args.Xm1);
193
+ const point = Point.fromBytes(Xp1).add(Point.fromBytes(Xp2)).add(Point.fromBytes(Xm1));
181
194
  if (point.is0()) {
182
195
  throw new DtlsError("round-2 generator G' must not be the point at infinity");
183
196
  }
@@ -193,7 +206,10 @@ export const EcJpakeRound = {
193
206
  * Caller-supplied `v` makes output deterministic for testing; production
194
207
  * callers must source `v` from a CSPRNG.
195
208
  */
196
- buildRound2(args: { xm2: bigint; s: bigint; v: bigint; id: string; generator: SchnorrZkpGenerator }): EcJpakeKeyKP {
209
+ async buildRound2(
210
+ crypto: Crypto,
211
+ args: { xm2: bigint; s: bigint; v: bigint; id: string; generator: SchnorrZkpGenerator },
212
+ ): Promise<EcJpakeKeyKP> {
197
213
  const { xm2, s, v, id, generator } = args;
198
214
  if (xm2 <= 0n || xm2 >= N) {
199
215
  throw new InternalError("xm2 must be in [1, n-1]");
@@ -207,7 +223,7 @@ export const EcJpakeRound = {
207
223
  }
208
224
  const Xm = generator.point.multiply(xm);
209
225
  const XmBytes = Xm.toBytes(false);
210
- const zkp = SchnorrZkp.generate({
226
+ const zkp = await SchnorrZkp.generate(crypto, {
211
227
  privateKey: xm,
212
228
  publicKey: XmBytes,
213
229
  ephemeral: v,
@@ -225,7 +241,7 @@ export const EcJpakeRound = {
225
241
  * Server-side messages (ServerKeyExchange) use `true`; client-side
226
242
  * (ClientKeyExchange) uses `false`.
227
243
  */
228
- serializeRound2(kp: EcJpakeKeyKP, options: { prependEcParameters: boolean }): Uint8Array {
244
+ serializeRound2(kp: EcJpakeKeyKP, options: { prependEcParameters: boolean }): Bytes {
229
245
  validateKeyKP(kp);
230
246
  const headerLen = options.prependEcParameters ? 3 : 0;
231
247
  const out = new Uint8Array(headerLen + keyKpEncodedLength(kp));
@@ -244,24 +260,25 @@ export const EcJpakeRound = {
244
260
  * is the client reading ServerKeyExchange, and `false` when the parser is the
245
261
  * server reading ClientKeyExchange.
246
262
  */
247
- parseRound2(bytes: Uint8Array, options: { expectEcParameters: boolean }): EcJpakeKeyKP {
263
+ parseRound2(bytes: Bytes, options: { expectEcParameters: boolean }): EcJpakeKeyKP {
264
+ const buf = Bytes.of(bytes);
248
265
  let p = 0;
249
266
  if (options.expectEcParameters) {
250
- if (bytes.length < 3) {
267
+ if (buf.length < 3) {
251
268
  throw new DtlsError("round-2 message too short for ECParameters header");
252
269
  }
253
- if (bytes[0] !== 0x03 || bytes[1] !== 0x00 || bytes[2] !== 0x17) {
270
+ if (buf[0] !== 0x03 || buf[1] !== 0x00 || buf[2] !== 0x17) {
254
271
  throw new DtlsError(
255
- `expected ECParameters{named_curve, secp256r1} (03 00 17), got ${Array.from(bytes.subarray(0, 3))
272
+ `expected ECParameters{named_curve, secp256r1} (03 00 17), got ${Array.from(buf.subarray(0, 3))
256
273
  .map(b => b.toString(16).padStart(2, "0"))
257
274
  .join(" ")}`,
258
275
  );
259
276
  }
260
277
  p = 3;
261
278
  }
262
- const { kp, nextOffset } = readKeyKP(bytes, p);
263
- if (nextOffset !== bytes.length) {
264
- throw new DtlsError(`trailing bytes after round-2 message: ${bytes.length - nextOffset} extra`);
279
+ const { kp, nextOffset } = readKeyKP(buf, p);
280
+ if (nextOffset !== buf.length) {
281
+ throw new DtlsError(`trailing bytes after round-2 message: ${buf.length - nextOffset} extra`);
265
282
  }
266
283
  return kp;
267
284
  },
@@ -272,8 +289,11 @@ export const EcJpakeRound = {
272
289
  * on any verification failure — including malformed bytes — to mirror the
273
290
  * round-1 `SchnorrZkp.verify` contract.
274
291
  */
275
- verifyRound2Zkp(args: { kp: EcJpakeKeyKP; generator: SchnorrZkpGenerator; peerId: string }): boolean {
292
+ async verifyRound2Zkp(
293
+ crypto: Crypto,
294
+ args: { kp: EcJpakeKeyKP; generator: SchnorrZkpGenerator; peerId: string },
295
+ ): Promise<boolean> {
276
296
  const { kp, generator, peerId } = args;
277
- return SchnorrZkp.verify({ zkp: kp.zkp, publicKey: kp.X, id: peerId, generator });
297
+ return await SchnorrZkp.verify(crypto, { zkp: kp.zkp, publicKey: kp.X, id: peerId, generator });
278
298
  },
279
299
  } as const;