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.
Files changed (317) hide show
  1. package/CHANGELOG.md +442 -442
  2. package/FUNDING.json +10 -10
  3. package/LICENSE.md +21 -21
  4. package/README.md +132 -142
  5. package/SECURITY.md +34 -34
  6. package/dist/README.md +22 -22
  7. package/dist/quantumcoin.js +1127 -1324
  8. package/dist/quantumcoin.js.map +1 -1
  9. package/dist/quantumcoin.min.js +1 -1
  10. package/dist/quantumcoin.umd.js +1128 -1327
  11. package/dist/quantumcoin.umd.js.map +1 -1
  12. package/dist/quantumcoin.umd.min.js +1 -1
  13. package/dist/wordlists-extra.js +1 -1
  14. package/dist/wordlists-extra.js.map +1 -1
  15. package/dist/wordlists-extra.min.js +1 -1
  16. package/lib.commonjs/README.md +16 -16
  17. package/lib.commonjs/_version.js +1 -1
  18. package/lib.commonjs/crypto/signature.d.ts +3 -76
  19. package/lib.commonjs/crypto/signature.d.ts.map +1 -1
  20. package/lib.commonjs/crypto/signature.js +15 -199
  21. package/lib.commonjs/crypto/signature.js.map +1 -1
  22. package/lib.commonjs/crypto/signing-key.d.ts +1 -1
  23. package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
  24. package/lib.commonjs/crypto/signing-key.js +19 -10
  25. package/lib.commonjs/crypto/signing-key.js.map +1 -1
  26. package/lib.commonjs/package.json +12 -12
  27. package/lib.commonjs/providers/provider-jsonrpc.d.ts +0 -1
  28. package/lib.commonjs/providers/provider-jsonrpc.d.ts.map +1 -1
  29. package/lib.commonjs/providers/provider-jsonrpc.js +0 -1
  30. package/lib.commonjs/providers/provider-jsonrpc.js.map +1 -1
  31. package/lib.commonjs/quantumcoin.d.ts +2 -0
  32. package/lib.commonjs/quantumcoin.d.ts.map +1 -1
  33. package/lib.commonjs/quantumcoin.js +11 -5
  34. package/lib.commonjs/quantumcoin.js.map +1 -1
  35. package/lib.commonjs/transaction/address.d.ts.map +1 -1
  36. package/lib.commonjs/transaction/address.js +8 -3
  37. package/lib.commonjs/transaction/address.js.map +1 -1
  38. package/lib.commonjs/transaction/transaction.d.ts.map +1 -1
  39. package/lib.commonjs/transaction/transaction.js +7 -40
  40. package/lib.commonjs/transaction/transaction.js.map +1 -1
  41. package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
  42. package/lib.commonjs/wallet/json-keystore.js +7 -7
  43. package/lib.commonjs/wallet/json-keystore.js.map +1 -1
  44. package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
  45. package/lib.commonjs/wallet/wallet.js +2 -2
  46. package/lib.commonjs/wallet/wallet.js.map +1 -1
  47. package/lib.esm/README.md +16 -16
  48. package/lib.esm/_version.js +1 -1
  49. package/lib.esm/crypto/signature.d.ts +3 -76
  50. package/lib.esm/crypto/signature.d.ts.map +1 -1
  51. package/lib.esm/crypto/signature.js +16 -202
  52. package/lib.esm/crypto/signature.js.map +1 -1
  53. package/lib.esm/crypto/signing-key.d.ts +1 -1
  54. package/lib.esm/crypto/signing-key.d.ts.map +1 -1
  55. package/lib.esm/crypto/signing-key.js +20 -9
  56. package/lib.esm/crypto/signing-key.js.map +1 -1
  57. package/lib.esm/package.json +12 -12
  58. package/lib.esm/providers/provider-jsonrpc.d.ts +0 -1
  59. package/lib.esm/providers/provider-jsonrpc.d.ts.map +1 -1
  60. package/lib.esm/providers/provider-jsonrpc.js +0 -1
  61. package/lib.esm/providers/provider-jsonrpc.js.map +1 -1
  62. package/lib.esm/quantumcoin.d.ts +2 -0
  63. package/lib.esm/quantumcoin.d.ts.map +1 -1
  64. package/lib.esm/quantumcoin.js +6 -0
  65. package/lib.esm/quantumcoin.js.map +1 -1
  66. package/lib.esm/transaction/address.d.ts.map +1 -1
  67. package/lib.esm/transaction/address.js +8 -2
  68. package/lib.esm/transaction/address.js.map +1 -1
  69. package/lib.esm/transaction/transaction.d.ts.map +1 -1
  70. package/lib.esm/transaction/transaction.js +7 -40
  71. package/lib.esm/transaction/transaction.js.map +1 -1
  72. package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
  73. package/lib.esm/wallet/json-keystore.js +11 -5
  74. package/lib.esm/wallet/json-keystore.js.map +1 -1
  75. package/lib.esm/wallet/wallet.d.ts.map +1 -1
  76. package/lib.esm/wallet/wallet.js +3 -1
  77. package/lib.esm/wallet/wallet.js.map +1 -1
  78. package/package.json +6 -5
  79. package/rollup.config.mjs +50 -50
  80. package/src.ts/_version.ts +1 -1
  81. package/src.ts/abi/abi-coder.ts +237 -237
  82. package/src.ts/abi/bytes32.ts +45 -45
  83. package/src.ts/abi/coders/abstract-coder.ts +541 -541
  84. package/src.ts/abi/coders/address.ts +36 -36
  85. package/src.ts/abi/coders/anonymous.ts +29 -29
  86. package/src.ts/abi/coders/array.ts +199 -199
  87. package/src.ts/abi/coders/boolean.ts +27 -27
  88. package/src.ts/abi/coders/bytes.ts +43 -43
  89. package/src.ts/abi/coders/fixed-bytes.ts +37 -37
  90. package/src.ts/abi/coders/null.ts +28 -28
  91. package/src.ts/abi/coders/number.ts +63 -63
  92. package/src.ts/abi/coders/string.ts +29 -29
  93. package/src.ts/abi/coders/tuple.ts +69 -69
  94. package/src.ts/abi/fragments.ts +1617 -1617
  95. package/src.ts/abi/index.ts +41 -41
  96. package/src.ts/abi/interface.ts +1271 -1271
  97. package/src.ts/abi/typed.ts +796 -796
  98. package/src.ts/address/address.ts +148 -148
  99. package/src.ts/address/checks.ts +123 -123
  100. package/src.ts/address/contract-address.ts +80 -80
  101. package/src.ts/address/index.ts +57 -57
  102. package/src.ts/constants/addresses.ts +8 -8
  103. package/src.ts/constants/hashes.ts +7 -7
  104. package/src.ts/constants/index.ts +16 -16
  105. package/src.ts/constants/numbers.ts +35 -35
  106. package/src.ts/constants/strings.ts +16 -16
  107. package/src.ts/contract/contract.ts +1120 -1120
  108. package/src.ts/contract/factory.ts +143 -143
  109. package/src.ts/contract/index.ts +31 -31
  110. package/src.ts/contract/types.ts +236 -236
  111. package/src.ts/contract/wrappers.ts +225 -225
  112. package/src.ts/crypto/crypto-browser.ts +64 -64
  113. package/src.ts/crypto/crypto.ts +4 -4
  114. package/src.ts/crypto/hmac.ts +51 -51
  115. package/src.ts/crypto/index.ts +59 -59
  116. package/src.ts/crypto/keccak.ts +54 -54
  117. package/src.ts/crypto/pbkdf2.ts +55 -55
  118. package/src.ts/crypto/random.ts +36 -36
  119. package/src.ts/crypto/ripemd160.ts +43 -43
  120. package/src.ts/crypto/scrypt.ts +114 -114
  121. package/src.ts/crypto/sha2.ts +78 -78
  122. package/src.ts/crypto/signature.ts +145 -349
  123. package/src.ts/crypto/signing-key.ts +126 -118
  124. package/src.ts/hash/authorization.ts +38 -38
  125. package/src.ts/hash/id.ts +17 -17
  126. package/src.ts/hash/index.ts +18 -18
  127. package/src.ts/hash/message.ts +51 -51
  128. package/src.ts/hash/namehash.ts +101 -101
  129. package/src.ts/hash/solidity.ts +117 -117
  130. package/src.ts/hash/typed-data.ts +658 -658
  131. package/src.ts/index.ts +12 -12
  132. package/src.ts/providers/abstract-provider.ts +1761 -1761
  133. package/src.ts/providers/abstract-signer.ts +314 -314
  134. package/src.ts/providers/community.ts +49 -49
  135. package/src.ts/providers/contracts.ts +42 -42
  136. package/src.ts/providers/default-provider.ts +96 -96
  137. package/src.ts/providers/ens-resolver.ts +606 -606
  138. package/src.ts/providers/format.ts +320 -320
  139. package/src.ts/providers/formatting.ts +418 -418
  140. package/src.ts/providers/index.ts +125 -125
  141. package/src.ts/providers/network.ts +327 -327
  142. package/src.ts/providers/pagination.ts +8 -8
  143. package/src.ts/providers/plugin-fallback.ts +35 -35
  144. package/src.ts/providers/plugins-network.ts +281 -281
  145. package/src.ts/providers/provider-browser.ts +334 -334
  146. package/src.ts/providers/provider-fallback.ts +801 -801
  147. package/src.ts/providers/provider-ipcsocket-browser.ts +3 -3
  148. package/src.ts/providers/provider-ipcsocket.ts +81 -81
  149. package/src.ts/providers/provider-jsonrpc.ts +1334 -1335
  150. package/src.ts/providers/provider-socket.ts +352 -352
  151. package/src.ts/providers/provider-websocket.ts +103 -103
  152. package/src.ts/providers/provider.ts +2136 -2136
  153. package/src.ts/providers/signer-noncemanager.ts +98 -98
  154. package/src.ts/providers/signer.ts +166 -166
  155. package/src.ts/providers/subscriber-connection.ts +74 -74
  156. package/src.ts/providers/subscriber-filterid.ts +199 -199
  157. package/src.ts/providers/subscriber-polling.ts +321 -321
  158. package/src.ts/providers/ws-browser.ts +11 -11
  159. package/src.ts/providers/ws.ts +3 -3
  160. package/src.ts/quantumcoin.ts +219 -211
  161. package/src.ts/thirdparty.d.ts +16 -16
  162. package/src.ts/transaction/accesslist.ts +43 -43
  163. package/src.ts/transaction/address.ts +35 -31
  164. package/src.ts/transaction/authorization.ts +14 -14
  165. package/src.ts/transaction/index.ts +51 -51
  166. package/src.ts/transaction/transaction.ts +1349 -1379
  167. package/src.ts/utils/base58.ts +73 -73
  168. package/src.ts/utils/base64-browser.ts +25 -25
  169. package/src.ts/utils/base64.ts +56 -56
  170. package/src.ts/utils/data.ts +199 -199
  171. package/src.ts/utils/errors.ts +793 -793
  172. package/src.ts/utils/events.ts +105 -105
  173. package/src.ts/utils/fetch.ts +970 -970
  174. package/src.ts/utils/fixednumber.ts +643 -643
  175. package/src.ts/utils/geturl-browser.ts +81 -81
  176. package/src.ts/utils/geturl.ts +134 -134
  177. package/src.ts/utils/index.ts +95 -95
  178. package/src.ts/utils/maths.ts +240 -240
  179. package/src.ts/utils/properties.ts +60 -60
  180. package/src.ts/utils/rlp-decode.ts +104 -104
  181. package/src.ts/utils/rlp-encode.ts +64 -64
  182. package/src.ts/utils/rlp.ts +20 -20
  183. package/src.ts/utils/units.ts +91 -91
  184. package/src.ts/utils/utf8.ts +325 -325
  185. package/src.ts/utils/uuid.ts +36 -36
  186. package/src.ts/wallet/base-wallet.ts +160 -160
  187. package/src.ts/wallet/index.ts +32 -32
  188. package/src.ts/wallet/json-keystore.ts +108 -106
  189. package/src.ts/wallet/utils.ts +147 -147
  190. package/src.ts/wallet/wallet.ts +138 -139
  191. package/src.ts/wordlists/bit-reader.ts +35 -35
  192. package/src.ts/wordlists/decode-owl.ts +58 -58
  193. package/src.ts/wordlists/decode-owla.ts +33 -33
  194. package/src.ts/wordlists/generation/encode-latin.ts +370 -370
  195. package/src.ts/wordlists/index.ts +26 -26
  196. package/src.ts/wordlists/lang-cz.ts +33 -33
  197. package/src.ts/wordlists/lang-en.ts +33 -33
  198. package/src.ts/wordlists/lang-es.ts +35 -35
  199. package/src.ts/wordlists/lang-fr.ts +34 -34
  200. package/src.ts/wordlists/lang-it.ts +33 -33
  201. package/src.ts/wordlists/lang-ja.ts +181 -181
  202. package/src.ts/wordlists/lang-ko.ts +104 -104
  203. package/src.ts/wordlists/lang-pt.ts +34 -34
  204. package/src.ts/wordlists/lang-zh.ts +112 -112
  205. package/src.ts/wordlists/wordlist-owl.ts +77 -77
  206. package/src.ts/wordlists/wordlist-owla.ts +41 -41
  207. package/src.ts/wordlists/wordlist.ts +59 -59
  208. package/src.ts/wordlists/wordlists-browser.ts +8 -8
  209. package/src.ts/wordlists/wordlists-extra.ts +9 -9
  210. package/src.ts/wordlists/wordlists.ts +38 -38
  211. package/dist/quantumcoin.min.js'.gz' +0 -0
  212. package/dist/quantumcoin.umd.min.js'.gz' +0 -0
  213. package/dist/wordlists-extra.min.js'.gz' +0 -0
  214. package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
  215. package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
  216. package/lib.commonjs/providers/provider-alchemy.js +0 -151
  217. package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
  218. package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
  219. package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
  220. package/lib.commonjs/providers/provider-ankr.js +0 -137
  221. package/lib.commonjs/providers/provider-ankr.js.map +0 -1
  222. package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
  223. package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
  224. package/lib.commonjs/providers/provider-blockscout.js +0 -145
  225. package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
  226. package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
  227. package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
  228. package/lib.commonjs/providers/provider-chainstack.js +0 -102
  229. package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
  230. package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
  231. package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
  232. package/lib.commonjs/providers/provider-cloudflare.js +0 -26
  233. package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
  234. package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
  235. package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
  236. package/lib.commonjs/providers/provider-etherscan.js +0 -587
  237. package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
  238. package/lib.commonjs/providers/provider-infura.d.ts +0 -101
  239. package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
  240. package/lib.commonjs/providers/provider-infura.js +0 -206
  241. package/lib.commonjs/providers/provider-infura.js.map +0 -1
  242. package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
  243. package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
  244. package/lib.commonjs/providers/provider-pocket.js +0 -109
  245. package/lib.commonjs/providers/provider-pocket.js.map +0 -1
  246. package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
  247. package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
  248. package/lib.commonjs/providers/provider-quicknode.js +0 -163
  249. package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
  250. package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
  251. package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
  252. package/lib.commonjs/wallet/hdwallet.js +0 -505
  253. package/lib.commonjs/wallet/hdwallet.js.map +0 -1
  254. package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
  255. package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
  256. package/lib.commonjs/wallet/json-crowdsale.js +0 -60
  257. package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
  258. package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
  259. package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
  260. package/lib.commonjs/wallet/mnemonic.js +0 -169
  261. package/lib.commonjs/wallet/mnemonic.js.map +0 -1
  262. package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
  263. package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
  264. package/lib.commonjs/wallet/seedwallet.js +0 -8
  265. package/lib.commonjs/wallet/seedwallet.js.map +0 -1
  266. package/lib.esm/providers/provider-alchemy.d.ts +0 -50
  267. package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
  268. package/lib.esm/providers/provider-alchemy.js +0 -147
  269. package/lib.esm/providers/provider-alchemy.js.map +0 -1
  270. package/lib.esm/providers/provider-ankr.d.ts +0 -61
  271. package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
  272. package/lib.esm/providers/provider-ankr.js +0 -133
  273. package/lib.esm/providers/provider-ankr.js.map +0 -1
  274. package/lib.esm/providers/provider-blockscout.d.ts +0 -59
  275. package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
  276. package/lib.esm/providers/provider-blockscout.js +0 -141
  277. package/lib.esm/providers/provider-blockscout.js.map +0 -1
  278. package/lib.esm/providers/provider-chainstack.d.ts +0 -46
  279. package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
  280. package/lib.esm/providers/provider-chainstack.js +0 -98
  281. package/lib.esm/providers/provider-chainstack.js.map +0 -1
  282. package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
  283. package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
  284. package/lib.esm/providers/provider-cloudflare.js +0 -22
  285. package/lib.esm/providers/provider-cloudflare.js.map +0 -1
  286. package/lib.esm/providers/provider-etherscan.d.ts +0 -147
  287. package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
  288. package/lib.esm/providers/provider-etherscan.js +0 -584
  289. package/lib.esm/providers/provider-etherscan.js.map +0 -1
  290. package/lib.esm/providers/provider-infura.d.ts +0 -101
  291. package/lib.esm/providers/provider-infura.d.ts.map +0 -1
  292. package/lib.esm/providers/provider-infura.js +0 -201
  293. package/lib.esm/providers/provider-infura.js.map +0 -1
  294. package/lib.esm/providers/provider-pocket.d.ts +0 -54
  295. package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
  296. package/lib.esm/providers/provider-pocket.js +0 -105
  297. package/lib.esm/providers/provider-pocket.js.map +0 -1
  298. package/lib.esm/providers/provider-quicknode.d.ts +0 -59
  299. package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
  300. package/lib.esm/providers/provider-quicknode.js +0 -159
  301. package/lib.esm/providers/provider-quicknode.js.map +0 -1
  302. package/lib.esm/wallet/hdwallet.d.ts +0 -248
  303. package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
  304. package/lib.esm/wallet/hdwallet.js +0 -498
  305. package/lib.esm/wallet/hdwallet.js.map +0 -1
  306. package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
  307. package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
  308. package/lib.esm/wallet/json-crowdsale.js +0 -55
  309. package/lib.esm/wallet/json-crowdsale.js.map +0 -1
  310. package/lib.esm/wallet/mnemonic.d.ts +0 -65
  311. package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
  312. package/lib.esm/wallet/mnemonic.js +0 -165
  313. package/lib.esm/wallet/mnemonic.js.map +0 -1
  314. package/lib.esm/wallet/seedwallet.d.ts +0 -4
  315. package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
  316. package/lib.esm/wallet/seedwallet.js +0 -4
  317. 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 qcsdk = require('quantum-coin-js-sdk');
32
-
33
- //import { version } from "../_version.js";
34
-
35
-
36
- //const defaultPath = "m/44'/60'/0'/0/0";
37
-
38
- /**
39
- * The contents of a JSON Keystore Wallet.
40
- */
41
- export type KeystoreAccount = {
42
- address: string;
43
- privateKey: string;
44
- };
45
-
46
- /**
47
- * Returns true if %%json%% is a valid JSON Keystore Wallet.
48
- */
49
- export function isKeystoreJson(json: string): boolean {
50
- try {
51
- const data = JSON.parse(json);
52
- const version = ((data.version != null) ? parseInt(data.version): 0);
53
- if (version === 3) { return true; }
54
- } catch (error) { }
55
- return false;
56
- }
57
-
58
- /**
59
- * Resolves to the decrypted JSON Keystore Wallet %%json%% using the
60
- * %%password%%.
61
- *
62
- * If provided, %%progress%% will be called periodically during the
63
- * decrpytion to provide feedback, and if the function returns
64
- * ``false`` will halt decryption.
65
- */
66
- export function decryptKeystoreJsonSync(json: string, _password: string | Uint8Array): KeystoreAccount {
67
- let pass: string;
68
- if (typeof _password === 'string') {
69
- pass = _password;
70
- } else {
71
- pass = toUtf8String(_password);
72
- }
73
-
74
- let wal = qcsdk.deserializeEncryptedWallet(json, pass);
75
- let privKey: any = wal.privateKey;
76
-
77
- let ks: KeystoreAccount = {
78
- address: wal.address,
79
- privateKey: hexlify(privKey)
80
- };
81
-
82
- return ks;
83
- }
84
-
85
- /**
86
- * Resolved to the JSON Keystore Wallet for %%account%% encrypted
87
- * with %%password%%.
88
- *
89
- * The %%options%% can be used to tune the password-based key
90
- * derivation function parameters, explicitly set the random values
91
- * used.
92
- */
93
- export function encryptKeystoreJsonSync(account: KeystoreAccount, password: Uint8Array | string): string {
94
- const signingKey: SigningKey = new SigningKey(account.privateKey);
95
- const privateKey: any = getBytes(signingKey.privateKey);
96
- const publicKey: any = getBytes(signingKey.publicKey);
97
- const wal = new qcsdk.Wallet(account.address, privateKey, publicKey);
98
-
99
- if (typeof password === 'string') {
100
- return qcsdk.serializeEncryptedWallet(wal, password);
101
- } else {
102
- let passPhrase = toUtf8String(password);
103
- return qcsdk.serializeEncryptedWallet(wal, passPhrase);
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
+
@@ -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
+ */