@aeternity/aepp-sdk 10.0.0 → 12.0.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.
- package/LICENSE +1 -1
- package/README.md +15 -14
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +37 -0
- package/es/AeSdk.mjs +81 -0
- package/es/AeSdk.mjs.map +1 -0
- package/es/AeSdkAepp.d.ts +69 -0
- package/es/AeSdkAepp.mjs +175 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +212 -0
- package/es/AeSdkBase.mjs +310 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +103 -0
- package/es/AeSdkWallet.mjs +322 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +44 -0
- package/es/Node.mjs +141 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +65 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +25 -0
- package/es/account/Memory.mjs +81 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +79 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +209 -0
- package/es/aens.mjs +332 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
- package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +118 -0
- package/es/aepp-wallet-communication/schema.mjs +214 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/apis/compiler/compiler.d.ts +92 -0
- package/es/apis/compiler/compiler.mjs +576 -0
- package/es/apis/compiler/compiler.mjs.map +1 -0
- package/es/apis/compiler/index.d.ts +2 -0
- package/es/apis/compiler/index.mjs +3 -0
- package/es/apis/compiler/index.mjs.map +1 -0
- package/es/apis/compiler/models/index.d.ts +248 -0
- package/es/apis/compiler/models/index.mjs +48 -0
- package/es/apis/compiler/models/index.mjs.map +1 -0
- package/es/apis/compiler/models/mappers.d.ts +23 -0
- package/es/apis/compiler/models/mappers.mjs +585 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -0
- package/es/apis/compiler/models/parameters.d.ts +13 -0
- package/es/apis/compiler/models/parameters.mjs +71 -0
- package/es/apis/compiler/models/parameters.mjs.map +1 -0
- package/es/apis/node/index.d.ts +2 -0
- package/es/apis/node/index.mjs +3 -0
- package/es/apis/node/index.mjs.map +1 -0
- package/es/apis/node/models/index.d.ts +1061 -0
- package/es/apis/node/models/index.mjs +2 -0
- package/es/apis/node/models/index.mjs.map +1 -0
- package/es/apis/node/models/mappers.d.ts +95 -0
- package/es/apis/node/models/mappers.mjs +4164 -0
- package/es/apis/node/models/mappers.mjs.map +1 -0
- package/es/apis/node/models/parameters.d.ts +17 -0
- package/es/apis/node/models/parameters.mjs +165 -0
- package/es/apis/node/models/parameters.mjs.map +1 -0
- package/es/apis/node/node.d.ts +215 -0
- package/es/apis/node/node.mjs +1165 -0
- package/es/apis/node/node.mjs.map +1 -0
- package/es/chain.d.ts +220 -0
- package/es/chain.mjs +524 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/{handlers.js → handlers.mjs} +163 -130
- package/es/channel/handlers.mjs.map +1 -0
- package/es/channel/index.d.ts +634 -0
- package/es/channel/index.mjs +978 -0
- package/es/channel/index.mjs.map +1 -0
- package/es/channel/internal.d.ts +100 -0
- package/es/channel/internal.mjs +328 -0
- package/es/channel/internal.mjs.map +1 -0
- package/es/contract/Compiler.d.ts +17 -0
- package/es/contract/Compiler.mjs +67 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +125 -0
- package/es/contract/aci.mjs +496 -0
- package/es/contract/aci.mjs.map +1 -0
- package/es/contract/ga.d.ts +68 -0
- package/es/contract/ga.mjs +190 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +68 -0
- package/es/contract/methods.mjs +101 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/index.d.ts +32 -0
- package/es/index.mjs +49 -0
- package/es/index.mjs.map +1 -0
- package/es/oracle.d.ts +154 -0
- package/es/oracle.mjs +288 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +61 -0
- package/es/spend.mjs +122 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +41 -0
- package/es/tx/builder/constants.mjs +100 -0
- package/es/tx/builder/constants.mjs.map +1 -0
- package/es/tx/builder/field-types.d.ts +62 -0
- package/es/tx/builder/field-types.mjs +126 -0
- package/es/tx/builder/field-types.mjs.map +1 -0
- package/es/tx/builder/helpers.d.ts +131 -0
- package/es/tx/builder/helpers.mjs +223 -0
- package/es/tx/builder/helpers.mjs.map +1 -0
- package/es/tx/builder/index.d.ts +75 -0
- package/es/tx/builder/index.mjs +424 -0
- package/es/tx/builder/index.mjs.map +1 -0
- package/es/tx/builder/schema.d.ts +350 -0
- package/es/tx/builder/schema.mjs +320 -0
- package/es/tx/builder/schema.mjs.map +1 -0
- package/es/tx/index.d.ts +63 -0
- package/es/tx/index.mjs +209 -0
- package/es/tx/index.mjs.map +1 -0
- package/es/tx/min-fee.d.ts +20 -0
- package/es/tx/min-fee.mjs +148 -0
- package/es/tx/min-fee.mjs.map +1 -0
- package/es/tx/validator.d.ts +19 -0
- package/es/tx/validator.mjs +240 -0
- package/es/tx/validator.mjs.map +1 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
- package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
- package/es/typings/bip32-path/index.d.mjs +2 -0
- package/es/typings/bip32-path/index.d.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs +2 -0
- package/es/typings/blakejs/index.d.mjs.map +1 -0
- package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.d.ts +42 -0
- package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
- package/es/utils/amount-formatter.mjs.map +1 -0
- package/es/utils/autorest.d.ts +6 -0
- package/es/utils/autorest.mjs +97 -0
- package/es/utils/autorest.mjs.map +1 -0
- package/es/utils/bignumber.d.ts +13 -0
- package/es/utils/bignumber.mjs +23 -0
- package/es/utils/bignumber.mjs.map +1 -0
- package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
- package/es/utils/{bytes.js → bytes.mjs} +26 -22
- package/es/utils/bytes.mjs.map +1 -0
- package/es/utils/crypto.d.ts +103 -0
- package/es/utils/crypto.mjs +221 -0
- package/es/utils/crypto.mjs.map +1 -0
- package/es/utils/encoder.d.ts +26 -0
- package/es/utils/encoder.mjs +102 -0
- package/es/utils/encoder.mjs.map +1 -0
- package/es/utils/errors.d.ts +481 -0
- package/es/utils/errors.mjs +882 -0
- package/es/utils/errors.mjs.map +1 -0
- package/es/utils/hd-wallet.d.ts +34 -0
- package/es/utils/hd-wallet.mjs +122 -0
- package/es/utils/hd-wallet.mjs.map +1 -0
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +41 -0
- package/es/utils/json-big.mjs.map +1 -0
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +145 -0
- package/es/utils/keystore.mjs.map +1 -0
- package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
- package/es/utils/{mptree.js → mptree.mjs} +33 -25
- package/es/utils/mptree.mjs.map +1 -0
- package/es/utils/other.d.ts +14 -0
- package/es/utils/other.mjs +28 -0
- package/es/utils/other.mjs.map +1 -0
- package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
- package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
- package/es/utils/semver-satisfies.mjs.map +1 -0
- package/es/utils/string.d.ts +24 -0
- package/es/utils/{string.js → string.mjs} +9 -11
- package/es/utils/string.mjs.map +1 -0
- package/package.json +67 -64
- package/src/AeSdk.ts +65 -0
- package/src/AeSdkAepp.ts +167 -0
- package/src/AeSdkBase.ts +320 -0
- package/src/AeSdkWallet.ts +332 -0
- package/src/Node.ts +167 -0
- package/src/account/Base.ts +114 -0
- package/src/account/Memory.ts +83 -0
- package/src/account/Rpc.ts +67 -0
- package/src/aens.ts +391 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
- package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +181 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
- package/src/apis/compiler/code-model-v4.yaml +2649 -0
- package/src/apis/compiler/compiler.ts +585 -0
- package/src/apis/compiler/index.ts +2 -0
- package/src/apis/compiler/models/index.ts +301 -0
- package/src/apis/compiler/models/mappers.ts +583 -0
- package/src/apis/compiler/models/parameters.ts +93 -0
- package/src/apis/node/code-model-v4.yaml +10046 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1253 -0
- package/src/apis/node/models/mappers.ts +4278 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +444 -0
- package/src/channel/{handlers.js → handlers.ts} +238 -143
- package/src/channel/index.ts +991 -0
- package/src/channel/internal.ts +345 -0
- package/src/contract/Compiler.ts +66 -0
- package/src/contract/aci.ts +529 -0
- package/src/contract/ga.ts +178 -0
- package/src/contract/methods.ts +118 -0
- package/src/index.ts +51 -0
- package/src/oracle.ts +342 -0
- package/src/spend.ts +152 -0
- package/src/tx/builder/constants.ts +96 -0
- package/src/tx/builder/field-types.ts +111 -0
- package/src/tx/builder/helpers.ts +253 -0
- package/src/tx/builder/index.ts +394 -0
- package/src/tx/builder/schema.ts +771 -0
- package/src/tx/index.ts +199 -0
- package/src/tx/min-fee.ts +136 -0
- package/src/tx/validator.ts +226 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +3 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +29 -41
- package/src/utils/autorest.ts +90 -0
- package/src/utils/bignumber.ts +9 -19
- package/src/utils/bytes.ts +15 -16
- package/src/utils/crypto.ts +217 -0
- package/src/utils/encoder.ts +98 -0
- package/src/utils/errors.ts +817 -0
- package/src/utils/hd-wallet.ts +134 -0
- package/src/utils/json-big.ts +26 -0
- package/src/utils/keystore.ts +179 -0
- package/src/utils/mptree.ts +26 -20
- package/src/utils/other.ts +28 -43
- package/src/utils/string.ts +8 -10
- package/CHANGELOG.md +0 -1603
- package/es/account/base.js +0 -169
- package/es/account/base.js.map +0 -1
- package/es/account/memory.js +0 -84
- package/es/account/memory.js.map +0 -1
- package/es/account/multiple.js +0 -178
- package/es/account/multiple.js.map +0 -1
- package/es/ae/aens.js +0 -408
- package/es/ae/aens.js.map +0 -1
- package/es/ae/aepp.js +0 -45
- package/es/ae/aepp.js.map +0 -1
- package/es/ae/contract.js +0 -312
- package/es/ae/contract.js.map +0 -1
- package/es/ae/index.js +0 -206
- package/es/ae/index.js.map +0 -1
- package/es/ae/oracle.js +0 -322
- package/es/ae/oracle.js.map +0 -1
- package/es/ae/universal.js +0 -45
- package/es/ae/universal.js.map +0 -1
- package/es/ae/wallet.js +0 -50
- package/es/ae/wallet.js.map +0 -1
- package/es/amount-formatter.d.ts +0 -58
- package/es/bignumber.d.ts +0 -24
- package/es/chain/index.js +0 -256
- package/es/chain/index.js.map +0 -1
- package/es/chain/node.js +0 -394
- package/es/chain/node.js.map +0 -1
- package/es/channel/handlers.js.map +0 -1
- package/es/channel/index.js +0 -980
- package/es/channel/index.js.map +0 -1
- package/es/channel/internal.js +0 -266
- package/es/channel/internal.js.map +0 -1
- package/es/contract/aci/helpers.js +0 -298
- package/es/contract/aci/helpers.js.map +0 -1
- package/es/contract/aci/index.js +0 -361
- package/es/contract/aci/index.js.map +0 -1
- package/es/contract/aci/transformation.js +0 -66
- package/es/contract/aci/transformation.js.map +0 -1
- package/es/contract/compiler.js +0 -244
- package/es/contract/compiler.js.map +0 -1
- package/es/contract/ga/helpers.js +0 -22
- package/es/contract/ga/helpers.js.map +0 -1
- package/es/contract/ga/index.js +0 -170
- package/es/contract/ga/index.js.map +0 -1
- package/es/contract/index.js +0 -162
- package/es/contract/index.js.map +0 -1
- package/es/crypto-ts.d.ts +0 -9
- package/es/index.js +0 -57
- package/es/index.js.map +0 -1
- package/es/node-pool/index.js +0 -187
- package/es/node-pool/index.js.map +0 -1
- package/es/node.js +0 -132
- package/es/node.js.map +0 -1
- package/es/other.d.ts +0 -31
- package/es/string.d.ts +0 -26
- package/es/tx/builder/helpers.js +0 -305
- package/es/tx/builder/helpers.js.map +0 -1
- package/es/tx/builder/index.js +0 -595
- package/es/tx/builder/index.js.map +0 -1
- package/es/tx/builder/schema.js +0 -814
- package/es/tx/builder/schema.js.map +0 -1
- package/es/tx/index.js +0 -300
- package/es/tx/index.js.map +0 -1
- package/es/tx/tx-object.js +0 -276
- package/es/tx/tx-object.js.map +0 -1
- package/es/tx/tx.js +0 -937
- package/es/tx/tx.js.map +0 -1
- package/es/tx/validator.js +0 -208
- package/es/tx/validator.js.map +0 -1
- package/es/typings/blakejs/index.d.js +0 -2
- package/es/typings/blakejs/index.d.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
- package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.js +0 -103
- package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.js +0 -107
- package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
- package/es/utils/amount-formatter.js.map +0 -1
- package/es/utils/async-init.js +0 -67
- package/es/utils/async-init.js.map +0 -1
- package/es/utils/bignumber.js +0 -28
- package/es/utils/bignumber.js.map +0 -1
- package/es/utils/bytes.js.map +0 -1
- package/es/utils/crypto-ts.js.map +0 -1
- package/es/utils/crypto.js +0 -304
- package/es/utils/crypto.js.map +0 -1
- package/es/utils/hd-wallet.js +0 -112
- package/es/utils/hd-wallet.js.map +0 -1
- package/es/utils/json-big.js +0 -45
- package/es/utils/json-big.js.map +0 -1
- package/es/utils/keystore.js +0 -228
- package/es/utils/keystore.js.map +0 -1
- package/es/utils/mptree.js.map +0 -1
- package/es/utils/other.js +0 -43
- package/es/utils/other.js.map +0 -1
- package/es/utils/semver-satisfies.js.map +0 -1
- package/es/utils/string.js.map +0 -1
- package/es/utils/swagger.js +0 -132
- package/es/utils/swagger.js.map +0 -1
- package/src/account/base.js +0 -153
- package/src/account/memory.js +0 -78
- package/src/account/multiple.js +0 -154
- package/src/ae/aens.js +0 -366
- package/src/ae/aepp.js +0 -45
- package/src/ae/contract.js +0 -285
- package/src/ae/index.js +0 -167
- package/src/ae/oracle.js +0 -296
- package/src/ae/universal.js +0 -47
- package/src/ae/wallet.js +0 -50
- package/src/chain/index.js +0 -250
- package/src/chain/node.js +0 -293
- package/src/channel/index.js +0 -898
- package/src/channel/internal.js +0 -231
- package/src/contract/aci/index.js +0 -317
- package/src/contract/aci/transformation.js +0 -72
- package/src/contract/compiler.js +0 -195
- package/src/contract/ga/helpers.js +0 -17
- package/src/contract/ga/index.js +0 -147
- package/src/contract/index.js +0 -163
- package/src/index.js +0 -90
- package/src/node-pool/index.js +0 -171
- package/src/node.js +0 -118
- package/src/tx/builder/helpers.js +0 -325
- package/src/tx/builder/index.js +0 -460
- package/src/tx/builder/schema.js +0 -1211
- package/src/tx/index.js +0 -301
- package/src/tx/tx-object.js +0 -186
- package/src/tx/tx.js +0 -622
- package/src/tx/validator.js +0 -161
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
- package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
- package/src/utils/aepp-wallet-communication/helpers.js +0 -70
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
- package/src/utils/aepp-wallet-communication/schema.js +0 -108
- package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
- package/src/utils/async-init.js +0 -41
- package/src/utils/crypto.js +0 -312
- package/src/utils/hd-wallet.js +0 -115
- package/src/utils/json-big.js +0 -26
- package/src/utils/keystore.js +0 -223
- package/src/utils/swagger.js +0 -133
package/es/utils/crypto.js
DELETED
|
@@ -1,304 +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
|
-
import bs58check from 'bs58check';
|
|
24
|
-
import nacl from 'tweetnacl';
|
|
25
|
-
import aesjs from 'aes-js';
|
|
26
|
-
import shajs from 'sha.js';
|
|
27
|
-
import { str2buf, toBytes } from './bytes';
|
|
28
|
-
import { decode } from '../tx/builder/helpers';
|
|
29
|
-
import { hash } from './crypto-ts';
|
|
30
|
-
export * from './crypto-ts';
|
|
31
|
-
const Ecb = aesjs.ModeOfOperation.ecb;
|
|
32
|
-
/**
|
|
33
|
-
* Generate address from secret key
|
|
34
|
-
* @rtype (secret: String) => tx: Promise[String]
|
|
35
|
-
* @param {String} secret - Private key
|
|
36
|
-
* @return {String} Public key
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
export function getAddressFromPriv(secret) {
|
|
40
|
-
const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret));
|
|
41
|
-
const publicBuffer = Buffer.from(keys.publicKey);
|
|
42
|
-
return `ak_${encodeBase58Check(publicBuffer)}`;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Check if address is valid
|
|
46
|
-
* @rtype (input: String) => valid: Boolean
|
|
47
|
-
* @param {String} address - Address
|
|
48
|
-
* @param {String} prefix Transaction prefix. Default: 'ak'
|
|
49
|
-
* @return {Boolean} valid
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
export function isAddressValid(address) {
|
|
53
|
-
let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ak';
|
|
54
|
-
if (typeof address !== 'string') return false;
|
|
55
|
-
|
|
56
|
-
try {
|
|
57
|
-
return decode(address, prefix).length === 32;
|
|
58
|
-
} catch (e) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Parse decimal address and return base58Check encoded address with prefix 'ak'
|
|
64
|
-
* @rtype (input: String) => address: String
|
|
65
|
-
* @param {String} decimalAddress - Address
|
|
66
|
-
* @return {String} address
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
export function addressFromDecimal(decimalAddress) {
|
|
70
|
-
return aeEncodeKey(toBytes(decimalAddress, true));
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Calculate SHA256 hash of `input`
|
|
74
|
-
* @rtype (input: String) => hash: String
|
|
75
|
-
* @param {String} input - Data to hash
|
|
76
|
-
* @return {String} Hash
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
export function sha256hash(input) {
|
|
80
|
-
return shajs('sha256').update(input).digest();
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Generate a random salt (positive integer)
|
|
84
|
-
* @rtype () => salt: Number
|
|
85
|
-
* @return {Number} random salt
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
export function salt() {
|
|
89
|
-
return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER));
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Base64check encode given `input`
|
|
93
|
-
* @rtype (input: String|buffer) => Buffer
|
|
94
|
-
* @param {String} input - Data to encode
|
|
95
|
-
* @return {Buffer} Base64check encoded data
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
export function encodeBase64Check(input) {
|
|
99
|
-
const buffer = Buffer.from(input);
|
|
100
|
-
const checksum = checkSumFn(input);
|
|
101
|
-
const payloadWithChecksum = Buffer.concat([buffer, checksum], buffer.length + 4);
|
|
102
|
-
return payloadWithChecksum.toString('base64');
|
|
103
|
-
}
|
|
104
|
-
export function checkSumFn(payload) {
|
|
105
|
-
return sha256hash(sha256hash(payload)).slice(0, 4);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function decodeRaw(buffer) {
|
|
109
|
-
const payload = buffer.slice(0, -4);
|
|
110
|
-
const checksum = buffer.slice(-4);
|
|
111
|
-
const newChecksum = checkSumFn(payload);
|
|
112
|
-
if (!checksum.equals(newChecksum)) return;
|
|
113
|
-
return payload;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Base64check decode given `str`
|
|
117
|
-
* @rtype (str: String) => Buffer
|
|
118
|
-
* @param {String} str - Data to decode
|
|
119
|
-
* @return {Buffer} Base64check decoded data
|
|
120
|
-
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
export function decodeBase64Check(str) {
|
|
124
|
-
const buffer = Buffer.from(str, 'base64');
|
|
125
|
-
const payload = decodeRaw(buffer);
|
|
126
|
-
if (!payload) throw new Error('Invalid checksum');
|
|
127
|
-
return Buffer.from(payload);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Base58 encode given `input`
|
|
131
|
-
* @rtype (input: String) => String
|
|
132
|
-
* @param {String|Buffer} input - Data to encode
|
|
133
|
-
* @return {String} Base58 encoded data
|
|
134
|
-
*/
|
|
135
|
-
|
|
136
|
-
export function encodeBase58Check(input) {
|
|
137
|
-
return bs58check.encode(Buffer.from(input));
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Base58 decode given `str`
|
|
141
|
-
* @rtype (str: String) => Buffer
|
|
142
|
-
* @param {String} str - Data to decode
|
|
143
|
-
* @return {Buffer} Base58 decoded data
|
|
144
|
-
*/
|
|
145
|
-
|
|
146
|
-
export function decodeBase58Check(str) {
|
|
147
|
-
return bs58check.decode(str);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Converts a positive integer to the smallest possible
|
|
151
|
-
* representation in a binary digit representation
|
|
152
|
-
* @rtype (value: Number) => Buffer
|
|
153
|
-
* @param {Number} value - Value to encode
|
|
154
|
-
* @return {Buffer} - Encoded data
|
|
155
|
-
*/
|
|
156
|
-
|
|
157
|
-
export function encodeUnsigned(value) {
|
|
158
|
-
const binary = Buffer.allocUnsafe(4);
|
|
159
|
-
binary.writeUInt32BE(value);
|
|
160
|
-
return binary.slice(binary.findIndex(i => i !== 0));
|
|
161
|
-
} // Todo Duplicated in tx builder. remove
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Compute contract address
|
|
165
|
-
* @rtype (owner: String, nonce: Number) => String
|
|
166
|
-
* @param {String} owner - Address of contract owner
|
|
167
|
-
* @param {Number} nonce - Round when contract was created
|
|
168
|
-
* @return {String} - Contract address
|
|
169
|
-
*/
|
|
170
|
-
|
|
171
|
-
export function encodeContractAddress(owner, nonce) {
|
|
172
|
-
const publicKey = decode(owner, 'ak');
|
|
173
|
-
const binary = Buffer.concat([publicKey, encodeUnsigned(nonce)]);
|
|
174
|
-
return `ct_${encodeBase58Check(hash(binary))}`;
|
|
175
|
-
} // KEY-PAIR HELPERS
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Generate keyPair from secret key
|
|
179
|
-
* @rtype (secret: Uint8Array) => KeyPair
|
|
180
|
-
* @param {Uint8Array} secret - secret key
|
|
181
|
-
* @return {Object} - Object with Private(privateKey) and Public(publicKey) keys
|
|
182
|
-
*/
|
|
183
|
-
|
|
184
|
-
export function generateKeyPairFromSecret(secret) {
|
|
185
|
-
return nacl.sign.keyPair.fromSecretKey(secret);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Generate a random ED25519 keypair
|
|
189
|
-
* @rtype (raw: Boolean) => {publicKey: String | Buffer, secretKey: String | Buffer}
|
|
190
|
-
* @param {Boolean} raw - Whether to return raw (binary) keys
|
|
191
|
-
* @return {Object} Key pair
|
|
192
|
-
*/
|
|
193
|
-
|
|
194
|
-
export function generateKeyPair() {
|
|
195
|
-
let raw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
196
|
-
// <node>/apps/aens/test/aens_test_utils.erl
|
|
197
|
-
const keyPair = nacl.sign.keyPair();
|
|
198
|
-
const publicBuffer = Buffer.from(keyPair.publicKey);
|
|
199
|
-
const secretBuffer = Buffer.from(keyPair.secretKey);
|
|
200
|
-
|
|
201
|
-
if (raw) {
|
|
202
|
-
return {
|
|
203
|
-
publicKey: publicBuffer,
|
|
204
|
-
secretKey: secretBuffer
|
|
205
|
-
};
|
|
206
|
-
} else {
|
|
207
|
-
return {
|
|
208
|
-
publicKey: `ak_${encodeBase58Check(publicBuffer)}`,
|
|
209
|
-
secretKey: secretBuffer.toString('hex')
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Encrypt given data using `password`
|
|
215
|
-
* @rtype (password: String, binaryData: Buffer) => Uint8Array
|
|
216
|
-
* @param {String} password - Password to encrypt with
|
|
217
|
-
* @param {Buffer} binaryData - Data to encrypt
|
|
218
|
-
* @return {Uint8Array} Encrypted data
|
|
219
|
-
*/
|
|
220
|
-
|
|
221
|
-
export function encryptKey(password, binaryData) {
|
|
222
|
-
const hashedPasswordBytes = sha256hash(password);
|
|
223
|
-
const aesEcb = new Ecb(hashedPasswordBytes);
|
|
224
|
-
return aesEcb.encrypt(binaryData);
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Decrypt given data using `password`
|
|
228
|
-
* @rtype (password: String, encrypted: String) => Uint8Array
|
|
229
|
-
* @param {String} password - Password to decrypt with
|
|
230
|
-
* @param {String} encrypted - Data to decrypt
|
|
231
|
-
* @return {Buffer} Decrypted data
|
|
232
|
-
*/
|
|
233
|
-
|
|
234
|
-
export function decryptKey(password, encrypted) {
|
|
235
|
-
const encryptedBytes = Buffer.from(encrypted);
|
|
236
|
-
const hashedPasswordBytes = sha256hash(password);
|
|
237
|
-
const aesEcb = new Ecb(hashedPasswordBytes);
|
|
238
|
-
return Buffer.from(aesEcb.decrypt(encryptedBytes));
|
|
239
|
-
} // SIGNATURES
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Generate signature
|
|
243
|
-
* @rtype (data: String|Buffer, privateKey: Buffer) => Buffer
|
|
244
|
-
* @param {String|Buffer} data - Data to sign
|
|
245
|
-
* @param {String|Buffer} privateKey - Key to sign with
|
|
246
|
-
* @return {Buffer|Uint8Array} Signature
|
|
247
|
-
*/
|
|
248
|
-
|
|
249
|
-
export function sign(data, privateKey) {
|
|
250
|
-
return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey));
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Verify that signature was signed by public key
|
|
254
|
-
* @rtype (str: String, signature: Buffer, publicKey: Buffer) => Boolean
|
|
255
|
-
* @param {String|Buffer} str - Data to verify
|
|
256
|
-
* @param {Buffer} signature - Signature to verify
|
|
257
|
-
* @param {Buffer} publicKey - Key to verify against
|
|
258
|
-
* @return {Boolean} Valid?
|
|
259
|
-
*/
|
|
260
|
-
|
|
261
|
-
export function verify(str, signature, publicKey) {
|
|
262
|
-
return nacl.sign.detached.verify(new Uint8Array(str), signature, publicKey);
|
|
263
|
-
}
|
|
264
|
-
export function messageToHash(message) {
|
|
265
|
-
const p = Buffer.from('aeternity Signed Message:\n', 'utf8');
|
|
266
|
-
const msg = Buffer.from(message, 'utf8');
|
|
267
|
-
if (msg.length >= 0xFD) throw new Error('message too long');
|
|
268
|
-
return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]));
|
|
269
|
-
}
|
|
270
|
-
export function signMessage(message, privateKey) {
|
|
271
|
-
return sign(messageToHash(message), privateKey);
|
|
272
|
-
}
|
|
273
|
-
export function verifyMessage(str, signature, publicKey) {
|
|
274
|
-
return verify(messageToHash(str), signature, publicKey);
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* æternity readable public keys are the base58-encoded public key, prepended
|
|
278
|
-
* with 'ak_'
|
|
279
|
-
* @rtype (binaryKey: Buffer) => String
|
|
280
|
-
* @param {Buffer} binaryKey - Key to encode
|
|
281
|
-
* @return {String} Encoded key
|
|
282
|
-
*/
|
|
283
|
-
|
|
284
|
-
export function aeEncodeKey(binaryKey) {
|
|
285
|
-
const publicKeyBuffer = Buffer.from(binaryKey, 'hex');
|
|
286
|
-
const pubKeyAddress = encodeBase58Check(publicKeyBuffer);
|
|
287
|
-
return `ak_${pubKeyAddress}`;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Check key pair for validity
|
|
291
|
-
*
|
|
292
|
-
* Sign a message, and then verifying that signature
|
|
293
|
-
* @rtype (privateKey: Buffer, publicKey: Buffer) => Boolean
|
|
294
|
-
* @param {Buffer} privateKey - Private key to verify
|
|
295
|
-
* @param {Buffer} publicKey - Public key to verify
|
|
296
|
-
* @return {Boolean} Valid?
|
|
297
|
-
*/
|
|
298
|
-
|
|
299
|
-
export function isValidKeypair(privateKey, publicKey) {
|
|
300
|
-
const message = Buffer.from('TheMessage');
|
|
301
|
-
const signature = sign(message, privateKey);
|
|
302
|
-
return verify(message, signature, publicKey);
|
|
303
|
-
}
|
|
304
|
-
//# sourceMappingURL=crypto.js.map
|
package/es/utils/crypto.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/crypto.js"],"names":["bs58check","nacl","aesjs","shajs","str2buf","toBytes","decode","hash","Ecb","ModeOfOperation","ecb","getAddressFromPriv","secret","keys","sign","keyPair","fromSecretKey","publicBuffer","Buffer","from","publicKey","encodeBase58Check","isAddressValid","address","prefix","length","e","addressFromDecimal","decimalAddress","aeEncodeKey","sha256hash","input","update","digest","salt","Math","floor","random","Number","MAX_SAFE_INTEGER","encodeBase64Check","buffer","checksum","checkSumFn","payloadWithChecksum","concat","toString","payload","slice","decodeRaw","newChecksum","equals","decodeBase64Check","str","Error","encode","decodeBase58Check","encodeUnsigned","value","binary","allocUnsafe","writeUInt32BE","findIndex","i","encodeContractAddress","owner","nonce","generateKeyPairFromSecret","generateKeyPair","raw","secretBuffer","secretKey","encryptKey","password","binaryData","hashedPasswordBytes","aesEcb","encrypt","decryptKey","encrypted","encryptedBytes","decrypt","data","privateKey","detached","verify","signature","Uint8Array","messageToHash","message","p","msg","signMessage","verifyMessage","binaryKey","publicKeyBuffer","pubKeyAddress","isValidKeypair"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Crypto module\n * @module @aeternity/aepp-sdk/es/utils/crypto\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\nimport bs58check from 'bs58check'\nimport nacl from 'tweetnacl'\nimport aesjs from 'aes-js'\nimport shajs from 'sha.js'\n\nimport { str2buf, toBytes } from './bytes'\nimport { decode } from '../tx/builder/helpers'\nimport { hash } from './crypto-ts'\n\nexport * from './crypto-ts'\n\nconst Ecb = aesjs.ModeOfOperation.ecb\n\n/**\n * Generate address from secret key\n * @rtype (secret: String) => tx: Promise[String]\n * @param {String} secret - Private key\n * @return {String} Public key\n */\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return `ak_${encodeBase58Check(publicBuffer)}`\n}\n\n/**\n * Check if address is valid\n * @rtype (input: String) => valid: Boolean\n * @param {String} address - Address\n * @param {String} prefix Transaction prefix. Default: 'ak'\n * @return {Boolean} valid\n */\nexport function isAddressValid (address, prefix = 'ak') {\n if (typeof address !== 'string') return false\n try {\n return decode(address, prefix).length === 32\n } catch (e) {\n return false\n }\n}\n\n/**\n * Parse decimal address and return base58Check encoded address with prefix 'ak'\n * @rtype (input: String) => address: String\n * @param {String} decimalAddress - Address\n * @return {String} address\n */\nexport function addressFromDecimal (decimalAddress) {\n return aeEncodeKey(toBytes(decimalAddress, true))\n}\n\n/**\n * Calculate SHA256 hash of `input`\n * @rtype (input: String) => hash: String\n * @param {String} input - Data to hash\n * @return {String} Hash\n */\nexport function sha256hash (input) {\n return shajs('sha256').update(input).digest()\n}\n\n/**\n * Generate a random salt (positive integer)\n * @rtype () => salt: Number\n * @return {Number} random salt\n */\nexport function salt () {\n return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER))\n}\n\n/**\n * Base64check encode given `input`\n * @rtype (input: String|buffer) => Buffer\n * @param {String} input - Data to encode\n * @return {Buffer} Base64check encoded data\n */\nexport function encodeBase64Check (input) {\n const buffer = Buffer.from(input)\n const checksum = checkSumFn(input)\n const payloadWithChecksum = Buffer.concat([buffer, checksum], buffer.length + 4)\n return payloadWithChecksum.toString('base64')\n}\n\nexport function checkSumFn (payload) {\n return sha256hash(sha256hash(payload)).slice(0, 4)\n}\n\nfunction decodeRaw (buffer) {\n const payload = buffer.slice(0, -4)\n const checksum = buffer.slice(-4)\n const newChecksum = checkSumFn(payload)\n\n if (!checksum.equals(newChecksum)) return\n\n return payload\n}\n\n/**\n * Base64check decode given `str`\n * @rtype (str: String) => Buffer\n * @param {String} str - Data to decode\n * @return {Buffer} Base64check decoded data\n */\nexport function decodeBase64Check (str) {\n const buffer = Buffer.from(str, 'base64')\n const payload = decodeRaw(buffer)\n if (!payload) throw new Error('Invalid checksum')\n return Buffer.from(payload)\n}\n\n/**\n * Base58 encode given `input`\n * @rtype (input: String) => String\n * @param {String|Buffer} input - Data to encode\n * @return {String} Base58 encoded data\n */\nexport function encodeBase58Check (input) {\n return bs58check.encode(Buffer.from(input))\n}\n\n/**\n * Base58 decode given `str`\n * @rtype (str: String) => Buffer\n * @param {String} str - Data to decode\n * @return {Buffer} Base58 decoded data\n */\nexport function decodeBase58Check (str) {\n return bs58check.decode(str)\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @rtype (value: Number) => Buffer\n * @param {Number} value - Value to encode\n * @return {Buffer} - Encoded data\n */\nexport function encodeUnsigned (value) {\n const binary = Buffer.allocUnsafe(4)\n binary.writeUInt32BE(value)\n return binary.slice(binary.findIndex(i => i !== 0))\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @rtype (owner: String, nonce: Number) => String\n * @param {String} owner - Address of contract owner\n * @param {Number} nonce - Round when contract was created\n * @return {String} - Contract address\n */\nexport function encodeContractAddress (owner, nonce) {\n const publicKey = decode(owner, 'ak')\n const binary = Buffer.concat([publicKey, encodeUnsigned(nonce)])\n return `ct_${encodeBase58Check(hash(binary))}`\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @rtype (secret: Uint8Array) => KeyPair\n * @param {Uint8Array} secret - secret key\n * @return {Object} - Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret (secret) {\n return nacl.sign.keyPair.fromSecretKey(secret)\n}\n\n/**\n * Generate a random ED25519 keypair\n * @rtype (raw: Boolean) => {publicKey: String | Buffer, secretKey: String | Buffer}\n * @param {Boolean} raw - Whether to return raw (binary) keys\n * @return {Object} Key pair\n */\nexport function generateKeyPair (raw = false) {\n // <node>/apps/aens/test/aens_test_utils.erl\n const keyPair = nacl.sign.keyPair()\n\n const publicBuffer = Buffer.from(keyPair.publicKey)\n const secretBuffer = Buffer.from(keyPair.secretKey)\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer\n }\n } else {\n return {\n publicKey: `ak_${encodeBase58Check(publicBuffer)}`,\n secretKey: secretBuffer.toString('hex')\n }\n }\n}\n\n/**\n * Encrypt given data using `password`\n * @rtype (password: String, binaryData: Buffer) => Uint8Array\n * @param {String} password - Password to encrypt with\n * @param {Buffer} binaryData - Data to encrypt\n * @return {Uint8Array} Encrypted data\n */\nexport function encryptKey (password, binaryData) {\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return aesEcb.encrypt(binaryData)\n}\n\n/**\n * Decrypt given data using `password`\n * @rtype (password: String, encrypted: String) => Uint8Array\n * @param {String} password - Password to decrypt with\n * @param {String} encrypted - Data to decrypt\n * @return {Buffer} Decrypted data\n */\nexport function decryptKey (password, encrypted) {\n const encryptedBytes = Buffer.from(encrypted)\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return Buffer.from(aesEcb.decrypt(encryptedBytes))\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @rtype (data: String|Buffer, privateKey: Buffer) => Buffer\n * @param {String|Buffer} data - Data to sign\n * @param {String|Buffer} privateKey - Key to sign with\n * @return {Buffer|Uint8Array} Signature\n */\nexport function sign (data, privateKey) {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey))\n}\n\n/**\n * Verify that signature was signed by public key\n * @rtype (str: String, signature: Buffer, publicKey: Buffer) => Boolean\n * @param {String|Buffer} str - Data to verify\n * @param {Buffer} signature - Signature to verify\n * @param {Buffer} publicKey - Key to verify against\n * @return {Boolean} Valid?\n */\nexport function verify (str, signature, publicKey) {\n return nacl.sign.detached.verify(new Uint8Array(str), signature, publicKey)\n}\n\nexport function messageToHash (message) {\n const p = Buffer.from('aeternity Signed Message:\\n', 'utf8')\n const msg = Buffer.from(message, 'utf8')\n if (msg.length >= 0xFD) throw new Error('message too long')\n return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]))\n}\n\nexport function signMessage (message, privateKey) {\n return sign(messageToHash(message), privateKey)\n}\n\nexport function verifyMessage (str, signature, publicKey) {\n return verify(messageToHash(str), signature, publicKey)\n}\n\n/**\n * æternity readable public keys are the base58-encoded public key, prepended\n * with 'ak_'\n * @rtype (binaryKey: Buffer) => String\n * @param {Buffer} binaryKey - Key to encode\n * @return {String} Encoded key\n */\nexport function aeEncodeKey (binaryKey) {\n const publicKeyBuffer = Buffer.from(binaryKey, 'hex')\n const pubKeyAddress = encodeBase58Check(publicKeyBuffer)\n return `ak_${pubKeyAddress}`\n}\n\n/**\n * Check key pair for validity\n *\n * Sign a message, and then verifying that signature\n * @rtype (privateKey: Buffer, publicKey: Buffer) => Boolean\n * @param {Buffer} privateKey - Private key to verify\n * @param {Buffer} publicKey - Public key to verify\n * @return {Boolean} Valid?\n */\nexport function isValidKeypair (privateKey, publicKey) {\n const message = Buffer.from('TheMessage')\n const signature = sign(message, privateKey)\n return verify(message, signature, publicKey)\n}\n"],"file":"crypto.js"}
|
package/es/utils/hd-wallet.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import nacl from 'tweetnacl';
|
|
2
|
-
import { full as hmac } from 'tweetnacl-auth';
|
|
3
|
-
import { fromString } from 'bip32-path';
|
|
4
|
-
import { validateMnemonic, mnemonicToSeed, generateMnemonic as genMnemonic } from '@aeternity/bip39';
|
|
5
|
-
import { decryptKey, encodeBase58Check, encryptKey } from './crypto';
|
|
6
|
-
const ED25519_CURVE = Buffer.from('ed25519 seed');
|
|
7
|
-
const HARDENED_OFFSET = 0x80000000;
|
|
8
|
-
|
|
9
|
-
const toHex = buffer => Buffer.from(buffer).toString('hex');
|
|
10
|
-
|
|
11
|
-
export function derivePathFromKey(path, key) {
|
|
12
|
-
const segments = path === '' ? [] : fromString(path).toPathArray();
|
|
13
|
-
segments.forEach((segment, i) => {
|
|
14
|
-
if (segment < HARDENED_OFFSET) {
|
|
15
|
-
throw new Error(`Segment #${i + 1} is not hardened`);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key);
|
|
19
|
-
}
|
|
20
|
-
export function derivePathFromSeed(path, seed) {
|
|
21
|
-
if (!['m', 'm/'].includes(path.slice(0, 2))) {
|
|
22
|
-
throw new Error('Invalid path');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const masterKey = getMasterKeyFromSeed(seed);
|
|
26
|
-
return derivePathFromKey(path.slice(2), masterKey);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function formatAccount(keys) {
|
|
30
|
-
const {
|
|
31
|
-
secretKey,
|
|
32
|
-
publicKey
|
|
33
|
-
} = keys;
|
|
34
|
-
return {
|
|
35
|
-
secretKey: toHex(secretKey),
|
|
36
|
-
publicKey: `ak_${encodeBase58Check(publicKey)}`
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function getKeyPair(secretKey) {
|
|
41
|
-
return nacl.sign.keyPair.fromSeed(secretKey);
|
|
42
|
-
}
|
|
43
|
-
export function generateMnemonic() {
|
|
44
|
-
return genMnemonic();
|
|
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
|
-
export function deriveChild(_ref, index) {
|
|
56
|
-
let {
|
|
57
|
-
secretKey,
|
|
58
|
-
chainCode
|
|
59
|
-
} = _ref;
|
|
60
|
-
|
|
61
|
-
if (index < HARDENED_OFFSET) {
|
|
62
|
-
throw new Error(`Child index #${index} is not supported`);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const indexBuffer = Buffer.allocUnsafe(4);
|
|
66
|
-
indexBuffer.writeUInt32BE(index, 0);
|
|
67
|
-
const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(secretKey), Buffer.from(indexBuffer)]);
|
|
68
|
-
const I = hmac(data, chainCode);
|
|
69
|
-
const IL = I.slice(0, 32);
|
|
70
|
-
const IR = I.slice(32);
|
|
71
|
-
return {
|
|
72
|
-
secretKey: IL,
|
|
73
|
-
chainCode: IR
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
export function generateSaveHDWallet(mnemonic, password) {
|
|
77
|
-
if (!validateMnemonic(mnemonic)) {
|
|
78
|
-
throw new Error('Invalid mnemonic');
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const seed = mnemonicToSeed(mnemonic);
|
|
82
|
-
const walletKey = derivePathFromSeed('m/44h/457h', seed);
|
|
83
|
-
return {
|
|
84
|
-
secretKey: toHex(encryptKey(password, walletKey.secretKey)),
|
|
85
|
-
chainCode: toHex(encryptKey(password, walletKey.chainCode))
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
export function getSaveHDWalletAccounts(saveHDWallet, password, accountCount) {
|
|
89
|
-
const walletKey = {
|
|
90
|
-
secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),
|
|
91
|
-
chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex'))
|
|
92
|
-
};
|
|
93
|
-
return new Array(accountCount).fill().map((_, idx) => formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)));
|
|
94
|
-
}
|
|
95
|
-
export const getHdWalletAccountFromMnemonic = (mnemonic, accountIdx) => {
|
|
96
|
-
const seed = mnemonicToSeed(mnemonic);
|
|
97
|
-
const walletKey = derivePathFromSeed('m/44h/457h', seed);
|
|
98
|
-
const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey);
|
|
99
|
-
const keyPair = getKeyPair(derived.secretKey);
|
|
100
|
-
return { ...formatAccount(keyPair),
|
|
101
|
-
idx: accountIdx
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
export default {
|
|
105
|
-
getHdWalletAccountFromMnemonic,
|
|
106
|
-
getSaveHDWalletAccounts,
|
|
107
|
-
generateSaveHDWallet,
|
|
108
|
-
generateMnemonic,
|
|
109
|
-
deriveChild,
|
|
110
|
-
getMasterKeyFromSeed
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=hd-wallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/hd-wallet.js"],"names":["nacl","full","hmac","fromString","validateMnemonic","mnemonicToSeed","generateMnemonic","genMnemonic","decryptKey","encodeBase58Check","encryptKey","ED25519_CURVE","Buffer","from","HARDENED_OFFSET","toHex","buffer","toString","derivePathFromKey","path","key","segments","toPathArray","forEach","segment","i","Error","reduce","parentKey","deriveChild","derivePathFromSeed","seed","includes","slice","masterKey","getMasterKeyFromSeed","formatAccount","keys","secretKey","publicKey","getKeyPair","sign","keyPair","fromSeed","I","IL","IR","chainCode","index","indexBuffer","allocUnsafe","writeUInt32BE","data","concat","alloc","generateSaveHDWallet","mnemonic","password","walletKey","getSaveHDWalletAccounts","saveHDWallet","accountCount","Array","fill","map","_","idx","getHdWalletAccountFromMnemonic","accountIdx","derived"],"mappings":"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","sourcesContent":["import nacl from 'tweetnacl'\nimport { full as hmac } from 'tweetnacl-auth'\nimport { fromString } from 'bip32-path'\nimport { validateMnemonic, mnemonicToSeed, generateMnemonic as genMnemonic } from '@aeternity/bip39'\nimport { decryptKey, encodeBase58Check, encryptKey } from './crypto'\n\nconst ED25519_CURVE = Buffer.from('ed25519 seed')\nconst HARDENED_OFFSET = 0x80000000\n\nconst toHex = (buffer) => Buffer.from(buffer).toString('hex')\n\nexport function derivePathFromKey (path, key) {\n const segments = path === '' ? [] : fromString(path).toPathArray()\n segments.forEach((segment, i) => {\n if (segment < HARDENED_OFFSET) {\n throw new Error(`Segment #${i + 1} is not hardened`)\n }\n })\n\n return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key)\n}\n\nexport function derivePathFromSeed (path, seed) {\n if (!['m', 'm/'].includes(path.slice(0, 2))) {\n throw new Error('Invalid path')\n }\n const masterKey = getMasterKeyFromSeed(seed)\n return derivePathFromKey(path.slice(2), masterKey)\n}\n\nfunction formatAccount (keys) {\n const { secretKey, publicKey } = keys\n return {\n secretKey: toHex(secretKey),\n publicKey: `ak_${encodeBase58Check(publicKey)}`\n }\n}\n\nexport function getKeyPair (secretKey) {\n return nacl.sign.keyPair.fromSeed(secretKey)\n}\n\nexport function generateMnemonic () {\n return genMnemonic()\n}\n\nexport function getMasterKeyFromSeed (seed) {\n const I = hmac(seed, ED25519_CURVE)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function deriveChild ({ secretKey, chainCode }, index) {\n if (index < HARDENED_OFFSET) {\n throw new Error(`Child index #${index} is not supported`)\n }\n const indexBuffer = Buffer.allocUnsafe(4)\n indexBuffer.writeUInt32BE(index, 0)\n\n const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(secretKey), Buffer.from(indexBuffer)])\n\n const I = hmac(data, chainCode)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function generateSaveHDWallet (mnemonic, password) {\n if (!validateMnemonic(mnemonic)) {\n throw new Error('Invalid mnemonic')\n }\n const seed = mnemonicToSeed(mnemonic)\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n return {\n secretKey: toHex(encryptKey(password, walletKey.secretKey)),\n chainCode: toHex(encryptKey(password, walletKey.chainCode))\n }\n}\n\nexport function getSaveHDWalletAccounts (saveHDWallet, password, accountCount) {\n const walletKey = {\n secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),\n chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex'))\n }\n return (new Array(accountCount)).fill()\n .map((_, idx) =>\n formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)))\n}\n\nexport const getHdWalletAccountFromMnemonic = (mnemonic, accountIdx) => {\n const seed = mnemonicToSeed(mnemonic)\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey)\n const keyPair = getKeyPair(derived.secretKey)\n return {\n ...formatAccount(keyPair),\n idx: accountIdx\n }\n}\n\nexport default {\n getHdWalletAccountFromMnemonic,\n getSaveHDWalletAccounts,\n generateSaveHDWallet,\n generateMnemonic,\n deriveChild,\n getMasterKeyFromSeed\n}\n"],"file":"hd-wallet.js"}
|
package/es/utils/json-big.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import JsonBig from '@aeternity/json-bigint';
|
|
2
|
-
import BigNumber from 'bignumber.js';
|
|
3
|
-
const jsonBig = JsonBig({
|
|
4
|
-
storeAsString: true
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
const convertValuesToBigNumbers = value => {
|
|
8
|
-
if (typeof value === 'object' && value !== null && value.constructor === Object) {
|
|
9
|
-
return Object.entries(value).map(_ref => {
|
|
10
|
-
let [key, value] = _ref;
|
|
11
|
-
return [key, convertValuesToBigNumbers(value)];
|
|
12
|
-
}).reduce((p, _ref2) => {
|
|
13
|
-
let [k, v] = _ref2;
|
|
14
|
-
return { ...p,
|
|
15
|
-
[k]: v
|
|
16
|
-
};
|
|
17
|
-
}, {});
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (Array.isArray(value)) {
|
|
21
|
-
return value.map(item => convertValuesToBigNumbers(item));
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (typeof value === 'string' && BigNumber(value).toString(10) === value) {
|
|
25
|
-
const bn = BigNumber(value);
|
|
26
|
-
|
|
27
|
-
bn.toJSON = () => bn.toString(10);
|
|
28
|
-
|
|
29
|
-
return bn;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return value;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export default {
|
|
36
|
-
stringify: function (object) {
|
|
37
|
-
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
38
|
-
args[_key - 1] = arguments[_key];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return jsonBig.stringify(convertValuesToBigNumbers(object), ...args);
|
|
42
|
-
},
|
|
43
|
-
parse: jsonBig.parse
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=json-big.js.map
|
package/es/utils/json-big.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/json-big.js"],"names":["JsonBig","BigNumber","jsonBig","storeAsString","convertValuesToBigNumbers","value","constructor","Object","entries","map","key","reduce","p","k","v","Array","isArray","item","toString","bn","toJSON","stringify","object","args","parse"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,wBAApB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AAEA,MAAMC,OAAO,GAAGF,OAAO,CAAC;AAAEG,EAAAA,aAAa,EAAE;AAAjB,CAAD,CAAvB;;AAEA,MAAMC,yBAAyB,GAAGC,KAAK,IAAI;AACzC,MAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+CA,KAAK,CAACC,WAAN,KAAsBC,MAAzE,EAAiF;AAC/E,WAAOA,MAAM,CAACC,OAAP,CAAeH,KAAf,EACJI,GADI,CACA;AAAA,UAAC,CAACC,GAAD,EAAML,KAAN,CAAD;AAAA,aAAkB,CAACK,GAAD,EAAMN,yBAAyB,CAACC,KAAD,CAA/B,CAAlB;AAAA,KADA,EAEJM,MAFI,CAEG,CAACC,CAAD;AAAA,UAAI,CAACC,CAAD,EAAIC,CAAJ,CAAJ;AAAA,aAAgB,EAAE,GAAGF,CAAL;AAAQ,SAACC,CAAD,GAAKC;AAAb,OAAhB;AAAA,KAFH,EAEsC,EAFtC,CAAP;AAGD;;AACD,MAAIC,KAAK,CAACC,OAAN,CAAcX,KAAd,CAAJ,EAA0B;AACxB,WAAOA,KAAK,CAACI,GAAN,CAAUQ,IAAI,IAAIb,yBAAyB,CAACa,IAAD,CAA3C,CAAP;AACD;;AACD,MAAI,OAAOZ,KAAP,KAAiB,QAAjB,IAA6BJ,SAAS,CAACI,KAAD,CAAT,CAAiBa,QAAjB,CAA0B,EAA1B,MAAkCb,KAAnE,EAA0E;AACxE,UAAMc,EAAE,GAAGlB,SAAS,CAACI,KAAD,CAApB;;AACAc,IAAAA,EAAE,CAACC,MAAH,GAAY,MAAMD,EAAE,CAACD,QAAH,CAAY,EAAZ,CAAlB;;AACA,WAAOC,EAAP;AACD;;AACD,SAAOd,KAAP;AACD,CAfD;;AAiBA,eAAe;AACbgB,EAAAA,SAAS,EAAE,UAACC,MAAD;AAAA,sCAAYC,IAAZ;AAAYA,MAAAA,IAAZ;AAAA;;AAAA,WAAqBrB,OAAO,CAACmB,SAAR,CAAkBjB,yBAAyB,CAACkB,MAAD,CAA3C,EAAqD,GAAGC,IAAxD,CAArB;AAAA,GADE;AAEbC,EAAAA,KAAK,EAAEtB,OAAO,CAACsB;AAFF,CAAf","sourcesContent":["import JsonBig from '@aeternity/json-bigint'\nimport BigNumber from 'bignumber.js'\n\nconst jsonBig = JsonBig({ storeAsString: true })\n\nconst convertValuesToBigNumbers = value => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return Object.entries(value)\n .map(([key, value]) => [key, convertValuesToBigNumbers(value)])\n .reduce((p, [k, v]) => ({ ...p, [k]: v }), {})\n }\n if (Array.isArray(value)) {\n return value.map(item => convertValuesToBigNumbers(item))\n }\n if (typeof value === 'string' && BigNumber(value).toString(10) === value) {\n const bn = BigNumber(value)\n bn.toJSON = () => bn.toString(10)\n return bn\n }\n return value\n}\n\nexport default {\n stringify: (object, ...args) => jsonBig.stringify(convertValuesToBigNumbers(object), ...args),\n parse: jsonBig.parse\n}\n"],"file":"json-big.js"}
|