@bsv/sdk 1.6.8 → 1.6.9

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 (603) hide show
  1. package/dist/cjs/package.json +4 -4
  2. package/dist/cjs/src/auth/__tests/Peer.test.js +446 -0
  3. package/dist/cjs/src/auth/__tests/Peer.test.js.map +1 -0
  4. package/dist/cjs/src/auth/__tests/SessionManager.test.js +69 -0
  5. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +1 -0
  6. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +182 -0
  7. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +1 -0
  8. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +184 -0
  9. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +1 -0
  10. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +75 -0
  11. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +1 -0
  12. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +101 -0
  13. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +1 -0
  14. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +106 -0
  15. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +1 -0
  16. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +111 -0
  17. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +1 -0
  18. package/dist/cjs/src/auth/utils/certificateHelpers.js +51 -0
  19. package/dist/cjs/src/auth/utils/certificateHelpers.js.map +1 -0
  20. package/dist/cjs/src/compat/__tests/BSM.test.js +69 -0
  21. package/dist/cjs/src/compat/__tests/BSM.test.js.map +1 -0
  22. package/dist/cjs/src/compat/__tests/ECIES.test.js +115 -0
  23. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +1 -0
  24. package/dist/cjs/src/compat/__tests/HD.test.js +336 -0
  25. package/dist/cjs/src/compat/__tests/HD.test.js.map +1 -0
  26. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +150 -0
  27. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +1 -0
  28. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +175 -0
  29. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +1 -0
  30. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +57 -0
  31. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +1 -0
  32. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +52 -0
  33. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +1 -0
  34. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +1471 -0
  35. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +1 -0
  36. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +78 -0
  37. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +1 -0
  38. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +933 -0
  39. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +1 -0
  40. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +248 -0
  41. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +1 -0
  42. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +36 -0
  43. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +1 -0
  44. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +36 -0
  45. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +1 -0
  46. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +501 -0
  47. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +1 -0
  48. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +185 -0
  49. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +1 -0
  50. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +149 -0
  51. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +1 -0
  52. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +23 -0
  53. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +1 -0
  54. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +268 -0
  55. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +1 -0
  56. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +147 -0
  57. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +1 -0
  58. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +322 -0
  59. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +1 -0
  60. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +145 -0
  61. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +1 -0
  62. package/dist/cjs/src/primitives/__tests/DRBG.test.js +22 -0
  63. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +1 -0
  64. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +170 -0
  65. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +1 -0
  66. package/dist/cjs/src/primitives/__tests/ECDH.test.js +34 -0
  67. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +1 -0
  68. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +89 -0
  69. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +1 -0
  70. package/dist/cjs/src/primitives/__tests/HMAC.test.js +60 -0
  71. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +1 -0
  72. package/dist/cjs/src/primitives/__tests/Hash.test.js +159 -0
  73. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +1 -0
  74. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +122 -0
  75. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +1 -0
  76. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +105 -0
  77. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +1 -0
  78. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +90 -0
  79. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +1 -0
  80. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +83 -0
  81. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +1 -0
  82. package/dist/cjs/src/primitives/__tests/Random.test.js +19 -0
  83. package/dist/cjs/src/primitives/__tests/Random.test.js.map +1 -0
  84. package/dist/cjs/src/primitives/__tests/Reader.test.js +282 -0
  85. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +1 -0
  86. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +224 -0
  87. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +1 -0
  88. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +213 -0
  89. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +1 -0
  90. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +51 -0
  91. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +1 -0
  92. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +43 -0
  93. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +1 -0
  94. package/dist/cjs/src/primitives/__tests/Writer.test.js +176 -0
  95. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +1 -0
  96. package/dist/cjs/src/primitives/__tests/bug-31.test.js +32 -0
  97. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +1 -0
  98. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +3506 -0
  99. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +1 -0
  100. package/dist/cjs/src/primitives/__tests/utils.test.js +110 -0
  101. package/dist/cjs/src/primitives/__tests/utils.test.js.map +1 -0
  102. package/dist/cjs/src/script/__tests/Script.test.js +347 -0
  103. package/dist/cjs/src/script/__tests/Script.test.js.map +1 -0
  104. package/dist/cjs/src/script/__tests/Spend.test.js +282 -0
  105. package/dist/cjs/src/script/__tests/Spend.test.js.map +1 -0
  106. package/dist/cjs/src/script/__tests/SpendComplex.test.js +52 -0
  107. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +1 -0
  108. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +2370 -0
  109. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +1 -0
  110. package/dist/cjs/src/script/__tests/script.valid.vectors.js +1181 -0
  111. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +1 -0
  112. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +2298 -0
  113. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +1 -0
  114. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +161 -0
  115. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +1 -0
  116. package/dist/cjs/src/totp/__tests/totp.test.js +67 -0
  117. package/dist/cjs/src/totp/__tests/totp.test.js.map +1 -0
  118. package/dist/cjs/src/transaction/__tests/Beef.test.js +393 -0
  119. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +1 -0
  120. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +209 -0
  121. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +1 -0
  122. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +219 -0
  123. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +1 -0
  124. package/dist/cjs/src/transaction/__tests/Transaction.test.js +1073 -0
  125. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +1 -0
  126. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +7 -0
  127. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +1 -0
  128. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +11 -0
  129. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +1 -0
  130. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +7 -0
  131. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +1 -0
  132. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +230 -0
  133. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +1 -0
  134. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +296 -0
  135. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +1 -0
  136. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +246 -0
  137. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +1 -0
  138. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +148 -0
  139. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +1 -0
  140. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +155 -0
  141. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +1 -0
  142. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +39 -0
  143. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +1 -0
  144. package/dist/cjs/src/wallet/WalletSigner.js +260 -0
  145. package/dist/cjs/src/wallet/WalletSigner.js.map +1 -0
  146. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +269 -0
  147. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +1 -0
  148. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +114 -0
  149. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +1 -0
  150. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +475 -0
  151. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +1 -0
  152. package/dist/cjs/src/wallet/createActionSdk.js +230 -0
  153. package/dist/cjs/src/wallet/createActionSdk.js.map +1 -0
  154. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +174 -0
  155. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +1 -0
  156. package/dist/cjs/src/wallet/sdk/CertOps.js +181 -0
  157. package/dist/cjs/src/wallet/sdk/CertOps.js.map +1 -0
  158. package/dist/cjs/src/wallet/sdk/Certificate.js +162 -0
  159. package/dist/cjs/src/wallet/sdk/Certificate.js.map +1 -0
  160. package/dist/cjs/src/wallet/sdk/KeyDeriver.js +176 -0
  161. package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +1 -0
  162. package/dist/cjs/src/wallet/sdk/ProtoWallet.js +75 -0
  163. package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +1 -0
  164. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +3 -0
  165. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +1 -0
  166. package/dist/cjs/src/wallet/sdk/WERR_errors.js +107 -0
  167. package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +1 -0
  168. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +3 -0
  169. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +1 -0
  170. package/dist/cjs/src/wallet/sdk/WalletCrypto.js +171 -0
  171. package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +1 -0
  172. package/dist/cjs/src/wallet/sdk/WalletError.js +103 -0
  173. package/dist/cjs/src/wallet/sdk/WalletError.js.map +1 -0
  174. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +3 -0
  175. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +1 -0
  176. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +3 -0
  177. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +1 -0
  178. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +3 -0
  179. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +1 -0
  180. package/dist/cjs/src/wallet/sdk/index.js +31 -0
  181. package/dist/cjs/src/wallet/sdk/index.js.map +1 -0
  182. package/dist/cjs/src/wallet/sdk/types.js +11 -0
  183. package/dist/cjs/src/wallet/sdk/types.js.map +1 -0
  184. package/dist/cjs/src/wallet/sdk/validationHelpers.js +601 -0
  185. package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +1 -0
  186. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +11 -3
  187. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  188. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1 -1
  189. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  190. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +1962 -0
  191. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +1 -0
  192. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +579 -0
  193. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +1 -0
  194. package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js +21 -0
  195. package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js.map +1 -0
  196. package/dist/cjs/src/wallet/utilityHelpers.js +305 -0
  197. package/dist/cjs/src/wallet/utilityHelpers.js.map +1 -0
  198. package/dist/cjs/src/wallet/validationHelpers.js +601 -0
  199. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -0
  200. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  201. package/dist/esm/src/auth/__tests/Peer.test.js +448 -0
  202. package/dist/esm/src/auth/__tests/Peer.test.js.map +1 -0
  203. package/dist/esm/src/auth/__tests/SessionManager.test.js +69 -0
  204. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +1 -0
  205. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +182 -0
  206. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +1 -0
  207. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +184 -0
  208. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +1 -0
  209. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +75 -0
  210. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +1 -0
  211. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +101 -0
  212. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +1 -0
  213. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +106 -0
  214. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +1 -0
  215. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +111 -0
  216. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +1 -0
  217. package/dist/esm/src/auth/utils/certificateHelpers.js +47 -0
  218. package/dist/esm/src/auth/utils/certificateHelpers.js.map +1 -0
  219. package/dist/esm/src/compat/__tests/BSM.test.js +69 -0
  220. package/dist/esm/src/compat/__tests/BSM.test.js.map +1 -0
  221. package/dist/esm/src/compat/__tests/ECIES.test.js +115 -0
  222. package/dist/esm/src/compat/__tests/ECIES.test.js.map +1 -0
  223. package/dist/esm/src/compat/__tests/HD.test.js +336 -0
  224. package/dist/esm/src/compat/__tests/HD.test.js.map +1 -0
  225. package/dist/esm/src/compat/__tests/Mnemonic.test.js +150 -0
  226. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +1 -0
  227. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +175 -0
  228. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +1 -0
  229. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +57 -0
  230. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +1 -0
  231. package/dist/esm/src/messages/__tests/SignedMessage.test.js +52 -0
  232. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +1 -0
  233. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +1471 -0
  234. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +1 -0
  235. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +78 -0
  236. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +1 -0
  237. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +933 -0
  238. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +1 -0
  239. package/dist/esm/src/primitives/__tests/AESGCM.test.js +248 -0
  240. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +1 -0
  241. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +36 -0
  242. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +1 -0
  243. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +36 -0
  244. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +1 -0
  245. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +501 -0
  246. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +1 -0
  247. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +185 -0
  248. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +1 -0
  249. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +149 -0
  250. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +1 -0
  251. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +23 -0
  252. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +1 -0
  253. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +268 -0
  254. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +1 -0
  255. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +147 -0
  256. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +1 -0
  257. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +322 -0
  258. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +1 -0
  259. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +145 -0
  260. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +1 -0
  261. package/dist/esm/src/primitives/__tests/DRBG.test.js +22 -0
  262. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +1 -0
  263. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +170 -0
  264. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +1 -0
  265. package/dist/esm/src/primitives/__tests/ECDH.test.js +34 -0
  266. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +1 -0
  267. package/dist/esm/src/primitives/__tests/ECDSA.test.js +89 -0
  268. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +1 -0
  269. package/dist/esm/src/primitives/__tests/HMAC.test.js +60 -0
  270. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +1 -0
  271. package/dist/esm/src/primitives/__tests/Hash.test.js +159 -0
  272. package/dist/esm/src/primitives/__tests/Hash.test.js.map +1 -0
  273. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +122 -0
  274. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +1 -0
  275. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +105 -0
  276. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +1 -0
  277. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +90 -0
  278. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +1 -0
  279. package/dist/esm/src/primitives/__tests/PublicKey.test.js +83 -0
  280. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +1 -0
  281. package/dist/esm/src/primitives/__tests/Random.test.js +19 -0
  282. package/dist/esm/src/primitives/__tests/Random.test.js.map +1 -0
  283. package/dist/esm/src/primitives/__tests/Reader.test.js +282 -0
  284. package/dist/esm/src/primitives/__tests/Reader.test.js.map +1 -0
  285. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +223 -0
  286. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +1 -0
  287. package/dist/esm/src/primitives/__tests/Schnorr.test.js +213 -0
  288. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +1 -0
  289. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +51 -0
  290. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +1 -0
  291. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +43 -0
  292. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +1 -0
  293. package/dist/esm/src/primitives/__tests/Writer.test.js +176 -0
  294. package/dist/esm/src/primitives/__tests/Writer.test.js.map +1 -0
  295. package/dist/esm/src/primitives/__tests/bug-31.test.js +32 -0
  296. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +1 -0
  297. package/dist/esm/src/primitives/__tests/sighash.vectors.js +3506 -0
  298. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +1 -0
  299. package/dist/esm/src/primitives/__tests/utils.test.js +110 -0
  300. package/dist/esm/src/primitives/__tests/utils.test.js.map +1 -0
  301. package/dist/esm/src/script/__tests/Script.test.js +347 -0
  302. package/dist/esm/src/script/__tests/Script.test.js.map +1 -0
  303. package/dist/esm/src/script/__tests/Spend.test.js +282 -0
  304. package/dist/esm/src/script/__tests/Spend.test.js.map +1 -0
  305. package/dist/esm/src/script/__tests/SpendComplex.test.js +51 -0
  306. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +1 -0
  307. package/dist/esm/src/script/__tests/script.invalid.vectors.js +2370 -0
  308. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +1 -0
  309. package/dist/esm/src/script/__tests/script.valid.vectors.js +1181 -0
  310. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +1 -0
  311. package/dist/esm/src/script/__tests/spend.valid.vectors.js +2298 -0
  312. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +1 -0
  313. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +161 -0
  314. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +1 -0
  315. package/dist/esm/src/totp/__tests/totp.test.js +67 -0
  316. package/dist/esm/src/totp/__tests/totp.test.js.map +1 -0
  317. package/dist/esm/src/transaction/__tests/Beef.test.js +393 -0
  318. package/dist/esm/src/transaction/__tests/Beef.test.js.map +1 -0
  319. package/dist/esm/src/transaction/__tests/MerklePath.test.js +209 -0
  320. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +1 -0
  321. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +219 -0
  322. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +1 -0
  323. package/dist/esm/src/transaction/__tests/Transaction.test.js +1072 -0
  324. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +1 -0
  325. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +7 -0
  326. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +1 -0
  327. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +11 -0
  328. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +1 -0
  329. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +7 -0
  330. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +1 -0
  331. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +230 -0
  332. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +1 -0
  333. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +296 -0
  334. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +1 -0
  335. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +246 -0
  336. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +1 -0
  337. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +148 -0
  338. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +1 -0
  339. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +155 -0
  340. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +1 -0
  341. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +37 -0
  342. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +1 -0
  343. package/dist/esm/src/wallet/WalletSigner.js +263 -0
  344. package/dist/esm/src/wallet/WalletSigner.js.map +1 -0
  345. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +269 -0
  346. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +1 -0
  347. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +113 -0
  348. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +1 -0
  349. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +475 -0
  350. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +1 -0
  351. package/dist/esm/src/wallet/createActionSdk.js +223 -0
  352. package/dist/esm/src/wallet/createActionSdk.js.map +1 -0
  353. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +174 -0
  354. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +1 -0
  355. package/dist/esm/src/wallet/sdk/CertOps.js +181 -0
  356. package/dist/esm/src/wallet/sdk/CertOps.js.map +1 -0
  357. package/dist/esm/src/wallet/sdk/Certificate.js +186 -0
  358. package/dist/esm/src/wallet/sdk/Certificate.js.map +1 -0
  359. package/dist/esm/src/wallet/sdk/KeyDeriver.js +174 -0
  360. package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +1 -0
  361. package/dist/esm/src/wallet/sdk/ProtoWallet.js +71 -0
  362. package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +1 -0
  363. package/dist/esm/src/wallet/sdk/StorageSyncReader.js +2 -0
  364. package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +1 -0
  365. package/dist/esm/src/wallet/sdk/WERR_errors.js +99 -0
  366. package/dist/esm/src/wallet/sdk/WERR_errors.js.map +1 -0
  367. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +2 -0
  368. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +1 -0
  369. package/dist/esm/src/wallet/sdk/WalletCrypto.js +168 -0
  370. package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +1 -0
  371. package/dist/esm/src/wallet/sdk/WalletError.js +100 -0
  372. package/dist/esm/src/wallet/sdk/WalletError.js.map +1 -0
  373. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +2 -0
  374. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +1 -0
  375. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +2 -0
  376. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +1 -0
  377. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +2 -0
  378. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +1 -0
  379. package/dist/esm/src/wallet/sdk/index.js +15 -0
  380. package/dist/esm/src/wallet/sdk/index.js.map +1 -0
  381. package/dist/esm/src/wallet/sdk/types.js +8 -0
  382. package/dist/esm/src/wallet/sdk/types.js.map +1 -0
  383. package/dist/esm/src/wallet/sdk/validationHelpers.js +566 -0
  384. package/dist/esm/src/wallet/sdk/validationHelpers.js.map +1 -0
  385. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +9 -1
  386. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  387. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1 -1
  388. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  389. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +1962 -0
  390. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +1 -0
  391. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +579 -0
  392. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +1 -0
  393. package/dist/esm/src/wallet/substrates/utils/toOriginHeader.js +17 -0
  394. package/dist/esm/src/wallet/substrates/utils/toOriginHeader.js.map +1 -0
  395. package/dist/esm/src/wallet/utilityHelpers.js +275 -0
  396. package/dist/esm/src/wallet/utilityHelpers.js.map +1 -0
  397. package/dist/esm/src/wallet/validationHelpers.js +566 -0
  398. package/dist/esm/src/wallet/validationHelpers.js.map +1 -0
  399. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  400. package/dist/types/src/auth/__tests/Peer.test.d.ts +2 -0
  401. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +1 -0
  402. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +2 -0
  403. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +1 -0
  404. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +2 -0
  405. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +1 -0
  406. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +2 -0
  407. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +1 -0
  408. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +2 -0
  409. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +1 -0
  410. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +2 -0
  411. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +1 -0
  412. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +2 -0
  413. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +1 -0
  414. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +2 -0
  415. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +1 -0
  416. package/dist/types/src/auth/utils/certificateHelpers.d.ts +26 -0
  417. package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +1 -0
  418. package/dist/types/src/compat/__tests/BSM.test.d.ts +2 -0
  419. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +1 -0
  420. package/dist/types/src/compat/__tests/ECIES.test.d.ts +2 -0
  421. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +1 -0
  422. package/dist/types/src/compat/__tests/HD.test.d.ts +2 -0
  423. package/dist/types/src/compat/__tests/HD.test.d.ts.map +1 -0
  424. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +2 -0
  425. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +1 -0
  426. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +11 -0
  427. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +1 -0
  428. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +2 -0
  429. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +1 -0
  430. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +2 -0
  431. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +1 -0
  432. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +2 -0
  433. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +1 -0
  434. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +2 -0
  435. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +1 -0
  436. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +2 -0
  437. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +1 -0
  438. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +2 -0
  439. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +1 -0
  440. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +8 -0
  441. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +1 -0
  442. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +8 -0
  443. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +1 -0
  444. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +2 -0
  445. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +1 -0
  446. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +2 -0
  447. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +1 -0
  448. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +2 -0
  449. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +1 -0
  450. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +2 -0
  451. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +1 -0
  452. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +15 -0
  453. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +1 -0
  454. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +2 -0
  455. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +1 -0
  456. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +2 -0
  457. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +1 -0
  458. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +2 -0
  459. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +1 -0
  460. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +2 -0
  461. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +1 -0
  462. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +10 -0
  463. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +1 -0
  464. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +2 -0
  465. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +1 -0
  466. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +2 -0
  467. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +1 -0
  468. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +2 -0
  469. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +1 -0
  470. package/dist/types/src/primitives/__tests/Hash.test.d.ts +2 -0
  471. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +1 -0
  472. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +68 -0
  473. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +1 -0
  474. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +2 -0
  475. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +1 -0
  476. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +2 -0
  477. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +1 -0
  478. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +2 -0
  479. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +1 -0
  480. package/dist/types/src/primitives/__tests/Random.test.d.ts +2 -0
  481. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +1 -0
  482. package/dist/types/src/primitives/__tests/Reader.test.d.ts +2 -0
  483. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +1 -0
  484. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +2 -0
  485. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +1 -0
  486. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +2 -0
  487. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +1 -0
  488. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +2 -0
  489. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +1 -0
  490. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +20 -0
  491. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +1 -0
  492. package/dist/types/src/primitives/__tests/Writer.test.d.ts +2 -0
  493. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +1 -0
  494. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +2 -0
  495. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +1 -0
  496. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +3 -0
  497. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +1 -0
  498. package/dist/types/src/primitives/__tests/utils.test.d.ts +2 -0
  499. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +1 -0
  500. package/dist/types/src/script/__tests/Script.test.d.ts +2 -0
  501. package/dist/types/src/script/__tests/Script.test.d.ts.map +1 -0
  502. package/dist/types/src/script/__tests/Spend.test.d.ts +2 -0
  503. package/dist/types/src/script/__tests/Spend.test.d.ts.map +1 -0
  504. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +2 -0
  505. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +1 -0
  506. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +3 -0
  507. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +1 -0
  508. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +3 -0
  509. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +1 -0
  510. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +3 -0
  511. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +1 -0
  512. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +2 -0
  513. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +1 -0
  514. package/dist/types/src/totp/__tests/totp.test.d.ts +2 -0
  515. package/dist/types/src/totp/__tests/totp.test.d.ts.map +1 -0
  516. package/dist/types/src/transaction/__tests/Beef.test.d.ts +2 -0
  517. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +1 -0
  518. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +2 -0
  519. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +1 -0
  520. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +2 -0
  521. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +1 -0
  522. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +2 -0
  523. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +1 -0
  524. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +6 -0
  525. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +1 -0
  526. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +6 -0
  527. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +1 -0
  528. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +5 -0
  529. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +1 -0
  530. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +3 -0
  531. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +1 -0
  532. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +3 -0
  533. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +1 -0
  534. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +2 -0
  535. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +1 -0
  536. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +2 -0
  537. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +1 -0
  538. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +2 -0
  539. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +1 -0
  540. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +25 -0
  541. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +1 -0
  542. package/dist/types/src/wallet/WalletSigner.d.ts +110 -0
  543. package/dist/types/src/wallet/WalletSigner.d.ts.map +1 -0
  544. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +2 -0
  545. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +1 -0
  546. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +2 -0
  547. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +1 -0
  548. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +2 -0
  549. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +1 -0
  550. package/dist/types/src/wallet/createActionSdk.d.ts +8 -0
  551. package/dist/types/src/wallet/createActionSdk.d.ts.map +1 -0
  552. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +94 -0
  553. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +1 -0
  554. package/dist/types/src/wallet/sdk/CertOps.d.ts +63 -0
  555. package/dist/types/src/wallet/sdk/CertOps.d.ts.map +1 -0
  556. package/dist/types/src/wallet/sdk/Certificate.d.ts +77 -0
  557. package/dist/types/src/wallet/sdk/Certificate.d.ts.map +1 -0
  558. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +128 -0
  559. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +1 -0
  560. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +30 -0
  561. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +1 -0
  562. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +102 -0
  563. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +1 -0
  564. package/dist/types/src/wallet/sdk/WERR_errors.d.ts +84 -0
  565. package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +1 -0
  566. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +1036 -0
  567. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +1 -0
  568. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +31 -0
  569. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +1 -0
  570. package/dist/types/src/wallet/sdk/WalletError.d.ts +46 -0
  571. package/dist/types/src/wallet/sdk/WalletError.d.ts.map +1 -0
  572. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +293 -0
  573. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +1 -0
  574. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +48 -0
  575. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +1 -0
  576. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +296 -0
  577. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +1 -0
  578. package/dist/types/src/wallet/sdk/index.d.ts +15 -0
  579. package/dist/types/src/wallet/sdk/index.d.ts.map +1 -0
  580. package/dist/types/src/wallet/sdk/types.d.ts +56 -0
  581. package/dist/types/src/wallet/sdk/types.d.ts.map +1 -0
  582. package/dist/types/src/wallet/sdk/validationHelpers.d.ts +301 -0
  583. package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +1 -0
  584. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  585. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +2 -0
  586. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +1 -0
  587. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +5 -0
  588. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +1 -0
  589. package/dist/types/src/wallet/substrates/utils/toOriginHeader.d.ts +2 -0
  590. package/dist/types/src/wallet/substrates/utils/toOriginHeader.d.ts.map +1 -0
  591. package/dist/types/src/wallet/utilityHelpers.d.ts +142 -0
  592. package/dist/types/src/wallet/utilityHelpers.d.ts.map +1 -0
  593. package/dist/types/src/wallet/validationHelpers.d.ts +301 -0
  594. package/dist/types/src/wallet/validationHelpers.d.ts.map +1 -0
  595. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  596. package/dist/umd/bundle.js +1 -1
  597. package/docs/wallet.md +9 -0
  598. package/package.json +4 -4
  599. package/src/transaction/__tests/Transaction.test.ts +1 -1
  600. package/src/wallet/substrates/HTTPWalletJSON.ts +11 -1
  601. package/src/wallet/substrates/WalletWireProcessor.ts +1 -1
  602. package/src/wallet/substrates/__tests/toOriginHeader.test.ts +34 -0
  603. package/src/wallet/substrates/utils/toOriginHeader.ts +15 -0
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../../../auth/index");
4
+ const CompletedProtoWallet_1 = require("../../../auth/certificates/__tests/CompletedProtoWallet");
5
+ const index_2 = require("../../../primitives/index");
6
+ describe("Certificate", () => {
7
+ // Sample data for testing
8
+ const sampleType = index_2.Utils.toBase64(new Array(32).fill(1));
9
+ const sampleSerialNumber = index_2.Utils.toBase64(new Array(32).fill(2));
10
+ const sampleSubjectPrivateKey = index_2.PrivateKey.fromRandom();
11
+ const sampleSubjectPubKey = sampleSubjectPrivateKey.toPublicKey().toString();
12
+ const sampleCertifierPrivateKey = index_2.PrivateKey.fromRandom();
13
+ const sampleCertifierPubKey = sampleCertifierPrivateKey
14
+ .toPublicKey()
15
+ .toString();
16
+ const sampleRevocationOutpoint = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1";
17
+ const sampleFields = {
18
+ name: "Alice",
19
+ email: "alice@example.com",
20
+ organization: "Example Corp",
21
+ };
22
+ const sampleFieldsEmpty = {};
23
+ it("should construct a Certificate with valid data", () => {
24
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
25
+ );
26
+ expect(certificate.type).toEqual(sampleType);
27
+ expect(certificate.serialNumber).toEqual(sampleSerialNumber);
28
+ expect(certificate.subject).toEqual(sampleSubjectPubKey);
29
+ expect(certificate.certifier).toEqual(sampleCertifierPubKey);
30
+ expect(certificate.revocationOutpoint).toEqual(sampleRevocationOutpoint);
31
+ expect(certificate.signature).toBeUndefined();
32
+ expect(certificate.fields).toEqual(sampleFields);
33
+ });
34
+ it("should serialize and deserialize the Certificate without signature", () => {
35
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
36
+ );
37
+ const serialized = certificate.toBinary(false); // Exclude signature
38
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
39
+ expect(deserializedCertificate.type).toEqual(sampleType);
40
+ expect(deserializedCertificate.serialNumber).toEqual(sampleSerialNumber);
41
+ expect(deserializedCertificate.subject).toEqual(sampleSubjectPubKey);
42
+ expect(deserializedCertificate.certifier).toEqual(sampleCertifierPubKey);
43
+ expect(deserializedCertificate.revocationOutpoint).toEqual(sampleRevocationOutpoint);
44
+ expect(deserializedCertificate.signature).toBeUndefined();
45
+ expect(deserializedCertificate.fields).toEqual(sampleFields);
46
+ });
47
+ it("should serialize and deserialize the Certificate with signature", async () => {
48
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
49
+ );
50
+ // Sign the certificate
51
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
52
+ await certificate.sign(certifierWallet);
53
+ const serialized = certificate.toBinary(true); // Include signature
54
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
55
+ expect(deserializedCertificate.type).toEqual(sampleType);
56
+ expect(deserializedCertificate.serialNumber).toEqual(sampleSerialNumber);
57
+ expect(deserializedCertificate.subject).toEqual(sampleSubjectPubKey);
58
+ expect(deserializedCertificate.certifier).toEqual(sampleCertifierPubKey);
59
+ expect(deserializedCertificate.revocationOutpoint).toEqual(sampleRevocationOutpoint);
60
+ expect(deserializedCertificate.signature).toEqual(certificate.signature);
61
+ expect(deserializedCertificate.fields).toEqual(sampleFields);
62
+ });
63
+ it("should sign the Certificate and verify the signature successfully", async () => {
64
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
65
+ );
66
+ // Sign the certificate
67
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
68
+ await certificate.sign(certifierWallet);
69
+ // Verify the signature
70
+ const isValid = await certificate.verify();
71
+ expect(isValid).toBe(true);
72
+ });
73
+ it("should fail verification if the Certificate is tampered with", async () => {
74
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
75
+ );
76
+ // Sign the certificate
77
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
78
+ await certificate.sign(certifierWallet);
79
+ // Tamper with the certificate (modify a field)
80
+ certificate.fields.email = "attacker@example.com";
81
+ // Verify the signature
82
+ await expect(certificate.verify()).rejects.toThrow();
83
+ });
84
+ it("should fail verification if the signature is missing", async () => {
85
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
86
+ );
87
+ // Verify the signature
88
+ await expect(certificate.verify()).rejects.toThrow();
89
+ });
90
+ it("should fail verification if the signature is incorrect", async () => {
91
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, "3045022100cde229279465bb91992ccbc30bf6ed4eb8cdd9d517f31b30ff778d500d5400010220134f0e4065984f8668a642a5ad7a80886265f6aaa56d215d6400c216a4802177" // Incorrect signature
92
+ );
93
+ // Verify the signature
94
+ await expect(certificate.verify()).rejects.toThrowErrorMatchingInlineSnapshot(`"Signature is not valid"`);
95
+ });
96
+ it("should handle certificates with empty fields", async () => {
97
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFieldsEmpty, undefined // No signature
98
+ );
99
+ // Sign the certificate
100
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
101
+ await certificate.sign(certifierWallet);
102
+ // Serialize and deserialize
103
+ const serialized = certificate.toBinary(true);
104
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
105
+ expect(deserializedCertificate.fields).toEqual(sampleFieldsEmpty);
106
+ // Verify the signature
107
+ const isValid = await deserializedCertificate.verify();
108
+ expect(isValid).toBe(true);
109
+ });
110
+ it("should correctly handle serialization/deserialization when signature is excluded", () => {
111
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, "deadbeef1234" // Placeholder signature
112
+ );
113
+ // Serialize without signature
114
+ const serialized = certificate.toBinary(false);
115
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
116
+ expect(deserializedCertificate.signature).toBeUndefined(); // Signature should be empty
117
+ expect(deserializedCertificate.fields).toEqual(sampleFields);
118
+ });
119
+ it("should correctly handle certificates with long field names and values", async () => {
120
+ const longFieldName = "longFieldName_".repeat(10); // Exceeding typical lengths
121
+ const longFieldValue = "longFieldValue_".repeat(20);
122
+ const fields = {
123
+ [longFieldName]: longFieldValue,
124
+ };
125
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, fields, undefined // No signature
126
+ );
127
+ // Sign the certificate
128
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
129
+ await certificate.sign(certifierWallet);
130
+ // Serialize and deserialize
131
+ const serialized = certificate.toBinary(true);
132
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
133
+ expect(deserializedCertificate.fields).toEqual(fields);
134
+ // Verify the signature
135
+ const isValid = await deserializedCertificate.verify();
136
+ expect(isValid).toBe(true);
137
+ });
138
+ it("should correctly serialize and deserialize the revocationOutpoint", () => {
139
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, sampleFields, undefined // No signature
140
+ );
141
+ const serialized = certificate.toBinary(false);
142
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
143
+ expect(deserializedCertificate.revocationOutpoint).toEqual(sampleRevocationOutpoint);
144
+ });
145
+ it("should correctly handle certificates with no fields", async () => {
146
+ const certificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, sampleRevocationOutpoint, {}, // No fields
147
+ undefined // No signature
148
+ );
149
+ // Sign the certificate
150
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
151
+ await certificate.sign(certifierWallet);
152
+ // Serialize and deserialize
153
+ const serialized = certificate.toBinary(true);
154
+ const deserializedCertificate = index_1.Certificate.fromBinary(serialized);
155
+ expect(deserializedCertificate.fields).toEqual({});
156
+ // Verify the signature
157
+ const isValid = await deserializedCertificate.verify();
158
+ expect(isValid).toBe(true);
159
+ });
160
+ it("should throw if already signed, and should update the certifier field if it differs from the wallet's public key", async () => {
161
+ // Scenario 1: Certificate already has a signature
162
+ const preSignedCertificate = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, sampleCertifierPubKey, // We'll pretend this was signed by them
163
+ sampleRevocationOutpoint, sampleFields, "deadbeef" // Already has a placeholder signature
164
+ );
165
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(sampleCertifierPrivateKey);
166
+ // Trying to sign again should throw
167
+ await expect(preSignedCertificate.sign(certifierWallet)).rejects.toThrow("Certificate has already been signed!");
168
+ // Scenario 2: The certifier property is set to something different from the wallet's public key
169
+ const mismatchedCertifierPubKey = index_2.PrivateKey.fromRandom()
170
+ .toPublicKey()
171
+ .toString();
172
+ const certificateWithMismatch = new index_1.Certificate(sampleType, sampleSerialNumber, sampleSubjectPubKey, mismatchedCertifierPubKey, // Different from actual wallet key
173
+ sampleRevocationOutpoint, sampleFields);
174
+ // Sign the certificate; it should automatically update
175
+ // the certifier field to match the wallet's actual public key
176
+ const certifierPubKey = (await certifierWallet.getPublicKey({ identityKey: true })).publicKey;
177
+ await certificateWithMismatch.sign(certifierWallet);
178
+ expect(certificateWithMismatch.certifier).toBe(certifierPubKey);
179
+ expect(await certificateWithMismatch.verify()).toBe(true);
180
+ });
181
+ });
182
+ //# sourceMappingURL=Certificate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Certificate.test.js","sourceRoot":"","sources":["../../../../../../src/auth/certificates/__tests/Certificate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const MasterCertificate_1 = require("../../../auth/certificates/MasterCertificate");
4
+ const VerifiableCertificate_1 = require("../../../auth/certificates/VerifiableCertificate");
5
+ const mod_1 = require("../../../../mod");
6
+ const CompletedProtoWallet_1 = require("../../../auth/certificates/__tests/CompletedProtoWallet");
7
+ describe('MasterCertificate', () => {
8
+ const subjectPrivateKey = mod_1.PrivateKey.fromRandom();
9
+ const certifierPrivateKey = mod_1.PrivateKey.fromRandom();
10
+ // A mock revocation outpoint for testing
11
+ const mockRevocationOutpoint = 'deadbeefdeadbeefdeadbeefdeadbeef00000000000000000000000000000000.1';
12
+ // Arbitrary certificate data (in plaintext)
13
+ const plaintextFields = {
14
+ name: 'Alice',
15
+ email: 'alice@example.com',
16
+ department: 'Engineering'
17
+ };
18
+ const subjectWallet = new CompletedProtoWallet_1.CompletedProtoWallet(subjectPrivateKey);
19
+ const certifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(certifierPrivateKey);
20
+ let subjectIdentityKey;
21
+ let certifierIdentityKey;
22
+ beforeAll(async () => {
23
+ subjectIdentityKey = (await subjectWallet.getPublicKey({ identityKey: true })).publicKey;
24
+ certifierIdentityKey = (await certifierWallet.getPublicKey({ identityKey: true })).publicKey;
25
+ });
26
+ describe('constructor', () => {
27
+ it('should construct a MasterCertificate successfully when masterKeyring is valid', () => {
28
+ // Prepare a minimal valid MasterCertificate
29
+ const fieldSymKey = mod_1.SymmetricKey.fromRandom();
30
+ const encryptedFieldValue = mod_1.Utils.toBase64(fieldSymKey.encrypt(mod_1.Utils.toArray('Alice', 'utf8')));
31
+ const encryptedKeyForSubject = mod_1.Utils.toBase64([0, 1, 2, 3]);
32
+ // We assume we have the same fieldName in both `fields` and `masterKeyring`.
33
+ const fields = { name: encryptedFieldValue };
34
+ const masterKeyring = { name: encryptedKeyForSubject };
35
+ const certificate = new MasterCertificate_1.MasterCertificate(mod_1.Utils.toBase64((0, mod_1.Random)(16)), // type
36
+ mod_1.Utils.toBase64((0, mod_1.Random)(16)), // serialNumber
37
+ subjectIdentityKey, certifierIdentityKey, mockRevocationOutpoint, fields, masterKeyring);
38
+ expect(certificate).toBeInstanceOf(MasterCertificate_1.MasterCertificate);
39
+ expect(certificate.fields).toEqual(fields);
40
+ expect(certificate.masterKeyring).toEqual(masterKeyring);
41
+ expect(certificate.subject).toEqual(subjectIdentityKey);
42
+ expect(certificate.certifier).toEqual(certifierIdentityKey);
43
+ });
44
+ it('should throw if masterKeyring is missing a key for any field', () => {
45
+ const fields = { name: 'encrypted_value' };
46
+ const masterKeyring = {}; // intentionally empty
47
+ expect(() => {
48
+ new MasterCertificate_1.MasterCertificate(mod_1.Utils.toBase64((0, mod_1.Random)(16)), // type
49
+ mod_1.Utils.toBase64((0, mod_1.Random)(16)), // serialNumber
50
+ subjectIdentityKey, certifierIdentityKey, mockRevocationOutpoint, fields, masterKeyring);
51
+ }).toThrowError(/Master keyring must contain a value for every field/);
52
+ });
53
+ });
54
+ describe('decryptFields (static)', () => {
55
+ it('should decrypt all fields correctly using subject wallet', async () => {
56
+ // Issue a certificate for the subject, which includes a valid masterKeyring
57
+ const certificate = await MasterCertificate_1.MasterCertificate.issueCertificateForSubject(certifierWallet, subjectIdentityKey, plaintextFields, 'TEST_CERT');
58
+ // Now subject should be able to decrypt all fields via static method
59
+ const decrypted = await MasterCertificate_1.MasterCertificate.decryptFields(subjectWallet, certificate.masterKeyring, certificate.fields, certificate.certifier // because certifier was the encryption counterparty
60
+ );
61
+ expect(decrypted).toEqual(plaintextFields);
62
+ });
63
+ it('should throw if masterKeyring is empty or invalid', async () => {
64
+ // Manually create a MasterCertificate with an empty masterKeyring
65
+ expect(() => new MasterCertificate_1.MasterCertificate(mod_1.Utils.toBase64((0, mod_1.Random)(16)), mod_1.Utils.toBase64((0, mod_1.Random)(16)), subjectIdentityKey, certifierIdentityKey, mockRevocationOutpoint, { name: mod_1.Utils.toBase64([1, 2, 3]) }, {})).toThrow('Master keyring must contain a value for every field. Missing key for field: "name"');
66
+ });
67
+ it('should throw if decryption fails for any field', async () => {
68
+ // Manually craft a scenario where the key is incorrect
69
+ const badKeyMasterKeyring = mod_1.Utils.toBase64([9, 9, 9, 9]); // Not the correct key
70
+ const badKeyCertificate = new MasterCertificate_1.MasterCertificate(mod_1.Utils.toBase64((0, mod_1.Random)(16)), mod_1.Utils.toBase64((0, mod_1.Random)(16)), subjectIdentityKey, certifierIdentityKey, mockRevocationOutpoint, {
71
+ name: mod_1.Utils.toBase64(mod_1.SymmetricKey.fromRandom().encrypt(mod_1.Utils.toArray('Alice', 'utf8')))
72
+ }, { name: badKeyMasterKeyring });
73
+ await expect(MasterCertificate_1.MasterCertificate.decryptFields(subjectWallet, badKeyCertificate.masterKeyring, badKeyCertificate.fields, badKeyCertificate.certifier)).rejects.toThrow('Failed to decrypt all master certificate fields.');
74
+ });
75
+ });
76
+ describe('createKeyringForVerifier (static)', () => {
77
+ const verifierPrivateKey = mod_1.PrivateKey.fromRandom();
78
+ const verifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(verifierPrivateKey);
79
+ let verifierIdentityKey;
80
+ let issuedCert;
81
+ beforeAll(async () => {
82
+ verifierIdentityKey = (await verifierWallet.getPublicKey({ identityKey: true })).publicKey;
83
+ // Issue a certificate to reuse in tests
84
+ issuedCert = await MasterCertificate_1.MasterCertificate.issueCertificateForSubject(certifierWallet, subjectIdentityKey, plaintextFields, 'TEST_CERT');
85
+ });
86
+ it('should create a verifier keyring for specified fields', async () => {
87
+ // We only want to share "name" with the verifier
88
+ const fieldsToReveal = ['name'];
89
+ const keyringForVerifier = await MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, issuedCert.certifier, // the original certifier
90
+ verifierIdentityKey, // the new verifier
91
+ issuedCert.fields, // encrypted fields
92
+ fieldsToReveal, issuedCert.masterKeyring, issuedCert.serialNumber);
93
+ // The new keyring should only contain "name"
94
+ expect(Object.keys(keyringForVerifier)).toHaveLength(1);
95
+ expect(keyringForVerifier).toHaveProperty('name');
96
+ // Now let's create a VerifiableCertificate for the verifier
97
+ const verifiableCert = new VerifiableCertificate_1.VerifiableCertificate(issuedCert.type, issuedCert.serialNumber, issuedCert.subject, issuedCert.certifier, issuedCert.revocationOutpoint, issuedCert.fields, keyringForVerifier, issuedCert.signature);
98
+ // The verifier should successfully decrypt the "name" field
99
+ const decrypted = await verifiableCert.decryptFields(verifierWallet);
100
+ expect(decrypted).toEqual({ name: plaintextFields.name });
101
+ });
102
+ it('should throw if fields to reveal are not a subset of the certificate fields', async () => {
103
+ await expect(MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, issuedCert.certifier, verifierIdentityKey, issuedCert.fields, ['nonexistent_field'], issuedCert.masterKeyring, issuedCert.serialNumber)).rejects.toThrow(/Fields to reveal must be a subset of the certificate fields\. Missing the "nonexistent_field" field\./);
104
+ });
105
+ it('should throw if the master key fails to decrypt the corresponding field', async () => {
106
+ // We'll tamper with the certificate's masterKeyring so that a field key is invalid
107
+ const tamperedCert = new MasterCertificate_1.MasterCertificate(issuedCert.type, issuedCert.serialNumber, issuedCert.subject, issuedCert.certifier, issuedCert.revocationOutpoint, issuedCert.fields, {
108
+ // Tamper: replace 'name' field with nonsense
109
+ name: mod_1.Utils.toBase64([66, 66, 66]),
110
+ email: issuedCert.masterKeyring.email,
111
+ department: issuedCert.masterKeyring.department
112
+ }, issuedCert.signature);
113
+ await expect(MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, tamperedCert.certifier, verifierIdentityKey, tamperedCert.fields, ['name'], tamperedCert.masterKeyring, tamperedCert.serialNumber)).rejects.toThrow('Failed to decrypt certificate field!');
114
+ });
115
+ it('should support optional originator parameter', async () => {
116
+ const fieldsToReveal = ['name'];
117
+ const keyringForVerifier = await MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, issuedCert.certifier, verifierIdentityKey, issuedCert.fields, fieldsToReveal, issuedCert.masterKeyring, issuedCert.serialNumber, 'my-originator');
118
+ expect(keyringForVerifier).toHaveProperty('name');
119
+ });
120
+ it('should support counterparty of "anyone" or "self"', async () => {
121
+ const fieldsToReveal = ['name'];
122
+ // "anyone"
123
+ const anyoneKeyring = await MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, issuedCert.certifier, 'anyone', issuedCert.fields, fieldsToReveal, issuedCert.masterKeyring, issuedCert.serialNumber, 'my-originator');
124
+ expect(anyoneKeyring).toHaveProperty('name');
125
+ // "self"
126
+ const selfKeyring = await MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, issuedCert.certifier, 'self', issuedCert.fields, fieldsToReveal, issuedCert.masterKeyring, issuedCert.serialNumber, 'my-originator');
127
+ expect(selfKeyring).toHaveProperty('name');
128
+ });
129
+ });
130
+ describe('issueCertificateForSubject (static)', () => {
131
+ it('should issue a valid MasterCertificate for the given subject', async () => {
132
+ const newPlaintextFields = {
133
+ project: 'Top Secret',
134
+ clearanceLevel: 'High'
135
+ };
136
+ const revocationFn = jest.fn().mockResolvedValue(mockRevocationOutpoint);
137
+ const newCert = await MasterCertificate_1.MasterCertificate.issueCertificateForSubject(certifierWallet, subjectIdentityKey, newPlaintextFields, 'TEST_CERT', revocationFn);
138
+ expect(newCert).toBeInstanceOf(MasterCertificate_1.MasterCertificate);
139
+ // The certificate's fields should be encrypted base64
140
+ for (const fieldName in newPlaintextFields) {
141
+ expect(newCert.fields[fieldName]).toMatch(/^[A-Za-z0-9+/]+=*$/); // quick base64 check
142
+ }
143
+ // The masterKeyring should also contain base64 strings
144
+ for (const fieldName in newPlaintextFields) {
145
+ expect(newCert.masterKeyring[fieldName]).toMatch(/^[A-Za-z0-9+/]+=*$/);
146
+ }
147
+ // Check revocation outpoint is from mock
148
+ expect(newCert.revocationOutpoint).toEqual(mockRevocationOutpoint);
149
+ // Check we have a signature
150
+ expect(newCert.signature).toBeDefined();
151
+ // Check that the revocationFn was called
152
+ expect(revocationFn).toHaveBeenCalledWith(newCert.serialNumber);
153
+ });
154
+ it('should allow passing a custom serial number when issuing the certificate', async () => {
155
+ const customSerialNumber = mod_1.Utils.toBase64((0, mod_1.Random)(32));
156
+ const newPlaintextFields = { status: 'Approved' };
157
+ const newCert = await MasterCertificate_1.MasterCertificate.issueCertificateForSubject(certifierWallet, subjectIdentityKey, newPlaintextFields, 'TEST_CERT', undefined, // No custom revocation function
158
+ customSerialNumber // Pass our custom serial number
159
+ );
160
+ expect(newCert).toBeInstanceOf(MasterCertificate_1.MasterCertificate);
161
+ expect(newCert.serialNumber).toEqual(customSerialNumber); // Must match exactly
162
+ // Check encryption
163
+ for (const fieldName in newPlaintextFields) {
164
+ expect(newCert.fields[fieldName]).toMatch(/^[A-Za-z0-9+/]+=*$/);
165
+ }
166
+ });
167
+ it('should allow issuing a self-signed certificate and decrypt it with the same wallet', async () => {
168
+ // In a self-signed scenario, the subject and certifier are the same
169
+ const subjectWallet = new CompletedProtoWallet_1.CompletedProtoWallet(mod_1.PrivateKey.fromRandom());
170
+ // Some sample fields
171
+ const selfSignedFields = {
172
+ owner: 'Bob',
173
+ organization: 'SelfCo'
174
+ };
175
+ // Issue the certificate for "self"
176
+ const selfSignedCert = await MasterCertificate_1.MasterCertificate.issueCertificateForSubject(subjectWallet, // act as certifier
177
+ 'self', selfSignedFields, 'SELF_SIGNED_TEST');
178
+ // Now we attempt to decrypt the fields with the same wallet
179
+ const decrypted = await MasterCertificate_1.MasterCertificate.decryptFields(subjectWallet, selfSignedCert.masterKeyring, selfSignedCert.fields, 'self');
180
+ expect(decrypted).toEqual(selfSignedFields);
181
+ });
182
+ });
183
+ });
184
+ //# sourceMappingURL=MasterCertificate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MasterCertificate.test.js","sourceRoot":"","sources":["../../../../../../src/auth/certificates/__tests/MasterCertificate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const VerifiableCertificate_1 = require("../../../auth/certificates/VerifiableCertificate");
4
+ const mod_1 = require("../../../../mod");
5
+ const CompletedProtoWallet_1 = require("../../../auth/certificates/__tests/CompletedProtoWallet");
6
+ const MasterCertificate_1 = require("../../../auth/certificates/MasterCertificate");
7
+ const index_1 = require("../../../wallet/index");
8
+ describe('VerifiableCertificate', () => {
9
+ const subjectPrivateKey = mod_1.PrivateKey.fromRandom();
10
+ const subjectIdentityKey = subjectPrivateKey.toPublicKey().toString();
11
+ const certifierPrivateKey = mod_1.PrivateKey.fromRandom();
12
+ const certifierIdentityKey = certifierPrivateKey.toPublicKey().toString();
13
+ const verifierPrivateKey = mod_1.PrivateKey.fromRandom();
14
+ const verifierIdentityKey = verifierPrivateKey.toPublicKey().toString();
15
+ const subjectWallet = new CompletedProtoWallet_1.CompletedProtoWallet(subjectPrivateKey);
16
+ const verifierWallet = new CompletedProtoWallet_1.CompletedProtoWallet(verifierPrivateKey);
17
+ const sampleType = mod_1.Utils.toBase64(new Array(32).fill(1));
18
+ const sampleSerialNumber = mod_1.Utils.toBase64(new Array(32).fill(2));
19
+ const sampleRevocationOutpoint = 'deadbeefdeadbeefdeadbeefdeadbeef00000000000000000000000000000000.1';
20
+ const plaintextFields = {
21
+ name: 'Alice',
22
+ email: 'alice@example.com',
23
+ organization: 'Example Corp'
24
+ };
25
+ let verifiableCert;
26
+ beforeEach(async () => {
27
+ // For each test, we'll build a fresh VerifiableCertificate with valid encryption
28
+ const { certificateFields, masterKeyring } = await MasterCertificate_1.MasterCertificate.createCertificateFields(subjectWallet, certifierIdentityKey, plaintextFields);
29
+ const keyringForVerifier = await MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, certifierIdentityKey, verifierIdentityKey, certificateFields, Object.keys(certificateFields), masterKeyring, sampleSerialNumber);
30
+ verifiableCert = new VerifiableCertificate_1.VerifiableCertificate(sampleType, sampleSerialNumber, subjectIdentityKey, certifierIdentityKey, sampleRevocationOutpoint, certificateFields, keyringForVerifier);
31
+ });
32
+ describe('constructor', () => {
33
+ it('should create a VerifiableCertificate with all required properties', () => {
34
+ expect(verifiableCert).toBeInstanceOf(VerifiableCertificate_1.VerifiableCertificate);
35
+ expect(verifiableCert.type).toEqual(sampleType);
36
+ expect(verifiableCert.serialNumber).toEqual(sampleSerialNumber);
37
+ expect(verifiableCert.subject).toEqual(subjectIdentityKey);
38
+ expect(verifiableCert.certifier).toEqual(certifierIdentityKey);
39
+ expect(verifiableCert.revocationOutpoint).toEqual(sampleRevocationOutpoint);
40
+ expect(verifiableCert.fields).toBeDefined();
41
+ expect(verifiableCert.keyring).toBeDefined();
42
+ });
43
+ });
44
+ describe('decryptFields', () => {
45
+ it('should decrypt fields successfully when provided the correct verifier wallet and keyring', async () => {
46
+ const decrypted = await verifiableCert.decryptFields(verifierWallet);
47
+ expect(decrypted).toEqual(plaintextFields);
48
+ });
49
+ it('should fail if the verifier wallet does not have the correct private key (wrong key)', async () => {
50
+ const wrongPrivateKey = mod_1.PrivateKey.fromRandom();
51
+ const wrongWallet = new CompletedProtoWallet_1.CompletedProtoWallet(wrongPrivateKey);
52
+ await expect(verifiableCert.decryptFields(wrongWallet)).rejects.toThrow(/Failed to decrypt selectively revealed certificate fields using keyring/);
53
+ });
54
+ it('should fail if the keyring is empty or missing keys', async () => {
55
+ // Create a new VerifiableCertificate but with an empty keyring
56
+ const fields = verifiableCert.fields;
57
+ const emptyKeyringCert = new VerifiableCertificate_1.VerifiableCertificate(verifiableCert.type, verifiableCert.serialNumber, verifiableCert.subject, verifiableCert.certifier, verifiableCert.revocationOutpoint, fields, {}, // empty
58
+ verifiableCert.signature);
59
+ await expect(emptyKeyringCert.decryptFields(verifierWallet)).rejects.toThrow('A keyring is required to decrypt certificate fields for the verifier.');
60
+ });
61
+ it('should fail if the encrypted field or its key is tampered', async () => {
62
+ // Tamper the keyring so it doesn't match the field encryption
63
+ verifiableCert.keyring.name = mod_1.Utils.toBase64([9, 9, 9, 9]);
64
+ await expect(verifiableCert.decryptFields(verifierWallet)).rejects.toThrow(/Failed to decrypt selectively revealed certificate fields using keyring/);
65
+ });
66
+ it('should be able to decrypt fields using the anyone wallet', async () => {
67
+ const { certificateFields, masterKeyring } = await MasterCertificate_1.MasterCertificate.createCertificateFields(subjectWallet, certifierIdentityKey, plaintextFields);
68
+ const keyringForVerifier = await MasterCertificate_1.MasterCertificate.createKeyringForVerifier(subjectWallet, certifierIdentityKey, 'anyone', certificateFields, Object.keys(certificateFields), masterKeyring, sampleSerialNumber);
69
+ verifiableCert = new VerifiableCertificate_1.VerifiableCertificate(sampleType, sampleSerialNumber, subjectIdentityKey, 'anyone', sampleRevocationOutpoint, certificateFields, keyringForVerifier);
70
+ const decrypted = await verifiableCert.decryptFields(new index_1.ProtoWallet('anyone'));
71
+ expect(decrypted).toEqual(plaintextFields);
72
+ });
73
+ });
74
+ });
75
+ //# sourceMappingURL=VerifiableCertificate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifiableCertificate.test.js","sourceRoot":"","sources":["../../../../../../src/auth/certificates/__tests/VerifiableCertificate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../../../primitives/index");
4
+ const createNonce_1 = require("../../../auth/utils/createNonce");
5
+ const verifyNonce_1 = require("../../../auth/utils/verifyNonce");
6
+ const CompletedProtoWallet_1 = require("../../../auth/certificates/__tests/CompletedProtoWallet");
7
+ describe('createNonce', () => {
8
+ let mockWallet;
9
+ beforeEach(() => {
10
+ mockWallet = {
11
+ createHmac: jest.fn().mockResolvedValue({ hmac: new Uint8Array(16) })
12
+ };
13
+ });
14
+ afterEach(() => {
15
+ jest.clearAllMocks();
16
+ });
17
+ it('throws an error if wallet fails to create HMAC', async () => {
18
+ // Mock failure of HMAC creation
19
+ ;
20
+ mockWallet.createHmac.mockRejectedValue(new Error('Failed to create HMAC'));
21
+ await expect((0, createNonce_1.createNonce)(mockWallet)).rejects.toThrow('Failed to create HMAC');
22
+ });
23
+ it('creates a 256-bit nonce', async () => {
24
+ const nonce = await (0, createNonce_1.createNonce)(mockWallet);
25
+ expect(Buffer.from(nonce, 'base64').byteLength).toEqual(32);
26
+ });
27
+ });
28
+ describe('verifyNonce', () => {
29
+ let mockWallet;
30
+ beforeEach(() => {
31
+ mockWallet = {
32
+ createHmac: jest.fn().mockResolvedValue({ hmac: new Uint8Array(16) }),
33
+ verifyHmac: jest.fn().mockResolvedValue({ valid: true })
34
+ };
35
+ });
36
+ afterEach(() => {
37
+ jest.clearAllMocks();
38
+ });
39
+ it('does not verify an invalid nonce', async () => {
40
+ ;
41
+ mockWallet.verifyHmac.mockResolvedValue({ valid: false });
42
+ const nonce = await (0, createNonce_1.createNonce)(mockWallet);
43
+ await expect((0, verifyNonce_1.verifyNonce)(nonce + 'ABC', mockWallet)).resolves.toEqual(false);
44
+ await expect((0, verifyNonce_1.verifyNonce)(nonce + '=', mockWallet)).resolves.toEqual(false);
45
+ await expect((0, verifyNonce_1.verifyNonce)(Buffer.from(nonce + Buffer.from('extra').toString('base64'), 'base64').toString('base64'), mockWallet)).resolves.toEqual(false);
46
+ });
47
+ it('returns false for an invalid HMAC verification', async () => {
48
+ ;
49
+ mockWallet.verifyHmac.mockResolvedValue({ valid: false });
50
+ const nonce = await (0, createNonce_1.createNonce)(mockWallet);
51
+ await expect((0, verifyNonce_1.verifyNonce)(nonce, mockWallet)).resolves.toEqual(false);
52
+ });
53
+ it('verifies a 256-bit nonce', async () => {
54
+ ;
55
+ mockWallet.verifyHmac.mockResolvedValue({ valid: true });
56
+ const nonce1 = await (0, createNonce_1.createNonce)(mockWallet);
57
+ const nonce2 = await (0, createNonce_1.createNonce)(mockWallet);
58
+ expect(Buffer.from(nonce1, 'base64').byteLength).toEqual(32);
59
+ expect(Buffer.from(nonce2, 'base64').byteLength).toEqual(32);
60
+ await expect((0, verifyNonce_1.verifyNonce)(nonce1, mockWallet)).resolves.toEqual(true);
61
+ await expect((0, verifyNonce_1.verifyNonce)(nonce2, mockWallet)).resolves.toEqual(true);
62
+ });
63
+ it('verifies nonce using real createHmac and verifyHmac', async () => {
64
+ const realWallet = new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom());
65
+ const nonce = await (0, createNonce_1.createNonce)(realWallet);
66
+ const isValid = await (0, verifyNonce_1.verifyNonce)(nonce, realWallet);
67
+ expect(isValid).toEqual(true);
68
+ });
69
+ it('SerialNumber use-case', async () => {
70
+ const clientWallet = new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom());
71
+ const serverWallet = new CompletedProtoWallet_1.CompletedProtoWallet(index_1.PrivateKey.fromRandom());
72
+ // Client creates a random nonce that the server can verify
73
+ const clientNonce = await (0, createNonce_1.createNonce)(clientWallet, (await serverWallet.getPublicKey({ identityKey: true })).publicKey);
74
+ // The server verifies the client created the nonce provided
75
+ await (0, verifyNonce_1.verifyNonce)(clientNonce, serverWallet, (await clientWallet.getPublicKey({ identityKey: true })).publicKey);
76
+ // Server creates a random nonce that the client can verify
77
+ const serverNonce = await (0, createNonce_1.createNonce)(serverWallet, (await clientWallet.getPublicKey({ identityKey: true })).publicKey);
78
+ // The server compute a serial number from the client and server nonce
79
+ const { hmac: serialNumber } = await serverWallet.createHmac({
80
+ data: index_1.Utils.toArray(clientNonce + serverNonce, 'utf8'),
81
+ protocolID: [2, 'certificate creation'],
82
+ keyID: serverNonce + clientNonce,
83
+ counterparty: (await clientWallet.getPublicKey({ identityKey: true }))
84
+ .publicKey
85
+ });
86
+ // Client verifies server's nonce
87
+ await (0, verifyNonce_1.verifyNonce)(serverNonce, clientWallet, (await serverWallet.getPublicKey({ identityKey: true })).publicKey);
88
+ // Client verifies the server included their nonce
89
+ const { valid } = await clientWallet.verifyHmac({
90
+ hmac: serialNumber,
91
+ data: index_1.Utils.toArray(clientNonce + serverNonce, 'utf8'),
92
+ protocolID: [2, 'certificate creation'],
93
+ keyID: serverNonce + clientNonce,
94
+ counterparty: (await serverWallet.getPublicKey({ identityKey: true }))
95
+ .publicKey
96
+ });
97
+ console.log(index_1.Utils.toBase64(serialNumber));
98
+ expect(valid).toEqual(true);
99
+ });
100
+ });
101
+ //# sourceMappingURL=cryptononce.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cryptononce.test.js","sourceRoot":"","sources":["../../../../../../src/auth/utils/__tests/cryptononce.test.ts"],"names":[],"mappings":"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"}