xpi-ts 0.2.13 → 0.2.15

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 (277) hide show
  1. package/dist/cjs/lib/bitcore/address.js +75 -74
  2. package/dist/cjs/lib/bitcore/block/block.js +124 -126
  3. package/dist/cjs/lib/bitcore/block/blockheader.js +142 -208
  4. package/dist/cjs/lib/bitcore/block/index.js +3 -1
  5. package/dist/cjs/lib/bitcore/block/merkleblock.js +301 -0
  6. package/dist/cjs/lib/bitcore/crypto/bn.js +18 -22
  7. package/dist/cjs/lib/bitcore/crypto/ecdsa.js +50 -49
  8. package/dist/cjs/lib/bitcore/crypto/hash.js +25 -22
  9. package/dist/cjs/lib/bitcore/crypto/musig2.js +86 -92
  10. package/dist/cjs/lib/bitcore/crypto/point.js +42 -35
  11. package/dist/cjs/lib/bitcore/crypto/random.js +3 -2
  12. package/dist/cjs/lib/bitcore/crypto/schnorr.js +46 -55
  13. package/dist/cjs/lib/bitcore/crypto/signature.js +67 -55
  14. package/dist/cjs/lib/bitcore/crypto/sigtype.js +1 -1
  15. package/dist/cjs/lib/bitcore/encoding/base58.js +5 -4
  16. package/dist/cjs/lib/bitcore/encoding/base58check.js +14 -57
  17. package/dist/cjs/lib/bitcore/encoding/bufferreader.js +17 -17
  18. package/dist/cjs/lib/bitcore/encoding/bufferwriter.js +22 -26
  19. package/dist/cjs/lib/bitcore/encoding/varint.js +12 -11
  20. package/dist/cjs/lib/bitcore/errors.js +1 -0
  21. package/dist/cjs/lib/bitcore/hdprivatekey.js +74 -66
  22. package/dist/cjs/lib/bitcore/hdpublickey.js +96 -116
  23. package/dist/cjs/lib/bitcore/index.js +165 -172
  24. package/dist/cjs/lib/bitcore/message.js +36 -35
  25. package/dist/cjs/lib/bitcore/mnemonic/mnemonic.js +4 -3
  26. package/dist/cjs/lib/bitcore/mnemonic/pbkdf2.js +6 -5
  27. package/dist/cjs/lib/bitcore/mnemonic/words/french.js +2053 -0
  28. package/dist/cjs/lib/bitcore/mnemonic/words/index.js +2 -0
  29. package/dist/cjs/lib/bitcore/musig2/session.js +26 -25
  30. package/dist/cjs/lib/bitcore/musig2/signer.js +17 -16
  31. package/dist/cjs/lib/bitcore/networks.js +4 -3
  32. package/dist/cjs/lib/bitcore/opcode.js +11 -7
  33. package/dist/cjs/lib/bitcore/privatekey.js +42 -42
  34. package/dist/cjs/lib/bitcore/publickey.js +61 -57
  35. package/dist/cjs/lib/bitcore/script/interpreter/condition-stack.js +41 -0
  36. package/dist/cjs/lib/bitcore/script/interpreter/index.js +25 -0
  37. package/dist/cjs/lib/bitcore/script/interpreter/interpreter.js +1362 -0
  38. package/dist/cjs/lib/bitcore/script/interpreter/script-num.js +200 -0
  39. package/dist/cjs/lib/bitcore/script/interpreter/types.js +96 -0
  40. package/dist/cjs/lib/bitcore/{taproot.js → script/taproot.js} +107 -95
  41. package/dist/cjs/lib/bitcore/script.js +163 -104
  42. package/dist/cjs/lib/bitcore/taproot/musig2.js +51 -42
  43. package/dist/cjs/lib/bitcore/transaction/index.js +21 -21
  44. package/dist/cjs/lib/bitcore/transaction/input/multisig.js +10 -0
  45. package/dist/cjs/lib/bitcore/transaction/input/multisigscripthash.js +10 -0
  46. package/dist/cjs/lib/bitcore/transaction/input/publickey.js +10 -0
  47. package/dist/cjs/lib/bitcore/transaction/input/publickeyhash.js +10 -0
  48. package/dist/cjs/lib/bitcore/transaction/input/taproot.js +20 -0
  49. package/dist/cjs/lib/bitcore/transaction/input.js +145 -166
  50. package/dist/cjs/lib/bitcore/transaction/outpoint.js +89 -0
  51. package/dist/cjs/lib/bitcore/transaction/output.js +13 -8
  52. package/dist/cjs/lib/bitcore/transaction/sighash.js +96 -96
  53. package/dist/cjs/lib/bitcore/transaction/signature.js +39 -40
  54. package/dist/cjs/lib/bitcore/transaction/transaction.js +130 -118
  55. package/dist/cjs/lib/bitcore/transaction/unspentoutput.js +27 -23
  56. package/dist/cjs/lib/bitcore/util/bits.js +33 -0
  57. package/dist/cjs/lib/bitcore/util/buffer.js +29 -18
  58. package/dist/cjs/lib/bitcore/util/js.js +0 -3
  59. package/dist/cjs/lib/bitcore/util/merkle.js +53 -0
  60. package/dist/cjs/lib/bitcore/util/preconditions.js +8 -7
  61. package/dist/cjs/lib/bitcore/xaddress.js +27 -23
  62. package/dist/cjs/lib/{bitcore/taproot/nft.js → nft.js} +98 -29
  63. package/dist/cjs/lib/rank/index.js +28 -27
  64. package/dist/cjs/lib/rank/script.js +2 -1
  65. package/dist/cjs/lib/rank/transaction.js +2 -1
  66. package/dist/cjs/utils/string.js +6 -5
  67. package/dist/esm/lib/bitcore/address.js +42 -41
  68. package/dist/esm/lib/bitcore/block/block.js +126 -128
  69. package/dist/esm/lib/bitcore/block/blockheader.js +141 -207
  70. package/dist/esm/lib/bitcore/block/index.js +1 -0
  71. package/dist/esm/lib/bitcore/block/merkleblock.js +295 -0
  72. package/dist/esm/lib/bitcore/crypto/bn.js +18 -22
  73. package/dist/esm/lib/bitcore/crypto/ecdsa.js +25 -24
  74. package/dist/esm/lib/bitcore/crypto/hash.js +25 -22
  75. package/dist/esm/lib/bitcore/crypto/musig2.js +60 -66
  76. package/dist/esm/lib/bitcore/crypto/point.js +22 -15
  77. package/dist/esm/lib/bitcore/crypto/random.js +3 -2
  78. package/dist/esm/lib/bitcore/crypto/schnorr.js +35 -44
  79. package/dist/esm/lib/bitcore/crypto/signature.js +61 -49
  80. package/dist/esm/lib/bitcore/crypto/sigtype.js +1 -1
  81. package/dist/esm/lib/bitcore/encoding/base58.js +5 -4
  82. package/dist/esm/lib/bitcore/encoding/base58check.js +11 -57
  83. package/dist/esm/lib/bitcore/encoding/bufferreader.js +7 -7
  84. package/dist/esm/lib/bitcore/encoding/bufferwriter.js +18 -21
  85. package/dist/esm/lib/bitcore/encoding/varint.js +7 -6
  86. package/dist/esm/lib/bitcore/errors.js +1 -0
  87. package/dist/esm/lib/bitcore/hdprivatekey.js +47 -39
  88. package/dist/esm/lib/bitcore/hdpublickey.js +77 -97
  89. package/dist/esm/lib/bitcore/index.js +42 -45
  90. package/dist/esm/lib/bitcore/message.js +16 -15
  91. package/dist/esm/lib/bitcore/mnemonic/mnemonic.js +4 -3
  92. package/dist/esm/lib/bitcore/mnemonic/pbkdf2.js +5 -4
  93. package/dist/esm/lib/bitcore/mnemonic/words/french.js +2050 -0
  94. package/dist/esm/lib/bitcore/mnemonic/words/index.js +2 -0
  95. package/dist/esm/lib/bitcore/musig2/session.js +17 -16
  96. package/dist/esm/lib/bitcore/musig2/signer.js +19 -18
  97. package/dist/esm/lib/bitcore/networks.js +4 -3
  98. package/dist/esm/lib/bitcore/opcode.js +9 -5
  99. package/dist/esm/lib/bitcore/privatekey.js +25 -25
  100. package/dist/esm/lib/bitcore/publickey.js +46 -42
  101. package/dist/esm/lib/bitcore/script/interpreter/condition-stack.js +37 -0
  102. package/dist/esm/lib/bitcore/script/interpreter/index.js +4 -0
  103. package/dist/esm/lib/bitcore/script/interpreter/interpreter.js +1356 -0
  104. package/dist/esm/lib/bitcore/script/interpreter/script-num.js +195 -0
  105. package/dist/esm/lib/bitcore/script/interpreter/types.js +93 -0
  106. package/dist/esm/lib/bitcore/{taproot.js → script/taproot.js} +92 -81
  107. package/dist/esm/lib/bitcore/script.js +163 -102
  108. package/dist/esm/lib/bitcore/taproot/musig2.js +36 -27
  109. package/dist/esm/lib/bitcore/transaction/index.js +6 -6
  110. package/dist/esm/lib/bitcore/transaction/input/multisig.js +6 -0
  111. package/dist/esm/lib/bitcore/transaction/input/multisigscripthash.js +6 -0
  112. package/dist/esm/lib/bitcore/transaction/input/publickey.js +6 -0
  113. package/dist/esm/lib/bitcore/transaction/input/publickeyhash.js +6 -0
  114. package/dist/esm/lib/bitcore/transaction/input/taproot.js +16 -0
  115. package/dist/esm/lib/bitcore/transaction/input.js +55 -76
  116. package/dist/esm/lib/bitcore/transaction/outpoint.js +85 -0
  117. package/dist/esm/lib/bitcore/transaction/output.js +13 -8
  118. package/dist/esm/lib/bitcore/transaction/sighash.js +22 -22
  119. package/dist/esm/lib/bitcore/transaction/signature.js +16 -17
  120. package/dist/esm/lib/bitcore/transaction/transaction.js +58 -46
  121. package/dist/esm/lib/bitcore/transaction/unspentoutput.js +15 -11
  122. package/dist/esm/lib/bitcore/util/bits.js +27 -0
  123. package/dist/esm/lib/bitcore/util/buffer.js +20 -9
  124. package/dist/esm/lib/bitcore/util/js.js +0 -3
  125. package/dist/esm/lib/bitcore/util/merkle.js +47 -0
  126. package/dist/esm/lib/bitcore/util/preconditions.js +3 -2
  127. package/dist/esm/lib/bitcore/xaddress.js +16 -12
  128. package/dist/esm/lib/{bitcore/taproot/nft.js → nft.js} +97 -28
  129. package/dist/esm/lib/rank/index.js +15 -14
  130. package/dist/esm/lib/rank/script.js +1 -0
  131. package/dist/esm/lib/rank/transaction.js +1 -0
  132. package/dist/esm/utils/string.js +1 -0
  133. package/dist/types/lib/bitcore/address.d.ts +4 -3
  134. package/dist/types/lib/bitcore/address.d.ts.map +1 -1
  135. package/dist/types/lib/bitcore/block/block.d.ts +11 -19
  136. package/dist/types/lib/bitcore/block/block.d.ts.map +1 -1
  137. package/dist/types/lib/bitcore/block/blockheader.d.ts +30 -32
  138. package/dist/types/lib/bitcore/block/blockheader.d.ts.map +1 -1
  139. package/dist/types/lib/bitcore/block/index.d.ts +2 -0
  140. package/dist/types/lib/bitcore/block/index.d.ts.map +1 -1
  141. package/dist/types/lib/bitcore/block/merkleblock.d.ts +53 -0
  142. package/dist/types/lib/bitcore/block/merkleblock.d.ts.map +1 -0
  143. package/dist/types/lib/bitcore/crypto/bn.d.ts +2 -2
  144. package/dist/types/lib/bitcore/crypto/bn.d.ts.map +1 -1
  145. package/dist/types/lib/bitcore/crypto/ecdsa.d.ts +5 -4
  146. package/dist/types/lib/bitcore/crypto/ecdsa.d.ts.map +1 -1
  147. package/dist/types/lib/bitcore/crypto/hash.d.ts +3 -1
  148. package/dist/types/lib/bitcore/crypto/hash.d.ts.map +1 -1
  149. package/dist/types/lib/bitcore/crypto/musig2.d.ts +22 -30
  150. package/dist/types/lib/bitcore/crypto/musig2.d.ts.map +1 -1
  151. package/dist/types/lib/bitcore/crypto/point.d.ts +8 -3
  152. package/dist/types/lib/bitcore/crypto/point.d.ts.map +1 -1
  153. package/dist/types/lib/bitcore/crypto/random.d.ts +1 -0
  154. package/dist/types/lib/bitcore/crypto/random.d.ts.map +1 -1
  155. package/dist/types/lib/bitcore/crypto/schnorr.d.ts +5 -4
  156. package/dist/types/lib/bitcore/crypto/schnorr.d.ts.map +1 -1
  157. package/dist/types/lib/bitcore/crypto/signature.d.ts +4 -1
  158. package/dist/types/lib/bitcore/crypto/signature.d.ts.map +1 -1
  159. package/dist/types/lib/bitcore/crypto/sigtype.d.ts +1 -0
  160. package/dist/types/lib/bitcore/crypto/sigtype.d.ts.map +1 -1
  161. package/dist/types/lib/bitcore/encoding/base58.d.ts +1 -0
  162. package/dist/types/lib/bitcore/encoding/base58.d.ts.map +1 -1
  163. package/dist/types/lib/bitcore/encoding/base58check.d.ts +1 -2
  164. package/dist/types/lib/bitcore/encoding/base58check.d.ts.map +1 -1
  165. package/dist/types/lib/bitcore/encoding/bufferreader.d.ts +2 -1
  166. package/dist/types/lib/bitcore/encoding/bufferreader.d.ts.map +1 -1
  167. package/dist/types/lib/bitcore/encoding/bufferwriter.d.ts +2 -2
  168. package/dist/types/lib/bitcore/encoding/bufferwriter.d.ts.map +1 -1
  169. package/dist/types/lib/bitcore/encoding/varint.d.ts +3 -2
  170. package/dist/types/lib/bitcore/encoding/varint.d.ts.map +1 -1
  171. package/dist/types/lib/bitcore/errors.d.ts +3 -0
  172. package/dist/types/lib/bitcore/errors.d.ts.map +1 -1
  173. package/dist/types/lib/bitcore/hdprivatekey.d.ts +5 -4
  174. package/dist/types/lib/bitcore/hdprivatekey.d.ts.map +1 -1
  175. package/dist/types/lib/bitcore/hdpublickey.d.ts +4 -3
  176. package/dist/types/lib/bitcore/hdpublickey.d.ts.map +1 -1
  177. package/dist/types/lib/bitcore/index.d.ts +55 -60
  178. package/dist/types/lib/bitcore/index.d.ts.map +1 -1
  179. package/dist/types/lib/bitcore/message.d.ts +7 -4
  180. package/dist/types/lib/bitcore/message.d.ts.map +1 -1
  181. package/dist/types/lib/bitcore/mnemonic/mnemonic.d.ts +2 -0
  182. package/dist/types/lib/bitcore/mnemonic/mnemonic.d.ts.map +1 -1
  183. package/dist/types/lib/bitcore/mnemonic/pbkdf2.d.ts +1 -0
  184. package/dist/types/lib/bitcore/mnemonic/pbkdf2.d.ts.map +1 -1
  185. package/dist/types/lib/bitcore/mnemonic/words/french.d.ts +2 -0
  186. package/dist/types/lib/bitcore/mnemonic/words/french.d.ts.map +1 -0
  187. package/dist/types/lib/bitcore/mnemonic/words/index.d.ts +1 -0
  188. package/dist/types/lib/bitcore/mnemonic/words/index.d.ts.map +1 -1
  189. package/dist/types/lib/bitcore/musig2/session.d.ts +8 -7
  190. package/dist/types/lib/bitcore/musig2/session.d.ts.map +1 -1
  191. package/dist/types/lib/bitcore/musig2/signer.d.ts +10 -9
  192. package/dist/types/lib/bitcore/musig2/signer.d.ts.map +1 -1
  193. package/dist/types/lib/bitcore/networks.d.ts +1 -0
  194. package/dist/types/lib/bitcore/networks.d.ts.map +1 -1
  195. package/dist/types/lib/bitcore/opcode.d.ts +5 -0
  196. package/dist/types/lib/bitcore/opcode.d.ts.map +1 -1
  197. package/dist/types/lib/bitcore/privatekey.d.ts +5 -4
  198. package/dist/types/lib/bitcore/privatekey.d.ts.map +1 -1
  199. package/dist/types/lib/bitcore/publickey.d.ts +13 -6
  200. package/dist/types/lib/bitcore/publickey.d.ts.map +1 -1
  201. package/dist/types/lib/bitcore/{chunk.d.ts → script/chunk.d.ts} +1 -0
  202. package/dist/types/lib/bitcore/script/chunk.d.ts.map +1 -0
  203. package/dist/types/lib/bitcore/script/interpreter/condition-stack.d.ts +11 -0
  204. package/dist/types/lib/bitcore/script/interpreter/condition-stack.d.ts.map +1 -0
  205. package/dist/types/lib/bitcore/script/interpreter/index.d.ts +5 -0
  206. package/dist/types/lib/bitcore/script/interpreter/index.d.ts.map +1 -0
  207. package/dist/types/lib/bitcore/script/interpreter/interpreter.d.ts +21 -0
  208. package/dist/types/lib/bitcore/script/interpreter/interpreter.d.ts.map +1 -0
  209. package/dist/types/lib/bitcore/script/interpreter/script-num.d.ts +35 -0
  210. package/dist/types/lib/bitcore/script/interpreter/script-num.d.ts.map +1 -0
  211. package/dist/types/lib/bitcore/script/interpreter/types.d.ts +101 -0
  212. package/dist/types/lib/bitcore/script/interpreter/types.d.ts.map +1 -0
  213. package/dist/types/lib/bitcore/{taproot.d.ts → script/taproot.d.ts} +20 -7
  214. package/dist/types/lib/bitcore/script/taproot.d.ts.map +1 -0
  215. package/dist/types/lib/bitcore/script.d.ts +12 -11
  216. package/dist/types/lib/bitcore/script.d.ts.map +1 -1
  217. package/dist/types/lib/bitcore/taproot/musig2.d.ts +17 -16
  218. package/dist/types/lib/bitcore/taproot/musig2.d.ts.map +1 -1
  219. package/dist/types/lib/bitcore/transaction/index.d.ts +11 -11
  220. package/dist/types/lib/bitcore/transaction/index.d.ts.map +1 -1
  221. package/dist/types/lib/bitcore/transaction/input/multisig.d.ts +5 -0
  222. package/dist/types/lib/bitcore/transaction/input/multisig.d.ts.map +1 -0
  223. package/dist/types/lib/bitcore/transaction/input/multisigscripthash.d.ts +5 -0
  224. package/dist/types/lib/bitcore/transaction/input/multisigscripthash.d.ts.map +1 -0
  225. package/dist/types/lib/bitcore/transaction/input/publickey.d.ts +5 -0
  226. package/dist/types/lib/bitcore/transaction/input/publickey.d.ts.map +1 -0
  227. package/dist/types/lib/bitcore/transaction/input/publickeyhash.d.ts +6 -0
  228. package/dist/types/lib/bitcore/transaction/input/publickeyhash.d.ts.map +1 -0
  229. package/dist/types/lib/bitcore/transaction/input/taproot.d.ts +18 -0
  230. package/dist/types/lib/bitcore/transaction/input/taproot.d.ts.map +1 -0
  231. package/dist/types/lib/bitcore/transaction/input.d.ts +27 -35
  232. package/dist/types/lib/bitcore/transaction/input.d.ts.map +1 -1
  233. package/dist/types/lib/bitcore/transaction/outpoint.d.ts +32 -0
  234. package/dist/types/lib/bitcore/transaction/outpoint.d.ts.map +1 -0
  235. package/dist/types/lib/bitcore/transaction/output.d.ts +3 -1
  236. package/dist/types/lib/bitcore/transaction/output.d.ts.map +1 -1
  237. package/dist/types/lib/bitcore/transaction/sighash.d.ts +8 -7
  238. package/dist/types/lib/bitcore/transaction/sighash.d.ts.map +1 -1
  239. package/dist/types/lib/bitcore/transaction/signature.d.ts +3 -2
  240. package/dist/types/lib/bitcore/transaction/signature.d.ts.map +1 -1
  241. package/dist/types/lib/bitcore/transaction/transaction.d.ts +18 -15
  242. package/dist/types/lib/bitcore/transaction/transaction.d.ts.map +1 -1
  243. package/dist/types/lib/bitcore/transaction/unspentoutput.d.ts +9 -7
  244. package/dist/types/lib/bitcore/transaction/unspentoutput.d.ts.map +1 -1
  245. package/dist/types/lib/bitcore/unit.d.ts.map +1 -1
  246. package/dist/types/lib/bitcore/util/base32.d.ts.map +1 -1
  247. package/dist/types/lib/bitcore/util/bits.d.ts +5 -0
  248. package/dist/types/lib/bitcore/util/bits.d.ts.map +1 -0
  249. package/dist/types/lib/bitcore/util/buffer.d.ts +10 -2
  250. package/dist/types/lib/bitcore/util/buffer.d.ts.map +1 -1
  251. package/dist/types/lib/bitcore/util/js.d.ts +0 -1
  252. package/dist/types/lib/bitcore/util/js.d.ts.map +1 -1
  253. package/dist/types/lib/bitcore/util/merkle.d.ts +6 -0
  254. package/dist/types/lib/bitcore/util/merkle.d.ts.map +1 -0
  255. package/dist/types/lib/bitcore/util/preconditions.d.ts.map +1 -1
  256. package/dist/types/lib/bitcore/xaddress.d.ts +1 -0
  257. package/dist/types/lib/bitcore/xaddress.d.ts.map +1 -1
  258. package/dist/types/lib/{bitcore/taproot/nft.d.ts → nft.d.ts} +26 -12
  259. package/dist/types/lib/nft.d.ts.map +1 -0
  260. package/dist/types/lib/rank/index.d.ts +1 -0
  261. package/dist/types/lib/rank/index.d.ts.map +1 -1
  262. package/dist/types/lib/rank/script.d.ts +1 -0
  263. package/dist/types/lib/rank/script.d.ts.map +1 -1
  264. package/dist/types/lib/rank/transaction.d.ts +1 -0
  265. package/dist/types/lib/rank/transaction.d.ts.map +1 -1
  266. package/dist/types/utils/string.d.ts +1 -0
  267. package/dist/types/utils/string.d.ts.map +1 -1
  268. package/package.json +3 -2
  269. package/dist/cjs/lib/bitcore/script/interpreter.js +0 -1757
  270. package/dist/esm/lib/bitcore/script/interpreter.js +0 -1753
  271. package/dist/types/lib/bitcore/chunk.d.ts.map +0 -1
  272. package/dist/types/lib/bitcore/script/interpreter.d.ts +0 -101
  273. package/dist/types/lib/bitcore/script/interpreter.d.ts.map +0 -1
  274. package/dist/types/lib/bitcore/taproot/nft.d.ts.map +0 -1
  275. package/dist/types/lib/bitcore/taproot.d.ts.map +0 -1
  276. /package/dist/cjs/lib/bitcore/{chunk.js → script/chunk.js} +0 -0
  277. /package/dist/esm/lib/bitcore/{chunk.js → script/chunk.js} +0 -0
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MerkleBlock = exports.MerkleBlockValidationError = exports.InvalidMerkleBlockError = void 0;
4
+ const buffer_1 = require("buffer/");
5
+ const blockheader_js_1 = require("./blockheader.js");
6
+ const bufferreader_js_1 = require("../encoding/bufferreader.js");
7
+ const bufferwriter_js_1 = require("../encoding/bufferwriter.js");
8
+ const hash_js_1 = require("../crypto/hash.js");
9
+ const buffer_js_1 = require("../util/buffer.js");
10
+ const index_js_1 = require("../transaction/index.js");
11
+ const errors_js_1 = require("../errors.js");
12
+ const preconditions_js_1 = require("../util/preconditions.js");
13
+ const bits_js_1 = require("../util/bits.js");
14
+ const merkle_js_1 = require("../util/merkle.js");
15
+ class InvalidMerkleBlockError extends Error {
16
+ code;
17
+ context;
18
+ constructor(message, context = {}) {
19
+ super(message);
20
+ this.name = 'InvalidMerkleBlockError';
21
+ this.code = 'INVALID_MERKLE_BLOCK';
22
+ this.context = context;
23
+ }
24
+ }
25
+ exports.InvalidMerkleBlockError = InvalidMerkleBlockError;
26
+ class MerkleBlockValidationError extends Error {
27
+ code;
28
+ context;
29
+ constructor(message, context = {}) {
30
+ super(message);
31
+ this.name = 'MerkleBlockValidationError';
32
+ this.code = 'MERKLE_BLOCK_VALIDATION_ERROR';
33
+ this.context = context;
34
+ }
35
+ }
36
+ exports.MerkleBlockValidationError = MerkleBlockValidationError;
37
+ class MerkleBlock {
38
+ static NULL_HASH = buffer_js_1.NULL_HASH;
39
+ header;
40
+ numTransactions;
41
+ hashes;
42
+ flags;
43
+ constructor(arg) {
44
+ if (arg instanceof MerkleBlock) {
45
+ return arg;
46
+ }
47
+ if (!arg) {
48
+ throw new InvalidMerkleBlockError('Argument is required for MerkleBlock', {
49
+ received: arg,
50
+ });
51
+ }
52
+ const info = MerkleBlock._from(arg);
53
+ if (info.header instanceof blockheader_js_1.BlockHeader) {
54
+ this.header = info.header;
55
+ }
56
+ else {
57
+ this.header = new blockheader_js_1.BlockHeader(info.header);
58
+ }
59
+ this.numTransactions = info.numTransactions;
60
+ this.hashes = info.hashes;
61
+ this.flags = info.flags;
62
+ }
63
+ static fromObject(obj) {
64
+ if (!obj.header) {
65
+ throw new MerkleBlockValidationError('Block header is required', {
66
+ header: obj.header,
67
+ });
68
+ }
69
+ return new MerkleBlock({
70
+ header: blockheader_js_1.BlockHeader.fromObject(obj.header),
71
+ numTransactions: obj.numTransactions,
72
+ hashes: obj.hashes,
73
+ flags: obj.flags,
74
+ });
75
+ }
76
+ static fromBuffer(buf) {
77
+ if (!buffer_js_1.BufferUtil.isBuffer(buf) || buf.length === 0) {
78
+ throw new InvalidMerkleBlockError('Invalid buffer provided', {
79
+ isBuffer: buffer_js_1.BufferUtil.isBuffer(buf),
80
+ length: buf?.length,
81
+ });
82
+ }
83
+ return MerkleBlock.fromBufferReader(new bufferreader_js_1.BufferReader(buf));
84
+ }
85
+ static fromBufferReader(br) {
86
+ const info = MerkleBlock._readFromBuffer(br);
87
+ return new MerkleBlock(info);
88
+ }
89
+ static fromString(str) {
90
+ preconditions_js_1.Preconditions.checkArgument(typeof str === 'string' && str.length > 0, 'str', 'Invalid hex string provided');
91
+ return MerkleBlock.fromBuffer(buffer_1.Buffer.from(str, 'hex'));
92
+ }
93
+ toBuffer() {
94
+ return this.toBufferWriter().concat();
95
+ }
96
+ toBufferWriter(bw) {
97
+ if (!bw) {
98
+ bw = new bufferwriter_js_1.BufferWriter();
99
+ }
100
+ bw.write(this.header.toBuffer());
101
+ bw.writeUInt32LE(this.numTransactions);
102
+ bw.writeVarintNum(this.hashes.length);
103
+ for (const hash of this.hashes) {
104
+ bw.write(buffer_1.Buffer.from(hash, 'hex'));
105
+ }
106
+ const flagBytes = (0, bits_js_1.bitsToBytes)(this.flags.map(f => f !== 0));
107
+ bw.writeVarintNum(flagBytes.length);
108
+ for (const byte of flagBytes) {
109
+ bw.writeUInt8(byte);
110
+ }
111
+ return bw;
112
+ }
113
+ toObject() {
114
+ return {
115
+ header: this.header.toObject(),
116
+ numTransactions: this.numTransactions,
117
+ hashes: this.hashes,
118
+ flags: this.flags,
119
+ };
120
+ }
121
+ toJSON() {
122
+ return this.toObject();
123
+ }
124
+ validMerkleTree() {
125
+ if (!Array.isArray(this.flags) || !Array.isArray(this.hashes)) {
126
+ return false;
127
+ }
128
+ if (this.hashes.length > this.numTransactions) {
129
+ return false;
130
+ }
131
+ if (this.flags.length * 8 < this.hashes.length) {
132
+ return false;
133
+ }
134
+ const height = this._calcTreeHeight();
135
+ const state = {
136
+ hashesUsed: 0,
137
+ flagBitsUsed: 0,
138
+ txs: [],
139
+ };
140
+ const root = this._traverseAndExtract(height, 0, state);
141
+ if (state.hashesUsed !== this.hashes.length) {
142
+ return false;
143
+ }
144
+ return buffer_js_1.BufferUtil.equals(root, this.header.merkleRoot);
145
+ }
146
+ filteredTxsHash() {
147
+ if (!Array.isArray(this.flags) || !Array.isArray(this.hashes)) {
148
+ throw new errors_js_1.BitcoreError.MerkleBlock.InvalidMerkleTree();
149
+ }
150
+ if (this.hashes.length > this.numTransactions) {
151
+ throw new errors_js_1.BitcoreError.MerkleBlock.InvalidMerkleTree();
152
+ }
153
+ if (this.flags.length * 8 < this.hashes.length) {
154
+ throw new errors_js_1.BitcoreError.MerkleBlock.InvalidMerkleTree();
155
+ }
156
+ if (this.hashes.length === 1) {
157
+ return [];
158
+ }
159
+ const height = this._calcTreeHeight();
160
+ const state = {
161
+ hashesUsed: 0,
162
+ flagBitsUsed: 0,
163
+ txs: [],
164
+ };
165
+ this._traverseAndExtract(height, 0, state);
166
+ if (state.hashesUsed !== this.hashes.length) {
167
+ throw new errors_js_1.BitcoreError.MerkleBlock.InvalidMerkleTree();
168
+ }
169
+ return state.txs;
170
+ }
171
+ hasTransaction(tx) {
172
+ if (!tx) {
173
+ throw new errors_js_1.BitcoreError('Transaction cannot be undefined');
174
+ }
175
+ if (!(tx instanceof index_js_1.Transaction) && typeof tx !== 'string') {
176
+ throw new errors_js_1.BitcoreError('Invalid transaction: must be string or Transaction');
177
+ }
178
+ if (typeof tx === 'string' && !/^[0-9a-fA-F]{64}$/.test(tx)) {
179
+ throw new errors_js_1.BitcoreError('Invalid transaction ID format: must be 64-character hex string');
180
+ }
181
+ let searchTxid;
182
+ let searchHash;
183
+ if (tx instanceof index_js_1.Transaction) {
184
+ searchTxid = buffer_js_1.BufferUtil.reverse(buffer_1.Buffer.from(tx.txid, 'hex')).toString('hex');
185
+ searchHash = buffer_js_1.BufferUtil.reverse(buffer_1.Buffer.from(tx.hash, 'hex')).toString('hex');
186
+ }
187
+ else {
188
+ searchTxid = buffer_js_1.BufferUtil.reverse(buffer_1.Buffer.from(tx, 'hex')).toString('hex');
189
+ searchHash = searchTxid;
190
+ }
191
+ const state = {
192
+ hashesUsed: 0,
193
+ flagBitsUsed: 0,
194
+ txs: [],
195
+ };
196
+ const height = this._calcTreeHeight();
197
+ this._traverseAndExtract(height, 0, state);
198
+ return state.txs.includes(searchTxid) || state.txs.includes(searchHash);
199
+ }
200
+ static _from(arg) {
201
+ if (buffer_js_1.BufferUtil.isBuffer(arg)) {
202
+ return MerkleBlock._readFromBuffer(new bufferreader_js_1.BufferReader(arg));
203
+ }
204
+ else if (typeof arg === 'object' && arg !== null) {
205
+ return MerkleBlock._validateData(arg);
206
+ }
207
+ throw new InvalidMerkleBlockError('Unrecognized argument for MerkleBlock', {
208
+ type: typeof arg,
209
+ arg,
210
+ });
211
+ }
212
+ static _validateData(data) {
213
+ if (!data.header) {
214
+ throw new MerkleBlockValidationError('Block header is required', {
215
+ header: data.header,
216
+ });
217
+ }
218
+ if (typeof data.numTransactions !== 'number' || data.numTransactions < 0) {
219
+ throw new MerkleBlockValidationError('Number of transactions must be a non-negative number', {
220
+ numTransactions: data.numTransactions,
221
+ type: typeof data.numTransactions,
222
+ });
223
+ }
224
+ if (!Array.isArray(data.hashes)) {
225
+ throw new MerkleBlockValidationError('Hashes must be an array', {
226
+ hashes: data.hashes,
227
+ type: typeof data.hashes,
228
+ });
229
+ }
230
+ if (!Array.isArray(data.flags)) {
231
+ throw new MerkleBlockValidationError('Flags must be an array', {
232
+ flags: data.flags,
233
+ type: typeof data.flags,
234
+ });
235
+ }
236
+ const header = data.header instanceof blockheader_js_1.BlockHeader
237
+ ? data.header
238
+ : new blockheader_js_1.BlockHeader(data.header);
239
+ return {
240
+ header,
241
+ numTransactions: data.numTransactions,
242
+ hashes: data.hashes,
243
+ flags: data.flags,
244
+ };
245
+ }
246
+ static _readFromBuffer(br) {
247
+ if (br.finished()) {
248
+ throw new InvalidMerkleBlockError('No merkleblock data received');
249
+ }
250
+ const header = blockheader_js_1.BlockHeader.fromBufferReader(br);
251
+ const numTransactions = br.readUInt32LE();
252
+ const numHashes = br.readVarintNum();
253
+ const hashes = [];
254
+ for (let i = 0; i < numHashes; i++) {
255
+ hashes.push(br.read(32).toString('hex'));
256
+ }
257
+ const numFlags = br.readVarintNum();
258
+ const flagBytes = [];
259
+ for (let i = 0; i < numFlags; i++) {
260
+ flagBytes.push(br.readUInt8());
261
+ }
262
+ const flags = (0, bits_js_1.bytesToBits)(flagBytes).map(b => (b ? 1 : 0));
263
+ return { header, numTransactions, hashes, flags };
264
+ }
265
+ _calcTreeWidth(height) {
266
+ return (0, merkle_js_1.calcTreeWidth)(this.numTransactions * 2, height);
267
+ }
268
+ _calcTreeHeight() {
269
+ let height = 0;
270
+ while (this._calcTreeWidth(height) > 1) {
271
+ height++;
272
+ }
273
+ return height;
274
+ }
275
+ _traverseAndExtract(depth, pos, state) {
276
+ if (state.flagBitsUsed > this.flags.length * 8) {
277
+ return MerkleBlock.NULL_HASH;
278
+ }
279
+ const isParentOfMatch = (0, bits_js_1.extractBit)(this.flags, state.flagBitsUsed++);
280
+ if (depth === 0 || !isParentOfMatch) {
281
+ if (state.hashesUsed >= this.hashes.length) {
282
+ return MerkleBlock.NULL_HASH;
283
+ }
284
+ const hash = this.hashes[state.hashesUsed++];
285
+ if (depth === 0 && isParentOfMatch) {
286
+ state.txs.push(hash);
287
+ }
288
+ return buffer_1.Buffer.from(hash, 'hex');
289
+ }
290
+ const left = this._traverseAndExtract(depth - 1, pos * 2, state);
291
+ let right;
292
+ if (pos * 2 + 1 < this._calcTreeWidth(depth - 1)) {
293
+ right = this._traverseAndExtract(depth - 1, pos * 2 + 1, state);
294
+ }
295
+ else {
296
+ right = MerkleBlock.NULL_HASH;
297
+ }
298
+ return hash_js_1.Hash.sha256sha256(buffer_1.Buffer.concat([left, right]));
299
+ }
300
+ }
301
+ exports.MerkleBlock = MerkleBlock;
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BN = void 0;
7
7
  const bn_js_1 = __importDefault(require("bn.js"));
8
+ const util_1 = require("../util");
8
9
  class BNWrapper {
9
10
  _bn;
10
11
  static Zero = new BNWrapper(0);
@@ -14,7 +15,7 @@ class BNWrapper {
14
15
  if (n instanceof bn_js_1.default) {
15
16
  this._bn = n.clone();
16
17
  }
17
- else if (Buffer.isBuffer(n)) {
18
+ else if (util_1.BufferUtil.isBuffer(n)) {
18
19
  if (base === 'le' || base === 'be') {
19
20
  this._bn = new bn_js_1.default(n, undefined, base);
20
21
  }
@@ -33,7 +34,7 @@ class BNWrapper {
33
34
  static fromBuffer(buf, opts) {
34
35
  let buffer = buf;
35
36
  if (opts?.size) {
36
- buffer = Buffer.alloc(opts.size);
37
+ buffer = util_1.BufferUtil.alloc(opts.size);
37
38
  buf.copy(buffer, opts.size - buf.length);
38
39
  }
39
40
  if (opts?.endian === 'little') {
@@ -43,7 +44,7 @@ class BNWrapper {
43
44
  }
44
45
  static fromSM(buf, opts) {
45
46
  if (buf.length === 0) {
46
- return BNWrapper.fromBuffer(Buffer.from([0]));
47
+ return BNWrapper.fromBuffer(util_1.BufferUtil.from([0]));
47
48
  }
48
49
  let endian = 'big';
49
50
  if (opts) {
@@ -79,17 +80,17 @@ class BNWrapper {
79
80
  return BNWrapper.fromSM(buf, { endian: 'little' });
80
81
  }
81
82
  static reversebuf(buf) {
82
- const buf2 = Buffer.alloc(buf.length);
83
+ const buf2 = util_1.BufferUtil.alloc(buf.length);
83
84
  for (let i = 0; i < buf.length; i++) {
84
85
  buf2[i] = buf[buf.length - 1 - i];
85
86
  }
86
87
  return buf2;
87
88
  }
88
89
  static trim(buf, natlen) {
89
- return buf.subarray(natlen - buf.length, buf.length);
90
+ return buf.slice(natlen - buf.length, buf.length);
90
91
  }
91
92
  static pad(buf, natlen, size) {
92
- const rbuf = Buffer.alloc(size);
93
+ const rbuf = util_1.BufferUtil.alloc(size);
93
94
  for (let i = 0; i < buf.length; i++) {
94
95
  rbuf[rbuf.length - 1 - i] = buf[buf.length - 1 - i];
95
96
  }
@@ -120,28 +121,23 @@ class BNWrapper {
120
121
  return this._bn.toString(base);
121
122
  }
122
123
  toBuffer(opts) {
123
- let buf;
124
- if (opts && opts.size) {
125
- buf = this._bn.toArrayLike(Buffer, opts.endian === 'little' ? 'le' : 'be');
126
- if (buf.length === opts.size) {
127
- }
128
- else if (buf.length > opts.size) {
129
- buf = buf.subarray(buf.length - opts.size);
124
+ let hex = this._bn.toString('hex', 2);
125
+ let buf = util_1.BufferUtil.from(hex, 'hex');
126
+ if (opts?.size) {
127
+ if (buf.length > opts.size) {
128
+ buf = buf.slice(buf.length - opts.size);
130
129
  }
131
130
  else if (buf.length < opts.size) {
132
- const padded = Buffer.alloc(opts.size);
131
+ const padded = util_1.BufferUtil.alloc(opts.size);
133
132
  buf.copy(padded, opts.size - buf.length);
134
133
  buf = padded;
135
134
  }
136
135
  }
137
- else {
138
- buf = this._bn.toArrayLike(Buffer, opts?.endian === 'little' ? 'le' : 'be');
136
+ if (opts?.endian === 'little') {
137
+ buf = util_1.BufferUtil.from(buf).reverse();
139
138
  }
140
139
  return buf;
141
140
  }
142
- toArrayLike(ArrayType, endian, length) {
143
- return this._bn.toArrayLike(ArrayType, endian || 'be', length);
144
- }
145
141
  mul(r) {
146
142
  return new BNWrapper(this._bn.mul(r._bn));
147
143
  }
@@ -202,7 +198,7 @@ class BNWrapper {
202
198
  if (this.cmp(BNWrapper.Zero) === -1) {
203
199
  buf = this.neg().toBuffer();
204
200
  if (buf[0] & 0x80) {
205
- buf = Buffer.concat([Buffer.from([0x80]), buf]);
201
+ buf = util_1.BufferUtil.concat([util_1.BufferUtil.from([0x80]), buf]);
206
202
  }
207
203
  else {
208
204
  buf[0] = buf[0] | 0x80;
@@ -211,11 +207,11 @@ class BNWrapper {
211
207
  else {
212
208
  buf = this.toBuffer();
213
209
  if (buf[0] & 0x80) {
214
- buf = Buffer.concat([Buffer.from([0x00]), buf]);
210
+ buf = util_1.BufferUtil.concat([util_1.BufferUtil.from([0x00]), buf]);
215
211
  }
216
212
  }
217
213
  if (buf.length === 1 && buf[0] === 0) {
218
- buf = Buffer.from([]);
214
+ buf = util_1.BufferUtil.from([]);
219
215
  }
220
216
  return buf;
221
217
  }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ECDSA = void 0;
4
- const bn_js_1 = require("./bn.js");
5
- const point_js_1 = require("./point.js");
6
- const signature_js_1 = require("./signature.js");
7
- const hash_js_1 = require("./hash.js");
8
- const random_js_1 = require("./random.js");
9
- const publickey_js_1 = require("../publickey.js");
4
+ const bn_1 = require("./bn");
5
+ const point_1 = require("./point");
6
+ const signature_1 = require("./signature");
7
+ const hash_1 = require("./hash");
8
+ const random_1 = require("./random");
9
+ const publickey_1 = require("../publickey");
10
+ const util_1 = require("../util");
10
11
  class ECDSA {
11
12
  hashbuf;
12
13
  endian;
@@ -62,35 +63,35 @@ class ECDSA {
62
63
  return new ECDSA(obj);
63
64
  }
64
65
  randomK() {
65
- const N = point_js_1.Point.getN();
66
+ const N = point_1.Point.getN();
66
67
  let k;
67
68
  do {
68
- k = new bn_js_1.BN(random_js_1.Random.getRandomBuffer(32), 'be');
69
- } while (!(k.lt(N) && k.gt(new bn_js_1.BN(0))));
69
+ k = bn_1.BN.fromBuffer(random_1.Random.getRandomBuffer(32));
70
+ } while (!(k.lt(N) && k.gt(new bn_1.BN(0))));
70
71
  this.k = k;
71
72
  return this;
72
73
  }
73
74
  deterministicK(badrs = 0) {
74
- let v = Buffer.alloc(32);
75
+ let v = util_1.BufferUtil.alloc(32);
75
76
  v.fill(0x01);
76
- let k = Buffer.alloc(32);
77
+ let k = util_1.BufferUtil.alloc(32);
77
78
  k.fill(0x00);
78
79
  const x = this.privkey.toBuffer();
79
80
  const hashbuf = this.endian === 'little'
80
81
  ? this.reverseBuffer(this.hashbuf)
81
82
  : this.hashbuf;
82
- k = hash_js_1.Hash.sha256hmac(Buffer.concat([v, Buffer.from([0x00]), x, hashbuf]), k);
83
- v = hash_js_1.Hash.sha256hmac(v, k);
84
- k = hash_js_1.Hash.sha256hmac(Buffer.concat([v, Buffer.from([0x01]), x, hashbuf]), k);
85
- v = hash_js_1.Hash.sha256hmac(v, k);
86
- v = hash_js_1.Hash.sha256hmac(v, k);
87
- let T = new bn_js_1.BN(v, 'be');
88
- const N = point_js_1.Point.getN();
89
- for (let i = 0; i < badrs || !(T.lt(N) && T.gt(new bn_js_1.BN(0))); i++) {
90
- k = hash_js_1.Hash.sha256hmac(Buffer.concat([v, Buffer.from([0x00])]), k);
91
- v = hash_js_1.Hash.sha256hmac(v, k);
92
- v = hash_js_1.Hash.sha256hmac(v, k);
93
- T = new bn_js_1.BN(v, 'be');
83
+ k = hash_1.Hash.sha256hmac(util_1.BufferUtil.concat([v, util_1.BufferUtil.from([0x00]), x, hashbuf]), k);
84
+ v = hash_1.Hash.sha256hmac(v, k);
85
+ k = hash_1.Hash.sha256hmac(util_1.BufferUtil.concat([v, util_1.BufferUtil.from([0x01]), x, hashbuf]), k);
86
+ v = hash_1.Hash.sha256hmac(v, k);
87
+ v = hash_1.Hash.sha256hmac(v, k);
88
+ let T = new bn_1.BN(v, 'be');
89
+ const N = point_1.Point.getN();
90
+ for (let i = 0; i < badrs || !(T.lt(N) && T.gt(new bn_1.BN(0))); i++) {
91
+ k = hash_1.Hash.sha256hmac(util_1.BufferUtil.concat([v, util_1.BufferUtil.from([0x00])]), k);
92
+ v = hash_1.Hash.sha256hmac(v, k);
93
+ v = hash_1.Hash.sha256hmac(v, k);
94
+ T = new bn_1.BN(v, 'be');
94
95
  }
95
96
  this.k = T;
96
97
  return this;
@@ -100,45 +101,45 @@ class ECDSA {
100
101
  if (!(i === 0 || i === 1 || i === 2 || i === 3)) {
101
102
  throw new Error('i must be equal to 0, 1, 2, or 3');
102
103
  }
103
- const e = new bn_js_1.BN(this.hashbuf, 'be');
104
+ const e = bn_1.BN.fromBuffer(this.hashbuf, { endian: 'big' });
104
105
  const r = this.sig.r;
105
106
  const s = this.sig.s;
106
107
  const isYOdd = (i & 1) !== 0;
107
108
  const isSecondKey = i >> 1 !== 0;
108
- const n = point_js_1.Point.getN();
109
- const G = point_js_1.Point.getG();
109
+ const n = point_1.Point.getN();
110
+ const G = point_1.Point.getG();
110
111
  const x = isSecondKey ? r.add(n) : r;
111
- const R = point_js_1.Point.fromX(isYOdd, x);
112
+ const R = point_1.Point.fromX(isYOdd, x);
112
113
  const nR = R.mul(n);
113
114
  if (!nR.isInfinity()) {
114
115
  throw new Error('nR is not a valid curve point');
115
116
  }
116
- const eNeg = e.neg().mod(n);
117
+ const eNeg = e.neg().umod(n);
117
118
  const rInv = r.invm(n);
118
119
  const Q = R.mul(s).add(G.mul(eNeg)).mul(rInv);
119
- const pubkey = publickey_js_1.PublicKey.fromPoint(Q, this.sig.compressed);
120
+ const pubkey = publickey_1.PublicKey.fromPoint(Q, this.sig.compressed);
120
121
  return pubkey;
121
122
  }
122
123
  sigError() {
123
- if (!Buffer.isBuffer(this.hashbuf) || this.hashbuf.length !== 32) {
124
+ if (!util_1.BufferUtil.isBuffer(this.hashbuf) || this.hashbuf.length !== 32) {
124
125
  return 'hashbuf must be a 32 byte buffer';
125
126
  }
126
127
  const r = this.sig.r;
127
128
  const s = this.sig.s;
128
- const N = point_js_1.Point.getN();
129
- if (!(r.gt(new bn_js_1.BN(0)) && r.lt(N)) || !(s.gt(new bn_js_1.BN(0)) && s.lt(N))) {
129
+ const N = point_1.Point.getN();
130
+ if (!(r.gt(new bn_1.BN(0)) && r.lt(N)) || !(s.gt(new bn_1.BN(0)) && s.lt(N))) {
130
131
  return 'r and s not in range';
131
132
  }
132
- const e = new bn_js_1.BN(this.hashbuf, this.endian === 'little' ? 'le' : 'be');
133
- const n = point_js_1.Point.getN();
133
+ const e = bn_1.BN.fromBuffer(this.hashbuf, { endian: this.endian || 'big' });
134
+ const n = point_1.Point.getN();
134
135
  const sinv = s.invm(n);
135
- const u1 = sinv.mul(e).mod(n);
136
- const u2 = sinv.mul(r).mod(n);
137
- const p = point_js_1.Point.getG().mulAdd(u1, this.pubkey.point, u2);
136
+ const u1 = sinv.mul(e).umod(n);
137
+ const u2 = sinv.mul(r).umod(n);
138
+ const p = point_1.Point.getG().mulAdd(u1, this.pubkey.point, u2);
138
139
  if (p.isInfinity()) {
139
140
  return 'p is infinity';
140
141
  }
141
- if (p.getX().mod(n).cmp(r) !== 0) {
142
+ if (p.x.umod(n).cmp(r) !== 0) {
142
143
  return 'Invalid signature';
143
144
  }
144
145
  else {
@@ -146,15 +147,15 @@ class ECDSA {
146
147
  }
147
148
  }
148
149
  static toLowS(s) {
149
- const lowSThreshold = new bn_js_1.BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0', 16);
150
+ const lowSThreshold = new bn_1.BN('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0', 16);
150
151
  if (s.gt(lowSThreshold)) {
151
- s = point_js_1.Point.getN().sub(s);
152
+ s = point_1.Point.getN().sub(s);
152
153
  }
153
154
  return s;
154
155
  }
155
156
  _findSignature(d, e) {
156
- const N = point_js_1.Point.getN();
157
- const G = point_js_1.Point.getG();
157
+ const N = point_1.Point.getN();
158
+ const G = point_1.Point.getG();
158
159
  let badrs = 0;
159
160
  let k, Q, r, s;
160
161
  do {
@@ -164,12 +165,12 @@ class ECDSA {
164
165
  badrs++;
165
166
  k = this.k;
166
167
  Q = G.mul(k);
167
- r = Q.getX().mod(N);
168
+ r = Q.x.umod(N);
168
169
  s = k
169
170
  .invm(N)
170
171
  .mul(e.add(d.mul(r)))
171
- .mod(N);
172
- } while (r.cmp(new bn_js_1.BN(0)) <= 0 || s.cmp(new bn_js_1.BN(0)) <= 0);
172
+ .umod(N);
173
+ } while (r.cmp(new bn_1.BN(0)) <= 0 || s.cmp(new bn_1.BN(0)) <= 0);
173
174
  s = ECDSA.toLowS(s);
174
175
  return { s, r, compressed: this.pubkey.compressed };
175
176
  }
@@ -180,13 +181,13 @@ class ECDSA {
180
181
  if (!hashbuf || !privkey || !d) {
181
182
  throw new Error('invalid parameters');
182
183
  }
183
- if (!Buffer.isBuffer(hashbuf) || hashbuf.length !== 32) {
184
+ if (!util_1.BufferUtil.isBuffer(hashbuf) || hashbuf.length !== 32) {
184
185
  throw new Error('hashbuf must be a 32 byte buffer');
185
186
  }
186
- const e = new bn_js_1.BN(hashbuf, this.endian === 'little' ? 'le' : 'be');
187
+ const e = bn_1.BN.fromBuffer(hashbuf, { endian: this.endian || 'big' });
187
188
  const obj = this._findSignature(d, e);
188
189
  obj.compressed = this.pubkey.compressed;
189
- this.sig = new signature_js_1.Signature(obj);
190
+ this.sig = new signature_1.Signature(obj);
190
191
  return this;
191
192
  }
192
193
  signRandomK() {
@@ -241,7 +242,7 @@ class ECDSA {
241
242
  .verify().verified;
242
243
  }
243
244
  reverseBuffer(buf) {
244
- const buf2 = Buffer.alloc(buf.length);
245
+ const buf2 = util_1.BufferUtil.alloc(buf.length);
245
246
  for (let i = 0; i < buf.length; i++) {
246
247
  buf2[i] = buf[buf.length - 1 - i];
247
248
  }