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.
- package/dist/cjs/lib/bitcore/address.js +75 -74
- package/dist/cjs/lib/bitcore/block/block.js +124 -126
- package/dist/cjs/lib/bitcore/block/blockheader.js +142 -208
- package/dist/cjs/lib/bitcore/block/index.js +3 -1
- package/dist/cjs/lib/bitcore/block/merkleblock.js +301 -0
- package/dist/cjs/lib/bitcore/crypto/bn.js +18 -22
- package/dist/cjs/lib/bitcore/crypto/ecdsa.js +50 -49
- package/dist/cjs/lib/bitcore/crypto/hash.js +25 -22
- package/dist/cjs/lib/bitcore/crypto/musig2.js +86 -92
- package/dist/cjs/lib/bitcore/crypto/point.js +42 -35
- package/dist/cjs/lib/bitcore/crypto/random.js +3 -2
- package/dist/cjs/lib/bitcore/crypto/schnorr.js +46 -55
- package/dist/cjs/lib/bitcore/crypto/signature.js +67 -55
- package/dist/cjs/lib/bitcore/crypto/sigtype.js +1 -1
- package/dist/cjs/lib/bitcore/encoding/base58.js +5 -4
- package/dist/cjs/lib/bitcore/encoding/base58check.js +14 -57
- package/dist/cjs/lib/bitcore/encoding/bufferreader.js +17 -17
- package/dist/cjs/lib/bitcore/encoding/bufferwriter.js +22 -26
- package/dist/cjs/lib/bitcore/encoding/varint.js +12 -11
- package/dist/cjs/lib/bitcore/errors.js +1 -0
- package/dist/cjs/lib/bitcore/hdprivatekey.js +74 -66
- package/dist/cjs/lib/bitcore/hdpublickey.js +96 -116
- package/dist/cjs/lib/bitcore/index.js +165 -172
- package/dist/cjs/lib/bitcore/message.js +36 -35
- package/dist/cjs/lib/bitcore/mnemonic/mnemonic.js +4 -3
- package/dist/cjs/lib/bitcore/mnemonic/pbkdf2.js +6 -5
- package/dist/cjs/lib/bitcore/mnemonic/words/french.js +2053 -0
- package/dist/cjs/lib/bitcore/mnemonic/words/index.js +2 -0
- package/dist/cjs/lib/bitcore/musig2/session.js +26 -25
- package/dist/cjs/lib/bitcore/musig2/signer.js +17 -16
- package/dist/cjs/lib/bitcore/networks.js +4 -3
- package/dist/cjs/lib/bitcore/opcode.js +11 -7
- package/dist/cjs/lib/bitcore/privatekey.js +42 -42
- package/dist/cjs/lib/bitcore/publickey.js +61 -57
- package/dist/cjs/lib/bitcore/script/interpreter/condition-stack.js +41 -0
- package/dist/cjs/lib/bitcore/script/interpreter/index.js +25 -0
- package/dist/cjs/lib/bitcore/script/interpreter/interpreter.js +1362 -0
- package/dist/cjs/lib/bitcore/script/interpreter/script-num.js +200 -0
- package/dist/cjs/lib/bitcore/script/interpreter/types.js +96 -0
- package/dist/cjs/lib/bitcore/{taproot.js → script/taproot.js} +107 -95
- package/dist/cjs/lib/bitcore/script.js +163 -104
- package/dist/cjs/lib/bitcore/taproot/musig2.js +51 -42
- package/dist/cjs/lib/bitcore/transaction/index.js +21 -21
- package/dist/cjs/lib/bitcore/transaction/input/multisig.js +10 -0
- package/dist/cjs/lib/bitcore/transaction/input/multisigscripthash.js +10 -0
- package/dist/cjs/lib/bitcore/transaction/input/publickey.js +10 -0
- package/dist/cjs/lib/bitcore/transaction/input/publickeyhash.js +10 -0
- package/dist/cjs/lib/bitcore/transaction/input/taproot.js +20 -0
- package/dist/cjs/lib/bitcore/transaction/input.js +145 -166
- package/dist/cjs/lib/bitcore/transaction/outpoint.js +89 -0
- package/dist/cjs/lib/bitcore/transaction/output.js +13 -8
- package/dist/cjs/lib/bitcore/transaction/sighash.js +96 -96
- package/dist/cjs/lib/bitcore/transaction/signature.js +39 -40
- package/dist/cjs/lib/bitcore/transaction/transaction.js +130 -118
- package/dist/cjs/lib/bitcore/transaction/unspentoutput.js +27 -23
- package/dist/cjs/lib/bitcore/util/bits.js +33 -0
- package/dist/cjs/lib/bitcore/util/buffer.js +29 -18
- package/dist/cjs/lib/bitcore/util/js.js +0 -3
- package/dist/cjs/lib/bitcore/util/merkle.js +53 -0
- package/dist/cjs/lib/bitcore/util/preconditions.js +8 -7
- package/dist/cjs/lib/bitcore/xaddress.js +27 -23
- package/dist/cjs/lib/{bitcore/taproot/nft.js → nft.js} +98 -29
- package/dist/cjs/lib/rank/index.js +28 -27
- package/dist/cjs/lib/rank/script.js +2 -1
- package/dist/cjs/lib/rank/transaction.js +2 -1
- package/dist/cjs/utils/string.js +6 -5
- package/dist/esm/lib/bitcore/address.js +42 -41
- package/dist/esm/lib/bitcore/block/block.js +126 -128
- package/dist/esm/lib/bitcore/block/blockheader.js +141 -207
- package/dist/esm/lib/bitcore/block/index.js +1 -0
- package/dist/esm/lib/bitcore/block/merkleblock.js +295 -0
- package/dist/esm/lib/bitcore/crypto/bn.js +18 -22
- package/dist/esm/lib/bitcore/crypto/ecdsa.js +25 -24
- package/dist/esm/lib/bitcore/crypto/hash.js +25 -22
- package/dist/esm/lib/bitcore/crypto/musig2.js +60 -66
- package/dist/esm/lib/bitcore/crypto/point.js +22 -15
- package/dist/esm/lib/bitcore/crypto/random.js +3 -2
- package/dist/esm/lib/bitcore/crypto/schnorr.js +35 -44
- package/dist/esm/lib/bitcore/crypto/signature.js +61 -49
- package/dist/esm/lib/bitcore/crypto/sigtype.js +1 -1
- package/dist/esm/lib/bitcore/encoding/base58.js +5 -4
- package/dist/esm/lib/bitcore/encoding/base58check.js +11 -57
- package/dist/esm/lib/bitcore/encoding/bufferreader.js +7 -7
- package/dist/esm/lib/bitcore/encoding/bufferwriter.js +18 -21
- package/dist/esm/lib/bitcore/encoding/varint.js +7 -6
- package/dist/esm/lib/bitcore/errors.js +1 -0
- package/dist/esm/lib/bitcore/hdprivatekey.js +47 -39
- package/dist/esm/lib/bitcore/hdpublickey.js +77 -97
- package/dist/esm/lib/bitcore/index.js +42 -45
- package/dist/esm/lib/bitcore/message.js +16 -15
- package/dist/esm/lib/bitcore/mnemonic/mnemonic.js +4 -3
- package/dist/esm/lib/bitcore/mnemonic/pbkdf2.js +5 -4
- package/dist/esm/lib/bitcore/mnemonic/words/french.js +2050 -0
- package/dist/esm/lib/bitcore/mnemonic/words/index.js +2 -0
- package/dist/esm/lib/bitcore/musig2/session.js +17 -16
- package/dist/esm/lib/bitcore/musig2/signer.js +19 -18
- package/dist/esm/lib/bitcore/networks.js +4 -3
- package/dist/esm/lib/bitcore/opcode.js +9 -5
- package/dist/esm/lib/bitcore/privatekey.js +25 -25
- package/dist/esm/lib/bitcore/publickey.js +46 -42
- package/dist/esm/lib/bitcore/script/interpreter/condition-stack.js +37 -0
- package/dist/esm/lib/bitcore/script/interpreter/index.js +4 -0
- package/dist/esm/lib/bitcore/script/interpreter/interpreter.js +1356 -0
- package/dist/esm/lib/bitcore/script/interpreter/script-num.js +195 -0
- package/dist/esm/lib/bitcore/script/interpreter/types.js +93 -0
- package/dist/esm/lib/bitcore/{taproot.js → script/taproot.js} +92 -81
- package/dist/esm/lib/bitcore/script.js +163 -102
- package/dist/esm/lib/bitcore/taproot/musig2.js +36 -27
- package/dist/esm/lib/bitcore/transaction/index.js +6 -6
- package/dist/esm/lib/bitcore/transaction/input/multisig.js +6 -0
- package/dist/esm/lib/bitcore/transaction/input/multisigscripthash.js +6 -0
- package/dist/esm/lib/bitcore/transaction/input/publickey.js +6 -0
- package/dist/esm/lib/bitcore/transaction/input/publickeyhash.js +6 -0
- package/dist/esm/lib/bitcore/transaction/input/taproot.js +16 -0
- package/dist/esm/lib/bitcore/transaction/input.js +55 -76
- package/dist/esm/lib/bitcore/transaction/outpoint.js +85 -0
- package/dist/esm/lib/bitcore/transaction/output.js +13 -8
- package/dist/esm/lib/bitcore/transaction/sighash.js +22 -22
- package/dist/esm/lib/bitcore/transaction/signature.js +16 -17
- package/dist/esm/lib/bitcore/transaction/transaction.js +58 -46
- package/dist/esm/lib/bitcore/transaction/unspentoutput.js +15 -11
- package/dist/esm/lib/bitcore/util/bits.js +27 -0
- package/dist/esm/lib/bitcore/util/buffer.js +20 -9
- package/dist/esm/lib/bitcore/util/js.js +0 -3
- package/dist/esm/lib/bitcore/util/merkle.js +47 -0
- package/dist/esm/lib/bitcore/util/preconditions.js +3 -2
- package/dist/esm/lib/bitcore/xaddress.js +16 -12
- package/dist/esm/lib/{bitcore/taproot/nft.js → nft.js} +97 -28
- package/dist/esm/lib/rank/index.js +15 -14
- package/dist/esm/lib/rank/script.js +1 -0
- package/dist/esm/lib/rank/transaction.js +1 -0
- package/dist/esm/utils/string.js +1 -0
- package/dist/types/lib/bitcore/address.d.ts +4 -3
- package/dist/types/lib/bitcore/address.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/block.d.ts +11 -19
- package/dist/types/lib/bitcore/block/block.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/blockheader.d.ts +30 -32
- package/dist/types/lib/bitcore/block/blockheader.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/index.d.ts +2 -0
- package/dist/types/lib/bitcore/block/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/block/merkleblock.d.ts +53 -0
- package/dist/types/lib/bitcore/block/merkleblock.d.ts.map +1 -0
- package/dist/types/lib/bitcore/crypto/bn.d.ts +2 -2
- package/dist/types/lib/bitcore/crypto/bn.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/ecdsa.d.ts +5 -4
- package/dist/types/lib/bitcore/crypto/ecdsa.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/hash.d.ts +3 -1
- package/dist/types/lib/bitcore/crypto/hash.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/musig2.d.ts +22 -30
- package/dist/types/lib/bitcore/crypto/musig2.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/point.d.ts +8 -3
- package/dist/types/lib/bitcore/crypto/point.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/random.d.ts +1 -0
- package/dist/types/lib/bitcore/crypto/random.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/schnorr.d.ts +5 -4
- package/dist/types/lib/bitcore/crypto/schnorr.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/signature.d.ts +4 -1
- package/dist/types/lib/bitcore/crypto/signature.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/sigtype.d.ts +1 -0
- package/dist/types/lib/bitcore/crypto/sigtype.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/base58.d.ts +1 -0
- package/dist/types/lib/bitcore/encoding/base58.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/base58check.d.ts +1 -2
- package/dist/types/lib/bitcore/encoding/base58check.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/bufferreader.d.ts +2 -1
- package/dist/types/lib/bitcore/encoding/bufferreader.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/bufferwriter.d.ts +2 -2
- package/dist/types/lib/bitcore/encoding/bufferwriter.d.ts.map +1 -1
- package/dist/types/lib/bitcore/encoding/varint.d.ts +3 -2
- package/dist/types/lib/bitcore/encoding/varint.d.ts.map +1 -1
- package/dist/types/lib/bitcore/errors.d.ts +3 -0
- package/dist/types/lib/bitcore/errors.d.ts.map +1 -1
- package/dist/types/lib/bitcore/hdprivatekey.d.ts +5 -4
- package/dist/types/lib/bitcore/hdprivatekey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/hdpublickey.d.ts +4 -3
- package/dist/types/lib/bitcore/hdpublickey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/index.d.ts +55 -60
- package/dist/types/lib/bitcore/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/message.d.ts +7 -4
- package/dist/types/lib/bitcore/message.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/mnemonic.d.ts +2 -0
- package/dist/types/lib/bitcore/mnemonic/mnemonic.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/pbkdf2.d.ts +1 -0
- package/dist/types/lib/bitcore/mnemonic/pbkdf2.d.ts.map +1 -1
- package/dist/types/lib/bitcore/mnemonic/words/french.d.ts +2 -0
- package/dist/types/lib/bitcore/mnemonic/words/french.d.ts.map +1 -0
- package/dist/types/lib/bitcore/mnemonic/words/index.d.ts +1 -0
- package/dist/types/lib/bitcore/mnemonic/words/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/musig2/session.d.ts +8 -7
- package/dist/types/lib/bitcore/musig2/session.d.ts.map +1 -1
- package/dist/types/lib/bitcore/musig2/signer.d.ts +10 -9
- package/dist/types/lib/bitcore/musig2/signer.d.ts.map +1 -1
- package/dist/types/lib/bitcore/networks.d.ts +1 -0
- package/dist/types/lib/bitcore/networks.d.ts.map +1 -1
- package/dist/types/lib/bitcore/opcode.d.ts +5 -0
- package/dist/types/lib/bitcore/opcode.d.ts.map +1 -1
- package/dist/types/lib/bitcore/privatekey.d.ts +5 -4
- package/dist/types/lib/bitcore/privatekey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/publickey.d.ts +13 -6
- package/dist/types/lib/bitcore/publickey.d.ts.map +1 -1
- package/dist/types/lib/bitcore/{chunk.d.ts → script/chunk.d.ts} +1 -0
- package/dist/types/lib/bitcore/script/chunk.d.ts.map +1 -0
- package/dist/types/lib/bitcore/script/interpreter/condition-stack.d.ts +11 -0
- package/dist/types/lib/bitcore/script/interpreter/condition-stack.d.ts.map +1 -0
- package/dist/types/lib/bitcore/script/interpreter/index.d.ts +5 -0
- package/dist/types/lib/bitcore/script/interpreter/index.d.ts.map +1 -0
- package/dist/types/lib/bitcore/script/interpreter/interpreter.d.ts +21 -0
- package/dist/types/lib/bitcore/script/interpreter/interpreter.d.ts.map +1 -0
- package/dist/types/lib/bitcore/script/interpreter/script-num.d.ts +35 -0
- package/dist/types/lib/bitcore/script/interpreter/script-num.d.ts.map +1 -0
- package/dist/types/lib/bitcore/script/interpreter/types.d.ts +101 -0
- package/dist/types/lib/bitcore/script/interpreter/types.d.ts.map +1 -0
- package/dist/types/lib/bitcore/{taproot.d.ts → script/taproot.d.ts} +20 -7
- package/dist/types/lib/bitcore/script/taproot.d.ts.map +1 -0
- package/dist/types/lib/bitcore/script.d.ts +12 -11
- package/dist/types/lib/bitcore/script.d.ts.map +1 -1
- package/dist/types/lib/bitcore/taproot/musig2.d.ts +17 -16
- package/dist/types/lib/bitcore/taproot/musig2.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/index.d.ts +11 -11
- package/dist/types/lib/bitcore/transaction/index.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/input/multisig.d.ts +5 -0
- package/dist/types/lib/bitcore/transaction/input/multisig.d.ts.map +1 -0
- package/dist/types/lib/bitcore/transaction/input/multisigscripthash.d.ts +5 -0
- package/dist/types/lib/bitcore/transaction/input/multisigscripthash.d.ts.map +1 -0
- package/dist/types/lib/bitcore/transaction/input/publickey.d.ts +5 -0
- package/dist/types/lib/bitcore/transaction/input/publickey.d.ts.map +1 -0
- package/dist/types/lib/bitcore/transaction/input/publickeyhash.d.ts +6 -0
- package/dist/types/lib/bitcore/transaction/input/publickeyhash.d.ts.map +1 -0
- package/dist/types/lib/bitcore/transaction/input/taproot.d.ts +18 -0
- package/dist/types/lib/bitcore/transaction/input/taproot.d.ts.map +1 -0
- package/dist/types/lib/bitcore/transaction/input.d.ts +27 -35
- package/dist/types/lib/bitcore/transaction/input.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/outpoint.d.ts +32 -0
- package/dist/types/lib/bitcore/transaction/outpoint.d.ts.map +1 -0
- package/dist/types/lib/bitcore/transaction/output.d.ts +3 -1
- package/dist/types/lib/bitcore/transaction/output.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/sighash.d.ts +8 -7
- package/dist/types/lib/bitcore/transaction/sighash.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/signature.d.ts +3 -2
- package/dist/types/lib/bitcore/transaction/signature.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/transaction.d.ts +18 -15
- package/dist/types/lib/bitcore/transaction/transaction.d.ts.map +1 -1
- package/dist/types/lib/bitcore/transaction/unspentoutput.d.ts +9 -7
- package/dist/types/lib/bitcore/transaction/unspentoutput.d.ts.map +1 -1
- package/dist/types/lib/bitcore/unit.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/base32.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/bits.d.ts +5 -0
- package/dist/types/lib/bitcore/util/bits.d.ts.map +1 -0
- package/dist/types/lib/bitcore/util/buffer.d.ts +10 -2
- package/dist/types/lib/bitcore/util/buffer.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/js.d.ts +0 -1
- package/dist/types/lib/bitcore/util/js.d.ts.map +1 -1
- package/dist/types/lib/bitcore/util/merkle.d.ts +6 -0
- package/dist/types/lib/bitcore/util/merkle.d.ts.map +1 -0
- package/dist/types/lib/bitcore/util/preconditions.d.ts.map +1 -1
- package/dist/types/lib/bitcore/xaddress.d.ts +1 -0
- package/dist/types/lib/bitcore/xaddress.d.ts.map +1 -1
- package/dist/types/lib/{bitcore/taproot/nft.d.ts → nft.d.ts} +26 -12
- package/dist/types/lib/nft.d.ts.map +1 -0
- package/dist/types/lib/rank/index.d.ts +1 -0
- package/dist/types/lib/rank/index.d.ts.map +1 -1
- package/dist/types/lib/rank/script.d.ts +1 -0
- package/dist/types/lib/rank/script.d.ts.map +1 -1
- package/dist/types/lib/rank/transaction.d.ts +1 -0
- package/dist/types/lib/rank/transaction.d.ts.map +1 -1
- package/dist/types/utils/string.d.ts +1 -0
- package/dist/types/utils/string.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/cjs/lib/bitcore/script/interpreter.js +0 -1757
- package/dist/esm/lib/bitcore/script/interpreter.js +0 -1753
- package/dist/types/lib/bitcore/chunk.d.ts.map +0 -1
- package/dist/types/lib/bitcore/script/interpreter.d.ts +0 -101
- package/dist/types/lib/bitcore/script/interpreter.d.ts.map +0 -1
- package/dist/types/lib/bitcore/taproot/nft.d.ts.map +0 -1
- package/dist/types/lib/bitcore/taproot.d.ts.map +0 -1
- /package/dist/cjs/lib/bitcore/{chunk.js → script/chunk.js} +0 -0
- /package/dist/esm/lib/bitcore/{chunk.js → script/chunk.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HDPublicKey = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
4
|
+
const bn_1 = require("./crypto/bn");
|
|
5
|
+
const publickey_1 = require("./publickey");
|
|
6
|
+
const hdprivatekey_1 = require("./hdprivatekey");
|
|
7
|
+
const networks_1 = require("./networks");
|
|
8
|
+
const hash_1 = require("./crypto/hash");
|
|
9
|
+
const base58check_1 = require("./encoding/base58check");
|
|
10
|
+
const util_1 = require("./util");
|
|
11
|
+
const preconditions_1 = require("./util/preconditions");
|
|
12
|
+
const point_1 = require("./crypto/point");
|
|
13
13
|
class HDPublicKey {
|
|
14
14
|
xpubkey;
|
|
15
15
|
network;
|
|
@@ -52,37 +52,15 @@ class HDPublicKey {
|
|
|
52
52
|
if (!(this instanceof HDPublicKey)) {
|
|
53
53
|
return new HDPublicKey(data);
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (!error) {
|
|
59
|
-
return this._buildFromSerialized(data);
|
|
60
|
-
}
|
|
61
|
-
else if (Buffer.isBuffer(data) &&
|
|
62
|
-
!HDPublicKey.getSerializedError(data.toString())) {
|
|
63
|
-
return this._buildFromSerialized(data.toString());
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
if (typeof data === 'object' && data !== null) {
|
|
71
|
-
if (data instanceof hdprivatekey_js_1.HDPrivateKey) {
|
|
72
|
-
return this._buildFromPrivate(data);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
return this._buildFromObject(data);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
throw new Error('Unrecognized argument');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
55
|
+
preconditions_1.Preconditions.checkArgument(data !== undefined && data !== null, 'Must supply an argument to create a HDPublicKey');
|
|
56
|
+
if (data instanceof hdprivatekey_1.HDPrivateKey) {
|
|
57
|
+
return this._buildFromPrivate(data);
|
|
82
58
|
}
|
|
83
|
-
|
|
84
|
-
|
|
59
|
+
if (typeof data === 'string' || util_1.BufferUtil.isBuffer(data)) {
|
|
60
|
+
return this._buildFromSerialized(data);
|
|
85
61
|
}
|
|
62
|
+
const info = this._classifyArguments(data);
|
|
63
|
+
return this._buildFromObject(info);
|
|
86
64
|
}
|
|
87
65
|
static isValidPath(arg) {
|
|
88
66
|
if (typeof arg === 'string') {
|
|
@@ -98,22 +76,22 @@ class HDPublicKey {
|
|
|
98
76
|
return HDPublicKey.getSerializedError(data, network) === null;
|
|
99
77
|
}
|
|
100
78
|
static getSerializedError(data, network) {
|
|
101
|
-
if (!(typeof data === 'string' ||
|
|
79
|
+
if (!(typeof data === 'string' || util_1.BufferUtil.isBuffer(data))) {
|
|
102
80
|
return new Error('expected buffer or string');
|
|
103
81
|
}
|
|
104
|
-
if (typeof data === 'string' && !
|
|
82
|
+
if (typeof data === 'string' && !util_1.JSUtil.isHexa(data)) {
|
|
105
83
|
try {
|
|
106
|
-
|
|
84
|
+
base58check_1.Base58Check.decode(data);
|
|
107
85
|
}
|
|
108
86
|
catch (e) {
|
|
109
87
|
return new Error('Invalid base58 checksum');
|
|
110
88
|
}
|
|
111
89
|
}
|
|
112
|
-
if (
|
|
90
|
+
if (util_1.BufferUtil.isBuffer(data) && data.length !== HDPublicKey.DataSize) {
|
|
113
91
|
return new Error('Invalid length');
|
|
114
92
|
}
|
|
115
93
|
if (typeof data === 'string') {
|
|
116
|
-
const decoded =
|
|
94
|
+
const decoded = base58check_1.Base58Check.decode(data);
|
|
117
95
|
if (decoded.length !== HDPublicKey.DataSize) {
|
|
118
96
|
return new Error('Invalid length');
|
|
119
97
|
}
|
|
@@ -127,24 +105,24 @@ class HDPublicKey {
|
|
|
127
105
|
return null;
|
|
128
106
|
}
|
|
129
107
|
static _validateNetwork(data, networkArg) {
|
|
130
|
-
const network = (0,
|
|
108
|
+
const network = (0, networks_1.get)(networkArg);
|
|
131
109
|
if (!network) {
|
|
132
110
|
return new Error('Invalid network argument');
|
|
133
111
|
}
|
|
134
|
-
const version =
|
|
135
|
-
? data.
|
|
136
|
-
:
|
|
112
|
+
const version = util_1.BufferUtil.isBuffer(data)
|
|
113
|
+
? data.slice(HDPublicKey.VersionStart, HDPublicKey.VersionEnd)
|
|
114
|
+
: util_1.BufferUtil.from(base58check_1.Base58Check.decode(data).slice(HDPublicKey.VersionStart, HDPublicKey.VersionEnd));
|
|
137
115
|
if (version.readUInt32BE(0) !== network.xpubkey) {
|
|
138
116
|
return new Error('Invalid network');
|
|
139
117
|
}
|
|
140
118
|
return null;
|
|
141
119
|
}
|
|
142
120
|
static fromString(arg) {
|
|
143
|
-
|
|
121
|
+
preconditions_1.Preconditions.checkArgument(typeof arg === 'string', 'No valid string was provided');
|
|
144
122
|
return new HDPublicKey(arg);
|
|
145
123
|
}
|
|
146
124
|
static fromObject(arg) {
|
|
147
|
-
|
|
125
|
+
preconditions_1.Preconditions.checkArgument(typeof arg === 'object', 'No valid argument was provided');
|
|
148
126
|
return new HDPublicKey(arg);
|
|
149
127
|
}
|
|
150
128
|
static fromBuffer(arg) {
|
|
@@ -154,7 +132,7 @@ class HDPublicKey {
|
|
|
154
132
|
if (typeof arg === 'string') {
|
|
155
133
|
return HDPublicKey._transformString(arg);
|
|
156
134
|
}
|
|
157
|
-
else if (
|
|
135
|
+
else if (util_1.BufferUtil.isBuffer(arg)) {
|
|
158
136
|
return HDPublicKey._transformBuffer(arg);
|
|
159
137
|
}
|
|
160
138
|
else if (typeof arg === 'object' && arg !== null) {
|
|
@@ -170,13 +148,13 @@ class HDPublicKey {
|
|
|
170
148
|
}
|
|
171
149
|
}
|
|
172
150
|
static _transformString(str) {
|
|
173
|
-
if (!
|
|
151
|
+
if (!util_1.JSUtil.isHexa(str)) {
|
|
174
152
|
return HDPublicKey._transformSerialized(str);
|
|
175
153
|
}
|
|
176
|
-
return HDPublicKey._transformBuffer(
|
|
154
|
+
return HDPublicKey._transformBuffer(util_1.BufferUtil.from(str, 'hex'));
|
|
177
155
|
}
|
|
178
156
|
static _transformSerialized(str) {
|
|
179
|
-
const buf =
|
|
157
|
+
const buf = base58check_1.Base58Check.decode(str);
|
|
180
158
|
return HDPublicKey._transformBuffer(buf);
|
|
181
159
|
}
|
|
182
160
|
static _transformBuffer(buf) {
|
|
@@ -184,40 +162,40 @@ class HDPublicKey {
|
|
|
184
162
|
throw new Error('Invalid HDPublicKey buffer length');
|
|
185
163
|
}
|
|
186
164
|
const version = buf.readUInt32BE(0);
|
|
187
|
-
const network = (0,
|
|
165
|
+
const network = (0, networks_1.get)(version, 'xpubkey');
|
|
188
166
|
if (!network) {
|
|
189
167
|
throw new Error('Invalid HDPublicKey network');
|
|
190
168
|
}
|
|
191
169
|
const depth = buf.readUInt8(4);
|
|
192
|
-
const parentFingerPrint = buf.
|
|
170
|
+
const parentFingerPrint = buf.slice(5, 9);
|
|
193
171
|
const childIndex = buf.readUInt32BE(9);
|
|
194
|
-
const chainCode = buf.
|
|
195
|
-
const publicKeyBuffer = buf.
|
|
172
|
+
const chainCode = buf.slice(13, 45);
|
|
173
|
+
const publicKeyBuffer = buf.slice(45, 78);
|
|
196
174
|
return {
|
|
197
175
|
network,
|
|
198
176
|
depth,
|
|
199
177
|
parentFingerPrint,
|
|
200
178
|
childIndex,
|
|
201
179
|
chainCode,
|
|
202
|
-
publicKey:
|
|
180
|
+
publicKey: publickey_1.PublicKey.fromBuffer(publicKeyBuffer),
|
|
203
181
|
};
|
|
204
182
|
}
|
|
205
183
|
static _transformObject(obj) {
|
|
206
|
-
const network = (0,
|
|
184
|
+
const network = (0, networks_1.get)(obj.network);
|
|
207
185
|
if (!network) {
|
|
208
186
|
throw new Error('Invalid network');
|
|
209
187
|
}
|
|
210
188
|
return {
|
|
211
189
|
network,
|
|
212
190
|
depth: obj.depth,
|
|
213
|
-
parentFingerPrint:
|
|
191
|
+
parentFingerPrint: util_1.BufferUtil.from(obj.parentFingerPrint, 'hex'),
|
|
214
192
|
childIndex: obj.childIndex,
|
|
215
|
-
chainCode:
|
|
216
|
-
publicKey:
|
|
193
|
+
chainCode: util_1.BufferUtil.from(obj.chainCode, 'hex'),
|
|
194
|
+
publicKey: publickey_1.PublicKey.fromBuffer(util_1.BufferUtil.from(obj.publicKey, 'hex')),
|
|
217
195
|
};
|
|
218
196
|
}
|
|
219
197
|
_buildFromPrivate(arg) {
|
|
220
|
-
const xpubkeyVersion =
|
|
198
|
+
const xpubkeyVersion = util_1.BufferUtil.alloc(4);
|
|
221
199
|
xpubkeyVersion.writeUInt32BE(arg.network.xpubkey, 0);
|
|
222
200
|
const args = {
|
|
223
201
|
version: xpubkeyVersion,
|
|
@@ -225,28 +203,14 @@ class HDPublicKey {
|
|
|
225
203
|
parentFingerPrint: arg._buffers.parentFingerPrint,
|
|
226
204
|
childIndex: arg._buffers.childIndex,
|
|
227
205
|
chainCode: arg._buffers.chainCode,
|
|
228
|
-
publicKey:
|
|
206
|
+
publicKey: point_1.Point.pointToCompressed(point_1.Point.getG().mul(bn_1.BN.fromBuffer(arg._buffers.privateKey))),
|
|
229
207
|
checksum: undefined,
|
|
230
208
|
};
|
|
231
209
|
return this._buildFromBuffers(args);
|
|
232
210
|
}
|
|
233
|
-
_buildFromSerialized(arg) {
|
|
234
|
-
const decoded = typeof arg === 'string' ? base58check_js_1.Base58Check.decode(arg) : arg;
|
|
235
|
-
const buffers = {
|
|
236
|
-
version: decoded.subarray(HDPublicKey.VersionStart, HDPublicKey.VersionEnd),
|
|
237
|
-
depth: decoded.subarray(HDPublicKey.DepthStart, HDPublicKey.DepthEnd),
|
|
238
|
-
parentFingerPrint: decoded.subarray(HDPublicKey.ParentFingerPrintStart, HDPublicKey.ParentFingerPrintEnd),
|
|
239
|
-
childIndex: decoded.subarray(HDPublicKey.ChildIndexStart, HDPublicKey.ChildIndexEnd),
|
|
240
|
-
chainCode: decoded.subarray(HDPublicKey.ChainCodeStart, HDPublicKey.ChainCodeEnd),
|
|
241
|
-
publicKey: decoded.subarray(HDPublicKey.PublicKeyStart, HDPublicKey.PublicKeyEnd),
|
|
242
|
-
checksum: decoded.subarray(HDPublicKey.ChecksumStart, HDPublicKey.ChecksumEnd),
|
|
243
|
-
xpubkey: typeof arg === 'string' ? Buffer.from(arg) : arg,
|
|
244
|
-
};
|
|
245
|
-
return this._buildFromBuffers(buffers);
|
|
246
|
-
}
|
|
247
211
|
_buildFromBuffers(arg) {
|
|
248
212
|
HDPublicKey._validateBufferArguments(arg);
|
|
249
|
-
|
|
213
|
+
util_1.JSUtil.defineImmutable(this, {
|
|
250
214
|
_buffers: arg,
|
|
251
215
|
});
|
|
252
216
|
const sequence = [
|
|
@@ -257,8 +221,8 @@ class HDPublicKey {
|
|
|
257
221
|
arg.chainCode,
|
|
258
222
|
arg.publicKey,
|
|
259
223
|
];
|
|
260
|
-
const concat =
|
|
261
|
-
const checksum =
|
|
224
|
+
const concat = util_1.BufferUtil.concat(sequence);
|
|
225
|
+
const checksum = base58check_1.Base58Check.checksum(concat);
|
|
262
226
|
if (!arg.checksum || !arg.checksum.length) {
|
|
263
227
|
arg.checksum = checksum;
|
|
264
228
|
}
|
|
@@ -267,16 +231,16 @@ class HDPublicKey {
|
|
|
267
231
|
throw new Error('Invalid base58 checksum');
|
|
268
232
|
}
|
|
269
233
|
}
|
|
270
|
-
const network = (0,
|
|
234
|
+
const network = (0, networks_1.get)(arg.version.readUInt32BE(0), 'xpubkey');
|
|
271
235
|
if (!network) {
|
|
272
236
|
throw new Error(`Invalid HDPublicKey version: 0x${arg.version.toString('hex')}`);
|
|
273
237
|
}
|
|
274
|
-
const xpubkey =
|
|
275
|
-
arg.xpubkey =
|
|
276
|
-
const publicKey = new
|
|
238
|
+
const xpubkey = base58check_1.Base58Check.encode(util_1.BufferUtil.concat(sequence));
|
|
239
|
+
arg.xpubkey = util_1.BufferUtil.from(xpubkey);
|
|
240
|
+
const publicKey = new publickey_1.PublicKey(arg.publicKey, { network });
|
|
277
241
|
const size = HDPublicKey.ParentFingerPrintSize;
|
|
278
|
-
const fingerPrint =
|
|
279
|
-
|
|
242
|
+
const fingerPrint = hash_1.Hash.sha256ripemd160(publicKey.toBuffer()).slice(0, size);
|
|
243
|
+
util_1.JSUtil.defineImmutable(this, {
|
|
280
244
|
xpubkey: xpubkey,
|
|
281
245
|
network: network,
|
|
282
246
|
depth: arg.depth.readUInt8(0),
|
|
@@ -291,7 +255,7 @@ class HDPublicKey {
|
|
|
291
255
|
static _validateBufferArguments(arg) {
|
|
292
256
|
const checkBuffer = (name, size) => {
|
|
293
257
|
const buff = arg[name];
|
|
294
|
-
if (!
|
|
258
|
+
if (!util_1.BufferUtil.isBuffer(buff)) {
|
|
295
259
|
throw new Error(`${name} argument is not a buffer, it's ${typeof buff}`);
|
|
296
260
|
}
|
|
297
261
|
if (buff.length !== size) {
|
|
@@ -309,31 +273,33 @@ class HDPublicKey {
|
|
|
309
273
|
}
|
|
310
274
|
}
|
|
311
275
|
_buildFromObject(arg) {
|
|
312
|
-
const network = arg.network ? (0,
|
|
276
|
+
const network = arg.network ? (0, networks_1.get)(arg.network) : undefined;
|
|
313
277
|
if (!network) {
|
|
314
278
|
throw new Error('Network is required when building HDPublicKey from object');
|
|
315
279
|
}
|
|
316
280
|
const buffers = {
|
|
317
|
-
version:
|
|
318
|
-
depth:
|
|
319
|
-
?
|
|
320
|
-
:
|
|
321
|
-
parentFingerPrint:
|
|
322
|
-
?
|
|
323
|
-
:
|
|
324
|
-
? arg.parentFingerPrint
|
|
325
|
-
:
|
|
326
|
-
childIndex:
|
|
327
|
-
chainCode:
|
|
328
|
-
?
|
|
329
|
-
:
|
|
330
|
-
? arg.chainCode
|
|
331
|
-
:
|
|
332
|
-
publicKey:
|
|
333
|
-
?
|
|
334
|
-
:
|
|
335
|
-
? arg.publicKey
|
|
336
|
-
: arg.publicKey
|
|
281
|
+
version: util_1.BufferUtil.alloc(4),
|
|
282
|
+
depth: util_1.BufferUtil.isBuffer(arg.depth)
|
|
283
|
+
? arg.depth
|
|
284
|
+
: util_1.BufferUtil.from([arg.depth ?? 0]),
|
|
285
|
+
parentFingerPrint: util_1.BufferUtil.isBuffer(arg.parentFingerPrint)
|
|
286
|
+
? arg.parentFingerPrint
|
|
287
|
+
: arg.parentFingerPrint
|
|
288
|
+
? util_1.BufferUtil.from(arg.parentFingerPrint, 'hex')
|
|
289
|
+
: util_1.BufferUtil.alloc(4),
|
|
290
|
+
childIndex: util_1.BufferUtil.alloc(4),
|
|
291
|
+
chainCode: util_1.BufferUtil.isBuffer(arg.chainCode)
|
|
292
|
+
? arg.chainCode
|
|
293
|
+
: arg.chainCode
|
|
294
|
+
? util_1.BufferUtil.from(arg.chainCode, 'hex')
|
|
295
|
+
: util_1.BufferUtil.alloc(32),
|
|
296
|
+
publicKey: util_1.BufferUtil.isBuffer(arg.publicKey)
|
|
297
|
+
? arg.publicKey
|
|
298
|
+
: arg.publicKey instanceof publickey_1.PublicKey
|
|
299
|
+
? arg.publicKey.toBuffer()
|
|
300
|
+
: arg.publicKey
|
|
301
|
+
? util_1.BufferUtil.from(arg.publicKey, 'hex')
|
|
302
|
+
: util_1.BufferUtil.alloc(33),
|
|
337
303
|
checksum: undefined,
|
|
338
304
|
};
|
|
339
305
|
buffers.version.writeUInt32BE(network.xpubkey, 0);
|
|
@@ -342,6 +308,20 @@ class HDPublicKey {
|
|
|
342
308
|
}
|
|
343
309
|
return this._buildFromBuffers(buffers);
|
|
344
310
|
}
|
|
311
|
+
_buildFromSerialized(arg) {
|
|
312
|
+
const decoded = typeof arg === 'string' ? base58check_1.Base58Check.decode(arg) : arg;
|
|
313
|
+
const buffers = {
|
|
314
|
+
version: decoded.slice(HDPublicKey.VersionStart, HDPublicKey.VersionEnd),
|
|
315
|
+
depth: decoded.slice(HDPublicKey.DepthStart, HDPublicKey.DepthEnd),
|
|
316
|
+
parentFingerPrint: decoded.slice(HDPublicKey.ParentFingerPrintStart, HDPublicKey.ParentFingerPrintEnd),
|
|
317
|
+
childIndex: decoded.slice(HDPublicKey.ChildIndexStart, HDPublicKey.ChildIndexEnd),
|
|
318
|
+
chainCode: decoded.slice(HDPublicKey.ChainCodeStart, HDPublicKey.ChainCodeEnd),
|
|
319
|
+
publicKey: decoded.slice(HDPublicKey.PublicKeyStart, HDPublicKey.PublicKeyEnd),
|
|
320
|
+
checksum: decoded.slice(HDPublicKey.ChecksumStart, HDPublicKey.ChecksumEnd),
|
|
321
|
+
xpubkey: typeof arg === 'string' ? util_1.BufferUtil.from(arg) : arg,
|
|
322
|
+
};
|
|
323
|
+
return this._buildFromBuffers(buffers);
|
|
324
|
+
}
|
|
345
325
|
derive(arg, hardened) {
|
|
346
326
|
return this.deriveChild(arg, hardened);
|
|
347
327
|
}
|
|
@@ -363,15 +343,15 @@ class HDPublicKey {
|
|
|
363
343
|
if (index < 0) {
|
|
364
344
|
throw new Error('Invalid path');
|
|
365
345
|
}
|
|
366
|
-
const indexBuffer =
|
|
346
|
+
const indexBuffer = util_1.BufferUtil.alloc(4);
|
|
367
347
|
indexBuffer.writeUInt32BE(index, 0);
|
|
368
|
-
const data =
|
|
369
|
-
const hash =
|
|
370
|
-
const leftPart =
|
|
371
|
-
const chainCode = hash.
|
|
348
|
+
const data = util_1.BufferUtil.concat([this.publicKey.toBuffer(), indexBuffer]);
|
|
349
|
+
const hash = hash_1.Hash.sha512hmac(data, this._buffers.chainCode);
|
|
350
|
+
const leftPart = bn_1.BN.fromBuffer(hash.slice(0, 32));
|
|
351
|
+
const chainCode = hash.slice(32, 64);
|
|
372
352
|
let publicKey;
|
|
373
353
|
try {
|
|
374
|
-
publicKey =
|
|
354
|
+
publicKey = publickey_1.PublicKey.fromPoint(point_1.Point.getG().mul(leftPart).add(this.publicKey.point));
|
|
375
355
|
}
|
|
376
356
|
catch (e) {
|
|
377
357
|
return this._deriveWithNumber(index + 1);
|
|
@@ -403,7 +383,7 @@ class HDPublicKey {
|
|
|
403
383
|
return this.xpubkey.toString();
|
|
404
384
|
}
|
|
405
385
|
toBuffer() {
|
|
406
|
-
return
|
|
386
|
+
return util_1.BufferUtil.from(this._buffers.xpubkey || util_1.BufferUtil.alloc(0));
|
|
407
387
|
}
|
|
408
388
|
toObject() {
|
|
409
389
|
return {
|