quantumcoin 6.14.2 → 6.14.5
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/CHANGELOG.md +442 -442
- package/FUNDING.json +10 -10
- package/LICENSE.md +21 -21
- package/README.md +132 -142
- package/SECURITY.md +34 -34
- package/dist/README.md +22 -22
- package/dist/quantumcoin.js +1127 -1324
- package/dist/quantumcoin.js.map +1 -1
- package/dist/quantumcoin.min.js +1 -1
- package/dist/quantumcoin.umd.js +1128 -1327
- package/dist/quantumcoin.umd.js.map +1 -1
- package/dist/quantumcoin.umd.min.js +1 -1
- package/dist/wordlists-extra.js +1 -1
- package/dist/wordlists-extra.js.map +1 -1
- package/dist/wordlists-extra.min.js +1 -1
- package/lib.commonjs/README.md +16 -16
- package/lib.commonjs/_version.js +1 -1
- package/lib.commonjs/crypto/signature.d.ts +3 -76
- package/lib.commonjs/crypto/signature.d.ts.map +1 -1
- package/lib.commonjs/crypto/signature.js +15 -199
- package/lib.commonjs/crypto/signature.js.map +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
- package/lib.commonjs/crypto/signing-key.js +19 -10
- package/lib.commonjs/crypto/signing-key.js.map +1 -1
- package/lib.commonjs/package.json +12 -12
- package/lib.commonjs/providers/provider-jsonrpc.d.ts +0 -1
- package/lib.commonjs/providers/provider-jsonrpc.d.ts.map +1 -1
- package/lib.commonjs/providers/provider-jsonrpc.js +0 -1
- package/lib.commonjs/providers/provider-jsonrpc.js.map +1 -1
- package/lib.commonjs/quantumcoin.d.ts +2 -0
- package/lib.commonjs/quantumcoin.d.ts.map +1 -1
- package/lib.commonjs/quantumcoin.js +11 -5
- package/lib.commonjs/quantumcoin.js.map +1 -1
- package/lib.commonjs/transaction/address.d.ts.map +1 -1
- package/lib.commonjs/transaction/address.js +8 -3
- package/lib.commonjs/transaction/address.js.map +1 -1
- package/lib.commonjs/transaction/transaction.d.ts.map +1 -1
- package/lib.commonjs/transaction/transaction.js +7 -40
- package/lib.commonjs/transaction/transaction.js.map +1 -1
- package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
- package/lib.commonjs/wallet/json-keystore.js +7 -7
- package/lib.commonjs/wallet/json-keystore.js.map +1 -1
- package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
- package/lib.commonjs/wallet/wallet.js +2 -2
- package/lib.commonjs/wallet/wallet.js.map +1 -1
- package/lib.esm/README.md +16 -16
- package/lib.esm/_version.js +1 -1
- package/lib.esm/crypto/signature.d.ts +3 -76
- package/lib.esm/crypto/signature.d.ts.map +1 -1
- package/lib.esm/crypto/signature.js +16 -202
- package/lib.esm/crypto/signature.js.map +1 -1
- package/lib.esm/crypto/signing-key.d.ts +1 -1
- package/lib.esm/crypto/signing-key.d.ts.map +1 -1
- package/lib.esm/crypto/signing-key.js +20 -9
- package/lib.esm/crypto/signing-key.js.map +1 -1
- package/lib.esm/package.json +12 -12
- package/lib.esm/providers/provider-jsonrpc.d.ts +0 -1
- package/lib.esm/providers/provider-jsonrpc.d.ts.map +1 -1
- package/lib.esm/providers/provider-jsonrpc.js +0 -1
- package/lib.esm/providers/provider-jsonrpc.js.map +1 -1
- package/lib.esm/quantumcoin.d.ts +2 -0
- package/lib.esm/quantumcoin.d.ts.map +1 -1
- package/lib.esm/quantumcoin.js +6 -0
- package/lib.esm/quantumcoin.js.map +1 -1
- package/lib.esm/transaction/address.d.ts.map +1 -1
- package/lib.esm/transaction/address.js +8 -2
- package/lib.esm/transaction/address.js.map +1 -1
- package/lib.esm/transaction/transaction.d.ts.map +1 -1
- package/lib.esm/transaction/transaction.js +7 -40
- package/lib.esm/transaction/transaction.js.map +1 -1
- package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
- package/lib.esm/wallet/json-keystore.js +11 -5
- package/lib.esm/wallet/json-keystore.js.map +1 -1
- package/lib.esm/wallet/wallet.d.ts.map +1 -1
- package/lib.esm/wallet/wallet.js +3 -1
- package/lib.esm/wallet/wallet.js.map +1 -1
- package/package.json +6 -5
- package/rollup.config.mjs +50 -50
- package/src.ts/_version.ts +1 -1
- package/src.ts/abi/abi-coder.ts +237 -237
- package/src.ts/abi/bytes32.ts +45 -45
- package/src.ts/abi/coders/abstract-coder.ts +541 -541
- package/src.ts/abi/coders/address.ts +36 -36
- package/src.ts/abi/coders/anonymous.ts +29 -29
- package/src.ts/abi/coders/array.ts +199 -199
- package/src.ts/abi/coders/boolean.ts +27 -27
- package/src.ts/abi/coders/bytes.ts +43 -43
- package/src.ts/abi/coders/fixed-bytes.ts +37 -37
- package/src.ts/abi/coders/null.ts +28 -28
- package/src.ts/abi/coders/number.ts +63 -63
- package/src.ts/abi/coders/string.ts +29 -29
- package/src.ts/abi/coders/tuple.ts +69 -69
- package/src.ts/abi/fragments.ts +1617 -1617
- package/src.ts/abi/index.ts +41 -41
- package/src.ts/abi/interface.ts +1271 -1271
- package/src.ts/abi/typed.ts +796 -796
- package/src.ts/address/address.ts +148 -148
- package/src.ts/address/checks.ts +123 -123
- package/src.ts/address/contract-address.ts +80 -80
- package/src.ts/address/index.ts +57 -57
- package/src.ts/constants/addresses.ts +8 -8
- package/src.ts/constants/hashes.ts +7 -7
- package/src.ts/constants/index.ts +16 -16
- package/src.ts/constants/numbers.ts +35 -35
- package/src.ts/constants/strings.ts +16 -16
- package/src.ts/contract/contract.ts +1120 -1120
- package/src.ts/contract/factory.ts +143 -143
- package/src.ts/contract/index.ts +31 -31
- package/src.ts/contract/types.ts +236 -236
- package/src.ts/contract/wrappers.ts +225 -225
- package/src.ts/crypto/crypto-browser.ts +64 -64
- package/src.ts/crypto/crypto.ts +4 -4
- package/src.ts/crypto/hmac.ts +51 -51
- package/src.ts/crypto/index.ts +59 -59
- package/src.ts/crypto/keccak.ts +54 -54
- package/src.ts/crypto/pbkdf2.ts +55 -55
- package/src.ts/crypto/random.ts +36 -36
- package/src.ts/crypto/ripemd160.ts +43 -43
- package/src.ts/crypto/scrypt.ts +114 -114
- package/src.ts/crypto/sha2.ts +78 -78
- package/src.ts/crypto/signature.ts +145 -349
- package/src.ts/crypto/signing-key.ts +126 -118
- package/src.ts/hash/authorization.ts +38 -38
- package/src.ts/hash/id.ts +17 -17
- package/src.ts/hash/index.ts +18 -18
- package/src.ts/hash/message.ts +51 -51
- package/src.ts/hash/namehash.ts +101 -101
- package/src.ts/hash/solidity.ts +117 -117
- package/src.ts/hash/typed-data.ts +658 -658
- package/src.ts/index.ts +12 -12
- package/src.ts/providers/abstract-provider.ts +1761 -1761
- package/src.ts/providers/abstract-signer.ts +314 -314
- package/src.ts/providers/community.ts +49 -49
- package/src.ts/providers/contracts.ts +42 -42
- package/src.ts/providers/default-provider.ts +96 -96
- package/src.ts/providers/ens-resolver.ts +606 -606
- package/src.ts/providers/format.ts +320 -320
- package/src.ts/providers/formatting.ts +418 -418
- package/src.ts/providers/index.ts +125 -125
- package/src.ts/providers/network.ts +327 -327
- package/src.ts/providers/pagination.ts +8 -8
- package/src.ts/providers/plugin-fallback.ts +35 -35
- package/src.ts/providers/plugins-network.ts +281 -281
- package/src.ts/providers/provider-browser.ts +334 -334
- package/src.ts/providers/provider-fallback.ts +801 -801
- package/src.ts/providers/provider-ipcsocket-browser.ts +3 -3
- package/src.ts/providers/provider-ipcsocket.ts +81 -81
- package/src.ts/providers/provider-jsonrpc.ts +1334 -1335
- package/src.ts/providers/provider-socket.ts +352 -352
- package/src.ts/providers/provider-websocket.ts +103 -103
- package/src.ts/providers/provider.ts +2136 -2136
- package/src.ts/providers/signer-noncemanager.ts +98 -98
- package/src.ts/providers/signer.ts +166 -166
- package/src.ts/providers/subscriber-connection.ts +74 -74
- package/src.ts/providers/subscriber-filterid.ts +199 -199
- package/src.ts/providers/subscriber-polling.ts +321 -321
- package/src.ts/providers/ws-browser.ts +11 -11
- package/src.ts/providers/ws.ts +3 -3
- package/src.ts/quantumcoin.ts +219 -211
- package/src.ts/thirdparty.d.ts +16 -16
- package/src.ts/transaction/accesslist.ts +43 -43
- package/src.ts/transaction/address.ts +35 -31
- package/src.ts/transaction/authorization.ts +14 -14
- package/src.ts/transaction/index.ts +51 -51
- package/src.ts/transaction/transaction.ts +1349 -1379
- package/src.ts/utils/base58.ts +73 -73
- package/src.ts/utils/base64-browser.ts +25 -25
- package/src.ts/utils/base64.ts +56 -56
- package/src.ts/utils/data.ts +199 -199
- package/src.ts/utils/errors.ts +793 -793
- package/src.ts/utils/events.ts +105 -105
- package/src.ts/utils/fetch.ts +970 -970
- package/src.ts/utils/fixednumber.ts +643 -643
- package/src.ts/utils/geturl-browser.ts +81 -81
- package/src.ts/utils/geturl.ts +134 -134
- package/src.ts/utils/index.ts +95 -95
- package/src.ts/utils/maths.ts +240 -240
- package/src.ts/utils/properties.ts +60 -60
- package/src.ts/utils/rlp-decode.ts +104 -104
- package/src.ts/utils/rlp-encode.ts +64 -64
- package/src.ts/utils/rlp.ts +20 -20
- package/src.ts/utils/units.ts +91 -91
- package/src.ts/utils/utf8.ts +325 -325
- package/src.ts/utils/uuid.ts +36 -36
- package/src.ts/wallet/base-wallet.ts +160 -160
- package/src.ts/wallet/index.ts +32 -32
- package/src.ts/wallet/json-keystore.ts +108 -106
- package/src.ts/wallet/utils.ts +147 -147
- package/src.ts/wallet/wallet.ts +138 -139
- package/src.ts/wordlists/bit-reader.ts +35 -35
- package/src.ts/wordlists/decode-owl.ts +58 -58
- package/src.ts/wordlists/decode-owla.ts +33 -33
- package/src.ts/wordlists/generation/encode-latin.ts +370 -370
- package/src.ts/wordlists/index.ts +26 -26
- package/src.ts/wordlists/lang-cz.ts +33 -33
- package/src.ts/wordlists/lang-en.ts +33 -33
- package/src.ts/wordlists/lang-es.ts +35 -35
- package/src.ts/wordlists/lang-fr.ts +34 -34
- package/src.ts/wordlists/lang-it.ts +33 -33
- package/src.ts/wordlists/lang-ja.ts +181 -181
- package/src.ts/wordlists/lang-ko.ts +104 -104
- package/src.ts/wordlists/lang-pt.ts +34 -34
- package/src.ts/wordlists/lang-zh.ts +112 -112
- package/src.ts/wordlists/wordlist-owl.ts +77 -77
- package/src.ts/wordlists/wordlist-owla.ts +41 -41
- package/src.ts/wordlists/wordlist.ts +59 -59
- package/src.ts/wordlists/wordlists-browser.ts +8 -8
- package/src.ts/wordlists/wordlists-extra.ts +9 -9
- package/src.ts/wordlists/wordlists.ts +38 -38
- package/dist/quantumcoin.min.js'.gz' +0 -0
- package/dist/quantumcoin.umd.min.js'.gz' +0 -0
- package/dist/wordlists-extra.min.js'.gz' +0 -0
- package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
- package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-alchemy.js +0 -151
- package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
- package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
- package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-ankr.js +0 -137
- package/lib.commonjs/providers/provider-ankr.js.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
- package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.js +0 -145
- package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
- package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.js +0 -102
- package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
- package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.js +0 -26
- package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
- package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.js +0 -587
- package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
- package/lib.commonjs/providers/provider-infura.d.ts +0 -101
- package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-infura.js +0 -206
- package/lib.commonjs/providers/provider-infura.js.map +0 -1
- package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
- package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-pocket.js +0 -109
- package/lib.commonjs/providers/provider-pocket.js.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
- package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.js +0 -163
- package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
- package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
- package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/hdwallet.js +0 -505
- package/lib.commonjs/wallet/hdwallet.js.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
- package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.js +0 -60
- package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
- package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
- package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
- package/lib.commonjs/wallet/mnemonic.js +0 -169
- package/lib.commonjs/wallet/mnemonic.js.map +0 -1
- package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
- package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/seedwallet.js +0 -8
- package/lib.commonjs/wallet/seedwallet.js.map +0 -1
- package/lib.esm/providers/provider-alchemy.d.ts +0 -50
- package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.esm/providers/provider-alchemy.js +0 -147
- package/lib.esm/providers/provider-alchemy.js.map +0 -1
- package/lib.esm/providers/provider-ankr.d.ts +0 -61
- package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
- package/lib.esm/providers/provider-ankr.js +0 -133
- package/lib.esm/providers/provider-ankr.js.map +0 -1
- package/lib.esm/providers/provider-blockscout.d.ts +0 -59
- package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.esm/providers/provider-blockscout.js +0 -141
- package/lib.esm/providers/provider-blockscout.js.map +0 -1
- package/lib.esm/providers/provider-chainstack.d.ts +0 -46
- package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.esm/providers/provider-chainstack.js +0 -98
- package/lib.esm/providers/provider-chainstack.js.map +0 -1
- package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
- package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.esm/providers/provider-cloudflare.js +0 -22
- package/lib.esm/providers/provider-cloudflare.js.map +0 -1
- package/lib.esm/providers/provider-etherscan.d.ts +0 -147
- package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.esm/providers/provider-etherscan.js +0 -584
- package/lib.esm/providers/provider-etherscan.js.map +0 -1
- package/lib.esm/providers/provider-infura.d.ts +0 -101
- package/lib.esm/providers/provider-infura.d.ts.map +0 -1
- package/lib.esm/providers/provider-infura.js +0 -201
- package/lib.esm/providers/provider-infura.js.map +0 -1
- package/lib.esm/providers/provider-pocket.d.ts +0 -54
- package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
- package/lib.esm/providers/provider-pocket.js +0 -105
- package/lib.esm/providers/provider-pocket.js.map +0 -1
- package/lib.esm/providers/provider-quicknode.d.ts +0 -59
- package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.esm/providers/provider-quicknode.js +0 -159
- package/lib.esm/providers/provider-quicknode.js.map +0 -1
- package/lib.esm/wallet/hdwallet.d.ts +0 -248
- package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
- package/lib.esm/wallet/hdwallet.js +0 -498
- package/lib.esm/wallet/hdwallet.js.map +0 -1
- package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
- package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.esm/wallet/json-crowdsale.js +0 -55
- package/lib.esm/wallet/json-crowdsale.js.map +0 -1
- package/lib.esm/wallet/mnemonic.d.ts +0 -65
- package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
- package/lib.esm/wallet/mnemonic.js +0 -165
- package/lib.esm/wallet/mnemonic.js.map +0 -1
- package/lib.esm/wallet/seedwallet.d.ts +0 -4
- package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
- package/lib.esm/wallet/seedwallet.js +0 -4
- package/lib.esm/wallet/seedwallet.js.map +0 -1
|
@@ -1,106 +1,108 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The JSON Wallet formats allow a simple way to store the private
|
|
3
|
-
* keys needed in Ethereum along with related information and allows
|
|
4
|
-
* for extensible forms of encryption.
|
|
5
|
-
*
|
|
6
|
-
* These utilities facilitate decrypting and encrypting the most common
|
|
7
|
-
* JSON Wallet formats.
|
|
8
|
-
*
|
|
9
|
-
* @_subsection: api/wallet:JSON Wallets [json-wallets]
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
//import { CTR } from "aes-js";
|
|
13
|
-
|
|
14
|
-
//import { getAddress } from "../address/index.js";
|
|
15
|
-
//randomBytes, scrypt, scryptSync, uuidV4
|
|
16
|
-
//import { keccak256 } from "../crypto/index.js";
|
|
17
|
-
//import { computeAddress } from "../transaction/index.js";
|
|
18
|
-
//concat, assert, assertArgument,
|
|
19
|
-
import {
|
|
20
|
-
getBytes, hexlify, toUtf8String
|
|
21
|
-
} from "../utils/index.js";
|
|
22
|
-
|
|
23
|
-
import {SigningKey} from "../crypto/signing-key"
|
|
24
|
-
|
|
25
|
-
//zpad
|
|
26
|
-
//import { spelunk } from "./utils.js";
|
|
27
|
-
|
|
28
|
-
//import type { ProgressCallback } from "../crypto/index.js";
|
|
29
|
-
//import {Wallet} from "quantum-coin-js-sdk";
|
|
30
|
-
//import type { BytesLike } from "../utils/index.js";
|
|
31
|
-
import
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
pass =
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
let
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* used
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The JSON Wallet formats allow a simple way to store the private
|
|
3
|
+
* keys needed in Ethereum along with related information and allows
|
|
4
|
+
* for extensible forms of encryption.
|
|
5
|
+
*
|
|
6
|
+
* These utilities facilitate decrypting and encrypting the most common
|
|
7
|
+
* JSON Wallet formats.
|
|
8
|
+
*
|
|
9
|
+
* @_subsection: api/wallet:JSON Wallets [json-wallets]
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
//import { CTR } from "aes-js";
|
|
13
|
+
|
|
14
|
+
//import { getAddress } from "../address/index.js";
|
|
15
|
+
//randomBytes, scrypt, scryptSync, uuidV4
|
|
16
|
+
//import { keccak256 } from "../crypto/index.js";
|
|
17
|
+
//import { computeAddress } from "../transaction/index.js";
|
|
18
|
+
//concat, assert, assertArgument,
|
|
19
|
+
import {
|
|
20
|
+
getBytes, hexlify, toUtf8String
|
|
21
|
+
} from "../utils/index.js";
|
|
22
|
+
|
|
23
|
+
import {SigningKey} from "../crypto/signing-key.js"
|
|
24
|
+
|
|
25
|
+
//zpad
|
|
26
|
+
//import { spelunk } from "./utils.js";
|
|
27
|
+
|
|
28
|
+
//import type { ProgressCallback } from "../crypto/index.js";
|
|
29
|
+
//import {Wallet} from "quantum-coin-js-sdk";
|
|
30
|
+
//import type { BytesLike } from "../utils/index.js";
|
|
31
|
+
import {Wallet, deserializeEncryptedWallet, serializeEncryptedWallet} from "quantum-coin-js-sdk";
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
//import { version } from "../_version.js";
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
//const defaultPath = "m/44'/60'/0'/0/0";
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The contents of a JSON Keystore Wallet.
|
|
42
|
+
*/
|
|
43
|
+
export type KeystoreAccount = {
|
|
44
|
+
address: string;
|
|
45
|
+
privateKey: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns true if %%json%% is a valid JSON Keystore Wallet.
|
|
50
|
+
*/
|
|
51
|
+
export function isKeystoreJson(json: string): boolean {
|
|
52
|
+
try {
|
|
53
|
+
const data = JSON.parse(json);
|
|
54
|
+
const version = ((data.version != null) ? parseInt(data.version): 0);
|
|
55
|
+
if (version === 3) { return true; }
|
|
56
|
+
} catch (error) { }
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Resolves to the decrypted JSON Keystore Wallet %%json%% using the
|
|
62
|
+
* %%password%%.
|
|
63
|
+
*
|
|
64
|
+
* If provided, %%progress%% will be called periodically during the
|
|
65
|
+
* decrpytion to provide feedback, and if the function returns
|
|
66
|
+
* ``false`` will halt decryption.
|
|
67
|
+
*/
|
|
68
|
+
export function decryptKeystoreJsonSync(json: string, _password: string | Uint8Array): KeystoreAccount {
|
|
69
|
+
let pass: string;
|
|
70
|
+
if (typeof _password === 'string') {
|
|
71
|
+
pass = _password;
|
|
72
|
+
} else {
|
|
73
|
+
pass = toUtf8String(_password);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
let wal = deserializeEncryptedWallet(json, pass);
|
|
77
|
+
let privKey: any = wal.privateKey;
|
|
78
|
+
|
|
79
|
+
let ks: KeystoreAccount = {
|
|
80
|
+
address: wal.address,
|
|
81
|
+
privateKey: hexlify(privKey)
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
return ks;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Resolved to the JSON Keystore Wallet for %%account%% encrypted
|
|
89
|
+
* with %%password%%.
|
|
90
|
+
*
|
|
91
|
+
* The %%options%% can be used to tune the password-based key
|
|
92
|
+
* derivation function parameters, explicitly set the random values
|
|
93
|
+
* used.
|
|
94
|
+
*/
|
|
95
|
+
export function encryptKeystoreJsonSync(account: KeystoreAccount, password: Uint8Array | string): string {
|
|
96
|
+
const signingKey: SigningKey = new SigningKey(account.privateKey);
|
|
97
|
+
const privateKey: any = getBytes(signingKey.privateKey);
|
|
98
|
+
const publicKey: any = getBytes(signingKey.publicKey);
|
|
99
|
+
const wal = new Wallet(account.address, privateKey, publicKey);
|
|
100
|
+
|
|
101
|
+
if (typeof password === 'string') {
|
|
102
|
+
return serializeEncryptedWallet(wal, password);
|
|
103
|
+
} else {
|
|
104
|
+
let passPhrase = toUtf8String(password);
|
|
105
|
+
return serializeEncryptedWallet(wal, passPhrase);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
package/src.ts/wallet/utils.ts
CHANGED
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @_ignore
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
getBytesCopy, assertArgument, toUtf8Bytes
|
|
7
|
-
} from "../utils/index.js";
|
|
8
|
-
|
|
9
|
-
export function looseArrayify(hexString: string): Uint8Array {
|
|
10
|
-
if (typeof(hexString) === "string" && !hexString.startsWith("0x")) {
|
|
11
|
-
hexString = "0x" + hexString;
|
|
12
|
-
}
|
|
13
|
-
return getBytesCopy(hexString);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function zpad(value: String | number, length: number): String {
|
|
17
|
-
value = String(value);
|
|
18
|
-
while (value.length < length) { value = '0' + value; }
|
|
19
|
-
return value;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export function getPassword(password: string | Uint8Array): Uint8Array {
|
|
23
|
-
if (typeof(password) === 'string') {
|
|
24
|
-
return toUtf8Bytes(password, "NFKC");
|
|
25
|
-
}
|
|
26
|
-
return getBytesCopy(password);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function spelunk<T>(object: any, _path: string): T {
|
|
30
|
-
|
|
31
|
-
const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);
|
|
32
|
-
assertArgument(match != null, "invalid path", "path", _path);
|
|
33
|
-
|
|
34
|
-
const path = match[1];
|
|
35
|
-
const type = match[3];
|
|
36
|
-
const reqd = (match[4] === "!");
|
|
37
|
-
|
|
38
|
-
let cur = object;
|
|
39
|
-
for (const comp of path.toLowerCase().split('.')) {
|
|
40
|
-
|
|
41
|
-
// Search for a child object with a case-insensitive matching key
|
|
42
|
-
if (Array.isArray(cur)) {
|
|
43
|
-
if (!comp.match(/^[0-9]+$/)) { break; }
|
|
44
|
-
cur = cur[parseInt(comp)];
|
|
45
|
-
|
|
46
|
-
} else if (typeof(cur) === "object") {
|
|
47
|
-
let found: any = null;
|
|
48
|
-
for (const key in cur) {
|
|
49
|
-
if (key.toLowerCase() === comp) {
|
|
50
|
-
found = cur[key];
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
cur = found;
|
|
55
|
-
|
|
56
|
-
} else {
|
|
57
|
-
cur = null;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (cur == null) { break; }
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
assertArgument(!reqd || cur != null, "missing required value", "path", path);
|
|
64
|
-
|
|
65
|
-
if (type && cur != null) {
|
|
66
|
-
if (type === "int") {
|
|
67
|
-
if (typeof(cur) === "string" && cur.match(/^-?[0-9]+$/)) {
|
|
68
|
-
return <T><unknown>parseInt(cur);
|
|
69
|
-
} else if (Number.isSafeInteger(cur)) {
|
|
70
|
-
return cur;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (type === "number") {
|
|
75
|
-
if (typeof(cur) === "string" && cur.match(/^-?[0-9.]*$/)) {
|
|
76
|
-
return <T><unknown>parseFloat(cur);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (type === "data") {
|
|
81
|
-
if (typeof(cur) === "string") { return <T><unknown>looseArrayify(cur); }
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (type === "array" && Array.isArray(cur)) { return <T><unknown>cur; }
|
|
85
|
-
if (type === typeof(cur)) { return cur; }
|
|
86
|
-
|
|
87
|
-
assertArgument(false, `wrong type found for ${ type } `, "path", path);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return cur;
|
|
91
|
-
}
|
|
92
|
-
/*
|
|
93
|
-
export function follow(object: any, path: string): null | string {
|
|
94
|
-
let currentChild = object;
|
|
95
|
-
|
|
96
|
-
for (const comp of path.toLowerCase().split('/')) {
|
|
97
|
-
|
|
98
|
-
// Search for a child object with a case-insensitive matching key
|
|
99
|
-
let matchingChild = null;
|
|
100
|
-
for (const key in currentChild) {
|
|
101
|
-
if (key.toLowerCase() === comp) {
|
|
102
|
-
matchingChild = currentChild[key];
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (matchingChild === null) { return null; }
|
|
108
|
-
|
|
109
|
-
currentChild = matchingChild;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return currentChild;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// "path/to/something:type!"
|
|
116
|
-
export function followRequired(data: any, path: string): string {
|
|
117
|
-
const value = follow(data, path);
|
|
118
|
-
if (value != null) { return value; }
|
|
119
|
-
return logger.throwArgumentError("invalid value", `data:${ path }`,
|
|
120
|
-
JSON.stringify(data));
|
|
121
|
-
}
|
|
122
|
-
*/
|
|
123
|
-
// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)
|
|
124
|
-
/*
|
|
125
|
-
export function uuidV4(randomBytes: BytesLike): string {
|
|
126
|
-
const bytes = getBytes(randomBytes, "randomBytes");
|
|
127
|
-
|
|
128
|
-
// Section: 4.1.3:
|
|
129
|
-
// - time_hi_and_version[12:16] = 0b0100
|
|
130
|
-
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
131
|
-
|
|
132
|
-
// Section 4.4
|
|
133
|
-
// - clock_seq_hi_and_reserved[6] = 0b0
|
|
134
|
-
// - clock_seq_hi_and_reserved[7] = 0b1
|
|
135
|
-
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
136
|
-
|
|
137
|
-
const value = hexlify(bytes);
|
|
138
|
-
|
|
139
|
-
return [
|
|
140
|
-
value.substring(2, 10),
|
|
141
|
-
value.substring(10, 14),
|
|
142
|
-
value.substring(14, 18),
|
|
143
|
-
value.substring(18, 22),
|
|
144
|
-
value.substring(22, 34),
|
|
145
|
-
].join("-");
|
|
146
|
-
}
|
|
147
|
-
*/
|
|
1
|
+
/**
|
|
2
|
+
* @_ignore
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
getBytesCopy, assertArgument, toUtf8Bytes
|
|
7
|
+
} from "../utils/index.js";
|
|
8
|
+
|
|
9
|
+
export function looseArrayify(hexString: string): Uint8Array {
|
|
10
|
+
if (typeof(hexString) === "string" && !hexString.startsWith("0x")) {
|
|
11
|
+
hexString = "0x" + hexString;
|
|
12
|
+
}
|
|
13
|
+
return getBytesCopy(hexString);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function zpad(value: String | number, length: number): String {
|
|
17
|
+
value = String(value);
|
|
18
|
+
while (value.length < length) { value = '0' + value; }
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getPassword(password: string | Uint8Array): Uint8Array {
|
|
23
|
+
if (typeof(password) === 'string') {
|
|
24
|
+
return toUtf8Bytes(password, "NFKC");
|
|
25
|
+
}
|
|
26
|
+
return getBytesCopy(password);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function spelunk<T>(object: any, _path: string): T {
|
|
30
|
+
|
|
31
|
+
const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);
|
|
32
|
+
assertArgument(match != null, "invalid path", "path", _path);
|
|
33
|
+
|
|
34
|
+
const path = match[1];
|
|
35
|
+
const type = match[3];
|
|
36
|
+
const reqd = (match[4] === "!");
|
|
37
|
+
|
|
38
|
+
let cur = object;
|
|
39
|
+
for (const comp of path.toLowerCase().split('.')) {
|
|
40
|
+
|
|
41
|
+
// Search for a child object with a case-insensitive matching key
|
|
42
|
+
if (Array.isArray(cur)) {
|
|
43
|
+
if (!comp.match(/^[0-9]+$/)) { break; }
|
|
44
|
+
cur = cur[parseInt(comp)];
|
|
45
|
+
|
|
46
|
+
} else if (typeof(cur) === "object") {
|
|
47
|
+
let found: any = null;
|
|
48
|
+
for (const key in cur) {
|
|
49
|
+
if (key.toLowerCase() === comp) {
|
|
50
|
+
found = cur[key];
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
cur = found;
|
|
55
|
+
|
|
56
|
+
} else {
|
|
57
|
+
cur = null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (cur == null) { break; }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
assertArgument(!reqd || cur != null, "missing required value", "path", path);
|
|
64
|
+
|
|
65
|
+
if (type && cur != null) {
|
|
66
|
+
if (type === "int") {
|
|
67
|
+
if (typeof(cur) === "string" && cur.match(/^-?[0-9]+$/)) {
|
|
68
|
+
return <T><unknown>parseInt(cur);
|
|
69
|
+
} else if (Number.isSafeInteger(cur)) {
|
|
70
|
+
return cur;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (type === "number") {
|
|
75
|
+
if (typeof(cur) === "string" && cur.match(/^-?[0-9.]*$/)) {
|
|
76
|
+
return <T><unknown>parseFloat(cur);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (type === "data") {
|
|
81
|
+
if (typeof(cur) === "string") { return <T><unknown>looseArrayify(cur); }
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (type === "array" && Array.isArray(cur)) { return <T><unknown>cur; }
|
|
85
|
+
if (type === typeof(cur)) { return cur; }
|
|
86
|
+
|
|
87
|
+
assertArgument(false, `wrong type found for ${ type } `, "path", path);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return cur;
|
|
91
|
+
}
|
|
92
|
+
/*
|
|
93
|
+
export function follow(object: any, path: string): null | string {
|
|
94
|
+
let currentChild = object;
|
|
95
|
+
|
|
96
|
+
for (const comp of path.toLowerCase().split('/')) {
|
|
97
|
+
|
|
98
|
+
// Search for a child object with a case-insensitive matching key
|
|
99
|
+
let matchingChild = null;
|
|
100
|
+
for (const key in currentChild) {
|
|
101
|
+
if (key.toLowerCase() === comp) {
|
|
102
|
+
matchingChild = currentChild[key];
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (matchingChild === null) { return null; }
|
|
108
|
+
|
|
109
|
+
currentChild = matchingChild;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return currentChild;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// "path/to/something:type!"
|
|
116
|
+
export function followRequired(data: any, path: string): string {
|
|
117
|
+
const value = follow(data, path);
|
|
118
|
+
if (value != null) { return value; }
|
|
119
|
+
return logger.throwArgumentError("invalid value", `data:${ path }`,
|
|
120
|
+
JSON.stringify(data));
|
|
121
|
+
}
|
|
122
|
+
*/
|
|
123
|
+
// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)
|
|
124
|
+
/*
|
|
125
|
+
export function uuidV4(randomBytes: BytesLike): string {
|
|
126
|
+
const bytes = getBytes(randomBytes, "randomBytes");
|
|
127
|
+
|
|
128
|
+
// Section: 4.1.3:
|
|
129
|
+
// - time_hi_and_version[12:16] = 0b0100
|
|
130
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
131
|
+
|
|
132
|
+
// Section 4.4
|
|
133
|
+
// - clock_seq_hi_and_reserved[6] = 0b0
|
|
134
|
+
// - clock_seq_hi_and_reserved[7] = 0b1
|
|
135
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
136
|
+
|
|
137
|
+
const value = hexlify(bytes);
|
|
138
|
+
|
|
139
|
+
return [
|
|
140
|
+
value.substring(2, 10),
|
|
141
|
+
value.substring(10, 14),
|
|
142
|
+
value.substring(14, 18),
|
|
143
|
+
value.substring(18, 22),
|
|
144
|
+
value.substring(22, 34),
|
|
145
|
+
].join("-");
|
|
146
|
+
}
|
|
147
|
+
*/
|