@bsv/sdk 1.6.9 → 1.6.11

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 (654) hide show
  1. package/README.md +9 -4
  2. package/dist/cjs/package.json +4 -2
  3. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -1
  4. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  5. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  6. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -1
  7. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  8. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  9. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  10. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  11. package/dist/umd/bundle.js +1 -1
  12. package/docs/concepts/beef.md +84 -0
  13. package/docs/concepts/chain-tracking.md +122 -0
  14. package/docs/concepts/decentralized-identity.md +184 -0
  15. package/docs/concepts/fees.md +217 -0
  16. package/docs/concepts/identity-certificates.md +255 -0
  17. package/docs/concepts/index.md +62 -0
  18. package/docs/concepts/key-management.md +176 -0
  19. package/docs/concepts/script-templates.md +163 -0
  20. package/docs/concepts/sdk-philosophy.md +72 -0
  21. package/docs/concepts/signatures.md +179 -0
  22. package/docs/concepts/spv-verification.md +106 -0
  23. package/docs/concepts/transaction-encoding.md +148 -0
  24. package/docs/concepts/transaction-structure.md +63 -0
  25. package/docs/concepts/trust-model.md +123 -0
  26. package/docs/concepts/verification.md +219 -0
  27. package/docs/concepts/wallet-integration.md +95 -0
  28. package/docs/guides/direct-transaction-creation.md +137 -0
  29. package/docs/guides/http-client-configuration.md +414 -0
  30. package/docs/guides/index.md +30 -0
  31. package/docs/guides/transaction-signing-methods.md +268 -0
  32. package/docs/index.md +74 -0
  33. package/docs/reference/arc-config.md +698 -0
  34. package/docs/reference/brc-100.md +33 -0
  35. package/docs/reference/configuration.md +829 -0
  36. package/docs/reference/debugging.md +700 -0
  37. package/docs/reference/errors.md +547 -0
  38. package/docs/reference/index.md +98 -0
  39. package/docs/reference/network-config.md +914 -0
  40. package/docs/reference/op-codes.md +306 -0
  41. package/docs/reference/transaction-signatures.md +94 -0
  42. package/docs/requirements.txt +3 -0
  43. package/docs/tutorials/advanced-transaction.md +575 -0
  44. package/docs/tutorials/aes-encryption.md +947 -0
  45. package/docs/tutorials/authfetch-tutorial.md +957 -0
  46. package/docs/tutorials/ecdh-key-exchange.md +547 -0
  47. package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
  48. package/docs/tutorials/error-handling.md +1215 -0
  49. package/docs/tutorials/first-transaction-low-level.md +204 -0
  50. package/docs/tutorials/first-transaction.md +278 -0
  51. package/docs/tutorials/hashes-and-hmacs.md +814 -0
  52. package/docs/tutorials/identity-management.md +702 -0
  53. package/docs/tutorials/index.md +182 -0
  54. package/docs/tutorials/key-management.md +536 -0
  55. package/docs/tutorials/protowallet-development.md +716 -0
  56. package/docs/tutorials/script-construction.md +690 -0
  57. package/docs/tutorials/spv-merkle-proofs.md +682 -0
  58. package/docs/tutorials/testnet-transactions-low-level.md +352 -0
  59. package/docs/tutorials/transaction-broadcasting.md +535 -0
  60. package/docs/tutorials/transaction-types.md +419 -0
  61. package/docs/tutorials/type-42.md +582 -0
  62. package/docs/tutorials/uhrp-storage.md +579 -0
  63. package/package.json +4 -2
  64. package/src/wallet/substrates/HTTPWalletJSON.ts +6 -1
  65. package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
  66. package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
  67. package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
  68. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
  69. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
  70. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  71. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  72. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  73. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  74. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  75. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
  76. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  77. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  78. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  79. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  80. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  81. package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
  82. package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
  83. package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
  84. package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
  85. package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
  86. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
  87. package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
  88. package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
  89. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
  90. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
  91. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
  92. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  93. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
  94. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  95. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
  96. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
  97. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  98. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  99. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  100. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  101. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  102. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  103. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
  104. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
  105. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  106. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  107. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  108. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  109. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  110. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  111. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  112. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  113. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  114. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  115. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  116. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  117. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  118. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  119. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  120. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  121. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  122. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  123. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
  124. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  125. package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
  126. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
  127. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
  128. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  129. package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
  130. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
  131. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
  132. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
  133. package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
  134. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
  135. package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
  136. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
  137. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  138. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  139. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  140. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  141. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
  142. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  143. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
  144. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
  145. package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
  146. package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
  147. package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
  148. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
  149. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
  150. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  151. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
  152. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
  153. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
  154. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  155. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  156. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  157. package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
  158. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
  159. package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
  160. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
  161. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
  162. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
  163. package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
  164. package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
  165. package/dist/cjs/src/script/__tests/Script.test.js +0 -347
  166. package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
  167. package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
  168. package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
  169. package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
  170. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
  171. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
  172. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
  173. package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
  174. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
  175. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
  176. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
  177. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
  178. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  179. package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
  180. package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
  181. package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
  182. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
  183. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
  184. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
  185. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  186. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  187. package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
  188. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
  189. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
  190. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  191. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  192. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  193. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
  194. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  195. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  196. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  197. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
  198. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  199. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  200. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  201. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  202. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  203. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  204. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  205. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
  206. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  207. package/dist/cjs/src/wallet/WalletSigner.js +0 -260
  208. package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
  209. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  210. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  211. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
  212. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  213. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
  214. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  215. package/dist/cjs/src/wallet/createActionSdk.js +0 -230
  216. package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
  217. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  218. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  219. package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
  220. package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
  221. package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
  222. package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
  223. package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
  224. package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
  225. package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
  226. package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
  227. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
  228. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  229. package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
  230. package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
  231. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
  232. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  233. package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
  234. package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
  235. package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
  236. package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
  237. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
  238. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  239. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
  240. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  241. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
  242. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  243. package/dist/cjs/src/wallet/sdk/index.js +0 -31
  244. package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
  245. package/dist/cjs/src/wallet/sdk/types.js +0 -11
  246. package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
  247. package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
  248. package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
  249. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  250. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  251. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
  252. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  253. package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
  254. package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
  255. package/dist/cjs/src/wallet/validationHelpers.js +0 -601
  256. package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
  257. package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
  258. package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
  259. package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
  260. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
  261. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
  262. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  263. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  264. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  265. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  266. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  267. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
  268. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  269. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  270. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  271. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  272. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  273. package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
  274. package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
  275. package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
  276. package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
  277. package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
  278. package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
  279. package/dist/esm/src/compat/__tests/HD.test.js +0 -336
  280. package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
  281. package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
  282. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
  283. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
  284. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  285. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
  286. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  287. package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
  288. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
  289. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  290. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  291. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  292. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  293. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  294. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  295. package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
  296. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
  297. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  298. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  299. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  300. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  301. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  302. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  303. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  304. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  305. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  306. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  307. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  308. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  309. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  310. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  311. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  312. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  313. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  314. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  315. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
  316. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  317. package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
  318. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
  319. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
  320. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  321. package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
  322. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
  323. package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
  324. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
  325. package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
  326. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
  327. package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
  328. package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
  329. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  330. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  331. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  332. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  333. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
  334. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  335. package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
  336. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
  337. package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
  338. package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
  339. package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
  340. package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
  341. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
  342. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  343. package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
  344. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
  345. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
  346. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  347. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  348. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  349. package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
  350. package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
  351. package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
  352. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
  353. package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
  354. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
  355. package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
  356. package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
  357. package/dist/esm/src/script/__tests/Script.test.js +0 -347
  358. package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
  359. package/dist/esm/src/script/__tests/Spend.test.js +0 -282
  360. package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
  361. package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
  362. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
  363. package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
  364. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
  365. package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
  366. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
  367. package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
  368. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
  369. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
  370. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  371. package/dist/esm/src/totp/__tests/totp.test.js +0 -67
  372. package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
  373. package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
  374. package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
  375. package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
  376. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
  377. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  378. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  379. package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
  380. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
  381. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
  382. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  383. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  384. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  385. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
  386. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  387. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  388. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  389. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
  390. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  391. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  392. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  393. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  394. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  395. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  396. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  397. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
  398. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  399. package/dist/esm/src/wallet/WalletSigner.js +0 -263
  400. package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
  401. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  402. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  403. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
  404. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  405. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
  406. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  407. package/dist/esm/src/wallet/createActionSdk.js +0 -223
  408. package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
  409. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  410. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  411. package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
  412. package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
  413. package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
  414. package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
  415. package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
  416. package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
  417. package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
  418. package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
  419. package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
  420. package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  421. package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
  422. package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
  423. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
  424. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  425. package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
  426. package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
  427. package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
  428. package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
  429. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
  430. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  431. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
  432. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  433. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
  434. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  435. package/dist/esm/src/wallet/sdk/index.js +0 -15
  436. package/dist/esm/src/wallet/sdk/index.js.map +0 -1
  437. package/dist/esm/src/wallet/sdk/types.js +0 -8
  438. package/dist/esm/src/wallet/sdk/types.js.map +0 -1
  439. package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
  440. package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
  441. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  442. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  443. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
  444. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  445. package/dist/esm/src/wallet/utilityHelpers.js +0 -275
  446. package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
  447. package/dist/esm/src/wallet/validationHelpers.js +0 -566
  448. package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
  449. package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
  450. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
  451. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
  452. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
  453. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
  454. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
  455. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
  456. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
  457. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
  458. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
  459. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
  460. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
  461. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
  462. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
  463. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
  464. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
  465. package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
  466. package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
  467. package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
  468. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
  469. package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
  470. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
  471. package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
  472. package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
  473. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
  474. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
  475. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
  476. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
  477. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
  478. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
  479. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
  480. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
  481. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
  482. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
  483. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
  484. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
  485. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
  486. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
  487. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
  488. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
  489. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
  490. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
  491. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
  492. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
  493. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
  494. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
  495. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
  496. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
  497. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
  498. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
  499. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
  500. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
  501. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
  502. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
  503. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
  504. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
  505. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
  506. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
  507. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
  508. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
  509. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
  510. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
  511. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
  512. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
  513. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
  514. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
  515. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
  516. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
  517. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
  518. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
  519. package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
  520. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
  521. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
  522. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
  523. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
  524. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
  525. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
  526. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
  527. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
  528. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
  529. package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
  530. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
  531. package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
  532. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
  533. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
  534. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
  535. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
  536. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
  537. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
  538. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
  539. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
  540. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
  541. package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
  542. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
  543. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
  544. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
  545. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
  546. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
  547. package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
  548. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
  549. package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
  550. package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
  551. package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
  552. package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
  553. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
  554. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
  555. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
  556. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
  557. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
  558. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
  559. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
  560. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
  561. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
  562. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
  563. package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
  564. package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
  565. package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
  566. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
  567. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
  568. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
  569. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
  570. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
  571. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
  572. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
  573. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
  574. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
  575. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
  576. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
  577. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
  578. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
  579. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
  580. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
  581. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
  582. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
  583. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
  584. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
  585. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
  586. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
  587. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
  588. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
  589. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
  590. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
  591. package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
  592. package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
  593. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
  594. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
  595. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
  596. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
  597. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
  598. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
  599. package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
  600. package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
  601. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
  602. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
  603. package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
  604. package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
  605. package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
  606. package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
  607. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
  608. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
  609. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
  610. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
  611. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
  612. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
  613. package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
  614. package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
  615. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
  616. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
  617. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
  618. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
  619. package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
  620. package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
  621. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
  622. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
  623. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
  624. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
  625. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
  626. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
  627. package/dist/types/src/wallet/sdk/index.d.ts +0 -15
  628. package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
  629. package/dist/types/src/wallet/sdk/types.d.ts +0 -56
  630. package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
  631. package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
  632. package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
  633. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
  634. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
  635. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
  636. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
  637. package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
  638. package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
  639. package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
  640. package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
  641. package/docs/README.md +0 -21
  642. /package/docs/{auth.md → reference/auth.md} +0 -0
  643. /package/docs/{compat.md → reference/compat.md} +0 -0
  644. /package/docs/{identity.md → reference/identity.md} +0 -0
  645. /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
  646. /package/docs/{messages.md → reference/messages.md} +0 -0
  647. /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
  648. /package/docs/{primitives.md → reference/primitives.md} +0 -0
  649. /package/docs/{registry.md → reference/registry.md} +0 -0
  650. /package/docs/{script.md → reference/script.md} +0 -0
  651. /package/docs/{storage.md → reference/storage.md} +0 -0
  652. /package/docs/{totp.md → reference/totp.md} +0 -0
  653. /package/docs/{transaction.md → reference/transaction.md} +0 -0
  654. /package/docs/{wallet.md → reference/wallet.md} +0 -0
@@ -0,0 +1,582 @@
1
+ # Type-42 Key Derivation
2
+
3
+ **Duration**: 75 minutes
4
+ **Prerequisites**: Basic TypeScript knowledge, Elliptic Curve Fundamentals tutorial completed, ECDH Key Exchange tutorial completed
5
+
6
+ ## Learning Goals
7
+
8
+ - Understand Type-42 key derivation protocol and its use cases
9
+ - Implement Type-42 operations with the BSV TypeScript SDK
10
+ - Create shared key universes between two parties
11
+ - Apply Type-42 in practical Bitcoin applications like message signing and encryption
12
+ - Understand the "anyone key" concept and its applications
13
+
14
+ ## Introduction to Type-42
15
+
16
+ Type-42 is a key derivation protocol that enables two parties with master keys to derive child keys from one another using a specific string called an "invoice number." This creates a shared key universe that only these two parties can access, enabling secure communication and transactions without revealing their master keys.
17
+
18
+ The protocol gets its name from its historical use in Bitcoin payment systems, where invoice numbers were used to generate unique keys for each transaction. However, Type-42 has broader applications in secure messaging, authentication, and any scenario requiring shared key derivation.
19
+
20
+ ## Setting Up Your Environment
21
+
22
+ ```typescript
23
+ import { PrivateKey, PublicKey, Utils } from '@bsv/sdk'
24
+ ```
25
+
26
+ ## Understanding Type-42 Process
27
+
28
+ ### The Mathematical Foundation
29
+
30
+ Type-42 key derivation follows these steps:
31
+
32
+ 1. **Master Key Generation**: Each party generates a master private key
33
+ 2. **Public Key Exchange**: Parties share their master public keys
34
+ 3. **Shared Secret Creation**: Using ECDH, parties compute a shared secret
35
+ 4. **Invoice Number Agreement**: Parties agree on a unique identifier (invoice number)
36
+ 5. **HMAC Computation**: The shared secret is used as an HMAC key to hash the invoice number
37
+ 6. **Key Derivation**: The HMAC output is used to derive child keys
38
+
39
+ ### Security Properties
40
+
41
+ - Only the two parties can compute the shared secret
42
+ - Only they can use the HMAC function with their shared secret
43
+ - No one else can link master keys to derived keys
44
+ - Each invoice number creates a unique key pair in their shared universe
45
+
46
+ ## Basic Type-42 Implementation
47
+
48
+ ### Step 1: Master Key Setup
49
+
50
+ ```typescript
51
+ // Alice generates her master key pair
52
+ const alice = PrivateKey.fromRandom()
53
+ const alicePub = alice.toPublicKey()
54
+
55
+ // Bob generates his master key pair
56
+ const bob = PrivateKey.fromRandom()
57
+ const bobPub = bob.toPublicKey()
58
+
59
+ console.log('Alice master public key:', alicePub.toString())
60
+ console.log('Bob master public key:', bobPub.toString())
61
+ ```
62
+
63
+ ### Step 2: Invoice Number Agreement
64
+
65
+ ```typescript
66
+ // Both parties agree on an invoice number to use
67
+ // This could be a payment ID, message ID, or any unique identifier
68
+ const invoiceNumber = '2-simple signing protocol-1'
69
+
70
+ console.log('Using invoice number:', invoiceNumber)
71
+ ```
72
+
73
+ ### Step 3: Child Key Derivation
74
+
75
+ ```typescript
76
+ // Alice derives a child private key for signing
77
+ const aliceSigningChild = alice.deriveChild(bobPub, invoiceNumber)
78
+
79
+ // Bob derives Alice's corresponding public key
80
+ const aliceSigningPub = alicePub.deriveChild(bob, invoiceNumber)
81
+
82
+ // Verify the keys match
83
+ const derivedPubFromPriv = aliceSigningChild.toPublicKey()
84
+ const keysMatch = derivedPubFromPriv.toString() === aliceSigningPub.toString()
85
+ console.log('Keys match:', keysMatch)
86
+ // true
87
+ ```
88
+
89
+ ## Practical Example: Message Signing
90
+
91
+ Let's implement a complete example where Alice signs a message for Bob using Type-42 derived keys:
92
+
93
+ ```typescript
94
+ import { PrivateKey, Utils } from '@bsv/sdk'
95
+
96
+ async function demonstrateType42Signing() {
97
+ // Step 1: Generate master keys
98
+ const alice = PrivateKey.fromRandom()
99
+ const alicePub = alice.toPublicKey()
100
+
101
+ const bob = PrivateKey.fromRandom()
102
+ const bobPub = bob.toPublicKey()
103
+
104
+ // Step 2: Agree on invoice number
105
+ const invoiceNumber = '2-secure-message-001'
106
+
107
+ // Step 3: Alice derives her signing key
108
+ const aliceSigningChild = alice.deriveChild(bobPub, invoiceNumber)
109
+
110
+ // Step 4: Alice signs a message
111
+ const message = Utils.toArray('Hello Bob, this is a secure message!', 'utf8')
112
+ const signature = aliceSigningChild.sign(message)
113
+
114
+ console.log('Message signed by Alice')
115
+ console.log('Signature:', signature.toDER('hex'))
116
+
117
+ // Step 5: Bob derives Alice's public key and verifies
118
+ const aliceSigningPub = alicePub.deriveChild(bob, invoiceNumber)
119
+ const verified = aliceSigningPub.verify(message, signature)
120
+
121
+ console.log('Signature verified by Bob:', verified)
122
+ // true
123
+
124
+ return {
125
+ alice,
126
+ bob,
127
+ aliceSigningChild,
128
+ aliceSigningPub,
129
+ message,
130
+ signature,
131
+ verified
132
+ }
133
+ }
134
+
135
+ // Run the demonstration
136
+ demonstrateType42Signing()
137
+ ```
138
+
139
+ ## Bidirectional Communication
140
+
141
+ Type-42 enables both parties to derive keys for each other. Here's how Bob can also sign messages for Alice:
142
+
143
+ ```typescript
144
+ async function bidirectionalType42() {
145
+ const alice = PrivateKey.fromRandom()
146
+ const alicePub = alice.toPublicKey()
147
+
148
+ const bob = PrivateKey.fromRandom()
149
+ const bobPub = bob.toPublicKey()
150
+
151
+ const invoiceNumber = '2-bidirectional-chat-001'
152
+
153
+ // Alice signs a message for Bob
154
+ const aliceMessage = Utils.toArray('Hi Bob!', 'utf8')
155
+ const aliceSigningKey = alice.deriveChild(bobPub, invoiceNumber)
156
+ const aliceSignature = aliceSigningKey.sign(aliceMessage)
157
+
158
+ // Bob signs a reply for Alice
159
+ const bobMessage = Utils.toArray('Hi Alice!', 'utf8')
160
+ const bobSigningKey = bob.deriveChild(alicePub, invoiceNumber)
161
+ const bobSignature = bobSigningKey.sign(bobMessage)
162
+
163
+ // Cross-verification
164
+ const aliceVerifyKey = alicePub.deriveChild(bob, invoiceNumber)
165
+ const bobVerifyKey = bobPub.deriveChild(alice, invoiceNumber)
166
+
167
+ const aliceVerified = aliceVerifyKey.verify(aliceMessage, aliceSignature)
168
+ const bobVerified = bobVerifyKey.verify(bobMessage, bobSignature)
169
+
170
+ console.log('Alice message verified:', aliceVerified)
171
+ console.log('Bob message verified:', bobVerified)
172
+
173
+ return { aliceVerified, bobVerified }
174
+ }
175
+ ```
176
+
177
+ ## The "Anyone Key" Concept
178
+
179
+ The SDK supports a special "anyone" key concept for scenarios where one party wants to create publicly verifiable signatures. The "anyone" key is simply the private key with value 1:
180
+
181
+ ```typescript
182
+ // The "anyone" private key
183
+ const anyonePrivateKey = new PrivateKey(1)
184
+ const anyonePublicKey = anyonePrivateKey.toPublicKey()
185
+
186
+ console.log('Anyone public key:', anyonePublicKey.toString())
187
+
188
+ // Using "anyone" key for public verification
189
+ function createPubliclyVerifiableSignature() {
190
+ const signer = PrivateKey.fromRandom()
191
+ const invoiceNumber = '2-public-announcement-001'
192
+
193
+ // Derive key using "anyone" as counterparty
194
+ const signingKey = signer.deriveChild(anyonePublicKey, invoiceNumber)
195
+
196
+ // Sign message
197
+ const message = Utils.toArray('This is a public announcement', 'utf8')
198
+ const signature = signingKey.sign(message)
199
+
200
+ // Anyone can verify using the signer's public key
201
+ const signerPub = signer.toPublicKey()
202
+ const verifyKey = signerPub.deriveChild(anyonePrivateKey, invoiceNumber)
203
+ const verified = verifyKey.verify(message, signature)
204
+
205
+ console.log('Public signature verified:', verified)
206
+
207
+ return {
208
+ signerPublicKey: signerPub.toString(),
209
+ signature: signature.toDER('hex'),
210
+ verified
211
+ }
212
+ }
213
+
214
+ createPubliclyVerifiableSignature()
215
+ ```
216
+
217
+ ## Advanced Type-42 Applications
218
+
219
+ ### Multi-Purpose Key Derivation
220
+
221
+ Use different invoice numbers for different purposes:
222
+
223
+ ```typescript
224
+ function multiPurposeKeyDerivation() {
225
+ const alice = PrivateKey.fromRandom()
226
+ const bob = PrivateKey.fromRandom()
227
+ const bobPub = bob.toPublicKey()
228
+
229
+ // Different keys for different purposes
230
+ const signingKey = alice.deriveChild(bobPub, '2-signing-001')
231
+ const encryptionKey = alice.deriveChild(bobPub, '2-encryption-001')
232
+ const authKey = alice.deriveChild(bobPub, '2-auth-001')
233
+
234
+ console.log('Signing key:', signingKey.toHex().substring(0, 16) + '...')
235
+ console.log('Encryption key:', encryptionKey.toHex().substring(0, 16) + '...')
236
+ console.log('Auth key:', authKey.toHex().substring(0, 16) + '...')
237
+
238
+ // Each key is unique and serves a different purpose
239
+ return { signingKey, encryptionKey, authKey }
240
+ }
241
+ ```
242
+
243
+ ### Session-Based Key Derivation
244
+
245
+ Create time-based or session-based keys:
246
+
247
+ ```typescript
248
+ function sessionBasedKeys() {
249
+ const alice = PrivateKey.fromRandom()
250
+ const bob = PrivateKey.fromRandom()
251
+ const bobPub = bob.toPublicKey()
252
+
253
+ // Create session-specific keys
254
+ const sessionId = Date.now().toString()
255
+ const sessionInvoice = `2-session-${sessionId}`
256
+
257
+ const sessionKey = alice.deriveChild(bobPub, sessionInvoice)
258
+
259
+ console.log('Session ID:', sessionId)
260
+ console.log('Session key created:', sessionKey.toHex().substring(0, 16) + '...')
261
+
262
+ return { sessionId, sessionKey }
263
+ }
264
+ ```
265
+
266
+ ## Integration with Transactions
267
+
268
+ Type-42 derived keys can be used in Bitcoin transactions:
269
+
270
+ ```typescript
271
+ import { Transaction, P2PKH } from '@bsv/sdk'
272
+
273
+ async function type42Transaction() {
274
+ const alice = PrivateKey.fromRandom()
275
+ const bob = PrivateKey.fromRandom()
276
+ const bobPub = bob.toPublicKey()
277
+
278
+ const invoiceNumber = '2-payment-001'
279
+
280
+ // Alice derives a key for this specific payment
281
+ const paymentKey = alice.deriveChild(bobPub, invoiceNumber)
282
+ const paymentAddress = paymentKey.toAddress()
283
+
284
+ console.log('Payment address:', paymentAddress)
285
+
286
+ // Bob can derive the same public key to verify ownership
287
+ const alicePub = alice.toPublicKey()
288
+ const verifyKey = alicePub.deriveChild(bob, invoiceNumber)
289
+ const verifyAddress = verifyKey.toAddress()
290
+
291
+ console.log('Addresses match:', paymentAddress === verifyAddress)
292
+
293
+ return { paymentKey, paymentAddress, verifyAddress }
294
+ }
295
+ ```
296
+
297
+ ## Error Handling and Validation
298
+
299
+ Implement robust error handling for Type-42 operations:
300
+
301
+ ```typescript
302
+ function safeType42Derivation(
303
+ privateKey: PrivateKey,
304
+ counterpartyPublicKey: PublicKey,
305
+ invoiceNumber: string
306
+ ): PrivateKey | null {
307
+ try {
308
+ // Validate inputs
309
+ if (!privateKey || !counterpartyPublicKey || !invoiceNumber) {
310
+ throw new Error('Missing required parameters')
311
+ }
312
+
313
+ if (invoiceNumber.length === 0) {
314
+ throw new Error('Invoice number cannot be empty')
315
+ }
316
+
317
+ // Perform derivation
318
+ const derivedKey = privateKey.deriveChild(counterpartyPublicKey, invoiceNumber)
319
+
320
+ // Validate result
321
+ if (!derivedKey) {
322
+ throw new Error('Key derivation failed')
323
+ }
324
+
325
+ return derivedKey
326
+ } catch (error: any) {
327
+ console.error('Type-42 derivation error:', error.message)
328
+ return null
329
+ }
330
+ }
331
+
332
+ // Usage example
333
+ const alice = PrivateKey.fromRandom()
334
+ const bob = PrivateKey.fromRandom()
335
+ const bobPub = bob.toPublicKey()
336
+
337
+ const derivedKey = safeType42Derivation(alice, bobPub, '2-safe-derivation-001')
338
+ if (derivedKey) {
339
+ console.log('Derivation successful')
340
+ } else {
341
+ console.log('Derivation failed')
342
+ }
343
+ ```
344
+
345
+ ## Performance Considerations
346
+
347
+ ### Caching Derived Keys
348
+
349
+ For applications that frequently use the same invoice numbers:
350
+
351
+ ```typescript
352
+ class Type42KeyCache {
353
+ private cache = new Map<string, PrivateKey>()
354
+
355
+ constructor(private masterKey: PrivateKey) {}
356
+
357
+ deriveKey(counterpartyPub: PublicKey, invoiceNumber: string): PrivateKey {
358
+ const cacheKey = `${counterpartyPub.toString()}-${invoiceNumber}`
359
+
360
+ if (this.cache.has(cacheKey)) {
361
+ return this.cache.get(cacheKey)!
362
+ }
363
+
364
+ const derivedKey = this.masterKey.deriveChild(counterpartyPub, invoiceNumber)
365
+ this.cache.set(cacheKey, derivedKey)
366
+
367
+ return derivedKey
368
+ }
369
+
370
+ clearCache(): void {
371
+ this.cache.clear()
372
+ }
373
+
374
+ getCacheSize(): number {
375
+ return this.cache.size
376
+ }
377
+ }
378
+
379
+ // Usage
380
+ const alice = PrivateKey.fromRandom()
381
+ const keyCache = new Type42KeyCache(alice)
382
+
383
+ const bob = PrivateKey.fromRandom()
384
+ const bobPub = bob.toPublicKey()
385
+
386
+ // First call performs derivation
387
+ const key1 = keyCache.deriveKey(bobPub, '2-cached-001')
388
+
389
+ // Second call uses cache
390
+ const key2 = keyCache.deriveKey(bobPub, '2-cached-001')
391
+
392
+ console.log('Keys are identical:', key1.toHex() === key2.toHex())
393
+ console.log('Cache size:', keyCache.getCacheSize())
394
+ ```
395
+
396
+ ## Security Best Practices
397
+
398
+ ### 1. Invoice Number Guidelines
399
+
400
+ ```typescript
401
+ // Good: Structured, unique invoice numbers
402
+ const goodInvoiceNumbers = [
403
+ '2-payment-20241210-001',
404
+ '2-message-session-abc123',
405
+ '2-auth-token-xyz789'
406
+ ]
407
+
408
+ // Avoid: Predictable or reused invoice numbers
409
+ const badInvoiceNumbers = [
410
+ '1', // Too simple
411
+ 'payment', // Not unique
412
+ '2-payment-001' // Reused across different contexts
413
+ ]
414
+ ```
415
+
416
+ ### 2. Master Key Protection
417
+
418
+ ```typescript
419
+ function secureMasterKeyUsage() {
420
+ // Generate master key securely
421
+ const masterKey = PrivateKey.fromRandom()
422
+
423
+ // Never log or expose master keys
424
+ // console.log('Master key:', masterKey.toHex()) // DON'T DO THIS
425
+
426
+ // Use derived keys for operations
427
+ const counterparty = PrivateKey.fromRandom().toPublicKey()
428
+ const derivedKey = masterKey.deriveChild(counterparty, '2-secure-operation-001')
429
+
430
+ // Log derived keys if needed (they don't reveal master key)
431
+ console.log('Derived key (safe to log):', derivedKey.toHex().substring(0, 16) + '...')
432
+
433
+ return derivedKey
434
+ }
435
+ ```
436
+
437
+ ### 3. Counterparty Validation
438
+
439
+ ```typescript
440
+ function validateCounterparty(publicKey: PublicKey): boolean {
441
+ try {
442
+ // Ensure the public key is valid by checking its coordinates
443
+ const x = publicKey.x
444
+ const y = publicKey.y
445
+ if (!x || !y) {
446
+ return false
447
+ }
448
+
449
+ // Additional validation can be added here
450
+ return true
451
+ } catch (error: any) {
452
+ return false
453
+ }
454
+ }
455
+ ```
456
+
457
+ ## Testing Type-42 Implementation
458
+
459
+ ```typescript
460
+ function testType42Implementation() {
461
+ console.log('Testing Type-42 key derivation...')
462
+
463
+ // Test 1: Basic derivation
464
+ const alice = PrivateKey.fromRandom()
465
+ const bob = PrivateKey.fromRandom()
466
+ const bobPub = bob.toPublicKey()
467
+ const alicePub = alice.toPublicKey()
468
+
469
+ const invoiceNumber = '2-test-001'
470
+
471
+ const aliceChild = alice.deriveChild(bobPub, invoiceNumber)
472
+ const aliceChildPub = alicePub.deriveChild(bob, invoiceNumber)
473
+
474
+ const test1 = aliceChild.toPublicKey().toString() === aliceChildPub.toString()
475
+ console.log('Test 1 - Key consistency:', test1 ? 'PASS' : 'FAIL')
476
+
477
+ // Test 2: Message signing and verification
478
+ const message = Utils.toArray('Test message', 'utf8')
479
+ const signature = aliceChild.sign(message)
480
+ const verified = aliceChildPub.verify(message, signature)
481
+
482
+ console.log('Test 2 - Sign/verify:', verified ? 'PASS' : 'FAIL')
483
+
484
+ // Test 3: Different invoice numbers produce different keys
485
+ const key1 = alice.deriveChild(bobPub, '2-test-001')
486
+ const key2 = alice.deriveChild(bobPub, '2-test-002')
487
+
488
+ const test3 = key1.toHex() !== key2.toHex()
489
+ console.log('Test 3 - Unique keys:', test3 ? 'PASS' : 'FAIL')
490
+
491
+ // Test 4: Bidirectional derivation
492
+ const bobChild = bob.deriveChild(alicePub, invoiceNumber)
493
+ const bobChildPub = bobPub.deriveChild(alice, invoiceNumber)
494
+
495
+ const test4 = bobChild.toPublicKey().toString() === bobChildPub.toString()
496
+ console.log('Test 4 - Bidirectional:', test4 ? 'PASS' : 'FAIL')
497
+
498
+ return test1 && verified && test3 && test4
499
+ }
500
+
501
+ // Run tests
502
+ const allTestsPassed = testType42Implementation()
503
+ console.log('All tests passed:', allTestsPassed)
504
+ ```
505
+
506
+ ## Troubleshooting Common Issues
507
+
508
+ ### Issue 1: Key Mismatch
509
+
510
+ ```typescript
511
+ // Problem: Derived keys don't match
512
+ // Solution: Ensure consistent invoice numbers and key order
513
+
514
+ function debugKeyMismatch() {
515
+ const alice = PrivateKey.fromRandom()
516
+ const bob = PrivateKey.fromRandom()
517
+
518
+ // Wrong: Different invoice numbers
519
+ const key1 = alice.deriveChild(bob.toPublicKey(), '2-test-001')
520
+ const key2 = alice.toPublicKey().deriveChild(bob, '2-test-002') // Different number
521
+
522
+ // Correct: Same invoice number
523
+ const key3 = alice.deriveChild(bob.toPublicKey(), '2-test-001')
524
+ const key4 = alice.toPublicKey().deriveChild(bob, '2-test-001') // Same number
525
+
526
+ console.log('Wrong approach - keys match:',
527
+ key1.toPublicKey().toString() === key2.toString())
528
+ console.log('Correct approach - keys match:',
529
+ key3.toPublicKey().toString() === key4.toString())
530
+ }
531
+ ```
532
+
533
+ ### Issue 2: Invalid Public Key
534
+
535
+ ```typescript
536
+ function handleInvalidPublicKey() {
537
+ try {
538
+ const alice = PrivateKey.fromRandom()
539
+ // This would cause an error if publicKey is invalid
540
+ const invalidPub = null as any
541
+
542
+ const derivedKey = alice.deriveChild(invalidPub, '2-test-001')
543
+ } catch (error: any) {
544
+ console.log('Caught invalid public key error:', error.message)
545
+ // Handle the error appropriately
546
+ }
547
+ }
548
+ ```
549
+
550
+ ## Conclusion
551
+
552
+ Type-42 key derivation provides a powerful mechanism for creating shared key universes between two parties. You've learned how to:
553
+
554
+ - Generate master keys and derive child keys using invoice numbers
555
+ - Implement secure message signing and verification
556
+ - Use the "anyone key" for publicly verifiable signatures
557
+ - Apply Type-42 in various Bitcoin applications
558
+ - Handle errors and optimize performance
559
+ - Follow security best practices
560
+
561
+ Type-42 enables sophisticated cryptographic protocols while maintaining the security properties of elliptic curve cryptography. The derived keys are unlinkable to master keys by outside parties, providing privacy and security for Bitcoin applications.
562
+
563
+ ## Further Reading
564
+
565
+ - [ECDH Key Exchange Tutorial](./ecdh-key-exchange.md)
566
+ - [Elliptic Curve Fundamentals Tutorial](./elliptic-curve-fundamentals.md)
567
+ - [BSV Type-42 Documentation](https://docs.bsvblockchain.org/guides/sdks/ts/low-level/type_42)
568
+ - [Messages Reference](../reference/messages.md)
569
+
570
+ ## Integration with `WalletClient`
571
+
572
+ For production applications, the `WalletClient` provides secure key management for Type-42 operations:
573
+
574
+ ```typescript
575
+ // Usage example
576
+ const walletClient = new WalletClient('https://api.bsvwallet.com/v1')
577
+ const alice = walletClient.getPrivateKey('alice')
578
+ const bob = walletClient.getPrivateKey('bob')
579
+ const invoiceNumber = '2-secure-operation-001'
580
+
581
+ const derivedKey = alice.deriveChild(bob.toPublicKey(), invoiceNumber)
582
+ console.log('Derived key:', derivedKey.toHex().substring(0, 16) + '...')