@bsv/sdk 1.3.12 → 1.3.14

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 (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -1,9 +1,8 @@
1
- import { VerifiableCertificate } from '../../../../dist/cjs/src/auth/certificates/VerifiableCertificate.js'
2
- import { PrivateKey, SymmetricKey, Utils } from '../../../../dist/cjs/src/primitives/index.js'
3
- import { CompletedProtoWallet } from '../../../../dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js'
4
- import { Certificate } from '../../../../dist/cjs/src/auth/certificates/index.js'
5
- import { MasterCertificate } from '../../../../dist/cjs/src/auth/certificates/MasterCertificate.js'
6
- import { ProtoWallet } from '../../../../dist/cjs/src/wallet/index.js'
1
+ import { VerifiableCertificate } from '../../../auth/certificates/VerifiableCertificate'
2
+ import { PrivateKey, Utils } from '../../../../mod'
3
+ import { CompletedProtoWallet } from '../../../auth/certificates/__tests/CompletedProtoWallet'
4
+ import { MasterCertificate } from '../../../auth/certificates/MasterCertificate'
5
+ import { ProtoWallet } from '../../../wallet/index'
7
6
 
8
7
  describe('VerifiableCertificate', () => {
9
8
  const subjectPrivateKey = PrivateKey.fromRandom()
@@ -18,7 +17,8 @@ describe('VerifiableCertificate', () => {
18
17
 
19
18
  const sampleType = Utils.toBase64(new Array(32).fill(1))
20
19
  const sampleSerialNumber = Utils.toBase64(new Array(32).fill(2))
21
- const sampleRevocationOutpoint = 'deadbeefdeadbeefdeadbeefdeadbeef00000000000000000000000000000000.1'
20
+ const sampleRevocationOutpoint =
21
+ 'deadbeefdeadbeefdeadbeefdeadbeef00000000000000000000000000000000.1'
22
22
 
23
23
  const plaintextFields = {
24
24
  name: 'Alice',
@@ -30,11 +30,12 @@ describe('VerifiableCertificate', () => {
30
30
 
31
31
  beforeEach(async () => {
32
32
  // For each test, we'll build a fresh VerifiableCertificate with valid encryption
33
- const { certificateFields, masterKeyring } = await MasterCertificate.createCertificateFields(
34
- subjectWallet,
35
- certifierIdentityKey,
36
- plaintextFields
37
- )
33
+ const { certificateFields, masterKeyring } =
34
+ await MasterCertificate.createCertificateFields(
35
+ subjectWallet,
36
+ certifierIdentityKey,
37
+ plaintextFields
38
+ )
38
39
  const keyringForVerifier = await MasterCertificate.createKeyringForVerifier(
39
40
  subjectWallet,
40
41
  certifierIdentityKey,
@@ -62,7 +63,9 @@ describe('VerifiableCertificate', () => {
62
63
  expect(verifiableCert.serialNumber).toEqual(sampleSerialNumber)
63
64
  expect(verifiableCert.subject).toEqual(subjectIdentityKey)
64
65
  expect(verifiableCert.certifier).toEqual(certifierIdentityKey)
65
- expect(verifiableCert.revocationOutpoint).toEqual(sampleRevocationOutpoint)
66
+ expect(verifiableCert.revocationOutpoint).toEqual(
67
+ sampleRevocationOutpoint
68
+ )
66
69
  expect(verifiableCert.fields).toBeDefined()
67
70
  expect(verifiableCert.keyring).toBeDefined()
68
71
  })
@@ -97,7 +100,9 @@ describe('VerifiableCertificate', () => {
97
100
  verifiableCert.signature
98
101
  )
99
102
 
100
- await expect(emptyKeyringCert.decryptFields(verifierWallet)).rejects.toThrow(
103
+ await expect(
104
+ emptyKeyringCert.decryptFields(verifierWallet)
105
+ ).rejects.toThrow(
101
106
  'A keyring is required to decrypt certificate fields for the verifier.'
102
107
  )
103
108
  })
@@ -105,26 +110,30 @@ describe('VerifiableCertificate', () => {
105
110
  it('should fail if the encrypted field or its key is tampered', async () => {
106
111
  // Tamper the keyring so it doesn't match the field encryption
107
112
  verifiableCert.keyring.name = Utils.toBase64([9, 9, 9, 9])
108
- await expect(verifiableCert.decryptFields(verifierWallet)).rejects.toThrow(
113
+ await expect(
114
+ verifiableCert.decryptFields(verifierWallet)
115
+ ).rejects.toThrow(
109
116
  /Failed to decrypt selectively revealed certificate fields using keyring/
110
117
  )
111
118
  })
112
119
 
113
120
  it('should be able to decrypt fields using the anyone wallet', async () => {
114
- const { certificateFields, masterKeyring } = await MasterCertificate.createCertificateFields(
115
- subjectWallet,
116
- certifierIdentityKey,
117
- plaintextFields
118
- )
119
- const keyringForVerifier = await MasterCertificate.createKeyringForVerifier(
120
- subjectWallet,
121
- certifierIdentityKey,
122
- 'anyone',
123
- certificateFields,
124
- Object.keys(certificateFields),
125
- masterKeyring,
126
- sampleSerialNumber
127
- )
121
+ const { certificateFields, masterKeyring } =
122
+ await MasterCertificate.createCertificateFields(
123
+ subjectWallet,
124
+ certifierIdentityKey,
125
+ plaintextFields
126
+ )
127
+ const keyringForVerifier =
128
+ await MasterCertificate.createKeyringForVerifier(
129
+ subjectWallet,
130
+ certifierIdentityKey,
131
+ 'anyone',
132
+ certificateFields,
133
+ Object.keys(certificateFields),
134
+ masterKeyring,
135
+ sampleSerialNumber
136
+ )
128
137
  verifiableCert = new VerifiableCertificate(
129
138
  sampleType,
130
139
  sampleSerialNumber,
@@ -134,8 +143,10 @@ describe('VerifiableCertificate', () => {
134
143
  certificateFields,
135
144
  keyringForVerifier
136
145
  )
137
- const decrypted = await verifiableCert.decryptFields(new ProtoWallet('anyone'))
146
+ const decrypted = await verifiableCert.decryptFields(
147
+ new ProtoWallet('anyone')
148
+ )
138
149
  expect(decrypted).toEqual(plaintextFields)
139
150
  })
140
151
  })
141
- })
152
+ })
@@ -1,4 +1,4 @@
1
1
  export { default as Certificate } from './Certificate.js'
2
2
  export * from './MasterCertificate.js'
3
3
  export * from './VerifiableCertificate.js'
4
- export * from './__tests/CompletedProtoWallet.js'
4
+ export * from './__tests/CompletedProtoWallet.js'
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  import { Utils, Random, P2PKH, PublicKey, WalletInterface } from '../../../mod.js'
2
3
  import { Peer } from '../Peer.js'
3
4
  import { SimplifiedFetchTransport } from '../transports/SimplifiedFetchTransport.js'
@@ -1 +1 @@
1
- export * from './AuthFetch.js'
1
+ export * from './AuthFetch.js'
@@ -1,10 +1,18 @@
1
- import { AuthMessage, RequestedCertificateSet, Transport } from "../types.js"
1
+ // @ts-nocheck
2
+ import { AuthMessage, RequestedCertificateSet, Transport } from '../types.js'
2
3
  import { Utils } from '../../../mod.js'
3
4
 
5
+ // Define the expected shape of error responses
6
+ interface ErrorInfo {
7
+ status: string
8
+ description: string
9
+ code?: string
10
+ }
11
+
4
12
  const SUCCESS_STATUS_CODES = [200, 402]
5
13
 
6
14
  // Only bind window.fetch in the browser
7
- const defaultFetch = typeof window !== 'undefined' ? fetch.bind(window) : fetch;
15
+ const defaultFetch = typeof window !== 'undefined' ? fetch.bind(window) : fetch
8
16
 
9
17
  /**
10
18
  * Implements an HTTP-specific transport for handling Peer mutual authentication messages.
@@ -30,27 +38,32 @@ export class SimplifiedFetchTransport implements Transport {
30
38
  * Handles both general and authenticated message types. For general messages,
31
39
  * the payload is deserialized and sent as an HTTP request. For other message types,
32
40
  * the message is sent as a POST request to the `/auth` endpoint.
33
- *
41
+ *
34
42
  * @param message - The AuthMessage to send.
35
43
  * @returns A promise that resolves when the message is successfully sent.
36
- *
44
+ *
37
45
  * @throws Will throw an error if no listener has been registered via `onData`.
38
46
  */
39
47
  async send(message: AuthMessage): Promise<void> {
40
- if (!this.onDataCallback) {
41
- throw new Error('Listen before you start speaking. God gave you two ears and one mouth for a reason.')
48
+ if (this.onDataCallback == null) {
49
+ throw new Error(
50
+ 'Listen before you start speaking. God gave you two ears and one mouth for a reason.'
51
+ )
42
52
  }
43
53
 
44
54
  if (message.messageType !== 'general') {
45
- const response = await this.fetchClient(`${this.baseUrl}/.well-known/auth`, {
46
- method: 'POST',
47
- headers: {
48
- 'Content-Type': 'application/json'
49
- },
50
- body: JSON.stringify(message)
51
- })
55
+ const response = await this.fetchClient(
56
+ `${this.baseUrl}/.well-known/auth`,
57
+ {
58
+ method: 'POST',
59
+ headers: {
60
+ 'Content-Type': 'application/json'
61
+ },
62
+ body: JSON.stringify(message)
63
+ }
64
+ )
52
65
  // Handle the response if data is received and callback is set
53
- if (response.ok && this.onDataCallback) {
66
+ if (response.ok && typeof this.onDataCallback === 'function') { // ✅ Explicitly check if it's a function
54
67
  const responseMessage = await response.json()
55
68
  if (responseMessage?.status !== 'certificate received') {
56
69
  this.onDataCallback(responseMessage as AuthMessage)
@@ -61,49 +74,77 @@ export class SimplifiedFetchTransport implements Transport {
61
74
  }
62
75
  } else {
63
76
  // Parse message payload
64
- const httpRequest = this.deserializeRequestPayload(message.payload)
77
+ const httpRequest = this.deserializeRequestPayload(message.payload ?? [])
65
78
 
66
79
  // Send the byte array as the HTTP payload
67
80
  const url = `${this.baseUrl}${httpRequest.urlPostfix}`
68
- let httpRequestWithAuthHeaders: any = httpRequest
81
+ const httpRequestWithAuthHeaders: {
82
+ method: string // ✅ Add method property
83
+ headers: Record<string, string>
84
+ body?: string | Record<string, unknown> | Uint8Array
85
+ } = {
86
+ method: httpRequest.method, // ✅ Copy method from httpRequest
87
+ headers: httpRequest.headers,
88
+ body: Array.isArray(httpRequest.body)
89
+ ? JSON.stringify(httpRequest.body)
90
+ : httpRequest.body
91
+ }
92
+
69
93
  if (typeof httpRequest.headers !== 'object') {
70
94
  httpRequestWithAuthHeaders.headers = {}
71
95
  }
72
96
 
73
97
  // Append auth headers in request to server
74
- httpRequestWithAuthHeaders.headers['x-bsv-auth-version'] = message.version
75
- httpRequestWithAuthHeaders.headers['x-bsv-auth-identity-key'] = message.identityKey
76
- httpRequestWithAuthHeaders.headers['x-bsv-auth-nonce'] = message.nonce
77
- httpRequestWithAuthHeaders.headers['x-bsv-auth-your-nonce'] = message.yourNonce
78
- httpRequestWithAuthHeaders.headers['x-bsv-auth-signature'] = Utils.toHex(message.signature)
79
- httpRequestWithAuthHeaders.headers['x-bsv-auth-request-id'] = httpRequest.requestId
98
+ httpRequestWithAuthHeaders.headers['x-bsv-auth-version'] =
99
+ message.version
100
+ httpRequestWithAuthHeaders.headers['x-bsv-auth-identity-key'] =
101
+ message.identityKey
102
+ httpRequestWithAuthHeaders.headers['x-bsv-auth-nonce'] = message.nonce ?? ''
103
+ httpRequestWithAuthHeaders.headers['x-bsv-auth-your-nonce'] = message.yourNonce ?? ''
104
+
105
+ httpRequestWithAuthHeaders.headers['x-bsv-auth-signature'] = Utils.toHex(
106
+ message.signature ?? []
107
+ )
108
+ httpRequestWithAuthHeaders.headers['x-bsv-auth-request-id'] =
109
+ httpRequest.requestId
80
110
 
81
111
  // Ensure Content-Type is set for requests with a body
82
- if (httpRequestWithAuthHeaders.body) {
83
- const headers = httpRequestWithAuthHeaders.headers;
84
- if (!headers['content-type']) {
85
- throw new Error('Content-Type header is required for requests with a body.');
112
+ if (httpRequestWithAuthHeaders.body !== null && httpRequestWithAuthHeaders.body !== undefined) {
113
+ const headers = httpRequestWithAuthHeaders.headers
114
+ if (headers['content-type'] === undefined || headers['content-type'] === null || headers['content-type'].trim() === '') {
115
+ throw new Error(
116
+ 'Content-Type header is required for requests with a body.'
117
+ )
86
118
  }
87
119
 
88
- const contentType = headers['content-type'];
120
+ const contentType = headers['content-type']
89
121
 
90
122
  // Transform body based on Content-Type
91
- if (contentType.includes('application/json')) {
92
- // Convert byte array to JSON string
93
- httpRequestWithAuthHeaders.body = Utils.toUTF8(httpRequestWithAuthHeaders.body);
94
- } else if (contentType.includes('application/x-www-form-urlencoded')) {
95
- // Convert byte array to URL-encoded string
96
- httpRequestWithAuthHeaders.body = Utils.toUTF8(httpRequestWithAuthHeaders.body);
97
- } else if (contentType.includes('text/plain')) {
98
- // Convert byte array to plain UTF-8 string
99
- httpRequestWithAuthHeaders.body = Utils.toUTF8(httpRequestWithAuthHeaders.body);
100
- } else {
101
- // For all other content types, treat as binary data
102
- httpRequestWithAuthHeaders.body = new Uint8Array(httpRequestWithAuthHeaders.body);
123
+ if (typeof httpRequestWithAuthHeaders.body !== 'undefined') {
124
+ if (contentType.includes('application/json') ||
125
+ contentType.includes('application/x-www-form-urlencoded') ||
126
+ contentType.includes('text/plain')) {
127
+ // Convert byte array or object to UTF-8 string
128
+ if (httpRequestWithAuthHeaders.body instanceof Uint8Array) {
129
+ httpRequestWithAuthHeaders.body = Utils.toUTF8(
130
+ Array.from(httpRequestWithAuthHeaders.body) // Convert Uint8Array to number[]
131
+ )
132
+ } else if (typeof httpRequestWithAuthHeaders.body === 'object') {
133
+ httpRequestWithAuthHeaders.body = JSON.stringify(httpRequestWithAuthHeaders.body)
134
+ }
135
+ } else {
136
+ // For all other content types, ensure it's Uint8Array
137
+ if (!(httpRequestWithAuthHeaders.body instanceof Uint8Array)) {
138
+ httpRequestWithAuthHeaders.body = new Uint8Array(
139
+ typeof httpRequestWithAuthHeaders.body === 'string'
140
+ ? Utils.toArray(httpRequestWithAuthHeaders.body, 'utf8') // Convert string to byte array
141
+ : []
142
+ )
143
+ }
144
+ }
103
145
  }
104
146
  }
105
147
 
106
-
107
148
  // Send the actual fetch request to the server
108
149
  const response = await this.fetchClient(url, {
109
150
  method: httpRequestWithAuthHeaders.method,
@@ -113,38 +154,50 @@ export class SimplifiedFetchTransport implements Transport {
113
154
 
114
155
  // Check for an acceptable status
115
156
  if (!SUCCESS_STATUS_CODES.includes(response.status)) {
116
- // Try parsing JSON error
117
- let errorInfo;
157
+ let errorInfo: ErrorInfo | null = null // Explicitly initialize
158
+
118
159
  try {
119
- errorInfo = await response.json();
160
+ errorInfo = await response.json() as ErrorInfo // Cast response to expected type
120
161
  } catch {
121
162
  // Fallback to text if JSON parse fails
122
- const text = await response.text().catch(() => '');
123
- throw new Error(`HTTP ${response.status} - ${text || 'Unknown error'}`);
163
+ const text = await response.text().catch(() => '')
164
+ throw new Error(
165
+ `HTTP ${response.status} - ${text.trim() !== '' ? text : 'Unknown error'}`
166
+ )
124
167
  }
125
168
 
126
169
  // If we find a known { status: 'error', code, description } structure
127
- if (errorInfo?.status === 'error' && typeof errorInfo.description === 'string') {
128
- const msg = `HTTP ${response.status} - ${errorInfo.description}`;
129
- throw new Error(errorInfo.code ? `${msg} (code: ${errorInfo.code})` : msg);
170
+ if (
171
+ errorInfo !== null && // Explicitly check for null
172
+ errorInfo.status === 'error' &&
173
+ typeof errorInfo.description === 'string'
174
+ ) {
175
+ const msg = `HTTP ${response.status} - ${errorInfo.description}`
176
+ throw new Error(
177
+ typeof errorInfo.code === 'string' ? `${msg} (code: ${errorInfo.code})` : msg
178
+ )
130
179
  }
131
180
 
132
181
  // Otherwise just throw whatever we got
133
- throw new Error(`HTTP ${response.status} - ${JSON.stringify(errorInfo)}`);
182
+ throw new Error(
183
+ `HTTP ${response.status} - ${JSON.stringify(errorInfo)}`
184
+ )
134
185
  }
135
186
 
136
187
  const parsedBody = await response.arrayBuffer()
137
188
  const payloadWriter = new Utils.Writer()
138
- payloadWriter.write(Utils.toArray(response.headers.get('x-bsv-auth-request-id'), 'base64'))
189
+ payloadWriter.write(
190
+ Utils.toArray(response.headers.get('x-bsv-auth-request-id'), 'base64')
191
+ )
139
192
  payloadWriter.writeVarIntNum(response.status)
140
193
 
141
194
  // Filter out headers the server signed:
142
195
  // - Custom headers prefixed with x-bsv are included, except auth
143
196
  // - x-bsv-auth headers are not allowed
144
197
  // - authorization header is signed by the server
145
- const includedHeaders: [string, string][] = []
198
+ const includedHeaders: Array<[string, string]> = []
146
199
  // Collect headers into a raw array for sorting
147
- const headersArray: [string, string][] = []
200
+ const headersArray: Array<[string, string]> = []
148
201
  response.headers.forEach((value, key) => {
149
202
  const lowerKey = key.toLowerCase()
150
203
  if (lowerKey.startsWith('x-bsv-') || lowerKey === 'authorization') {
@@ -174,7 +227,7 @@ export class SimplifiedFetchTransport implements Transport {
174
227
  }
175
228
 
176
229
  // Handle body
177
- if (parsedBody) {
230
+ if (parsedBody !== null && parsedBody !== undefined) { // ✅ Explicitly check for null/undefined
178
231
  const bodyAsArray = Array.from(new Uint8Array(parsedBody))
179
232
  payloadWriter.writeVarIntNum(bodyAsArray.length)
180
233
  payloadWriter.write(bodyAsArray)
@@ -184,18 +237,27 @@ export class SimplifiedFetchTransport implements Transport {
184
237
 
185
238
  // Build the correct AuthMessage for the response
186
239
  const responseMessage: AuthMessage = {
187
- version: response.headers.get('x-bsv-auth-version'),
188
- messageType: response.headers.get('x-bsv-auth-message-type') === 'certificateRequest' ? 'certificateRequest' : 'general',
189
- identityKey: response.headers.get('x-bsv-auth-identity-key'),
190
- nonce: response.headers.get('x-bsv-auth-nonce'),
191
- yourNonce: response.headers.get('x-bsv-auth-your-nonce'),
192
- requestedCertificates: JSON.parse(response.headers.get('x-bsv-auth-requested-certificates')) as RequestedCertificateSet,
240
+ version: response.headers.get('x-bsv-auth-version') ?? '', // Ensure string
241
+ messageType:
242
+ response.headers.get('x-bsv-auth-message-type') ===
243
+ 'certificateRequest'
244
+ ? 'certificateRequest'
245
+ : 'general',
246
+ identityKey: response.headers.get('x-bsv-auth-identity-key') ?? '',
247
+ nonce: response.headers.get('x-bsv-auth-nonce') ?? undefined,
248
+ yourNonce: response.headers.get('x-bsv-auth-your-nonce') ?? undefined,
249
+ requestedCertificates: JSON.parse(
250
+ response.headers.get('x-bsv-auth-requested-certificates') ?? '[]'
251
+ ) as RequestedCertificateSet,
193
252
  payload: payloadWriter.toArray(),
194
- signature: Utils.toArray(response.headers.get('x-bsv-auth-signature'), 'hex'),
253
+ signature: Utils.toArray(
254
+ response.headers.get('x-bsv-auth-signature') ?? '',
255
+ 'hex'
256
+ )
195
257
  }
196
258
 
197
259
  // If the server didn't provide the correct authentication headers, throw an error
198
- if (!responseMessage.version) {
260
+ if (responseMessage.version === undefined || responseMessage.version === null || responseMessage.version.trim() === '') {
199
261
  throw new Error('HTTP server failed to authenticate')
200
262
  }
201
263
 
@@ -205,30 +267,41 @@ export class SimplifiedFetchTransport implements Transport {
205
267
  }
206
268
 
207
269
  /**
208
- * Registers a callback to handle incoming messages.
270
+ * Registers a callback to handle incoming messages.
209
271
  * This must be called before sending any messages to ensure responses can be processed.
210
- *
272
+ *
211
273
  * @param callback - A function to invoke when an incoming AuthMessage is received.
212
274
  * @returns A promise that resolves once the callback is set.
213
275
  */
214
- async onData(callback: (message: AuthMessage) => Promise<void>): Promise<void> {
215
- this.onDataCallback = (m) => {
216
- callback(m)
276
+ async onData(
277
+ callback: (message: AuthMessage) => Promise<void>
278
+ ): Promise<void> {
279
+ this.onDataCallback = (m) => { // ✅ Removed `async` here
280
+ void (async () => { // ✅ Wraps the async function inside a void IIFE
281
+ try {
282
+ await callback(m) // ✅ Ensures proper `await`
283
+ } catch (error) {
284
+ console.error(
285
+ 'Error handling AuthMessage:',
286
+ error instanceof Error ? error.message : String(error)
287
+ )
288
+ }
289
+ })()
217
290
  }
218
291
  }
219
292
 
220
293
  /**
221
294
  * Deserializes a request payload from a byte array into an HTTP request-like structure.
222
- *
295
+ *
223
296
  * @param payload - The serialized payload to deserialize.
224
297
  * @returns An object representing the deserialized request, including the method,
225
298
  * URL postfix (path and query string), headers, body, and request ID.
226
299
  */
227
300
  deserializeRequestPayload(payload: number[]): {
228
- method: string,
229
- urlPostfix: string,
230
- headers: Record<string, string>,
231
- body: number[],
301
+ method: string
302
+ urlPostfix: string
303
+ headers: Record<string, string>
304
+ body: number[]
232
305
  requestId: string
233
306
  } {
234
307
  // Create a reader
@@ -288,4 +361,4 @@ export class SimplifiedFetchTransport implements Transport {
288
361
  requestId
289
362
  }
290
363
  }
291
- }
364
+ }
@@ -1 +1 @@
1
- export * from './SimplifiedFetchTransport.js'
1
+ export * from './SimplifiedFetchTransport.js'
@@ -1,16 +1,15 @@
1
- import { PrivateKey, Random, Utils } from '../../../../dist/cjs/src/primitives/index.js'
2
- import { ProtoWallet } from '../../../../dist/cjs/src/wallet/ProtoWallet.js'
3
- import { WalletInterface } from '../../../../dist/cjs/src/wallet/Wallet.interfaces.js'
4
- import { createNonce } from '../../../../dist/cjs/src/auth/utils/createNonce.js'
5
- import { verifyNonce } from '../../../../dist/cjs/src/auth/utils/verifyNonce.js'
6
- import { hash256 } from '../../../../dist/cjs/src/primitives/Hash.js'
1
+ import { PrivateKey, Utils } from '../../../primitives/index'
2
+ import { WalletInterface } from '../../../wallet/Wallet.interfaces'
3
+ import { createNonce } from '../../../auth/utils/createNonce'
4
+ import { verifyNonce } from '../../../auth/utils/verifyNonce'
5
+ import { CompletedProtoWallet } from '../../../auth/certificates/__tests/CompletedProtoWallet'
7
6
 
8
7
  describe('createNonce', () => {
9
8
  let mockWallet: WalletInterface
10
9
 
11
10
  beforeEach(() => {
12
11
  mockWallet = {
13
- createHmac: jest.fn().mockResolvedValue({ hmac: new Uint8Array(16) }),
12
+ createHmac: jest.fn().mockResolvedValue({ hmac: new Uint8Array(16) })
14
13
  } as unknown as WalletInterface
15
14
  })
16
15
 
@@ -20,9 +19,13 @@ describe('createNonce', () => {
20
19
 
21
20
  it('throws an error if wallet fails to create HMAC', async () => {
22
21
  // Mock failure of HMAC creation
23
- (mockWallet.createHmac as jest.Mock).mockRejectedValue(new Error('Failed to create HMAC'))
22
+ (mockWallet.createHmac as jest.Mock).mockRejectedValue(
23
+ new Error('Failed to create HMAC')
24
+ )
24
25
 
25
- await expect(createNonce(mockWallet)).rejects.toThrow('Failed to create HMAC')
26
+ await expect(createNonce(mockWallet)).rejects.toThrow(
27
+ 'Failed to create HMAC'
28
+ )
26
29
  })
27
30
 
28
31
  it('creates a 256-bit nonce', async () => {
@@ -37,7 +40,7 @@ describe('verifyNonce', () => {
37
40
  beforeEach(() => {
38
41
  mockWallet = {
39
42
  createHmac: jest.fn().mockResolvedValue({ hmac: new Uint8Array(16) }),
40
- verifyHmac: jest.fn().mockResolvedValue({ valid: true }),
43
+ verifyHmac: jest.fn().mockResolvedValue({ valid: true })
41
44
  } as unknown as WalletInterface
42
45
  })
43
46
 
@@ -49,9 +52,19 @@ describe('verifyNonce', () => {
49
52
  (mockWallet.verifyHmac as jest.Mock).mockResolvedValue({ valid: false })
50
53
 
51
54
  const nonce = await createNonce(mockWallet)
52
- await expect(verifyNonce(nonce + 'ABC', mockWallet)).resolves.toEqual(false)
55
+ await expect(verifyNonce(nonce + 'ABC', mockWallet)).resolves.toEqual(
56
+ false
57
+ )
53
58
  await expect(verifyNonce(nonce + '=', mockWallet)).resolves.toEqual(false)
54
- await expect(verifyNonce(Buffer.from(nonce + Buffer.from('extra').toString('base64'), 'base64').toString('base64'), mockWallet)).resolves.toEqual(false)
59
+ await expect(
60
+ verifyNonce(
61
+ Buffer.from(
62
+ nonce + Buffer.from('extra').toString('base64'),
63
+ 'base64'
64
+ ).toString('base64'),
65
+ mockWallet
66
+ )
67
+ ).resolves.toEqual(false)
55
68
  })
56
69
 
57
70
  it('returns false for an invalid HMAC verification', async () => {
@@ -75,7 +88,7 @@ describe('verifyNonce', () => {
75
88
  })
76
89
 
77
90
  it('verifies nonce using real createHmac and verifyHmac', async () => {
78
- const realWallet = new ProtoWallet(PrivateKey.fromRandom())
91
+ const realWallet = new CompletedProtoWallet(PrivateKey.fromRandom())
79
92
 
80
93
  const nonce = await createNonce(realWallet)
81
94
  const isValid = await verifyNonce(nonce, realWallet)
@@ -84,33 +97,49 @@ describe('verifyNonce', () => {
84
97
  })
85
98
 
86
99
  it('SerialNumber use-case', async () => {
87
- const clientWallet = new ProtoWallet(PrivateKey.fromRandom())
88
- const serverWallet = new ProtoWallet(PrivateKey.fromRandom())
100
+ const clientWallet = new CompletedProtoWallet(PrivateKey.fromRandom())
101
+ const serverWallet = new CompletedProtoWallet(PrivateKey.fromRandom())
89
102
 
90
103
  // Client creates a random nonce that the server can verify
91
- const clientNonce = await createNonce(clientWallet, (await serverWallet.getPublicKey({ identityKey: true })).publicKey)
104
+ const clientNonce = await createNonce(
105
+ clientWallet,
106
+ (await serverWallet.getPublicKey({ identityKey: true })).publicKey
107
+ )
92
108
  // The server verifies the client created the nonce provided
93
- await verifyNonce(clientNonce, serverWallet, (await clientWallet.getPublicKey({ identityKey: true })).publicKey)
109
+ await verifyNonce(
110
+ clientNonce,
111
+ serverWallet,
112
+ (await clientWallet.getPublicKey({ identityKey: true })).publicKey
113
+ )
94
114
  // Server creates a random nonce that the client can verify
95
- const serverNonce = await createNonce(serverWallet, (await clientWallet.getPublicKey({ identityKey: true })).publicKey)
115
+ const serverNonce = await createNonce(
116
+ serverWallet,
117
+ (await clientWallet.getPublicKey({ identityKey: true })).publicKey
118
+ )
96
119
  // The server compute a serial number from the client and server nonce
97
120
  const { hmac: serialNumber } = await serverWallet.createHmac({
98
- data: clientNonce + serverNonce,
121
+ data: Utils.toArray(clientNonce + serverNonce, 'utf8'),
99
122
  protocolID: [2, 'certificate creation'],
100
123
  keyID: serverNonce + clientNonce,
101
- counterparty: (await clientWallet.getPublicKey({ identityKey: true })).publicKey
124
+ counterparty: (await clientWallet.getPublicKey({ identityKey: true }))
125
+ .publicKey
102
126
  })
103
127
 
104
128
  // Client verifies server's nonce
105
- await verifyNonce(serverNonce, clientWallet, (await serverWallet.getPublicKey({ identityKey: true })).publicKey)
129
+ await verifyNonce(
130
+ serverNonce,
131
+ clientWallet,
132
+ (await serverWallet.getPublicKey({ identityKey: true })).publicKey
133
+ )
106
134
 
107
135
  // Client verifies the server included their nonce
108
136
  const { valid } = await clientWallet.verifyHmac({
109
137
  hmac: serialNumber,
110
- data: clientNonce + serverNonce,
138
+ data: Utils.toArray(clientNonce + serverNonce, 'utf8'),
111
139
  protocolID: [2, 'certificate creation'],
112
140
  keyID: serverNonce + clientNonce,
113
- counterparty: (await serverWallet.getPublicKey({ identityKey: true })).publicKey,
141
+ counterparty: (await serverWallet.getPublicKey({ identityKey: true }))
142
+ .publicKey
114
143
  })
115
144
 
116
145
  console.log(Utils.toBase64(serialNumber))