@bsv/sdk 2.0.16 → 2.1.1

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 (405) hide show
  1. package/README.md +7 -7
  2. package/dist/cjs/package.json +14 -13
  3. package/dist/cjs/src/auth/Peer.js +8 -13
  4. package/dist/cjs/src/auth/Peer.js.map +1 -1
  5. package/dist/cjs/src/auth/SessionManager.js +4 -7
  6. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  7. package/dist/cjs/src/auth/certificates/MasterCertificate.js +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  9. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  10. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  11. package/dist/cjs/src/auth/clients/AuthFetch.js +32 -32
  12. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  13. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  14. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  15. package/dist/cjs/src/compat/ECIES.js +29 -34
  16. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  17. package/dist/cjs/src/compat/HD.js +9 -4
  18. package/dist/cjs/src/compat/HD.js.map +1 -1
  19. package/dist/cjs/src/compat/Mnemonic.js +12 -12
  20. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  21. package/dist/cjs/src/identity/ContactsManager.js +172 -232
  22. package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
  23. package/dist/cjs/src/identity/IdentityClient.js +122 -55
  24. package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
  25. package/dist/cjs/src/kvstore/GlobalKVStore.js +30 -31
  26. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  27. package/dist/cjs/src/kvstore/LocalKVStore.js +9 -9
  28. package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
  29. package/dist/cjs/src/kvstore/kvStoreInterpreter.js +2 -2
  30. package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
  31. package/dist/cjs/src/messages/SignedMessage.js +1 -1
  32. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  33. package/dist/cjs/src/overlay-tools/Historian.js +1 -1
  34. package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
  35. package/dist/cjs/src/overlay-tools/LookupResolver.js +139 -46
  36. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  37. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +75 -146
  38. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  39. package/dist/cjs/src/primitives/AESGCM.js +2 -2
  40. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  41. package/dist/cjs/src/primitives/BigNumber.js +164 -148
  42. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  43. package/dist/cjs/src/primitives/Curve.js +17 -15
  44. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  45. package/dist/cjs/src/primitives/ECDSA.js +12 -7
  46. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  47. package/dist/cjs/src/primitives/Hash.js +140 -56
  48. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  49. package/dist/cjs/src/primitives/JacobianPoint.js +8 -8
  50. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  51. package/dist/cjs/src/primitives/K256.js +3 -3
  52. package/dist/cjs/src/primitives/K256.js.map +1 -1
  53. package/dist/cjs/src/primitives/Point.js +36 -40
  54. package/dist/cjs/src/primitives/Point.js.map +1 -1
  55. package/dist/cjs/src/primitives/PrivateKey.js +4 -4
  56. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  57. package/dist/cjs/src/primitives/PublicKey.js +4 -4
  58. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  59. package/dist/cjs/src/primitives/Random.js +10 -14
  60. package/dist/cjs/src/primitives/Random.js.map +1 -1
  61. package/dist/cjs/src/primitives/ReaderUint8Array.js +6 -6
  62. package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -1
  63. package/dist/cjs/src/primitives/Schnorr.js +2 -2
  64. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  65. package/dist/cjs/src/primitives/Secp256r1.js +2 -1
  66. package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
  67. package/dist/cjs/src/primitives/Signature.js +8 -8
  68. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  69. package/dist/cjs/src/primitives/TransactionSignature.js +20 -21
  70. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  71. package/dist/cjs/src/primitives/utils.js +39 -46
  72. package/dist/cjs/src/primitives/utils.js.map +1 -1
  73. package/dist/cjs/src/registry/RegistryClient.js +31 -23
  74. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  75. package/dist/cjs/src/remittance/RemittanceManager.js +19 -18
  76. package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -1
  77. package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -1
  78. package/dist/cjs/src/script/Script.js +93 -170
  79. package/dist/cjs/src/script/Script.js.map +1 -1
  80. package/dist/cjs/src/script/ScriptEvaluationError.js +2 -2
  81. package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -1
  82. package/dist/cjs/src/script/Spend.js +14 -12
  83. package/dist/cjs/src/script/Spend.js.map +1 -1
  84. package/dist/cjs/src/script/templates/PushDrop.js +22 -18
  85. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  86. package/dist/cjs/src/script/templates/RPuzzle.js +2 -4
  87. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  88. package/dist/cjs/src/storage/StorageDownloader.js +42 -9
  89. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
  90. package/dist/cjs/src/totp/totp.js +1 -1
  91. package/dist/cjs/src/totp/totp.js.map +1 -1
  92. package/dist/cjs/src/transaction/Beef.js +239 -192
  93. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  94. package/dist/cjs/src/transaction/BeefConstants.js +19 -0
  95. package/dist/cjs/src/transaction/BeefConstants.js.map +1 -0
  96. package/dist/cjs/src/transaction/BeefTx.js +12 -12
  97. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  98. package/dist/cjs/src/transaction/MerklePath.js +4 -4
  99. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  100. package/dist/cjs/src/transaction/Transaction.js +49 -52
  101. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  102. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  103. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  104. package/dist/cjs/src/transaction/http/BinaryFetchClient.js +9 -9
  105. package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
  106. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +9 -9
  107. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  108. package/dist/cjs/src/wallet/CachedKeyDeriver.js +1 -1
  109. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  110. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  111. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  112. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  113. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  114. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +9 -9
  115. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  116. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +92 -92
  117. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  118. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  119. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  120. package/dist/cjs/src/wallet/substrates/XDM.js +4 -4
  121. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  122. package/dist/cjs/src/wallet/substrates/window.CWI.js +2 -2
  123. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  124. package/dist/cjs/src/wallet/validationHelpers.js +9 -9
  125. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
  126. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  127. package/dist/esm/src/auth/Peer.js +25 -13
  128. package/dist/esm/src/auth/Peer.js.map +1 -1
  129. package/dist/esm/src/auth/SessionManager.js +4 -7
  130. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  131. package/dist/esm/src/auth/certificates/MasterCertificate.js +1 -1
  132. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  133. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  134. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  135. package/dist/esm/src/auth/clients/AuthFetch.js +32 -32
  136. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  137. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  138. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  139. package/dist/esm/src/compat/ECIES.js +29 -34
  140. package/dist/esm/src/compat/ECIES.js.map +1 -1
  141. package/dist/esm/src/compat/HD.js +9 -4
  142. package/dist/esm/src/compat/HD.js.map +1 -1
  143. package/dist/esm/src/compat/Mnemonic.js +12 -12
  144. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  145. package/dist/esm/src/identity/ContactsManager.js +172 -232
  146. package/dist/esm/src/identity/ContactsManager.js.map +1 -1
  147. package/dist/esm/src/identity/IdentityClient.js +122 -55
  148. package/dist/esm/src/identity/IdentityClient.js.map +1 -1
  149. package/dist/esm/src/kvstore/GlobalKVStore.js +30 -31
  150. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  151. package/dist/esm/src/kvstore/LocalKVStore.js +9 -9
  152. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  153. package/dist/esm/src/kvstore/kvStoreInterpreter.js +2 -2
  154. package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
  155. package/dist/esm/src/messages/SignedMessage.js +1 -1
  156. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  157. package/dist/esm/src/overlay-tools/Historian.js +1 -1
  158. package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
  159. package/dist/esm/src/overlay-tools/LookupResolver.js +139 -46
  160. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  161. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +74 -146
  162. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  163. package/dist/esm/src/primitives/AESGCM.js +2 -2
  164. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  165. package/dist/esm/src/primitives/BigNumber.js +167 -154
  166. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  167. package/dist/esm/src/primitives/Curve.js +17 -15
  168. package/dist/esm/src/primitives/Curve.js.map +1 -1
  169. package/dist/esm/src/primitives/ECDSA.js +12 -7
  170. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  171. package/dist/esm/src/primitives/Hash.js +140 -56
  172. package/dist/esm/src/primitives/Hash.js.map +1 -1
  173. package/dist/esm/src/primitives/JacobianPoint.js +8 -8
  174. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  175. package/dist/esm/src/primitives/K256.js +3 -3
  176. package/dist/esm/src/primitives/K256.js.map +1 -1
  177. package/dist/esm/src/primitives/Point.js +36 -40
  178. package/dist/esm/src/primitives/Point.js.map +1 -1
  179. package/dist/esm/src/primitives/PrivateKey.js +4 -4
  180. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  181. package/dist/esm/src/primitives/PublicKey.js +4 -4
  182. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  183. package/dist/esm/src/primitives/Random.js +10 -14
  184. package/dist/esm/src/primitives/Random.js.map +1 -1
  185. package/dist/esm/src/primitives/ReaderUint8Array.js +6 -6
  186. package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -1
  187. package/dist/esm/src/primitives/Schnorr.js +1 -1
  188. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  189. package/dist/esm/src/primitives/Secp256r1.js +2 -1
  190. package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
  191. package/dist/esm/src/primitives/Signature.js +8 -8
  192. package/dist/esm/src/primitives/Signature.js.map +1 -1
  193. package/dist/esm/src/primitives/TransactionSignature.js +20 -21
  194. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  195. package/dist/esm/src/primitives/utils.js +39 -48
  196. package/dist/esm/src/primitives/utils.js.map +1 -1
  197. package/dist/esm/src/registry/RegistryClient.js +31 -23
  198. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  199. package/dist/esm/src/remittance/RemittanceManager.js +19 -18
  200. package/dist/esm/src/remittance/RemittanceManager.js.map +1 -1
  201. package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -1
  202. package/dist/esm/src/script/Script.js +93 -170
  203. package/dist/esm/src/script/Script.js.map +1 -1
  204. package/dist/esm/src/script/ScriptEvaluationError.js +2 -2
  205. package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -1
  206. package/dist/esm/src/script/Spend.js +14 -12
  207. package/dist/esm/src/script/Spend.js.map +1 -1
  208. package/dist/esm/src/script/templates/PushDrop.js +4 -3
  209. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  210. package/dist/esm/src/script/templates/RPuzzle.js +2 -4
  211. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  212. package/dist/esm/src/storage/StorageDownloader.js +1 -1
  213. package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
  214. package/dist/esm/src/totp/totp.js +1 -1
  215. package/dist/esm/src/totp/totp.js.map +1 -1
  216. package/dist/esm/src/transaction/Beef.js +229 -186
  217. package/dist/esm/src/transaction/Beef.js.map +1 -1
  218. package/dist/esm/src/transaction/BeefConstants.js +16 -0
  219. package/dist/esm/src/transaction/BeefConstants.js.map +1 -0
  220. package/dist/esm/src/transaction/BeefTx.js +3 -3
  221. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  222. package/dist/esm/src/transaction/MerklePath.js +4 -4
  223. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  224. package/dist/esm/src/transaction/Transaction.js +49 -52
  225. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  226. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  227. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  228. package/dist/esm/src/transaction/http/BinaryFetchClient.js +9 -9
  229. package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
  230. package/dist/esm/src/transaction/http/DefaultHttpClient.js +9 -9
  231. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  232. package/dist/esm/src/wallet/CachedKeyDeriver.js +1 -1
  233. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  234. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  235. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  236. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  237. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  238. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js +9 -9
  239. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  240. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +92 -92
  241. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  242. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  243. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  244. package/dist/esm/src/wallet/substrates/XDM.js +4 -4
  245. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  246. package/dist/esm/src/wallet/substrates/window.CWI.js +2 -2
  247. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  248. package/dist/esm/src/wallet/validationHelpers.js +9 -9
  249. package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
  250. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  251. package/dist/types/src/auth/Peer.d.ts +13 -0
  252. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  253. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  254. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  255. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  256. package/dist/types/src/compat/HD.d.ts.map +1 -1
  257. package/dist/types/src/identity/ContactsManager.d.ts +18 -0
  258. package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
  259. package/dist/types/src/identity/IdentityClient.d.ts +47 -8
  260. package/dist/types/src/identity/IdentityClient.d.ts.map +1 -1
  261. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  262. package/dist/types/src/overlay-tools/LookupResolver.d.ts +59 -1
  263. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  264. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +18 -3
  265. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  266. package/dist/types/src/primitives/BigNumber.d.ts +13 -3
  267. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  268. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  269. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  270. package/dist/types/src/primitives/Hash.d.ts +3 -3
  271. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  272. package/dist/types/src/primitives/JacobianPoint.d.ts +3 -1
  273. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  274. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  275. package/dist/types/src/primitives/Random.d.ts +2 -2
  276. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  277. package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -1
  278. package/dist/types/src/primitives/Schnorr.d.ts +2 -1
  279. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  280. package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
  281. package/dist/types/src/primitives/utils.d.ts +2 -4
  282. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  283. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  284. package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -1
  285. package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -1
  286. package/dist/types/src/script/Script.d.ts +15 -8
  287. package/dist/types/src/script/Script.d.ts.map +1 -1
  288. package/dist/types/src/script/Spend.d.ts.map +1 -1
  289. package/dist/types/src/script/templates/PushDrop.d.ts +3 -1
  290. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  291. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  292. package/dist/types/src/transaction/Beef.d.ts +46 -8
  293. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  294. package/dist/types/src/transaction/BeefConstants.d.ts +15 -0
  295. package/dist/types/src/transaction/BeefConstants.d.ts.map +1 -0
  296. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  297. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  298. package/dist/types/src/wallet/KeyDeriver.d.ts +1 -1
  299. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  300. package/dist/types/src/wallet/Wallet.interfaces.d.ts +2 -2
  301. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  302. package/dist/types/src/wallet/WalletClient.d.ts +7 -7
  303. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  304. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
  305. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  306. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +36 -7
  307. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  308. package/dist/types/src/wallet/substrates/window.CWI.d.ts +8 -8
  309. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  310. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  311. package/dist/umd/bundle.js +3 -3
  312. package/docs/reference/kvstore.md +1 -2
  313. package/docs/reference/primitives.md +0 -1
  314. package/docs/reference/script.md +0 -7
  315. package/docs/reference/transaction.md +2 -2
  316. package/package.json +29 -28
  317. package/src/auth/Peer.ts +26 -13
  318. package/src/auth/SessionManager.ts +4 -7
  319. package/src/auth/certificates/MasterCertificate.ts +1 -1
  320. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +1 -1
  321. package/src/auth/clients/AuthFetch.ts +41 -41
  322. package/src/auth/transports/SimplifiedFetchTransport.ts +4 -4
  323. package/src/compat/ECIES.ts +29 -34
  324. package/src/compat/HD.ts +10 -5
  325. package/src/compat/Mnemonic.ts +11 -11
  326. package/src/compat/__tests/HD.test.ts +19 -0
  327. package/src/identity/ContactsManager.ts +194 -257
  328. package/src/identity/IdentityClient.ts +155 -66
  329. package/src/identity/__tests/IdentityClient.test.ts +25 -1
  330. package/src/kvstore/GlobalKVStore.ts +31 -32
  331. package/src/kvstore/LocalKVStore.ts +8 -8
  332. package/src/kvstore/kvStoreInterpreter.ts +2 -2
  333. package/src/messages/SignedMessage.ts +1 -1
  334. package/src/overlay-tools/Historian.ts +1 -1
  335. package/src/overlay-tools/LookupResolver.ts +182 -45
  336. package/src/overlay-tools/SHIPBroadcaster.ts +92 -168
  337. package/src/primitives/AESGCM.ts +2 -2
  338. package/src/primitives/BigNumber.ts +122 -113
  339. package/src/primitives/Curve.ts +16 -15
  340. package/src/primitives/ECDSA.ts +10 -8
  341. package/src/primitives/Hash.ts +152 -53
  342. package/src/primitives/JacobianPoint.ts +13 -11
  343. package/src/primitives/K256.ts +3 -3
  344. package/src/primitives/Point.ts +35 -38
  345. package/src/primitives/PrivateKey.ts +3 -3
  346. package/src/primitives/PublicKey.ts +3 -3
  347. package/src/primitives/Random.ts +11 -14
  348. package/src/primitives/ReaderUint8Array.ts +7 -7
  349. package/src/primitives/Schnorr.ts +2 -1
  350. package/src/primitives/Secp256r1.ts +2 -1
  351. package/src/primitives/Signature.ts +8 -8
  352. package/src/primitives/TransactionSignature.ts +16 -16
  353. package/src/primitives/utils.ts +37 -47
  354. package/src/registry/RegistryClient.ts +25 -25
  355. package/src/remittance/RemittanceManager.ts +17 -18
  356. package/src/remittance/modules/BasicBRC29.ts +2 -5
  357. package/src/script/Script.ts +114 -170
  358. package/src/script/ScriptEvaluationError.ts +2 -2
  359. package/src/script/Spend.ts +14 -15
  360. package/src/script/templates/PushDrop.ts +5 -3
  361. package/src/script/templates/RPuzzle.ts +2 -4
  362. package/src/storage/StorageDownloader.ts +1 -1
  363. package/src/totp/totp.ts +1 -1
  364. package/src/transaction/Beef.ts +241 -203
  365. package/src/transaction/BeefConstants.ts +16 -0
  366. package/src/transaction/BeefTx.ts +3 -3
  367. package/src/transaction/MerklePath.ts +4 -4
  368. package/src/transaction/Transaction.ts +48 -51
  369. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +1 -1
  370. package/src/transaction/http/BinaryFetchClient.ts +8 -8
  371. package/src/transaction/http/DefaultHttpClient.ts +8 -8
  372. package/src/wallet/CachedKeyDeriver.ts +8 -6
  373. package/src/wallet/KeyDeriver.ts +1 -1
  374. package/src/wallet/Wallet.interfaces.ts +2 -4
  375. package/src/wallet/WalletClient.ts +8 -8
  376. package/src/wallet/WalletError.ts +1 -1
  377. package/src/wallet/__tests/WalletClient.substrate.test.ts +10 -6
  378. package/src/wallet/substrates/HTTPWalletJSON.ts +22 -21
  379. package/src/wallet/substrates/ReactNativeWebView.ts +9 -9
  380. package/src/wallet/substrates/WalletWireProcessor.ts +83 -83
  381. package/src/wallet/substrates/WalletWireTransceiver.ts +528 -938
  382. package/src/wallet/substrates/XDM.ts +4 -4
  383. package/src/wallet/substrates/__tests/HTTPWalletJSON.test.ts +38 -25
  384. package/src/wallet/substrates/__tests/ReactNativeWebView.test.ts +174 -0
  385. package/src/wallet/substrates/__tests/window.CWI.test.ts +256 -0
  386. package/src/wallet/substrates/window.CWI.ts +10 -10
  387. package/src/wallet/validationHelpers.ts +9 -9
  388. package/docs/swagger/dist/LICENSE +0 -21
  389. package/docs/swagger/dist/favicon-16x16.png +0 -0
  390. package/docs/swagger/dist/favicon-32x32.png +0 -0
  391. package/docs/swagger/dist/index.css +0 -16
  392. package/docs/swagger/dist/oauth2-redirect.html +0 -79
  393. package/docs/swagger/dist/swagger-initializer.js +0 -20
  394. package/docs/swagger/dist/swagger-ui-bundle.js +0 -2
  395. package/docs/swagger/dist/swagger-ui-bundle.js.map +0 -1
  396. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +0 -3
  397. package/docs/swagger/dist/swagger-ui-es-bundle-core.js.map +0 -1
  398. package/docs/swagger/dist/swagger-ui-es-bundle.js +0 -2
  399. package/docs/swagger/dist/swagger-ui-es-bundle.js.map +0 -1
  400. package/docs/swagger/dist/swagger-ui-standalone-preset.js +0 -2
  401. package/docs/swagger/dist/swagger-ui-standalone-preset.js.map +0 -1
  402. package/docs/swagger/dist/swagger-ui.css +0 -3
  403. package/docs/swagger/dist/swagger-ui.css.map +0 -1
  404. package/docs/swagger/dist/swagger-ui.js +0 -2
  405. package/docs/swagger/dist/swagger-ui.js.map +0 -1
@@ -9,7 +9,7 @@ import { toArray, toHex, encode } from '../primitives/utils.js'
9
9
  function AES (key): void {
10
10
  if (this._tables[0][0][0] === 0) this._precompute()
11
11
 
12
- let tmp, encKey, decKey
12
+ let tmp
13
13
  const sbox = this._tables[0][4]
14
14
  const decTable = this._tables[1]
15
15
  const keyLen = key.length
@@ -19,7 +19,9 @@ function AES (key): void {
19
19
  throw new Error('invalid aes key size')
20
20
  }
21
21
 
22
- this._key = [(encKey = key.slice(0)), (decKey = [])]
22
+ const encKey = key.slice(0)
23
+ const decKey = []
24
+ this._key = [encKey, decKey]
23
25
 
24
26
  // schedule encryption keys
25
27
  let i: number
@@ -46,7 +48,7 @@ function AES (key): void {
46
48
 
47
49
  // schedule decryption keys
48
50
  for (let j = 0; i > 0; j++, i--) {
49
- tmp = encKey[(j & 3) !== 0 ? i : i - 4]
51
+ tmp = encKey[(j & 3) === 0 ? i - 4 : i]
50
52
  if (i <= 4 || j < 4) {
51
53
  decKey[j] = tmp
52
54
  } else {
@@ -127,10 +129,11 @@ AES.prototype = {
127
129
 
128
130
  // Compute double and third tables
129
131
  for (i = 0; i < 256; i++) {
130
- th[(d[i] = (i << 1) ^ ((i >> 7) * 283)) ^ i] = i
132
+ d[i] = (i << 1) ^ ((i >> 7) * 283)
133
+ th[d[i] ^ i] = i
131
134
  }
132
135
 
133
- for (x = xInv = 0; sbox[x] === 0; x ^= (x2 !== 0 ? x2 : 1), xInv = th[xInv] !== 0 ? th[xInv] : 1) {
136
+ for (x = xInv = 0; sbox[x] === 0; x ^= (x2 === 0 ? 1 : x2), xInv = th[xInv] === 0 ? 1 : th[xInv]) {
134
137
  // Compute sbox
135
138
  s = xInv ^ (xInv << 1) ^ (xInv << 2) ^ (xInv << 3) ^ (xInv << 4)
136
139
  s = (s >> 8) ^ (s & 255) ^ 99
@@ -138,7 +141,9 @@ AES.prototype = {
138
141
  sboxInv[s] = x
139
142
 
140
143
  // Compute MixColumns
141
- x8 = d[(x4 = d[(x2 = d[x])])]
144
+ x2 = d[x]
145
+ x4 = d[x2]
146
+ x8 = d[x4]
142
147
  tDec = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)
143
148
  tEnc = (d[s] * 0x101) ^ (s * 0x1010100)
144
149
 
@@ -307,7 +312,7 @@ class CBC {
307
312
  }
308
313
 
309
314
  public static blockBufs2Buf (blockBufs: number[][]): number[] {
310
- let last = blockBufs[blockBufs.length - 1]
315
+ let last = blockBufs.at(-1)
311
316
  last = CBC.pkcs7Unpad(last)
312
317
  blockBufs[blockBufs.length - 1] = last
313
318
 
@@ -319,7 +324,7 @@ class CBC {
319
324
  public static encrypt (
320
325
  messageBuf: number[],
321
326
  ivBuf: number[],
322
- blockCipher: any /* TODO: type */,
327
+ blockCipher: any,
323
328
  cipherKeyBuf: number[]
324
329
  ): number[] {
325
330
  const blockSize = ivBuf.length * 8
@@ -337,7 +342,7 @@ class CBC {
337
342
  public static decrypt (
338
343
  encBuf: number[],
339
344
  ivBuf: number[],
340
- blockCipher: any /* TODO: type */,
345
+ blockCipher: any,
341
346
  cipherKeyBuf: number[]
342
347
  ): number[] {
343
348
  const bytesize = ivBuf.length
@@ -358,7 +363,7 @@ class CBC {
358
363
  public static encryptBlock (
359
364
  blockBuf: number[],
360
365
  ivBuf: number[],
361
- blockCipher: any /* TODO: type */,
366
+ blockCipher: any,
362
367
  cipherKeyBuf: number[]
363
368
  ): number[] {
364
369
  const xorbuf = CBC.xorBufs(blockBuf, ivBuf)
@@ -369,7 +374,7 @@ class CBC {
369
374
  public static decryptBlock (
370
375
  encBuf: number[],
371
376
  ivBuf: number[],
372
- blockCipher: any /* TODO: type */,
377
+ blockCipher: any,
373
378
  cipherKeyBuf: number[]
374
379
  ): number[] {
375
380
  const xorbuf = blockCipher.decrypt(encBuf, cipherKeyBuf)
@@ -380,13 +385,12 @@ class CBC {
380
385
  public static encryptBlocks (
381
386
  blockBufs: number[][],
382
387
  ivBuf: number[],
383
- blockCipher: any /* TODO: type */,
388
+ blockCipher: any,
384
389
  cipherKeyBuf: number[]
385
390
  ): number[][] {
386
391
  const encBufs: number[][] = []
387
392
 
388
- for (let i = 0; i < blockBufs.length; i++) {
389
- const blockBuf = blockBufs[i]
393
+ for (const blockBuf of blockBufs) {
390
394
  const encBuf = CBC.encryptBlock(
391
395
  blockBuf,
392
396
  ivBuf,
@@ -405,13 +409,12 @@ class CBC {
405
409
  public static decryptBlocks (
406
410
  encBufs: number[][],
407
411
  ivBuf: number[],
408
- blockCipher: any /* TODO: type */,
412
+ blockCipher: any,
409
413
  cipherKeyBuf: number[]
410
414
  ): number[][] {
411
415
  const blockBufs: number[][] = []
412
416
 
413
- for (let i = 0; i < encBufs.length; i++) {
414
- const encBuf = encBufs[i]
417
+ for (const encBuf of encBufs) {
415
418
  const blockBuf = CBC.decryptBlock(
416
419
  encBuf,
417
420
  ivBuf,
@@ -437,7 +440,7 @@ class CBC {
437
440
  }
438
441
 
439
442
  public static pkcs7Unpad (paddedbuf: number[]): number[] {
440
- const padlength = paddedbuf[paddedbuf.length - 1]
443
+ const padlength = paddedbuf.at(-1)
441
444
  const padbuf = paddedbuf.slice(
442
445
  paddedbuf.length - padlength,
443
446
  paddedbuf.length
@@ -548,9 +551,7 @@ export default class ECIES {
548
551
  noKey = false
549
552
  ): number[] {
550
553
  let Rbuf: string | number[] | null = null
551
- if (fromPrivateKey == null) {
552
- fromPrivateKey = PrivateKey.fromRandom()
553
- }
554
+ fromPrivateKey ??= PrivateKey.fromRandom()
554
555
  if (!noKey) {
555
556
  Rbuf = fromPrivateKey.toPublicKey().encode(true)
556
557
  }
@@ -603,14 +604,12 @@ export default class ECIES {
603
604
  }
604
605
  }
605
606
 
606
- if (Rbuf !== null) {
607
- if (fromPublicKey == null) {
608
- fromPublicKey = PublicKey.fromString(toHex(Rbuf))
609
- }
610
- } else {
607
+ if (Rbuf === null) {
611
608
  if (fromPublicKey == null) {
612
609
  throw new Error('Sender public key is required')
613
610
  }
611
+ } else {
612
+ fromPublicKey ??= PublicKey.fromString(toHex(Rbuf))
614
613
  }
615
614
 
616
615
  const { iv, kE, kM } = ECIES.ivkEkM(toPrivateKey, fromPublicKey)
@@ -644,12 +643,8 @@ export default class ECIES {
644
643
  fromPrivateKey?: PrivateKey,
645
644
  ivBuf?: number[]
646
645
  ): number[] {
647
- if (fromPrivateKey == null) {
648
- fromPrivateKey = PrivateKey.fromRandom()
649
- }
650
- if (ivBuf == null) {
651
- ivBuf = Random(16)
652
- }
646
+ fromPrivateKey ??= PrivateKey.fromRandom()
647
+ ivBuf ??= Random(16)
653
648
  const r = fromPrivateKey
654
649
  const RPublicKey = fromPrivateKey.toPublicKey()
655
650
  const RBuf = RPublicKey.encode(true) as number[]
@@ -689,8 +684,8 @@ export default class ECIES {
689
684
  const kEkM = Hash.sha512(Sbuf)
690
685
  const kE = kEkM.slice(0, 32)
691
686
  const kM = kEkM.slice(32, 64)
692
- const c = encBuf.slice(33, encBuf.length - 32)
693
- const d = encBuf.slice(encBuf.length - 32, encBuf.length)
687
+ const c = encBuf.slice(33, -32)
688
+ const d = encBuf.slice(-32)
694
689
  const d2 = Hash.sha256hmac(kM, c)
695
690
  if (toHex(d) !== toHex(d2)) {
696
691
  throw new Error('Invalid checksum')
package/src/compat/HD.ts CHANGED
@@ -230,13 +230,18 @@ export default class HD {
230
230
  continue
231
231
  }
232
232
 
233
- if (parseInt(c.replace("'", ''), 10).toString() !== c.replace("'", '')) {
233
+ const childMatch = /^(\d+)('?)$/.exec(c)
234
+ if (childMatch === null) {
234
235
  throw new Error('invalid path')
235
236
  }
236
237
 
237
- const usePrivate = c.length > 1 && c[c.length - 1] === "'"
238
- let childIndex =
239
- parseInt(usePrivate ? c.slice(0, c.length - 1) : c, 10) & 0x7fffffff
238
+ const childIndexValue = Number.parseInt(childMatch[1], 10)
239
+ if (childIndexValue > 0x7fffffff) {
240
+ throw new Error('invalid path')
241
+ }
242
+
243
+ const usePrivate = childMatch[2] === "'"
244
+ let childIndex = childIndexValue
240
245
 
241
246
  if (usePrivate) {
242
247
  childIndex += 0x80000000
@@ -256,7 +261,7 @@ export default class HD {
256
261
  */
257
262
  public deriveChild (i: number): HD {
258
263
  if (typeof i !== 'number') {
259
- throw new Error('i must be a number')
264
+ throw new TypeError('i must be a number')
260
265
  }
261
266
 
262
267
  const ibc: number[] = []
@@ -35,12 +35,12 @@ export default class Mnemonic {
35
35
  */
36
36
  public toBinary (): number[] {
37
37
  const bw = new Writer()
38
- if (this.mnemonic !== '') {
38
+ if (this.mnemonic === '') {
39
+ bw.writeVarIntNum(0)
40
+ } else {
39
41
  const buf = toArray(this.mnemonic, 'utf8')
40
42
  bw.writeVarIntNum(buf.length)
41
43
  bw.write(buf)
42
- } else {
43
- bw.writeVarIntNum(0)
44
44
  }
45
45
  if (this.seed.length > 0) {
46
46
  bw.writeVarIntNum(this.seed.length)
@@ -76,7 +76,7 @@ export default class Mnemonic {
76
76
  * @throws {Error} If the bit length is not a multiple of 32 or is less than 128.
77
77
  */
78
78
  public fromRandom (bits?: number): this {
79
- if (bits === undefined || bits === null || isNaN(bits) || bits === 0) {
79
+ if (bits === undefined || bits === null || Number.isNaN(bits) || bits === 0) {
80
80
  bits = 128
81
81
  }
82
82
  if (bits % 32 !== 0) {
@@ -179,8 +179,8 @@ export default class Mnemonic {
179
179
  const hash = Hash.sha256(buf)
180
180
  let bin = ''
181
181
  const bits = buf.length * 8
182
- for (let i = 0; i < buf.length; i++) {
183
- bin = bin + ('00000000' + buf[i].toString(2)).slice(-8)
182
+ for (const byte of buf) {
183
+ bin = bin + ('00000000' + byte.toString(2)).slice(-8)
184
184
  }
185
185
  let hashbits = hash[0].toString(2)
186
186
  hashbits = ('00000000' + hashbits).slice(-8).slice(0, bits / 32)
@@ -198,7 +198,7 @@ export default class Mnemonic {
198
198
  if (mnemonic !== '') {
199
199
  mnemonic = mnemonic + this.Wordlist.space
200
200
  }
201
- const wi = parseInt(bin.slice(i * 11, (i + 1) * 11), 2)
201
+ const wi = Number.parseInt(bin.slice(i * 11, (i + 1) * 11), 2)
202
202
  mnemonic = mnemonic + this.Wordlist.value[wi]
203
203
  }
204
204
 
@@ -218,8 +218,8 @@ export default class Mnemonic {
218
218
  // confirm no invalid words
219
219
  const words = mnemonic.split(this.Wordlist.space)
220
220
  let bin = ''
221
- for (let i = 0; i < words.length; i++) {
222
- const ind = this.Wordlist.value.indexOf(words[i])
221
+ for (const word of words) {
222
+ const ind = this.Wordlist.value.indexOf(word)
223
223
  if (ind < 0) {
224
224
  return false
225
225
  }
@@ -240,7 +240,7 @@ export default class Mnemonic {
240
240
  const buf: number[] = []
241
241
 
242
242
  for (let i = 0; i < nonhashBits.length / 8; i++) {
243
- buf.push(parseInt(bin.slice(i * 8, (i + 1) * 8), 2))
243
+ buf.push(Number.parseInt(bin.slice(i * 8, (i + 1) * 8), 2))
244
244
  }
245
245
  const hash = Hash.sha256(buf.slice(0, nonhashBits.length / 8))
246
246
  let expectedHashBits = hash[0].toString(2)
@@ -266,7 +266,7 @@ export default class Mnemonic {
266
266
  )
267
267
  }
268
268
  if (typeof passphrase !== 'string') {
269
- throw new Error('passphrase must be a string or undefined')
269
+ throw new TypeError('passphrase must be a string or undefined')
270
270
  }
271
271
  mnemonic = mnemonic.normalize('NFKD')
272
272
  passphrase = passphrase.normalize('NFKD')
@@ -394,6 +394,25 @@ describe('HD', () => {
394
394
  })
395
395
  })
396
396
 
397
+ describe('#derive path validation', () => {
398
+ it('should derive mixed hardened and non-hardened path segments', () => {
399
+ const bip32 = HD.fromString(vector1mPrivate)
400
+ expect(() => bip32.derive("m/0'/0'/2/3/4'/4")).not.toThrow()
401
+ })
402
+
403
+ it('should reject apostrophes that are not trailing hardening markers', () => {
404
+ const bip32 = HD.fromString(vector1mPrivate)
405
+ expect(() => bip32.derive("m/1'2")).toThrow('invalid path')
406
+ expect(() => bip32.derive("m/1''")).toThrow('invalid path')
407
+ })
408
+
409
+ it('should reject child indexes outside the non-hardened range', () => {
410
+ const bip32 = HD.fromString(vector1mPrivate)
411
+ expect(() => bip32.derive('m/2147483648')).toThrow('invalid path')
412
+ expect(() => bip32.derive("m/2147483648'")).toThrow('invalid path')
413
+ })
414
+ })
415
+
397
416
  describe('#toString', () => {
398
417
  const bip32 = new HD()
399
418
  bip32.fromRandom()