@bsv/sdk 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -1,3 +1,4 @@
1
+
1
2
  import BasePoint from './BasePoint.js'
2
3
  import JPoint from './JacobianPoint.js'
3
4
  import BigNumber from './BigNumber.js'
@@ -44,8 +45,10 @@ export default class Point extends BasePoint {
44
45
  static fromDER (bytes: number[]): Point {
45
46
  const len = 32
46
47
  // uncompressed, hybrid-odd, hybrid-even
47
- if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
48
- bytes.length - 1 === 2 * len) {
48
+ if (
49
+ (bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
50
+ bytes.length - 1 === 2 * len
51
+ ) {
49
52
  if (bytes[0] === 0x06) {
50
53
  if (bytes[bytes.length - 1] % 2 !== 0) {
51
54
  throw new Error('Point string value is wrong length')
@@ -62,8 +65,10 @@ export default class Point extends BasePoint {
62
65
  )
63
66
 
64
67
  return res
65
- } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
66
- bytes.length - 1 === len) {
68
+ } else if (
69
+ (bytes[0] === 0x02 || bytes[0] === 0x03) &&
70
+ bytes.length - 1 === len
71
+ ) {
67
72
  return Point.fromX(bytes.slice(1, 1 + len), bytes[0] === 0x03)
68
73
  }
69
74
  throw new Error('Unknown point format')
@@ -145,7 +150,7 @@ export default class Point extends BasePoint {
145
150
  const p = BigInt(
146
151
  '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F'
147
152
  )
148
- const a = BigInt(0)
153
+ // const a = BigInt(0)
149
154
  const b = BigInt(7)
150
155
 
151
156
  // Convert x to BigInt
@@ -155,10 +160,7 @@ export default class Point extends BasePoint {
155
160
  } else if (typeof x === 'string') {
156
161
  xBigInt = BigInt('0x' + x)
157
162
  } else if (Array.isArray(x)) {
158
- xBigInt = BigInt(
159
- '0x' +
160
- toHex(x).padStart(64, '0')
161
- )
163
+ xBigInt = BigInt('0x' + toHex(x).padStart(64, '0'))
162
164
  } else if (typeof x === 'number') {
163
165
  xBigInt = BigInt(x)
164
166
  } else {
@@ -179,7 +181,7 @@ export default class Point extends BasePoint {
179
181
  }
180
182
 
181
183
  // Adjust y to match the oddness
182
- const isYOdd = (y % BigInt(2)) === BigInt(1)
184
+ const isYOdd = y % BigInt(2) === BigInt(1)
183
185
  if ((odd && !isYOdd) || (!odd && isYOdd)) {
184
186
  y = p - y
185
187
  }
@@ -232,9 +234,7 @@ export default class Point extends BasePoint {
232
234
  * const serializedPoint = '{"x":52,"y":15}';
233
235
  * const point = Point.fromJSON(serializedPoint, true);
234
236
  */
235
- static fromJSON (
236
- obj: string | any[], isRed: boolean
237
- ): Point {
237
+ static fromJSON (obj: string | any[], isRed: boolean): Point {
238
238
  if (typeof obj === 'string') {
239
239
  obj = JSON.parse(obj)
240
240
  }
@@ -250,18 +250,20 @@ export default class Point extends BasePoint {
250
250
  const pre = obj[2]
251
251
  res.precomputed = {
252
252
  beta: null,
253
- doubles: typeof pre.doubles === 'object' && pre.doubles !== null
254
- ? {
255
- step: pre.doubles.step,
256
- points: [res].concat(pre.doubles.points.map(obj2point))
257
- }
258
- : undefined,
259
- naf: typeof pre.naf === 'object' && pre.naf !== null
260
- ? {
261
- wnd: pre.naf.wnd,
262
- points: [res].concat(pre.naf.points.map(obj2point))
263
- }
264
- : undefined
253
+ doubles:
254
+ typeof pre.doubles === 'object' && pre.doubles !== null
255
+ ? {
256
+ step: pre.doubles.step,
257
+ points: [res].concat(pre.doubles.points.map(obj2point))
258
+ }
259
+ : undefined,
260
+ naf:
261
+ typeof pre.naf === 'object' && pre.naf !== null
262
+ ? {
263
+ wnd: pre.naf.wnd,
264
+ points: [res].concat(pre.naf.points.map(obj2point))
265
+ }
266
+ : undefined
265
267
  }
266
268
  return res
267
269
  }
@@ -301,8 +303,12 @@ export default class Point extends BasePoint {
301
303
  this.x.forceRed(this.curve.red)
302
304
  this.y.forceRed(this.curve.red)
303
305
  }
304
- if (this.x.red === null) { this.x = this.x.toRed(this.curve.red) }
305
- if (this.y.red === null) { this.y = this.y.toRed(this.curve.red) }
306
+ if (this.x.red === null) {
307
+ this.x = this.x.toRed(this.curve.red)
308
+ }
309
+ if (this.y.red === null) {
310
+ this.y = this.y.toRed(this.curve.red)
311
+ }
306
312
  this.inf = false
307
313
  }
308
314
  }
@@ -378,25 +384,40 @@ export default class Point extends BasePoint {
378
384
  * const aPoint = new Point(x, y);
379
385
  * const jsonPoint = aPoint.toJSON();
380
386
  */
381
- toJSON (): [BigNumber | null, BigNumber | null, { doubles: { step: any, points: any[] } | undefined, naf: { wnd: any, points: any[] } | undefined }?] {
382
- if (this.precomputed == null) { return [this.x, this.y] }
387
+ toJSON (): [
388
+ BigNumber | null,
389
+ BigNumber | null,
390
+ {
391
+ doubles: { step: any, points: any[] } | undefined
392
+ naf: { wnd: any, points: any[] } | undefined
393
+ }?,
394
+ ] {
395
+ if (this.precomputed == null) {
396
+ return [this.x, this.y]
397
+ }
383
398
 
384
- return [this.x, this.y, typeof this.precomputed === 'object' && this.precomputed !== null
385
- ? {
386
- doubles: (this.precomputed.doubles != null)
387
- ? {
388
- step: this.precomputed.doubles.step,
389
- points: this.precomputed.doubles.points.slice(1)
390
- }
391
- : undefined,
392
- naf: (this.precomputed.naf != null)
393
- ? {
394
- wnd: this.precomputed.naf.wnd,
395
- points: this.precomputed.naf.points.slice(1)
396
- }
397
- : undefined
398
- }
399
- : undefined]
399
+ return [
400
+ this.x,
401
+ this.y,
402
+ typeof this.precomputed === 'object' && this.precomputed !== null
403
+ ? {
404
+ doubles:
405
+ this.precomputed.doubles != null
406
+ ? {
407
+ step: this.precomputed.doubles.step,
408
+ points: this.precomputed.doubles.points.slice(1)
409
+ }
410
+ : undefined,
411
+ naf:
412
+ this.precomputed.naf != null
413
+ ? {
414
+ wnd: this.precomputed.naf.wnd,
415
+ points: this.precomputed.naf.points.slice(1)
416
+ }
417
+ : undefined
418
+ }
419
+ : undefined
420
+ ]
400
421
  }
401
422
 
402
423
  /**
@@ -413,8 +434,13 @@ export default class Point extends BasePoint {
413
434
  if (this.isInfinity()) {
414
435
  return '<EC Point Infinity>'
415
436
  }
416
- return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
417
- ' y: ' + this.y.fromRed().toString(16, 2) + '>'
437
+ return (
438
+ '<EC Point x: ' +
439
+ (this.x?.fromRed()?.toString(16, 2) ?? 'undefined') +
440
+ ' y: ' +
441
+ (this.y?.fromRed()?.toString(16, 2) ?? 'undefined') +
442
+ '>'
443
+ )
418
444
  }
419
445
 
420
446
  /**
@@ -444,25 +470,41 @@ export default class Point extends BasePoint {
444
470
  */
445
471
  add (p: Point): Point {
446
472
  // O + P = P
447
- if (this.inf) { return p }
473
+ if (this.inf) {
474
+ return p
475
+ }
448
476
 
449
477
  // P + O = P
450
- if (p.inf) { return this }
478
+ if (p.inf) {
479
+ return this
480
+ }
451
481
 
452
482
  // P + P = 2P
453
- if (this.eq(p)) { return this.dbl() }
483
+ if (this.eq(p)) {
484
+ return this.dbl()
485
+ }
454
486
 
455
487
  // P + (-P) = O
456
- if (this.neg().eq(p)) { return new Point(null, null) }
488
+ if (this.neg().eq(p)) {
489
+ return new Point(new BigNumber(0), new BigNumber(0))
490
+ }
457
491
 
458
492
  // P + Q = O
459
- if (this.x.cmp(p.x) === 0) { return new Point(null, null) }
493
+ if (this.x?.cmp(p.x ?? new BigNumber(0)) === 0) {
494
+ return new Point(new BigNumber(0), new BigNumber(0))
495
+ }
460
496
 
461
- let c = this.y.redSub(p.y)
462
- if (c.cmpn(0) !== 0) { c = c.redMul(this.x.redSub(p.x).redInvm()) }
463
- const nx = c.redSqr().redISub(this.x).redISub(p.x)
464
- const ny = c.redMul(this.x.redSub(nx)).redISub(this.y)
465
- return new Point(nx, ny)
497
+ let c = this.y?.redSub(p.y ?? new BigNumber(0)) ?? new BigNumber(0)
498
+ if (c.cmpn(0) !== 0) {
499
+ c = c.redMul(this.x?.redSub(p.x ?? new BigNumber(0)).redInvm() ?? new BigNumber(1))
500
+ }
501
+
502
+ const nx = c?.redSqr().redISub(this.x ?? new BigNumber(0)).redISub(p.x ?? new BigNumber(0))
503
+ const ny = (c ?? new BigNumber(1))
504
+ .redMul((this.x ?? new BigNumber(0)).redSub(nx ?? new BigNumber(0)))
505
+ .redISub(this.y ?? new BigNumber(0))
506
+
507
+ return new Point(nx ?? new BigNumber(0), ny ?? new BigNumber(0))
466
508
  }
467
509
 
468
510
  /**
@@ -475,22 +517,24 @@ export default class Point extends BasePoint {
475
517
  * const result = P.dbl();
476
518
  * */
477
519
  dbl (): Point {
478
- if (this.inf) { return this }
520
+ if (this.inf) {
521
+ return this
522
+ }
479
523
 
480
524
  // 2P = O
481
- const ys1 = this.y.redAdd(this.y)
525
+ const ys1 = (this.y ?? new BigNumber(0)).redAdd(this.y ?? new BigNumber(0))
482
526
  if (ys1.cmpn(0) === 0) {
483
- return new Point(null, null)
527
+ return new Point(new BigNumber(0), new BigNumber(0))
484
528
  }
485
529
 
486
530
  const a = this.curve.a
487
-
488
- const x2 = this.x.redSqr()
531
+ const x2 = (this.x ?? new BigNumber(0)).redSqr()
489
532
  const dyinv = ys1.redInvm()
490
533
  const c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv)
491
534
 
492
- const nx = c.redSqr().redISub(this.x.redAdd(this.x))
493
- const ny = c.redMul(this.x.redSub(nx)).redISub(this.y)
535
+ const nx = c.redSqr().redISub((this.x ?? new BigNumber(0)).redAdd(this.x ?? new BigNumber(0)))
536
+ const ny = c.redMul((this.x ?? new BigNumber(0)).redSub(nx)).redISub(this.y ?? new BigNumber(0))
537
+
494
538
  return new Point(nx, ny)
495
539
  }
496
540
 
@@ -502,7 +546,7 @@ export default class Point extends BasePoint {
502
546
  * const x = P.getX();
503
547
  */
504
548
  getX (): BigNumber {
505
- return this.x.fromRed()
549
+ return (this.x ?? new BigNumber(0)).fromRed()
506
550
  }
507
551
 
508
552
  /**
@@ -513,7 +557,7 @@ export default class Point extends BasePoint {
513
557
  * const x = P.getX();
514
558
  */
515
559
  getY (): BigNumber {
516
- return this.y.fromRed()
560
+ return (this.y ?? new BigNumber(0)).fromRed()
517
561
  }
518
562
 
519
563
  /**
@@ -597,9 +641,11 @@ export default class Point extends BasePoint {
597
641
  * const areEqual = p1.eq(p2); // returns true
598
642
  */
599
643
  eq (p: Point): boolean {
600
- return this === p || (
601
- (this.inf === p.inf) &&
602
- (this.inf || (this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0)))
644
+ return (
645
+ this === p ||
646
+ (this.inf === p.inf &&
647
+ (this.inf || ((this.x ?? new BigNumber(0)).cmp(p.x ?? new BigNumber(0)) === 0 && (this.y ?? new BigNumber(0)).cmp(p.y ?? new BigNumber(0)) === 0)))
648
+ )
603
649
  }
604
650
 
605
651
  /**
@@ -612,24 +658,30 @@ export default class Point extends BasePoint {
612
658
  * const result = P.neg();
613
659
  */
614
660
  neg (_precompute?: boolean): Point {
615
- if (this.inf) { return this }
616
-
617
- const res = new Point(this.x, this.y.redNeg())
618
- if (_precompute && (this.precomputed != null)) {
661
+ if (this.inf) {
662
+ return this
663
+ }
664
+ const res = new Point(this.x, (this.y ?? new BigNumber(0)).redNeg())
665
+ if (_precompute === true && this.precomputed != null) {
619
666
  const pre = this.precomputed
620
667
  const negate = (p: Point): Point => p.neg()
621
668
  res.precomputed = {
622
- naf: (pre.naf != null) && {
623
- wnd: pre.naf.wnd,
624
- points: pre.naf.points.map(negate)
625
- },
626
- doubles: (pre.doubles != null) && {
627
- step: pre.doubles.step,
628
- points: pre.doubles.points.map((p) => p.neg())
629
- },
669
+ naf: pre.naf != null
670
+ ? {
671
+ wnd: pre.naf.wnd,
672
+ points: pre.naf.points.map(negate) as BasePoint[]
673
+ }
674
+ : undefined,
675
+ doubles: pre.doubles != null
676
+ ? {
677
+ step: pre.doubles.step,
678
+ points: pre.doubles.points.map((p) => (p as Point).neg())
679
+ }
680
+ : undefined,
630
681
  beta: undefined
631
682
  }
632
683
  }
684
+
633
685
  return res
634
686
  }
635
687
 
@@ -650,7 +702,9 @@ export default class Point extends BasePoint {
650
702
  dblp (k: number): Point {
651
703
  /* eslint-disable @typescript-eslint/no-this-alias */
652
704
  let r: Point = this
653
- for (let i = 0; i < k; i++) { r = r.dbl() }
705
+ for (let i = 0; i < k; i++) {
706
+ r = r.dbl()
707
+ }
654
708
  return r
655
709
  }
656
710
 
@@ -674,34 +728,49 @@ export default class Point extends BasePoint {
674
728
  }
675
729
 
676
730
  private _getBeta (): undefined | Point {
677
- if (typeof this.curve.endo !== 'object') { return }
731
+ if (typeof this.curve.endo !== 'object') {
732
+ return
733
+ }
678
734
 
679
735
  const pre = this.precomputed
680
- if (typeof pre === 'object' && pre !== null && typeof pre.beta === 'object' && pre.beta !== null) {
736
+ if (
737
+ typeof pre === 'object' &&
738
+ pre !== null &&
739
+ typeof pre.beta === 'object' &&
740
+ pre.beta !== null
741
+ ) {
681
742
  return pre.beta as Point
682
743
  }
683
744
 
684
- const beta = new Point(this.x.redMul(this.curve.endo.beta), this.y)
745
+ const beta = new Point((this.x ?? new BigNumber(0)).redMul(this.curve.endo.beta), this.y)
685
746
  if (pre != null) {
686
747
  const curve = this.curve
687
748
  const endoMul = (p: Point): Point => {
749
+ if (p.x === null) {
750
+ throw new Error('p.x is null')
751
+ }
752
+ if (curve.endo === undefined || curve.endo === null) {
753
+ throw new Error('curve.endo is undefined')
754
+ }
688
755
  return new Point(p.x.redMul(curve.endo.beta), p.y)
689
756
  }
690
757
  pre.beta = beta
691
758
  beta.precomputed = {
692
759
  beta: null,
693
- naf: (pre.naf != null)
694
- ? {
695
- wnd: pre.naf.wnd,
696
- points: pre.naf.points.map(endoMul)
697
- }
698
- : undefined,
699
- doubles: (pre.doubles != null)
700
- ? {
701
- step: pre.doubles.step,
702
- points: pre.doubles.points.map(endoMul)
703
- }
704
- : undefined
760
+ naf:
761
+ pre.naf != null
762
+ ? {
763
+ wnd: pre.naf.wnd,
764
+ points: pre.naf.points.map(endoMul)
765
+ }
766
+ : undefined,
767
+ doubles:
768
+ pre.doubles != null
769
+ ? {
770
+ step: pre.doubles.step,
771
+ points: pre.doubles.points.map(endoMul)
772
+ }
773
+ : undefined
705
774
  }
706
775
  }
707
776
  return beta
@@ -735,7 +804,7 @@ export default class Point extends BasePoint {
735
804
  if (nafW === i) {
736
805
  b = b.mixedAdd(doubles.points[j])
737
806
  } else if (nafW === -i) {
738
- b = b.mixedAdd((doubles.points[j]).neg())
807
+ b = b.mixedAdd(doubles.points[j].neg())
739
808
  }
740
809
  }
741
810
  a = a.add(b)
@@ -750,17 +819,17 @@ export default class Point extends BasePoint {
750
819
  len: number,
751
820
  jacobianResult?: boolean
752
821
  ): BasePoint {
753
- const wndWidth = this.curve._wnafT1
754
- const wnd = this.curve._wnafT2
755
- const naf = this.curve._wnafT3
822
+ const wndWidth: number[] = this.curve._wnafT1.map(num => num.toNumber()) // Convert BigNumber to number
823
+ const wnd: Point[][] = this.curve._wnafT2.map(() => []) // Initialize as empty Point[][] array
824
+ const naf: number[][] = this.curve._wnafT3.map(() => []) // Initialize as empty number[][] array
756
825
 
757
826
  // Fill all arrays
758
827
  let max = 0
759
828
  for (let i = 0; i < len; i++) {
760
829
  const p = points[i]
761
830
  const nafPoints = p._getNAFPoints(defW)
762
- wndWidth[i] = nafPoints.wnd
763
- wnd[i] = nafPoints.points
831
+ wndWidth[i] = nafPoints.wnd // Ensure correct type
832
+ wnd[i] = nafPoints.points // Ensure correct type
764
833
  }
765
834
 
766
835
  // Comb small window NAFs
@@ -768,27 +837,33 @@ export default class Point extends BasePoint {
768
837
  const a = i - 1
769
838
  const b = i
770
839
  if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
771
- naf[a] = this.curve
772
- .getNAF(coeffs[a], wndWidth[a], this.curve._bitLength)
773
- naf[b] = this.curve
774
- .getNAF(coeffs[b], wndWidth[b], this.curve._bitLength)
840
+ naf[a] = this.curve.getNAF(
841
+ coeffs[a],
842
+ wndWidth[a],
843
+ this.curve._bitLength
844
+ )
845
+ naf[b] = this.curve.getNAF(
846
+ coeffs[b],
847
+ wndWidth[b],
848
+ this.curve._bitLength
849
+ )
775
850
  max = Math.max(naf[a].length, max)
776
851
  max = Math.max(naf[b].length, max)
777
852
  continue
778
853
  }
779
854
 
780
855
  const comb: any[] = [
781
- points[a], /* 1 */
782
- null, /* 3 */
783
- null, /* 5 */
856
+ points[a] /* 1 */,
857
+ null /* 3 */,
858
+ null /* 5 */,
784
859
  points[b] /* 7 */
785
860
  ]
786
861
 
787
862
  // Try to avoid Projective points, if possible
788
- if (points[a].y.cmp(points[b].y) === 0) {
863
+ if ((points[a].y ?? new BigNumber(0)).cmp(points[b].y ?? new BigNumber(0)) === 0) {
789
864
  comb[1] = points[a].add(points[b])
790
865
  comb[2] = points[a].toJ().mixedAdd(points[b].neg())
791
- } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
866
+ } else if ((points[a].y ?? new BigNumber(0)).cmp((points[b].y ?? new BigNumber(0)).redNeg()) === 0) {
792
867
  comb[1] = points[a].toJ().mixedAdd(points[b])
793
868
  comb[2] = points[a].add(points[b].neg())
794
869
  } else {
@@ -797,15 +872,8 @@ export default class Point extends BasePoint {
797
872
  }
798
873
 
799
874
  const index = [
800
- -3, /* -1 -1 */
801
- -1, /* -1 0 */
802
- -5, /* -1 1 */
803
- -7, /* 0 -1 */
804
- 0, /* 0 0 */
805
- 7, /* 0 1 */
806
- 5, /* 1 -1 */
807
- 1, /* 1 0 */
808
- 3 /* 1 1 */
875
+ -3 /* -1 -1 */, -1 /* -1 0 */, -5 /* -1 1 */, -7 /* 0 -1 */,
876
+ 0 /* 0 0 */, 7 /* 0 1 */, 5 /* 1 -1 */, 1 /* 1 0 */, 3 /* 1 1 */
809
877
  ]
810
878
 
811
879
  const jsf = this.curve.getJSF(coeffs[a], coeffs[b])
@@ -830,26 +898,38 @@ export default class Point extends BasePoint {
830
898
  while (i >= 0) {
831
899
  let zero = true
832
900
  for (let j = 0; j < len; j++) {
833
- tmp[j] = naf[j][i] | 0
834
- if (tmp[j] !== 0) { zero = false }
901
+ tmp[j] = new BigNumber(typeof naf[j][i] === 'number' ? naf[j][i] : 0) // Ensure type consistency
902
+ if (!tmp[j].isZero()) { // Use BigNumber's built-in comparison
903
+ zero = false
904
+ }
905
+ }
906
+ if (!zero) {
907
+ break
835
908
  }
836
- if (!zero) { break }
837
909
  k++
838
910
  i--
839
911
  }
840
- if (i >= 0) { k++ }
912
+ if (i >= 0) {
913
+ k++
914
+ }
841
915
  acc = acc.dblp(k)
842
- if (i < 0) { break }
916
+ if (i < 0) {
917
+ break
918
+ }
919
+
920
+ const one = new BigNumber(1)
921
+ const two = new BigNumber(2)
843
922
 
844
923
  for (let j = 0; j < len; j++) {
845
924
  const z = tmp[j]
846
925
  let p
847
- if (z === 0) {
926
+
927
+ if (z.cmpn(0) === 0) { // Check if z is 0
848
928
  continue
849
- } else if (z > 0) {
850
- p = wnd[j][(z - 1) >> 1]
851
- } else if (z < 0) {
852
- p = wnd[j][(-z - 1) >> 1].neg()
929
+ } else if (!z.isNeg()) { // If z is positive
930
+ p = wnd[j][z.sub(one).div(two).toNumber()]
931
+ } else { // If z is negative
932
+ p = wnd[j][z.neg().sub(one).div(two).toNumber()].neg()
853
933
  }
854
934
 
855
935
  if (p.type === 'affine') {
@@ -860,23 +940,29 @@ export default class Point extends BasePoint {
860
940
  }
861
941
  }
862
942
  // Zeroify references
863
- for (let i = 0; i < len; i++) { wnd[i] = null }
943
+ for (let i = 0; i < len; i++) {
944
+ wnd[i] = []
945
+ }
864
946
 
865
- if (jacobianResult) {
947
+ if (jacobianResult === true) {
866
948
  return acc
867
949
  } else {
868
950
  return acc.toP()
869
951
  }
870
952
  }
871
953
 
872
- private _endoWnafMulAdd (points: Point[], coeffs, jacobianResult?: boolean): BasePoint {
873
- const npoints = this.curve._endoWnafT1
874
- const ncoeffs = this.curve._endoWnafT2
875
- let i
954
+ private _endoWnafMulAdd (
955
+ points: Point[],
956
+ coeffs: BigNumber[], // Explicitly type coeffs
957
+ jacobianResult?: boolean
958
+ ): BasePoint {
959
+ const npoints: Point[] = new Array(points.length * 2)
960
+ const ncoeffs: BigNumber[] = new Array(points.length * 2)
961
+ let i: number
876
962
  for (i = 0; i < points.length; i++) {
877
963
  const split = this.curve._endoSplit(coeffs[i])
878
964
  let p = points[i]
879
- let beta = p._getBeta()
965
+ let beta: Point = p._getBeta() ?? new Point(new BigNumber(0), new BigNumber(0))
880
966
 
881
967
  if (split.k1.negative !== 0) {
882
968
  split.k1.ineg()
@@ -892,31 +978,39 @@ export default class Point extends BasePoint {
892
978
  ncoeffs[i * 2] = split.k1
893
979
  ncoeffs[i * 2 + 1] = split.k2
894
980
  }
981
+
895
982
  const res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult)
896
983
 
897
984
  // Clean-up references to points and coefficients
898
985
  for (let j = 0; j < i * 2; j++) {
899
- npoints[j] = null
900
- ncoeffs[j] = null
986
+ npoints[j] = null as unknown as Point
987
+ ncoeffs[j] = null as unknown as BigNumber
901
988
  }
902
989
  return res
903
990
  }
904
991
 
905
992
  private _hasDoubles (k: BigNumber): boolean {
906
- if (this.precomputed == null) { return false }
993
+ if (this.precomputed == null) {
994
+ return false
995
+ }
907
996
 
908
997
  const doubles = this.precomputed.doubles
909
- if (typeof doubles !== 'object') { return false }
998
+ if (typeof doubles !== 'object') {
999
+ return false
1000
+ }
910
1001
 
911
- return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step)
912
- };
1002
+ return (
1003
+ doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step)
1004
+ )
1005
+ }
913
1006
 
914
1007
  private _getDoubles (
915
1008
  step?: number,
916
1009
  power?: number
917
1010
  ): { step: number, points: any[] } {
918
1011
  if (
919
- typeof this.precomputed === 'object' && this.precomputed !== null &&
1012
+ typeof this.precomputed === 'object' &&
1013
+ this.precomputed !== null &&
920
1014
  typeof this.precomputed.doubles === 'object' &&
921
1015
  this.precomputed.doubles !== null
922
1016
  ) {
@@ -926,20 +1020,24 @@ export default class Point extends BasePoint {
926
1020
  const doubles = [this]
927
1021
  /* eslint-disable @typescript-eslint/no-this-alias */
928
1022
  let acc: Point = this
929
- for (let i = 0; i < power; i += step) {
930
- for (let j = 0; j < step; j++) { acc = acc.dbl() }
1023
+ for (let i = 0; i < (power ?? 0); i += (step ?? 1)) {
1024
+ for (let j = 0; j < (step ?? 1); j++) {
1025
+ acc = acc.dbl()
1026
+ }
931
1027
  doubles.push(acc as this)
932
1028
  }
933
1029
  return {
934
- step,
1030
+ step: step ?? 1,
935
1031
  points: doubles
936
1032
  }
937
- };
1033
+ }
938
1034
 
939
1035
  private _getNAFPoints (wnd: number): { wnd: number, points: any[] } {
940
1036
  if (
941
- typeof this.precomputed === 'object' && this.precomputed !== null &&
942
- typeof this.precomputed.naf === 'object' && this.precomputed.naf !== null
1037
+ typeof this.precomputed === 'object' &&
1038
+ this.precomputed !== null &&
1039
+ typeof this.precomputed.naf === 'object' &&
1040
+ this.precomputed.naf !== null
943
1041
  ) {
944
1042
  return this.precomputed.naf
945
1043
  }
@@ -947,7 +1045,11 @@ export default class Point extends BasePoint {
947
1045
  const res = [this]
948
1046
  const max = (1 << wnd) - 1
949
1047
  const dbl = max === 1 ? null : this.dbl()
950
- for (let i = 1; i < max; i++) { res[i] = res[i - 1].add(dbl) as this }
1048
+ for (let i = 1; i < max; i++) {
1049
+ if (dbl !== null) {
1050
+ res[i] = res[i - 1].add(dbl) as this
1051
+ }
1052
+ }
951
1053
  return {
952
1054
  wnd,
953
1055
  points: res