@bsv/sdk 1.6.9 → 1.6.10

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 (647) hide show
  1. package/README.md +9 -4
  2. package/dist/cjs/package.json +4 -2
  3. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  4. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  5. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  6. package/docs/concepts/beef.md +84 -0
  7. package/docs/concepts/chain-tracking.md +122 -0
  8. package/docs/concepts/decentralized-identity.md +184 -0
  9. package/docs/concepts/fees.md +217 -0
  10. package/docs/concepts/identity-certificates.md +255 -0
  11. package/docs/concepts/index.md +62 -0
  12. package/docs/concepts/key-management.md +176 -0
  13. package/docs/concepts/script-templates.md +163 -0
  14. package/docs/concepts/sdk-philosophy.md +72 -0
  15. package/docs/concepts/signatures.md +179 -0
  16. package/docs/concepts/spv-verification.md +106 -0
  17. package/docs/concepts/transaction-encoding.md +148 -0
  18. package/docs/concepts/transaction-structure.md +63 -0
  19. package/docs/concepts/trust-model.md +123 -0
  20. package/docs/concepts/verification.md +219 -0
  21. package/docs/concepts/wallet-integration.md +95 -0
  22. package/docs/guides/direct-transaction-creation.md +137 -0
  23. package/docs/guides/http-client-configuration.md +414 -0
  24. package/docs/guides/index.md +30 -0
  25. package/docs/guides/transaction-signing-methods.md +268 -0
  26. package/docs/index.md +74 -0
  27. package/docs/reference/arc-config.md +698 -0
  28. package/docs/reference/brc-100.md +33 -0
  29. package/docs/reference/configuration.md +829 -0
  30. package/docs/reference/debugging.md +700 -0
  31. package/docs/reference/errors.md +547 -0
  32. package/docs/reference/index.md +98 -0
  33. package/docs/reference/network-config.md +914 -0
  34. package/docs/reference/op-codes.md +306 -0
  35. package/docs/reference/transaction-signatures.md +94 -0
  36. package/docs/requirements.txt +3 -0
  37. package/docs/tutorials/advanced-transaction.md +575 -0
  38. package/docs/tutorials/aes-encryption.md +947 -0
  39. package/docs/tutorials/authfetch-tutorial.md +957 -0
  40. package/docs/tutorials/ecdh-key-exchange.md +547 -0
  41. package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
  42. package/docs/tutorials/error-handling.md +1215 -0
  43. package/docs/tutorials/first-transaction-low-level.md +204 -0
  44. package/docs/tutorials/first-transaction.md +278 -0
  45. package/docs/tutorials/hashes-and-hmacs.md +814 -0
  46. package/docs/tutorials/identity-management.md +702 -0
  47. package/docs/tutorials/index.md +182 -0
  48. package/docs/tutorials/key-management.md +536 -0
  49. package/docs/tutorials/protowallet-development.md +716 -0
  50. package/docs/tutorials/script-construction.md +690 -0
  51. package/docs/tutorials/spv-merkle-proofs.md +682 -0
  52. package/docs/tutorials/testnet-transactions-low-level.md +352 -0
  53. package/docs/tutorials/transaction-broadcasting.md +535 -0
  54. package/docs/tutorials/transaction-types.md +419 -0
  55. package/docs/tutorials/type-42.md +582 -0
  56. package/docs/tutorials/uhrp-storage.md +579 -0
  57. package/package.json +4 -2
  58. package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
  59. package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
  60. package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
  61. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
  62. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
  63. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  64. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  65. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  66. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  67. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  68. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
  69. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  70. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  71. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  72. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  73. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  74. package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
  75. package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
  76. package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
  77. package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
  78. package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
  79. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
  80. package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
  81. package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
  82. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
  83. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
  84. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
  85. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  86. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
  87. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  88. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
  89. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
  90. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  91. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  92. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  93. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  94. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  95. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  96. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
  97. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
  98. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  99. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  100. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  101. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  102. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  103. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  104. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  105. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  106. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  107. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  108. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  109. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  110. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  111. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  112. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  113. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  114. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  115. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  116. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
  117. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  118. package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
  119. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
  120. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
  121. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  122. package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
  123. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
  124. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
  125. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
  126. package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
  127. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
  128. package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
  129. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
  130. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  131. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  132. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  133. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  134. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
  135. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  136. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
  137. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
  138. package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
  139. package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
  140. package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
  141. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
  142. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
  143. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  144. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
  145. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
  146. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
  147. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  148. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  149. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  150. package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
  151. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
  152. package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
  153. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
  154. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
  155. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
  156. package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
  157. package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
  158. package/dist/cjs/src/script/__tests/Script.test.js +0 -347
  159. package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
  160. package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
  161. package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
  162. package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
  163. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
  164. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
  165. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
  166. package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
  167. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
  168. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
  169. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
  170. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
  171. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  172. package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
  173. package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
  174. package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
  175. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
  176. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
  177. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
  178. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  179. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  180. package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
  181. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
  182. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
  183. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  184. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  185. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  186. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
  187. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  188. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  189. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  190. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
  191. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  192. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  193. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  194. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  195. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  196. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  197. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  198. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
  199. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  200. package/dist/cjs/src/wallet/WalletSigner.js +0 -260
  201. package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
  202. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  203. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  204. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
  205. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  206. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
  207. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  208. package/dist/cjs/src/wallet/createActionSdk.js +0 -230
  209. package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
  210. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  211. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  212. package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
  213. package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
  214. package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
  215. package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
  216. package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
  217. package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
  218. package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
  219. package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
  220. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
  221. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  222. package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
  223. package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
  224. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
  225. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  226. package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
  227. package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
  228. package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
  229. package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
  230. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
  231. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  232. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
  233. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  234. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
  235. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  236. package/dist/cjs/src/wallet/sdk/index.js +0 -31
  237. package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
  238. package/dist/cjs/src/wallet/sdk/types.js +0 -11
  239. package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
  240. package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
  241. package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
  242. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  243. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  244. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
  245. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  246. package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
  247. package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
  248. package/dist/cjs/src/wallet/validationHelpers.js +0 -601
  249. package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
  250. package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
  251. package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
  252. package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
  253. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
  254. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
  255. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  256. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  257. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  258. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  259. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  260. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
  261. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  262. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  263. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  264. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  265. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  266. package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
  267. package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
  268. package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
  269. package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
  270. package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
  271. package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
  272. package/dist/esm/src/compat/__tests/HD.test.js +0 -336
  273. package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
  274. package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
  275. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
  276. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
  277. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  278. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
  279. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  280. package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
  281. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
  282. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  283. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  284. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  285. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  286. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  287. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  288. package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
  289. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
  290. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  291. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  292. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  293. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  294. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  295. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  296. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  297. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  298. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  299. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  300. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  301. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  302. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  303. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  304. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  305. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  306. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  307. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  308. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
  309. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  310. package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
  311. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
  312. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
  313. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  314. package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
  315. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
  316. package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
  317. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
  318. package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
  319. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
  320. package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
  321. package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
  322. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  323. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  324. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  325. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  326. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
  327. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  328. package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
  329. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
  330. package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
  331. package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
  332. package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
  333. package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
  334. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
  335. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  336. package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
  337. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
  338. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
  339. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  340. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  341. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  342. package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
  343. package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
  344. package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
  345. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
  346. package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
  347. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
  348. package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
  349. package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
  350. package/dist/esm/src/script/__tests/Script.test.js +0 -347
  351. package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
  352. package/dist/esm/src/script/__tests/Spend.test.js +0 -282
  353. package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
  354. package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
  355. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
  356. package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
  357. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
  358. package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
  359. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
  360. package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
  361. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
  362. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
  363. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  364. package/dist/esm/src/totp/__tests/totp.test.js +0 -67
  365. package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
  366. package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
  367. package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
  368. package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
  369. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
  370. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  371. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  372. package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
  373. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
  374. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
  375. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  376. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  377. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  378. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
  379. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  380. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  381. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  382. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
  383. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  384. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  385. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  386. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  387. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  388. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  389. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  390. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
  391. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  392. package/dist/esm/src/wallet/WalletSigner.js +0 -263
  393. package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
  394. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  395. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  396. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
  397. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  398. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
  399. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  400. package/dist/esm/src/wallet/createActionSdk.js +0 -223
  401. package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
  402. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  403. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  404. package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
  405. package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
  406. package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
  407. package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
  408. package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
  409. package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
  410. package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
  411. package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
  412. package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
  413. package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  414. package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
  415. package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
  416. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
  417. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  418. package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
  419. package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
  420. package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
  421. package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
  422. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
  423. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  424. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
  425. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  426. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
  427. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  428. package/dist/esm/src/wallet/sdk/index.js +0 -15
  429. package/dist/esm/src/wallet/sdk/index.js.map +0 -1
  430. package/dist/esm/src/wallet/sdk/types.js +0 -8
  431. package/dist/esm/src/wallet/sdk/types.js.map +0 -1
  432. package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
  433. package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
  434. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  435. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  436. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
  437. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  438. package/dist/esm/src/wallet/utilityHelpers.js +0 -275
  439. package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
  440. package/dist/esm/src/wallet/validationHelpers.js +0 -566
  441. package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
  442. package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
  443. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
  444. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
  445. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
  446. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
  447. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
  448. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
  449. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
  450. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
  451. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
  452. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
  453. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
  454. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
  455. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
  456. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
  457. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
  458. package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
  459. package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
  460. package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
  461. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
  462. package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
  463. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
  464. package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
  465. package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
  466. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
  467. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
  468. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
  469. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
  470. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
  471. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
  472. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
  473. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
  474. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
  475. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
  476. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
  477. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
  478. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
  479. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
  480. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
  481. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
  482. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
  483. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
  484. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
  485. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
  486. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
  487. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
  488. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
  489. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
  490. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
  491. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
  492. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
  493. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
  494. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
  495. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
  496. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
  497. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
  498. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
  499. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
  500. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
  501. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
  502. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
  503. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
  504. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
  505. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
  506. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
  507. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
  508. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
  509. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
  510. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
  511. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
  512. package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
  513. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
  514. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
  515. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
  516. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
  517. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
  518. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
  519. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
  520. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
  521. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
  522. package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
  523. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
  524. package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
  525. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
  526. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
  527. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
  528. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
  529. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
  530. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
  531. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
  532. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
  533. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
  534. package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
  535. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
  536. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
  537. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
  538. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
  539. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
  540. package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
  541. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
  542. package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
  543. package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
  544. package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
  545. package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
  546. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
  547. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
  548. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
  549. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
  550. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
  551. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
  552. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
  553. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
  554. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
  555. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
  556. package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
  557. package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
  558. package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
  559. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
  560. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
  561. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
  562. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
  563. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
  564. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
  565. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
  566. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
  567. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
  568. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
  569. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
  570. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
  571. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
  572. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
  573. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
  574. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
  575. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
  576. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
  577. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
  578. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
  579. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
  580. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
  581. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
  582. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
  583. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
  584. package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
  585. package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
  586. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
  587. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
  588. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
  589. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
  590. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
  591. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
  592. package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
  593. package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
  594. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
  595. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
  596. package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
  597. package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
  598. package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
  599. package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
  600. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
  601. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
  602. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
  603. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
  604. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
  605. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
  606. package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
  607. package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
  608. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
  609. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
  610. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
  611. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
  612. package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
  613. package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
  614. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
  615. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
  616. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
  617. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
  618. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
  619. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
  620. package/dist/types/src/wallet/sdk/index.d.ts +0 -15
  621. package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
  622. package/dist/types/src/wallet/sdk/types.d.ts +0 -56
  623. package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
  624. package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
  625. package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
  626. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
  627. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
  628. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
  629. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
  630. package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
  631. package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
  632. package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
  633. package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
  634. package/docs/README.md +0 -21
  635. /package/docs/{auth.md → reference/auth.md} +0 -0
  636. /package/docs/{compat.md → reference/compat.md} +0 -0
  637. /package/docs/{identity.md → reference/identity.md} +0 -0
  638. /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
  639. /package/docs/{messages.md → reference/messages.md} +0 -0
  640. /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
  641. /package/docs/{primitives.md → reference/primitives.md} +0 -0
  642. /package/docs/{registry.md → reference/registry.md} +0 -0
  643. /package/docs/{script.md → reference/script.md} +0 -0
  644. /package/docs/{storage.md → reference/storage.md} +0 -0
  645. /package/docs/{totp.md → reference/totp.md} +0 -0
  646. /package/docs/{transaction.md → reference/transaction.md} +0 -0
  647. /package/docs/{wallet.md → reference/wallet.md} +0 -0
@@ -1,1962 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const CompletedProtoWallet_1 = require("../../../auth/certificates/__tests/CompletedProtoWallet");
7
- const index_1 = require("../../../primitives/index");
8
- const WalletWireTransceiver_1 = __importDefault(require("../../../wallet/substrates/WalletWireTransceiver"));
9
- const WalletWireProcessor_1 = __importDefault(require("../../../wallet/substrates/WalletWireProcessor"));
10
- const sampleData = [3, 1, 4, 1, 5, 9];
11
- describe('WalletWire Integration Tests', () => {
12
- /**
13
- * This is a copy of the test suite for CompletedProtoWallet, but instead of using a CompletedProtoWallet directly, we're using it over the WalletWire.
14
- * This serves as an imperfect but still useful way to ensure that the WalletWire doesn't contain serialization or deserialization issues.
15
- */
16
- describe('ProtoWallet Over Wallet Wire', () => {
17
- it('Throws when functions are not supported', async () => {
18
- const wallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet('anyone')));
19
- await expect(() => {
20
- return wallet.createAction();
21
- }).rejects.toThrow();
22
- await expect(() => {
23
- return wallet.abortAction();
24
- }).rejects.toThrow();
25
- await expect(() => {
26
- return wallet.signAction();
27
- }).rejects.toThrow();
28
- await expect(() => {
29
- return wallet.listOutputs();
30
- }).rejects.toThrow();
31
- await expect(() => {
32
- return wallet.relinquishOutput();
33
- }).rejects.toThrow();
34
- await expect(() => {
35
- return wallet.listActions();
36
- }).rejects.toThrow();
37
- await expect(() => {
38
- return wallet.internalizeAction();
39
- }).rejects.toThrow();
40
- await expect(() => {
41
- return wallet.acquireCertificate();
42
- }).rejects.toThrow();
43
- await expect(() => {
44
- return wallet.proveCertificate();
45
- }).rejects.toThrow();
46
- await expect(() => {
47
- return wallet.listCertificates();
48
- }).rejects.toThrow();
49
- await expect(() => {
50
- return wallet.relinquishCertificate();
51
- }).rejects.toThrow();
52
- await expect(() => {
53
- return wallet.getHeight();
54
- }).rejects.toThrow();
55
- await expect(() => {
56
- return wallet.getHeaderForHeight();
57
- }).rejects.toThrow();
58
- // TODO: Remove these two from the throw list once they are implemented.
59
- await expect(() => {
60
- return wallet.discoverByIdentityKey();
61
- }).rejects.toThrow();
62
- await expect(() => {
63
- return wallet.discoverByAttributes();
64
- }).rejects.toThrow();
65
- });
66
- it('Validates the BRC-3 compliance vector', async () => {
67
- const wallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet('anyone')));
68
- const { valid } = await wallet.verifySignature({
69
- data: index_1.Utils.toArray('BRC-3 Compliance Validated!', 'utf8'),
70
- signature: [
71
- 48, 68, 2, 32, 43, 34, 58, 156, 219, 32, 50, 70, 29, 240, 155, 137,
72
- 88, 60, 200, 95, 243, 198, 201, 21, 56, 82, 141, 112, 69, 196, 170,
73
- 73, 156, 6, 44, 48, 2, 32, 118, 125, 254, 201, 44, 87, 177, 170, 93,
74
- 11, 193, 134, 18, 70, 9, 31, 234, 27, 170, 177, 54, 96, 181, 140, 166,
75
- 196, 144, 14, 230, 118, 106, 105
76
- ],
77
- protocolID: [2, 'BRC3 Test'],
78
- keyID: '42',
79
- counterparty: '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
80
- });
81
- expect(valid).toBe(true);
82
- });
83
- it('Validates the BRC-2 HMAC compliance vector', async () => {
84
- const wallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(new index_1.PrivateKey('6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8', 'hex'))));
85
- const { valid } = await wallet.verifyHmac({
86
- data: index_1.Utils.toArray('BRC-2 HMAC Compliance Validated!', 'utf8'),
87
- hmac: [
88
- 81, 240, 18, 153, 163, 45, 174, 85, 9, 246, 142, 125, 209, 133, 82,
89
- 76, 254, 103, 46, 182, 86, 59, 219, 61, 126, 30, 176, 232, 233, 100,
90
- 234, 14
91
- ],
92
- protocolID: [2, 'BRC2 Test'],
93
- keyID: '42',
94
- counterparty: '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
95
- });
96
- expect(valid).toBe(true);
97
- });
98
- it('Validates the BRC-2 Encryption compliance vector', async () => {
99
- const wallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(new index_1.PrivateKey('6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8', 'hex'))));
100
- const { plaintext } = await wallet.decrypt({
101
- ciphertext: [
102
- 252, 203, 216, 184, 29, 161, 223, 212, 16, 193, 94, 99, 31, 140, 99,
103
- 43, 61, 236, 184, 67, 54, 105, 199, 47, 11, 19, 184, 127, 2, 165, 125,
104
- 9, 188, 195, 196, 39, 120, 130, 213, 95, 186, 89, 64, 28, 1, 80, 20,
105
- 213, 159, 133, 98, 253, 128, 105, 113, 247, 197, 152, 236, 64, 166,
106
- 207, 113, 134, 65, 38, 58, 24, 127, 145, 140, 206, 47, 70, 146, 84,
107
- 186, 72, 95, 35, 154, 112, 178, 55, 72, 124
108
- ],
109
- protocolID: [2, 'BRC2 Test'],
110
- keyID: '42',
111
- counterparty: '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
112
- });
113
- expect(index_1.Utils.toUTF8(plaintext)).toEqual('BRC-2 Encryption Compliance Validated!');
114
- });
115
- it('Encrypts messages decryptable by the counterparty', async () => {
116
- const userKey = index_1.PrivateKey.fromRandom();
117
- const counterpartyKey = index_1.PrivateKey.fromRandom();
118
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
119
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
120
- const { ciphertext } = await user.encrypt({
121
- plaintext: sampleData,
122
- protocolID: [2, 'tests'],
123
- keyID: '4',
124
- counterparty: counterpartyKey.toPublicKey().toString()
125
- });
126
- const { plaintext } = await counterparty.decrypt({
127
- ciphertext,
128
- protocolID: [2, 'tests'],
129
- keyID: '4',
130
- counterparty: userKey.toPublicKey().toString()
131
- });
132
- expect(plaintext).toEqual(sampleData);
133
- expect(ciphertext).not.toEqual(plaintext);
134
- });
135
- it('Fails to decryupt messages for the wrong protocol, key, and counterparty', async () => {
136
- const userKey = index_1.PrivateKey.fromRandom();
137
- const counterpartyKey = index_1.PrivateKey.fromRandom();
138
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
139
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
140
- const { ciphertext } = await user.encrypt({
141
- plaintext: sampleData,
142
- protocolID: [2, 'tests'],
143
- keyID: '4',
144
- counterparty: counterpartyKey.toPublicKey().toString()
145
- });
146
- await expect(async () => await counterparty.decrypt({
147
- ciphertext,
148
- protocolID: [1, 'tests'],
149
- keyID: '4',
150
- counterparty: userKey.toPublicKey().toString()
151
- })).rejects.toThrow();
152
- await expect(async () => await counterparty.decrypt({
153
- ciphertext,
154
- protocolID: [2, 'tests'],
155
- keyID: '5',
156
- counterparty: userKey.toPublicKey().toString()
157
- })).rejects.toThrow();
158
- await expect(async () => await counterparty.decrypt({
159
- ciphertext,
160
- protocolID: [2, 'tests'],
161
- keyID: '4',
162
- counterparty: counterpartyKey.toPublicKey().toString()
163
- })).rejects.toThrow();
164
- });
165
- it('Correctly derives keys for a counterparty', async () => {
166
- const userKey = index_1.PrivateKey.fromRandom();
167
- const counterpartyKey = index_1.PrivateKey.fromRandom();
168
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
169
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
170
- const { publicKey: identityKey } = await user.getPublicKey({
171
- identityKey: true
172
- });
173
- expect(identityKey).toEqual(userKey.toPublicKey().toString());
174
- const { publicKey: derivedForCounterparty } = await user.getPublicKey({
175
- protocolID: [2, 'tests'],
176
- keyID: '4',
177
- counterparty: counterpartyKey.toPublicKey().toString()
178
- });
179
- const { publicKey: derivedByCounterparty } = await counterparty.getPublicKey({
180
- protocolID: [2, 'tests'],
181
- keyID: '4',
182
- counterparty: userKey.toPublicKey().toString(),
183
- forSelf: true
184
- });
185
- expect(derivedForCounterparty).toEqual(derivedByCounterparty);
186
- });
187
- it('Signs messages verifiable by the counterparty', async () => {
188
- const userKey = index_1.PrivateKey.fromRandom();
189
- const counterpartyKey = index_1.PrivateKey.fromRandom();
190
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
191
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
192
- const { signature } = await user.createSignature({
193
- data: sampleData,
194
- protocolID: [2, 'tests'],
195
- keyID: '4',
196
- counterparty: counterpartyKey.toPublicKey().toString()
197
- });
198
- const { valid } = await counterparty.verifySignature({
199
- signature,
200
- data: sampleData,
201
- protocolID: [2, 'tests'],
202
- keyID: '4',
203
- counterparty: userKey.toPublicKey().toString()
204
- });
205
- expect(valid).toEqual(true);
206
- expect(signature.length).not.toEqual(0);
207
- });
208
- it('Directly signs hash of message verifiable by the counterparty', async () => {
209
- const userKey = index_1.PrivateKey.fromRandom();
210
- const counterpartyKey = index_1.PrivateKey.fromRandom();
211
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
212
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
213
- const { signature } = await user.createSignature({
214
- hashToDirectlySign: index_1.Hash.sha256(sampleData),
215
- protocolID: [2, 'tests'],
216
- keyID: '4',
217
- counterparty: counterpartyKey.toPublicKey().toString()
218
- });
219
- const { valid } = await counterparty.verifySignature({
220
- signature,
221
- data: sampleData,
222
- protocolID: [2, 'tests'],
223
- keyID: '4',
224
- counterparty: userKey.toPublicKey().toString()
225
- });
226
- expect(valid).toEqual(true);
227
- const { valid: hashValid } = await counterparty.verifySignature({
228
- signature,
229
- hashToDirectlyVerify: index_1.Hash.sha256(sampleData),
230
- protocolID: [2, 'tests'],
231
- keyID: '4',
232
- counterparty: userKey.toPublicKey().toString()
233
- });
234
- expect(hashValid).toEqual(true);
235
- expect(signature.length).not.toEqual(0);
236
- });
237
- it('Fails to verify signature for the wrong data, protocol, key, and counterparty', async () => {
238
- const userKey = index_1.PrivateKey.fromRandom();
239
- const counterpartyKey = index_1.PrivateKey.fromRandom();
240
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
241
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
242
- const { signature } = await user.createSignature({
243
- data: sampleData,
244
- protocolID: [2, 'tests'],
245
- keyID: '4',
246
- counterparty: counterpartyKey.toPublicKey().toString()
247
- });
248
- await expect(async () => await counterparty.verifySignature({
249
- signature,
250
- data: [0, ...sampleData],
251
- protocolID: [2, 'tests'],
252
- keyID: '4',
253
- counterparty: userKey.toPublicKey().toString()
254
- })).rejects.toThrow();
255
- await expect(async () => await counterparty.verifySignature({
256
- signature,
257
- data: sampleData,
258
- protocolID: [2, 'wrong'],
259
- keyID: '4',
260
- counterparty: userKey.toPublicKey().toString()
261
- })).rejects.toThrow();
262
- await expect(async () => await counterparty.verifySignature({
263
- signature,
264
- data: sampleData,
265
- protocolID: [2, 'tests'],
266
- keyID: '2',
267
- counterparty: userKey.toPublicKey().toString()
268
- })).rejects.toThrow();
269
- await expect(async () => await counterparty.verifySignature({
270
- signature,
271
- data: sampleData,
272
- protocolID: [2, 'tests'],
273
- keyID: '4',
274
- counterparty: counterpartyKey.toPublicKey().toString()
275
- })).rejects.toThrow();
276
- });
277
- it('Computes HMAC over messages verifiable by the counterparty', async () => {
278
- const userKey = index_1.PrivateKey.fromRandom();
279
- const counterpartyKey = index_1.PrivateKey.fromRandom();
280
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
281
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
282
- const { hmac } = await user.createHmac({
283
- data: sampleData,
284
- protocolID: [2, 'tests'],
285
- keyID: '4',
286
- counterparty: counterpartyKey.toPublicKey().toString()
287
- });
288
- const { valid } = await counterparty.verifyHmac({
289
- hmac,
290
- data: sampleData,
291
- protocolID: [2, 'tests'],
292
- keyID: '4',
293
- counterparty: userKey.toPublicKey().toString()
294
- });
295
- expect(valid).toEqual(true);
296
- expect(hmac.length).toEqual(32);
297
- });
298
- it('Fails to verify HMAC for the wrong data, protocol, key, and counterparty', async () => {
299
- const userKey = index_1.PrivateKey.fromRandom();
300
- const counterpartyKey = index_1.PrivateKey.fromRandom();
301
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
302
- const counterparty = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey)));
303
- const { hmac } = await user.createHmac({
304
- data: sampleData,
305
- protocolID: [2, 'tests'],
306
- keyID: '4',
307
- counterparty: counterpartyKey.toPublicKey().toString()
308
- });
309
- await expect(async () => await counterparty.verifyHmac({
310
- hmac,
311
- data: [0, ...sampleData],
312
- protocolID: [2, 'tests'],
313
- keyID: '4',
314
- counterparty: userKey.toPublicKey().toString()
315
- })).rejects.toThrow();
316
- await expect(async () => await counterparty.verifyHmac({
317
- hmac,
318
- data: sampleData,
319
- protocolID: [2, 'wrong'],
320
- keyID: '4',
321
- counterparty: userKey.toPublicKey().toString()
322
- })).rejects.toThrow();
323
- await expect(async () => await counterparty.verifyHmac({
324
- hmac,
325
- data: sampleData,
326
- protocolID: [2, 'tests'],
327
- keyID: '2',
328
- counterparty: userKey.toPublicKey().toString()
329
- })).rejects.toThrow();
330
- await expect(async () => await counterparty.verifyHmac({
331
- hmac,
332
- data: sampleData,
333
- protocolID: [2, 'tests'],
334
- keyID: '4',
335
- counterparty: counterpartyKey.toPublicKey().toString()
336
- })).rejects.toThrow();
337
- });
338
- it('Uses anyone for creating signatures and self for other operations if no counterparty is provided', async () => {
339
- const userKey = index_1.PrivateKey.fromRandom();
340
- const user = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(userKey)));
341
- const { hmac } = await user.createHmac({
342
- data: sampleData,
343
- protocolID: [2, 'tests'],
344
- keyID: '4'
345
- });
346
- const { valid: hmacValid } = await user.verifyHmac({
347
- hmac,
348
- data: sampleData,
349
- protocolID: [2, 'tests'],
350
- keyID: '4'
351
- });
352
- expect(hmacValid).toEqual(true);
353
- const { valid: explicitSelfHmacValid } = await user.verifyHmac({
354
- hmac,
355
- data: sampleData,
356
- protocolID: [2, 'tests'],
357
- keyID: '4',
358
- counterparty: 'self'
359
- });
360
- expect(explicitSelfHmacValid).toEqual(true);
361
- expect(hmac.length).toEqual(32);
362
- const { signature: anyoneSig } = await user.createSignature({
363
- data: sampleData,
364
- protocolID: [2, 'tests'],
365
- keyID: '4'
366
- // counterparty=anyone is implicit for creating signatures
367
- });
368
- const anyone = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet('anyone')));
369
- const { valid: anyoneSigValid } = await anyone.verifySignature({
370
- signature: anyoneSig,
371
- data: sampleData,
372
- protocolID: [2, 'tests'],
373
- keyID: '4',
374
- counterparty: userKey.toPublicKey().toString()
375
- });
376
- expect(anyoneSigValid).toEqual(true);
377
- const { signature: selfSig } = await user.createSignature({
378
- data: sampleData,
379
- protocolID: [2, 'tests'],
380
- keyID: '4',
381
- counterparty: 'self'
382
- });
383
- const { valid: selfSigValid } = await user.verifySignature({
384
- signature: selfSig,
385
- data: sampleData,
386
- protocolID: [2, 'tests'],
387
- keyID: '4'
388
- // Self is implicit when verifying signatures
389
- });
390
- expect(selfSigValid).toEqual(true);
391
- const { valid: explicitSelfSigValid } = await user.verifySignature({
392
- signature: selfSig,
393
- data: sampleData,
394
- protocolID: [2, 'tests'],
395
- keyID: '4',
396
- counterparty: 'self'
397
- });
398
- expect(explicitSelfSigValid).toEqual(true);
399
- const { publicKey } = await user.getPublicKey({
400
- protocolID: [2, 'tests'],
401
- keyID: '4'
402
- });
403
- const { publicKey: explicitSelfPublicKey } = await user.getPublicKey({
404
- protocolID: [2, 'tests'],
405
- keyID: '4',
406
- counterparty: 'self'
407
- });
408
- expect(publicKey).toEqual(explicitSelfPublicKey);
409
- const { ciphertext } = await user.encrypt({
410
- plaintext: sampleData,
411
- protocolID: [2, 'tests'],
412
- keyID: '4'
413
- });
414
- const { plaintext } = await user.decrypt({
415
- ciphertext,
416
- protocolID: [2, 'tests'],
417
- keyID: '4'
418
- });
419
- const { plaintext: explicitSelfPlaintext } = await user.decrypt({
420
- ciphertext,
421
- protocolID: [2, 'tests'],
422
- keyID: '4',
423
- counterparty: 'self'
424
- });
425
- expect(plaintext).toEqual(explicitSelfPlaintext);
426
- expect(plaintext).toEqual(sampleData);
427
- });
428
- it('Validates the revealCounterpartyKeyLinkage function', async () => {
429
- // Initialize keys
430
- const proverKey = index_1.PrivateKey.fromRandom();
431
- const counterpartyKey = index_1.PrivateKey.fromRandom();
432
- const verifierKey = index_1.PrivateKey.fromRandom();
433
- // Initialize wallets
434
- const proverWallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(proverKey)));
435
- const verifierWallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(verifierKey)));
436
- // Prover reveals counterparty key linkage
437
- const revelation = await proverWallet.revealCounterpartyKeyLinkage({
438
- counterparty: counterpartyKey.toPublicKey().toString(),
439
- verifier: verifierKey.toPublicKey().toString()
440
- });
441
- // Verifier decrypts the encrypted linkage
442
- const { plaintext: linkage } = await verifierWallet.decrypt({
443
- ciphertext: revelation.encryptedLinkage,
444
- protocolID: [2, 'counterparty linkage revelation'],
445
- keyID: revelation.revelationTime,
446
- counterparty: proverKey.toPublicKey().toString()
447
- });
448
- // Compute expected linkage
449
- const expectedLinkage = proverKey
450
- .deriveSharedSecret(counterpartyKey.toPublicKey())
451
- .encode(true);
452
- // Compare linkage and expectedLinkage
453
- expect(linkage).toEqual(expectedLinkage);
454
- });
455
- it('Validates the revealSpecificKeyLinkage function', async () => {
456
- // Initialize keys
457
- const proverKey = index_1.PrivateKey.fromRandom();
458
- const counterpartyKey = index_1.PrivateKey.fromRandom();
459
- const verifierKey = index_1.PrivateKey.fromRandom();
460
- // Initialize wallets
461
- const proverWallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(proverKey)));
462
- const verifierWallet = new WalletWireTransceiver_1.default(new WalletWireProcessor_1.default(new CompletedProtoWallet_1.CompletedProtoWallet(verifierKey)));
463
- const protocolID = [0, 'tests'];
464
- const keyID = 'test key id';
465
- // Prover reveals specific key linkage
466
- const revelation = await proverWallet.revealSpecificKeyLinkage({
467
- counterparty: counterpartyKey.toPublicKey().toString(),
468
- verifier: verifierKey.toPublicKey().toString(),
469
- protocolID,
470
- keyID
471
- });
472
- expect(revelation.encryptedLinkageProof).toBeDefined();
473
- expect(revelation.proofType).toBeDefined();
474
- // Verifier decrypts the encrypted linkage
475
- const { plaintext: linkage } = await verifierWallet.decrypt({
476
- ciphertext: revelation.encryptedLinkage,
477
- protocolID: [
478
- 2,
479
- `specific linkage revelation ${protocolID[0]} ${protocolID[1]}`
480
- ],
481
- keyID,
482
- counterparty: proverKey.toPublicKey().toString()
483
- });
484
- // Compute expected linkage
485
- const sharedSecret = proverKey
486
- .deriveSharedSecret(counterpartyKey.toPublicKey())
487
- .encode(true);
488
- // Function to compute the invoice number
489
- const computeInvoiceNumber = function (protocolID, keyID) {
490
- const securityLevel = protocolID[0];
491
- if (!Number.isInteger(securityLevel) ||
492
- securityLevel < 0 ||
493
- securityLevel > 2) {
494
- throw new Error('Protocol security level must be 0, 1, or 2');
495
- }
496
- const protocolName = protocolID[1].toLowerCase().trim();
497
- if (keyID.length > 800) {
498
- throw new Error('Key IDs must be 800 characters or less');
499
- }
500
- if (keyID.length < 1) {
501
- throw new Error('Key IDs must be 1 character or more');
502
- }
503
- if (protocolName.length > 400) {
504
- throw new Error('Protocol names must be 400 characters or less');
505
- }
506
- if (protocolName.length < 5) {
507
- throw new Error('Protocol names must be 5 characters or more');
508
- }
509
- if (protocolName.includes(' ')) {
510
- throw new Error('Protocol names cannot contain multiple consecutive spaces (" ")');
511
- }
512
- if (!/^[a-z0-9 ]+$/g.test(protocolName)) {
513
- throw new Error('Protocol names can only contain letters, numbers and spaces');
514
- }
515
- if (protocolName.endsWith(' protocol')) {
516
- throw new Error('No need to end your protocol name with " protocol"');
517
- }
518
- return `${securityLevel}-${protocolName}-${keyID}`;
519
- };
520
- const invoiceNumber = computeInvoiceNumber(protocolID, keyID);
521
- const invoiceNumberBin = index_1.Utils.toArray(invoiceNumber, 'utf8');
522
- // Compute expected linkage
523
- const expectedLinkage = index_1.Hash.sha256hmac(sharedSecret, invoiceNumberBin);
524
- // Compare linkage and expectedLinkage
525
- expect(linkage).toEqual(expectedLinkage);
526
- });
527
- });
528
- // Helper function to create a test wallet wire setup
529
- const createTestWalletWire = (wallet) => {
530
- const processor = new WalletWireProcessor_1.default(wallet);
531
- const transceiver = new WalletWireTransceiver_1.default(processor);
532
- return transceiver;
533
- };
534
- // Mock implementation for methods not supported by CompletedProtoWallet
535
- const mockUnsupportedMethods = (methods) => {
536
- return {
537
- ...methods
538
- };
539
- };
540
- describe('createAction', () => {
541
- it('should create an action with valid inputs', async () => {
542
- // Mock the createAction method
543
- const createActionMock = jest.fn().mockResolvedValue({
544
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
545
- tx: [1, 2, 3, 4]
546
- });
547
- const wallet = createTestWalletWire(mockUnsupportedMethods({
548
- createAction: createActionMock
549
- }));
550
- const args = {
551
- description: 'Test action description',
552
- outputs: [
553
- {
554
- lockingScript: '00', // Sample locking script
555
- satoshis: 1000,
556
- outputDescription: 'Test output',
557
- basket: 'test-basket',
558
- customInstructions: 'Test instructions',
559
- tags: ['test-tag']
560
- }
561
- ],
562
- labels: ['test-label']
563
- };
564
- const result = await wallet.createAction(args);
565
- expect(result).toHaveProperty('txid');
566
- expect(result).toHaveProperty('tx');
567
- expect(result.tx).toBeInstanceOf(Array);
568
- expect(createActionMock).toHaveBeenCalledWith(args, '');
569
- });
570
- it('should create an action with minimal inputs (only description)', async () => {
571
- // Mock the createAction method
572
- const createActionMock = jest.fn().mockResolvedValue({
573
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
574
- });
575
- const wallet = createTestWalletWire(mockUnsupportedMethods({
576
- createAction: createActionMock
577
- }));
578
- const args = {
579
- description: 'Minimal action description'
580
- };
581
- const result = await wallet.createAction(args);
582
- expect(result).toHaveProperty('txid');
583
- expect(result).not.toHaveProperty('tx');
584
- expect(result).not.toHaveProperty('noSendChange');
585
- expect(result).not.toHaveProperty('sendWithResults');
586
- expect(result).not.toHaveProperty('signableTransaction');
587
- expect(createActionMock).toHaveBeenCalledWith(args, '');
588
- });
589
- it('should create an action and return only txid when returnTXIDOnly is true', async () => {
590
- // Mock the createAction method
591
- const createActionMock = jest.fn().mockResolvedValue({
592
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
593
- });
594
- const wallet = createTestWalletWire(mockUnsupportedMethods({
595
- createAction: createActionMock
596
- }));
597
- const args = {
598
- description: 'Test action with returnTXIDOnly',
599
- options: {
600
- returnTXIDOnly: true
601
- }
602
- };
603
- const result = await wallet.createAction(args);
604
- expect(result).toHaveProperty('txid');
605
- expect(result).not.toHaveProperty('tx');
606
- expect(result).not.toHaveProperty('noSendChange');
607
- expect(result).not.toHaveProperty('sendWithResults');
608
- expect(result).not.toHaveProperty('signableTransaction');
609
- expect(createActionMock).toHaveBeenCalledWith(args, '');
610
- });
611
- it('should create an action and return a signableTransaction when noSend is true', async () => {
612
- // Mock the createAction method
613
- const createActionMock = jest.fn().mockResolvedValue({
614
- signableTransaction: {
615
- tx: [0x01],
616
- reference: index_1.Utils.toBase64([0x01])
617
- }
618
- });
619
- const wallet = createTestWalletWire(mockUnsupportedMethods({
620
- createAction: createActionMock
621
- }));
622
- const args = {
623
- description: 'Test action with noSend',
624
- options: {
625
- noSend: true
626
- }
627
- };
628
- const result = await wallet.createAction(args);
629
- expect(result).toHaveProperty('signableTransaction');
630
- expect(result.signableTransaction).toHaveProperty('tx');
631
- expect(result.signableTransaction).toHaveProperty('reference');
632
- expect(result).not.toHaveProperty('txid');
633
- expect(result).not.toHaveProperty('tx');
634
- expect(createActionMock).toHaveBeenCalledWith(args, '');
635
- });
636
- it('should create an action with all options set and handle all return values', async () => {
637
- // Mock the createAction method
638
- const createActionMock = jest.fn().mockResolvedValue({
639
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
640
- tx: [1, 2, 3, 4],
641
- noSendChange: [
642
- 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0'
643
- ],
644
- sendWithResults: [
645
- {
646
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
647
- status: 'sending'
648
- }
649
- ],
650
- signableTransaction: {
651
- tx: [0x01],
652
- reference: index_1.Utils.toBase64([0x01])
653
- }
654
- });
655
- const wallet = createTestWalletWire(mockUnsupportedMethods({
656
- createAction: createActionMock
657
- }));
658
- const args = {
659
- description: 'Test action with all options',
660
- inputs: [],
661
- inputBEEF: [1, 2, 3, 4],
662
- outputs: [
663
- {
664
- lockingScript: '016a',
665
- satoshis: 1,
666
- outputDescription: 'This is a test.'
667
- }
668
- ],
669
- lockTime: 0,
670
- version: 1,
671
- labels: ['label1', 'label2'],
672
- options: {
673
- signAndProcess: false,
674
- acceptDelayedBroadcast: false,
675
- trustSelf: 'known',
676
- knownTxids: [
677
- 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
678
- ],
679
- returnTXIDOnly: false,
680
- noSend: true,
681
- noSendChange: [
682
- 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0'
683
- ],
684
- sendWith: [
685
- 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
686
- ],
687
- randomizeOutputs: false
688
- }
689
- };
690
- const result = await wallet.createAction(args);
691
- expect(result).toHaveProperty('txid');
692
- expect(result).toHaveProperty('tx');
693
- expect(result).toHaveProperty('noSendChange');
694
- expect(result).toHaveProperty('sendWithResults');
695
- expect(result).toHaveProperty('signableTransaction');
696
- expect(createActionMock).toHaveBeenCalledWith(args, '');
697
- });
698
- it('should throw an error with invalid inputs', async () => {
699
- // Mock the createAction method to throw an error
700
- const createActionMock = jest
701
- .fn()
702
- .mockRejectedValue(new Error('Invalid inputs'));
703
- const wallet = createTestWalletWire(mockUnsupportedMethods({
704
- createAction: createActionMock
705
- }));
706
- const args = {
707
- description: '' // Invalid description (too short)
708
- };
709
- await expect(wallet.createAction(args)).rejects.toThrow('Invalid inputs');
710
- expect(createActionMock).toHaveBeenCalledWith(args, '');
711
- });
712
- });
713
- describe('signAction', () => {
714
- it('should sign an action with valid inputs', async () => {
715
- // Mock the signAction method
716
- const signActionMock = jest.fn().mockResolvedValue({
717
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
718
- tx: [1, 2, 3, 4]
719
- });
720
- const wallet = createTestWalletWire(mockUnsupportedMethods({
721
- signAction: signActionMock
722
- }));
723
- const spends = {
724
- 0: {
725
- unlockingScript: '00' // Sample unlocking script
726
- }
727
- };
728
- const reference = index_1.Utils.toBase64([1, 2, 3]);
729
- const args = { spends, reference };
730
- const result = await wallet.signAction(args);
731
- expect(result).toHaveProperty('txid');
732
- expect(result).toHaveProperty('tx');
733
- expect(result.tx).toBeInstanceOf(Array);
734
- expect(signActionMock).toHaveBeenCalledWith(args, '');
735
- });
736
- it('should throw an error with invalid inputs', async () => {
737
- // Mock the signAction method to throw an error
738
- const signActionMock = jest
739
- .fn()
740
- .mockRejectedValue(new Error('Invalid inputs'));
741
- const wallet = createTestWalletWire(mockUnsupportedMethods({
742
- signAction: signActionMock
743
- }));
744
- const spends = {};
745
- const reference = '';
746
- const args = { spends, reference };
747
- await expect(wallet.signAction(args)).rejects.toThrow('Invalid inputs');
748
- expect(signActionMock).toHaveBeenCalledWith(args, '');
749
- });
750
- });
751
- describe('abortAction', () => {
752
- it('should abort an action with valid reference', async () => {
753
- // Mock the abortAction method
754
- const abortActionMock = jest.fn().mockResolvedValue({ aborted: true });
755
- const wallet = createTestWalletWire(mockUnsupportedMethods({
756
- abortAction: abortActionMock
757
- }));
758
- const reference = index_1.Utils.toBase64([1, 2, 3]);
759
- const args = { reference };
760
- const result = await wallet.abortAction(args);
761
- expect(result).toEqual({ aborted: true });
762
- expect(abortActionMock).toHaveBeenCalledWith(args, '');
763
- });
764
- it('should throw an error with invalid reference', async () => {
765
- // Mock the abortAction method to throw an error
766
- const abortActionMock = jest
767
- .fn()
768
- .mockRejectedValue(new Error('Invalid reference'));
769
- const wallet = createTestWalletWire(mockUnsupportedMethods({
770
- abortAction: abortActionMock
771
- }));
772
- const reference = '';
773
- const args = { reference };
774
- await expect(wallet.abortAction(args)).rejects.toThrow('Invalid reference');
775
- expect(abortActionMock).toHaveBeenCalledWith(args, '');
776
- });
777
- });
778
- describe('listActions', () => {
779
- it('should list actions with valid inputs', async () => {
780
- // Mock the listActions method
781
- const listActionsMock = jest.fn().mockResolvedValue({
782
- totalActions: 1,
783
- actions: [
784
- {
785
- txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
786
- satoshis: 1000,
787
- status: 'completed',
788
- isOutgoing: true,
789
- description: 'Test action',
790
- labels: ['test-label'],
791
- version: 1,
792
- lockTime: 0
793
- }
794
- ]
795
- });
796
- const wallet = createTestWalletWire(mockUnsupportedMethods({
797
- listActions: listActionsMock
798
- }));
799
- const args = {
800
- labels: ['test-label'],
801
- includeLabels: true,
802
- limit: 10,
803
- offset: 0
804
- };
805
- const result = await wallet.listActions(args);
806
- expect(result).toHaveProperty('totalActions');
807
- expect(result).toHaveProperty('actions');
808
- expect(Array.isArray(result.actions)).toBe(true);
809
- expect(listActionsMock).toHaveBeenCalledWith(args, '');
810
- });
811
- it('should list actions with empty labels array', async () => {
812
- // Mock the listActions method
813
- const listActionsMock = jest.fn().mockResolvedValue({
814
- totalActions: 0,
815
- actions: []
816
- });
817
- const wallet = createTestWalletWire(mockUnsupportedMethods({
818
- listActions: listActionsMock
819
- }));
820
- const args = {
821
- labels: [],
822
- includeLabels: true,
823
- limit: 10,
824
- offset: 0
825
- };
826
- const result = await wallet.listActions(args);
827
- expect(result).toHaveProperty('totalActions');
828
- expect(result.totalActions).toBe(0);
829
- expect(result.actions).toEqual([]);
830
- expect(listActionsMock).toHaveBeenCalledWith(args, '');
831
- });
832
- it('should throw an error with invalid inputs', async () => {
833
- // Mock the listActions method to throw an error
834
- const listActionsMock = jest
835
- .fn()
836
- .mockRejectedValue(new Error('Invalid inputs'));
837
- const wallet = createTestWalletWire(mockUnsupportedMethods({
838
- listActions: listActionsMock
839
- }));
840
- const args = {
841
- labels: []
842
- };
843
- await expect(wallet.listActions(args)).rejects.toThrow('Invalid inputs');
844
- expect(listActionsMock).toHaveBeenCalledWith(args, '');
845
- });
846
- });
847
- describe('internalizeAction', () => {
848
- it('should internalize an action with valid inputs', async () => {
849
- // Mock the internalizeAction method
850
- const internalizeActionMock = jest
851
- .fn()
852
- .mockResolvedValue({ accepted: true });
853
- const wallet = createTestWalletWire(mockUnsupportedMethods({
854
- internalizeAction: internalizeActionMock
855
- }));
856
- const args = {
857
- tx: [0x00], // Sample transaction byte array
858
- outputs: [
859
- {
860
- outputIndex: 0,
861
- protocol: 'wallet payment',
862
- paymentRemittance: {
863
- derivationPrefix: index_1.Utils.toBase64([1, 2, 3]),
864
- derivationSuffix: index_1.Utils.toBase64([4, 5, 6]),
865
- senderIdentityKey: '02' + '1'.repeat(64)
866
- }
867
- }
868
- ],
869
- description: 'Test internalize action',
870
- labels: ['test-label']
871
- };
872
- const result = await wallet.internalizeAction(args);
873
- expect(result).toEqual({ accepted: true });
874
- expect(internalizeActionMock).toHaveBeenCalledWith(args, '');
875
- });
876
- it('should throw an error with invalid inputs', async () => {
877
- // Mock the internalizeAction method to throw an error
878
- const internalizeActionMock = jest
879
- .fn()
880
- .mockRejectedValue(new Error('Invalid inputs'));
881
- const wallet = createTestWalletWire(mockUnsupportedMethods({
882
- internalizeAction: internalizeActionMock
883
- }));
884
- const args = {
885
- tx: [], // Empty transaction array
886
- outputs: [],
887
- description: 'Test internalize action'
888
- };
889
- await expect(wallet.internalizeAction(args)).rejects.toThrow('Invalid inputs');
890
- expect(internalizeActionMock).toHaveBeenCalledWith(args, '');
891
- });
892
- it('should internalize an action with "basket insertion" protocol', async () => {
893
- // Mock the internalizeAction method
894
- const internalizeActionMock = jest
895
- .fn()
896
- .mockResolvedValue({ accepted: true });
897
- const wallet = createTestWalletWire(mockUnsupportedMethods({
898
- internalizeAction: internalizeActionMock
899
- }));
900
- const args = {
901
- tx: [0x00], // Sample transaction byte array
902
- outputs: [
903
- {
904
- outputIndex: 0,
905
- protocol: 'basket insertion',
906
- insertionRemittance: {
907
- basket: 'test-basket',
908
- customInstructions: 'Test instructions',
909
- tags: ['test-tag1', 'test-tag2']
910
- }
911
- }
912
- ],
913
- description: 'Test internalize action with basket insertion',
914
- labels: ['test-label']
915
- };
916
- const result = await wallet.internalizeAction(args);
917
- expect(result).toEqual({ accepted: true });
918
- expect(internalizeActionMock).toHaveBeenCalledWith(args, '');
919
- });
920
- });
921
- describe('listOutputs', () => {
922
- it('should list outputs with valid inputs', async () => {
923
- // Mock the listOutputs method
924
- const listOutputsMock = jest.fn().mockResolvedValue({
925
- totalOutputs: 1,
926
- outputs: [
927
- {
928
- outpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
929
- satoshis: 1000,
930
- lockingScript: '00',
931
- spendable: true,
932
- customInstructions: 'Test instructions',
933
- tags: ['test-tag'],
934
- labels: ['test-label']
935
- }
936
- ]
937
- });
938
- const wallet = createTestWalletWire(mockUnsupportedMethods({
939
- listOutputs: listOutputsMock
940
- }));
941
- const args = {
942
- basket: 'test-basket',
943
- includeLabels: true,
944
- limit: 10,
945
- offset: 0
946
- };
947
- const result = await wallet.listOutputs(args);
948
- expect(result).toHaveProperty('totalOutputs');
949
- expect(result).toHaveProperty('outputs');
950
- expect(Array.isArray(result.outputs)).toBe(true);
951
- expect(listOutputsMock).toHaveBeenCalledWith(args, '');
952
- });
953
- it('should throw an error with invalid inputs', async () => {
954
- // Mock the listOutputs method to throw an error
955
- const listOutputsMock = jest
956
- .fn()
957
- .mockRejectedValue(new Error('Invalid inputs'));
958
- const wallet = createTestWalletWire(mockUnsupportedMethods({
959
- listOutputs: listOutputsMock
960
- }));
961
- const args = {
962
- basket: ''
963
- };
964
- await expect(wallet.listOutputs(args)).rejects.toThrow('Invalid inputs');
965
- expect(listOutputsMock).toHaveBeenCalledWith(args, '');
966
- });
967
- it('should list outputs without specifying optional parameters', async () => {
968
- // Mock the listOutputs method
969
- const listOutputsMock = jest.fn().mockResolvedValue({
970
- totalOutputs: 1,
971
- BEEF: [1, 2, 3, 4],
972
- outputs: [
973
- {
974
- outpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
975
- satoshis: 1000,
976
- spendable: true
977
- }
978
- ]
979
- });
980
- const wallet = createTestWalletWire(mockUnsupportedMethods({
981
- listOutputs: listOutputsMock
982
- }));
983
- const args = {
984
- basket: 'test-basket'
985
- // Optional parameters are not specified
986
- };
987
- const result = await wallet.listOutputs(args);
988
- expect(result).toHaveProperty('totalOutputs');
989
- expect(result).toHaveProperty('outputs');
990
- expect(result).toHaveProperty('BEEF');
991
- expect(result.outputs[0]).toHaveProperty('outpoint');
992
- expect(result.outputs[0]).toHaveProperty('satoshis');
993
- expect(result.outputs[0]).toHaveProperty('spendable');
994
- expect(result.outputs[0]).not.toHaveProperty('lockingScript');
995
- expect(result.outputs[0]).not.toHaveProperty('customInstructions');
996
- expect(result.outputs[0]).not.toHaveProperty('tags');
997
- expect(result.outputs[0]).not.toHaveProperty('labels');
998
- expect(listOutputsMock).toHaveBeenCalledWith(args, '');
999
- });
1000
- });
1001
- describe('getPublicKey', () => {
1002
- it('should get the identity public key', async () => {
1003
- const wallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom()));
1004
- const result = await wallet.getPublicKey({ identityKey: true });
1005
- expect(result).toHaveProperty('publicKey');
1006
- expect(typeof result.publicKey).toBe('string');
1007
- expect(result.publicKey.length).toBe(66); // Compressed public key hex length
1008
- });
1009
- it('should get a derived public key with valid inputs', async () => {
1010
- const userKey = index_1.PrivateKey.fromRandom();
1011
- const counterpartyKey = index_1.PrivateKey.fromRandom();
1012
- const wallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(userKey));
1013
- const args = {
1014
- protocolID: [2, 'tests'],
1015
- keyID: 'test-key-id',
1016
- counterparty: counterpartyKey.toPublicKey().toString()
1017
- };
1018
- const result = await wallet.getPublicKey(args);
1019
- expect(result).toHaveProperty('publicKey');
1020
- expect(typeof result.publicKey).toBe('string');
1021
- expect(result.publicKey.length).toBe(66);
1022
- });
1023
- it('should get the public key with counterparty "anyone"', async () => {
1024
- const wallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom()));
1025
- const args = {
1026
- protocolID: [1, 'testprotocol'],
1027
- keyID: 'testkeyid',
1028
- counterparty: 'anyone'
1029
- };
1030
- const result = await wallet.getPublicKey(args);
1031
- expect(result).toHaveProperty('publicKey');
1032
- expect(typeof result.publicKey).toBe('string');
1033
- expect(result.publicKey.length).toBe(66); // Compressed public key hex length
1034
- });
1035
- it('should get the public key with missing optional parameters', async () => {
1036
- const wallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom()));
1037
- const args = {
1038
- protocolID: [0, 'minimalprotocol'],
1039
- keyID: 'minimalkeyid'
1040
- // Missing counterparty, should default to 'self' or 'anyone' based on context
1041
- };
1042
- const result = await wallet.getPublicKey(args);
1043
- expect(result).toHaveProperty('publicKey');
1044
- expect(typeof result.publicKey).toBe('string');
1045
- expect(result.publicKey.length).toBe(66);
1046
- });
1047
- });
1048
- describe('encrypt and decrypt', () => {
1049
- it('should encrypt and decrypt data correctly', async () => {
1050
- const userKey = index_1.PrivateKey.fromRandom();
1051
- const counterpartyKey = index_1.PrivateKey.fromRandom();
1052
- const userWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(userKey));
1053
- const counterpartyWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey));
1054
- const plaintext = sampleData;
1055
- const encryptArgs = {
1056
- plaintext,
1057
- protocolID: [2, 'tests'],
1058
- keyID: 'test-key-id',
1059
- counterparty: counterpartyKey.toPublicKey().toString()
1060
- };
1061
- const encryptResult = await userWallet.encrypt(encryptArgs);
1062
- expect(encryptResult).toHaveProperty('ciphertext');
1063
- expect(encryptResult.ciphertext).not.toEqual(plaintext);
1064
- const decryptArgs = {
1065
- ciphertext: encryptResult.ciphertext,
1066
- protocolID: [2, 'tests'],
1067
- keyID: 'test-key-id',
1068
- counterparty: userKey.toPublicKey().toString()
1069
- };
1070
- const decryptResult = await counterpartyWallet.decrypt(decryptArgs);
1071
- expect(decryptResult).toHaveProperty('plaintext');
1072
- expect(decryptResult.plaintext).toEqual(plaintext);
1073
- });
1074
- it('should throw an error for invalid decryption inputs', async () => {
1075
- const userKey = index_1.PrivateKey.fromRandom();
1076
- const counterpartyKey = index_1.PrivateKey.fromRandom();
1077
- const counterpartyWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey));
1078
- const decryptArgs = {
1079
- ciphertext: [0x00],
1080
- protocolID: [2, 'tests'],
1081
- keyID: 'test-key-id',
1082
- counterparty: userKey.toPublicKey().toString()
1083
- };
1084
- await expect(counterpartyWallet.decrypt(decryptArgs)).rejects.toThrow();
1085
- });
1086
- });
1087
- describe('createHmac and verifyHmac', () => {
1088
- it('should create and verify HMAC correctly', async () => {
1089
- const userKey = index_1.PrivateKey.fromRandom();
1090
- const counterpartyKey = index_1.PrivateKey.fromRandom();
1091
- const userWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(userKey));
1092
- const counterpartyWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey));
1093
- const data = sampleData;
1094
- const createHmacArgs = {
1095
- data,
1096
- protocolID: [2, 'tests'],
1097
- keyID: 'test-key-id',
1098
- counterparty: counterpartyKey.toPublicKey().toString()
1099
- };
1100
- const createHmacResult = await userWallet.createHmac(createHmacArgs);
1101
- expect(createHmacResult).toHaveProperty('hmac');
1102
- expect(createHmacResult.hmac.length).toBe(32);
1103
- const verifyHmacArgs = {
1104
- data,
1105
- hmac: createHmacResult.hmac,
1106
- protocolID: [2, 'tests'],
1107
- keyID: 'test-key-id',
1108
- counterparty: userKey.toPublicKey().toString()
1109
- };
1110
- const verifyHmacResult = await counterpartyWallet.verifyHmac(verifyHmacArgs);
1111
- expect(verifyHmacResult).toEqual({ valid: true });
1112
- });
1113
- it('should throw an error for invalid HMAC verification', async () => {
1114
- const userKey = index_1.PrivateKey.fromRandom();
1115
- const counterpartyWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom()));
1116
- const verifyHmacArgs = {
1117
- data: sampleData,
1118
- hmac: [0x00],
1119
- protocolID: [2, 'tests'],
1120
- keyID: 'test-key-id',
1121
- counterparty: userKey.toPublicKey().toString()
1122
- };
1123
- await expect(counterpartyWallet.verifyHmac(verifyHmacArgs)).rejects.toThrow();
1124
- });
1125
- });
1126
- describe('createSignature and verifySignature', () => {
1127
- it('should create and verify signature correctly', async () => {
1128
- const userKey = index_1.PrivateKey.fromRandom();
1129
- const counterpartyKey = index_1.PrivateKey.fromRandom();
1130
- const userWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(userKey));
1131
- const counterpartyWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(counterpartyKey));
1132
- const data = sampleData;
1133
- const createSignatureArgs = {
1134
- data,
1135
- protocolID: [2, 'tests'],
1136
- keyID: 'test-key-id',
1137
- counterparty: counterpartyKey.toPublicKey().toString()
1138
- };
1139
- const createSignatureResult = await userWallet.createSignature(createSignatureArgs);
1140
- expect(createSignatureResult).toHaveProperty('signature');
1141
- expect(createSignatureResult.signature.length).toBeGreaterThan(0);
1142
- const verifySignatureArgs = {
1143
- data,
1144
- signature: createSignatureResult.signature,
1145
- protocolID: [2, 'tests'],
1146
- keyID: 'test-key-id',
1147
- counterparty: userKey.toPublicKey().toString()
1148
- };
1149
- const verifySignatureResult = await counterpartyWallet.verifySignature(verifySignatureArgs);
1150
- expect(verifySignatureResult).toEqual({ valid: true });
1151
- });
1152
- it('should throw an error for invalid signature verification', async () => {
1153
- const userKey = index_1.PrivateKey.fromRandom();
1154
- const counterpartyWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom()));
1155
- const verifySignatureArgs = {
1156
- data: sampleData,
1157
- signature: [0x00],
1158
- protocolID: [2, 'tests'],
1159
- keyID: 'test-key-id',
1160
- counterparty: userKey.toPublicKey().toString()
1161
- };
1162
- await expect(counterpartyWallet.verifySignature(verifySignatureArgs)).rejects.toThrow();
1163
- });
1164
- });
1165
- describe('revealCounterpartyKeyLinkage', () => {
1166
- it('should reveal counterparty key linkage correctly', async () => {
1167
- const proverKey = index_1.PrivateKey.fromRandom();
1168
- const counterpartyKey = index_1.PrivateKey.fromRandom();
1169
- const verifierKey = index_1.PrivateKey.fromRandom();
1170
- const proverWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(proverKey));
1171
- const verifierWallet = createTestWalletWire(new CompletedProtoWallet_1.CompletedProtoWallet(verifierKey));
1172
- const args = {
1173
- counterparty: counterpartyKey.toPublicKey().toString(),
1174
- verifier: verifierKey.toPublicKey().toString()
1175
- };
1176
- const revelation = await proverWallet.revealCounterpartyKeyLinkage(args);
1177
- expect(revelation.encryptedLinkageProof).toBeDefined();
1178
- const decryptArgs = {
1179
- ciphertext: revelation.encryptedLinkage,
1180
- protocolID: [2, 'counterparty linkage revelation'],
1181
- keyID: revelation.revelationTime,
1182
- counterparty: proverKey.toPublicKey().toString()
1183
- };
1184
- const decryptedResult = await verifierWallet.decrypt(decryptArgs);
1185
- const expectedLinkage = proverKey
1186
- .deriveSharedSecret(counterpartyKey.toPublicKey())
1187
- .encode(true);
1188
- expect(decryptedResult.plaintext).toEqual(expectedLinkage);
1189
- });
1190
- });
1191
- describe('acquireCertificate', () => {
1192
- it('should acquire a certificate with valid inputs', async () => {
1193
- // Mock the acquireCertificate method
1194
- const acquireCertificateMock = jest.fn().mockResolvedValue({
1195
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1196
- subject: '02' + 'a'.repeat(64),
1197
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1198
- certifier: '02' + 'b'.repeat(64),
1199
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1200
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1201
- fields: {
1202
- field1: 'value1',
1203
- field2: 'value2'
1204
- }
1205
- });
1206
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1207
- acquireCertificate: acquireCertificateMock
1208
- }));
1209
- const args = {
1210
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1211
- certifier: '02' + 'b'.repeat(64),
1212
- acquisitionProtocol: 'direct',
1213
- fields: {
1214
- field1: 'value1',
1215
- field2: 'value2'
1216
- },
1217
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1218
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1219
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1220
- keyringRevealer: 'certifier',
1221
- keyringForSubject: {}
1222
- };
1223
- const result = await wallet.acquireCertificate(args);
1224
- expect(result).toHaveProperty('type');
1225
- expect(result).toHaveProperty('subject');
1226
- expect(result).toHaveProperty('serialNumber');
1227
- expect(result).toHaveProperty('certifier');
1228
- expect(result).toHaveProperty('revocationOutpoint');
1229
- expect(result).toHaveProperty('signature');
1230
- expect(result).toHaveProperty('fields');
1231
- expect(acquireCertificateMock).toHaveBeenCalledWith(args, '');
1232
- });
1233
- it('should acquire a certificate using acquisitionProtocol "direct" with keyringRevealer as "certifier"', async () => {
1234
- // Mock the acquireCertificate method
1235
- const acquireCertificateMock = jest.fn().mockResolvedValue({
1236
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1237
- subject: '02' + 'a'.repeat(64),
1238
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1239
- certifier: '02' + 'b'.repeat(64),
1240
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1241
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1242
- fields: {
1243
- field1: 'value1',
1244
- field2: 'value2'
1245
- }
1246
- });
1247
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1248
- acquireCertificate: acquireCertificateMock
1249
- }));
1250
- const args = {
1251
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1252
- certifier: '02' + 'b'.repeat(64),
1253
- acquisitionProtocol: 'direct',
1254
- fields: {
1255
- field1: 'value1',
1256
- field2: 'value2'
1257
- },
1258
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1259
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1260
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1261
- keyringRevealer: 'certifier',
1262
- keyringForSubject: {
1263
- field1: index_1.Utils.toBase64([0x01, 0x02, 0x03]),
1264
- field2: index_1.Utils.toBase64([0x04, 0x05, 0x06])
1265
- }
1266
- };
1267
- const result = await wallet.acquireCertificate(args);
1268
- expect(result).toHaveProperty('type');
1269
- expect(result).toHaveProperty('subject');
1270
- expect(result).toHaveProperty('serialNumber');
1271
- expect(result).toHaveProperty('certifier');
1272
- expect(result).toHaveProperty('revocationOutpoint');
1273
- expect(result).toHaveProperty('signature');
1274
- expect(result).toHaveProperty('fields');
1275
- expect(acquireCertificateMock).toHaveBeenCalledWith(args, '');
1276
- });
1277
- it('should acquire a certificate using acquisitionProtocol "direct" with keyringRevealer as PubKeyHex', async () => {
1278
- // Mock the acquireCertificate method
1279
- const acquireCertificateMock = jest.fn().mockResolvedValue({
1280
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1281
- subject: '02' + 'a'.repeat(64),
1282
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1283
- certifier: '02' + 'b'.repeat(64),
1284
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1285
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1286
- fields: {
1287
- field1: 'value1',
1288
- field2: 'value2'
1289
- }
1290
- });
1291
- const keyringRevealerPubKey = '02' + 'c'.repeat(64);
1292
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1293
- acquireCertificate: acquireCertificateMock
1294
- }));
1295
- const args = {
1296
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1297
- certifier: '02' + 'b'.repeat(64),
1298
- acquisitionProtocol: 'direct',
1299
- fields: {
1300
- field1: 'value1',
1301
- field2: 'value2'
1302
- },
1303
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1304
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1305
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1306
- keyringRevealer: keyringRevealerPubKey,
1307
- keyringForSubject: {
1308
- field1: index_1.Utils.toBase64([0x01, 0x02, 0x03]),
1309
- field2: index_1.Utils.toBase64([0x04, 0x05, 0x06])
1310
- }
1311
- };
1312
- const result = await wallet.acquireCertificate(args);
1313
- expect(result).toHaveProperty('type');
1314
- expect(result).toHaveProperty('subject');
1315
- expect(result).toHaveProperty('serialNumber');
1316
- expect(result).toHaveProperty('certifier');
1317
- expect(result).toHaveProperty('revocationOutpoint');
1318
- expect(result).toHaveProperty('signature');
1319
- expect(result).toHaveProperty('fields');
1320
- expect(acquireCertificateMock).toHaveBeenCalledWith(args, '');
1321
- });
1322
- it('should acquire a certificate using acquisitionProtocol "issuance"', async () => {
1323
- // Mock the acquireCertificate method
1324
- const acquireCertificateMock = jest.fn().mockResolvedValue({
1325
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1326
- subject: '02' + 'd'.repeat(64),
1327
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1328
- certifier: '02' + 'b'.repeat(64),
1329
- revocationOutpoint: 'cafebabedeadbeefcafebabedeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
1330
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1331
- fields: {
1332
- field3: 'value3',
1333
- field4: 'value4'
1334
- }
1335
- });
1336
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1337
- acquireCertificate: acquireCertificateMock
1338
- }));
1339
- const args = {
1340
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1341
- certifier: '02' + 'b'.repeat(64),
1342
- acquisitionProtocol: 'issuance',
1343
- fields: {
1344
- field3: 'value3',
1345
- field4: 'value4'
1346
- },
1347
- certifierUrl: 'https://certifier.example.com/api/issue'
1348
- };
1349
- const result = await wallet.acquireCertificate(args);
1350
- expect(result).toHaveProperty('type');
1351
- expect(result).toHaveProperty('subject');
1352
- expect(result).toHaveProperty('serialNumber');
1353
- expect(result).toHaveProperty('certifier');
1354
- expect(result).toHaveProperty('revocationOutpoint');
1355
- expect(result).toHaveProperty('signature');
1356
- expect(result).toHaveProperty('fields');
1357
- expect(acquireCertificateMock).toHaveBeenCalledWith(args, '');
1358
- });
1359
- it('should handle optional keyringForSubject being empty in "direct" protocol', async () => {
1360
- // Mock the acquireCertificate method
1361
- const acquireCertificateMock = jest.fn().mockResolvedValue({
1362
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1363
- subject: '02' + 'e'.repeat(64),
1364
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1365
- certifier: '02' + 'b'.repeat(64),
1366
- revocationOutpoint: 'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
1367
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1368
- fields: {
1369
- field5: 'value5'
1370
- }
1371
- });
1372
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1373
- acquireCertificate: acquireCertificateMock
1374
- }));
1375
- const args = {
1376
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1377
- certifier: '02' + 'b'.repeat(64),
1378
- acquisitionProtocol: 'direct',
1379
- fields: {
1380
- field5: 'value5'
1381
- },
1382
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1383
- revocationOutpoint: 'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
1384
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1385
- keyringRevealer: 'certifier',
1386
- keyringForSubject: {} // Empty keyring
1387
- };
1388
- const result = await wallet.acquireCertificate(args);
1389
- expect(result).toHaveProperty('type');
1390
- expect(result).toHaveProperty('subject');
1391
- expect(result).toHaveProperty('serialNumber');
1392
- expect(result).toHaveProperty('certifier');
1393
- expect(result).toHaveProperty('revocationOutpoint');
1394
- expect(result).toHaveProperty('signature');
1395
- expect(result).toHaveProperty('fields');
1396
- expect(result.fields).toEqual({ field5: 'value5' });
1397
- expect(acquireCertificateMock).toHaveBeenCalledWith(args, '');
1398
- });
1399
- });
1400
- describe('listCertificates', () => {
1401
- it('should list certificates with valid inputs', async () => {
1402
- // Mock the listCertificates method
1403
- const listCertificatesMock = jest.fn().mockResolvedValue({
1404
- totalCertificates: 1,
1405
- certificates: [
1406
- {
1407
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1408
- subject: '02' + 'a'.repeat(64),
1409
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1410
- certifier: '02' + 'b'.repeat(64),
1411
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1412
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1413
- fields: {
1414
- field1: 'value1',
1415
- field2: 'value2'
1416
- }
1417
- }
1418
- ]
1419
- });
1420
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1421
- listCertificates: listCertificatesMock
1422
- }));
1423
- const args = {
1424
- certifiers: ['02' + 'b'.repeat(64)],
1425
- types: [index_1.Utils.toBase64(new Array(32).fill(1))],
1426
- limit: 10,
1427
- offset: 0
1428
- };
1429
- const result = await wallet.listCertificates(args);
1430
- expect(result).toHaveProperty('totalCertificates');
1431
- expect(result).toHaveProperty('certificates');
1432
- expect(Array.isArray(result.certificates)).toBe(true);
1433
- expect(listCertificatesMock).toHaveBeenCalledWith(args, '');
1434
- });
1435
- it('should list certificates with multiple fields in each certificate', async () => {
1436
- // Mock the listCertificates method
1437
- const listCertificatesMock = jest.fn().mockResolvedValue({
1438
- totalCertificates: 2,
1439
- certificates: [
1440
- {
1441
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1442
- subject: '02' + 'a'.repeat(64),
1443
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1444
- certifier: '02' + 'b'.repeat(64),
1445
- revocationOutpoint: 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
1446
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1447
- fields: {
1448
- field1: 'value1',
1449
- field2: 'value2'
1450
- }
1451
- },
1452
- {
1453
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1454
- subject: '02' + 'c'.repeat(64),
1455
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1456
- certifier: '02' + 'b'.repeat(64),
1457
- revocationOutpoint: 'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
1458
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1459
- fields: {
1460
- field3: 'value3',
1461
- field4: 'value4',
1462
- field5: 'value5'
1463
- }
1464
- }
1465
- ]
1466
- });
1467
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1468
- listCertificates: listCertificatesMock
1469
- }));
1470
- const args = {
1471
- certifiers: ['02' + 'b'.repeat(64)],
1472
- types: [
1473
- index_1.Utils.toBase64(new Array(32).fill(1)),
1474
- index_1.Utils.toBase64(new Array(32).fill(2))
1475
- ],
1476
- limit: 10,
1477
- offset: 0
1478
- };
1479
- const result = await wallet.listCertificates(args);
1480
- expect(result).toHaveProperty('totalCertificates', 2);
1481
- expect(result.certificates.length).toBe(2);
1482
- expect(result.certificates[0].fields).toEqual({
1483
- field1: 'value1',
1484
- field2: 'value2'
1485
- });
1486
- expect(result.certificates[1].fields).toEqual({
1487
- field3: 'value3',
1488
- field4: 'value4',
1489
- field5: 'value5'
1490
- });
1491
- expect(listCertificatesMock).toHaveBeenCalledWith(args, '');
1492
- });
1493
- it('should list certificates when privileged is true', async () => {
1494
- // Mock the listCertificates method
1495
- const listCertificatesMock = jest.fn().mockResolvedValue({
1496
- totalCertificates: 1,
1497
- certificates: [
1498
- {
1499
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1500
- subject: '02' + 'd'.repeat(64),
1501
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1502
- certifier: '02' + 'e'.repeat(64),
1503
- revocationOutpoint: 'cafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafe.2',
1504
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1505
- fields: {
1506
- field6: 'value6'
1507
- }
1508
- }
1509
- ]
1510
- });
1511
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1512
- listCertificates: listCertificatesMock
1513
- }));
1514
- const args = {
1515
- certifiers: ['02' + 'e'.repeat(64)],
1516
- types: [index_1.Utils.toBase64(new Array(32).fill(1))],
1517
- limit: 10,
1518
- offset: 0,
1519
- privileged: true,
1520
- privilegedReason: 'Testing privileged access'
1521
- };
1522
- const result = await wallet.listCertificates(args);
1523
- expect(result).toHaveProperty('totalCertificates', 1);
1524
- expect(result.certificates[0].fields).toEqual({ field6: 'value6' });
1525
- expect(listCertificatesMock).toHaveBeenCalledWith(args, '');
1526
- });
1527
- });
1528
- describe('proveCertificate', () => {
1529
- it('should prove a certificate with valid inputs', async () => {
1530
- // Mock the proveCertificate method
1531
- const proveCertificateMock = jest.fn().mockResolvedValue({
1532
- keyringForVerifier: {
1533
- field1: index_1.Utils.toBase64([0x01, 0x02, 0x03]),
1534
- field2: index_1.Utils.toBase64([0x04, 0x05, 0x06])
1535
- }
1536
- });
1537
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1538
- proveCertificate: proveCertificateMock
1539
- }));
1540
- const args = {
1541
- certificate: {
1542
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1543
- subject: '02' + 'a'.repeat(64),
1544
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1545
- certifier: '02' + 'b'.repeat(64),
1546
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1547
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1548
- fields: {
1549
- field1: 'value1',
1550
- field2: 'value2'
1551
- }
1552
- },
1553
- fieldsToReveal: ['field1'],
1554
- verifier: '02' + 'c'.repeat(64)
1555
- };
1556
- const result = await wallet.proveCertificate(args);
1557
- expect(result).toHaveProperty('keyringForVerifier');
1558
- expect(proveCertificateMock).toHaveBeenCalledWith(args, '');
1559
- });
1560
- it('should prove a certificate revealing multiple fields', async () => {
1561
- // Mock the proveCertificate method
1562
- const proveCertificateMock = jest.fn().mockResolvedValue({
1563
- keyringForVerifier: {
1564
- field1: index_1.Utils.toBase64([0x01, 0x02, 0x03]),
1565
- field2: index_1.Utils.toBase64([0x04, 0x05, 0x06])
1566
- }
1567
- });
1568
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1569
- proveCertificate: proveCertificateMock
1570
- }));
1571
- const args = {
1572
- certificate: {
1573
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1574
- subject: '02' + 'a'.repeat(64),
1575
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1576
- certifier: '02' + 'b'.repeat(64),
1577
- revocationOutpoint: 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
1578
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1579
- fields: {
1580
- field1: 'value1',
1581
- field2: 'value2',
1582
- field3: 'value3'
1583
- }
1584
- },
1585
- fieldsToReveal: ['field1', 'field2'],
1586
- verifier: '02' + 'f'.repeat(64)
1587
- };
1588
- const result = await wallet.proveCertificate(args);
1589
- expect(result).toHaveProperty('keyringForVerifier');
1590
- expect(Object.keys(result.keyringForVerifier)).toEqual([
1591
- 'field1',
1592
- 'field2'
1593
- ]);
1594
- expect(proveCertificateMock).toHaveBeenCalledWith(args, '');
1595
- });
1596
- it('should handle empty fieldsToReveal array (no fields revealed)', async () => {
1597
- // Mock the proveCertificate method
1598
- const proveCertificateMock = jest.fn().mockResolvedValue({
1599
- keyringForVerifier: {}
1600
- });
1601
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1602
- proveCertificate: proveCertificateMock
1603
- }));
1604
- const args = {
1605
- certificate: {
1606
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1607
- subject: '02' + 'a'.repeat(64),
1608
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1609
- certifier: '02' + 'b'.repeat(64),
1610
- revocationOutpoint: 'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
1611
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1612
- fields: {
1613
- field4: 'value4',
1614
- field5: 'value5'
1615
- }
1616
- },
1617
- fieldsToReveal: [],
1618
- verifier: '02' + 'f'.repeat(64)
1619
- };
1620
- const result = await wallet.proveCertificate(args);
1621
- expect(result).toHaveProperty('keyringForVerifier');
1622
- expect(Object.keys(result.keyringForVerifier).length).toBe(0);
1623
- expect(proveCertificateMock).toHaveBeenCalledWith(args, '');
1624
- });
1625
- });
1626
- describe('relinquishCertificate', () => {
1627
- it('should relinquish a certificate with valid inputs', async () => {
1628
- // Mock the relinquishCertificate method
1629
- const relinquishCertificateMock = jest
1630
- .fn()
1631
- .mockResolvedValue({ relinquished: true });
1632
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1633
- relinquishCertificate: relinquishCertificateMock
1634
- }));
1635
- const args = {
1636
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1637
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1638
- certifier: '02' + 'b'.repeat(64)
1639
- };
1640
- const result = await wallet.relinquishCertificate(args);
1641
- expect(result).toEqual({ relinquished: true });
1642
- expect(relinquishCertificateMock).toHaveBeenCalledWith(args, '');
1643
- });
1644
- });
1645
- describe('getHeight and getHeaderForHeight', () => {
1646
- it('should get the current blockchain height', async () => {
1647
- // Mock the getHeight method
1648
- const getHeightMock = jest.fn().mockResolvedValue({ height: 680000 });
1649
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1650
- getHeight: getHeightMock
1651
- }));
1652
- const result = await wallet.getHeight({});
1653
- expect(result).toHaveProperty('height');
1654
- expect(typeof result.height).toBe('number');
1655
- expect(result.height).toBeGreaterThan(0);
1656
- expect(getHeightMock).toHaveBeenCalledWith({}, '');
1657
- });
1658
- it('should throw an error when getHeight fails', async () => {
1659
- // Mock the getHeight method to throw an error
1660
- const getHeightMock = jest
1661
- .fn()
1662
- .mockRejectedValue(new Error('Failed to get height'));
1663
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1664
- getHeight: getHeightMock
1665
- }));
1666
- await expect(wallet.getHeight({})).rejects.toThrow('Failed to get height');
1667
- expect(getHeightMock).toHaveBeenCalledWith({}, '');
1668
- });
1669
- it('should get the header for a given height', async () => {
1670
- // Mock the getHeaderForHeight method
1671
- const getHeaderForHeightMock = jest.fn().mockResolvedValue({
1672
- header: '00' + 'ff'.repeat(79)
1673
- });
1674
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1675
- getHeaderForHeight: getHeaderForHeightMock
1676
- }));
1677
- const args = { height: 680000 };
1678
- const result = await wallet.getHeaderForHeight(args);
1679
- expect(result).toHaveProperty('header');
1680
- expect(typeof result.header).toBe('string');
1681
- expect(result.header.length).toBe(80 * 2); // 80 bytes in hex
1682
- expect(getHeaderForHeightMock).toHaveBeenCalledWith(args, '');
1683
- });
1684
- it('should throw an error when getHeaderForHeight fails', async () => {
1685
- // Mock the getHeaderForHeight method to throw an error
1686
- const getHeaderForHeightMock = jest
1687
- .fn()
1688
- .mockRejectedValue(new Error('Failed to get header'));
1689
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1690
- getHeaderForHeight: getHeaderForHeightMock
1691
- }));
1692
- const args = { height: -1 }; // Invalid height
1693
- await expect(wallet.getHeaderForHeight(args)).rejects.toThrow('Failed to get header');
1694
- expect(getHeaderForHeightMock).toHaveBeenCalledWith(args, '');
1695
- });
1696
- });
1697
- describe('discoverByIdentityKey', () => {
1698
- it('should discover certificates by identity key with valid inputs', async () => {
1699
- // Mock the discoverByIdentityKey method
1700
- const discoverByIdentityKeyMock = jest.fn().mockResolvedValue({
1701
- totalCertificates: 1,
1702
- certificates: [
1703
- {
1704
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1705
- subject: '02' + 'a'.repeat(64),
1706
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1707
- certifier: '02' + 'b'.repeat(64),
1708
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1709
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1710
- fields: {},
1711
- certifierInfo: {
1712
- name: 'Test Certifier',
1713
- iconUrl: 'https://example.com/icon.png',
1714
- description: 'Test description',
1715
- trust: 5
1716
- },
1717
- publiclyRevealedKeyring: {},
1718
- decryptedFields: {}
1719
- }
1720
- ]
1721
- });
1722
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1723
- discoverByIdentityKey: discoverByIdentityKeyMock
1724
- }));
1725
- const args = {
1726
- identityKey: '02' + 'a'.repeat(64),
1727
- limit: 10,
1728
- offset: 0
1729
- };
1730
- const result = await wallet.discoverByIdentityKey(args);
1731
- expect(result).toHaveProperty('totalCertificates');
1732
- expect(result).toHaveProperty('certificates');
1733
- expect(Array.isArray(result.certificates)).toBe(true);
1734
- expect(discoverByIdentityKeyMock).toHaveBeenCalledWith(args, '');
1735
- });
1736
- it('should discover certificates with empty decryptedFields and publiclyRevealedKeyring', async () => {
1737
- // Mock the discoverByIdentityKey method
1738
- const discoverByIdentityKeyMock = jest.fn().mockResolvedValue({
1739
- totalCertificates: 1,
1740
- certificates: [
1741
- {
1742
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1743
- subject: '02' + 'a'.repeat(64),
1744
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1745
- certifier: '02' + 'b'.repeat(64),
1746
- revocationOutpoint: 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
1747
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1748
- fields: {},
1749
- certifierInfo: {
1750
- name: 'Test Certifier',
1751
- iconUrl: 'https://example.com/icon.png',
1752
- description: 'Test description',
1753
- trust: 5
1754
- },
1755
- publiclyRevealedKeyring: {},
1756
- decryptedFields: {}
1757
- }
1758
- ]
1759
- });
1760
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1761
- discoverByIdentityKey: discoverByIdentityKeyMock
1762
- }));
1763
- const args = {
1764
- identityKey: '02' + 'a'.repeat(64),
1765
- limit: 10,
1766
- offset: 0
1767
- };
1768
- const result = await wallet.discoverByIdentityKey(args);
1769
- expect(result).toHaveProperty('totalCertificates');
1770
- expect(result.certificates.length).toBe(1);
1771
- expect(result.certificates[0].publiclyRevealedKeyring).toEqual({});
1772
- expect(result.certificates[0].decryptedFields).toEqual({});
1773
- expect(discoverByIdentityKeyMock).toHaveBeenCalledWith(args, '');
1774
- });
1775
- it('should discover multiple certificates with varying fields', async () => {
1776
- // Mock the discoverByIdentityKey method
1777
- const discoverByIdentityKeyMock = jest.fn().mockResolvedValue({
1778
- totalCertificates: 2,
1779
- certificates: [
1780
- {
1781
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1782
- subject: '02' + 'a'.repeat(64),
1783
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1784
- certifier: '02' + 'b'.repeat(64),
1785
- revocationOutpoint: 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
1786
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1787
- fields: {},
1788
- certifierInfo: {
1789
- name: 'Certifier One',
1790
- iconUrl: 'https://example.com/icon1.png',
1791
- description: 'First certifier',
1792
- trust: 5
1793
- },
1794
- publiclyRevealedKeyring: {
1795
- field1: index_1.Utils.toBase64([0x01])
1796
- },
1797
- decryptedFields: {
1798
- fieldA: 'decryptedValueA'
1799
- }
1800
- },
1801
- {
1802
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1803
- subject: '02' + 'a'.repeat(64),
1804
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1805
- certifier: '02' + 'c'.repeat(64),
1806
- revocationOutpoint: 'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
1807
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1808
- fields: {},
1809
- certifierInfo: {
1810
- name: 'Certifier Two',
1811
- iconUrl: 'https://example.com/icon2.png',
1812
- description: 'Second certifier',
1813
- trust: 7
1814
- },
1815
- publiclyRevealedKeyring: {},
1816
- decryptedFields: {
1817
- fieldB: 'decryptedValueB',
1818
- fieldC: 'decryptedValueC'
1819
- }
1820
- }
1821
- ]
1822
- });
1823
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1824
- discoverByIdentityKey: discoverByIdentityKeyMock
1825
- }));
1826
- const args = {
1827
- identityKey: '02' + 'a'.repeat(64),
1828
- limit: 10,
1829
- offset: 0
1830
- };
1831
- const result = await wallet.discoverByIdentityKey(args);
1832
- expect(result).toHaveProperty('totalCertificates', 2);
1833
- expect(result.certificates.length).toBe(2);
1834
- expect(result.certificates[0].certifierInfo.name).toBe('Certifier One');
1835
- expect(result.certificates[1].certifierInfo.name).toBe('Certifier Two');
1836
- expect(discoverByIdentityKeyMock).toHaveBeenCalledWith(args, '');
1837
- });
1838
- });
1839
- describe('discoverByAttributes', () => {
1840
- it('should discover certificates by attributes with valid inputs', async () => {
1841
- // Mock the discoverByAttributes method
1842
- const discoverByAttributesMock = jest.fn().mockResolvedValue({
1843
- totalCertificates: 1,
1844
- certificates: [
1845
- {
1846
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1847
- subject: '02' + 'a'.repeat(64),
1848
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1849
- certifier: '02' + 'b'.repeat(64),
1850
- revocationOutpoint: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1851
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1852
- fields: {},
1853
- certifierInfo: {
1854
- name: 'Test Certifier',
1855
- iconUrl: 'https://example.com/icon.png',
1856
- description: 'Test description',
1857
- trust: 5
1858
- },
1859
- publiclyRevealedKeyring: {},
1860
- decryptedFields: {}
1861
- }
1862
- ]
1863
- });
1864
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1865
- discoverByAttributes: discoverByAttributesMock
1866
- }));
1867
- const args = {
1868
- attributes: {
1869
- field1: 'value1'
1870
- },
1871
- limit: 10,
1872
- offset: 0
1873
- };
1874
- const result = await wallet.discoverByAttributes(args);
1875
- expect(result).toHaveProperty('totalCertificates');
1876
- expect(result).toHaveProperty('certificates');
1877
- expect(Array.isArray(result.certificates)).toBe(true);
1878
- expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '');
1879
- });
1880
- it('should throw an error with invalid inputs', async () => {
1881
- // Mock the discoverByAttributes method to throw an error
1882
- const discoverByAttributesMock = jest
1883
- .fn()
1884
- .mockRejectedValue(new Error('Invalid inputs'));
1885
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1886
- discoverByAttributes: discoverByAttributesMock
1887
- }));
1888
- const args = {
1889
- attributes: {}
1890
- };
1891
- await expect(wallet.discoverByAttributes(args)).rejects.toThrow('Invalid inputs');
1892
- expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '');
1893
- });
1894
- it('should discover certificates matching provided attributes', async () => {
1895
- // Mock the discoverByAttributes method
1896
- const discoverByAttributesMock = jest.fn().mockResolvedValue({
1897
- totalCertificates: 1,
1898
- certificates: [
1899
- {
1900
- type: index_1.Utils.toBase64(new Array(32).fill(1)),
1901
- subject: '02' + 'd'.repeat(64),
1902
- serialNumber: index_1.Utils.toBase64(new Array(32).fill(2)),
1903
- certifier: '02' + 'e'.repeat(64),
1904
- revocationOutpoint: 'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
1905
- signature: '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1906
- fields: {},
1907
- certifierInfo: {
1908
- name: 'Certifier Three',
1909
- iconUrl: 'https://example.com/icon3.png',
1910
- description: 'Third certifier',
1911
- trust: 8
1912
- },
1913
- publiclyRevealedKeyring: {
1914
- fieldX: index_1.Utils.toBase64([0x0a, 0x0b])
1915
- },
1916
- decryptedFields: {
1917
- fieldY: 'decryptedValueY'
1918
- }
1919
- }
1920
- ]
1921
- });
1922
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1923
- discoverByAttributes: discoverByAttributesMock
1924
- }));
1925
- const args = {
1926
- attributes: {
1927
- fieldY: 'decryptedValueY'
1928
- },
1929
- limit: 5,
1930
- offset: 0
1931
- };
1932
- const result = await wallet.discoverByAttributes(args);
1933
- expect(result).toHaveProperty('totalCertificates', 1);
1934
- expect(result.certificates.length).toBe(1);
1935
- expect(result.certificates[0].certifierInfo.name).toBe('Certifier Three');
1936
- expect(result.certificates[0].decryptedFields.fieldY).toBe('decryptedValueY');
1937
- expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '');
1938
- });
1939
- it('should return empty certificates array when no matches found', async () => {
1940
- // Mock the discoverByAttributes method
1941
- const discoverByAttributesMock = jest.fn().mockResolvedValue({
1942
- totalCertificates: 0,
1943
- certificates: []
1944
- });
1945
- const wallet = createTestWalletWire(mockUnsupportedMethods({
1946
- discoverByAttributes: discoverByAttributesMock
1947
- }));
1948
- const args = {
1949
- attributes: {
1950
- nonExistentField: 'noValue'
1951
- },
1952
- limit: 5,
1953
- offset: 0
1954
- };
1955
- const result = await wallet.discoverByAttributes(args);
1956
- expect(result).toHaveProperty('totalCertificates', 0);
1957
- expect(result.certificates.length).toBe(0);
1958
- expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '');
1959
- });
1960
- });
1961
- });
1962
- //# sourceMappingURL=WalletWire.integration.test.js.map