@aeternity/aepp-sdk 11.0.0 → 12.1.0

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 (442) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20764 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +26 -0
  29. package/es/account/Memory.mjs +103 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1065 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4166 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +138 -88
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +122 -0
  135. package/es/tx/builder/constants.mjs.map +1 -0
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -240
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -664
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -108
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +118 -0
  218. package/es/utils/encoder.mjs.map +1 -0
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +56 -42
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +170 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +146 -0
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/node-pool/index.mjs +0 -188
  360. package/es/node-pool/index.mjs.map +0 -1
  361. package/es/node.mjs +0 -133
  362. package/es/node.mjs.map +0 -1
  363. package/es/other.d.ts +0 -31
  364. package/es/semver-satisfies.d.ts +0 -1
  365. package/es/string.d.ts +0 -26
  366. package/es/tx/builder/field-types.mjs +0 -74
  367. package/es/tx/builder/field-types.mjs.map +0 -1
  368. package/es/tx/tx-object.mjs +0 -283
  369. package/es/tx/tx-object.mjs.map +0 -1
  370. package/es/tx/tx.mjs +0 -938
  371. package/es/tx/tx.mjs.map +0 -1
  372. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  374. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  376. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  378. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  380. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  381. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  382. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  384. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  386. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  388. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  389. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  390. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  392. package/es/utils/async-init.mjs +0 -64
  393. package/es/utils/async-init.mjs.map +0 -1
  394. package/es/utils/crypto-ts.mjs.map +0 -1
  395. package/es/utils/swagger.mjs +0 -164
  396. package/es/utils/swagger.mjs.map +0 -1
  397. package/src/account/base.js +0 -153
  398. package/src/account/memory.js +0 -83
  399. package/src/account/multiple.js +0 -162
  400. package/src/ae/aens.js +0 -361
  401. package/src/ae/aepp.js +0 -45
  402. package/src/ae/contract.js +0 -148
  403. package/src/ae/index.js +0 -168
  404. package/src/ae/oracle.js +0 -311
  405. package/src/ae/universal.js +0 -47
  406. package/src/ae/wallet.js +0 -50
  407. package/src/chain/index.js +0 -269
  408. package/src/chain/node.js +0 -320
  409. package/src/channel/handlers.js +0 -673
  410. package/src/channel/index.js +0 -898
  411. package/src/channel/internal.js +0 -237
  412. package/src/contract/aci.js +0 -376
  413. package/src/contract/compiler.js +0 -100
  414. package/src/contract/ga/helpers.js +0 -19
  415. package/src/contract/ga/index.js +0 -150
  416. package/src/index.js +0 -89
  417. package/src/node-pool/index.js +0 -172
  418. package/src/node.js +0 -116
  419. package/src/tx/builder/field-types.js +0 -61
  420. package/src/tx/builder/helpers.js +0 -380
  421. package/src/tx/builder/index.js +0 -465
  422. package/src/tx/builder/schema.js +0 -1197
  423. package/src/tx/index.js +0 -301
  424. package/src/tx/tx-object.js +0 -187
  425. package/src/tx/tx.js +0 -631
  426. package/src/tx/validator.js +0 -181
  427. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  428. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  429. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  430. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  431. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  432. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  433. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  434. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  435. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  436. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  437. package/src/utils/async-init.js +0 -45
  438. package/src/utils/crypto.js +0 -229
  439. package/src/utils/hd-wallet.js +0 -100
  440. package/src/utils/json-big.js +0 -26
  441. package/src/utils/keystore.js +0 -219
  442. package/src/utils/swagger.js +0 -156
@@ -1,229 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- /**
19
- * Crypto module
20
- * @module @aeternity/aepp-sdk/es/utils/crypto
21
- * @example import { Crypto } from '@aeternity/aepp-sdk'
22
- */
23
-
24
- import nacl from 'tweetnacl'
25
- import aesjs from 'aes-js'
26
- import shajs from 'sha.js'
27
-
28
- import { str2buf } from './bytes'
29
- import { encode, decode } from '../tx/builder/helpers'
30
- import { hash } from './crypto-ts'
31
- import { NotImplementedError } from './errors'
32
-
33
- export * from './crypto-ts'
34
-
35
- const Ecb = aesjs.ModeOfOperation.ecb
36
-
37
- /**
38
- * Generate address from secret key
39
- * @rtype (secret: String) => tx: Promise[String]
40
- * @param {String} secret - Private key
41
- * @return {String} Public key
42
- */
43
- export function getAddressFromPriv (secret) {
44
- const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))
45
- const publicBuffer = Buffer.from(keys.publicKey)
46
- return encode(publicBuffer, 'ak')
47
- }
48
-
49
- /**
50
- * Check if address is valid
51
- * @rtype (input: String) => valid: Boolean
52
- * @param {String} address - Address
53
- * @param {String} prefix Transaction prefix. Default: 'ak'
54
- * @return {Boolean} valid
55
- */
56
- export function isAddressValid (address, prefix = 'ak') {
57
- try {
58
- decode(address, prefix)
59
- return true
60
- } catch (e) {
61
- return false
62
- }
63
- }
64
-
65
- /**
66
- * Calculate SHA256 hash of `input`
67
- * @rtype (input: String) => hash: String
68
- * @param {String} input - Data to hash
69
- * @return {String} Hash
70
- */
71
- export function sha256hash (input) {
72
- return shajs('sha256').update(input).digest()
73
- }
74
-
75
- /**
76
- * Generate a random salt (positive integer)
77
- * @rtype () => salt: Number
78
- * @return {Number} random salt
79
- */
80
- export function salt () {
81
- return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER))
82
- }
83
-
84
- /**
85
- * Converts a positive integer to the smallest possible
86
- * representation in a binary digit representation
87
- * @rtype (value: Number) => Buffer
88
- * @param {Number} value - Value to encode
89
- * @return {Buffer} - Encoded data
90
- */
91
- export function encodeUnsigned (value) {
92
- const binary = Buffer.allocUnsafe(4)
93
- binary.writeUInt32BE(value)
94
- return binary.slice(binary.findIndex(i => i !== 0))
95
- }
96
-
97
- // Todo Duplicated in tx builder. remove
98
- /**
99
- * Compute contract address
100
- * @rtype (owner: String, nonce: Number) => String
101
- * @param {String} owner - Address of contract owner
102
- * @param {Number} nonce - Round when contract was created
103
- * @return {String} - Contract address
104
- */
105
- export function encodeContractAddress (owner, nonce) {
106
- const publicKey = decode(owner, 'ak')
107
- const binary = Buffer.concat([publicKey, encodeUnsigned(nonce)])
108
- return encode(hash(binary), 'ct')
109
- }
110
-
111
- // KEY-PAIR HELPERS
112
-
113
- /**
114
- * Generate keyPair from secret key
115
- * @rtype (secret: Uint8Array) => KeyPair
116
- * @param {Uint8Array} secret - secret key
117
- * @return {Object} - Object with Private(privateKey) and Public(publicKey) keys
118
- */
119
- export function generateKeyPairFromSecret (secret) {
120
- return nacl.sign.keyPair.fromSecretKey(secret)
121
- }
122
-
123
- /**
124
- * Generate a random ED25519 keypair
125
- * @rtype (raw: Boolean) => {publicKey: String | Buffer, secretKey: String | Buffer}
126
- * @param {Boolean} raw - Whether to return raw (binary) keys
127
- * @return {Object} Key pair
128
- */
129
- export function generateKeyPair (raw = false) {
130
- // <node>/apps/aens/test/aens_test_utils.erl
131
- const keyPair = nacl.sign.keyPair()
132
-
133
- const publicBuffer = Buffer.from(keyPair.publicKey)
134
- const secretBuffer = Buffer.from(keyPair.secretKey)
135
-
136
- if (raw) {
137
- return {
138
- publicKey: publicBuffer,
139
- secretKey: secretBuffer
140
- }
141
- } else {
142
- return {
143
- publicKey: encode(publicBuffer, 'ak'),
144
- secretKey: secretBuffer.toString('hex')
145
- }
146
- }
147
- }
148
-
149
- /**
150
- * Encrypt given data using `password`
151
- * @rtype (password: String, binaryData: Buffer) => Uint8Array
152
- * @param {String} password - Password to encrypt with
153
- * @param {Buffer} binaryData - Data to encrypt
154
- * @return {Uint8Array} Encrypted data
155
- */
156
- export function encryptKey (password, binaryData) {
157
- const hashedPasswordBytes = sha256hash(password)
158
- const aesEcb = new Ecb(hashedPasswordBytes)
159
- return aesEcb.encrypt(binaryData)
160
- }
161
-
162
- /**
163
- * Decrypt given data using `password`
164
- * @rtype (password: String, encrypted: String) => Uint8Array
165
- * @param {String} password - Password to decrypt with
166
- * @param {String} encrypted - Data to decrypt
167
- * @return {Buffer} Decrypted data
168
- */
169
- export function decryptKey (password, encrypted) {
170
- const encryptedBytes = Buffer.from(encrypted)
171
- const hashedPasswordBytes = sha256hash(password)
172
- const aesEcb = new Ecb(hashedPasswordBytes)
173
- return Buffer.from(aesEcb.decrypt(encryptedBytes))
174
- }
175
-
176
- // SIGNATURES
177
-
178
- /**
179
- * Generate signature
180
- * @rtype (data: String|Buffer, privateKey: Buffer) => Buffer
181
- * @param {String|Buffer} data - Data to sign
182
- * @param {String|Buffer} privateKey - Key to sign with
183
- * @return {Buffer|Uint8Array} Signature
184
- */
185
- export function sign (data, privateKey) {
186
- return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey))
187
- }
188
-
189
- /**
190
- * Verify that signature was signed by public key
191
- * @rtype (str: String, signature: Buffer, publicKey: Buffer) => Boolean
192
- * @param {String|Buffer} str - Data to verify
193
- * @param {Buffer} signature - Signature to verify
194
- * @param {Buffer} publicKey - Key to verify against
195
- * @return {Boolean} Valid?
196
- */
197
- export function verify (str, signature, publicKey) {
198
- return nacl.sign.detached.verify(new Uint8Array(str), signature, publicKey)
199
- }
200
-
201
- export function messageToHash (message) {
202
- const p = Buffer.from('aeternity Signed Message:\n', 'utf8')
203
- const msg = Buffer.from(message, 'utf8')
204
- if (msg.length >= 0xFD) throw new NotImplementedError('Message too long')
205
- return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]))
206
- }
207
-
208
- export function signMessage (message, privateKey) {
209
- return sign(messageToHash(message), privateKey)
210
- }
211
-
212
- export function verifyMessage (str, signature, publicKey) {
213
- return verify(messageToHash(str), signature, publicKey)
214
- }
215
-
216
- /**
217
- * Check key pair for validity
218
- *
219
- * Sign a message, and then verifying that signature
220
- * @rtype (privateKey: Buffer, publicKey: Buffer) => Boolean
221
- * @param {Buffer} privateKey - Private key to verify
222
- * @param {Buffer} publicKey - Public key to verify
223
- * @return {Boolean} Valid?
224
- */
225
- export function isValidKeypair (privateKey, publicKey) {
226
- const message = Buffer.from('TheMessage')
227
- const signature = sign(message, privateKey)
228
- return verify(message, signature, publicKey)
229
- }
@@ -1,100 +0,0 @@
1
- import nacl from 'tweetnacl'
2
- import { full as hmac } from 'tweetnacl-auth'
3
- import { fromString } from 'bip32-path'
4
- import { decryptKey, encryptKey } from './crypto'
5
- import { encode } from '../tx/builder/helpers'
6
- import {
7
- InvalidDerivationPathError, NotHardenedSegmentError, UnsupportedChildIndexError
8
- } from './errors'
9
-
10
- const ED25519_CURVE = Buffer.from('ed25519 seed')
11
- const HARDENED_OFFSET = 0x80000000
12
-
13
- const toHex = (buffer) => Buffer.from(buffer).toString('hex')
14
-
15
- export function derivePathFromKey (path, key) {
16
- const segments = path === '' ? [] : fromString(path).toPathArray()
17
- segments.forEach((segment, i) => {
18
- if (segment < HARDENED_OFFSET) {
19
- throw new NotHardenedSegmentError(`Segment #${i + 1} is not hardened`)
20
- }
21
- })
22
-
23
- return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key)
24
- }
25
-
26
- export function derivePathFromSeed (path, seed) {
27
- if (!['m', 'm/'].includes(path.slice(0, 2))) {
28
- throw new InvalidDerivationPathError()
29
- }
30
- const masterKey = getMasterKeyFromSeed(seed)
31
- return derivePathFromKey(path.slice(2), masterKey)
32
- }
33
-
34
- function formatAccount (keys) {
35
- const { secretKey, publicKey } = keys
36
- return {
37
- secretKey: toHex(secretKey),
38
- publicKey: encode(publicKey, 'ak')
39
- }
40
- }
41
-
42
- export function getKeyPair (secretKey) {
43
- return nacl.sign.keyPair.fromSeed(secretKey)
44
- }
45
-
46
- export function getMasterKeyFromSeed (seed) {
47
- const I = hmac(seed, ED25519_CURVE)
48
- const IL = I.slice(0, 32)
49
- const IR = I.slice(32)
50
- return {
51
- secretKey: IL,
52
- chainCode: IR
53
- }
54
- }
55
-
56
- export function deriveChild ({ secretKey, chainCode }, index) {
57
- if (index < HARDENED_OFFSET) {
58
- throw new UnsupportedChildIndexError(index)
59
- }
60
- const indexBuffer = Buffer.allocUnsafe(4)
61
- indexBuffer.writeUInt32BE(index, 0)
62
-
63
- const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(secretKey), Buffer.from(indexBuffer)])
64
-
65
- const I = hmac(data, chainCode)
66
- const IL = I.slice(0, 32)
67
- const IR = I.slice(32)
68
- return {
69
- secretKey: IL,
70
- chainCode: IR
71
- }
72
- }
73
-
74
- export function generateSaveHDWalletFromSeed (seed, password) {
75
- const walletKey = derivePathFromSeed('m/44h/457h', seed)
76
- return {
77
- secretKey: toHex(encryptKey(password, walletKey.secretKey)),
78
- chainCode: toHex(encryptKey(password, walletKey.chainCode))
79
- }
80
- }
81
-
82
- export function getSaveHDWalletAccounts (saveHDWallet, password, accountCount) {
83
- const walletKey = {
84
- secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),
85
- chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex'))
86
- }
87
- return (new Array(accountCount)).fill()
88
- .map((_, idx) =>
89
- formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)))
90
- }
91
-
92
- export const getHdWalletAccountFromSeed = (seed, accountIdx) => {
93
- const walletKey = derivePathFromSeed('m/44h/457h', seed)
94
- const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey)
95
- const keyPair = getKeyPair(derived.secretKey)
96
- return {
97
- ...formatAccount(keyPair),
98
- idx: accountIdx
99
- }
100
- }
@@ -1,26 +0,0 @@
1
- import JsonBig from '@aeternity/json-bigint'
2
- import BigNumber from 'bignumber.js'
3
-
4
- const jsonBig = JsonBig({ storeAsString: true })
5
-
6
- const convertValuesToBigNumbers = value => {
7
- if (typeof value === 'object' && value !== null && value.constructor === Object) {
8
- return Object.entries(value)
9
- .map(([key, value]) => [key, convertValuesToBigNumbers(value)])
10
- .reduce((p, [k, v]) => ({ ...p, [k]: v }), {})
11
- }
12
- if (Array.isArray(value)) {
13
- return value.map(item => convertValuesToBigNumbers(item))
14
- }
15
- if (typeof value === 'string' && BigNumber(value).toString(10) === value) {
16
- const bn = BigNumber(value)
17
- bn.toJSON = () => bn.toString(10)
18
- return bn
19
- }
20
- return value
21
- }
22
-
23
- export default {
24
- stringify: (object, ...args) => jsonBig.stringify(convertValuesToBigNumbers(object), ...args),
25
- parse: jsonBig.parse
26
- }
@@ -1,219 +0,0 @@
1
- import nacl from 'tweetnacl'
2
- import { v4 as uuid } from '@aeternity/uuid'
3
- import { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js'
4
- import { encode } from '../tx/builder/helpers'
5
- import { str2buf } from './bytes'
6
- import {
7
- ArgumentError, InvalidKeyError, UnsupportedAlgorithmError, InvalidPasswordError
8
- } from './errors'
9
-
10
- /**
11
- * KeyStore module
12
- * @module @aeternity/aepp-sdk/es/utils/keystore
13
- * @example import { Keystore } from '@aeternity/aepp-sdk'
14
- * @example const { Keystore } = require('@aeternity/aepp-sdk')
15
- */
16
-
17
- const DEFAULTS = {
18
- crypto: {
19
- secret_type: 'ed25519',
20
- symmetric_alg: 'xsalsa20-poly1305',
21
- kdf: 'argon2id',
22
- kdf_params: {
23
- memlimit_kib: 65536,
24
- opslimit: 3,
25
- parallelism: 1
26
- }
27
- }
28
- }
29
-
30
- // DERIVED KEY PART
31
- const DERIVED_KEY_FUNCTIONS = {
32
- argon2id: deriveKeyUsingArgon2id
33
- }
34
-
35
- export async function deriveKeyUsingArgon2id (pass, salt, options) {
36
- const { memlimit_kib: mem, opslimit: time } = options.kdf_params
37
-
38
- const result = (await hash({
39
- hashLen: 32,
40
- pass,
41
- salt,
42
- time,
43
- mem,
44
- type: ArgonType.Argon2id
45
- })).hash
46
- return Buffer.from(result)
47
- }
48
-
49
- // CRYPTO PART
50
- const CRYPTO_FUNCTIONS = {
51
- 'xsalsa20-poly1305': { encrypt: encryptXsalsa20Poly1305, decrypt: decryptXsalsa20Poly1305 }
52
- }
53
-
54
- function encryptXsalsa20Poly1305 ({ plaintext, key, nonce }) {
55
- return nacl.secretbox(plaintext, nonce, key)
56
- }
57
-
58
- function decryptXsalsa20Poly1305 ({ ciphertext, key, nonce }) {
59
- const res = nacl.secretbox.open(ciphertext, nonce, key)
60
- if (!res) throw new InvalidPasswordError('Invalid password or nonce')
61
- return res
62
- }
63
-
64
- /**
65
- * Symmetric private key encryption using secret (derived) key.
66
- * @param {Buffer|string} plaintext Data to be encrypted.
67
- * @param {Buffer|string} key Secret key.
68
- * @param {Buffer|string} nonce Randomly generated nonce.
69
- * @param {string=} algo Encryption algorithm (default: DEFAULTS.crypto.symmetric_alg).
70
- * @return {Buffer} Encrypted data.
71
- */
72
- function encrypt (plaintext, key, nonce, algo = DEFAULTS.crypto.symmetric_alg) {
73
- if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)
74
- return CRYPTO_FUNCTIONS[algo].encrypt({ plaintext, nonce, key })
75
- }
76
-
77
- /**
78
- * Symmetric private key decryption using secret (derived) key.
79
- * @param {Buffer|Uint8Array} ciphertext Data to be decrypted.
80
- * @param {Buffer|Uint8Array} key Secret key.
81
- * @param {Buffer|Uint8Array} nonce Nonce from key-object.
82
- * @param {string=} algo Encryption algorithm.
83
- * @return {Buffer} Decrypted data.
84
- */
85
- function decrypt (ciphertext, key, nonce, algo) {
86
- if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)
87
- return CRYPTO_FUNCTIONS[algo].decrypt({ ciphertext, nonce, key })
88
- }
89
-
90
- /**
91
- * Derive secret key from password with key derivation function.
92
- * @param {string} password User-supplied password.
93
- * @param {Buffer|Uint8Array} nonce Randomly generated nonce.
94
- * @param {Object=} options Encryption parameters.
95
- * @param {string=} options.kdf Key derivation function (default: DEFAULTS.crypto.kdf).
96
- * @param {Object=} options.kdf_params KDF parameters (default: DEFAULTS.crypto.kdf_params).
97
- * @return {Buffer} Secret key derived from password.
98
- */
99
- async function deriveKey (password, nonce, options = {
100
- kdf_params: DEFAULTS.crypto.kdf_params,
101
- kdf: DEFAULTS.crypto.kdf
102
- }) {
103
- if (!nonce) throw new ArgumentError('nonce', 'provided', nonce)
104
- if (password == null) throw new ArgumentError('password', 'provided', password)
105
-
106
- if (!Object.prototype.hasOwnProperty.call(DERIVED_KEY_FUNCTIONS, options.kdf)) {
107
- throw new UnsupportedAlgorithmError(options.kdf)
108
- }
109
-
110
- return DERIVED_KEY_FUNCTIONS[options.kdf](password, nonce, options)
111
- }
112
-
113
- /**
114
- * Assemble key data object in secret-storage format.
115
- * @param {Buffer} name Key name.
116
- * @param {Buffer} derivedKey Password-derived secret key.
117
- * @param {Buffer} privateKey Private key.
118
- * @param {Buffer} nonce Randomly generated 24byte nonce.
119
- * @param {Buffer} salt Randomly generated 16byte salt.
120
- * @param {Object=} options Encryption parameters.
121
- * @param {string=} options.kdf Key derivation function (default: argon2id).
122
- * @param {string=} options.cipher Symmetric cipher (default: constants.cipher).
123
- * @param {Object=} options.kdf_params KDF parameters (default: constants.<kdf>).
124
- * @return {Object}
125
- */
126
- function marshal (name, derivedKey, privateKey, nonce, salt, options = {}) {
127
- const opt = Object.assign({}, DEFAULTS.crypto, options)
128
- return Object.assign(
129
- { name, version: 1, public_key: getAddressFromPriv(privateKey), id: uuid() },
130
- {
131
- crypto: Object.assign(
132
- {
133
- secret_type: opt.secret_type,
134
- symmetric_alg: opt.symmetric_alg,
135
- ciphertext: Buffer.from(encrypt(Buffer.from(privateKey), derivedKey, nonce, opt.symmetric_alg)).toString('hex'),
136
- cipher_params: { nonce: Buffer.from(nonce).toString('hex') }
137
- },
138
- { kdf: opt.kdf, kdf_params: { ...opt.kdf_params, salt: Buffer.from(salt).toString('hex') } }
139
- )
140
- }
141
- )
142
- }
143
-
144
- export function getAddressFromPriv (secret) {
145
- const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))
146
- const publicBuffer = Buffer.from(keys.publicKey)
147
- return encode(publicBuffer, 'ak')
148
- }
149
-
150
- /**
151
- * Recover plaintext private key from secret-storage key object.
152
- * @param {String} password Keystore object password.
153
- * @param {Object} keyObject Keystore object.
154
- * @return {Buffer} Plaintext private key.
155
- */
156
- export async function recover (password, keyObject) {
157
- validateKeyObj(keyObject)
158
- const nonce = Uint8Array.from(str2buf(keyObject.crypto.cipher_params.nonce))
159
- const salt = Uint8Array.from(str2buf(keyObject.crypto.kdf_params.salt))
160
- const kdfParams = keyObject.crypto.kdf_params
161
- const kdf = keyObject.crypto.kdf
162
-
163
- const key = await decrypt(
164
- Uint8Array.from(str2buf(keyObject.crypto.ciphertext)),
165
- await deriveKey(password, salt, { kdf, kdf_params: kdfParams }),
166
- nonce,
167
- keyObject.crypto.symmetric_alg
168
- )
169
- if (!key) throw new InvalidPasswordError('Invalid password')
170
-
171
- if (Buffer.from(key).length === 64) return Buffer.from(key).toString('hex')
172
- return Buffer.from(key).toString('utf-8')
173
- }
174
-
175
- /**
176
- * Export private key to keystore secret-storage format.
177
- * @param {String} name Key name.
178
- * @param {String} password User-supplied password.
179
- * @param {String|Buffer} privateKey Private key as hex-string or a Buffer.
180
- * @param {Buffer} nonce Randomly generated 24byte nonce.
181
- * @param {Buffer} salt Randomly generated 16byte salt.
182
- * @param {Object=} options Encryption parameters.
183
- * @param {String=} options.kdf Key derivation function (default: pbkdf2).
184
- * @param {String=} options.cipher Symmetric cipher (default: constants.cipher).
185
- * @param {Object=} options.kdfparams KDF parameters (default: constants.<kdf>).
186
- * @return {Object}
187
- */
188
- export async function dump (
189
- name,
190
- password,
191
- privateKey,
192
- nonce = nacl.randomBytes(24),
193
- salt = nacl.randomBytes(16),
194
- options = {}
195
- ) {
196
- const opt = Object.assign({}, DEFAULTS.crypto, options)
197
- return marshal(
198
- name,
199
- await deriveKey(password, salt, opt),
200
- typeof privateKey === 'string' ? Buffer.from(privateKey, 'hex') : privateKey,
201
- nonce,
202
- salt,
203
- opt
204
- )
205
- }
206
-
207
- export function validateKeyObj (obj) {
208
- const root = ['crypto', 'id', 'version', 'public_key']
209
- const cryptoKeys = ['cipher_params', 'ciphertext', 'symmetric_alg', 'kdf', 'kdf_params']
210
-
211
- const missingRootKeys = root.filter(key => !Object.prototype.hasOwnProperty.call(obj, key))
212
- if (missingRootKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingRootKeys}`)
213
-
214
- const missingCryptoKeys = cryptoKeys
215
- .filter(key => !Object.prototype.hasOwnProperty.call(obj.crypto, key))
216
- if (missingCryptoKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingCryptoKeys}`)
217
-
218
- return true
219
- }