@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,13 +1,14 @@
1
- import { Peer } from "../../../dist/cjs/src/auth/Peer.js"
2
- import { AuthMessage, Transport } from "../../../dist/cjs/src/auth/types.js"
1
+ import { Peer } from '../../auth/Peer.js'
2
+ import { AuthMessage, Transport } from '../../auth/types.js'
3
3
  import { jest } from '@jest/globals'
4
- import { Wallet } from "../../../dist/cjs/src/wallet/Wallet.interfaces.js"
5
- import { ProtoWallet } from '../../../dist/cjs/src/wallet/index.js'
6
- import { Utils, PrivateKey, SymmetricKey } from '../../../dist/cjs/src/primitives/index.js'
7
- import { VerifiableCertificate, } from "../../../dist/cjs/src/auth/certificates/VerifiableCertificate.js"
8
- import { MasterCertificate } from '../../../dist/cjs/src/auth/certificates/MasterCertificate.js'
9
- import { getVerifiableCertificates } from '../../../dist/cjs/src/auth/utils/getVerifiableCertificates.js'
10
- jest.mock('../../../dist/cjs/src/auth/utils/getVerifiableCertificates.js')
4
+ import { WalletInterface } from '../../wallet/Wallet.interfaces.js'
5
+ import { Utils, PrivateKey } from '../../primitives/index.js'
6
+ import { VerifiableCertificate } from '../../auth/certificates/VerifiableCertificate.js'
7
+ import { MasterCertificate } from '../../auth/certificates/MasterCertificate.js'
8
+ import { getVerifiableCertificates } from '../../auth/utils/getVerifiableCertificates.js'
9
+ import { CompletedProtoWallet } from '../../../mod.js'
10
+
11
+ jest.mock('../../auth/utils/getVerifiableCertificates')
11
12
 
12
13
  class LocalTransport implements Transport {
13
14
  private peerTransport?: LocalTransport
@@ -19,28 +20,35 @@ class LocalTransport implements Transport {
19
20
  }
20
21
 
21
22
  async send(message: AuthMessage): Promise<void> {
22
- if (this.peerTransport && this.peerTransport.onDataCallback) {
23
+ if (
24
+ this.peerTransport?.onDataCallback !== undefined &&
25
+ this.peerTransport?.onDataCallback !== null
26
+ ) {
23
27
  // Simulate message delivery by calling the onData callback of the peer
24
28
  this.peerTransport.onDataCallback(message)
25
29
  } else {
26
- throw new Error("Peer transport is not connected or not listening for data.")
30
+ throw new Error(
31
+ 'Peer transport is not connected or not listening for data.'
32
+ )
27
33
  }
28
34
  }
29
35
 
30
- async onData(callback: (message: AuthMessage) => Promise<void>): Promise<void> {
36
+ async onData(
37
+ callback: (message: AuthMessage) => void
38
+ ): Promise<void> {
31
39
  this.onDataCallback = callback
32
40
  }
33
41
  }
34
42
 
35
43
  describe('Peer class mutual authentication and certificate exchange', () => {
36
- let walletA: Wallet, walletB: Wallet
44
+ let walletA: WalletInterface, walletB: WalletInterface
37
45
  let transportA: LocalTransport, transportB: LocalTransport
38
46
  let alice: Peer, bob: Peer
39
47
  let certificatesReceivedByAlice: VerifiableCertificate[] | undefined
40
48
  let certificatesReceivedByBob: VerifiableCertificate[] | undefined
41
49
 
42
50
  const certificateType = Utils.toBase64(new Array(32).fill(1))
43
- const certificateSerialNumber = Utils.toBase64(new Array(32).fill(2))
51
+ // const certificateSerialNumber = Utils.toBase64(new Array(32).fill(2))
44
52
  const certifierPrivateKey = PrivateKey.fromRandom()
45
53
  const certifierPublicKey = certifierPrivateKey.toPublicKey().toString()
46
54
  const certificatesToRequest = {
@@ -48,24 +56,37 @@ describe('Peer class mutual authentication and certificate exchange', () => {
48
56
  types: { [certificateType]: ['name', 'email'] }
49
57
  }
50
58
 
51
- const aliceFields = { name: 'Alice', email: 'alice@example.com', libraryCardNumber: 'A123456' }
52
- const bobFields = { name: 'Bob', email: 'bob@example.com', libraryCardNumber: 'B654321' }
59
+ const aliceFields = {
60
+ name: 'Alice',
61
+ email: 'alice@example.com',
62
+ libraryCardNumber: 'A123456'
63
+ }
64
+ const bobFields = {
65
+ name: 'Bob',
66
+ email: 'bob@example.com',
67
+ libraryCardNumber: 'B654321'
68
+ }
53
69
 
54
- async function createMasterCertificate(subjectWallet: Wallet, fields: Record<string, string>) {
55
- const subjectPubKey = (await subjectWallet.getPublicKey({ identityKey: true })).publicKey
56
- const certifierWallet = new ProtoWallet(certifierPrivateKey)
70
+ async function createMasterCertificate(
71
+ subjectWallet: WalletInterface,
72
+ fields: Record<string, string>
73
+ ): Promise<MasterCertificate> {
74
+ const subjectPubKey = (
75
+ await subjectWallet.getPublicKey({ identityKey: true })
76
+ ).publicKey
77
+ const certifierWallet = new CompletedProtoWallet(certifierPrivateKey)
57
78
 
58
79
  // Issue a new MasterCertificate for the subject (e.g. Alice/Bob)
59
- const masterCertificate = await MasterCertificate.issueCertificateForSubject(
60
- certifierWallet,
61
- subjectPubKey,
62
- fields,
63
- certificateType,
64
- async () => 'revocationOutpoint' // or any revocation outpoint logic you want
65
- )
66
-
67
- // For test consistency, override the automatically generated serialNumber
68
- // with the globally used 'certificateSerialNumber' and re-sign:
80
+ const masterCertificate =
81
+ await MasterCertificate.issueCertificateForSubject(
82
+ certifierWallet,
83
+ subjectPubKey,
84
+ fields,
85
+ certificateType,
86
+ async () => 'revocationOutpoint' // or any revocation outpoint logic you want
87
+ )
88
+
89
+ // For test consistency, you could override the auto-generated serialNumber:
69
90
  // masterCertificate.signature = undefined
70
91
  // masterCertificate.serialNumber = certificateSerialNumber
71
92
  // await masterCertificate.sign(certifierWallet)
@@ -75,11 +96,15 @@ describe('Peer class mutual authentication and certificate exchange', () => {
75
96
 
76
97
  async function createVerifiableCertificate(
77
98
  masterCertificate: MasterCertificate,
78
- wallet: Wallet,
99
+ wallet: WalletInterface,
79
100
  verifierIdentityKey: string,
80
101
  fieldsToReveal: string[]
81
102
  ): Promise<VerifiableCertificate> {
82
- const certifierWallet = new ProtoWallet(certifierPrivateKey)
103
+ const certifierWallet = new CompletedProtoWallet(certifierPrivateKey)
104
+
105
+ if (certifierWallet.keyDeriver === undefined) {
106
+ throw new Error('KeyDeriver must be defined for test!')
107
+ }
83
108
 
84
109
  const keyringForVerifier = await MasterCertificate.createKeyringForVerifier(
85
110
  wallet,
@@ -106,14 +131,25 @@ describe('Peer class mutual authentication and certificate exchange', () => {
106
131
  aliceRequests: boolean,
107
132
  bobRequests: boolean,
108
133
  options: {
109
- aliceCertsToRequest?: typeof certificatesToRequest,
134
+ aliceCertsToRequest?: typeof certificatesToRequest
110
135
  bobCertsToRequest?: typeof certificatesToRequest
111
136
  } = {}
112
- ) {
113
- const { aliceCertsToRequest = certificatesToRequest, bobCertsToRequest = certificatesToRequest } = options
137
+ ): any {
138
+ const {
139
+ aliceCertsToRequest = certificatesToRequest,
140
+ bobCertsToRequest = certificatesToRequest
141
+ } = options
114
142
 
115
- alice = new Peer(walletA, transportA, aliceRequests ? aliceCertsToRequest : undefined)
116
- bob = new Peer(walletB, transportB, bobRequests ? bobCertsToRequest : undefined)
143
+ alice = new Peer(
144
+ walletA,
145
+ transportA,
146
+ aliceRequests ? aliceCertsToRequest : undefined
147
+ )
148
+ bob = new Peer(
149
+ walletB,
150
+ transportB,
151
+ bobRequests ? bobCertsToRequest : undefined
152
+ )
117
153
 
118
154
  const aliceReceivedCertificates = new Promise<void>((resolve) => {
119
155
  alice.listenForCertificatesReceived((senderPublicKey, certificates) => {
@@ -132,20 +168,26 @@ describe('Peer class mutual authentication and certificate exchange', () => {
132
168
  return { aliceReceivedCertificates, bobReceivedCertificates }
133
169
  }
134
170
 
135
- function mockGetVerifiableCertificates(
171
+ async function mockGetVerifiableCertificates(
136
172
  aliceCertificate: VerifiableCertificate | undefined,
137
173
  bobCertificate: VerifiableCertificate | undefined,
138
174
  alicePubKey: string,
139
175
  bobPubKey: string
140
- ) {
141
- (getVerifiableCertificates as jest.Mock).mockImplementation((wallet, _, verifierIdentityKey) => {
142
- if (wallet === walletA && verifierIdentityKey === bobPubKey) {
143
- return aliceCertificate ? Promise.resolve([aliceCertificate]) : Promise.resolve([])
144
- } else if (wallet === walletB && verifierIdentityKey === alicePubKey) {
145
- return bobCertificate ? Promise.resolve([bobCertificate]) : Promise.resolve([])
176
+ ): Promise<any> {
177
+ ; (getVerifiableCertificates as jest.Mock).mockImplementation(
178
+ async (wallet, _, verifierIdentityKey) => {
179
+ if (wallet === walletA && verifierIdentityKey === bobPubKey) {
180
+ return aliceCertificate !== null && aliceCertificate !== undefined
181
+ ? await Promise.resolve([aliceCertificate])
182
+ : await Promise.resolve([])
183
+ } else if (wallet === walletB && verifierIdentityKey === alicePubKey) {
184
+ return bobCertificate !== null && bobCertificate !== undefined
185
+ ? await Promise.resolve([bobCertificate])
186
+ : await Promise.resolve([])
187
+ }
188
+ return await Promise.resolve([])
146
189
  }
147
- return Promise.resolve([])
148
- });
190
+ )
149
191
  }
150
192
 
151
193
  beforeEach(async () => {
@@ -156,22 +198,27 @@ describe('Peer class mutual authentication and certificate exchange', () => {
156
198
  certificatesReceivedByAlice = []
157
199
  certificatesReceivedByBob = []
158
200
 
159
- walletA = new ProtoWallet(PrivateKey.fromRandom())
160
- walletB = new ProtoWallet(PrivateKey.fromRandom())
201
+ walletA = new CompletedProtoWallet(PrivateKey.fromRandom())
202
+ walletB = new CompletedProtoWallet(PrivateKey.fromRandom())
161
203
  })
162
204
 
163
205
  it('Neither Alice nor Bob request certificates, mutual authentication completes successfully', async () => {
164
- const { aliceReceivedCertificates, bobReceivedCertificates } = setupPeers(false, false)
206
+ setupPeers(
207
+ false,
208
+ false
209
+ )
165
210
 
166
211
  const bobReceivedGeneralMessage = new Promise<void>((resolve) => {
167
- bob.listenForGeneralMessages(async (senderPublicKey, payload) => {
168
- console.log('Bob received message:', Utils.toUTF8(payload))
169
- await bob.toPeer(Utils.toArray('Hello Alice!'), senderPublicKey)
170
- resolve()
212
+ bob.listenForGeneralMessages((senderPublicKey, payload) => {
213
+ (async () => {
214
+ console.log('Bob received message:', Utils.toUTF8(payload))
215
+ await bob.toPeer(Utils.toArray('Hello Alice!'), senderPublicKey)
216
+ resolve()
217
+ })().catch(e => console.log(e))
171
218
  })
172
219
  })
173
220
  const aliceReceivedGeneralMessage = new Promise<void>((resolve) => {
174
- alice.listenForGeneralMessages(async (senderPublicKey, payload) => {
221
+ alice.listenForGeneralMessages((senderPublicKey, payload) => {
175
222
  console.log('Alice received message:', Utils.toUTF8(payload))
176
223
  resolve()
177
224
  })
@@ -186,10 +233,15 @@ describe('Peer class mutual authentication and certificate exchange', () => {
186
233
  }, 15000)
187
234
 
188
235
  it('Bob requests certificates from Alice, Alice does not request any from Bob', async () => {
189
- const alicePubKey = (await walletA.getPublicKey({ identityKey: true })).publicKey
190
- const bobPubKey = (await walletB.getPublicKey({ identityKey: true })).publicKey
236
+ const alicePubKey = (await walletA.getPublicKey({ identityKey: true }))
237
+ .publicKey
238
+ const bobPubKey = (await walletB.getPublicKey({ identityKey: true }))
239
+ .publicKey
191
240
 
192
- const aliceMasterCertificate = await createMasterCertificate(walletA, aliceFields)
241
+ const aliceMasterCertificate = await createMasterCertificate(
242
+ walletA,
243
+ aliceFields
244
+ )
193
245
  const aliceVerifiableCertificate = await createVerifiableCertificate(
194
246
  aliceMasterCertificate,
195
247
  walletA,
@@ -198,22 +250,34 @@ describe('Peer class mutual authentication and certificate exchange', () => {
198
250
  )
199
251
 
200
252
  const { bobReceivedCertificates } = setupPeers(false, true)
201
- mockGetVerifiableCertificates(aliceVerifiableCertificate, undefined, alicePubKey, bobPubKey)
253
+ await mockGetVerifiableCertificates(
254
+ aliceVerifiableCertificate,
255
+ undefined,
256
+ alicePubKey,
257
+ bobPubKey
258
+ )
202
259
 
203
260
  const bobReceivedGeneralMessage = new Promise<void>((resolve) => {
204
- bob.listenForGeneralMessages(async (senderPublicKey, payload) => {
205
- await bobReceivedCertificates
206
- if (certificatesReceivedByBob?.length !== 0) {
207
- certificatesReceivedByBob?.forEach(async cert => {
208
- // Decrypt to ensure it has the correct fields
209
- const decryptedFields = await cert.decryptFields(walletB)
210
- if (cert.certifier !== 'bob') {
211
- console.log('Bob accepted the message:', Utils.toUTF8(payload))
212
- console.log('Decrypted fields:', decryptedFields)
261
+ bob.listenForGeneralMessages((senderPublicKey, payload) => {
262
+ // Wrap async logic in an IIFE so the callback remains synchronous.
263
+ (async () => {
264
+ await bobReceivedCertificates
265
+
266
+ if (certificatesReceivedByBob !== undefined && certificatesReceivedByBob.length > 0) {
267
+ // Use a for...of loop instead of forEach with an async callback.
268
+ for (const cert of certificatesReceivedByBob) {
269
+ // Decrypt to ensure it has the correct fields.
270
+ const decryptedFields = await cert.decryptFields(walletB)
271
+ if (cert.certifier !== 'bob') {
272
+ console.log('Bob accepted the message:', Utils.toUTF8(payload))
273
+ console.log('Decrypted fields:', decryptedFields)
274
+ }
213
275
  }
214
- })
215
- }
216
- resolve()
276
+ }
277
+ resolve()
278
+ })().catch((e) => {
279
+ console.error(e)
280
+ })
217
281
  })
218
282
  })
219
283
 
@@ -225,11 +289,16 @@ describe('Peer class mutual authentication and certificate exchange', () => {
225
289
  }, 15000)
226
290
 
227
291
  it('Alice requests Bob to present his library card before lending him a book', async () => {
228
- const alicePubKey = (await walletA.getPublicKey({ identityKey: true })).publicKey
229
- const bobPubKey = (await walletB.getPublicKey({ identityKey: true })).publicKey
292
+ const alicePubKey = (await walletA.getPublicKey({ identityKey: true }))
293
+ .publicKey
294
+ const bobPubKey = (await walletB.getPublicKey({ identityKey: true }))
295
+ .publicKey
230
296
 
231
297
  // Bob's certificate includes his library card number
232
- const bobMasterCertificate = await createMasterCertificate(walletB, bobFields)
298
+ const bobMasterCertificate = await createMasterCertificate(
299
+ walletB,
300
+ bobFields
301
+ )
233
302
  const bobVerifiableCertificate = await createVerifiableCertificate(
234
303
  bobMasterCertificate,
235
304
  walletB,
@@ -243,22 +312,36 @@ describe('Peer class mutual authentication and certificate exchange', () => {
243
312
  types: { [certificateType]: ['libraryCardNumber'] }
244
313
  }
245
314
 
246
- const { aliceReceivedCertificates } = setupPeers(true, false, { aliceCertsToRequest: aliceCertificatesToRequest })
247
- mockGetVerifiableCertificates(undefined, bobVerifiableCertificate, alicePubKey, bobPubKey)
315
+ const { aliceReceivedCertificates } = setupPeers(true, false, {
316
+ aliceCertsToRequest: aliceCertificatesToRequest
317
+ })
318
+ await mockGetVerifiableCertificates(
319
+ undefined,
320
+ bobVerifiableCertificate,
321
+ alicePubKey,
322
+ bobPubKey
323
+ )
248
324
 
249
325
  const aliceAcceptedLibraryCard = jest.fn()
250
326
 
251
- alice.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
252
- for (const cert of certificates) {
253
- // Decrypt Bob's certificate fields
254
- const decryptedFields = await cert.decryptFields(walletA)
327
+ alice.listenForCertificatesReceived((senderPublicKey, certificates) => {
328
+ (async () => {
329
+ for (const cert of certificates) {
330
+ // Decrypt Bob's certificate fields
331
+ const decryptedFields = await cert.decryptFields(walletA)
255
332
 
256
- // Check and use the decrypted fields
257
- if (Object.keys(decryptedFields).length !== 0 && decryptedFields.libraryCardNumber) {
258
- console.log(`Alice received Bob's library card number: ${decryptedFields.libraryCardNumber}`)
259
- aliceAcceptedLibraryCard()
333
+ // Check and use the decrypted fields
334
+ if (
335
+ Object.keys(decryptedFields).length !== 0 &&
336
+ typeof decryptedFields.libraryCardNumber !== 'undefined'
337
+ ) {
338
+ console.log(
339
+ `Alice received Bob's library card number: ${decryptedFields.libraryCardNumber}`
340
+ )
341
+ aliceAcceptedLibraryCard()
342
+ }
260
343
  }
261
- }
344
+ })().catch(e => { console.error(e) })
262
345
  })
263
346
 
264
347
  const bobReceivedGeneralMessage = new Promise<void>((resolve) => {
@@ -269,20 +352,26 @@ describe('Peer class mutual authentication and certificate exchange', () => {
269
352
  })
270
353
 
271
354
  // Alice sends a message to Bob requesting his library card before lending him a book
272
- await alice.toPeer(Utils.toArray('Please present your library card to borrow a book.'))
355
+ await alice.toPeer(
356
+ Utils.toArray('Please present your library card to borrow a book.')
357
+ )
273
358
  await aliceReceivedCertificates
274
359
  await bobReceivedGeneralMessage
275
360
 
276
361
  expect(aliceAcceptedLibraryCard).toHaveBeenCalled()
277
362
  expect(certificatesReceivedByAlice).toEqual([bobVerifiableCertificate])
278
- expect(certificatesReceivedByBob).toEqual([]) // Bob did not request any certificates
363
+ expect(certificatesReceivedByBob).toEqual([])
279
364
  }, 15000)
280
365
 
281
366
  it('Bob requests additional certificates from Alice after initial communication', async () => {
282
- const alicePubKey = (await walletA.getPublicKey({ identityKey: true })).publicKey
283
- const bobPubKey = (await walletB.getPublicKey({ identityKey: true })).publicKey
367
+ const alicePubKey = (await walletA.getPublicKey({ identityKey: true }))
368
+ .publicKey
369
+ const bobPubKey = (await walletB.getPublicKey({ identityKey: true }))
370
+ .publicKey
284
371
 
285
- const aliceMasterCertificate = await createMasterCertificate(walletA, { name: 'Alice' })
372
+ const aliceMasterCertificate = await createMasterCertificate(walletA, {
373
+ name: 'Alice'
374
+ })
286
375
  const aliceVerifiableCertificate = await createVerifiableCertificate(
287
376
  aliceMasterCertificate,
288
377
  walletA,
@@ -291,16 +380,23 @@ describe('Peer class mutual authentication and certificate exchange', () => {
291
380
  )
292
381
 
293
382
  const { bobReceivedCertificates } = setupPeers(false, true)
294
- mockGetVerifiableCertificates(aliceVerifiableCertificate, undefined, alicePubKey, bobPubKey)
383
+ await mockGetVerifiableCertificates(
384
+ aliceVerifiableCertificate,
385
+ undefined,
386
+ alicePubKey,
387
+ bobPubKey
388
+ )
295
389
 
296
390
  const bobReceivedGeneralMessage = new Promise<void>((resolve) => {
297
- bob.listenForGeneralMessages(async (senderPublicKey, payload) => {
298
- await bobReceivedCertificates
299
- console.log('Bob received message:', Utils.toUTF8(payload))
391
+ bob.listenForGeneralMessages((senderPublicKey, payload) => {
392
+ (async () => {
393
+ await bobReceivedCertificates
394
+ console.log('Bob received message:', Utils.toUTF8(payload))
300
395
 
301
- // Bob requests additional certificates after initial communication
302
- await bob.requestCertificates(certificatesToRequest, senderPublicKey)
303
- resolve()
396
+ // Bob requests additional certificates after initial communication
397
+ await bob.requestCertificates(certificatesToRequest, senderPublicKey)
398
+ resolve()
399
+ })().catch(e => { console.error(e) })
304
400
  })
305
401
  })
306
402
 
@@ -310,16 +406,23 @@ describe('Peer class mutual authentication and certificate exchange', () => {
310
406
 
311
407
  // Listen for certificates received from the additional request
312
408
  const bobReceivedAdditionalCertificates = new Promise<void>((resolve) => {
313
- bob.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
314
- if (certificates.length > 0) {
315
- // Decrypt to confirm
316
- for (const cert of certificates) {
317
- const decrypted = await cert.decryptFields(walletB)
318
- console.log('Bob received additional certificates from Alice:', cert)
319
- console.log('Decrypted fields:', decrypted)
409
+ bob.listenForCertificatesReceived((senderPublicKey, certificates) => {
410
+ (async () => {
411
+ if (certificates.length > 0) {
412
+ // Decrypt to confirm
413
+ for (const cert of certificates) {
414
+ const decrypted = await cert.decryptFields(walletB)
415
+ console.log(
416
+ 'Bob received additional certificates from Alice:',
417
+ cert
418
+ )
419
+ console.log('Decrypted fields:', decrypted)
420
+ }
421
+ resolve()
320
422
  }
321
- resolve()
322
- }
423
+ })().catch((error) => {
424
+ console.error(error)
425
+ })
323
426
  })
324
427
  })
325
428
 
@@ -329,11 +432,16 @@ describe('Peer class mutual authentication and certificate exchange', () => {
329
432
  }, 15000)
330
433
 
331
434
  it('Bob requests Alice to provide her membership status before granting access to premium content', async () => {
332
- const alicePubKey = (await walletA.getPublicKey({ identityKey: true })).publicKey
333
- const bobPubKey = (await walletB.getPublicKey({ identityKey: true })).publicKey
435
+ const alicePubKey = (await walletA.getPublicKey({ identityKey: true }))
436
+ .publicKey
437
+ const bobPubKey = (await walletB.getPublicKey({ identityKey: true }))
438
+ .publicKey
334
439
 
335
440
  // Alice's certificate includes her membership status
336
- const aliceMasterCertificate = await createMasterCertificate(walletA, { ...aliceFields, membershipStatus: 'Gold' })
441
+ const aliceMasterCertificate = await createMasterCertificate(walletA, {
442
+ ...aliceFields,
443
+ membershipStatus: 'Gold'
444
+ })
337
445
  const aliceVerifiableCertificate = await createVerifiableCertificate(
338
446
  aliceMasterCertificate,
339
447
  walletA,
@@ -347,23 +455,37 @@ describe('Peer class mutual authentication and certificate exchange', () => {
347
455
  types: { [certificateType]: ['membershipStatus'] }
348
456
  }
349
457
 
350
- const { bobReceivedCertificates } = setupPeers(false, true, { bobCertsToRequest: bobCertificatesToRequest })
351
- mockGetVerifiableCertificates(aliceVerifiableCertificate, undefined, alicePubKey, bobPubKey)
458
+ const { bobReceivedCertificates } = setupPeers(false, true, {
459
+ bobCertsToRequest: bobCertificatesToRequest
460
+ })
461
+ await mockGetVerifiableCertificates(
462
+ aliceVerifiableCertificate,
463
+ undefined,
464
+ alicePubKey,
465
+ bobPubKey
466
+ )
352
467
 
353
468
  const bobAcceptedMembershipStatus = jest.fn()
354
469
 
355
470
  const waitForCerts = new Promise<void>((resolve) => {
356
- bob.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
357
- for (const cert of certificates) {
358
- // Decrypt Alice's certificate fields
359
- const decryptedFields = await cert.decryptFields(walletB)
360
- if (decryptedFields.membershipStatus) {
361
- console.log(`Bob received Alice's membership status: ${decryptedFields.membershipStatus}`)
362
- bobAcceptedMembershipStatus()
363
- resolve()
471
+ bob.listenForCertificatesReceived((senderPublicKey, certificates) => {
472
+ (async () => {
473
+ for (const cert of certificates) {
474
+ // Decrypt Alice's certificate fields
475
+ const decryptedFields = await cert.decryptFields(walletB)
476
+ if (typeof decryptedFields.membershipStatus !== 'undefined') {
477
+ console.log(
478
+ `Bob received Alice's membership status: ${decryptedFields.membershipStatus}`
479
+ )
480
+ bobAcceptedMembershipStatus()
481
+ resolve()
482
+ }
364
483
  }
365
- }
366
- })
484
+ })().catch((error) => {
485
+ console.error('Error processing certificates:', error)
486
+ })
487
+ }
488
+ )
367
489
  })
368
490
 
369
491
  const bobReceivedGeneralMessage = new Promise<void>((resolve) => {
@@ -374,22 +496,29 @@ describe('Peer class mutual authentication and certificate exchange', () => {
374
496
  })
375
497
 
376
498
  // Alice sends a message to Bob requesting access to premium content
377
- await alice.toPeer(Utils.toArray('I would like to access the premium content.'))
499
+ await alice.toPeer(
500
+ Utils.toArray('I would like to access the premium content.')
501
+ )
378
502
  await bobReceivedCertificates
379
503
  await bobReceivedGeneralMessage
380
504
  await waitForCerts
381
505
 
382
506
  expect(bobAcceptedMembershipStatus).toHaveBeenCalled()
383
507
  expect(certificatesReceivedByBob).toEqual([aliceVerifiableCertificate])
384
- expect(certificatesReceivedByAlice).toEqual([]) // Alice did not request any certificates
508
+ expect(certificatesReceivedByAlice).toEqual([])
385
509
  }, 15000)
386
510
 
387
- it('Both peers require each other\'s driver\'s license before carpooling', async () => {
388
- const alicePubKey = (await walletA.getPublicKey({ identityKey: true })).publicKey
389
- const bobPubKey = (await walletB.getPublicKey({ identityKey: true })).publicKey
511
+ it("Both peers require each other's driver's license before carpooling", async () => {
512
+ const alicePubKey = (await walletA.getPublicKey({ identityKey: true }))
513
+ .publicKey
514
+ const bobPubKey = (await walletB.getPublicKey({ identityKey: true }))
515
+ .publicKey
390
516
 
391
517
  // Both Alice and Bob have driver's license certificates
392
- const aliceMasterCertificate = await createMasterCertificate(walletA, { ...aliceFields, driversLicenseNumber: 'DLA123456' })
518
+ const aliceMasterCertificate = await createMasterCertificate(walletA, {
519
+ ...aliceFields,
520
+ driversLicenseNumber: 'DLA123456'
521
+ })
393
522
  const aliceVerifiableCertificate = await createVerifiableCertificate(
394
523
  aliceMasterCertificate,
395
524
  walletA,
@@ -397,7 +526,10 @@ describe('Peer class mutual authentication and certificate exchange', () => {
397
526
  ['driversLicenseNumber']
398
527
  )
399
528
 
400
- const bobMasterCertificate = await createMasterCertificate(walletB, { ...bobFields, driversLicenseNumber: 'DLB654321' })
529
+ const bobMasterCertificate = await createMasterCertificate(walletB, {
530
+ ...bobFields,
531
+ driversLicenseNumber: 'DLB654321'
532
+ })
401
533
  const bobVerifiableCertificate = await createVerifiableCertificate(
402
534
  bobMasterCertificate,
403
535
  walletB,
@@ -411,46 +543,70 @@ describe('Peer class mutual authentication and certificate exchange', () => {
411
543
  types: { [certificateType]: ['driversLicenseNumber'] }
412
544
  }
413
545
 
414
- const { aliceReceivedCertificates, bobReceivedCertificates } = setupPeers(true, true, {
415
- aliceCertsToRequest: certificatesToRequestDriversLicense,
416
- bobCertsToRequest: certificatesToRequestDriversLicense
417
- })
418
- mockGetVerifiableCertificates(aliceVerifiableCertificate, bobVerifiableCertificate, alicePubKey, bobPubKey)
546
+ const { aliceReceivedCertificates, bobReceivedCertificates } = setupPeers(
547
+ true,
548
+ true,
549
+ {
550
+ aliceCertsToRequest: certificatesToRequestDriversLicense,
551
+ bobCertsToRequest: certificatesToRequestDriversLicense
552
+ }
553
+ )
554
+ await mockGetVerifiableCertificates(
555
+ aliceVerifiableCertificate,
556
+ bobVerifiableCertificate,
557
+ alicePubKey,
558
+ bobPubKey
559
+ )
419
560
 
420
561
  const aliceAcceptedBobDL = jest.fn()
421
562
  const bobAcceptedAliceDL = jest.fn()
422
563
 
423
564
  const waitForAliceToAcceptBobDL = new Promise<void>((resolve) => {
424
- alice.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
425
- for (const cert of certificates) {
426
- const decryptedFields = await cert.decryptFields(walletA)
427
- if (decryptedFields.driversLicenseNumber) {
428
- console.log(`Alice received Bob's driver's license number: ${decryptedFields.driversLicenseNumber}`)
429
- aliceAcceptedBobDL()
430
- resolve()
565
+ alice.listenForCertificatesReceived((senderPublicKey, certificates) => {
566
+ (async () => {
567
+ for (const cert of certificates) {
568
+ const decryptedFields = await cert.decryptFields(walletA)
569
+ if (decryptedFields.driversLicenseNumber !== undefined) {
570
+ console.log(
571
+ `Alice received Bob's driver's license number: ${decryptedFields.driversLicenseNumber}`
572
+ )
573
+ aliceAcceptedBobDL()
574
+ resolve()
575
+ }
431
576
  }
432
- }
433
- })
577
+ })().catch(e => console.log(e))
578
+ }
579
+ )
434
580
  })
435
581
 
436
582
  const waitForBobToAcceptAliceDL = new Promise<void>((resolve) => {
437
- bob.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
438
- for (const cert of certificates) {
439
- const decryptedFields = await cert.decryptFields(walletB)
440
- if (decryptedFields.driversLicenseNumber) {
441
- console.log(`Bob received Alice's driver's license number: ${decryptedFields.driversLicenseNumber}`)
442
- bobAcceptedAliceDL()
443
- resolve()
583
+ bob.listenForCertificatesReceived((senderPublicKey, certificates) => {
584
+ (async () => {
585
+ for (const cert of certificates) {
586
+ const decryptedFields = await cert.decryptFields(walletB)
587
+ if (decryptedFields.driversLicenseNumber !== undefined) {
588
+ console.log(
589
+ `Bob received Alice's driver's license number: ${decryptedFields.driversLicenseNumber}`
590
+ )
591
+ bobAcceptedAliceDL()
592
+ resolve()
593
+ }
444
594
  }
445
- }
446
- })
595
+ })().catch(e => console.log(e))
596
+ }
597
+ )
447
598
  })
448
599
 
449
600
  const bobReceivedGeneralMessage = new Promise<void>((resolve) => {
450
- bob.listenForGeneralMessages(async (senderPublicKey, payload) => {
451
- console.log('Bob received message from Alice:', Utils.toUTF8(payload))
452
- await bob.toPeer(Utils.toArray('Looking forward to carpooling!'), senderPublicKey)
453
- resolve()
601
+ bob.listenForGeneralMessages((senderPublicKey, payload) => {
602
+ (async () => {
603
+ console.log('Bob received message from Alice:', Utils.toUTF8(payload))
604
+ await bob.toPeer(
605
+ Utils.toArray('Looking forward to carpooling!'),
606
+ senderPublicKey
607
+ )
608
+ resolve()
609
+ })().catch(e => console.log(e))
454
610
  })
455
611
  })
456
612
 
@@ -462,7 +618,9 @@ describe('Peer class mutual authentication and certificate exchange', () => {
462
618
  })
463
619
 
464
620
  // Alice initiates the conversation
465
- await alice.toPeer(Utils.toArray('Please share your driver\'s license number for carpooling.'))
621
+ await alice.toPeer(
622
+ Utils.toArray("Please share your driver's license number for carpooling.")
623
+ )
466
624
  await aliceReceivedCertificates
467
625
  await bobReceivedCertificates
468
626
  await bobReceivedGeneralMessage
@@ -479,11 +637,16 @@ describe('Peer class mutual authentication and certificate exchange', () => {
479
637
  }, 20000)
480
638
 
481
639
  it('Peers accept partial certificates if at least one required field is present', async () => {
482
- const alicePubKey = (await walletA.getPublicKey({ identityKey: true })).publicKey
483
- const bobPubKey = (await walletB.getPublicKey({ identityKey: true })).publicKey
640
+ const alicePubKey = (await walletA.getPublicKey({ identityKey: true }))
641
+ .publicKey
642
+ const bobPubKey = (await walletB.getPublicKey({ identityKey: true }))
643
+ .publicKey
484
644
 
485
645
  // Alice's certificate contains 'name' and 'email'; Bob's contains only 'email'
486
- const aliceMasterCertificate = await createMasterCertificate(walletA, { name: 'Alice', email: 'alice@example.com' })
646
+ const aliceMasterCertificate = await createMasterCertificate(walletA, {
647
+ name: 'Alice',
648
+ email: 'alice@example.com'
649
+ })
487
650
  const aliceVerifiableCertificate = await createVerifiableCertificate(
488
651
  aliceMasterCertificate,
489
652
  walletA,
@@ -491,7 +654,9 @@ describe('Peer class mutual authentication and certificate exchange', () => {
491
654
  ['name', 'email']
492
655
  )
493
656
 
494
- const bobMasterCertificate = await createMasterCertificate(walletB, { email: 'bob@example.com' })
657
+ const bobMasterCertificate = await createMasterCertificate(walletB, {
658
+ email: 'bob@example.com'
659
+ })
495
660
  const bobVerifiableCertificate = await createVerifiableCertificate(
496
661
  bobMasterCertificate,
497
662
  walletB,
@@ -504,38 +669,55 @@ describe('Peer class mutual authentication and certificate exchange', () => {
504
669
  types: { [certificateType]: ['name', 'email'] }
505
670
  }
506
671
 
507
- const { aliceReceivedCertificates, bobReceivedCertificates } = setupPeers(true, true, {
508
- aliceCertsToRequest: partialCertificatesToRequest,
509
- bobCertsToRequest: partialCertificatesToRequest
510
- })
511
- mockGetVerifiableCertificates(aliceVerifiableCertificate, bobVerifiableCertificate, alicePubKey, bobPubKey)
672
+ const { aliceReceivedCertificates, bobReceivedCertificates } = setupPeers(
673
+ true,
674
+ true,
675
+ {
676
+ aliceCertsToRequest: partialCertificatesToRequest,
677
+ bobCertsToRequest: partialCertificatesToRequest
678
+ }
679
+ )
680
+ await mockGetVerifiableCertificates(
681
+ aliceVerifiableCertificate,
682
+ bobVerifiableCertificate,
683
+ alicePubKey,
684
+ bobPubKey
685
+ )
512
686
 
513
687
  const aliceAcceptedPartialCert = jest.fn()
514
688
  const bobAcceptedPartialCert = jest.fn()
515
689
 
516
690
  const waitForAlicePartialCert = new Promise<void>((resolve) => {
517
- alice.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
518
- for (const cert of certificates) {
519
- const decryptedFields = await cert.decryptFields(walletA)
520
- if (decryptedFields.email || decryptedFields.name) {
521
- console.log(`Alice received Bob's certificate with fields: ${Object.keys(decryptedFields).join(', ')}`)
522
- aliceAcceptedPartialCert()
523
- resolve()
691
+ alice.listenForCertificatesReceived((senderPublicKey, certificates) => {
692
+ (async () => {
693
+ for (const cert of certificates) {
694
+ const decryptedFields = await cert.decryptFields(walletA)
695
+ if (decryptedFields.email !== undefined || decryptedFields.name !== undefined) {
696
+ console.log(
697
+ `Alice received Bob's certificate with fields: ${Object.keys(decryptedFields).join(', ')}`
698
+ )
699
+ aliceAcceptedPartialCert()
700
+ resolve()
701
+ }
524
702
  }
525
- }
703
+ })().catch(e => console.log(e))
526
704
  })
527
705
  })
528
706
 
529
707
  const waitForBobPartialCert = new Promise<void>((resolve) => {
530
- bob.listenForCertificatesReceived(async (senderPublicKey, certificates) => {
531
- for (const cert of certificates) {
532
- const decryptedFields = await cert.decryptFields(walletB)
533
- if (decryptedFields.email || decryptedFields.name) {
534
- console.log(`Bob received Alice's certificate with fields: ${Object.keys(decryptedFields).join(', ')}`)
535
- bobAcceptedPartialCert()
536
- resolve()
708
+ bob.listenForCertificatesReceived((senderPublicKey, certificates) => {
709
+ (async () => {
710
+ for (const cert of certificates) {
711
+ const decryptedFields = await cert.decryptFields(walletB)
712
+ if (decryptedFields.email !== undefined || decryptedFields.name !== undefined) {
713
+ console.log(
714
+ `Bob received Alice's certificate with fields: ${Object.keys(decryptedFields).join(', ')}`
715
+ )
716
+ bobAcceptedPartialCert()
717
+ resolve()
718
+ }
537
719
  }
538
- }
720
+ })().catch(e => console.log(e))
539
721
  })
540
722
  })
541
723