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,118 +1,126 @@
1
- /**
2
- * Add details about signing here.
3
- *
4
- * @_subsection: api/crypto:Signing [about-signing]
5
- */
6
-
7
- import pqc = require('quantum-coin-pqc-js-sdk');
8
- import qcsdk = require('quantum-coin-js-sdk');
9
-
10
- import {
11
- getBytes,
12
- dataLength, getBytesCopy, hexlify,
13
- assertArgument
14
- } from "../utils/index.js";
15
-
16
- import { Signature } from "./signature.js";
17
-
18
- import type { BytesLike } from "../utils/index.js";
19
-
20
- import type { SignatureLike } from "./index.js";
21
-
22
- const CRYPTO_MESSAGE_LENGTH = 32;
23
- const CRYPTO_SECRETKEY_BYTES = 64 + 2560 + 1312 + 128;
24
- //const CRYPTO_PUBLICKEY_BYTES = 32 + 1312 + 64;
25
-
26
- /**
27
- * A **SigningKey** provides high-level access to cryptography operations and key management.
28
- */
29
- export class SigningKey {
30
- #privateKey: string;
31
-
32
- /**
33
- * Creates a new **SigningKey** for %%privateKey%%.
34
- */
35
- constructor(privateKey: BytesLike) {
36
- assertArgument(dataLength(privateKey) === CRYPTO_SECRETKEY_BYTES, "invalid private key", "privateKey", "[REDACTED]");
37
- this.#privateKey = hexlify(privateKey);
38
- }
39
-
40
- /**
41
- * The private key.
42
- */
43
- get privateKey(): string { return this.#privateKey; }
44
-
45
- /**
46
- * The public key.
47
- *
48
- */
49
- get publicKey(): string { return SigningKey.computePublicKey(this.#privateKey); }
50
-
51
- /**
52
- * Return the signature of the signed %%digest%%.
53
- */
54
- sign(digest: BytesLike): Signature {
55
- assertArgument(dataLength(digest) === CRYPTO_MESSAGE_LENGTH, "invalid digest length", "digest", digest);
56
-
57
- const sig: any = pqc.cryptoSign(getBytesCopy(digest), getBytesCopy(this.#privateKey));
58
- const pubBytes: any = getBytes(this.publicKey);
59
- const combinedSig = qcsdk.combinePublicKeySignature(pubBytes, sig);
60
-
61
- return Signature.from({
62
- r: this.publicKey,
63
- s: combinedSig,
64
- v: 0x1
65
- });
66
- }
67
-
68
- /**
69
- * Compute the public key for a private %%key%%.
70
- *
71
- *
72
- * @example:
73
- * sign = new SigningKey(id("some-secret"));
74
- *
75
- * // Compute the public key for a private key
76
- * SigningKey.computePublicKey(sign.privateKey)
77
- * //_result:
78
- */
79
- static computePublicKey(key: BytesLike): string {
80
- assertArgument(dataLength(key) === CRYPTO_SECRETKEY_BYTES, "invalid private key", "privateKey", "[REDACTED]");
81
- let priBytes: any = getBytes(key, "key");
82
-
83
- let pubKey = qcsdk.publicKeyFromPrivateKey(priBytes);
84
-
85
- return pubKey;
86
- }
87
-
88
- /**
89
- * Returns the public key for the private key which produced the
90
- * %%signature%% for the given %%digest%%.
91
- *
92
- * @example:
93
- * key = new SigningKey(id("some-secret"))
94
- * digest = id("hello world")
95
- * sig = key.sign(digest)
96
- *
97
- * // Notice the signer public key...
98
- * key.publicKey
99
- * //_result:
100
- *
101
- * // ...is equal to the recovered public key
102
- * SigningKey.recoverPublicKey(digest, sig)
103
- * //_result:
104
- *
105
- */
106
- static recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {
107
- assertArgument(dataLength(digest) === CRYPTO_MESSAGE_LENGTH, "invalid digest length", "digest", digest);
108
-
109
- const sig = Signature.from(signature);
110
- let sigBytes: any = getBytes(sig.s);
111
- let digestBytes: any = digest;
112
-
113
- let publicKey = qcsdk.publicKeyFromSignature(digestBytes, sigBytes);
114
-
115
- return publicKey;
116
- }
117
- }
118
-
1
+ /**
2
+ * Add details about signing here.
3
+ *
4
+ * @_subsection: api/crypto:Signing [about-signing]
5
+ */
6
+
7
+ import {combinePublicKeySignature, publicKeyFromPrivateKey, publicKeyFromSignature} from "quantum-coin-js-sdk";
8
+ import {cryptoSign} from "quantum-coin-pqc-js-sdk";
9
+
10
+ import {
11
+ getBytes,
12
+ dataLength, getBytesCopy, hexlify,
13
+ assertArgument,
14
+ } from "../utils/index.js";
15
+
16
+ import { Signature } from "./signature.js";
17
+
18
+ import type { BytesLike } from "../utils/index.js";
19
+
20
+ import type { SignatureLike } from "./index.js";
21
+
22
+ const CRYPTO_MESSAGE_LENGTH = 32;
23
+ const CRYPTO_SECRETKEY_BYTES = 64 + 2560 + 1312 + 128;
24
+ const CRYPTO_PUBLICKEY_BYTES = 32 + 1312 + 64;
25
+
26
+ /**
27
+ * A **SigningKey** provides high-level access to cryptography operations and key management.
28
+ */
29
+ export class SigningKey {
30
+ #privateKey: string;
31
+
32
+ /**
33
+ * Creates a new **SigningKey** for %%privateKey%%.
34
+ */
35
+ constructor(privateKey: BytesLike) {
36
+ assertArgument(dataLength(privateKey) === CRYPTO_SECRETKEY_BYTES, "invalid private key", "privateKey", "[REDACTED]");
37
+ this.#privateKey = hexlify(privateKey);
38
+ }
39
+
40
+ /**
41
+ * The private key.
42
+ */
43
+ get privateKey(): string { return this.#privateKey; }
44
+
45
+ /**
46
+ * The public key.
47
+ *
48
+ */
49
+ get publicKey(): string { return SigningKey.computePublicKey(this.#privateKey); }
50
+
51
+ /**
52
+ * Return the signature of the signed %%digest%%.
53
+ */
54
+ sign(digest: BytesLike): Signature {
55
+ assertArgument(dataLength(digest) === CRYPTO_MESSAGE_LENGTH, "invalid digest length", "digest", digest);
56
+
57
+ const sig: any = cryptoSign(getBytesCopy(digest), getBytesCopy(this.#privateKey));
58
+ const pubBytes: any = getBytes(this.publicKey);
59
+ let combinedSig = combinePublicKeySignature(pubBytes, sig);
60
+ combinedSig = "0x" + combinedSig;
61
+
62
+ return Signature.from({
63
+ r: this.publicKey,
64
+ s: combinedSig,
65
+ v: 0x1
66
+ });
67
+ }
68
+
69
+ /**
70
+ * Compute the public key for a private %%key%%. If a publicKey is passed, it is returned as is. for backward compatibility.
71
+ *
72
+ *
73
+ * @example:
74
+ * sign = new SigningKey(id("some-secret"));
75
+ *
76
+ * // Compute the public key for a private key
77
+ * SigningKey.computePublicKey(sign.privateKey)
78
+ * //_result:
79
+ */
80
+ static computePublicKey(key: BytesLike): string {
81
+ let keyBytes: any = getBytes(key, "key");
82
+ let pubKey: any;
83
+
84
+ if (keyBytes.length == CRYPTO_SECRETKEY_BYTES) {
85
+ pubKey = publicKeyFromPrivateKey(keyBytes);
86
+ assertArgument(pubKey !== null && pubKey !== undefined, "invalid key", "key", "[REDACTED]");
87
+ pubKey = '0x' + pubKey;
88
+ } else if(keyBytes.length == CRYPTO_PUBLICKEY_BYTES) {
89
+ pubKey = keyBytes;
90
+ }
91
+
92
+ assertArgument(pubKey !== null && pubKey !== undefined, "invalid key", "key", "[REDACTED]");
93
+ return pubKey;
94
+ }
95
+
96
+ /**
97
+ * Returns the public key for the private key which produced the
98
+ * %%signature%% for the given %%digest%%.
99
+ *
100
+ * @example:
101
+ * key = new SigningKey(id("some-secret"))
102
+ * digest = id("hello world")
103
+ * sig = key.sign(digest)
104
+ *
105
+ * // Notice the signer public key...
106
+ * key.publicKey
107
+ * //_result:
108
+ *
109
+ * // ...is equal to the recovered public key
110
+ * SigningKey.recoverPublicKey(digest, sig)
111
+ * //_result:
112
+ *
113
+ */
114
+ static recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {
115
+ assertArgument(dataLength(digest) === CRYPTO_MESSAGE_LENGTH, "invalid digest length", "digest", digest);
116
+
117
+ const sig = Signature.from(signature);
118
+ let sigBytes: any = getBytes(sig.s);
119
+ let digestBytes: any = digest;
120
+
121
+ let publicKey = publicKeyFromSignature(digestBytes, sigBytes);
122
+
123
+ return publicKey;
124
+ }
125
+ }
126
+
@@ -1,38 +1,38 @@
1
- import { getAddress } from "../address/index.js";
2
- import { keccak256 } from "../crypto/index.js";
3
- import { recoverAddress } from "../transaction/index.js";
4
- import {
5
- assertArgument, concat, encodeRlp, toBeArray
6
- } from "../utils/index.js";
7
-
8
- import type { Addressable } from "../address/index.js";
9
- import type { SignatureLike } from "../crypto/index.js";
10
- import type { BigNumberish, Numeric } from "../utils/index.js";
11
-
12
- export interface AuthorizationRequest {
13
- address: string | Addressable;
14
- nonce?: Numeric;
15
- chainId?: BigNumberish;
16
- }
17
-
18
- /**
19
- * Computes the [[link-eip-7702]] authorization digest to sign.
20
- */
21
- export function hashAuthorization(auth: AuthorizationRequest): string {
22
- assertArgument(typeof(auth.address) === "string", "invalid address for hashAuthorization", "auth.address", auth);
23
- return keccak256(concat([
24
- "0x05", encodeRlp([
25
- (auth.chainId != null) ? toBeArray(auth.chainId): "0x",
26
- getAddress(auth.address),
27
- (auth.nonce != null) ? toBeArray(auth.nonce): "0x",
28
- ])
29
- ]));
30
- }
31
-
32
- /**
33
- * Return the address of the private key that produced
34
- * the signature %%sig%% during signing for %%message%%.
35
- */
36
- export function verifyAuthorization(auth: AuthorizationRequest, sig: SignatureLike): string {
37
- return recoverAddress(hashAuthorization(auth), sig);
38
- }
1
+ import { getAddress } from "../address/index.js";
2
+ import { keccak256 } from "../crypto/index.js";
3
+ import { recoverAddress } from "../transaction/index.js";
4
+ import {
5
+ assertArgument, concat, encodeRlp, toBeArray
6
+ } from "../utils/index.js";
7
+
8
+ import type { Addressable } from "../address/index.js";
9
+ import type { SignatureLike } from "../crypto/index.js";
10
+ import type { BigNumberish, Numeric } from "../utils/index.js";
11
+
12
+ export interface AuthorizationRequest {
13
+ address: string | Addressable;
14
+ nonce?: Numeric;
15
+ chainId?: BigNumberish;
16
+ }
17
+
18
+ /**
19
+ * Computes the [[link-eip-7702]] authorization digest to sign.
20
+ */
21
+ export function hashAuthorization(auth: AuthorizationRequest): string {
22
+ assertArgument(typeof(auth.address) === "string", "invalid address for hashAuthorization", "auth.address", auth);
23
+ return keccak256(concat([
24
+ "0x05", encodeRlp([
25
+ (auth.chainId != null) ? toBeArray(auth.chainId): "0x",
26
+ getAddress(auth.address),
27
+ (auth.nonce != null) ? toBeArray(auth.nonce): "0x",
28
+ ])
29
+ ]));
30
+ }
31
+
32
+ /**
33
+ * Return the address of the private key that produced
34
+ * the signature %%sig%% during signing for %%message%%.
35
+ */
36
+ export function verifyAuthorization(auth: AuthorizationRequest, sig: SignatureLike): string {
37
+ return recoverAddress(hashAuthorization(auth), sig);
38
+ }
package/src.ts/hash/id.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { keccak256 } from "../crypto/index.js";
2
- import { toUtf8Bytes } from "../utils/index.js";
3
-
4
- /**
5
- * A simple hashing function which operates on UTF-8 strings to
6
- * compute an 32-byte identifier.
7
- *
8
- * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes
9
- * the [[keccak256]].
10
- *
11
- * @example:
12
- * id("hello world")
13
- * //_result:
14
- */
15
- export function id(value: string): string {
16
- return keccak256(toUtf8Bytes(value));
17
- }
1
+ import { keccak256 } from "../crypto/index.js";
2
+ import { toUtf8Bytes } from "../utils/index.js";
3
+
4
+ /**
5
+ * A simple hashing function which operates on UTF-8 strings to
6
+ * compute an 32-byte identifier.
7
+ *
8
+ * This simply computes the [UTF-8 bytes](toUtf8Bytes) and computes
9
+ * the [[keccak256]].
10
+ *
11
+ * @example:
12
+ * id("hello world")
13
+ * //_result:
14
+ */
15
+ export function id(value: string): string {
16
+ return keccak256(toUtf8Bytes(value));
17
+ }
@@ -1,18 +1,18 @@
1
- /**
2
- * Utilities for common tasks involving hashing. Also see
3
- * [cryptographic hashing](about-crypto-hashing).
4
- *
5
- * @_section: api/hashing:Hashing Utilities [about-hashing]
6
- */
7
-
8
- export { hashAuthorization, verifyAuthorization } from "./authorization.js";
9
- export { id } from "./id.js"
10
- export { ensNormalize, isValidName, namehash, dnsEncode } from "./namehash.js";
11
- export { hashMessage, verifyMessage } from "./message.js";
12
- export {
13
- solidityPacked, solidityPackedKeccak256, solidityPackedSha256
14
- } from "./solidity.js";
15
- export { TypedDataEncoder, verifyTypedData } from "./typed-data.js";
16
-
17
- export type { AuthorizationRequest } from "./authorization.js";
18
- export type { TypedDataDomain, TypedDataField } from "./typed-data.js";
1
+ /**
2
+ * Utilities for common tasks involving hashing. Also see
3
+ * [cryptographic hashing](about-crypto-hashing).
4
+ *
5
+ * @_section: api/hashing:Hashing Utilities [about-hashing]
6
+ */
7
+
8
+ export { hashAuthorization, verifyAuthorization } from "./authorization.js";
9
+ export { id } from "./id.js"
10
+ export { ensNormalize, isValidName, namehash, dnsEncode } from "./namehash.js";
11
+ export { hashMessage, verifyMessage } from "./message.js";
12
+ export {
13
+ solidityPacked, solidityPackedKeccak256, solidityPackedSha256
14
+ } from "./solidity.js";
15
+ export { TypedDataEncoder, verifyTypedData } from "./typed-data.js";
16
+
17
+ export type { AuthorizationRequest } from "./authorization.js";
18
+ export type { TypedDataDomain, TypedDataField } from "./typed-data.js";
@@ -1,51 +1,51 @@
1
- import { keccak256 } from "../crypto/index.js";
2
- import { MessagePrefix } from "../constants/index.js";
3
- import { recoverAddress } from "../transaction/index.js";
4
- import { concat, toUtf8Bytes } from "../utils/index.js";
5
-
6
- import type { SignatureLike } from "../crypto/index.js";
7
- /**
8
- * Computes the [[link-eip-191]] personal-sign message digest to sign.
9
- *
10
- * This prefixes the message with [[MessagePrefix]] and the decimal length
11
- * of %%message%% and computes the [[keccak256]] digest.
12
- *
13
- * If %%message%% is a string, it is converted to its UTF-8 bytes
14
- * first. To compute the digest of a [[DataHexString]], it must be converted
15
- * to [bytes](getBytes).
16
- *
17
- * @example:
18
- * hashMessage("Hello World")
19
- * //_result:
20
- *
21
- * // Hashes the SIX (6) string characters, i.e.
22
- * // [ "0", "x", "4", "2", "4", "3" ]
23
- * hashMessage("0x4243")
24
- * //_result:
25
- *
26
- * // Hashes the TWO (2) bytes [ 0x42, 0x43 ]...
27
- * hashMessage(getBytes("0x4243"))
28
- * //_result:
29
- *
30
- * // ...which is equal to using data
31
- * hashMessage(new Uint8Array([ 0x42, 0x43 ]))
32
- * //_result:
33
- *
34
- */
35
- export function hashMessage(message: Uint8Array | string): string {
36
- if (typeof(message) === "string") { message = toUtf8Bytes(message); }
37
- return keccak256(concat([
38
- toUtf8Bytes(MessagePrefix),
39
- toUtf8Bytes(String(message.length)),
40
- message
41
- ]));
42
- }
43
-
44
- /**
45
- * Return the address of the private key that produced
46
- * the signature %%sig%% during signing for %%message%%.
47
- */
48
- export function verifyMessage(message: Uint8Array | string, sig: SignatureLike): string {
49
- const digest = hashMessage(message);
50
- return recoverAddress(digest, sig);
51
- }
1
+ import { keccak256 } from "../crypto/index.js";
2
+ import { MessagePrefix } from "../constants/index.js";
3
+ import { recoverAddress } from "../transaction/index.js";
4
+ import { concat, toUtf8Bytes } from "../utils/index.js";
5
+
6
+ import type { SignatureLike } from "../crypto/index.js";
7
+ /**
8
+ * Computes the [[link-eip-191]] personal-sign message digest to sign.
9
+ *
10
+ * This prefixes the message with [[MessagePrefix]] and the decimal length
11
+ * of %%message%% and computes the [[keccak256]] digest.
12
+ *
13
+ * If %%message%% is a string, it is converted to its UTF-8 bytes
14
+ * first. To compute the digest of a [[DataHexString]], it must be converted
15
+ * to [bytes](getBytes).
16
+ *
17
+ * @example:
18
+ * hashMessage("Hello World")
19
+ * //_result:
20
+ *
21
+ * // Hashes the SIX (6) string characters, i.e.
22
+ * // [ "0", "x", "4", "2", "4", "3" ]
23
+ * hashMessage("0x4243")
24
+ * //_result:
25
+ *
26
+ * // Hashes the TWO (2) bytes [ 0x42, 0x43 ]...
27
+ * hashMessage(getBytes("0x4243"))
28
+ * //_result:
29
+ *
30
+ * // ...which is equal to using data
31
+ * hashMessage(new Uint8Array([ 0x42, 0x43 ]))
32
+ * //_result:
33
+ *
34
+ */
35
+ export function hashMessage(message: Uint8Array | string): string {
36
+ if (typeof(message) === "string") { message = toUtf8Bytes(message); }
37
+ return keccak256(concat([
38
+ toUtf8Bytes(MessagePrefix),
39
+ toUtf8Bytes(String(message.length)),
40
+ message
41
+ ]));
42
+ }
43
+
44
+ /**
45
+ * Return the address of the private key that produced
46
+ * the signature %%sig%% during signing for %%message%%.
47
+ */
48
+ export function verifyMessage(message: Uint8Array | string, sig: SignatureLike): string {
49
+ const digest = hashMessage(message);
50
+ return recoverAddress(digest, sig);
51
+ }