Compare commits

...
942 Commits
Author SHA1 Message Date
Github Actions 4a5659a579 [CI Skip] release/stable 7.2.1
skip-checks: true
2021-08-15 08:46:10 +00:00
Jaco c4a8aa2dd7 7.2.1 (#1085)
* 7.2.1

* Update CHANGELOG.md

* u8aEmpty
2021-08-15 10:38:48 +02:00
Github Actions 2ad042e44d [CI Skip] release/beta 7.1.3-4
skip-checks: true
2021-08-13 11:56:50 +00:00
Jaco Greeff 4615fcfbde bump berry 2021-08-13 14:48:47 +03:00
Github Actions f90d84500d [CI Skip] release/beta 7.1.3-3
skip-checks: true
2021-08-13 11:02:19 +00:00
Jaco e919446341 Bump dev (#1084)
* Bump dev

* Cleanup circular dep

* CHANGELOG

* typo
2021-08-13 12:54:03 +02:00
Github Actions 8f942dcabe [CI Skip] release/beta 7.1.3-2
skip-checks: true
2021-08-12 08:09:40 +00:00
Nantian 2e4de2093c fix bigint type (#1079) 2021-08-12 10:00:58 +02:00
Github Actions 0202a1f1d4 [CI Skip] release/beta 7.1.3-1
skip-checks: true
2021-08-12 05:24:15 +00:00
Jaco Greeff 1e256fedaa pre 2021-08-12 08:16:52 +03:00
Github Actions 56a3d19083 [CI Skip] release/stable 7.1.2
skip-checks: true
2021-08-11 15:21:50 +00:00
Jaco caf76a7511 Ensure packageInfo from networks doesn't clobber crypto (#1076)
* Ensure packageInfo from networks doesn't clobber crypto

* 7.1.2

* Update CHANGELOG.md

* Extract network sorting

* ... revert, CC still not happy, maybe another day...
2021-08-11 17:14:28 +02:00
Github Actions 834a1e6a52 [CI Skip] release/beta 7.1.2-0
skip-checks: true
2021-08-10 09:23:32 +00:00
Jaco 7a5b1207b0 Minor x-bundle style cleanups (#1074) 2021-08-10 11:15:10 +02:00
Github Actions 8221576d25 [CI Skip] release/stable 7.1.1
skip-checks: true
2021-08-02 08:41:20 +00:00
Jaco 1f9d36d4db 7.1.1 (#1073) 2021-08-02 10:32:37 +02:00
Github Actions b292f2ae1d [CI Skip] release/beta 7.0.4-0
skip-checks: true
2021-08-02 04:26:52 +00:00
Song ZhouandJaco 7eddfc25c9 Add in ability to encrypt/decrypt msg with keyring (#1070)
* feat: able to encrypt & decrypt message in keyring - ed25519 & sr25519 types

* chore: make eslint happy

* test: add in one more test on cross-usage of ed25519 & sr25519

* make lint happy without eslint-disable

* assert away secp256k1 for encrypt/decrypt

* Update packages/keyring/src/pair/index.ts

* Update packages/keyring/src/pair/index.ts

Co-authored-by: Jaco <jacogr@gmail.com>
2021-08-02 06:18:58 +02:00
Github Actions c6ff77b56f [CI Skip] release/stable 7.0.3
skip-checks: true
2021-07-26 05:42:45 +00:00
Jaco 4a1f5bfbf4 7.0.3 (#1069) 2021-07-26 07:34:06 +02:00
Github Actions e8f0072e44 [CI Skip] release/beta 7.0.3-0
skip-checks: true
2021-07-23 05:26:30 +00:00
Jaco 4620a6a649 ss58 sync (#1066) 2021-07-23 07:19:24 +02:00
Github Actions a5fd5e2c85 [CI Skip] release/stable 7.0.2
skip-checks: true
2021-07-19 12:35:04 +00:00
Jaco b58c77d774 7.0.2 (#1063) 2021-07-19 14:28:14 +02:00
Github Actions 5e8ec185cb [CI Skip] release/beta 7.0.2-0
skip-checks: true
2021-07-17 06:57:49 +00:00
Jaco bbdf5659df Add isCompact (#1061) 2021-07-17 08:49:30 +02:00
Github Actions f8cc8d07e1 [CI Skip] release/stable 7.0.1
skip-checks: true
2021-07-11 10:12:38 +00:00
Jaco e3eb76762c 7.0.1 (#1058) 2021-07-11 12:05:13 +02:00
Github Actions 114e75a4b4 [CI Skip] release/beta 6.11.2-17
skip-checks: true
2021-07-11 05:05:49 +00:00
Miguel Hervas 5ca641c758 Add CFG Ledger Support (#1057) 2021-07-11 06:58:39 +02:00
Github Actions ded2528836 [CI Skip] release/beta 6.11.2-16
skip-checks: true
2021-07-09 16:03:27 +00:00
Jaco Greeff 70fa61916d Bump dev 2021-07-09 18:55:37 +03:00
Github Actions c9a2d3b6d7 [CI Skip] release/beta 6.11.2-15
skip-checks: true
2021-07-09 15:04:13 +00:00
Jaco Greeff 4927120403 Additional keyring exports 2021-07-09 17:04:11 +03:00
Github Actions 36f53f6b82 [CI Skip] release/beta 6.11.2-14
skip-checks: true
2021-07-09 12:11:29 +00:00
Jaco 24548e84e1 Networks bundling adjustments (#1056)
* Add networks to util bundle

* Bundling for @polkadot/networks

* Move to util-crypto

* Comment

* Update lock

* Re-adjust detectPackage

* Only exports

* Adjust

* Adjust tests

* crosscheck adjust
2021-07-09 14:03:21 +02:00
Github Actions 337deab526 [CI Skip] release/beta 6.11.2-13
skip-checks: true
2021-07-09 08:06:52 +00:00
Jaco 4a9f0326e7 Adjust bundle builds (crypto now working) (#1055) 2021-07-09 09:59:16 +02:00
Github Actions 81811510f4 [CI Skip] release/beta 6.11.2-12
skip-checks: true
2021-07-09 05:47:41 +00:00
Jaco f09867d90f Sync ss58 (#1054) 2021-07-09 07:39:15 +02:00
Github Actions 709e1ab3c1 [CI Skip] release/beta 6.11.2-11
skip-checks: true
2021-07-08 11:40:02 +00:00
Jaco ae2d7518b2 Bump deps (#1053) 2021-07-08 13:32:49 +02:00
Github Actions 5337f1dca9 [CI Skip] release/beta 6.11.2-10
skip-checks: true
2021-07-07 16:39:22 +00:00
Jaco cc9b8630ff Single module bundle via rollup (#1041)
* Single module bundle via rollup

* Additional

* Dedupe

* rollup default to browser

* Fix hw-ledger output naming

* Adjust with dev

* Update rollup.config.mjs

* Fix Ledger bundling

* Update rollup.config.mjs

* Apply suggestions from code review

* Use createBundle

* override all

* Update rollup.config.mjs

* Update rollup.config.mjs

* Remove browser index

* Add bundle entrypoint

* Attempt blackholing

* empty blake2

* Bump dev (w/ rollup plugins)

* Bump dev

* x-* as internal

* Updates

* Bump wasm

* Bump wasm
2021-07-07 19:32:17 +03:00
Github Actions e6e266a4c0 [CI Skip] release/beta 6.11.2-9
skip-checks: true
2021-07-07 11:44:51 +00:00
Jaco Greeff 3b96d87f7f Remove x-rxjs from tsconfig 2021-07-07 14:36:51 +03:00
Github Actions c1949a21be [CI Skip] release/beta 6.11.2-8
skip-checks: true
2021-07-07 10:38:27 +00:00
Jaco 7f0a6b0ce9 Split index into bundle & detect (#1051) 2021-07-07 12:30:55 +02:00
Github Actions 6b644025b0 [CI Skip] release/beta 6.11.2-7
skip-checks: true
2021-07-07 07:33:00 +00:00
Jaco 6ea1ee555b Remove the x-rxjs compatibility layer (#1050)
* Remove the x-rxjs compatibility layer

* Update CHANGELOG.md
2021-07-07 09:25:08 +02:00
Github Actions d582b2e180 [CI Skip] release/beta 6.11.2-6
skip-checks: true
2021-07-07 07:01:56 +00:00
Jaco c2d04155f9 Re-add rxjs/operators (#1049) 2021-07-07 08:53:16 +02:00
Github Actions 5a4dc97498 [CI Skip] release/beta 6.11.2-5
skip-checks: true
2021-07-07 06:45:57 +00:00
Jaco f1aeda10ee Adjust rxjs exports (#1048) 2021-07-07 08:37:51 +02:00
Github Actions 70a3aebce3 [CI Skip] release/beta 6.11.2-4
skip-checks: true
2021-07-06 13:09:56 +00:00
Jaco 31dd2ced0e RxJs 7 (#965)
* RxJs 7

* Bump deps

* rxjs 7.0.1

* Bump rxjs

* Bump to rxjs 7.2

* CHANGELOG
2021-07-06 15:01:39 +02:00
Github Actions 98ad1199f3 [CI Skip] release/beta 6.11.2-3
skip-checks: true
2021-07-06 11:19:06 +00:00
Jaco Greeff 30225ceb40 Bump dev 2021-07-06 14:11:08 +03:00
Github Actions 194b8ced5b [CI Skip] release/beta 6.11.2-2
skip-checks: true
2021-07-06 07:16:40 +00:00
Jaco Greeff 81ed8cfc6c Bump deps 2021-07-06 10:08:10 +03:00
Jaco Greeff 51598b00c0 Bump dev 2021-07-06 09:56:14 +03:00
Github Actions 1684bd3161 [CI Skip] release/beta 6.11.2-1
skip-checks: true
2021-07-06 05:55:04 +00:00
Jaco Greeff a53e1b8aa4 Bump dev 2021-07-06 08:46:36 +03:00
Github Actions 89f2925d89 [CI Skip] release/beta 6.11.2-0
skip-checks: true
2021-07-05 15:04:14 +00:00
Jaco c29a226279 Bump dev (#1045) 2021-07-05 16:55:51 +02:00
Github Actions b8d1ab95c6 [CI Skip] release/stable 6.11.1
skip-checks: true
2021-07-05 06:42:16 +00:00
Jaco bcddcab03e 6.11 (#1044) 2021-07-05 08:32:33 +02:00
Github Actions bfe2c5bd38 [CI Skip] release/beta 6.10.2-3
skip-checks: true
2021-07-02 14:00:42 +00:00
Jaco c243c4c59a Bump ZondaX deps (w/ Statemine fix) (#1043)
* Bump ZondaX deps (w/ Statemine fix)

* Statemine app naming
2021-07-02 15:53:42 +02:00
Github Actions c8db1347d0 [CI Skip] release/beta 6.10.2-2
skip-checks: true
2021-07-02 13:04:49 +00:00
Jaco 9952f90261 Remove unneeded x-global deps (#1042) 2021-07-02 14:56:21 +02:00
Github Actions 48fcd8b4ff [CI Skip] release/beta 6.10.2-1
skip-checks: true
2021-07-02 07:17:33 +00:00
Jaco 10a09253f8 Bump TS (#1040) 2021-07-02 09:08:27 +02:00
Github Actions 7b435f7a89 [CI Skip] release/beta 6.10.2-0
skip-checks: true
2021-06-30 11:21:10 +00:00
Jaco 392150e412 Update ss58 registry (#1038) 2021-06-30 13:13:13 +02:00
Github Actions 4ac2366a97 [CI Skip] release/stable 6.10.1
skip-checks: true
2021-06-26 07:51:26 +00:00
Jaco 017fb5e738 6.10 (#1036) 2021-06-26 09:43:02 +02:00
Github Actions 81a5ccc0ca [CI Skip] release/beta 6.9.2-12
skip-checks: true
2021-06-25 12:48:25 +00:00
Jaco fbe688ff4e Ledger info for Statemine (#1026) 2021-06-25 14:40:06 +02:00
Github Actions 9a58dc61eb [CI Skip] release/beta 6.9.2-11
skip-checks: true
2021-06-25 07:26:11 +00:00
Jaco d7bd59a699 ss58 update (#1035)
* ss58 update

* Update standardAccount type
2021-06-25 09:17:21 +02:00
Github Actions 41ef37e92e [CI Skip] release/beta 6.9.2-10
skip-checks: true
2021-06-24 11:22:25 +00:00
Antoine EstienneandJaco 8031a4472e Fix tojson pair for 20 address (#1032)
* added gerald test address

* exception for 20 address

* lint

* remove comment

* Update packages/keyring/src/pair/index.ts

Co-authored-by: Jaco <jacogr@gmail.com>

Co-authored-by: Jaco <jacogr@gmail.com>
2021-06-24 13:13:11 +02:00
Github Actions 31be56226d [CI Skip] release/beta 6.9.2-9
skip-checks: true
2021-06-23 13:55:31 +00:00
Jaco 902ff47337 isHex(value): value is string (#1031)
* isHex stringisHex(value): value is string

* lint
2021-06-23 15:47:42 +02:00
Github Actions dc06b87cdd [CI Skip] release/beta 6.9.2-8
skip-checks: true
2021-06-23 11:18:56 +00:00
Jaco 1e25accdad Sync ss58 with upstream (#1030)
* Sync ss58 with upstream

* CHANGELOG
2021-06-23 13:11:24 +02:00
Github Actions 67dbc4d7f7 [CI Skip] release/beta 6.9.2-7
skip-checks: true
2021-06-23 11:03:42 +00:00
Jaco ab3268407c Use describe.each for onlyJs flag (#1029)
* Use describe.each for onlyJs flag

* base validate checks
2021-06-23 12:55:29 +02:00
Github Actions 470b43578e [CI Skip] release/beta 6.9.2-6
skip-checks: true
2021-06-23 10:23:29 +00:00
Jaco 038b50455e Update deps (blake2js w/ types, @ledger/hw-transport) (#1027)
* Update deps (blake2js w/ types, @ledger/hw-transport)

* Lint fix

* Exapnd blake2 tests
2021-06-23 12:15:21 +02:00
Github Actions 5c3fa682a9 [CI Skip] release/beta 6.9.2-5
skip-checks: true
2021-06-23 06:02:29 +00:00
Jaco e677acd1ed Update toLegacySeed.ts (#1024) 2021-06-23 07:55:24 +02:00
Github Actions 68cd6e2dfb [CI Skip] release/beta 6.9.2-4
skip-checks: true
2021-06-23 05:11:08 +00:00
Nantian 7130ff6f71 add karura genesis hash (#1022) 2021-06-23 07:02:51 +02:00
Github Actions a6d5d0dcdc [CI Skip] release/beta 6.9.2-3
skip-checks: true
2021-06-22 16:00:23 +00:00
Jaco a3b738f91d @zondax/ledger-polkadot -> @zondax/ledger-substrate/ (#1021)
* @zondax/ledger-polkadot -> @zondax/ledger-substrate/

* Update imports
2021-06-22 17:51:52 +02:00
Github Actions b66d2e39f4 [CI Skip] release/beta 6.9.2-2
skip-checks: true
2021-06-22 14:11:43 +00:00
Jaco 0ef761e899 User template string type for isHex (#1020)
* User template string type for isHex

* isHex/isString combo checks
2021-06-22 16:05:14 +02:00
Github Actions 7d09f0892a [CI Skip] release/beta 6.9.2-1
skip-checks: true
2021-06-22 13:52:46 +00:00
Jaco 972f15c774 Bump deps (#1019) 2021-06-22 15:45:39 +02:00
Github Actions fa11195d4a [CI Skip] release/beta 6.9.2-0
skip-checks: true
2021-06-22 13:02:56 +00:00
Jaco f437d3aae1 arrayShuffle (#1018)
* arrayShuffle

* Update packages/util/src/array/shuffle.spec.ts

* Update packages/util/src/array/shuffle.spec.ts

* Update packages/util/src/array/shuffle.ts

* Early return for length 1
2021-06-22 14:54:40 +02:00
Github Actions 04a28967c7 [CI Skip] release/stable 6.9.1
skip-checks: true
2021-06-19 04:27:32 +00:00
Jaco 47c831d672 6.9 (#1017) 2021-06-19 06:18:48 +02:00
Github Actions 3c4c2cf540 [CI Skip] release/beta 6.8.2-1
skip-checks: true
2021-06-18 14:30:59 +00:00
Jaco f383487764 Mnemonic compare test (w/ arrayRange) (#1016)
* Mnemonic compare test (w/ arrayRange)

* Update packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts

* Update packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts

* --testPathIgnorePattern toMiniSecretCmp

* patterns

* Prettify tests with .each

* with and without password
2021-06-18 16:23:50 +02:00
Github Actions d900dec667 [CI Skip] release/beta 6.8.2-0
skip-checks: true
2021-06-17 09:12:38 +00:00
Jaco 49d200fb85 Add u8aCmp (sorting determination) (#1015)
* Add u8aCmp (sorting determination)

* Update packages/util/src/u8a/cmp.ts

* Update packages/util/src/u8a/cmp.ts

* Update packages/util/src/u8a/cmp.ts

* Use u8aCmp in u8aEq
2021-06-17 11:03:02 +02:00
Github Actions 2f9d117cc6 [CI Skip] release/stable 6.8.1
skip-checks: true
2021-06-14 05:18:19 +00:00
Jaco ef44de3ebe 6.8 (#1014) 2021-06-14 07:09:38 +02:00
Github Actions 76d03bb504 [CI Skip] release/beta 6.7.2-8
skip-checks: true
2021-06-13 07:56:44 +00:00
Jaco b58543237f Sync ss58 (#1013) 2021-06-13 09:48:35 +02:00
Github Actions 4859157264 [CI Skip] release/beta 6.7.2-7
skip-checks: true
2021-06-11 10:10:49 +00:00
Jaco a5f3ce20ae Fix internal bn/* imports (#1010) 2021-06-11 12:02:24 +02:00
Github Actions 14fe54d2af [CI Skip] release/beta 6.7.2-6
skip-checks: true
2021-06-11 09:50:49 +00:00
Jaco f2d611e26d BN util export (& imports adjust) (#1009)
* BN util export (& imports adjust)

* Fix hexToBn

* Adjusts test

* Move bn export
2021-06-11 11:42:29 +02:00
Github Actions 700774b207 [CI Skip] release/beta 6.7.2-5
skip-checks: true
2021-06-08 15:12:16 +00:00
Jaco 770446c052 Prettier ignore all (#1007) 2021-06-08 17:04:13 +02:00
Github Actions f576b99c5c [CI Skip] release/beta 6.7.2-4
skip-checks: true
2021-06-08 09:26:36 +00:00
Raymond Zhong 678e888a4a Add Edgeware ledger app (#1006)
* Add Edgeware ledger app

* Add edgeware slip44
2021-06-08 11:17:39 +02:00
Github Actions 3335215866 [CI Skip] release/beta 6.7.2-3
skip-checks: true
2021-06-07 14:08:51 +00:00
Jaco Greeff d4a64e7a5a Adjust cron locks 2021-06-07 17:00:17 +03:00
Github Actions d778157d5a [CI Skip] release/beta 6.7.2-2
skip-checks: true
2021-06-07 13:56:48 +00:00
Jaco Greeff 3d0f6dafa5 lock cron 2021-06-07 16:48:16 +03:00
Github Actions 374a6ba5d6 [CI Skip] release/beta 6.7.2-1
skip-checks: true
2021-06-06 19:33:34 +00:00
Jaco Greeff eee6160060 Adjust semgrep check 2021-06-06 22:25:12 +03:00
Github Actions 5202b3febb [CI Skip] release/beta 6.7.2-0
skip-checks: true
2021-06-06 19:06:59 +00:00
Agustinus TheodorusandAgustinus Theodorus a0d48fdb48 docs: fix typo in naclSeal docs. (#1005)
Co-authored-by: Agustinus Theodorus <agustinus.theodorus@binus.edu>
2021-06-06 20:58:43 +02:00
Github Actions 831fddafd7 [CI Skip] release/stable 6.7.1
skip-checks: true
2021-06-06 16:36:58 +00:00
Jaco 278a30cd7d 6.7 (#1004) 2021-06-06 18:29:53 +02:00
Github Actions 55b65b202e [CI Skip] release/beta 6.6.2-18
skip-checks: true
2021-06-05 11:16:55 +00:00
Jaco Greeff e1b6456a14 No semgrep.yml on forks 2021-06-05 14:07:36 +03:00
Github Actions 4f285c989d [CI Skip] release/beta 6.6.2-17
skip-checks: true
2021-06-05 07:31:52 +00:00
Jaco Greeff 7cc946e19f Don't include ci in stale 2021-06-05 10:23:21 +03:00
Github Actions bc783be346 [CI Skip] release/beta 6.6.2-16
skip-checks: true
2021-06-05 06:46:34 +00:00
Jaco Greeff a156a2da82 push-master.yml adjust skip 2021-06-05 09:38:08 +03:00
Github Actions 0131915253 [CI Skip] release/beta 6.6.2-15
skip-checks: true
2021-06-05 06:28:11 +00:00
Jaco Greeff 97cb8a76f1 semgrep.yml on PR 2021-06-05 09:19:57 +03:00
Github Actions 80129ae1b7 [CI Skip] release/beta 6.6.2-14
skip-checks: true
2021-06-04 15:06:57 +00:00
Jaco Greeff 3f4ac9e8aa semgrep.yml update 2021-06-04 17:58:12 +03:00
Github Actions 8707810690 [CI Skip] release/beta 6.6.2-13
skip-checks: true
2021-06-04 10:14:02 +00:00
Jaco 88edb9103f Bump deps (#1002) 2021-06-04 12:06:53 +02:00
Github Actions 849546e97c [CI Skip] release/beta 6.6.2-12
skip-checks: true
2021-06-04 08:46:31 +00:00
Jaco Greeff d6959738db semgrep on master only 2021-06-04 11:38:37 +03:00
Github Actions f70a125b18 [CI Skip] release/beta 6.6.2-11
skip-checks: true
2021-06-04 05:44:30 +00:00
Jaco Greeff fe7f6baee4 semgrep only for non-forked 2021-06-04 08:35:59 +03:00
Github Actions 2d264b5fba [CI Skip] release/beta 6.6.2-10
skip-checks: true
2021-06-03 16:08:03 +00:00
Jaco 74bbbe02d9 Bump Ledger WebUsb (#1001) 2021-06-03 18:01:01 +02:00
Github Actions a6cd04a441 [CI Skip] release/beta 6.6.2-9
skip-checks: true
2021-06-03 15:23:37 +00:00
Jaco Greeff f7884093ca lock.yml cron 2021-06-03 18:14:49 +03:00
Github Actions e327fd3e51 [CI Skip] release/beta 6.6.2-8
skip-checks: true
2021-06-02 16:14:29 +00:00
Jaco Greeff ade6cf7ac0 fix stale.yml 2021-06-02 19:06:29 +03:00
Jaco 3404015fc3 Add WebHID transport for Ledger (#1000)
* Add WebHID transport for Ledger

* Update packages/hw-ledger-transports/package.json

* Bump yarn

* yarn.lock interval

* types for transport
2021-06-02 18:00:53 +02:00
Github Actions f91911e9f7 [CI Skip] release/beta 6.6.2-7
skip-checks: true
2021-06-02 07:13:38 +00:00
Jaco Greeff a3631278df cron workflows 2021-06-02 10:05:54 +03:00
Github Actions a0eab88134 [CI Skip] release/beta 6.6.2-6
skip-checks: true
2021-06-01 11:00:02 +00:00
Jaco 45795a5d11 Testing keyring adjustments (#997)
* Testing keyring adjustments

* Revert, add  // nosemgrep

* explicit rule ignore

* revert

* Remove Gerald test
2021-06-01 12:51:51 +02:00
Github Actions 4bb3efa25c [CI Skip] release/beta 6.6.2-5
skip-checks: true
2021-06-01 10:06:03 +00:00
Jaco Greeff 783a76932c semgrep.yml 2021-06-01 12:58:30 +03:00
Github Actions 006eb3c76e [CI Skip] release/beta 6.6.2-4
skip-checks: true
2021-06-01 06:11:05 +00:00
Jaco Greeff 2326d26de9 cron daily only 2021-06-01 09:03:55 +03:00
Github Actions 7c9f69ea20 [CI Skip] release/beta 6.6.2-3
skip-checks: true
2021-05-31 20:22:12 +00:00
Jaco Greeff 0107f7af42 cron locks 2021-05-31 23:15:43 +03:00
Github Actions 4e2e133790 [CI Skip] release/beta 6.6.2-2
skip-checks: true
2021-05-31 07:58:51 +00:00
Jaco 0d42250171 Update .123trigger 2021-05-31 09:50:41 +02:00
Github Actions 599c81cf94 [CI Skip] release/beta 6.6.2-1
skip-checks: true
2021-05-31 07:49:56 +00:00
Jaco Greeff d11e393007 Bump dev 2021-05-31 10:42:42 +03:00
Jaco c6879f779b Bump dev (#996) 2021-05-31 09:17:11 +02:00
Jaco Greeff d17b8f0bd6 lock.yml 2021-05-30 22:22:58 +03:00
Github Actions 238ba6a462 [CI Skip] release/beta 6.6.2-1
skip-checks: true
2021-05-30 09:41:12 +00:00
Jaco 566b6730bc Bump berry (#995)
* Bump berry

* Update tests
2021-05-30 11:33:46 +02:00
Github Actions 09aa042606 [CI Skip] release/beta 6.6.2-0
skip-checks: true
2021-05-29 08:27:17 +00:00
Jaco Greeff acd09c3024 Update stale.yml 2021-05-29 11:18:47 +03:00
Github Actions 0cbb06a6da [CI Skip] release/stable 6.6.1
skip-checks: true
2021-05-29 07:25:59 +00:00
Jaco Greeff 9992feaa7b Actual 6.6 bump 2021-05-29 10:18:50 +03:00
Github Actions bb968d51b0 [CI Skip] release/beta 6.5.2-6
skip-checks: true
2021-05-29 07:17:23 +00:00
Jaco b6001796d7 6.6 (#994) 2021-05-29 09:10:19 +02:00
Github Actions 8ab9387076 [CI Skip] release/beta 6.5.2-5
skip-checks: true
2021-05-28 08:48:07 +00:00
Jaco Greeff f9fd0eeda3 Update stale.yml 2021-05-28 11:39:39 +03:00
Github Actions f2cee9c33d [CI Skip] release/beta 6.5.2-4
skip-checks: true
2021-05-28 08:24:13 +00:00
Jaco a860b09638 Add stale.yml (#993) 2021-05-28 10:16:03 +02:00
Github Actions be3e83f4e3 [CI Skip] release/beta 6.5.2-3
skip-checks: true
2021-05-28 07:52:13 +00:00
Jaco 5788df3f57 Adjust HD path validation & replacement (#992) 2021-05-28 09:43:28 +02:00
Github Actions ec286a57d1 [CI Skip] release/beta 6.5.2-2
skip-checks: true
2021-05-27 05:26:39 +00:00
Jaco 655eb9f128 Align ss58 with upstream (+3 entries) (#990) 2021-05-27 07:18:23 +02:00
Github Actions 37d95fe314 [CI Skip] release/beta 6.5.2-1
skip-checks: true
2021-05-26 08:42:07 +00:00
Jaco 830a2c69d8 Bump dev (#988) 2021-05-26 10:33:36 +02:00
Github Actions ead94a4493 [CI Skip] release/beta 6.5.2-0
skip-checks: true
2021-05-25 11:33:16 +00:00
alexdniepandAlex D cff15f9027 added equilibrium slip44; added equilibrium genesis hash (#984)
* added equilibrium slip44; added equilibrium genesis hash

* added equilibrium app in ledger-polkadot package

Co-authored-by: Alex D <pr0fedt@gmail.com>
2021-05-25 13:27:02 +02:00
Github Actions 13d7dcfef5 [CI Skip] release/stable 6.5.1
skip-checks: true
2021-05-22 17:57:26 +00:00
Jaco 259bb1a0ca 6.5 (#987) 2021-05-22 19:50:55 +02:00
Github Actions d0fb629217 [CI Skip] release/beta 6.4.2-1
skip-checks: true
2021-05-22 15:30:50 +00:00
Jaco ab55c37a33 Allow hdLedger derivation with optional 25th word password (#986) 2021-05-22 17:24:37 +02:00
Github Actions 93a0a194bc [CI Skip] release/beta 6.4.2-0
skip-checks: true
2021-05-20 13:13:50 +00:00
Jaco 3df71c9943 Sync with Substrate ss58 registry (#983)
* Sync with Substrate ss58 registry

* Bump deps
2021-05-20 15:07:29 +02:00
Github Actions 4d4e3988ab [CI Skip] release/stable 6.4.1
skip-checks: true
2021-05-15 08:25:20 +00:00
Jaco 1bfabae65b 6.4 (#981) 2021-05-15 10:18:17 +02:00
Github Actions eb08291de2 [CI Skip] release/beta 6.3.2-13
skip-checks: true
2021-05-12 12:31:23 +00:00
Jaco d63d92e488 Explicit deprecation logging (#979)
* Explicit deprecation logging

* Update CHANGELOG.md
2021-05-12 14:25:01 +02:00
Github Actions bd047063ef [CI Skip] release/beta 6.3.2-12
skip-checks: true
2021-05-11 14:39:44 +00:00
Jaco d725bf21ae Bump deps (#978) 2021-05-11 16:33:13 +02:00
Github Actions f7699edaaf [CI Skip] release/beta 6.3.2-11
skip-checks: true
2021-05-11 14:08:41 +00:00
Jakub Pánik 47501aee7a HydraDX Snakenet Gen3-1 (#977) 2021-05-11 16:02:36 +02:00
Github Actions e4f526bdda [CI Skip] release/beta 6.3.2-10
skip-checks: true
2021-05-11 07:08:11 +00:00
Jaco Greeff 29bf23cd18 Bump CHANGELOG 2021-05-11 10:02:23 +03:00
Github Actions 39d6da414d [CI Skip] release/beta 6.3.2-9
skip-checks: true
2021-05-09 10:55:56 +00:00
Jaco e7233de48f Bump deps (#976) 2021-05-09 12:50:29 +02:00
Github Actions 255d6ef66c [CI Skip] release/beta 6.3.2-8
skip-checks: true
2021-05-09 09:47:32 +00:00
Jaco b41e27d7c3 Bump deps (#975) 2021-05-09 11:41:14 +02:00
Github Actions e3c858ac01 [CI Skip] release/beta 6.3.2-7
skip-checks: true
2021-05-09 09:38:48 +00:00
Jakub Pánik 014075c313 Add HydraDX Snakenet Gen3 (#974) 2021-05-09 11:32:32 +02:00
Github Actions eb3e77c572 [CI Skip] release/beta 6.3.2-6
skip-checks: true
2021-05-07 12:07:26 +00:00
Antoine EstienneandJaco 512ae89fea Jlm update for ethereum pair addition (#969)
* added gerald test address

* allow adding 20 address in createPair

* lint

* move logic to eth specific function

* fix typo

* Update packages/keyring/src/pair/index.ts

Co-authored-by: Jaco <jacogr@gmail.com>

* re establish right encoding

* Update packages/keyring/src/pair/index.ts

Co-authored-by: Jaco <jacogr@gmail.com>

* Update packages/keyring/src/pair/index.ts

Co-authored-by: Jaco <jacogr@gmail.com>

Co-authored-by: Jaco <jacogr@gmail.com>
2021-05-07 14:01:39 +02:00
Github Actions 7f57d05281 [CI Skip] release/beta 6.3.2-5
skip-checks: true
2021-05-07 05:34:33 +00:00
Jaco 5892f70c83 Align ss58 (#972) 2021-05-07 07:28:36 +02:00
Github Actions 699f775141 [CI Skip] release/beta 6.3.2-4
skip-checks: true
2021-05-07 05:05:11 +00:00
Jaco a09e06898f Bump deps (#971)
* Bump deps

* Latest dev
2021-05-07 06:58:48 +02:00
Github Actions 565314ff5f [CI Skip] release/beta 6.3.2-3
skip-checks: true
2021-05-06 06:13:15 +00:00
Jaco bd669f333f Remove ss58 27 prefix (#968) 2021-05-06 08:05:52 +02:00
Github Actions 829d8bc985 [CI Skip] release/beta 6.3.2-2
skip-checks: true
2021-04-30 07:02:29 +00:00
Jaco 218dba5623 Verification test for keyring 2-byte ss58 (#966) 2021-04-30 08:56:39 +02:00
Github Actions b8bf2fed0d [CI Skip] release/beta 6.3.2-1
skip-checks: true
2021-04-30 05:59:33 +00:00
Jaco d505dc1072 Bump deps (#964) 2021-04-30 07:53:27 +02:00
Github Actions 20148b05c4 [CI Skip] release/beta 6.3.2-0
skip-checks: true
2021-04-30 05:32:34 +00:00
Jaco 2516309b93 Add additional 2-byte ss58 tests (verification) (#963) 2021-04-30 07:26:58 +02:00
Github Actions 92d3a2e208 [CI Skip] release/stable 6.3.1
skip-checks: true
2021-04-25 04:09:00 +00:00
Jaco 286d7a036e 6.3 (#961) 2021-04-25 06:02:58 +02:00
Github Actions 4556822a8a [CI Skip] release/beta 6.2.2-8
skip-checks: true
2021-04-24 07:39:45 +00:00
Jaco be227926c8 Add explict engines field (#960) 2021-04-24 09:33:15 +02:00
Github Actions 42626a780c [CI Skip] release/beta 6.2.2-7
skip-checks: true
2021-04-22 12:45:01 +00:00
Jaco afd8a9610f Don't modiy original value on encoding (#958) 2021-04-22 14:39:39 +02:00
Github Actions 393334409f [CI Skip] release/beta 6.2.2-6
skip-checks: true
2021-04-22 11:47:35 +00:00
Jaco 0fb52a929d BN manipulation via in-place shifts (as applicable) (#955)
* BN manipulation via in-place shifts (as applicable)

* Adjust tests
2021-04-22 13:42:20 +02:00
Github Actions 50b10e214c [CI Skip] release/beta 6.2.2-5
skip-checks: true
2021-04-22 11:18:57 +00:00
Jaco bbadfbebfa assert cleanups (#957) 2021-04-22 13:13:41 +02:00
Github Actions a52a6253b5 [CI Skip] release/beta 6.2.2-4
skip-checks: true
2021-04-22 10:20:54 +00:00
Jaco 4ca010cc99 Add stringify util (#956)
* Add stringify util

* stringify space param

* Update packages/util/src/stringify.ts
2021-04-22 12:14:31 +02:00
Github Actions a136d938df [CI Skip] release/beta 6.2.2-3
skip-checks: true
2021-04-22 08:30:15 +00:00
Jaco 132ba0128d Type checking on u8aToU8a before invalid return (#954)
* Type checking on u8aToU8a before invalid return

* Remove extra assignment

* CHANGELOG

* Correct expectation
2021-04-22 10:25:22 +02:00
Github Actions 6b705a9838 [CI Skip] release/beta 6.2.2-2
skip-checks: true
2021-04-21 10:57:23 +00:00
Jaco f3381b0aae Use globalThis as available (#953) 2021-04-21 12:52:10 +02:00
Github Actions ba086159ad [CI Skip] release/beta 6.2.2-1
skip-checks: true
2021-04-21 08:36:18 +00:00
Jaco 3a98323e8b Minor readability improvements (#952)
* Minor readability improvements

* trigger

* Additional

* Additional
2021-04-21 10:31:28 +02:00
Github Actions 1de30914c2 [CI Skip] release/beta 6.2.2-0
skip-checks: true
2021-04-21 07:19:42 +00:00
Jaco 984bb7c04f Bump deps (#951) 2021-04-21 09:13:31 +02:00
Github Actions 6140b7f799 [CI Skip] release/stable 6.2.1
skip-checks: true
2021-04-18 05:24:59 +00:00
Jaco 3dc98a3790 6.2.1 (#948) 2021-04-18 07:19:31 +02:00
Github Actions ab7345f017 [CI Skip] release/beta 6.1.2-3
skip-checks: true
2021-04-15 09:33:57 +00:00
Jakub PánikandJaco ef57c7fea4 Update defaults.ts with HydraDX re-genesis hash (#947)
* Update defaults.ts

Re-genesis hash of HydraDX

* Update packages/networks/src/defaults.ts

Co-authored-by: Jaco <jacogr@gmail.com>

Co-authored-by: Jaco <jacogr@gmail.com>
2021-04-15 12:28:40 +03:00
Github Actions efb013db4a [CI Skip] release/beta 6.1.2-2
skip-checks: true
2021-04-14 19:32:03 +00:00
Jaco cd1c0df3cd isAddress/validateAddress functions (#946) 2021-04-14 21:25:58 +02:00
Github Actions 9d08827ccf [CI Skip] release/beta 6.1.2-1
skip-checks: true
2021-04-14 12:02:56 +00:00
Jaco 5083de2941 Sync ss58 with Substrate registry (#945)
* Sync ss58 with Substrate registry

* Update template
2021-04-14 13:56:43 +02:00
Github Actions b266d9f742 [CI Skip] release/beta 6.1.2-0
skip-checks: true
2021-04-13 11:29:44 +00:00
Jaco ea187707c8 Check for networks vs hw-ledger discrepancies (#943)
* Check for networks vs hw-ledger discrepancies

* Rename ledgerApps

* Bump dev

* type imports
2021-04-13 13:23:53 +02:00
Github Actions 1b334d570e [CI Skip] release/stable 6.1.1
skip-checks: true
2021-04-11 12:48:13 +00:00
Jaco Greeff eb0537471e 6.1.1 (#942) 2021-04-11 14:43:33 +02:00
Github Actions fa2c949eda [CI Skip] release/beta 6.0.6-8
skip-checks: true
2021-04-11 12:03:00 +00:00
Lezek123 f5fd07d6e7 logger - wildcard include/exclude with DEBUG env (#932) 2021-04-11 13:57:13 +02:00
Github Actions be1a2ebf8c [CI Skip] release/beta 6.0.6-7
skip-checks: true
2021-04-11 08:54:16 +00:00
Jaco Greeff 31cd173b0d Auto-create network list based on Substrate registry (#939)
* Auto-create network list based on Substrate registry

* Extract all extensions

* build networks from upstream registry

* Build list

* Cleanups

* Extra tests against overrides

* Simplify all expansion

* Cleanups

* Updates

* CC overrides
2021-04-11 10:48:27 +02:00
Github Actions 5408064ff5 [CI Skip] release/beta 6.0.6-6
skip-checks: true
2021-04-11 08:28:44 +00:00
amphineko 482aee3a1a chore: fix typo in versionDetect messages (#941) 2021-04-11 10:22:51 +02:00
Github Actions 95f3ac667c [CI Skip] release/beta 6.0.6-5
skip-checks: true
2021-04-09 04:54:05 +00:00
Adam Dossa 1e0a7ba0d6 Update genesis hash for Polymesh network (#937) 2021-04-09 06:48:12 +02:00
Github Actions 57865e53dd [CI Skip] release/beta 6.0.6-4
skip-checks: true
2021-04-08 08:22:41 +00:00
Jaco Greeff d6617f33dd Check for prefix dupes (#936)
* Check for prefix dupes

* Bump deps
2021-04-08 10:11:18 +02:00
Github Actions 1e778b0cc4 [CI Skip] release/beta 6.0.6-3
skip-checks: true
2021-04-01 07:28:18 +00:00
Jaco Greeff 6ceb58e5d3 Add ss58 252 (#934)
* Add ss58 252

* Bump deps
2021-04-01 09:23:02 +02:00
Github Actions e7e8244323 [CI Skip] release/beta 6.0.6-2
skip-checks: true
2021-03-22 21:11:13 +00:00
Jaco Greeff 03a3cabe41 Bump deps (#930) 2021-03-22 22:05:16 +01:00
Github Actions 480002c5f1 [CI Skip] release/beta 6.0.6-1
skip-checks: true
2021-03-17 08:03:29 +00:00
Jaco Greeff 0126584a7d Update .123trigger 2021-03-17 08:57:05 +01:00
Github Actions 3f76e4a0dd [CI Skip] release/beta 6.0.6-0
skip-checks: true
2021-03-17 07:16:49 +00:00
Jaco Greeff 890cf5cbfd Update ss58 (#928)
Closes https://github.com/polkadot-js/common/issues/927
2021-03-17 08:10:49 +01:00
Github Actions a951e844bf [CI Skip] release/stable 6.0.5
skip-checks: true
2021-03-08 14:03:07 +00:00
Jaco Greeff 568815bf4a 6.0.5 (#926) 2021-03-08 14:57:53 +01:00
Github Actions f18293ffe9 [CI Skip] release/stable 6.0.4
skip-checks: true
2021-03-07 15:08:24 +00:00
Jaco Greeff 003dc8d247 6.0.4 (#924) 2021-03-07 16:02:32 +01:00
Github Actions f259de2679 [CI Skip] release/beta 6.0.4-0
skip-checks: true
2021-03-07 11:12:14 +00:00
Yuri b0f783f54b Extra check for process for browser bundles (#923) 2021-03-07 12:05:54 +01:00
Github Actions 4fbdbcf8c5 [CI Skip] release/stable 6.0.3
skip-checks: true
2021-03-05 22:18:23 +00:00
Jaco Greeff ac5c993b27 6.0.3 (cjs import indirection) (#922)
* 6.0.3 (cjs import indirection)

* Bump deps

* Apply suggestions from code review
2021-03-05 23:11:54 +01:00
Github Actions e05dcf7383 [CI Skip] release/stable 6.0.2
skip-checks: true
2021-03-05 15:55:45 +00:00
Jaco Greeff c9ea3ab1ae 6.0.2 (Only use rxjs cjs exports) (#920)
* 6.0.2 (Only use rxjs cjs exports)

* Update CHANGELOG.md

* packageInfo
2021-03-05 16:49:45 +01:00
Github Actions 4b097dcaef [CI Skip] release/stable 6.0.1
skip-checks: true
2021-03-05 15:07:06 +00:00
Jaco Greeff 2a9cca5f1b 6.0 (#919) 2021-03-05 16:00:54 +01:00
Github Actions 8ce3a40c66 [CI Skip] release/beta 6.0.1-9
skip-checks: true
2021-03-05 08:40:25 +00:00
Jaco Greeff 958a13384d Allow for addition of raw pairs to the keyring (#918) 2021-03-05 09:35:12 +01:00
Github Actions e25545c39f [CI Skip] release/beta 6.0.1-8
skip-checks: true
2021-03-04 21:06:19 +00:00
Jaco Greeff bca1e0c5c4 Extract json encryption functions (#917)
* Extract json encryption functions

* Opt

* adjust

* Adjust

* Adjust imports

* callback error
2021-03-04 22:01:20 +01:00
Github Actions bf36024568 [CI Skip] release/beta 6.0.1-7
skip-checks: true
2021-03-04 19:01:05 +00:00
Jaco Greeff 1292a270e0 Bump wasm (#916) 2021-03-04 19:56:00 +01:00
Github Actions 68fe800f63 [CI Skip] release/beta 6.0.1-6
skip-checks: true
2021-03-03 15:47:58 +00:00
Jaco Greeff ceb1575e1a Build cleanups (#914) 2021-03-03 16:32:34 +01:00
Github Actions 4916d63832 [CI Skip] release/beta 6.0.1-5
skip-checks: true
2021-03-03 08:29:40 +00:00
Jaco Greeff d2176485b9 Bump (& berry) (#913) 2021-03-03 09:24:31 +01:00
Github Actions e9dd421b62 [CI Skip] release/beta 6.0.1-4
skip-checks: true
2021-03-02 19:51:57 +00:00
Antoine Estienne 802c241820 Add eth dev addresses (#912)
* added gerald test address

* added 5 dev addresses for eth

* added one pair

* updated seed
2021-03-02 20:45:36 +01:00
Github Actions a3b5ced423 [CI Skip] release/beta 6.0.1-3
skip-checks: true
2021-03-02 19:38:01 +00:00
Jaco Greeff b975766d35 Default output as ESM modules (#911)
* Default output as ESM modules

* 6.0

* packageInfo

* Bump dev & wasm

* empty ignore patterns

* Don't exclude @polkadot

* Bump dev
2021-03-02 20:31:48 +01:00
Github Actions eb460570ac [CI Skip] release/beta 5.9.3-1
skip-checks: true
2021-03-01 20:33:06 +00:00
Jaco Greeff a8658d5b60 Bump deps (#910) 2021-03-01 21:26:38 +01:00
Github Actions fbe462e2e3 [CI Skip] release/beta 5.9.3-0
skip-checks: true
2021-03-01 16:12:37 +00:00
Antoine EstienneandJaco Greeff 04bbf28a57 Jlm test from seed (#909)
* added gerald test address

* add test for fromSeed

* Update packages/util-crypto/src/secp256k1/keypair/fromSeed.spec.ts

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

* coorected createfromuri to accept eth priv key

* Update packages/keyring/src/keyring.ts

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

* add isPhraeHex

Co-authored-by: Jaco Greeff <jacogr@gmail.com>
2021-03-01 17:06:12 +01:00
Github Actions 47b79675da [CI Skip] release/stable 5.9.2
skip-checks: true
2021-02-28 10:16:04 +00:00
Jaco Greeff 4ed83e737c 5.9.2 (#908) 2021-02-28 11:10:15 +01:00
Github Actions 2ee863becc [CI Skip] release/stable 5.9.1
skip-checks: true
2021-02-28 07:53:49 +00:00
Jaco Greeff b343c31317 5.9 (#906) 2021-02-28 08:47:35 +01:00
Github Actions 04759e563e [CI Skip] release/beta 5.8.2-5
skip-checks: true
2021-02-27 14:04:34 +00:00
Jaco Greeff 6a5478919c Bump deps (#905)
* Bump deps

* Display mismatches when no dupes are detected

* test expectation

* adjust

* One less ||
2021-02-27 14:59:31 +01:00
Github Actions ac828b31e6 [CI Skip] release/beta 5.8.2-4
skip-checks: true
2021-02-27 12:52:10 +00:00
Jaco Greeff 86f17113e3 Dependency version checks (#904)
* Dependency version checks

* Add depndecy detection for all

* Cleanup util detectPackage

* Single detectPackage

* Update packages/hw-ledger/src/detectPackage.ts

* Update packages/util/src/detectPackage.ts

* non-indexed imports
2021-02-27 13:46:07 +01:00
Github Actions cb0429fae9 [CI Skip] release/beta 5.8.2-3
skip-checks: true
2021-02-27 11:16:06 +00:00
Jaco Greeff f23418ad84 Cleanup exports (#903)
* Cleanup exports

* No buffer conversion on base 58

* Buffer conversion
2021-02-27 12:10:13 +01:00
Github Actions 8386a70bfe [CI Skip] release/beta 5.8.2-2
skip-checks: true
2021-02-27 10:36:03 +00:00
Jaco Greeff 843cb3d00a Formatting cleanups for nested conditionals (#902)
* Formatting cleanups for nested conditionals

* Transports
2021-02-27 11:30:18 +01:00
Github Actions 3143e9df1c [CI Skip] release/beta 5.8.2-1
skip-checks: true
2021-02-26 12:41:35 +00:00
Jaco Greeff b76bdb5ed5 Remove class for key extraction (#898) 2021-02-26 13:36:06 +01:00
Github Actions 0e80e88456 [CI Skip] release/beta 5.8.2-0
skip-checks: true
2021-02-26 09:49:28 +00:00
Jaco Greeff 46bfe643a6 Additional tests for hdValidatePath (#897)
* Additional tests for hdValidatePath

* Additional

* slip for Polkadot
2021-02-26 10:43:55 +01:00
Github Actions 2e0b8e4d11 [CI Skip] release/stable 5.8.1
skip-checks: true
2021-02-26 07:13:30 +00:00
Jaco Greeff a8668c3c44 5.8 (#896)
* 5.8

* Update comments
2021-02-26 08:07:45 +01:00
Github Actions 11431f0e68 [CI Skip] release/beta 5.7.2-8
skip-checks: true
2021-02-25 19:38:32 +00:00
Jaco Greeff 6c664498dd Share hdValidatePath (Ledger & Ethereum) (#895)
* Share hsValidatePath (Ledger & Ethereum)

* Adjust

* Cleanup hdEthereum

* Cleanups

* Renames
2021-02-25 20:32:29 +01:00
Antoine Estienne 7721ac722d Fix eth derivation (#894)
* added gerald test address

* added test for toJson

* fix toJson

* lint

* fix ecdsa
2021-02-25 19:18:03 +01:00
Github Actions 0070f33089 [CI Skip] release/beta 5.7.2-7
skip-checks: true
2021-02-25 16:45:20 +00:00
Jaco Greeff a1267eb891 Revert toJSON changes (#893)
* Revert toJSON changes

* Fix tests

* Decoding test

* Add NOTE on encoding (so it stays in-tact)
2021-02-25 17:38:42 +01:00
Jaco Greeff 1803ba6a8e Expand ETH derivation tests (#892) 2021-02-25 17:38:22 +01:00
Github Actions ae4b166c2f [CI Skip] release/beta 5.7.2-6
skip-checks: true
2021-02-25 13:04:22 +00:00
Jaco Greeff 38d6136aa8 Base64 without Buffer (#891) 2021-02-25 13:58:28 +01:00
Github Actions 02fea57a48 [CI Skip] release/beta 5.7.2-5
skip-checks: true
2021-02-25 12:40:07 +00:00
Jaco Greeff 882826a7e3 ETH derive to u8a (#890)
* ETH derive to u8a

* assert

* Extract hash

* link

* hdEthereum

* Adjust tests

* cosmetics

* Remove unused parts
2021-02-25 13:34:01 +01:00
Github Actions 56a7788e28 [CI Skip] release/beta 5.7.2-4
skip-checks: true
2021-02-25 09:39:38 +00:00
Jaco Greeff 82c4b75a12 Cleanup elliptic imports (#889)
* Cleanup elliptic imports

* Additional

* Cleanups

* HydraDX

* Flatten
2021-02-25 10:34:37 +01:00
Github Actions ca3c932701 [CI Skip] release/beta 5.7.2-3
skip-checks: true
2021-02-24 16:34:21 +00:00
Jaco Greeff 76b155c269 Bump deps (#888) 2021-02-24 17:28:53 +01:00
Github Actions faed35e208 [CI Skip] release/beta 5.7.2-2
skip-checks: true
2021-02-24 14:56:42 +00:00
Antoine EstienneandJaco Greeff c46cd5030e Implement first eth hd derivation test (#858)
* implement first eth hd test

* lint

* added gerald test address

* test now passes

* started implementing sith local secp256k1

* Pass publicKey through on verify

* Some test fixes

* renamed tweakadd

* added suggestions

* remove logs and complete test for tweakAdd

* lint

* reviewed

* solve linting problems

* relocate hd package

* Apply suggestions from code review

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

* added asset for tolegacyseed

* yarn.lock and linting

* remove isUint8 util

* fix tests and added tests

* fixed test

Co-authored-by: Jaco Greeff <jacogr@gmail.com>
2021-02-24 15:50:12 +01:00
Github Actions c7e474cdc6 [CI Skip] release/beta 5.7.2-1
skip-checks: true
2021-02-24 08:14:27 +00:00
Jaco Greeff ac7a678a30 Bump deps (#887)
* Bump deps

* Add missing ss58
2021-02-24 09:08:49 +01:00
Github Actions f956759865 [CI Skip] release/beta 5.7.2-0
skip-checks: true
2021-02-24 07:14:06 +00:00
Jaco Greeff 2768b70d43 Run ss58 check multiple times (update existing) (#880)
* Run ss58 check multiple times (update existing)

* Update .github/workflows/ss58-check.yml
2021-02-24 08:08:23 +01:00
Github Actions cc4a579905 [CI Skip] release/stable 5.7.1
skip-checks: true
2021-02-21 08:13:58 +00:00
Jaco Greeff 450b7b8e8b 5.7 (#885)
* 5.7

* Update CHANGELOG.md
2021-02-21 09:08:07 +01:00
Github Actions a248bc9f96 [CI Skip] release/beta 5.6.4-1
skip-checks: true
2021-02-20 10:56:44 +00:00
Jaco Greeff 35f677f2e9 Additional substrate test vectors for ss58 (#884) 2021-02-20 11:50:56 +01:00
Github Actions fccba5d93d [CI Skip] release/beta 5.6.4-0
skip-checks: true
2021-02-19 09:48:00 +00:00
Jaco Greeff ae172e2c53 Pass publicKey through on verify (#883)
* Pass publicKey through on verify

* Some test fixes

* Adjust tests

* Explicit public

* Additional failing tests
2021-02-19 10:43:19 +01:00
Github Actions aa9bf0780b [CI Skip] release/stable 5.6.3
skip-checks: true
2021-02-16 11:22:45 +00:00
Jaco Greeff 11f1d8057b 5.6.3 (#882) 2021-02-16 12:17:13 +01:00
Github Actions e2f1e7c033 [CI Skip] release/beta 5.6.3-2
skip-checks: true
2021-02-10 07:22:11 +00:00
Jaco Greeff bb213425f8 Align 2258 with master registry (#879) 2021-02-10 08:16:27 +01:00
Github Actions 162596ed93 [CI Skip] release/beta 5.6.3-1
skip-checks: true
2021-02-10 06:51:55 +00:00
nahuseyoumandJaco Greeff aa3ba246a7 Reserving 65 for Aventus based on the new extended range (#871)
* Reserving 46 based on the new extended range

* Update index.ts

* Updating to match new prefix

Co-authored-by: Jaco Greeff <jacogr@gmail.com>
2021-02-10 07:45:53 +01:00
Github Actions baf65438fe [CI Skip] release/beta 5.6.3-0
skip-checks: true
2021-02-09 16:42:03 +00:00
Jaco Greeff 8b443dfa4b Add pair.unlock as equivalent to pair.lock (#877) 2021-02-09 17:35:59 +01:00
Github Actions 12f3f8695f [CI Skip] release/stable 5.6.2
skip-checks: true
2021-02-08 16:23:58 +00:00
Jaco Greeff 964d308491 5.6.2 (#876) 2021-02-08 17:18:10 +01:00
Github Actions a1bf03e40e [CI Skip] release/beta 5.6.2-0
skip-checks: true
2021-02-08 09:12:47 +00:00
Jaco Greeff ff940e5d26 Ensure only named networks are filtered (#875) 2021-02-08 10:07:57 +01:00
Github Actions e2fa0ad11f [CI Skip] release/stable 5.6.1
skip-checks: true
2021-02-07 11:20:47 +00:00
Jaco Greeff 654e44aa99 5.6 (#874)
* 5.6

* bnSqrt opt

* Additional sqrt tests

* Adjust bnSqrt input types

* test-case attributions
2021-02-07 12:14:55 +01:00
Github Actions 476689f615 [CI Skip] release/beta 5.5.3-4
skip-checks: true
2021-02-07 08:58:19 +00:00
Raoul Millais fc1582aa70 Fix yarn add instructions in x-global README (#873) 2021-02-07 09:52:42 +01:00
Github Actions a616b84045 [CI Skip] release/beta 5.5.3-3
skip-checks: true
2021-02-06 16:10:42 +00:00
Jaco Greeff 73708b72c7 Allow double-byte ss58 (#868)
* Allow double-byte ss58

* Update keyring tests (non-68)

* Range check

* Fixup tests and encoding

* Adjust keyring test

* Adjust

* Assert format

* Additionl subkey equivalency tests

* ecdsa tests

* Remove invalid test

* UpdateAssert of reserved

* Cleanups

* cleanups

* Last test for Substrate equality

* crosscheck update

* network null

* network
2021-02-06 17:05:54 +01:00
Github Actions 8f0807ddbe [CI Skip] release/beta 5.5.3-2
skip-checks: true
2021-02-06 15:51:45 +00:00
Jaco Greeff 5547f885be ss58 alignment 2021-02-06 16:46:18 +01:00
Github Actions 5f8d521c6a [CI Skip] release/beta 5.5.3-1
skip-checks: true
2021-02-04 10:31:52 +00:00
Jaco Greeff 51a169a88a Tests for vrf{Sign, Verify} (#870) 2021-02-04 11:26:19 +01:00
Github Actions ad89ed5f3d [CI Skip] release/beta 5.5.3-0
skip-checks: true
2021-02-04 07:56:15 +00:00
Jaco Greeff ca1362c595 Cleanup Buffer.from usages, expand tests (#869)
* Cleanup Bffer.from usages, expand tests

* validate mnemonic tests & cleanups
2021-02-04 08:50:07 +01:00
Github Actions 9621d90613 [CI Skip] release/stable 5.5.2
skip-checks: true
2021-02-02 14:46:59 +00:00
Jaco Greeff 50efeb06d1 5.5.2 (#867) 2021-02-02 15:41:25 +01:00
Github Actions e236acc29d [CI Skip] release/beta 5.5.2-1
skip-checks: true
2021-02-02 14:26:05 +00:00
Jaco Greeff 1062ace58d BN_{MILLION, BILLION} (#866)
* BN_{MILLION, BILLION}

* Add BN(2-9)

* adjust

* inline

* BN_TWO

* BN_ZERO

* BN_ONE gets used in return
2021-02-02 15:20:31 +01:00
Github Actions 298a901921 [CI Skip] release/beta 5.5.2-0
skip-checks: true
2021-02-01 13:45:17 +00:00
Jaco Greeff c2f453481c Additional hdLedger tests (#863) 2021-02-01 14:39:14 +01:00
Github Actions 54e6b61972 [CI Skip] release/stable 5.5.1
skip-checks: true
2021-01-31 07:57:36 +00:00
Jaco Greeff c52a7b1e64 5.5 (#862)
* 5.5

* Remove extra arg from mnemonicToLegacySeed
2021-01-31 08:51:43 +01:00
Github Actions 749cd2e381 [CI Skip] release/beta 5.4.5-1
skip-checks: true
2021-01-30 19:07:49 +00:00
Jaco Greeff 24b1790c99 Add hmac{Sha256, 512} (#861)
* Add hmac{Sha256, 512}

* Adjust

* private hmac
2021-01-30 20:02:21 +01:00
Github Actions 62823635b0 [CI Skip] release/beta 5.4.5-0
skip-checks: true
2021-01-30 17:38:17 +00:00
Jaco Greeff bc84220108 Add Ledger-compatible derivation (#860)
* Add Ledger-compatible derivation

* Export hd from root

* Renames
2021-01-30 18:33:15 +01:00
Jaco Greeff 5158951326 Give bot permissions to post issues 2021-01-26 16:36:49 +01:00
Github Actions 500b739ddd [CI Skip] release/stable 5.4.4
skip-checks: true
2021-01-24 15:44:51 +00:00
Jaco Greeff b741d228ac Use xglobal everywhere 2021-01-24 16:40:04 +01:00
Jaco Greeff 437ff8b51d Use x-gobal in node polyfills 2021-01-24 16:39:22 +01:00
Github Actions 354dd0a7a4 [CI Skip] release/stable 5.4.3
skip-checks: true
2021-01-24 15:03:21 +00:00
Jaco Greeff 3804123ca6 Remove browser.ts global reference (#856)
* Remove browser.ts global reference

* fallback text

* formatting

* Additional formatting

* global > self > window > this

* Add x-global package

* Update tests

* Correct jest mapping
2021-01-24 15:58:42 +01:00
Github Actions bbc752e475 [CI Skip] release/stable 5.4.2
skip-checks: true
2021-01-24 11:13:49 +00:00
Jaco Greeff 80f69b88b2 5.4.2 (#855) 2021-01-24 12:09:14 +01:00
Github Actions a02eab478e [CI Skip] release/stable 5.4.1
skip-checks: true
2021-01-24 07:58:18 +00:00
Jaco Greeff 22fdb9a1f9 5.4 (#854) 2021-01-24 08:53:32 +01:00
Github Actions 496d2123ed [CI Skip] release/beta 5.3.2-8
skip-checks: true
2021-01-23 08:38:47 +00:00
Jaco Greeff 15a2e6c6cf Allow formatBalance to take array defaults (#853) 2021-01-23 09:34:04 +01:00
Github Actions 62a9a7aeb5 [CI Skip] release/beta 5.3.2-7
skip-checks: true
2021-01-22 09:34:00 +00:00
Jaco Greeff 8541088893 Bump wasm (#851) 2021-01-22 10:28:34 +01:00
Github Actions e558cf8f7f [CI Skip] release/beta 5.3.2-6
skip-checks: true
2021-01-21 19:30:31 +00:00
Jaco Greeff 01827deaf5 EDCSA derive test (#850) 2021-01-21 20:24:48 +01:00
Github Actions 6d71677c17 [CI Skip] release/beta 5.3.2-5
skip-checks: true
2021-01-21 12:35:26 +00:00
Jaco Greeff ee42a717aa Bump wasm (#848) 2021-01-21 13:30:39 +01:00
Github Actions cfa8ab7ab6 [CI Skip] release/beta 5.3.2-4
skip-checks: true
2021-01-21 10:39:31 +00:00
Adam DossaandAdam Dossa 4ecd14c187 Update ledger key to polymesh (from polymath) (#847)
Co-authored-by: Adam Dossa <adamdossa@Adams-MacBook-Pro.local>
2021-01-21 11:34:17 +01:00
Github Actions d9318bc917 [CI Skip] release/beta 5.3.2-3
skip-checks: true
2021-01-20 13:17:28 +00:00
Jaco Greeff 6f6db63580 Add vrf{Sign, Verify} to kering interface (#846) 2021-01-20 14:11:50 +01:00
Github Actions ebd1e64694 [CI Skip] release/beta 5.3.2-2
skip-checks: true
2021-01-20 11:59:45 +00:00
Jaco Greeff f12aa92383 Add schnorrkelVrf{Sign, Verify} functions (#845)
* Add schnorrkelVrf{Sign, Verify} functions

* Apply suggestions from code review
2021-01-20 12:54:59 +01:00
Github Actions 2df0638b19 [CI Skip] release/beta 5.3.2-1
skip-checks: true
2021-01-19 20:36:18 +00:00
Jaco Greeff 542f484703 Move x-rxjs from @polkadot/api (#844)
* Move x-rxjs from @polkadot/api

* yarn

* x-rxjs bump

* jest config
2021-01-19 21:30:42 +01:00
Github Actions f9dbedb93a [CI Skip] release/beta 5.3.2-0
skip-checks: true
2021-01-19 20:16:43 +00:00
Jaco Greeff 2492ae5d60 Update ss58 (#843) 2021-01-19 21:11:05 +01:00
Jaco Greeff c5ab1c0e1a Update CHANGELOG.md 2021-01-17 15:57:20 +01:00
Github Actions fa9a7c197b [CI Skip] release/stable 5.3.1
skip-checks: true
2021-01-17 14:25:00 +00:00
Jaco Greeff 05b9f13a45 5.3 (#839)
* 5.3

* Update CHANGELOG.md
2021-01-17 15:20:03 +01:00
Github Actions b4511920b0 [CI Skip] release/beta 5.2.4-7
skip-checks: true
2021-01-15 17:54:46 +00:00
Jaco Greeff 4d6ee85071 ss58 Updates (#829)
* ss58 Updates

* Uniarts
2021-01-15 18:49:12 +01:00
Github Actions 3f96caf54d [CI Skip] release/beta 5.2.4-6
skip-checks: true
2021-01-14 21:42:41 +00:00
Jaco Greeff 0b804ff776 Move @polkadot/hw-{ledger, ledger-transports} (#836)
* Move @polkadot/{ledger, ledger-transports}

* yarn rewrite

* Move to hw-*

* Update header
2021-01-14 22:37:51 +01:00
Github Actions 0b1cec4e2d [CI Skip] release/beta 5.2.4-5
skip-checks: true
2021-01-14 14:51:40 +00:00
Thibaut Sardan dd4bf9feba add hasLedgerSupport prop to networks (#835) 2021-01-14 15:46:21 +01:00
Github Actions 4d41bbcf04 [CI Skip] release/beta 5.2.4-4
skip-checks: true
2021-01-13 23:17:34 +00:00
Adam DossaandAdam Dossa 04780bda5c Add Polymesh Ledger Integration (#834)
* Add Polymesh Ledger Integration

* Revert "Add Polymesh Ledger Integration"

This reverts commit e0f901d475fca258c56456e459c4ebc499f11d91.

* Add genesisHash

* Fix hash formating

Co-authored-by: Adam Dossa <adamdossa@Adams-MacBook-Pro.local>
2021-01-14 00:11:29 +01:00
Github Actions becc991dc8 [CI Skip] release/beta 5.2.4-3
skip-checks: true
2021-01-12 14:35:35 +00:00
Jaco Greeff 815756d168 ss58 29 (#833) 2021-01-12 15:29:41 +01:00
Github Actions c960cee703 [CI Skip] release/beta 5.2.4-2
skip-checks: true
2021-01-09 10:49:29 +00:00
Jaco Greeff c7da06215d Bump deps (#828) 2021-01-09 11:43:54 +01:00
Jaco Greeff 55053f76a9 Update index.ts (#831) 2021-01-09 11:30:13 +01:00
Github Actions 19fb9dafc9 [CI Skip] release/beta 5.2.4-1
skip-checks: true
2021-01-03 10:26:20 +00:00
Jaco Greeff f0f0dec8ea 2021 (#824) 2021-01-03 11:20:22 +01:00
Github Actions 649b2f5e4a [CI Skip] release/beta 5.2.4-0
skip-checks: true
2020-12-31 11:00:45 +00:00
Jaco Greeff af06ec22c5 pre swap 2020-12-31 11:55:21 +01:00
Github Actions bb976e746a [CI Skip] release/stable 5.2.3
skip-checks: true
2020-12-31 09:59:04 +00:00
Jaco Greeff 814f8418f2 Fix nacl imports (#823)
* Fix nacl imports

* patch

* rewrite
2020-12-31 10:54:31 +01:00
Github Actions a00dd1e4ca [CI Skip] release/beta 5.2.3-1
skip-checks: true
2020-12-27 12:02:49 +00:00
Jaco Greeff 66e24c3750 pre 2020-12-27 12:57:56 +01:00
Github Actions 1ff4c58fe3 [CI Skip] release/stable 5.2.2
skip-checks: true
2020-12-27 11:55:30 +00:00
Jaco Greeff 5ff15b18a1 Filter ss58 testnets (#822)
* Filter ss58 testnets

* Remove genesisHash testnet

* Ignore reserved
2020-12-27 12:50:18 +01:00
Github Actions 83975e9235 [CI Skip] release/stable 5.2.1
skip-checks: true
2020-12-27 07:44:02 +00:00
Jaco Greeff 3adf475ef4 5.2 (#821)
* 5.2

* Bump
2020-12-27 08:39:14 +01:00
Github Actions ccc6edebbb [CI Skip] release/beta 5.1.2-3
skip-checks: true
2020-12-25 08:58:15 +00:00
Jaco Greeff 0d7ed7420d Add keccak512 (#820)
* Add keccak512

* dedupe

* Adjust hex test

* ss58

* fix expectation
2020-12-25 09:52:49 +01:00
Github Actions dbf1837b97 [CI Skip] release/beta 5.1.2-2
skip-checks: true
2020-12-24 07:56:46 +00:00
Jaco Greeff 9ae738ac51 Add Valiu (#818) 2020-12-24 08:51:22 +01:00
Github Actions a4000efc43 [CI Skip] release/beta 5.1.2-1
skip-checks: true
2020-12-23 11:03:53 +00:00
Jaco Greeff 7871a17942 Add arrayFlatten (#816)
* Add arrayFlatten

* Add test for arrayFlatten

* Add arrayChunk

* Update packages/util/src/array/chunk.ts
2020-12-23 11:58:59 +01:00
Github Actions 5aad1d09b2 [CI Skip] release/beta 5.1.2-0
skip-checks: true
2020-12-22 09:22:25 +00:00
Jaco Greeff 4eb5d7dfd3 Bump deps (#815)
* Bump deps

* Rewrite
2020-12-22 10:16:34 +01:00
Github Actions 0a841e8f4a [CI Skip] release/stable 5.1.1
skip-checks: true
2020-12-19 14:23:05 +00:00
Jaco Greeff 53ffd0c9f0 5.1 (#813) 2020-12-19 15:17:01 +01:00
Github Actions 5d3a9f2e2e [CI Skip] release/beta 5.0.2-9
skip-checks: true
2020-12-19 10:41:44 +00:00
Jaco Greeff 9d6f38edb3 Bump deps 2020-12-19 11:36:55 +01:00
Github Actions 9e5e032e1d [CI Skip] release/beta 5.0.2-8
skip-checks: true
2020-12-18 10:24:04 +00:00
Jaco Greeff 31426858c6 detectPackage import revert 2020-12-18 11:18:02 +01:00
Github Actions 46b4ca0c91 [CI Skip] release/beta 5.0.2-7
skip-checks: true
2020-12-17 13:02:30 +00:00
Jaco Greeff f4cb68c567 Mark detectPackage as sideEffect 2020-12-17 13:57:41 +01:00
Github Actions ab4b234510 [CI Skip] release/beta 5.0.2-6
skip-checks: true
2020-12-17 12:19:30 +00:00
Jaco Greeff d5151c4f01 Adjust detectPackage 2020-12-17 13:14:38 +01:00
Jaco Greeff 6df4689aa3 Cleanup detectPackage 2020-12-17 13:05:26 +01:00
Github Actions 9727a6a9a5 [CI Skip] release/beta 5.0.2-5
skip-checks: true
2020-12-17 11:42:14 +00:00
Jaco Greeff 7f00182fd9 Bump wasm-crypto 2020-12-17 12:37:21 +01:00
Github Actions 261b0add27 [CI Skip] release/beta 5.0.2-4
skip-checks: true
2020-12-17 11:25:06 +00:00
Jaco Greeff 5d6e753384 sideEffects 2020-12-17 12:20:15 +01:00
Github Actions 15c2e79e6e [CI Skip] release/beta 5.0.2-3
skip-checks: true
2020-12-17 11:12:29 +00:00
Jaco Greeff f763a66219 Allow detectPackage with a function (#811) 2020-12-17 12:07:00 +01:00
Jaco Greeff 1061df6e4a Adjust blakejs commonjs imports (#809) 2020-12-17 12:03:21 +01:00
Github Actions 4c121e6f50 [CI Skip] release/beta 5.0.2-2
skip-checks: true
2020-12-17 10:52:01 +00:00
Jaco Greeff 74b3a04c4a Dedupe 2020-12-17 11:46:57 +01:00
Github Actions e4488463ba [CI Skip] release/beta 5.0.2-1
skip-checks: true
2020-12-16 14:48:44 +00:00
Jaco Greeff c6fd67b5d5 detectPackage with import.meta.url (#810)
* detectPackage with import.meta.url

* Bump dev

* Remove duplicate detectPackage

* Fix detectPackage import
2020-12-16 15:44:00 +01:00
Github Actions e5dc596867 [CI Skip] release/beta 5.0.2-0
skip-checks: true
2020-12-15 14:54:43 +00:00
Jaco Greeff a28f8dad37 detectPackage cleanups (#807) 2020-12-15 15:49:00 +01:00
Github Actions 7855658bfd [CI Skip] release/stable 5.0.1
skip-checks: true
2020-12-13 14:19:15 +00:00
Jaco Greeff de14a85817 5.0 (#800)
* 5.0

* Update CHANGELOG.md

* CHANGELOG
2020-12-13 15:13:40 +01:00
Github Actions de2206bb27 [CI Skip] release/beta 4.2.2-21
skip-checks: true
2020-12-13 12:50:35 +00:00
Jaco Greeff 451a7aecde Adjust memoize normalize for BigInt (#806)
* Adjust memoize normalizer to cater for BigInt

* Update memomize typings

* cleanups

* Renames
2020-12-13 13:46:22 +01:00
Github Actions 5170194105 [CI Skip] release/beta 4.2.2-20
skip-checks: true
2020-12-13 12:11:48 +00:00
Jaco Greeff b2286ac06a Add memoize util (#805)
* Add memoize util

* Allow for instanceId & normalize overrides

* memoize tests
2020-12-13 13:05:58 +01:00
Github Actions 57cc6d6d46 [CI Skip] release/beta 4.2.2-19
skip-checks: true
2020-12-13 09:40:57 +00:00
Jaco Greeff 6e1b5901b3 Update .123trigger 2020-12-13 10:36:28 +01:00
Github Actions 203db7467f [CI Skip] release/beta 4.2.2-18
skip-checks: true
2020-12-13 09:33:25 +00:00
Jaco Greeff aa7d4838c7 Bump wasm-crypto (#803) 2020-12-13 10:28:45 +01:00
Github Actions b778f606c5 [CI Skip] release/beta 4.2.2-17
skip-checks: true
2020-12-12 18:00:15 +00:00
Jaco Greeff 45146efce8 Limit logger size via DEBUG_MAX (#802)
* Limit logger size via DEBUG_MAX

* Any negative disables

* Node imports

* Update test
2020-12-12 18:54:31 +01:00
Github Actions 9229f9f295 [CI Skip] release/beta 4.2.2-16
skip-checks: true
2020-12-12 12:35:27 +00:00
Jaco Greeff 2e1c29a5a8 Bump wasm-crypto (#801) 2020-12-12 13:30:36 +01:00
Github Actions 79f925b589 [CI Skip] release/beta 4.2.2-15
skip-checks: true
2020-12-11 22:34:04 +00:00
Jaco Greeff 572c2789cc Bump dev 2020-12-11 23:28:34 +01:00
Github Actions 913f9636ba [CI Skip] release/beta 4.2.2-14
skip-checks: true
2020-12-11 16:42:05 +00:00
Jaco Greeff 83e5592305 Bump WASM, re-add tests 2020-12-11 17:39:58 +01:00
Github Actions b7e579f6b8 [CI Skip] release/beta 4.2.2-13
skip-checks: true
2020-12-11 16:21:40 +00:00
Jaco Greeff c211b811a6 Skip tests until wasm updated 2020-12-11 17:19:35 +01:00
Jaco Greeff 4c02b25a2d Small adjustments for esm (& default build) (#798) 2020-12-11 17:08:16 +01:00
Github Actions 28b2435019 [CI Skip] release/beta 4.2.2-12
skip-checks: true
2020-12-11 08:58:02 +00:00
Jaco Greeff a0e5d60a0a Bump dev 2020-12-11 09:53:45 +01:00
Github Actions 311eceec0d [CI Skip] release/beta 4.2.2-11
skip-checks: true
2020-12-10 16:24:24 +00:00
Jaco Greeff cf24dcdf22 Build esm alongside (unused, but published) (#797) 2020-12-10 17:19:19 +01:00
Github Actions ead3eceef4 [CI Skip] release/beta 4.2.2-10
skip-checks: true
2020-12-10 14:32:25 +00:00
Jaco Greeff 59df9aefc4 Bump wasm (#795)
* Bump wasm

* Bump wasm

* Bump

* Network kilt, etc.
2020-12-10 15:28:02 +01:00
Github Actions cb97cc1786 [CI Skip] release/beta 4.2.2-9
skip-checks: true
2020-12-09 18:19:43 +00:00
Jaco Greeff cf18ecf193 Bump dev (prefer esm in esm mode) (#794) 2020-12-09 19:14:26 +01:00
Github Actions 6e6b13f29a [CI Skip] release/beta 4.2.2-8
skip-checks: true
2020-12-09 16:42:57 +00:00
Jaco Greeff f75a16159d Bump dev (esm type import changes) (#793) 2020-12-09 17:37:15 +01:00
Github Actions b8fe6be9cc [CI Skip] release/beta 4.2.2-7
skip-checks: true
2020-12-09 15:37:44 +00:00
Jaco Greeff 9993325679 Bump WASM, allow esm alongside cjs (#792) 2020-12-09 16:32:12 +01:00
Github Actions ce8fe9f49d [CI Skip] release/beta 4.2.2-6
skip-checks: true
2020-12-09 10:07:34 +00:00
Jaco Greeff 408a6706b1 Adjust imports (#791) 2020-12-09 11:02:55 +01:00
Github Actions 79c7fa3b75 [CI Skip] release/beta 4.2.2-5
skip-checks: true
2020-12-08 10:30:14 +00:00
Jaco Greeff e9713b6c93 Remove --fix on CI (#790) 2020-12-08 11:25:28 +01:00
Github Actions 706a3e0cc2 [CI Skip] release/beta 4.2.2-4
skip-checks: true
2020-12-07 15:19:14 +00:00
Jaco Greeff b1a40516c1 Bump dev (import sorting) (#789) 2020-12-07 16:13:47 +01:00
Github Actions 7cf449074d [CI Skip] release/beta 4.2.2-3
skip-checks: true
2020-12-05 11:40:41 +00:00
Jaco Greeff 2ce7a79263 Bump deps (minor) (#786)
* Bump deps (minor)

* Update Phala
2020-12-05 12:35:10 +01:00
Github Actions cfa5660d54 [CI Skip] release/beta 4.2.2-2
skip-checks: true
2020-12-01 17:56:59 +00:00
Jaco Greeff 1256f2a54a Bump berry (#783)
* Bump berry

* rewrite
2020-12-01 18:33:29 +01:00
Github Actions 2695afa68e [CI Skip] release/beta 4.2.2-1
skip-checks: true
2020-12-01 12:29:57 +00:00
Jaco Greeff af71673c7b import type (#782) 2020-12-01 13:24:37 +01:00
Github Actions 7f489e1a99 [CI Skip] release/beta 4.2.2-0
skip-checks: true
2020-11-24 11:59:02 +00:00
Jaco Greeff 10fb33877c Bump deps (#779)
* Bump deps

* promisify
2020-11-24 12:53:12 +01:00
Github Actions 731def1f56 [CI Skip] release/stable 4.2.1
skip-checks: true
2020-11-23 11:55:30 +00:00
Jaco Greeff 06057da172 4.2 (#778)
* 4.2

* dedupe
2020-11-23 12:49:57 +01:00
Github Actions af3e79e70a [CI Skip] release/beta 4.1.2-3
skip-checks: true
2020-11-23 10:34:05 +00:00
Jaco Greeff 9e5ee72adf Link to Substrate ss58 source (#777) 2020-11-23 11:28:30 +01:00
Github Actions 6a8344020f [CI Skip] release/beta 4.1.2-2
skip-checks: true
2020-11-18 11:28:14 +00:00
Jaco Greeff a1ad6f1dd0 Dedupe bn.js (#775) 2020-11-18 12:22:38 +01:00
Github Actions 71f2b64868 [CI Skip] release/beta 4.1.2-1
skip-checks: true
2020-11-17 15:31:33 +00:00
Jaco Greeff ad7e949c8c s/Tera/Tril/ (#771)
* s/Tera/Tril/

* expentation
2020-11-17 16:26:43 +01:00
Github Actions d24241d656 [CI Skip] release/beta 4.1.2-0
skip-checks: true
2020-11-17 15:01:01 +00:00
Jaco Greeff 91d2e9bbbd s/Giga/Bill/, s/Mega/Mill/ (#770) 2020-11-17 15:54:54 +01:00
Github Actions 8acc5680ac [CI Skip] release/stable 4.1.1
skip-checks: true
2020-11-15 14:42:02 +00:00
Jaco Greeff 4d54ce4686 4.1 (#768) 2020-11-15 15:37:22 +01:00
Github Actions 441e89edd7 [CI Skip] release/beta 4.0.2-14
skip-checks: true
2020-11-15 11:49:59 +00:00
Jaco Greeff f1da9f05fb Cleanup/simplify ETH signing (#767)
* Cleanup/simplify ETH signing

* Cleanup options

* Adjust ETH tests

* checksummed

* mutli ethereum
2020-11-15 12:45:09 +01:00
Github Actions 464d2d38b4 [CI Skip] release/beta 4.0.2-13
skip-checks: true
2020-11-15 09:36:48 +00:00
Jaco Greeff 1ea282c803 Bump deps (#766) 2020-11-15 10:32:04 +01:00
Github Actions 974559bf2e [CI Skip] release/beta 4.0.2-12
skip-checks: true
2020-11-11 10:54:28 +00:00
Jaco Greeff c353003c70 Bump dev (#765) 2020-11-11 11:49:33 +01:00
Github Actions 623bde1a61 [CI Skip] release/beta 4.0.2-11
skip-checks: true
2020-11-10 16:38:24 +00:00
Jaco Greeff 67234fc013 Bumps 2020-11-10 17:32:44 +01:00
Github Actions 4a6d6d647a [CI Skip] release/beta 4.0.2-10
skip-checks: true
2020-11-10 15:12:55 +00:00
Jaco Greeff b375b6c2d5 Mark detectPackage as sideEffects (#764) 2020-11-10 16:07:53 +01:00
Github Actions 1c6fd4558c [CI Skip] release/beta 4.0.2-9
skip-checks: true
2020-11-10 14:40:14 +00:00
Antoine Estienne 3800ffd61a Add eth tests and truncate address for keccak (#763)
* add eth tests and truncate address for keccak

* lint

* refactor
2020-11-10 15:34:45 +01:00
Github Actions d447ed8fc9 [CI Skip] release/beta 4.0.2-8
skip-checks: true
2020-11-10 11:30:18 +00:00
Jaco Greeff abb1062462 Re-enable esm modules (#762) 2020-11-10 12:25:05 +01:00
Github Actions c6bdf78606 [CI Skip] release/beta 4.0.2-7
skip-checks: true
2020-11-09 21:32:14 +00:00
Jaco Greeff 7687d5bf00 Unused esnext 2020-11-09 22:26:52 +01:00
Github Actions 5b246891d7 [CI Skip] release/beta 4.0.2-6
skip-checks: true
2020-11-09 21:15:15 +00:00
Jaco Greeff 3b9617faf4 Extract detectPackage /cryptoWait as side effect (#761) 2020-11-09 22:09:53 +01:00
Github Actions aa57da0806 [CI Skip] release/beta 4.0.2-5
skip-checks: true
2020-11-09 15:34:11 +00:00
Jaco Greeff 66841bba88 Build esnext outputs (#760) 2020-11-09 16:28:42 +01:00
Github Actions 7d963e3602 [CI Skip] release/beta 4.0.2-4
skip-checks: true
2020-11-08 20:40:03 +00:00
Jaco Greeff 82b25aecfb Replace pbkdf2 (#758)
* Replace pbkdf2

* Optional length

* cleanups
2020-11-08 21:34:34 +01:00
Github Actions 9b204fc660 [CI Skip] release/beta 4.0.2-3
skip-checks: true
2020-11-08 19:57:23 +00:00
Jaco Greeff 68bcce7a27 Cleanup pbkdf2 use (#757) 2020-11-08 20:52:02 +01:00
Github Actions 3a57c7da69 [CI Skip] release/beta 4.0.2-2
skip-checks: true
2020-11-08 18:47:26 +00:00
Jaco Greeff 055c4f82f5 Adjust nacl imports (#756) 2020-11-08 19:42:13 +01:00
Github Actions 12d8b07ff1 [CI Skip] release/beta 4.0.2-1
skip-checks: true
2020-11-08 17:12:02 +00:00
Jaco Greeff f07d66562b Remove default exports (#755)
* Remove default exports

* Cleanup tests

* Exports in util

* Single secp256k1 instance

* Length check

* format check

* encoded lengths
2020-11-08 18:07:31 +01:00
Github Actions 80f28da707 [CI Skip] release/beta 4.0.2-0
skip-checks: true
2020-11-08 13:58:25 +00:00
Jaco Greeff 1aec77922f Adjust xxhash imports (only 64 used) (#753) 2020-11-08 14:52:28 +01:00
Github Actions f431f02f11 [CI Skip] release/stable 4.0.1
skip-checks: true
2020-11-08 12:49:18 +00:00
Jaco Greeff 2063183f50 4.0 (#752)
* 4.0

* Exact deps
2020-11-08 13:45:10 +01:00
Github Actions 8280af08a6 [CI Skip] release/beta 4.0.0-11
skip-checks: true
2020-11-08 11:15:38 +00:00
Jaco Greeff 8029a54508 Additional complexity adjustments (#751)
* Adjust encoder/decoder fallbacks

* Dep-dup is functions

* Complexity cleanups

* More complexity adjustments
2020-11-08 12:10:29 +01:00
Github Actions 9e5478e0c0 [CI Skip] release/beta 4.0.0-10
skip-checks: true
2020-11-08 10:25:06 +00:00
Jaco Greeff c67c1966d7 Adjust encoder/decoder fallbacks (#750)
* Adjust encoder/decoder fallbacks

* Dep-dup is functions

* Complexity cleanups
2020-11-08 11:20:22 +01:00
Github Actions e1aa096cef [CI Skip] release/beta 4.0.0-9
skip-checks: true
2020-11-07 16:16:46 +00:00
Jaco Greeff 7135941b6a Cleanups to signature verification (#749) 2020-11-07 17:11:49 +01:00
Github Actions dc24fb82a8 [CI Skip] release/beta 4.0.0-8
skip-checks: true
2020-11-07 15:05:33 +00:00
Jaco Greeff 32cfe3707e Remove jest getRandomValues polyfill (#748)
* Remove jest getRandomValues polyfill

* react-native in all x-*
2020-11-07 15:59:56 +01:00
Github Actions 97378be94e [CI Skip] release/beta 4.0.0-7
skip-checks: true
2020-11-07 14:27:52 +00:00
Jaco Greeff db0559e9c9 RN-specific getRandomValues (no node crypto) (#747)
* RN-specific getRandomValues (no node crypto)

* Use polyfilled as available

* === object
2020-11-07 15:22:42 +01:00
Github Actions 94d6a900f7 [CI Skip] release/beta 4.0.0-6
skip-checks: true
2020-11-07 10:22:24 +00:00
Jaco Greeff d751c03d45 Bump wasm-crypto (#745)
* Bump wasm-crypto

* Use x-randomvalues for randomAsU8a
2020-11-07 11:18:06 +01:00
Github Actions aef8003d50 [CI Skip] release/beta 4.0.0-5
skip-checks: true
2020-11-05 15:05:27 +00:00
Jaco Greeff 2810b35d6c Add Synesthesia to networks (#744)
* Add Synesthesia to networks

* Add networks:crosscheck to steps for PR

* Add notifications team
2020-11-05 15:59:47 +01:00
Github Actions 6148932389 [CI Skip] release/beta 4.0.0-4
skip-checks: true
2020-11-05 14:43:13 +00:00
Jaco Greeff f4889a36d4 Bump wasm (#743) 2020-11-05 15:37:38 +01:00
Github Actions e8879c0ffc [CI Skip] release/beta 4.0.0-3
skip-checks: true
2020-11-03 12:09:33 +00:00
Jaco Greeff ed64514415 Bump wasm-crypto 2020-11-03 13:04:10 +01:00
Github Actions fcc25ee2c8 [CI Skip] release/beta 4.0.0-2
skip-checks: true
2020-11-03 09:34:06 +00:00
Jaco Greeff 695e19a8a7 Remove polyfills (#739)
* Remove polyfills

* CHANGELOG

* jestConfig

* Adjust jest

* Revert explicit overrides (from base)

* Fix dev

* 4.0.0

* Bump wasm-crypto

* min/max duplication

* Split tests, update dev

* startChar

* validate params

* complexity?

* secp256k1Verify options

* sign Options

* hasher extraction
2020-11-03 10:29:22 +01:00
Jaco Greeff 384bf9a41a CodeClimate exclusions 2020-11-01 15:08:35 +01:00
Github Actions 8f24a2758e [CI Skip] release/stable 3.7.1
skip-checks: true
2020-11-01 13:49:36 +00:00
Jaco Greeff 3230663ae1 3.7 (#738)
* 3.7

* Update new rules

* RegExp

* formatBalance cleanups

* Revert

* Formatting

* fill

* format test fix

* cleanups

* Cleanups

* Expand bip39 tests

* Cleanups

* Cleanups
2020-11-01 14:44:14 +01:00
Github Actions 4a0fa7f615 [CI Skip] release/beta 3.6.2-12
skip-checks: true
2020-10-29 20:33:55 +00:00
Jaco Greeff 0f05954dc5 Move @polkadot/x-{fetch,textdecoder,textencoder,ws} (#737)
* Move @polkadot/x-{fetch,textdecoder,textencoder,ws}

* Adjust copyrights

* Fix jest aliassing

* tsconfig resolution
2020-10-29 21:28:22 +01:00
Github Actions 55f442f9fa [CI Skip] release/beta 3.6.2-11
skip-checks: true
2020-10-29 19:25:00 +00:00
Jaco Greeff 7e5edc46a3 Add Totem (ss58 = 14) (#736) 2020-10-29 20:19:30 +01:00
Github Actions d500f98fb4 [CI Skip] release/beta 3.6.2-10
skip-checks: true
2020-10-29 13:41:24 +00:00
Jaco Greeff 7b8902ce3f assertResult with undefined 2020-10-29 14:35:28 +01:00
Github Actions 98b3ad642f [CI Skip] release/beta 3.6.2-9
skip-checks: true
2020-10-29 12:33:33 +00:00
Jaco Greeff 14466e27ac assertReturn (#735) 2020-10-29 13:28:19 +01:00
Github Actions 16ffd1b467 [CI Skip] release/beta 3.6.2-8
skip-checks: true
2020-10-28 14:04:56 +00:00
Jaco Greeff ca52fd7e5b Bump dev (#733)
* Bump dev

* Rewrite
2020-10-28 14:59:36 +01:00
Github Actions ea5d3df64c [CI Skip] release/beta 3.6.2-7
skip-checks: true
2020-10-28 12:58:18 +00:00
Jaco Greeff b51ed71796 string* takes in String (class) inputs (#732) 2020-10-28 13:52:40 +01:00
Github Actions bf28507ae8 [CI Skip] release/beta 3.6.2-6
skip-checks: true
2020-10-26 22:02:25 +00:00
Jaco Greeff 6715bef24a Align JS bip39 with wasm-crypto (#730)
* Align JS bip39 with wasm-crypto

* Cleanups
2020-10-26 22:57:11 +01:00
Github Actions badbbd76cb [CI Skip] release/beta 3.6.2-5
skip-checks: true
2020-10-26 20:43:23 +00:00
Jaco Greeff 253776a510 Cleanup elliptic imports (#729) 2020-10-26 21:37:51 +01:00
Github Actions e1ef295bfa [CI Skip] release/beta 3.6.2-4
skip-checks: true
2020-10-26 19:36:31 +00:00
Jaco Greeff 73c89f4e3c Remove chalk dependency (#728) 2020-10-26 20:30:36 +01:00
Github Actions a52e0dfb16 [CI Skip] release/beta 3.6.2-3
skip-checks: true
2020-10-26 14:51:26 +00:00
Jaco Greeff 9f8ed7bb50 Remove copy-to-apps script 2020-10-26 15:46:29 +01:00
Github Actions a932f9408a [CI Skip] release/beta 3.6.2-2
skip-checks: true
2020-10-26 10:37:31 +00:00
Jaco Greeff 7907ce6dbf Bump actions, cleanups (#727) 2020-10-26 11:31:49 +01:00
Github Actions 230d510491 [CI Skip] release/beta 3.6.2-1
skip-checks: true
2020-10-23 11:10:06 +00:00
Jaco Greeff 415fd1b2d1 Bump deps (#726) 2020-10-23 13:05:45 +02:00
Github Actions 89c954216d [CI Skip] release/beta 3.6.2-0
skip-checks: true
2020-10-23 08:08:22 +00:00
Jaco Greeff b689796b25 Create .nojekyll 2020-10-23 10:03:23 +02:00
Jaco Greeff c4c18d324b Create 404.html 2020-10-23 10:02:53 +02:00
Jaco Greeff b7bf500343 Create index.html 2020-10-23 10:02:36 +02:00
Github Actions e5c6baf425 [CI Skip] release/stable 3.6.1
skip-checks: true
2020-10-18 11:56:50 +00:00
Jaco Greeff 0127899c5e 3.6 (#724) 2020-10-18 13:50:52 +02:00
Github Actions f23611cad6 [CI Skip] release/beta 3.6.0-beta.17
skip-checks: true
2020-10-18 10:58:39 +00:00
Jaco Greeff a74df109b0 Use githubusercontent (#723)
* Use githubusercontent

* crosscheck
2020-10-18 12:52:39 +02:00
Github Actions 9582013bfa [CI Skip] release/beta 3.6.0-beta.16
skip-checks: true
2020-10-17 15:01:16 +00:00
Jaco Greeff 6c148dcb3b Add ss58 output to issue (#721) 2020-10-17 16:55:43 +02:00
Jaco Greeff 65488bbff8 Bump deps (#722)
* Bump deps

* Rewrite
2020-10-17 16:53:04 +02:00
Github Actions 40cbb81d1e [CI Skip] release/beta 3.6.0-beta.15
skip-checks: true
2020-10-17 08:19:20 +00:00
Jaco Greeff 77b896054f Remove (unused) typedoc (#720)
* Remove (unused) typedoc

* rm typedoc package
2020-10-17 10:13:30 +02:00
Github Actions 89c717bd11 [CI Skip] release/beta 3.6.0-beta.14
skip-checks: true
2020-10-16 10:22:22 +00:00
Jaco Greeff b22f5643a9 Update chainx details (#718) 2020-10-16 12:16:25 +02:00
Github Actions 8d68ed3117 [CI Skip] release/beta 3.6.0-beta.13
skip-checks: true
2020-10-16 10:15:32 +00:00
Jaco Greeff 65b1c81c21 Expose all claimed/available networks (#719)
* Expose all claimed/available networks

* Expansion
2020-10-16 12:09:37 +02:00
Github Actions 28cd140cfb [CI Skip] release/beta 3.6.0-beta.12
skip-checks: true
2020-10-16 09:09:31 +00:00
Jaco Greeff 73b553fbd2 Update ss58-check.yml 2020-10-16 11:03:08 +02:00
Jaco Greeff f12075798d Update ss58-check.yml 2020-10-16 10:54:42 +02:00
Jaco Greeff 323db21306 Rename ss58-template.md to ss58-check.md 2020-10-16 10:54:12 +02:00
Jaco Greeff d54302eacc Rename ISSUE_TEMPLATE.md to ss58-template.md 2020-10-16 10:53:12 +02:00
Jaco Greeff 9a98d5b6e4 Swap to nightly runs (networkCheck) (#714)
* Swap to nightly runs (newtorkCheck)

* Update template

* Rename

* Update
2020-10-16 10:50:10 +02:00
Jaco Greeff 5ec613adf9 Delete ss58-registry.yml 2020-10-16 10:43:46 +02:00
Github Actions 567ce7955a [CI Skip] release/beta 3.6.0-beta.11
skip-checks: true
2020-10-16 08:33:42 +00:00
Jaco Greeff b185dcb072 Update with different issue creator (#713) 2020-10-16 10:28:04 +02:00
Github Actions 79010f83dc [CI Skip] release/beta 3.6.0-beta.10
skip-checks: true
2020-10-16 08:22:42 +00:00
Jaco Greeff 5354f93946 Ignore checkNetworks on normal runs (#712)
* Ignore checkNetworks on normal runs

* Every 15 min (for now)
2020-10-16 10:16:16 +02:00
Jaco Greeff e787e66ef9 Add label to nightly run 2020-10-16 09:34:09 +02:00
Jaco Greeff 440e826fed Update file path 2020-10-16 09:26:37 +02:00
Jaco Greeff d2e5e1d441 Create issue on failure of ss58 nightly run (#711) 2020-10-15 19:16:04 +02:00
Github Actions 32fc32f414 [CI Skip] release/beta 3.6.0-beta.9
skip-checks: true
2020-10-15 00:39:19 +00:00
Jaco Greeff 0a7b2a7a9f Support multipe genesisHashes (#710) 2020-10-15 02:33:18 +02:00
Github Actions c315e6fdaa [CI Skip] release/beta 3.6.0-beta.8
skip-checks: true
2020-10-14 23:52:33 +00:00
Jaco Greeff b5d9ed36e1 Add Dock genesis to networks (was avail on apps UI) (#708) 2020-10-15 01:46:22 +02:00
Github Actions f24c7983c8 [CI Skip] release/beta 3.6.0-beta.7
skip-checks: true
2020-10-14 12:58:32 +00:00
Jaco Greeff 3447cd40bf Add @polkadot/networks (#707)
* Add @polkadot/networks

* Update .github/workflows/ss58-registry.yml

* Use prefixes from @polkadot/network

* Update packages/networks/src/checkLatest.spec.ts

* Cleanups

* Auto-check fields based on schema

* typo

* language
2020-10-14 14:52:29 +02:00
Github Actions 95f4702e26 [CI Skip] release/beta 3.6.0-beta.6
skip-checks: true
2020-10-12 16:17:25 +00:00
Jake Naviasky 506142da8a Add evmToAddress and addressToEvm crypto utils. (#705) 2020-10-12 18:11:20 +02:00
Github Actions 34f6eac538 [CI Skip] release/beta 3.6.0-beta.5
skip-checks: true
2020-10-07 11:30:17 +00:00
Jaco Greeff ae1a37cdf7 Verify with MultiSignature (#703)
* Verify with MultiSignature

* Bump dev
2020-10-07 13:24:24 +02:00
Github Actions fab087bbe5 [CI Skip] release/beta 3.6.0-beta.4
skip-checks: true
2020-10-06 13:36:00 +00:00
Jaco Greeff 8608098996 Remove docs (replaced by docs repo) (#702) 2020-10-06 15:30:49 +02:00
Github Actions 220f4029b1 [CI Skip] release/beta 3.6.0-beta.3
skip-checks: true
2020-10-04 13:41:57 +00:00
Jaco Greeff d21daf1434 Bump dev (without lerna) (#701)
* Bump dev (without lerna)

* Add yarn plugins
2020-10-04 15:35:59 +02:00
Github Actions 1a4c16f797 [CI Skip] release/beta 3.6.0-beta.2
skip-checks: true
2020-10-02 12:44:29 +00:00
Jaco Greeff 975103fd3c Remove SUMMARY.md is prep for rework (#700) 2020-10-02 14:38:11 +02:00
Github Actions fb84ac7c25 [CI Skip] release/beta 3.6.0-beta.1
skip-checks: true
2020-10-01 06:47:08 +00:00
Rocco Musolino 13ae8665d5 remove doc broken link (#697) 2020-10-01 08:40:50 +02:00
Github Actions 4e8b2beb0b [CI Skip] release/beta 3.6.0-beta.0
skip-checks: true
2020-10-01 06:09:37 +00:00
Jaco Greeff dd1220ac97 s/mnemonicToBip39/mnemonicToLegacySeed/ (#699)
* s/mnemonicToBip39/mnemonicToLegacySeed/

* Update CHANGELOG.md
2020-10-01 08:03:18 +02:00
Github Actions b46308fa8f [CI Skip] release/stable 3.5.1
skip-checks: true
2020-09-27 08:05:00 +00:00
Jaco Greeff c366e637e9 3.5 (#694)
* 3.5

* Update CHANGELOG.md
2020-09-27 09:58:54 +02:00
Jaco Greeff 81acc81ef7 Change decimals, move unit (#695)
* Change decimals, move unit

* CHANGELOG
2020-09-27 09:49:47 +02:00
Github Actions eb7270ff3f [CI Skip] release/beta 3.5.0-beta.15
skip-checks: true
2020-09-25 15:12:38 +00:00
Jaco Greeff 30198d1a6d Don't decode on unlocked 2020-09-25 17:06:04 +02:00
Github Actions 2fc078d994 [CI Skip] release/beta 3.5.0-beta.14
skip-checks: true
2020-09-25 11:17:25 +00:00
Jaco Greeff bd1735cafb Keypair recoding should decode, then encode (#693)
* Keypair recoding should decode, then encode

* Add tests, align createFromJson naming
2020-09-25 13:11:34 +02:00
Github Actions ca73e5bc4d [CI Skip] release/beta 3.5.0-beta.13
skip-checks: true
2020-09-24 13:29:20 +00:00
Jaco Greeff aff78c2e30 Adjust KeyringInstance 2020-09-24 15:23:14 +02:00
Github Actions fbd454eb5a [CI Skip] release/beta 3.5.0-beta.12
skip-checks: true
2020-09-24 10:59:49 +00:00
Jaco Greeff ce964d2f12 Bump deps (#692)
* Bump deps

* Linting
2020-09-24 12:53:57 +02:00
Github Actions 2c26bc61da [CI Skip] release/beta 3.5.0-beta.11
skip-checks: true
2020-09-24 06:30:00 +00:00
Jaco Greeff 4111122cba JSON pair creation without addition (#691)
* JSON pair creation without addition

* Linting

* create test
2020-09-24 08:23:41 +02:00
Github Actions e1e95dc6b3 [CI Skip] release/beta 3.5.0-beta.10
skip-checks: true
2020-09-20 08:11:31 +00:00
Jaco Greeff e7c665e5da Add isBase{32, 58, 64} utils (#689)
* Add isBase{32, 58, 64} utils

* Allow empty inputs

* Add base64{Trim, Pad}

* isBase64

* Update assert messages

* Cleaup ifsCompat checks
2020-09-20 10:05:38 +02:00
Github Actions 301eb587cb [CI Skip] release/beta 3.5.0-beta.9
skip-checks: true
2020-09-18 13:15:50 +00:00
Jaco Greeff 5c886b0f81 TextEncoder/TextDecoder from polkadot-js (#686) 2020-09-18 15:09:25 +02:00
Jaco Greeff 56a79924a0 SPDX (#687) 2020-09-17 16:13:39 +02:00
Github Actions beef1b38ed [CI Skip] release/beta 3.5.0-beta.8
skip-checks: true
2020-09-16 07:02:28 +00:00
Jaco Greeff ce46a68187 Bump deps (#684) 2020-09-16 08:56:19 +02:00
Github Actions 94dc2d76b3 [CI Skip] release/beta 3.5.0-beta.7
skip-checks: true
2020-09-13 11:22:21 +00:00
Jaco Greeff dcdde1cf4b Bump deps (#682) 2020-09-13 13:13:09 +02:00
Github Actions e3a9099b58 [CI Skip] release/beta 3.5.0-beta.6
skip-checks: true
2020-09-09 16:52:47 +00:00
Jaco Greeff fb03ff3994 Bump deps (#681) 2020-09-09 18:46:23 +02:00
Github Actions 1d42fbf2bf [CI Skip] release/beta 3.5.0-beta.5
skip-checks: true
2020-09-09 07:53:48 +00:00
Lovesh Harchandani c0e4b1b93e Add Dock network id for address generation (#640)
Taking 21 and 22 for testnet and mainnet

Signed-off-by: lovesh <lovesh.bond@gmail.com>
2020-09-09 09:47:33 +02:00
Github Actions 139f3f90b0 [CI Skip] release/beta 3.5.0-beta.4
skip-checks: true
2020-09-08 14:45:23 +00:00
Jaco Greeff cf6fae8e1d ed25519 from dev mnemonic test (#680) 2020-09-08 16:39:01 +02:00
Github Actions f8d69736c1 [CI Skip] release/beta 3.5.0-beta.3
skip-checks: true
2020-09-08 08:41:43 +00:00
Jaco Greeff a4322cb99a Rewrite yarn.lock (#679) 2020-09-08 10:35:33 +02:00
Github Actions 9445006127 [CI Skip] release/beta 3.5.0-beta.2
skip-checks: true
2020-09-06 16:15:20 +00:00
Jaco Greeff aeeaa91752 Bump deps (#677) 2020-09-06 18:09:35 +02:00
Github Actions 52fb4ac863 [CI Skip] release/beta 3.5.0-beta.1
skip-checks: true
2020-09-05 06:06:51 +00:00
Jaco Greeff 2a000a2a14 Bump deps (#676) 2020-09-05 08:00:53 +02:00
Github Actions 97fe3b2ea3 [CI Skip] release/beta 3.5.0-beta.0
skip-checks: true
2020-09-03 12:50:58 +00:00
Jaco Greeff 9b8a782d58 Bump dev (#675) 2020-09-03 14:44:24 +02:00
Github Actions b56e40ea5b [CI Skip] release/stable 3.4.1
skip-checks: true
2020-08-31 07:08:33 +00:00
Jaco Greeff 37d1bcb6eb 3.4 (#674) 2020-08-31 09:00:57 +02:00
Github Actions f2b8c1fb4e [CI Skip] release/beta 3.4.0-beta.3
skip-checks: true
2020-08-28 12:19:52 +00:00
Jaco Greeff 92cc8fc4e3 Add isWasm util (#673) 2020-08-28 14:12:22 +02:00
Github Actions 701bd9335d [CI Skip] release/beta 3.4.0-beta.2
skip-checks: true
2020-08-27 11:26:48 +00:00
Jaco Greeff d176c74715 Bump wasm to 1.4.1 (#672) 2020-08-27 13:19:36 +02:00
Github Actions 0bf7c799f3 [CI Skip] release/beta 3.4.0-beta.1
skip-checks: true
2020-08-26 08:52:16 +00:00
Jaco Greeff 2f7d5cd4e1 Bump deps (#670)
* Bump deps

* Bump crypto

* Bump berry

* Debump markdown plugin

* Explicit add of typedoc plugins

* Bump dev (typedoc exec)

* Bump md
2020-08-26 10:46:33 +02:00
Github Actions c42b517293 [CI Skip] release/beta 3.4.0-beta.0
skip-checks: true
2020-08-25 19:22:10 +00:00
Jaco Greeff e5dd55e419 Allow for WASM-as-available mnemonicToBip39 call (#669) 2020-08-25 21:16:22 +02:00
Github Actions 83fdd11c59 [CI Skip] release/stable 3.3.1
skip-checks: true
2020-08-24 07:11:21 +00:00
Jaco Greeff 08de8ce25a 3.3 (#668) 2020-08-24 09:05:24 +02:00
Github Actions 800bafc00c [CI Skip] release/beta 3.3.0-beta.2
skip-checks: true
2020-08-22 11:38:10 +00:00
Jaco Greeff 3b383b97ca Add addressRaw to keyring interface (#667)
* addressRaw to keyring interface

* Typos

* nobody

* Slice -20 for Ethereum

* addressRaw tests
2020-08-22 13:32:14 +02:00
Github Actions b381c09ecf [CI Skip] release/beta 3.3.0-beta.1
skip-checks: true
2020-08-18 09:45:16 +00:00
Jaco Greeff a53008fd67 Bump deps (#665) 2020-08-18 11:39:52 +02:00
Github Actions 899056c5a2 [CI Skip] release/beta 3.3.0-beta.0
skip-checks: true
2020-08-17 17:59:41 +00:00
Jaco Greeff 8554d47030 Ethereum keypair signing & verification (#664)
* Ethereum keypair signing & verification

* Verify against hashes expanded

* Adjust via flags

* ss58 encoding for 33-byte publicKey

* ecdsa types stores address as raw publicKey

* Adjust for hash lengths

* Adjust expand/compress specs
2020-08-17 19:52:44 +02:00
Github Actions 9808f58540 [CI Skip] release/stable 3.2.1
skip-checks: true
2020-08-17 10:23:06 +00:00
Jaco Greeff 7228100835 3.2 (#663) 2020-08-17 12:17:44 +02:00
Github Actions 08c1b413d2 [CI Skip] release/beta 3.2.0-beta.4
skip-checks: true
2020-08-17 09:34:41 +00:00
Jaco Greeff 27ae11860d Add Ethereum-compatible seed from mnemonic (#662)
* Add Ethereum-compatible seed from mnemonic

* Change encode signature to allow publicKeys

* Make CC happier
2020-08-17 11:28:59 +02:00
Github Actions 9cc984e8ae [CI Skip] release/beta 3.2.0-beta.3
skip-checks: true
2020-08-14 10:48:37 +00:00
Jaco Greeff d352782927 Ethereum keypair support (#661)
* Ethereum keypair support

* keypair support from seed

* Signature verification

* Cleanups

* Cleanup encode (no extra toLower)

* u8aToU8a

* Simulate random failure with range

* Cleanup BN conversions
2020-08-14 12:41:56 +02:00
Jaco Greeff 6e4a5281ed Bump deps (#660) 2020-08-12 17:02:26 +02:00
Github Actions d11f6d9307 [CI Skip] release/beta 3.2.0-beta.2
skip-checks: true
2020-08-11 14:49:56 +00:00
Jaco Greeff 61b57687af Ethereum address utils (#659)
* Ethereum address utils

* export in base
2020-08-11 16:46:01 +02:00
Github Actions 3ab1623a40 [CI Skip] release/beta 3.2.0-beta.1
skip-checks: true
2020-08-11 14:25:08 +00:00
Jaco Greeff f5acd60253 Actually expose base32* functions (#658) 2020-08-11 16:20:39 +02:00
Github Actions c4d368d2b5 [CI Skip] release/beta 3.2.0-beta.0
skip-checks: true
2020-08-11 06:59:01 +00:00
Jaco Greeff e487d0a454 - Allow for hasher to secp256k1 sign/verify functions (#657) 2020-08-11 08:54:52 +02:00
Github Actions 99ffcc52ec [CI Skip] release/stable 3.1.1
skip-checks: true
2020-08-10 04:51:43 +00:00
Jaco Greeff 64510af8d3 3.1 (#655) 2020-08-10 06:47:53 +02:00
Github Actions 52b14db475 [CI Skip] release/beta 3.1.0-beta.8
skip-checks: true
2020-08-09 12:45:13 +00:00
Jaco Greeff c5fe5cd8d4 Bump @polkadot/wasm (#654) 2020-08-09 14:41:40 +02:00
Github Actions bdfc614ad5 [CI Skip] release/beta 3.1.0-beta.7
skip-checks: true
2020-08-09 12:29:56 +00:00
Jaco Greeff 0d03eac307 Add deriveAddress (#653) 2020-08-09 14:26:37 +02:00
Github Actions 6c84edcb9d [CI Skip] release/beta 3.1.0-beta.6
skip-checks: true
2020-08-09 11:31:44 +00:00
Jaco Greeff 9d145e72b8 Base32 encoding/decoding (#652)
* Base32 encoding/decoding

* Attribution

* LOOKUP

* Share base32/58 alphabet validation

* Apply suggestions from code review
2020-08-09 13:27:47 +02:00
Github Actions 4529bc37b5 [CI Skip] release/beta 3.1.0-beta.5
skip-checks: true
2020-08-08 07:07:37 +00:00
Jaco Greeff 038ef42fe5 Bump deps (#651) 2020-08-08 09:03:58 +02:00
Github Actions 1871d36a97 [CI Skip] release/beta 3.1.0-beta.4
skip-checks: true
2020-08-06 12:19:34 +00:00
Jaco Greeff 45c2afae07 Bump berry (#650)
* Bump berry

* Rewrite
2020-08-06 14:15:37 +02:00
Github Actions 51edae2f67 [CI Skip] release/beta 3.1.0-beta.3
skip-checks: true
2020-08-05 14:32:25 +00:00
Jaco Greeff 437314e5ea Bump wasm-crypto (#649)
* Bump wasm-crypto

* Rewrite yarn.lock
2020-08-05 16:28:22 +02:00
Jaco Greeff ce6f9d8bc8 Scrypt via wasm-crypto (#647)
* Scrypt via wasm-crypto

* Bump wasm-crypto
2020-08-05 16:07:38 +02:00
Github Actions 0cf65e1671 [CI Skip] release/beta 3.1.0-beta.2
skip-checks: true
2020-07-31 13:52:39 +00:00
Brad Larson a0251ff650 [FIX] Adjust error message (#646)
I ran into a case where the secret value provided had trailing
whitespace, and when the code ran, it logged that secret value as part
of the stack trace.

This change will make it harder for users to accidentally leak key
material.
2020-07-31 15:48:31 +02:00
Github Actions 9696badcd1 [CI Skip] release/beta 3.1.0-beta.1
skip-checks: true
2020-07-31 08:07:03 +00:00
Jaco Greeff 08817d199d Bump deps (#645) 2020-07-31 10:02:57 +02:00
Github Actions df69a02e6f [CI Skip] release/beta 3.1.0-beta.0
skip-checks: true
2020-07-30 14:02:55 +00:00
Jaco Greeff e845132d89 Bump deps (#644) 2020-07-30 15:58:17 +02:00
Github Actions 21e9b9a033 [CI Skip] release/stable 3.0.1
skip-checks: true
2020-07-27 06:21:35 +00:00
Jaco Greeff db61ea3077 3.0 release (#643) 2020-07-27 08:17:28 +02:00
Github Actions d4a3d2392e [CI Skip] release/beta 3.0.0-beta.4
skip-checks: true
2020-07-27 06:09:08 +00:00
Jaco Greeff 88ecda706d 3.0 (#642)
* 3.0

* Bump dev
2020-07-27 08:05:04 +02:00
Github Actions 184fb1f12e [CI Skip] release/beta 3.0.0-beta.3
skip-checks: true
2020-07-22 15:45:42 +00:00
Reto Trinkler 91340577df Adding 4 as address type of ss58 for Katal Chain (#639) 2020-07-22 17:41:49 +02:00
Github Actions 36729678e2 [CI Skip] release/beta 3.0.0-beta.2
skip-checks: true
2020-07-21 07:06:23 +00:00
Jaco Greeff 1c6b4bfc34 Dev bump 2020-07-21 09:02:25 +02:00
Github Actions bbfd175579 [CI Skip] release/beta 3.0.0-beta.1
skip-checks: true
2020-07-21 06:21:56 +00:00
Jaco Greeff 0a6bd41444 Keyring JSON with kdf (#637)
* Keyring JSON with pbkdf2

* pbkdf2 from wasm

* Encode/decode defaults adjusted

* v2 decoding test

* Recode refreshes defaults

* Use scrypt for kdf

* test conversions

* Fix params

* Cleanup decoding pass

* Swap encoding to base64

* Update for base64 encoding

* 3.0.0
2020-07-21 08:17:46 +02:00
Github Actions ab21274c36 [CI Skip] release/beta 2.19.0-beta.2
skip-checks: true
2020-07-17 12:30:08 +00:00
Jaco Greeff d4e6ad5553 Bump dev 2020-07-17 14:26:11 +02:00
Github Actions 49dbd757df [CI Skip] release/beta 2.19.0-beta.1
skip-checks: true
2020-07-17 12:07:35 +00:00
Jaco Greeff 20e82cc45b Dev bump 2020-07-17 14:03:36 +02:00
Github Actions 6a7fa80c55 [CI Skip] release/beta 2.19.0-beta.0
skip-checks: true
2020-07-17 06:39:13 +00:00
Jaco Greeff 12e34cd3e8 Bump deps (#635) 2020-07-17 08:35:10 +02:00
Github Actions 0a598fdf92 [CI Skip] release/stable 2.18.1
skip-checks: true
2020-07-13 08:51:33 +00:00
Jaco Greeff 659b896ee7 2.18 (#634) 2020-07-13 10:47:53 +02:00
Github Actions 7cda007a30 [CI Skip] release/beta 2.18.0-beta.3
skip-checks: true
2020-07-09 07:19:51 +00:00
Jaco Greeff 2288c4da8a Base64 utils (#632) 2020-07-09 09:16:24 +02:00
Github Actions fbfc21be1c [CI Skip] release/beta 2.18.0-beta.2
skip-checks: true
2020-07-08 13:39:52 +00:00
Jaco Greeff 787beb2aea Add isUtf8 (#631) 2020-07-08 15:35:43 +02:00
Github Actions 6234e16c37 [CI Skip] release/beta 2.18.0-beta.1
skip-checks: true
2020-07-08 11:58:35 +00:00
Jaco Greeff e9cbc0a0d9 Bump deps (#630) 2020-07-08 13:54:57 +02:00
Github Actions 166eeb8852 [CI Skip] release/beta 2.18.0-beta.0
skip-checks: true
2020-07-08 09:18:38 +00:00
Jaco Greeff b321f92161 Add isAscii (#629) 2020-07-08 11:14:55 +02:00
Github Actions cf7d9d9ff5 [CI Skip] release/stable 2.17.1
skip-checks: true
2020-07-06 04:41:13 +00:00
Jaco Greeff fb5b3c1663 2.17 (#628) 2020-07-06 06:37:16 +02:00
Github Actions 46bbc45145 [CI Skip] release/beta 2.17.0-beta.3
skip-checks: true
2020-07-04 08:12:18 +00:00
Jaco Greeff dc8b4a6447 Add encode{Derived, Multi}Address (#627)
* Add encode{Derived, Multi}Address

* Tests for encode*

* CHANGELOG
2020-07-04 10:08:40 +02:00
Github Actions 8ec38eca4a [CI Skip] release/beta 2.17.0-beta.2
skip-checks: true
2020-07-02 05:36:03 +00:00
Jaco Greeff 24b533689c Handle 0 on numberToU8a (#626)
* Handle 0 on numberToU8a

* Remove old test (replaced)

* base58 CHANGELOG
2020-07-02 07:32:25 +02:00
Github Actions 5421e06fc9 [CI Skip] release/beta 2.17.0-beta.1
skip-checks: true
2020-07-02 05:29:40 +00:00
Jaco Greeff 7115efd94f Simplify base58 dependency tree (#624) 2020-07-02 07:26:04 +02:00
Github Actions 92f88222c4 [CI Skip] release/beta 2.17.0-beta.0
skip-checks: true
2020-07-02 05:12:02 +00:00
Jaco Greeff bc7aba71a6 Bump deps (#625) 2020-07-02 07:08:40 +02:00
Github Actions 1d8b8b3204 [CI Skip] release/stable 2.16.1
skip-checks: true
2020-06-29 05:19:13 +00:00
Jaco Greeff 4a2e090ef8 2.16 (#623) 2020-06-29 07:15:21 +02:00
Github Actions 8cf8d5b7e8 [CI Skip] release/beta 2.16.0-beta.0
skip-checks: true
2020-06-26 12:49:47 +00:00
Jaco Greeff 8d355ff6fc Local base58 alphabet check for better errors (#622)
* Local base58 alphabet check for better errors

* Rewrite yarn.lock

* Align error return values

* Split base58{Encode, Decode}

* base58Encode input types

* Function names, some docs
2020-06-26 14:46:19 +02:00
Github Actions 72456bb2bd [CI Skip] release/stable 2.15.1
skip-checks: true
2020-06-22 09:33:14 +00:00
Jaco Greeff 87f3fd2827 2.15 (#621) 2020-06-22 11:29:33 +02:00
Github Actions 7254aab68d [CI Skip] release/beta 2.15.0-beta.0
skip-checks: true
2020-06-19 15:39:36 +00:00
Jaco Greeff 95d7160ad0 Test for 0 prefix (#620)
* Test for 0 prefix

* Add test for keyring encodeAddress (& fix)

* Test other branch of ?: check
2020-06-19 17:35:48 +02:00
Github Actions 611b1be481 [CI Skip] release/stable 2.14.1
skip-checks: true
2020-06-16 06:02:06 +00:00
Jaco Greeff 73b35fc188 2.14 (#618) 2020-06-16 07:58:33 +02:00
Github Actions 6c30d5b9fd [CI Skip] release/beta 2.14.0-beta.0
skip-checks: true
2020-06-08 15:58:49 +00:00
Keith Ingram 56d151fe66 Add BN consts and timeToString (#610)
* Add BN consts and timeToString

* docs

* lint

* fixes

* lint

* lint

* add tests, ms

* fix

* test
2020-06-09 03:55:21 +12:00
Github Actions cd20fe6c8b [CI Skip] release/stable 2.13.1
skip-checks: true
2020-06-08 14:03:31 +00:00
Jaco Greeff 28f8ca73aa 2.13 (#616) 2020-06-08 15:59:47 +02:00
Github Actions f4a8bfc0c0 [CI Skip] release/beta 2.13.0-beta.5
skip-checks: true
2020-06-08 12:33:10 +00:00
Jaco Greeff 94b058d6a3 Align bnToHex signature with bnToU8a (#615) 2020-06-08 14:29:40 +02:00
Github Actions 3d7ddb85a2 [CI Skip] release/beta 2.13.0-beta.4
skip-checks: true
2020-06-08 11:35:08 +00:00
Jaco Greeff f7a2bb895f Fix blake2 U8a JS with hex inputs (#614)
* Fix blake2 U8a JS with hex inputs

* Apply suggestions from code review
2020-06-08 13:31:10 +02:00
Github Actions c1bfcc00b6 [CI Skip] release/beta 2.13.0-beta.3
skip-checks: true
2020-06-06 08:08:42 +00:00
Jaco Greeff b16d8e7c26 Bump deps (#612) 2020-06-06 10:05:02 +02:00
Github Actions 2a4b363fcd [CI Skip] release/beta 2.13.0-beta.2
skip-checks: true
2020-06-05 20:17:13 +00:00
Jaco Greeff de689b8e6f Bump deps (#611) 2020-06-05 22:13:55 +02:00
Github Actions 2e72ab920b [CI Skip] release/beta 2.13.0-beta.1
skip-checks: true
2020-06-02 09:44:29 +00:00
Jaco Greeff 565e6baecd Linting 2020-06-02 11:40:25 +02:00
Jaco Greeff 1e15203b6c Reset to beta 2020-06-02 11:24:23 +02:00
Github Actions cc8639565d [CI Skip] release/stable 2.12.2
skip-checks: true
2020-06-02 08:31:51 +00:00
Jaco Greeff b77d2e6860 Linting 2020-06-02 10:28:25 +02:00
Jaco Greeff e1fbd8ff9f 2.12.2 2020-06-02 10:22:30 +02:00
Github Actions f56dd32b4a [CI Skip] release/stable 2.12.1
skip-checks: true
2020-06-01 16:09:53 +00:00
Jaco Greeff 6077bef570 2.12 (#609) 2020-06-01 18:05:55 +02:00
Github Actions 377d83d4ed [CI Skip] release/beta 2.12.0-beta.2
skip-checks: true
2020-06-01 08:31:12 +00:00
Jaco Greeff bdb14f91a8 Pre-checks on verify input lengths (#608)
* Pre-checks on verify input lengths

* Small cleanup

* Update error signatures
2020-06-01 10:27:08 +02:00
Github Actions cc5b7ed0ad [CI Skip] release/beta 2.12.0-beta.1
skip-checks: true
2020-06-01 07:33:27 +00:00
Jaco Greeff d4491aeb7f Small cleanups, u8aConcat optimization (#607)
* Small cleanups, u8aConcat oprimizations

* Cleanup

* Pre-allocate arrays

* Don't recreate PREFIX
2020-06-01 09:29:44 +02:00
Github Actions 0f6e996799 [CI Skip] release/beta 2.12.0-beta.0
skip-checks: true
2020-05-31 12:22:47 +00:00
Jaco Greeff 1f3dd60a8d {address,u8a}Eq functions (#606)
* {addres,u8a}Eq functions

* Remove mnemonicToSeed
2020-05-31 14:19:10 +02:00
Github Actions 3351fb1cba [CI Skip] 2.11.1
skip-checks: true
2020-05-26 07:00:59 +00:00
Jaco Greeff 32d176e424 2.11 (#604) 2020-05-26 08:57:31 +02:00
Github Actions aec1e26cb9 [CI Skip] 2.11.0-beta.2
skip-checks: true
2020-05-24 17:08:04 +00:00
Jaco Greeff 7d529b6c93 Type adjustments for meta 2020-05-24 19:04:15 +02:00
Github Actions e22b39ae01 [CI Skip] 2.11.0-beta.1
skip-checks: true
2020-05-23 12:26:33 +00:00
Jaco Greeff 18a202c460 Bump dev w/ eslint (#603)
* Bump dev w/ eslint

* Mop-up remaining lint issues

* Update stringShorten expectation
2020-05-23 14:23:13 +02:00
Github Actions fd9ce319a5 [CI Skip] 2.11.0-beta.0
skip-checks: true
2020-05-15 10:37:46 +00:00
Jaco Greeff a04c0a5e82 Bump deps (#601) 2020-05-15 12:34:22 +02:00
Github Actions 06cb5e57a0 [CI Skip] 2.10.1
skip-checks: true
2020-05-14 05:42:04 +00:00
Jaco Greeff 103ea045bf 2.10 (#599) 2020-05-14 07:38:43 +02:00
Github Actions 4315c76814 [CI Skip] 2.10.0-beta.5
skip-checks: true
2020-05-11 12:01:35 +00:00
Jaco Greeff 6de6b871cd Adjust DeriveJunction (types & BigInt) (#598) 2020-05-11 13:57:59 +02:00
Github Actions 82e5d76821 [CI Skip] 2.10.0-beta.4
skip-checks: true
2020-05-11 09:58:13 +00:00
Jaco Greeff d9a18a4acf Bump berry (#597) 2020-05-11 11:54:45 +02:00
Github Actions 2d1d4f808e [CI Skip] 2.10.0-beta.3
skip-checks: true
2020-05-11 08:00:19 +00:00
Jaco Greeff d1de30907f TextEncoder allows non-Uint8Array Buffers (#596)
* TextEncoder allows non-Uint8Array Buffers

* Add eslintrc to eslintignore
2020-05-11 09:57:00 +02:00
Github Actions d3583dc432 [CI Skip] 2.10.0-beta.2
skip-checks: true
2020-05-08 18:15:33 +00:00
Wei Tang bb04fa28f7 ss58: add Kulupu prefix to the list (#595) 2020-05-08 20:12:17 +02:00
Github Actions bd8e862b62 [CI Skip] 2.10.0-beta.1
skip-checks: true
2020-04-30 06:06:24 +00:00
Jaco Greeff 0f45b7fbf3 Bump deps (#594) 2020-04-30 08:03:20 +02:00
Github Actions 03eb72f128 [CI Skip] 2.10.0-beta.0
skip-checks: true
2020-04-30 05:31:32 +00:00
Jaco Greeff f76a4a98be beta bump (#593) 2020-04-30 07:28:35 +02:00
Github Actions c2b91ad8c2 [CI Skip] 2.9.1
skip-checks: true
2020-04-29 22:42:23 +00:00
Jaco Greeff ffc6b0323b 2.9.1 2020-04-30 00:38:59 +02:00
Github Actions b666db2721 [CI Skip] 2.9.0-beta.4
skip-checks: true
2020-04-29 22:37:08 +00:00
Jaco Greeff b00d49564f Update CHANGELOG.md 2020-04-30 00:34:31 +02:00
Alexander Krupenkin 34380caf1f Added ECDSA keypair support (#589)
* Added ECDSA signature verification

* Add ECDSA keypair, sign, key derivation, fromSeed and tests

* keyring: added ECDSA keypair

* Fix lint errors
2020-04-30 00:33:10 +02:00
Github Actions 277cc2b5a8 [CI Skip] 2.9.0-beta.3
skip-checks: true
2020-04-26 20:26:19 +00:00
joe petrowski 733e9e2729 Add example for multisig address creation (#590)
* add multisig example

* typo

* lint fix

* sort addresses

* make linter happy

* clean up sorting with ss58 param
2020-04-26 22:23:15 +02:00
Github Actions 482264c615 [CI Skip] 2.9.0-beta.2
skip-checks: true
2020-04-26 12:36:41 +00:00
Jaco Greeff 5d0abef952 Sort with ss58 prefix (#591) 2020-04-26 14:33:45 +02:00
Github Actions 2397e1c5d7 [CI Skip] 2.9.0-beta.1
skip-checks: true
2020-04-24 17:18:36 +00:00
Jaco Greeff 62ebe257a6 u8aSorted & sortAddresses (#588) 2020-04-24 19:15:43 +02:00
Github Actions a2844a449c [CI Skip] 2.9.0-beta.0
skip-checks: true
2020-04-24 13:38:04 +00:00
Jaco Greeff 60a9866abe Create createKeyMulti & createKeySub for utility (util-crypto) (#587)
* Create keyMulti & keysub for utility

* Bumps
2020-04-24 15:34:47 +02:00
Github Actions b196158125 [CI Skip] 2.8.1
skip-checks: true
2020-04-09 13:12:53 +00:00
Jaco Greeff 6b1caacfb9 2.8 (#586)
* 2.8

* Typos
2020-04-09 15:10:23 +02:00
Github Actions a7679fb07c [CI Skip] 2.8.0-beta.7
skip-checks: true
2020-04-07 19:51:29 +00:00
Jaco Greeff c4acca6c7c eslint update 2020-04-07 21:48:07 +02:00
Github Actions 5012792693 [CI Skip] 2.8.0-beta.6
skip-checks: true
2020-04-07 19:26:31 +00:00
Jaco Greeff d40d6c65f7 isDevelopment regex 2020-04-07 21:23:20 +02:00
Github Actions 2c0d8e4b59 [CI Skip] 2.8.0-beta.5
skip-checks: true
2020-04-06 10:25:18 +00:00
Jaco Greeff d3d8caa0df Use bundled node (#585) 2020-04-06 12:22:31 +02:00
Github Actions a8f8525c9d [CI Skip] 2.8.0-beta.4
skip-checks: true
2020-04-05 07:55:56 +00:00
Jaco Greeff caa5a8b9e6 Bump deps (#584) 2020-04-05 09:52:59 +02:00
Github Actions ce6187f378 [CI Skip] 2.8.0-beta.3
skip-checks: true
2020-04-04 08:45:26 +00:00
Jaco Greeff fe9c7a8a80 Bump deps (#583) 2020-04-04 10:42:21 +02:00
Github Actions d5584c1837 [CI Skip] 2.8.0-beta.2
skip-checks: true
2020-04-02 06:45:50 +00:00
Jaco Greeff adb1c1fea4 Rewrite yarn.lock (#580) 2020-04-02 08:42:32 +02:00
Github Actions c87c228ab1 [CI Skip] 2.8.0-beta.1
skip-checks: true
2020-04-01 19:23:33 +00:00
Jaco Greeff cbec4add88 Bump dev (incl. lint fixes) (#579)
* Bump dev (incl. lint fixes)

* Fix failures
2020-04-01 21:20:50 +02:00
Github Actions 6429cc307c [CI Skip] 2.8.0-beta.0
skip-checks: true
2020-04-01 18:47:32 +00:00
h4x3rotab c98e994777 Throws an error when signing with a locked keypair (#578)
* Throws an error when signing with a locked keypair

Fixes #576

* Fix lint errors

* Switch to `assert` and fix nits
2020-04-01 20:44:40 +02:00
Github Actions 697a452ba6 [CI Skip] 2.7.1
skip-checks: true
2020-03-31 11:56:12 +00:00
Jaco Greeff f68294c4e7 2.7 (#575) 2020-03-31 13:53:10 +02:00
Github Actions 0130d18945 [CI Skip] 2.7.0-beta.8
skip-checks: true
2020-03-24 06:29:44 +00:00
Jaco Greeff 15c9904c96 Add bnSqrt (#574)
* Add bnSqrt function

* Bumps

* CHANGELOG

* Add extra case
2020-03-24 07:25:53 +01:00
Github Actions add2749967 [CI Skip] 2.7.0-beta.7
skip-checks: true
2020-03-24 05:58:23 +00:00
Jaco Greeff fe2f054389 wasm-crypto initNone (#573)
* wasm-crypto initNone

* noWasm to replace @polkadot/wasm-crypto interface
2020-03-24 06:55:07 +01:00
Github Actions bb1c117727 [CI Skip] 2.7.0-beta.6
skip-checks: true
2020-03-21 09:15:30 +00:00
Jaco Greeff 27c474bd78 Bump deps (#572)
* Bump deps

* @types/jest
2020-03-21 10:12:17 +01:00
Github Actions 039b5ec932 [CI Skip] 2.7.0-beta.5
skip-checks: true
2020-03-16 14:35:40 +00:00
Jaco Greeff 9eea21e0c4 Add yarn matrix (#570)
* Add yarn matrix

* Update pr-any.yml
2020-03-16 15:32:59 +01:00
Github Actions aab533f92e [CI Skip] 2.7.0-beta.4
skip-checks: true
2020-03-16 13:36:21 +00:00
Jaco Greeff 2159270d80 Remove actions matrix (#569)
* Remove actions matrix

* Bumps
2020-03-16 14:33:27 +01:00
Github Actions f1b09eb2e5 [CI Skip] 2.7.0-beta.3
skip-checks: true
2020-03-15 07:21:01 +00:00
Jaco Greeff d08cf8b5fe Remove non-working CI cache (#567) 2020-03-15 08:18:04 +01:00
Github Actions 941618b830 [CI Skip] 2.7.0-beta.2
skip-checks: true
2020-03-14 08:31:56 +00:00
Jaco Greeff 983ca718ec Bump deps (#566) 2020-03-14 09:28:16 +01:00
Github Actions 41ebdd5c59 [CI Skip] 2.7.0-beta.1
skip-checks: true
2020-03-11 06:46:07 +00:00
Jaco Greeff 8971c89081 Back to preminor (#565) 2020-03-11 07:42:45 +01:00
Github Actions d1934060e0 [CI Skip] 2.6.2
skip-checks: true
2020-03-11 06:39:27 +00:00
Jaco Greeff 6d9da39d8b Bump dev, fix publish 2020-03-11 07:35:48 +01:00
Jaco Greeff 4ed096024e typeof __dirname !== 'undefined' before using (#564)
* typeof __dirname !== 'undefined' before using

* Use as patch

* yarn.lock

* Rewrite yarn.lock

* Shorten __dirname check
2020-03-11 07:18:52 +01:00
Github Actions ae36d58802 [CI Skip] 2.6.1
skip-checks: true
2020-02-29 17:48:10 +00:00
Jaco Greeff c8100dbe43 2.6 (#560)
* 2.6

* Update CHANGELOG
2020-02-29 18:44:50 +01:00
Github Actions 28d2ce38bd [CI Skip] 2.6.0-beta.8
skip-checks: true
2020-02-29 12:57:21 +00:00
Jaco Greeff afce99ed1a Minify yarn plugins (#559) 2020-02-29 13:53:57 +01:00
Github Actions 29d13ab19c [CI Skip] 2.6.0-beta.7
skip-checks: true
2020-02-29 11:30:10 +00:00
Jaco Greeff 68a8bcb7db Remove yarn version plugin, bump dev (#558) 2020-02-29 12:27:02 +01:00
Github Actions d2ecf1730a [CI Skip] 2.6.0-beta.6
skip-checks: true
2020-02-29 10:53:59 +00:00
Jaco Greeff af56c10278 Add cryptoIsReady (#557)
* Add cryptoIsReady

* Bump yarn
2020-02-29 11:51:17 +01:00
Github Actions 42f318fcb5 [CI Skip] 2.6.0-beta.5
skip-checks: true
2020-02-29 09:29:29 +00:00
Jaco Greeff 336df0d76d yarn --immutable on CI (#556)
* yarn --immutable on CI

* dev bump
2020-02-29 10:26:32 +01:00
Github Actions d85cedf5a0 [CI Skip] 2.6.0-beta.4
skip-checks: true
2020-02-28 12:19:35 +00:00
Jaco Greeff a59187bce6 Bump dev 2020-02-28 13:16:23 +01:00
Github Actions f9a5b75e10 [CI Skip] 2.6.0-beta.3
skip-checks: true
2020-02-28 12:06:20 +00:00
Jaco Greeff 87228149d4 Explicit gh-pages dep 2020-02-28 13:03:03 +01:00
Github Actions 67f36f6a13 [CI Skip] 2.6.0-beta.2
skip-checks: true
2020-02-28 11:32:49 +00:00
Jaco Greeff 75a9898daf Update to yarn 2 (#555) 2020-02-28 12:29:25 +01:00
Jaco Greeff 0f726ce777 Small formatting cleanups (#554)
* Small formatting cleanups

* Cleanup typos
2020-02-28 12:27:27 +01:00
Github Actions 765f9baf44 [CI Skip] 2.6.0-beta.1
skip-checks: true
2020-02-24 21:25:28 +00:00
Jaco Greeff 2d181df360 Bump wasm to 1.1 (#553)
* Bump wasm to 1.1

* typo
2020-02-24 22:23:48 +01:00
Github Actions 77ff703a08 [CI Skip] 2.6.0-beta.0
skip-checks: true
2020-02-24 10:56:56 +00:00
Jaco Greeff 804ed13d0a Add signatureVerify (#552)
* Add signatureVerify

* addressOrPublicKey typo

* Flatten verify, allow extra types

* Add signatureVerify tests

* De-dup address checksum checks
2020-02-24 11:55:15 +01:00
Jaco Greeff 341a6b0c08 Add TS 3.8 breaking feature in CHANGELOG (missed) (#551) 2020-02-24 09:08:16 +01:00
Jaco Greeff 614985b8ac Remove gh-pages script (in dev) (#549) 2020-02-22 16:56:24 +01:00
Github Actions d5bfa8c3c4 [CI Skip] 2.5.1
skip-checks: true
2020-02-22 15:34:36 +00:00
Jaco Greeff 359981d2ef Add pages refresh script (#548) 2020-02-22 16:32:41 +01:00
Jaco Greeff b0ee79f90c 2.5 (#547) 2020-02-22 15:57:33 +01:00
Github Actions c2d595fb3f [CI Skip] 2.5.0-beta.3
skip-checks: true
2020-02-22 14:23:29 +00:00
Jaco Greeff f837200a73 Fix isChildClass with correct is assertion (#546)
* Fix isChildClass with correct is assertion

* Remove stray any, allow never
2020-02-22 15:21:24 +01:00
Github Actions ea7dd553a2 [CI Skip] 2.5.0-beta.2
skip-checks: true
2020-02-22 13:46:55 +00:00
Jaco Greeff 7c1ca3a5c9 Use #<varname> instead of private _<varname> (#545)
* Use #<varname> insead of private _<varname>

* Update key extraction paths
2020-02-22 14:45:31 +01:00
Github Actions 75cd547b49 [CI Skip] 2.5.0-beta.1
skip-checks: true
2020-02-22 12:27:44 +00:00
Jaco Greeff 91c4c407a9 Add isChildClass (#544)
* Add isChildClass

* isChildClass is return

* Cleanup doc example
2020-02-22 13:26:12 +01:00
Github Actions 20b46a65fa [CI Skip] 2.5.0-beta.0
skip-checks: true
2020-02-21 15:56:13 +00:00
Jaco Greeff c60459e303 Add isBigInt & bnToBn support for (#542)
* Add isBigInt & bnToBn support for

* All BN inputs allow BigInt
2020-02-21 16:54:33 +01:00
Jaco Greeff 92ab4699b3 Re-add code build 2020-02-20 20:56:31 +01:00
Jaco Greeff 932f4c25f5 Docs rebuild 2020-02-20 20:52:19 +01:00
Jaco Greeff aaa35a8198 trigger docs 2020-02-20 17:45:57 +01:00
Github Actions 9708131620 [CI Skip] 2.4.1
skip-checks: true
2020-02-18 08:02:01 +00:00
Jaco Greeff c539430a0b 2.4 (#539) 2020-02-18 09:00:08 +01:00
Github Actions 8defc792a9 [CI Skip] 2.4.0-beta.2
skip-checks: true
2020-02-17 15:25:48 +00:00
Jaco Greeff 76a0daeed6 Use ss58 format on keyring for the keyring only (#538)
* Use ss58 format on keyring for the keyring only

* Cleanup args

* Cleanup failures

* Remove deprecated addressPrefix

* Update CHANGELOG
2020-02-17 16:24:03 +01:00
Github Actions e236fdc396 [CI Skip] 2.4.0-beta.1
skip-checks: true
2020-02-17 14:07:53 +00:00
Jaco Greeff e30dd7c0d9 Add GH actions yarn cache (#537) 2020-02-17 15:06:00 +01:00
Github Actions f3ac6b2674 [CI Skip] 2.4.0-beta.0
skip-checks: true
2020-02-17 11:18:01 +00:00
Jaco Greeff 171015fbba formatBalance adjustments (#536)
* formatBalance extensions

* Fly-by any removals

* isBn updates

* Remove unneeded ()'s
2020-02-17 12:16:02 +01:00
603 changed files with 24832 additions and 17931 deletions
+20 -1
View File
@@ -1 +1,20 @@
4
8
2.6.2
2.12.2
5.2.2
5.2.3
5.4.2
5.4.3
5.4.4
5.5.2
5.6.2
5.6.3
5.9.2
6.0.2
6.0.3
6.0.4
6.0.5
7.0.2
7.0.3
7.1.2
-1
View File
@@ -1 +0,0 @@
module.exports = require('./babel.config.js');
+2 -1
View File
@@ -1,4 +1,5 @@
exclude_patterns:
- "**/*.spec.js"
- "**/*.spec.ts"
- "docs/**/*.js"
- "packages/networks/src/substrate.ts"
- "packages/util/src/is/utf8.ts"
-3
View File
@@ -1,3 +0,0 @@
**/build/*
**/coverage/*
**/node_modules/*
+18 -1
View File
@@ -1,11 +1,28 @@
const base = require('@polkadot/dev/config/eslint');
// Copyright 2017-2021 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
const base = require('@polkadot/dev/config/eslint.cjs');
module.exports = {
...base,
ignorePatterns: [
'.eslintrc.js',
'.github/**',
'.vscode/**',
'.yarn/**',
'**/build/*',
'**/coverage/*',
'**/node_modules/*'
],
parserOptions: {
...base.parserOptions,
project: [
'./tsconfig.json'
]
},
rules: {
...base.rules,
// this seems very broken atm, false positives
'@typescript-eslint/unbound-method': 'off'
}
};
+10
View File
@@ -0,0 +1,10 @@
---
title: SS58 registry is outdated
labels: ['ci', '@networks']
---
cc @polkadot-js/notifications
Discrepancies detected between https://github.com/paritytech/substrate/blob/master/ss58-registry.json and https://github.com/polkadot-js/common/blob/master/packages/networks/src/substrate.ts
Check the nightly cron output (or via `yarn networks:crosscheck` locally) and run `yarn networks:sync` to update. The output as found from the test includes:
+23
View File
@@ -0,0 +1,23 @@
name: 'Lock Threads'
on:
schedule:
- cron: '30 1/2 * * *'
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2
with:
github-token: ${{ secrets.GH_PAT_BOT }}
issue-lock-inactive-days: '7'
issue-lock-comment: >
This thread has been automatically locked since there has not been
any recent activity after it was closed. Please open a new issue
if you think you have a related problem or query.
pr-lock-inactive-days: '2'
pr-lock-comment: >
This pull request has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
+7 -62
View File
@@ -2,72 +2,17 @@ name: PR
on: [pull_request]
jobs:
lint:
name: Linting
runs-on: ubuntu-latest
pr:
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: lint
run: |
yarn install --frozen-lockfile
yarn lint
test:
name: Testing
step: ['lint', 'test', 'build']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: test
- uses: actions/checkout@v2
- name: ${{ matrix.step }}
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
run: |
yarn install --frozen-lockfile
yarn test
build_code:
name: Build Code
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: build
run: |
yarn install --frozen-lockfile
yarn build
build_docs:
name: Build Docs
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: build
run: |
yarn install --frozen-lockfile
yarn docs
yarn install --immutable | grep -v 'YN0013'
yarn ${{ matrix.step }}
+10 -50
View File
@@ -5,63 +5,23 @@ on:
- master
jobs:
build_code:
name: Build Code
if: "! contains(github.event.head_commit.message, '[CI Skip]')"
runs-on: ubuntu-latest
master:
if: "! startsWith(github.event.head_commit.message, '[CI Skip]')"
strategy:
matrix:
node-version: [12.x]
step: ['build:release']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
with:
token: ${{ secrets.GH_PAT }}
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: build
- name: ${{ matrix.step }}
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
GH_PAT: ${{ secrets.GH_PAT }}
GH_TOKEN: ${{ secrets.GH_PAT }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
yarn install --frozen-lockfile
yarn polkadot-ci-ghact-build
build_docs:
name: Build Docs
if: "! contains(github.event.head_commit.message, '[CI Skip]')"
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: build
env:
GH_PAT: ${{ secrets.GH_PAT }}
GH_TOKEN: ${{ secrets.GH_PAT }}
GH_PAGES_SRC: build-docs
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
yarn install --frozen-lockfile
yarn polkadot-ci-ghact-docs
dummy:
name: Dummy
if: "contains(github.event.head_commit.message, '[CI Skip]')"
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- name: dummy
run: |
echo "Dummy skip step"
yarn install --immutable | grep -v 'YN0013'
yarn ${{ matrix.step }}
+18
View File
@@ -0,0 +1,18 @@
name: Semgrep
on:
pull_request: {}
push:
branches:
- master
jobs:
check:
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: returntocorp/semgrep-action@v1
with:
auditOn: push
publishToken: ${{ secrets.SEMGREP_APP_TOKEN }}
publishDeployment: 1395
+25
View File
@@ -0,0 +1,25 @@
name: SS58
on:
schedule:
- cron: '15 4/6 * * *'
jobs:
ss58:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: check
env:
CI_LOG: 123
run: |
yarn install --immutable | grep -v 'YN0013'
yarn networks:crosscheck
- name: issue
if: ${{ failure() }}
uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT_BOT }}
with:
filename: .github/ss58-check.md
update_existing: true
+17
View File
@@ -0,0 +1,17 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 2/2 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GH_PAT_BOT }}
stale-issue-message: 'This issue has been open for 21 days with no activity and is not labelled as an enhancement. It will be closed in 7 days.'
stale-issue-label: 'stale'
exempt-issue-labels: '-size-l,-size-m,-size-s,-size-xl,-size-xs,[bug],ci'
days-before-stale: 21
days-before-close: 7
+3 -3
View File
@@ -12,10 +12,10 @@ tmp/
.env.test.local
.env.production.local
.npmrc
.yarn/*
!.yarn/releases
!.yarn/plugins
.pnp.*
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
cc-test-reporter
lerna-debug.log*
npm-debug.log*
-1
View File
@@ -1 +0,0 @@
10
+3
View File
@@ -0,0 +1,3 @@
build
coverage
packages
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
module.exports = require('@polkadot/dev/config/prettier.cjs');
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+631
View File
File diff suppressed because one or more lines are too long
+13
View File
@@ -0,0 +1,13 @@
enableImmutableInstalls: false
enableProgressBars: false
nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
spec: "@yarnpkg/plugin-version"
yarnPath: .yarn/releases/yarn-3.0.1.cjs
+842 -63
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2017-2021 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
module.exports = require('@polkadot/dev/config/babel-config-cjs.cjs');
-1
View File
@@ -1 +0,0 @@
module.exports = require('@polkadot/dev/config/babel');
-17
View File
@@ -1,17 +0,0 @@
#!/bin/bash
function copy_folder () {
SRC="packages/$1/build"
DST="../apps/node_modules/@polkadot/$1"
echo "** Copying $SRC to $DST"
rm -rf $DST
cp -r $SRC $DST
}
yarn polkadot-dev-build-ts
copy_folder "keyring"
copy_folder "util"
copy_folder "util-crypto"
+1
View File
@@ -0,0 +1 @@
-41
View File
@@ -1,41 +0,0 @@
module.exports = {
base: '/common/',
title: 'polkadot-js/common',
description: 'Common utilities and libraries that are in use accross all @polkadot projects',
markdown: {
lineNumbers: true
},
themeConfig: {
displayAllHeaders: true,
nav: [
{ text: 'Polkadot/Substrate Apps', link: 'https://polkadot.js.org/apps/' },
{ text: 'Project family', link: 'https://polkadot.js.org/' },
{
text: 'Documentation',
items: [
{ text: 'API Reference', link: 'https://polkadot.js.org/api/' },
{ text: 'Utility Reference (this)', link: 'https://polkadot.js.org/common/' },
{ text: 'UI Libs Reference', link: 'https://polkadot.js.org/ui/' },
]
},
{ text: 'GitHub', link: 'https://github.com/polkadot-js/common' }
],
search: false,
sidebar: [
{
title: 'Examples (keyring)',
path: '/examples/keyring/',
collapsable: false,
sidebarDepth: 1,
children: [
['/examples/keyring/01_create_account/', 'Create account'],
['/examples/keyring/02_load_accounts/', 'Load Accounts']
]
},
['/util/', '@polkadot/util'],
['/util-crypto/', '@polkadot/util-crypto'],
['/keyring/', '@polkadot/keyring'],
'/CONTRIBUTING.md'
]
}
};
-9
View File
@@ -1,9 +0,0 @@
$accentColor = #fd8824
$textColor = #2c3e50
.home .hero .description,
.home .feature h2,
.home .feature p {
color: $textColor
opacity: 0.75
}
+12
View File
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=0.5, maximum-scale=1">
<meta http-equiv="refresh" content="0;URL='https://polkadot.js.org/docs/'" />
<title>Redirecting to https://polkadot.js.org/docs/</title>
</head>
<body>
Redirecting to <a href="https://polkadot.js.org/docs/">https://polkadot.js.org/docs/</a>
</body>
</html>
-51
View File
@@ -1,51 +0,0 @@
---
home: true
heroText:
tagline:
# Bringing JavaScript to the Polkadot world.
# actionText: Repository Overview
# actionLink: /REPOS.md
features:
- title: Keyring
details: Manage user keys allowing for signing, encryption and decryption.
- title: Utilities
details: Various user utilities to work with data and perform check on it.
- title: Crypto
details: A thin and easy-to-use wrapper around cryptographic and hashing libraries.
footer: Apache-2 Licensed | Copyright © 2017-2019 polkadot-js authors and contributors
---
## Welcome
Various useful utility functions that are used across all projects in the [@polkadot](https://polkadot.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate.
::: tip Examples
In a rush and just want examples? [Jump right in](/examples/keyring/) and get a handle on using the various components in your projects.
:::
## Available packages
It is split up into a number of internal packages, namely utilities -
- [keyring](keyring/README.md) Keyring management
- [util](util/README.md) General utilities
- [util-crypto](util-crypto/README.md) Crypto and hashing utilities
## The Polkadot Project
You can read more about the Polkadot Network at [https://polkadot.network/](https://polkadot.network/)
## Github repositories
You can find the Polkadot repositories at:
- [https://github.com/polkadot-js](https://github.com/polkadot-js)
- [https://github.com/paritytech/polkadot](https://github.com/paritytech/polkadot)
- [https://github.com/paritytech/substrate](https://github.com/paritytech/substrate)
This documentation is generated from [https://github.com/polkadot-js/common](https://github.com/polkadot-js/common)
## Contributing
Contribution to Polkadot JS Common are more than welcome. You can [report issues](https://github.com/polkadot-js/common/issues/new) and [log feature requests](https://github.com/polkadot-js/common/issues/new).
-1
View File
@@ -1 +0,0 @@
yarn.lock
@@ -1,5 +0,0 @@
# Create Account
The following example shows how to create and account with keyring.
<<< @/docs/examples/keyring/01_create_account/index.js
@@ -1,21 +0,0 @@
/* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/unbound-method */
/* eslint-disable @typescript-eslint/no-var-requires */
// Import Keyring class and utility function
const Keyring = require('@polkadot/keyring').default;
const stringToU8a = require('@polkadot/util/string/toU8a').default;
async function main () {
// Create account seed for Alice
const ALICE_SEED = 'Alice'.padEnd(32, ' ');
// Create an instance of the Keyring
const keyring = new Keyring();
// Create pair and add Alice to keyring pair dictionary (with account seed)
const pairAlice = keyring.addFromSeed(stringToU8a(ALICE_SEED));
console.log(`Created keyring pair for Alice with address: ${keyring.getPair(pairAlice.address).address}`);
}
main().catch(console.error).finally(() => process.exit());
@@ -1,19 +0,0 @@
{
"name": "01_create_account",
"version": "0.1.0",
"description": "Example showing how to create an account",
"main": "index.js",
"author": "ltfschoen",
"license": "MIT",
"scripts": {
"clean": "rimraf node_modules",
"start": "node index.js"
},
"dependencies": {
"@polkadot/util": "^0.32.10",
"@polkadot/keyring": "^0.32.10"
},
"devDependencies": {
"rimraf": "^2.6.2"
}
}
@@ -1,5 +0,0 @@
# Load Accounts
The following example shows how to load all accounts from the keyring as pairs and convert them into JSON format.
<<< @/docs/examples/keyring/02_load_accounts/index.js
@@ -1,33 +0,0 @@
/* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/unbound-method */
/* eslint-disable @typescript-eslint/no-var-requires */
// Import Keyring class and utility function
const Keyring = require('@polkadot/keyring').default;
const stringToU8a = require('@polkadot/util/string/toU8a').default;
async function main () {
// Create account seed for Alice and Bob
const ALICE_SEED = 'Alice'.padEnd(32, ' ');
const BOB_SEED = 'Bob'.padEnd(32, ' ');
// Create an instance of the Keyring
const keyring = new Keyring();
// Create their pairs with account seeds. Add to keyring pair dictionary
keyring.addFromSeed(stringToU8a(ALICE_SEED));
keyring.addFromSeed(stringToU8a(BOB_SEED));
// Note that we did not use `addFromAddress` since it does not add the
// secret key to memory so we cannot later retrieve it with `getPairs`
// Retrieve all keyring pairs from the keyring pair dictionary
keyring
.getPairs()
.forEach((pair, index) => {
const { address } = pair;
console.log(`\nAccount with index #${index} has json: `, JSON.stringify(keyring.toJson(address), null, 2));
});
}
main().catch(console.error).finally(() => process.exit());
@@ -1,19 +0,0 @@
{
"name": "02_load_accounts",
"version": "0.1.0",
"description": "Example showing how to load accounts",
"main": "index.js",
"author": "ltfschoen",
"license": "MIT",
"scripts": {
"clean": "rimraf node_modules",
"start": "node index.js"
},
"dependencies": {
"@polkadot/util": "^0.32.10",
"@polkadot/keyring": "^0.32.10"
},
"devDependencies": {
"rimraf": "^2.6.2"
}
}
@@ -1,5 +0,0 @@
# Validate Adress
- This function will return true if the address is a legitamate Polkadot address and false if it is not
- Works both with Ed25519 and Sr25519 key types
@@ -1,18 +0,0 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const { encodeAddress, decodeAddress } = require('@polkadot/keyring');
const { isHex, hexToU8a } = require('@polkadot/util');
const address = '5GrpknVvGGrGH3EFuURXeMrWHvbpj3VfER1oX5jFtuGbfzCE';
const isValidAddressPolkadotAddress = () => {
try {
encodeAddress(isHex(address) ? hexToU8a(address) : decodeAddress(address));
return true;
} catch (error) {
return false;
}
};
const isValid = isValidAddressPolkadotAddress();
console.log(isValid);
@@ -1,18 +0,0 @@
{
"name": "03_validate_address",
"version": "0.1.0",
"description": "Example showing how to validate a polkadot address",
"main": "index.js",
"author": "Jesse",
"license": "MIT",
"scripts": {
"clean": "rimraf node_modules",
"start": "node index.js"
},
"dependencies": {
"@polkadot/keyring": "*"
},
"devDependencies": {
"rimraf": "^2.6.2"
}
}
-12
View File
@@ -1,12 +0,0 @@
# Keyring Examples
Here you will find a list of examples that takes you through the basics of connecting to a local node, retrieving data from the Node and chain and execute transactions on the chain.
## Running the examples
From within each folder run the following to install required dependencies and to execute the example:
```shell
yarn;
yarn start
```
@@ -1,5 +0,0 @@
# Encrypt & Decrypt Message using NaCl
The following example shows how to encrypt and decrypt a message with NaCl (pronouced "salt"), which is a Networking and Cryptography library used in util-crypto.
[include](index.js)
@@ -1,26 +0,0 @@
/* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/unbound-method */
/* eslint-disable @typescript-eslint/no-var-requires */
const { naclEncrypt, naclDecrypt } = require('@polkadot/util-crypto');
async function main () {
const secret = new Uint8Array(32);
const messagePreEncryption = new Uint8Array([1, 2, 3, 4, 5, 4, 3, 2, 1]);
const noncePreEncryption = new Uint8Array(24);
// Encrypt the message
const { encrypted, nonce } = naclEncrypt(messagePreEncryption, secret, noncePreEncryption);
// Show contents of the encrypted message
console.log(`Encrypted message: ${JSON.stringify(encrypted, null, 2)}`);
// Decrypt the message
const messageDecrypted = naclDecrypt(encrypted, nonce, secret);
// Convert each Uint8Array to a string for comparison
const isMatch = messagePreEncryption.toString === messageDecrypted.toString;
// Verify that the decrypted message matches the original message
console.log(`Does the decrypted message match the original message? ${isMatch}`);
}
main().catch(console.error).finally(() => process.exit());
@@ -1,18 +0,0 @@
{
"name": "01_encrypt_decrypt_message_nacl",
"version": "0.1.0",
"description": "Example showing how to encrypt and decrypt a message using NaCl",
"main": "index.js",
"author": "ltfschoen",
"license": "MIT",
"scripts": {
"clean": "rimraf node_modules",
"start": "node index.js"
},
"dependencies": {
"@polkadot/util-crypto": "^0.32.10"
},
"devDependencies": {
"rimraf": "^2.6.2"
}
}
@@ -1,5 +0,0 @@
# Sign & Verify Message using NaCl
The following example shows how to sign and verify a message with NaCl (pronouced "salt"), which is a Networking and Cryptography library used in util-crypto.
[include](index.js)
@@ -1,32 +0,0 @@
/* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/unbound-method */
/* eslint-disable @typescript-eslint/no-var-requires */
const { stringToU8a, u8aToHex } = require('@polkadot/util');
const { naclEncrypt, naclKeypairFromSeed, naclSign, naclVerify, randomAsU8a } = require('@polkadot/util-crypto');
async function main () {
// Create account seed for Alice as fallback if generated mnemonic not valid
const seedAlice = 'Alice'.padEnd(32, ' ');
// Generate new public/secret keypair for Alice from the supplied seed
const { secretKey, publicKey } = naclKeypairFromSeed(stringToU8a(seedAlice));
// Encrypt message. Create Uint8Array's filled with random bytes of specified length
const secret = randomAsU8a(32);
const messagePreEncryption = stringToU8a('please send me DOTs');
const noncePreEncryption = randomAsU8a(24);
const { encrypted } = naclEncrypt(messagePreEncryption, secret, noncePreEncryption);
// Sign the message with a valid signature
const messageSignature = naclSign(encrypted, secretKey);
console.log(`Message signature: ${u8aToHex(messageSignature)}`);
// Validate that the message was correctly signed
const isValidSignature = naclVerify(encrypted, messageSignature, publicKey);
console.log(`Was the message correctly signed? ${isValidSignature}`);
}
main().catch(console.error).finally(() => process.exit());
@@ -1,18 +0,0 @@
{
"name": "02_sign_verify_message_nacl",
"version": "0.1.0",
"description": "Example showing how to sign and verify a message using NaCl",
"main": "index.js",
"author": "ltfschoen",
"license": "MIT",
"scripts": {
"clean": "rimraf node_modules",
"start": "node index.js"
},
"dependencies": {
"@polkadot/util-crypto": "^0.32.10"
},
"devDependencies": {
"rimraf": "^2.6.2"
}
}
@@ -1,5 +0,0 @@
# Create & Generate Mnemonic using BIP39
The following example shows how to create and generate mnemonics using BIP39.
[include](index.js)
@@ -1,27 +0,0 @@
/* eslint-disable @typescript-eslint/unbound-method */
/* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/no-var-requires,@typescript-eslint/no-unused-vars */
const { mnemonicGenerate, mnemonicToSeed, mnemonicValidate, naclKeypairFromSeed } = require('@polkadot/util-crypto');
async function main () {
// Create mnemonic string for Alice using BIP39
const mnemonicAlice = mnemonicGenerate();
console.log(`Generated mnemonic: ${mnemonicAlice}`);
// Validate the mnemic string that was generated
const isValidMnemonic = mnemonicValidate(mnemonicAlice);
console.log(`isValidMnemonic: ${isValidMnemonic}`);
// Create valid seed from mnemonic as u8a and convert it to a string
// FIXME - Replace with mnemonicToSeed once exposed
const seedAlice = mnemonicToSeed(mnemonicAlice);
// Generate new public/secret keypair for Alice from the supplied seed
const { secretKey, publicKey } = naclKeypairFromSeed(seedAlice);
// Encrypt, Sign and Validate the message. See Example 'Sign & Verify Message'
}
main().catch(console.error).finally(() => process.exit());
@@ -1,18 +0,0 @@
{
"name": "03_mnemonic_generate_validate_bip39",
"version": "0.1.0",
"description": "Example showing how to sign and verify a message using NaCl",
"main": "index.js",
"author": "ltfschoen",
"license": "MIT",
"scripts": {
"clean": "rimraf node_modules",
"start": "node index.js"
},
"dependencies": {
"@polkadot/util-crypto": "^0.32.10"
},
"devDependencies": {
"rimraf": "^2.6.2"
}
}
-13
View File
@@ -1,13 +0,0 @@
# Util-Crypto Examples
Here you will find a list of examples that takes you through the basics of encrypting and decrypting messages using NaCl, signing a message with a seed and verifying it using NaCl, and generating and validating mnemonics for account seeds.
## Running the examples
From within each folder run the following to install required dependencies and to execute the example:
```shell
yarn;
yarn start
```
+12
View File
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=0.5, maximum-scale=1">
<meta http-equiv="refresh" content="0;URL='https://polkadot.js.org/docs/'" />
<title>Redirecting to https://polkadot.js.org/docs/</title>
</head>
<body>
Redirecting to <a href="https://polkadot.js.org/docs/">https://polkadot.js.org/docs/</a>
</body>
</html>
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

+36
View File
@@ -0,0 +1,36 @@
// Copyright 2017-2021 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
const config = require('@polkadot/dev/config/jest.cjs');
module.exports = Object.assign({}, config, {
moduleNameMapper: {
'@polkadot/hw-ledger-transports(.*)$': '<rootDir>/packages/hw-ledger-transports/src/node',
// eslint-disable-next-line sort-keys
'@polkadot/hw-ledger(.*)$': '<rootDir>/packages/hw-ledger/src/$1',
'@polkadot/keyring(.*)$': '<rootDir>/packages/keyring/src/$1',
'@polkadot/networks(.*)$': '<rootDir>/packages/networks/src/$1',
'@polkadot/util-(crypto)(.*)$': '<rootDir>/packages/util-$1/src/$2',
// eslint-disable-next-line sort-keys
'@polkadot/util(.*)$': '<rootDir>/packages/util/src/$1',
'@polkadot/x-(fetch|randomvalues|textdecoder|textencoder|ws)(.*)$': '<rootDir>/packages/x-$1/src/node',
'@polkadot/x-global(.*)$': '<rootDir>/packages/x-global/src/$1',
'@polkadot/x-rxjs(.*)$': '<rootDir>/packages/x-rxjs/src/$1'
},
modulePathIgnorePatterns: [
'<rootDir>/packages/hw-ledger/build',
'<rootDir>/packages/hw-ledger-transports/build',
'<rootDir>/packages/keyring/build',
'<rootDir>/packages/networks/build',
'<rootDir>/packages/util/build',
'<rootDir>/packages/util-crypto/build',
'<rootDir>/packages/x-fetch/build',
'<rootDir>/packages/x-global/build',
'<rootDir>/packages/x-randomvalues/build',
'<rootDir>/packages/x-rxjs/build',
'<rootDir>/packages/x-textdecoder/build',
'<rootDir>/packages/x-textencoder/build',
'<rootDir>/packages/x-ws/build'
],
transformIgnorePatterns: ['/node_modules/(?!@polkadot)']
});
-16
View File
@@ -1,16 +0,0 @@
// eslint-disable-next-line @typescript-eslint/no-var-requires
const config = require('@polkadot/dev/config/jest');
module.exports = Object.assign({}, config, {
moduleNameMapper: {
'@polkadot/keyring(.*)$': '<rootDir>/packages/keyring/src/$1',
'@polkadot/util-(crypto)(.*)$': '<rootDir>/packages/util-$1/src/$2',
'@polkadot/util(.*)$': '<rootDir>/packages/util/src/$1'
},
modulePathIgnorePatterns: [
'<rootDir>/packages/keyring/build',
'<rootDir>/packages/util/build',
'<rootDir>/packages/util-crypto/build'
],
resolver: './jest.resolver.js'
});
-12
View File
@@ -1,12 +0,0 @@
// Copyright 2017-2020 @polkadot/util authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path');
module.exports = function resolver (file, config) {
return file.includes('package.json')
? path.join(config.basedir.replace('/src', '/'), file)
: config.defaultResolver(file, config);
};
-13
View File
@@ -1,13 +0,0 @@
{
"npmClient": "yarn",
"useWorkspaces": true,
"command": {
"publish": {
"allowBranch": "master"
}
},
"packages": [
"packages/*"
],
"version": "2.3.1"
}
+19 -12
View File
@@ -1,27 +1,34 @@
{
"version": "2.3.1",
"repository": "https://github.com/polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>",
"license": "Apache-2",
"private": true,
"engines": {
"yarn": "^1.10.1"
},
"workspaces": [
"packages/*"
],
"resolutions": {
"typescript": "^3.7.5"
"typescript": "^4.3.5"
},
"scripts": {
"build": "polkadot-dev-build-ts",
"docs": "polkadot-dev-build-docs",
"build:release": "polkadot-ci-ghact-build",
"build:rollup": "polkadot-exec-rollup --config",
"lint": "polkadot-dev-run-lint",
"clean": "polkadot-dev-clean-build",
"networks:crosscheck": "polkadot-dev-run-test packages/networks/src/crosscheck",
"networks:sync": "node packages/networks/scripts/fromSubstrate.mjs",
"postinstall": "polkadot-dev-yarn-only",
"test": "polkadot-dev-run-test --coverage --runInBand",
"test:one": "polkadot-dev-run-test"
"test": "polkadot-dev-run-test --coverage --runInBand --testPathIgnorePatterns crosscheck --testPathIgnorePatterns toMiniSecretCmp",
"test:mnemonicCmp": "polkadot-dev-run-test packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts",
"test:one": "polkadot-dev-run-test --runInBand"
},
"devDependencies": {
"@babel/core": "^7.8.4",
"@polkadot/dev": "^0.40.16",
"@polkadot/ts": "^0.2.3"
}
"@babel/core": "^7.15.0",
"@polkadot/dev": "^0.62.59",
"@polkadot/ts": "^0.4.4",
"@types/ed2curve": "^0.2.2",
"@types/jest": "^26.0.24"
},
"version": "7.2.1",
"packageManager": "yarn@3.0.1"
}
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+2
View File
@@ -0,0 +1,2 @@
# @polkadot/hw-ledger-transports
@@ -0,0 +1,26 @@
{
"name": "@polkadot/hw-ledger-transports",
"version": "7.2.1",
"type": "module",
"repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
"license": "Apache-2.0",
"main": "node.js",
"browser": "browser.js",
"react-native": "react-native.js",
"sideEffects": false,
"engines": {
"node": ">=14.0.0"
},
"dependencies": {
"@babel/runtime": "^7.15.3",
"@ledgerhq/hw-transport": "^6.3.0",
"@ledgerhq/hw-transport-webhid": "^6.4.1",
"@ledgerhq/hw-transport-webusb": "^6.3.0"
},
"optionalDependencies": {
"@ledgerhq/hw-transport-node-hid-singleton": "^6.3.0"
}
}
@@ -0,0 +1,30 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type Transport from '@ledgerhq/hw-transport';
import type { TransportDef } from './types';
import LedgerWebHid from '@ledgerhq/hw-transport-webhid';
import LedgerWebUsb from '@ledgerhq/hw-transport-webusb';
export { packageInfo } from './packageInfo';
export const transports: TransportDef[] = [
// deprecated
// import LedgerU2F from '@ledgerhq/hw-transport-u2f';
// {
// create: (): Promise<Transport> =>
// LedgerU2F.create(),
// type: 'u2f'
// },
{
create: (): Promise<Transport> =>
LedgerWebUsb.create(),
type: 'webusb'
},
{
create: (): Promise<Transport> =>
LedgerWebHid.create(),
type: 'hid'
}
];
+17
View File
@@ -0,0 +1,17 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type Transport from '@ledgerhq/hw-transport';
import type { TransportDef } from './types';
import LedgerHid from '@ledgerhq/hw-transport-node-hid-singleton';
export { packageInfo } from './packageInfo';
export const transports: TransportDef[] = [
{
create: (): Promise<Transport> =>
LedgerHid.create(),
type: 'hid'
}
];
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/hw-ledger-transports authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/hw-ledger-transports', version: '7.2.1' };
@@ -0,0 +1,8 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { TransportDef } from './types';
export { packageInfo } from './packageInfo';
export const transports: TransportDef[] = [];
@@ -0,0 +1,11 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import Transport from '@ledgerhq/hw-transport';
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
export interface TransportDef {
create (): Promise<Transport>;
type: LedgerTypes;
}
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+2
View File
@@ -0,0 +1,2 @@
# @polkadot/hw-ledger
+24
View File
@@ -0,0 +1,24 @@
{
"name": "@polkadot/hw-ledger",
"version": "7.2.1",
"type": "module",
"repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
"license": "Apache-2.0",
"main": "index.js",
"sideEffects": [
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"dependencies": {
"@babel/runtime": "^7.15.3",
"@polkadot/hw-ledger-transports": "7.2.1",
"@polkadot/util": "7.2.1",
"@zondax/ledger-substrate": "^0.17.3"
}
}
+103
View File
@@ -0,0 +1,103 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ResponseBase, SubstrateApp } from '@zondax/ledger-substrate';
import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerTypes, LedgerVersion } from './types';
import { transports } from '@polkadot/hw-ledger-transports';
import { assert, u8aToBuffer } from '@polkadot/util';
import { LEDGER_DEFAULT_ACCOUNT, LEDGER_DEFAULT_CHANGE, LEDGER_DEFAULT_INDEX, LEDGER_SUCCESS_CODE } from './constants';
import { ledgerApps } from './defaults';
export { packageInfo } from './packageInfo';
type Chain = keyof typeof ledgerApps;
// A very basic wrapper for a ledger app -
// - it connects automatically, creating an app as required
// - Promises return errors (instead of wrapper errors)
export class Ledger {
#app: SubstrateApp | null = null;
#chain: Chain;
#transport: LedgerTypes;
constructor (transport: LedgerTypes, chain: Chain) {
// u2f is deprecated
assert(['hid', 'webusb'].includes(transport), () => `Unsupported transport ${transport}`);
assert(Object.keys(ledgerApps).includes(chain), () => `Unsupported chain ${chain}`);
this.#chain = chain;
this.#transport = transport;
}
public async getAddress (confirm = false, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial<AccountOptions> = {}): Promise<LedgerAddress> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerAddress> => {
const { address, pubKey } = await this.#wrapError(app.getAddress(account + accountOffset, change, addressIndex + addressOffset, confirm));
return {
address,
publicKey: `0x${pubKey}`
};
});
}
public async getVersion (): Promise<LedgerVersion> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerVersion> => {
const { device_locked: isLocked, major, minor, patch, test_mode: isTestMode } = await this.#wrapError(app.getVersion());
return {
isLocked,
isTestMode,
version: [major, minor, patch]
};
});
}
public async sign (message: Uint8Array, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial<AccountOptions> = {}): Promise<LedgerSignature> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerSignature> => {
const buffer = u8aToBuffer(message);
const { signature } = await this.#wrapError(app.sign(account + accountOffset, change, addressIndex + addressOffset, buffer));
return {
signature: `0x${signature.toString('hex')}`
};
});
}
#getApp = async (): Promise<SubstrateApp> => {
if (!this.#app) {
const def = transports.find(({ type }) => type === this.#transport);
assert(def, () => `Unable to find a transport for ${this.#transport}`);
const transport = await def.create();
this.#app = ledgerApps[this.#chain](transport);
}
return this.#app;
};
#withApp = async <T> (fn: (app: SubstrateApp) => Promise<T>): Promise<T> => {
try {
const app = await this.#getApp();
return await fn(app);
} catch (error) {
this.#app = null;
throw error;
}
};
#wrapError = async <T extends ResponseBase> (promise: Promise<T>): Promise<T> => {
const result = await promise;
assert(result.return_code === LEDGER_SUCCESS_CODE, () => result.error_message);
return result;
};
}
+10
View File
@@ -0,0 +1,10 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const LEDGER_DEFAULT_ACCOUNT = 0x80000000;
export const LEDGER_DEFAULT_CHANGE = 0x80000000;
export const LEDGER_DEFAULT_INDEX = 0x80000000;
export const LEDGER_SUCCESS_CODE = 0x9000;
+24
View File
@@ -0,0 +1,24 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { knownLedger } from '@polkadot/networks/defaults';
import { ledgerApps } from './defaults';
describe('defaults', (): void => {
it('has entries for each of the apps (hwledger -> networks)', (): void => {
expect(
Object.keys(knownLedger).filter((network) =>
!ledgerApps[network]
)
).toEqual([]);
});
it('has entries for each of the apps (networks -> hwledger)', (): void => {
expect(
Object.keys(ledgerApps).filter((network) =>
!knownLedger[network]
)
).toEqual([]);
});
});
+19
View File
@@ -0,0 +1,19 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type Transport from '@ledgerhq/hw-transport';
import type { SubstrateApp } from '@zondax/ledger-substrate';
import { newCentrifugeApp, newDockApp, newEdgewareApp, newEquilibriumApp, newKusamaApp, newPolkadotApp, newPolymeshApp, newStatemineApp } from '@zondax/ledger-substrate';
// These match up with the keys of the knownLedger object in the @polkadot/networks/defaults.ts
export const ledgerApps: Record<string, (transport: Transport) => SubstrateApp> = {
centrifuge: newCentrifugeApp,
'dock-mainnet': newDockApp,
edgeware: newEdgewareApp,
equilibrium: newEquilibriumApp,
kusama: newKusamaApp,
polkadot: newPolkadotApp,
polymesh: newPolymeshApp,
statemine: newStatemineApp
};
+9
View File
@@ -0,0 +1,9 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { packageInfo as transportInfo } from '@polkadot/hw-ledger-transports/packageInfo';
import { detectPackage, packageInfo as utilInfo } from '@polkadot/util';
import { packageInfo } from './packageInfo';
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname, [transportInfo, utilInfo]);
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './detectPackage';
export * from './bundle';
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/hw-ledger', version: '7.2.1' };
+25
View File
@@ -0,0 +1,25 @@
// Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
export interface AccountOptions {
account: number;
addressIndex: number;
change: number;
}
export interface LedgerAddress {
address: string;
publicKey: string;
}
export interface LedgerSignature {
signature: string;
}
export interface LedgerVersion {
isLocked: boolean;
isTestMode: boolean;
version: [number, number, number];
}
-4
View File
@@ -15,7 +15,3 @@ Classes and Functions can be imported as follows:
```js
import Keyring from '@polkadot/keyring';
```
## Utilities
[Utilities](SUMMARY.md)
+19 -23
View File
@@ -1,34 +1,30 @@
{
"name": "@polkadot/keyring",
"version": "2.3.1",
"version": "7.2.1",
"type": "module",
"description": "Keyring management",
"main": "index.js",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org"
},
"repository": {
"type": "git",
"url": "git+https://github.com/polkadot-js/common.git"
},
"keywords": [
"Polkadot",
"Keyring",
"ed25519"
],
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [
"Jaco Greeff <jacogr@gmail.com>"
],
"maintainers": [],
"contributors": [],
"license": "Apache-2.0",
"bugs": {
"url": "https://github.com/polkadot-js/common/issues"
"main": "index.js",
"sideEffects": [
"./detectPackage.js",
"./detectPackage.cjs"
],
"engines": {
"node": ">=14.0.0"
},
"repository": "github:polkadot-js/common",
"bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/keyring#readme",
"dependencies": {
"@babel/runtime": "^7.8.4",
"@polkadot/util": "^2.3.1",
"@polkadot/util-crypto": "^2.3.1"
"@babel/runtime": "^7.15.3",
"@polkadot/util": "7.2.1",
"@polkadot/util-crypto": "7.2.1"
},
"peerDependencies": {
"@polkadot/util": "7.2.1",
"@polkadot/util-crypto": "7.2.1"
}
}
+14
View File
@@ -0,0 +1,14 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { Keyring } from './keyring';
export { decodeAddress, encodeAddress, setSS58Format } from '@polkadot/util-crypto';
export * from './defaults';
export { createPair } from './pair';
export { packageInfo } from './packageInfo';
export { createTestKeyring } from './testing';
export { createTestPairs } from './testingPairs';
export { Keyring };
+4 -10
View File
@@ -1,14 +1,8 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
// default substrate dev phrase
const DEV_PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk';
export const DEV_PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk';
// seed from the above phrase
const DEV_SEED = '0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e';
export {
DEV_PHRASE,
DEV_SEED
};
export const DEV_SEED = '0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e';
+9
View File
@@ -0,0 +1,9 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { detectPackage, packageInfo as utilInfo } from '@polkadot/util';
import { packageInfo as cryptoInfo } from '@polkadot/util-crypto/packageInfo';
import { packageInfo } from './packageInfo';
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname, [utilInfo, cryptoInfo]);
+442 -42
View File
@@ -1,10 +1,12 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringPair$Json } from './types';
import { hexToU8a, stringToU8a } from '@polkadot/util';
import { cryptoWaitReady, setSS58Format } from '@polkadot/util-crypto';
import { base64Decode, cryptoWaitReady, encodeAddress, randomAsU8a, setSS58Format } from '@polkadot/util-crypto';
import { decodePair } from './pair/decode';
import Keyring from '.';
describe('keypair', (): void => {
@@ -17,57 +19,61 @@ describe('keypair', (): void => {
const publicKeyTwo = new Uint8Array([215, 90, 152, 1, 130, 177, 10, 183, 213, 75, 254, 211, 201, 100, 7, 58, 14, 225, 114, 243, 218, 166, 35, 37, 175, 2, 26, 104, 247, 7, 81, 26]);
const seedOne = stringToU8a('12345678901234567890123456789012');
const seedTwo = hexToU8a('0x9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60');
let keypair: Keyring;
let keyring: Keyring;
beforeEach((): void => {
keypair = new Keyring({ type: 'ed25519' });
keyring = new Keyring({ ss58Format: 42, type: 'ed25519' });
keypair.addFromSeed(seedOne, {});
});
afterEach((): void => {
setSS58Format(42);
keyring.addFromSeed(seedOne, {});
});
it('adds the pair', (): void => {
expect(
keypair.addFromSeed(seedTwo, {}).publicKey
keyring.addFromSeed(seedTwo, {}).publicKey
).toEqual(publicKeyTwo);
});
it('creates via a dev seed', (): void => {
expect(
keyring.addFromUri('//Alice').address
).toEqual('5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu');
});
it('creates a ed25519 pair via mnemonicToSeed', (): void => {
expect(
keypair.addFromUri(
keyring.addFromUri(
'seed sock milk update focus rotate barely fade car face mechanic mercy'
).address
).toEqual('5DkQP32jP4DVJLWWBRBoZF2tpWjqFrcrTBo6H5NcSk7MxKCC');
});
it('adds from a mnemonic', (): void => {
setSS58Format(68);
it('adds from a mnemonic, with correct ss58', (): void => {
setSS58Format(20); // this would not be used
keyring.setSS58Format(2); // this would be used
expect(
keypair.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card', {}).address
).toEqual('7sPsxWPE5DzAyPT3VuoJYw5NTGscx9QYN9oddQx4kALKC3hH');
const pair = keyring.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card', {});
expect(pair.address).toEqual('HSLu2eci2GCfWkRimjjdTXKoFSDL3rBv5Ey2JWCBj68cVZj');
expect(encodeAddress(pair.publicKey)).toEqual('35cDYtPsdG1HUa2n2MaARgJyRz1WKMBZK1DL6c5cX7nugQh1');
});
it('allows publicKeys retrieval', (): void => {
keypair.addFromSeed(seedTwo, {});
keyring.addFromSeed(seedTwo, {});
expect(
keypair.getPublicKeys()
keyring.getPublicKeys()
).toEqual([publicKeyOne, publicKeyTwo]);
});
it('allows retrieval of a specific item', (): void => {
expect(
keypair.getPair(publicKeyOne).publicKey
keyring.getPair(publicKeyOne).publicKey
).toEqual(publicKeyOne);
});
it('allows adding from JSON', (): void => {
expect(
keypair.addFromJson(
keyring.addFromJson(
JSON.parse('{"address":"5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua","encoded":"0xb4a14995d25ab609f3686e9fa45f1fb237cd833f33f00d4b12c51858ca070d96972e47d73aae5eeb0fc06f923826cf0943fdb02c2c2ee30ef52a7912663053940d1da4da66b3a3f520ae07422c1c94b2d95690fca9d1f4a997623bb2923a8833280e19e7f72c3c5cfa343974e60e2b3dc53b404fdaf330756daad5e4e3","encoding":{"content":"pkcs8","type":"xsalsa20-poly1305","version":"0"},"meta":{"isTesting":true,"name":"alice"}}')
).publicKey
).toEqual(
@@ -77,10 +83,22 @@ describe('keypair', (): void => {
it('signs and verifies', (): void => {
const MESSAGE = stringToU8a('this is a message');
const pair = keypair.getPair(publicKeyOne);
const pair = keyring.getPair(publicKeyOne);
const signature = pair.sign(MESSAGE);
expect(pair.verify(MESSAGE, signature)).toBe(true);
expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true);
expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false);
expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false);
});
it('signs and verifies (withType)', (): void => {
const MESSAGE = stringToU8a('this is a message');
const pair = keyring.getPair(publicKeyOne);
const signature = pair.sign(MESSAGE, { withType: true });
expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true);
expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false);
expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false);
});
});
@@ -89,55 +107,59 @@ describe('keypair', (): void => {
const publicKeyTwo = hexToU8a('0x44a996beb1eef7bdcab976ab6d2ca26104834164ecf28fb375600576fcc6eb0f');
const seedOne = stringToU8a('12345678901234567890123456789012');
const seedTwo = hexToU8a('0x9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60');
let keypair: Keyring;
let keyring: Keyring;
beforeEach((): void => {
keypair = new Keyring({ type: 'sr25519' });
keyring = new Keyring({ ss58Format: 42, type: 'sr25519' });
keypair.addFromSeed(seedOne, {});
});
afterEach((): void => {
setSS58Format(42);
keyring.addFromSeed(seedOne, {});
});
it('creates with dev phrase when only path specified', (): void => {
expect(
keypair.createFromUri('//Alice').address
keyring.createFromUri('//Alice').address
).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY');
});
it('creates via dev seed (2-byte encoding)', (): void => {
keyring.setSS58Format(252);
expect(
keyring.addFromUri('//Alice').address
).toEqual('xw8P6urbSAronL3zZFB7dg8p7LLSgKCUFDUgjohnf1iP434ic');
});
it('adds the pair', (): void => {
expect(
keypair.addFromSeed(seedTwo, {}).publicKey
keyring.addFromSeed(seedTwo, {}).publicKey
).toEqual(publicKeyTwo);
});
it('adds from a mnemonic', (): void => {
setSS58Format(68);
keyring.setSS58Format(2);
expect(
keypair.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card', {}).address
).toEqual('7qQGarA4PWjPPVHG4USn1yuuVZvEHN7XZz8o7EbAp48jayZQ');
keyring.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card', {}).address
).toEqual('FSjXNRT2K1R5caeHLPD6WMrqYUpfGZB7ua8W89JFctZ1YqV');
});
it('allows publicKeys retrieval', (): void => {
keypair.addFromSeed(seedTwo, {});
keyring.addFromSeed(seedTwo, {});
expect(
keypair.getPublicKeys()
keyring.getPublicKeys()
).toEqual([publicKeyOne, publicKeyTwo]);
});
it('allows retrieval of a specific item', (): void => {
expect(
keypair.getPair(publicKeyOne).publicKey
keyring.getPair(publicKeyOne).publicKey
).toEqual(publicKeyOne);
});
it('allows adding from JSON', (): void => {
expect(
keypair.addFromJson(
keyring.addFromJson(
JSON.parse('{"address":"5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua","encoded":"0xb4a14995d25ab609f3686e9fa45f1fb237cd833f33f00d4b12c51858ca070d96972e47d73aae5eeb0fc06f923826cf0943fdb02c2c2ee30ef52a7912663053940d1da4da66b3a3f520ae07422c1c94b2d95690fca9d1f4a997623bb2923a8833280e19e7f72c3c5cfa343974e60e2b3dc53b404fdaf330756daad5e4e3","encoding":{"content":"pkcs8","type":"xsalsa20-poly1305","version":"0"},"meta":{"isTesting":true,"name":"alice"}}')
).publicKey
).toEqual(
@@ -147,10 +169,388 @@ describe('keypair', (): void => {
it('signs and verifies', (): void => {
const MESSAGE = stringToU8a('this is a message');
const pair = keypair.getPair(publicKeyOne);
const pair = keyring.getPair(publicKeyOne);
const signature = pair.sign(MESSAGE);
expect(pair.verify(MESSAGE, signature)).toBe(true);
expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true);
expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false);
expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false);
});
it('signs and verifies (withType)', (): void => {
const MESSAGE = stringToU8a('this is a message');
const pair = keyring.getPair(publicKeyOne);
const signature = pair.sign(MESSAGE, { withType: true });
expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true);
expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false);
expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false);
});
});
describe('ecdsa', (): void => {
const seedOne = 'potato act energy ahead stone taxi receive fame gossip equip chest round';
const seedTwo = hexToU8a('0x3c74be003bd9a876be439949ccf2b292bd966c94959a689173b295b326cd6da7');
const publicKeyOne = hexToU8a('0x02c6b6c664db5ef505477bba1cf2f1789c98796b9bb5fa21abd0ac4589bed980e7');
const publicKeyTwo = hexToU8a('0x021da683b913fb28c979ba3e5f1881415cef4b1f58a5d05ed3610a2995e7b4943c');
const addressKeyOne = hexToU8a('0x0cfd0dd2c59a9987b9848919163931b6a42283ffd3d91e92c98b522525a7038f');
let keyring: Keyring;
beforeEach((): void => {
keyring = new Keyring({ ss58Format: 42, type: 'ecdsa' });
keyring.addFromMnemonic(seedOne, {});
});
it('creates with dev phrase when only path specified', (): void => {
expect(
keyring.createFromUri('//Alice').address
).toEqual('5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X');
});
it('adds the pair', (): void => {
expect(
keyring.addFromSeed(seedTwo, {}).publicKey
).toEqual(publicKeyTwo);
});
it('adds from a mnemonic', (): void => {
keyring.setSS58Format(2);
expect(
keyring.addFromMnemonic('moral movie very draw assault whisper awful rebuild speed purity repeat card').address
).toEqual('DrRE1KAcs4pCicX8yJPh7YxkLPQ2vXnCFSVRPQfx38KjEFe');
});
it('allows publicKeys retrieval', (): void => {
keyring.addFromSeed(seedTwo, {});
expect(
keyring.getPublicKeys()
).toEqual([publicKeyOne, publicKeyTwo]);
});
it('allows retrieval of a specific item', (): void => {
expect(
keyring.getPair(addressKeyOne).publicKey
).toEqual(publicKeyOne);
});
it('allows adding from JSON', (): void => {
expect(
keyring.addFromJson(
JSON.parse('{"address":"5DzMsaYFhmpRdErWrP6K6PD7UXzYoeETToSBUrZSvxasqWRz","encoded":"0xa192d39b42bc1601bf61df31039a554228593fadf870bc837b658a5114627aca199fff596260c95fe8994c66a47636cf0270aa08f402ba5541038753960d00e6c3af5e239ec58fb1eef3db7d6bc266f4853bdfe4ed17122d9092d879014d53980d2ee57f6f55a88c38836447d8645008e8815379626addc8f81f80cd49a2","encoding":{"content":"pkcs8","type":"xsalsa20-poly1305","version":"2"},"meta":{}}')
).address
).toEqual('5DzMsaYFhmpRdErWrP6K6PD7UXzYoeETToSBUrZSvxasqWRz');
});
it('allows creation from JSON', (): void => {
keyring.setSS58Format(2);
const pair = keyring.createFromJson(
JSON.parse('{"address":"0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad","encoded":"qIhAhKqtf2iyEoWEr8nmBdksSI8EHHCpgJHToqd6Pl8AgAAAAQAAAAgAAADDZ//fj/BRRj+0+bl1KAlYgoPJp6nEUwiw0fVqO2BW4mjEgQ+iWwJEgDf1JUtecbzOlfhTXBzqX/dIYzLgUADrF4EFEPpboCWiU1iN7W/3DM1cOTRVvTGcbdIqW//z3axhz961qzeJVUIFgllwGe/euLUPIlKbIkiN/CsRYdQ=","encoding":{"content":["pkcs8","ecdsa"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"ecdsa","tags":[],"whenCreated":1600925898271}}')
);
expect(pair.address).toEqual('DHL8HKFuTTR55JzzLmkJRCAfPBbuevKaT9cXikxbEV97Ko8');
expect(pair.publicKey).toEqual(hexToU8a('0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad'));
});
it('fails toJson() when password is incorrect', (): void => {
const pair = keyring.createFromJson(
JSON.parse('{"address":"0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad","encoded":"qIhAhKqtf2iyEoWEr8nmBdksSI8EHHCpgJHToqd6Pl8AgAAAAQAAAAgAAADDZ//fj/BRRj+0+bl1KAlYgoPJp6nEUwiw0fVqO2BW4mjEgQ+iWwJEgDf1JUtecbzOlfhTXBzqX/dIYzLgUADrF4EFEPpboCWiU1iN7W/3DM1cOTRVvTGcbdIqW//z3axhz961qzeJVUIFgllwGe/euLUPIlKbIkiN/CsRYdQ=","encoding":{"content":["pkcs8","ecdsa"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"ecdsa","tags":[],"whenCreated":1600925898271}}')
);
expect(
() => pair.toJson('invalid')
).toThrow(/Unable to decode using the supplied passphrase/);
});
it('pass toJson() when password is correct', (): void => {
const pair = keyring.createFromJson(
JSON.parse('{"address":"0x02fde629668eb2bcc7d748f40a7e597f7c7b363498ff3db31f03ce4854937883ad","encoded":"qIhAhKqtf2iyEoWEr8nmBdksSI8EHHCpgJHToqd6Pl8AgAAAAQAAAAgAAADDZ//fj/BRRj+0+bl1KAlYgoPJp6nEUwiw0fVqO2BW4mjEgQ+iWwJEgDf1JUtecbzOlfhTXBzqX/dIYzLgUADrF4EFEPpboCWiU1iN7W/3DM1cOTRVvTGcbdIqW//z3axhz961qzeJVUIFgllwGe/euLUPIlKbIkiN/CsRYdQ=","encoding":{"content":["pkcs8","ecdsa"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"ecdsa","tags":[],"whenCreated":1600925898271}}')
);
expect(
() => pair.toJson('testing')
).not.toThrow();
});
it('encodes a pair toJSON (and decodes)', (): void => {
const pair = keyring.createFromUri('moral movie very draw assault whisper awful rebuild speed purity repeat card');
const json = pair.toJson('password');
expect(json.address).toEqual('0x03ddca309bd5fedd01f914d6fb76f23aa848a2a520802159215dba5085d7863619');
expect(json.encoding).toEqual({
content: ['pkcs8', 'ecdsa'],
type: ['scrypt', 'xsalsa20-poly1305'],
version: '3'
});
const newPair = keyring.createFromJson(json);
expect(newPair.publicKey).toEqual(pair.publicKey);
expect(
() => newPair.unlock('password')
).not.toThrow();
});
it('signs and verifies', (): void => {
const MESSAGE = stringToU8a('this is a message');
const pair = keyring.getPair(addressKeyOne);
const signature = pair.sign(MESSAGE);
expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true);
expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false);
expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false);
});
it('signs and verifies (withType)', (): void => {
const MESSAGE = stringToU8a('this is a message');
const pair = keyring.getPair(addressKeyOne);
const signature = pair.sign(MESSAGE, { withType: true });
expect(pair.verify(MESSAGE, signature, pair.publicKey)).toBe(true);
expect(pair.verify(MESSAGE, signature, randomAsU8a())).toBe(false);
expect(pair.verify(new Uint8Array(), signature, pair.publicKey)).toBe(false);
});
});
describe('ethereum', (): void => {
// combine mnemonic with derivation path
const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy' + '/m/44\'/60\'/0\'/0/0';
const PRIV_KEY_ONE = '0x070dc3117300011918e26b02176945cc15c3d548cf49fd8418d97f93af699e46';
const ETH_ADDRESS_ONE = '0x31ea8795EE32D782C8ff41a5C68Dcbf0F5B27f6d';
const ETH_ADDRESS_TWO = '0x4119b2e6c3Cb618F4f0B93ac77f9BeeC7FF02887';
let keyring: Keyring;
beforeEach((): void => {
keyring = new Keyring({ type: 'ethereum' });
});
it('creates with dev phrase from the private key', (): void => {
const pair = keyring.addFromSeed(hexToU8a(PRIV_KEY_ONE));
expect(
pair.address
).toEqual(ETH_ADDRESS_ONE);
});
it('creates with dev phrase from the private key in createFromUri', (): void => {
const pair = keyring.createFromUri(PRIV_KEY_ONE);
expect(
pair.address
).toEqual(ETH_ADDRESS_ONE);
});
it('creates with dev phrase with derivation path specified', (): void => {
const pair = keyring.createFromUri(PHRASE);
expect(
pair.address
).toEqual(ETH_ADDRESS_ONE);
});
it('creates with dev phrase with derivation path specified - addFromUri', (): void => {
expect(
keyring.addFromUri(PHRASE).address
).toEqual(ETH_ADDRESS_ONE);
});
it('encodes a pair toJSON (and decodes)', (): void => {
const pair = keyring.createFromUri(PHRASE);
const json = pair.toJson('password');
expect(json.address).toEqual('0x0381351b1b46d2602b0992bb5d5531f9c1696b0812feb2534b6884adc47e2e1d8b'); // this is the public key (different from address for ethereum)
expect(json.encoding).toEqual({
content: ['pkcs8', 'ethereum'],
type: ['scrypt', 'xsalsa20-poly1305'],
version: '3'
});
const newPair = keyring.createFromJson(json);
expect(newPair.publicKey).toEqual(pair.publicKey);
expect(
() => newPair.unlock('password')
).not.toThrow();
});
it('encodes a pair toJSON and back', (): void => {
const pairOriginal = keyring.createFromUri(PHRASE);
const json = pairOriginal.toJson('password');
const pair = keyring.addFromJson(
json
);
expect(pair.address).toEqual(ETH_ADDRESS_ONE);
pair.decodePkcs8('password');
expect(pair.isLocked).toBe(false);
expect(pair.address).toBe(ETH_ADDRESS_ONE);
});
it('allows adding from JSON', (): void => {
const pair = keyring.addFromJson(
JSON.parse('{"address":"KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou","encoded":"U8qFEaghhmNV2PgFhjqzmhyUy37Ok7abfFU2MNsBd0sAgAAAAQAAAAgAAAA3+NniKogzNphiMNueB1X0sGA07B6CaXWfpXPx45iSXoTTprwzU5mOoSqUWO0GKHROI72LN+uJ8Yfv6Ll6JOOV3VPKfoVoFmYm+zDrrMPa0gk5E5kUuSijxADcE6zUrliPVr0Ix/qaghu5SJ7RtWDQLBf4Hp86SJ8Gg6gTSSk=","encoding":{"content":["pkcs8","ethereum"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{}}')
);
expect(pair.publicKey).toEqual(hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077'));
expect(pair.address).toEqual(ETH_ADDRESS_TWO);
pair.decodePkcs8('password');
expect(pair.isLocked).toBe(false);
expect(pair.publicKey).toEqual(hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077'));
expect(pair.address).toBe(ETH_ADDRESS_TWO);
});
it('allows for signing/verification', (): void => {
const MESSAGE = stringToU8a('just some test message');
const signer = keyring.createFromUri(PHRASE);
const verifier = keyring.addFromJson(
JSON.parse('{"address":"KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou","encoded":"U8qFEaghhmNV2PgFhjqzmhyUy37Ok7abfFU2MNsBd0sAgAAAAQAAAAgAAAA3+NniKogzNphiMNueB1X0sGA07B6CaXWfpXPx45iSXoTTprwzU5mOoSqUWO0GKHROI72LN+uJ8Yfv6Ll6JOOV3VPKfoVoFmYm+zDrrMPa0gk5E5kUuSijxADcE6zUrliPVr0Ix/qaghu5SJ7RtWDQLBf4Hp86SJ8Gg6gTSSk=","encoding":{"content":["pkcs8","ethereum"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{}}')
);
const signature = signer.sign(MESSAGE);
const dummyPublic = verifier.publicKey.slice();
dummyPublic[dummyPublic.length - 1] = 0;
expect(verifier.verify(MESSAGE, signature, signer.publicKey)).toBe(true);
expect(verifier.verify(MESSAGE, signature, dummyPublic)).toBe(false);
expect(verifier.verify(new Uint8Array(), signature, signer.publicKey)).toBe(false);
});
it('allows for signing/verification (withType)', (): void => {
const MESSAGE = stringToU8a('just some test message');
const signer = keyring.createFromUri(PHRASE);
const verifier = keyring.addFromJson(
JSON.parse('{"address":"KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou","encoded":"U8qFEaghhmNV2PgFhjqzmhyUy37Ok7abfFU2MNsBd0sAgAAAAQAAAAgAAAA3+NniKogzNphiMNueB1X0sGA07B6CaXWfpXPx45iSXoTTprwzU5mOoSqUWO0GKHROI72LN+uJ8Yfv6Ll6JOOV3VPKfoVoFmYm+zDrrMPa0gk5E5kUuSijxADcE6zUrliPVr0Ix/qaghu5SJ7RtWDQLBf4Hp86SJ8Gg6gTSSk=","encoding":{"content":["pkcs8","ethereum"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{}}')
);
const signature = signer.sign(MESSAGE, { withType: true });
const dummyPublic = verifier.publicKey.slice();
dummyPublic[dummyPublic.length - 1] = 0;
expect(verifier.verify(MESSAGE, signature, signer.publicKey)).toBe(true);
expect(verifier.verify(MESSAGE, signature, dummyPublic)).toBe(false);
expect(verifier.verify(new Uint8Array(), signature, signer.publicKey)).toBe(false);
});
});
describe('raw pair add/create', (): void => {
const json = JSON.parse('{"address":"5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H","encoded":"JQUl8ZpoXv2OMkL9TPylLmcIye2cYhaS9INICbFgZTsAgAAAAQAAAAgAAAAr/0hJOOzokIdBG71TstigLABX9D5xGD7L37ySxtjDrVRg26LL90jLQ47quT9o3bq6ppXMVL6USk7Q4p3WU66bojTFuCDyhpYRhNbUqU6s0rD3S4bhv9lG+pG9vQ4eD5PVQUvxdANmJpYuDg45nrTmsMC5AHGdFGkHW/LHnkmbFid1cvPYkdiBoef5CIEdoly512pxMupVxnJWF1NT","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"name":"hello"}}') as KeyringPair$Json;
const decoded = decodePair('1', base64Decode(json.encoded), json.encoding.type);
const keyring = new Keyring({ ss58Format: 44 });
it('creates a pair from a private/public combo', (): void => {
const pair = keyring.createFromPair(decoded, json.meta, 'sr25519');
expect(pair.address).toEqual('5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H');
expect(pair.isLocked).toEqual(false);
expect(pair.meta.name).toEqual('hello');
});
it('adds a pair from a private/public combo', (): void => {
keyring.addFromPair(decoded, json.meta, 'sr25519');
const pair = keyring.getPairs()[0];
expect(pair.address).toEqual('5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H');
expect(pair.isLocked).toEqual(false);
expect(pair.meta.name).toEqual('hello');
});
});
describe('util', (): void => {
let keyring: Keyring;
beforeEach((): void => {
keyring = new Keyring({ ss58Format: 42 });
});
it('can re-encode an address to Polkadot live', (): void => {
expect(
keyring.encodeAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', 0)
).toEqual('15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5');
});
it('can re-encode an address to keyring default', (): void => {
expect(
keyring.encodeAddress('15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5')
).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY');
});
});
describe('version 2 JSON', (): void => {
const PAIR = '{"address":"5CczAE5AmGrZ93MeVhha3Ywam7j9dKB7cArnH7gtrXcMFJvu","encoded":"0xee8f236e2ac3217ce689692a4afc612220dc77fddaed0482f8f95136a7c3e034cccfbc495410a6e9b2439904974ed1d207abeca536ff6985ceb78edeeb3dc343e561c184c488101af8811d1331430b4ccf0e96ef507132e5132964e8564232e7100d973c5bee7b231dd0c8ad5273f3501515a422c8d7ed9d20a73c0ed17c98ee4588e54844bb73052dcad81f7a1094613d63c162fec7446c88b1fae70e","encoding":{"content":["pkcs8","sr25519"],"type":"xsalsa20-poly1305","version":"2"},"meta":{"genesisHash":"0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e","name":"json v2","tags":[],"whenCreated":1595243159596}}';
const PASS2 = 'versionTwo';
const PASS3 = 'versionThree';
let keyring: Keyring;
beforeEach((): void => {
keyring = new Keyring({ ss58Format: 42 });
});
it('can decode from a version 2 JSON file', (): void => {
const pair = keyring.addFromJson(JSON.parse(PAIR));
pair.decodePkcs8(PASS2);
const json = pair.toJson(PASS3);
expect(pair.isLocked).toBe(false);
expect(pair.address).toBe('5CczAE5AmGrZ93MeVhha3Ywam7j9dKB7cArnH7gtrXcMFJvu');
expect(json.encoding).toEqual({
content: ['pkcs8', 'sr25519'],
type: ['scrypt', 'xsalsa20-poly1305'],
version: '3'
});
pair.decodePkcs8(PASS3);
expect(pair.address).toEqual('5CczAE5AmGrZ93MeVhha3Ywam7j9dKB7cArnH7gtrXcMFJvu');
});
});
describe('version 3 JSON (hex)', (): void => {
const PAIR = '{"address":"FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH","encoded":"0xcd238963070cc4d6806053ee1ac500c7add9c28732bb5d434a332f84a91d9be0008000000100000008000000cf630a1113941b350ddd06697e50399183162e5e9a0e893eafc7f5f4893a223dca5055706b9925b56fdb4304192143843da718e11717daf89cf4f4781f94fb443f61432f782d54280af9eec90bd3069c3cc2d957a42b7c18dc2e9497f623735518e0e49b58f8e4db2c09da3a45dbb935659d015fc94b946cba75b606a6ff7f4e823f6b049e2e6892026b49de02d6dbbd64646fe0933f537d9ea53a70be","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"version3","tags":[],"whenCreated":1595277797639}}';
const PASS3 = 'version3';
let keyring: Keyring;
beforeEach((): void => {
keyring = new Keyring({ ss58Format: 2 });
});
it('can decode from a version 3 JSON file', (): void => {
const pair = keyring.addFromJson(JSON.parse(PAIR));
pair.decodePkcs8(PASS3);
expect(pair.isLocked).toBe(false);
expect(pair.address).toBe('FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH');
});
});
describe('version 3 JSON (base64)', (): void => {
const PAIR = '{"address":"FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH","encoded":"ILjSgYaGvq1zaCz/kx+aqfLaHBjLXz0Qsmr6RnkOVU4AgAAAAQAAAAgAAAB5R2hm5kgXyc0NQYFxvMU4zCdjB+ugs/ibEooqCvuudbaeKn3Ee47NkCqU1ecOJV+eeaVn4W4dRvIpj5kGmQOGsewR+MiQ/B0G9NFh7JXV0qcPlk2QMNW1/mbJrTO4miqL448BSkP7ZOhUV6HFUpMt3B9HwjiRLN8RORcFp0ID/Azs4Jl/xOpXNzbgQGIffWgCIKTxN9N1ku6tdlG4","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"genesisHash":"0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe","name":"version3","tags":[],"whenCreated":1595277797639,"whenEdited":1595278378596}}';
const PASS3 = 'version3';
let keyring: Keyring;
beforeEach((): void => {
keyring = new Keyring({ ss58Format: 2 });
});
it('can decode from a version 3 JSON file', (): void => {
const pair = keyring.addFromJson(JSON.parse(PAIR));
pair.decodePkcs8(PASS3);
expect(pair.isLocked).toBe(false);
expect(pair.address).toBe('FLiSDPCcJ6auZUGXALLj6jpahcP6adVFDBUQznPXUQ7yoqH');
});
});
});
+5 -20
View File
@@ -1,25 +1,10 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { detectPackage } from '@polkadot/util';
import { decodeAddress, encodeAddress, setSS58Format } from '@polkadot/util-crypto';
import './detectPackage';
import Keyring from './keyring';
import { Keyring } from './bundle';
// eslint-disable-next-line no-useless-catch
try {
// eslint-disable-next-line @typescript-eslint/no-var-requires
detectPackage(require('./package.json'), __dirname);
} catch (error) {
throw error;
}
export * from './bundle';
export default Keyring;
export {
Keyring,
decodeAddress,
encodeAddress,
setSS58Format
};
+119 -63
View File
@@ -1,16 +1,23 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { KeypairType } from '@polkadot/util-crypto/types';
import { KeyringInstance, KeyringPair, KeyringPair$Json, KeyringPair$Meta, KeyringOptions } from './types';
import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/json/types';
import type { Keypair, KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from './types';
import { assert, hexToU8a, isNumber, isHex, stringToU8a } from '@polkadot/util';
import { decodeAddress, encodeAddress, keyExtractSuri, keyFromPath, naclKeypairFromSeed as naclFromSeed, schnorrkelKeypairFromSeed as schnorrkelFromSeed, mnemonicToMiniSecret, setSS58Format } from '@polkadot/util-crypto';
import { assert, hexToU8a, isHex, isUndefined, stringToU8a } from '@polkadot/util';
import { base64Decode, decodeAddress, encodeAddress, ethereumEncode, hdEthereum, keyExtractSuri, keyFromPath, mnemonicToLegacySeed, mnemonicToMiniSecret, naclKeypairFromSeed as naclFromSeed, schnorrkelKeypairFromSeed as schnorrkelFromSeed, secp256k1KeypairFromSeed as secp256k1FromSeed } from '@polkadot/util-crypto';
import { DEV_PHRASE } from './defaults';
import createPair from './pair';
import Pairs from './pairs';
import { createPair } from './pair';
import { Pairs } from './pairs';
const keypairFromSeed = {
ecdsa: (seed: Uint8Array): Keypair => secp256k1FromSeed(seed),
ed25519: (seed: Uint8Array): Keypair => naclFromSeed(seed),
ethereum: (seed: Uint8Array): Keypair => secp256k1FromSeed(seed),
sr25519: (seed: Uint8Array): Keypair => schnorrkelFromSeed(seed)
};
/**
* # @polkadot/keyring
@@ -28,31 +35,23 @@ import Pairs from './pairs';
* lookup of a pair for a given account address or public key using `getPair`. JSON metadata associated with
* an account may be obtained using `toJson` accompanied by the account passphrase.
*/
export default class Keyring implements KeyringInstance {
private _pairs: Pairs;
export class Keyring implements KeyringInstance {
readonly #pairs: Pairs;
private _type: KeypairType;
readonly #type: KeypairType;
#ss58?: number;
public decodeAddress = decodeAddress;
public encodeAddress = encodeAddress;
public setSS58Format = setSS58Format;
constructor (options: KeyringOptions = {}) {
options.type = options.type || 'ed25519';
options.ss58Format = isNumber(options.ss58Format)
? options.addressPrefix
: options.ss58Format;
assert(options && ['ed25519', 'sr25519'].includes(options.type || 'undefined'), `Expected a keyring type of either 'ed25519' or 'sr25519', found '${options.type}`);
assert(['ecdsa', 'ethereum', 'ed25519', 'sr25519'].includes(options.type || 'undefined'), () => `Expected a keyring type of either 'ed25519', 'sr25519', 'ethereum' or 'ecdsa', found '${options.type || 'unknown'}`);
this._pairs = new Pairs();
this._type = options.type;
if (isNumber(options.ss58Format)) {
setSS58Format(options.ss58Format);
}
this.#pairs = new Pairs();
this.#ss58 = options.ss58Format;
this.#type = options.type;
}
/**
@@ -70,10 +69,10 @@ export default class Keyring implements KeyringInstance {
}
/**
* @description Returns the type of the keyring, either ed25519 of sr25519
* @description Returns the type of the keyring, ed25519, sr25519 or ecdsa
*/
public get type (): KeypairType {
return this._type;
return this.#type;
}
/**
@@ -81,21 +80,21 @@ export default class Keyring implements KeyringInstance {
* @summary Stores an account, given a keyring pair, as a Key/Value (public key, pair) in Keyring Pair Dictionary
*/
public addPair (pair: KeyringPair): KeyringPair {
return this._pairs.add(pair);
return this.#pairs.add(pair);
}
/**
* @name addFromAddress
* @summary Stores an account, given an account address, as a Key/Value (public key, pair) in Keyring Pair Dictionary
* @description Allows user to explicitely provide separate inputs including account address or public key, and optionally
* @description Allows user to explicitly provide separate inputs including account address or public key, and optionally
* the associated account metadata, and the default encoded value as arguments (that may be obtained from the json file
* of an account backup), and then generates a keyring pair from them that it passes to
* `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.
*/
public addFromAddress (address: string | Uint8Array, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, type: KeypairType = this.type, ignoreChecksum?: boolean): KeyringPair {
public addFromAddress (address: string | Uint8Array, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, type: KeypairType = this.type, ignoreChecksum?: boolean, encType?: EncryptedJsonEncoding[]): KeyringPair {
const publicKey = this.decodeAddress(address, ignoreChecksum);
return this.addPair(createPair(type, { publicKey, secretKey: new Uint8Array(64) }, meta, encoded));
return this.addPair(createPair({ toSS58: this.encodeAddress, type }, { publicKey, secretKey: new Uint8Array() }, meta, encoded, encType));
}
/**
@@ -105,12 +104,8 @@ export default class Keyring implements KeyringInstance {
* of an account backup), and then generates a keyring pair from it that it passes to
* `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.
*/
public addFromJson ({ address, encoded, encoding: { content, version }, meta }: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair {
const type = version === '0' || !Array.isArray(content)
? this.type
: content[1];
return this.addFromAddress(address, meta, hexToU8a(encoded), type, ignoreChecksum);
public addFromJson (json: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair {
return this.addPair(this.createFromJson(json, ignoreChecksum));
}
/**
@@ -125,6 +120,16 @@ export default class Keyring implements KeyringInstance {
return this.addFromUri(mnemonic, meta, type);
}
/**
* @name addFromPair
* @summary Stores an account created from an explicit publicKey/secreteKey combination
*/
public addFromPair (pair: Keypair, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
return this.addPair(
this.createFromPair(pair, meta, type)
);
}
/**
* @name addFromSeed
* @summary Stores an account, given seed data, as a Key/Value (public key, pair) in Keyring Pair Dictionary
@@ -133,11 +138,9 @@ export default class Keyring implements KeyringInstance {
* `addPair` to store in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.
*/
public addFromSeed (seed: Uint8Array, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
const keypair = type === 'sr25519'
? schnorrkelFromSeed(seed)
: naclFromSeed(seed);
return this.addPair(createPair(type, keypair, meta, null));
return this.addPair(
createPair({ toSS58: this.encodeAddress, type }, keypairFromSeed[type](seed), meta, null)
);
}
/**
@@ -151,9 +154,44 @@ export default class Keyring implements KeyringInstance {
);
}
/**
* @name createFromJson
* @description Creates a pair from a JSON keyfile
*/
public createFromJson ({ address, encoded, encoding: { content, type, version }, meta }: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair {
assert(version !== '3' || content[0] === 'pkcs8', () => `Unable to decode non-pkcs8 type, [${content.join(',')}] found}`);
const cryptoType = version === '0' || !Array.isArray(content)
? this.type
: content[1];
const encType = !Array.isArray(type)
? [type]
: type;
assert(['ed25519', 'sr25519', 'ecdsa', 'ethereum'].includes(cryptoType), () => `Unknown crypto type ${cryptoType}`);
// Here the address and publicKey are 32 bytes and isomorphic. This is why the address field needs to be the public key for ethereum type pairs
const publicKey = isHex(address)
? hexToU8a(address)
: this.decodeAddress(address, ignoreChecksum);
const decoded = isHex(encoded)
? hexToU8a(encoded)
: base64Decode(encoded);
return createPair({ toSS58: this.encodeAddress, type: cryptoType as KeypairType }, { publicKey, secretKey: new Uint8Array() }, meta, decoded, encType);
}
/**
* @name createFromPair
* @summary Creates a pair from an explicit publicKey/secreteKey combination
*/
public createFromPair (pair: Keypair, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
return createPair({ toSS58: this.encodeAddress, type }, pair, meta, null);
}
/**
* @name createFromUri
* @summry Creates a Keypair from an suri
* @summary Creates a Keypair from an suri
* @description This creates a pair from the suri, but does not add it to the keyring
*/
public createFromUri (_suri: string, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
@@ -161,21 +199,20 @@ export default class Keyring implements KeyringInstance {
const suri = _suri.startsWith('//')
? `${DEV_PHRASE}${_suri}`
: _suri;
const { password, phrase, path } = keyExtractSuri(suri);
let seed;
const { derivePath, password, path, phrase } = keyExtractSuri(suri);
let seed: Uint8Array;
const isPhraseHex = isHex(phrase, 256);
if (isHex(phrase, 256)) {
if (isPhraseHex) {
seed = hexToU8a(phrase);
} else {
const str = phrase as string;
const str = phrase;
const parts = str.split(' ');
if ([12, 15, 18, 21, 24].includes(parts.length)) {
// FIXME This keeps compat with older versions, but breaks compat with subkey
// seed = type === 'sr25519'
// ? mnemonicToMiniSecret(phrase, password)
// : mnemonicToSeed(phrase, password);
seed = mnemonicToMiniSecret(phrase, password);
seed = type === 'ethereum'
? mnemonicToLegacySeed(phrase, '', false, 64)
: mnemonicToMiniSecret(phrase, password);
} else {
assert(str.length <= 32, 'specified phrase is not a valid mnemonic and is invalid as a raw seed at > 32 bytes');
@@ -183,12 +220,23 @@ export default class Keyring implements KeyringInstance {
}
}
const keypair = type === 'sr25519'
? schnorrkelFromSeed(seed)
: naclFromSeed(seed);
const derived = keyFromPath(keypair, path, type);
const derived = type === 'ethereum'
? isPhraseHex
? keypairFromSeed[type](seed) // for eth, if the private key is provided as suri, it must be derived only once
: hdEthereum(seed, derivePath.substring(1))
: keyFromPath(keypairFromSeed[type](seed), path, type);
return createPair(type, derived, meta, null);
return createPair({ toSS58: this.encodeAddress, type }, derived, meta, null);
}
/**
* @name encodeAddress
* @description Encodes the input into an ss58 representation
*/
public encodeAddress = (address: Uint8Array | string, ss58Format?: number): string => {
return this.type === 'ethereum'
? ethereumEncode(address)
: encodeAddress(address, isUndefined(ss58Format) ? this.#ss58 : ss58Format);
}
/**
@@ -198,7 +246,7 @@ export default class Keyring implements KeyringInstance {
* a key lookup using the provided account address or public key (after decoding it).
*/
public getPair (address: string | Uint8Array): KeyringPair {
return this._pairs.get(address);
return this.#pairs.get(address);
}
/**
@@ -207,7 +255,7 @@ export default class Keyring implements KeyringInstance {
* @description Returns an array list of all the keyring pair values that are stored in the keyring pair dictionary.
*/
public getPairs (): KeyringPair[] {
return this._pairs.all();
return this.#pairs.all();
}
/**
@@ -216,7 +264,7 @@ export default class Keyring implements KeyringInstance {
* @description Returns an array list of all the public keys associated with each of the keyring pair values that are stored in the keyring pair dictionary.
*/
public getPublicKeys (): Uint8Array[] {
return this._pairs
return this.#pairs
.all()
.map(({ publicKey }): Uint8Array =>
publicKey
@@ -228,7 +276,15 @@ export default class Keyring implements KeyringInstance {
* @description Deletes the provided input address or public key from the stored Keyring Pair Dictionary.
*/
public removePair (address: string | Uint8Array): void {
this._pairs.remove(address);
this.#pairs.remove(address);
}
/**
* @name setSS58Format;
* @description Sets the ss58 format for the keyring
*/
public setSS58Format (ss58: number): void {
this.#ss58 = ss58;
}
/**
@@ -240,6 +296,6 @@ export default class Keyring implements KeyringInstance {
* may backup their account to a JSON file that contains this information.
*/
public toJson (address: string | Uint8Array, passphrase?: string): KeyringPair$Json {
return this._pairs.get(address).toJson(passphrase);
return this.#pairs.get(address).toJson(passphrase);
}
}
+6
View File
@@ -0,0 +1,6 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/keyring', version: '7.2.1' };
+4 -5
View File
@@ -1,10 +1,9 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import testingPairs from '../testingPairs';
import { createTestPairs } from '../testingPairs';
const keyring = testingPairs({ type: 'ed25519' }, false);
const keyring = createTestPairs({ type: 'ed25519' }, false);
describe('decode', (): void => {
it('fails when no data provided', (): void => {
+23 -30
View File
@@ -1,12 +1,13 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { assert, stringToU8a, u8aFixLength } from '@polkadot/util';
import { naclDecrypt } from '@polkadot/util-crypto';
import { PairInfo } from './types';
import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/json/types';
import type { PairInfo } from './types';
import { NONCE_LENGTH, PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults';
import { assert, isUndefined, u8aEq } from '@polkadot/util';
import { jsonDecryptData } from '@polkadot/util-crypto';
import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults';
const SEED_OFFSET = PKCS8_HEADER.length;
@@ -14,38 +15,30 @@ type DecodeResult = PairInfo & {
secretKey: Uint8Array;
};
export default function decode (passphrase?: string, encrypted?: Uint8Array | null): DecodeResult {
assert(encrypted, 'No encrypted data available to decode');
export function decodePair (passphrase?: string, encrypted?: Uint8Array | null, _encType?: EncryptedJsonEncoding | EncryptedJsonEncoding[]): DecodeResult {
const encType = Array.isArray(_encType) || isUndefined(_encType)
? _encType
: [_encType];
const decrypted = jsonDecryptData(encrypted, passphrase, encType);
const header = decrypted.subarray(0, PKCS8_HEADER.length);
const encoded = passphrase
? (naclDecrypt(
encrypted.subarray(NONCE_LENGTH),
encrypted.subarray(0, NONCE_LENGTH),
u8aFixLength(stringToU8a(passphrase), 256, true)
) as Uint8Array)
: encrypted;
assert(u8aEq(header, PKCS8_HEADER), 'Invalid Pkcs8 header found in body');
assert(encoded, 'Unable to unencrypt using the supplied passphrase');
const header = encoded.subarray(0, PKCS8_HEADER.length);
assert(header.toString() === PKCS8_HEADER.toString(), 'Invalid Pkcs8 header found in body');
let secretKey = encoded.subarray(SEED_OFFSET, SEED_OFFSET + SEC_LENGTH);
let secretKey = decrypted.subarray(SEED_OFFSET, SEED_OFFSET + SEC_LENGTH);
let divOffset = SEED_OFFSET + SEC_LENGTH;
let divider = encoded.subarray(divOffset, divOffset + PKCS8_DIVIDER.length);
let divider = decrypted.subarray(divOffset, divOffset + PKCS8_DIVIDER.length);
// old-style, we have the seed here
if (divider.toString() !== PKCS8_DIVIDER.toString()) {
if (!u8aEq(divider, PKCS8_DIVIDER)) {
divOffset = SEED_OFFSET + SEED_LENGTH;
secretKey = encoded.subarray(SEED_OFFSET, divOffset);
divider = encoded.subarray(divOffset, divOffset + PKCS8_DIVIDER.length);
secretKey = decrypted.subarray(SEED_OFFSET, divOffset);
divider = decrypted.subarray(divOffset, divOffset + PKCS8_DIVIDER.length);
assert(u8aEq(divider, PKCS8_DIVIDER), 'Invalid Pkcs8 divider found in body');
}
assert(divider.toString() === PKCS8_DIVIDER.toString(), 'Invalid Pkcs8 divider found in body');
const pubOffset = divOffset + PKCS8_DIVIDER.length;
const publicKey = encoded.subarray(pubOffset, pubOffset + PUB_LENGTH);
const publicKey = decrypted.subarray(pubOffset, pubOffset + PUB_LENGTH);
return {
publicKey,
+8 -18
View File
@@ -1,19 +1,9 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
const NONCE_LENGTH = 24;
const PKCS8_DIVIDER = new Uint8Array([161, 35, 3, 33, 0]);
const PKCS8_HEADER = new Uint8Array([48, 83, 2, 1, 1, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]);
const PUB_LENGTH = 32;
const SEC_LENGTH = 64;
const SEED_LENGTH = 32;
export {
NONCE_LENGTH,
PKCS8_DIVIDER,
PKCS8_HEADER,
PUB_LENGTH,
SEC_LENGTH,
SEED_LENGTH
};
export const PKCS8_DIVIDER = new Uint8Array([161, 35, 3, 33, 0]);
export const PKCS8_HEADER = new Uint8Array([48, 83, 2, 1, 1, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]);
export const PUB_LENGTH = 32;
export const SALT_LENGTH = 32;
export const SEC_LENGTH = 64;
export const SEED_LENGTH = 32;
+7 -6
View File
@@ -1,14 +1,15 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import testingPairs from '../testingPairs';
import { NONCE_LENGTH, SCRYPT_LENGTH } from '@polkadot/util-crypto/json/constants';
import { createTestPairs } from '../testingPairs';
import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH } from './defaults';
const PKCS8_LENGTH = PKCS8_DIVIDER.length + PKCS8_HEADER.length + PUB_LENGTH + SEC_LENGTH;
const ENCODED_LENGTH = 157;
const ENCODED_LENGTH = 16 + PKCS8_LENGTH + NONCE_LENGTH + SCRYPT_LENGTH;
const keyring = testingPairs({ type: 'ed25519' }, false);
const keyring = createTestPairs({ type: 'ed25519' }, false);
describe('encode', (): void => {
it('returns PKCS8 when no passphrase supplied', (): void => {
+9 -9
View File
@@ -1,15 +1,14 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { PairInfo } from './types';
import type { PairInfo } from './types';
import { stringToU8a, u8aConcat, u8aFixLength, assert } from '@polkadot/util';
import { naclEncrypt } from '@polkadot/util-crypto';
import { assert, u8aConcat } from '@polkadot/util';
import { naclEncrypt, scryptEncode, scryptToU8a } from '@polkadot/util-crypto';
import { PKCS8_DIVIDER, PKCS8_HEADER } from './defaults';
export default function encode ({ publicKey, secretKey }: PairInfo, passphrase?: string): Uint8Array {
export function encodePair ({ publicKey, secretKey }: PairInfo, passphrase?: string): Uint8Array {
assert(secretKey, 'Expected a valid secretKey to be passed to encode');
const encoded = u8aConcat(
@@ -23,7 +22,8 @@ export default function encode ({ publicKey, secretKey }: PairInfo, passphrase?:
return encoded;
}
const { encrypted, nonce } = naclEncrypt(encoded, u8aFixLength(stringToU8a(passphrase), 256, true));
const { params, password, salt } = scryptEncode(passphrase);
const { encrypted, nonce } = naclEncrypt(encoded, password.subarray(0, 32));
return u8aConcat(nonce, encrypted);
return u8aConcat(scryptToU8a(salt, params), nonce, encrypted);
}
+219 -20
View File
@@ -1,14 +1,16 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { cryptoWaitReady, setSS58Format } from '@polkadot/util-crypto';
import { hexToU8a, u8aToHex } from '@polkadot/util';
import { cryptoWaitReady, encodeAddress as toSS58, setSS58Format } from '@polkadot/util-crypto';
import { PAIRS } from '../testing';
import testingPairs from '../testingPairs';
import createPair from '.';
import { PAIRSSR25519 } from '../testing';
import { createTestPairs } from '../testingPairs';
import { createPair } from '.';
const keyring = testingPairs({ type: 'ed25519' }, false);
const keyring = createTestPairs({ type: 'ed25519' }, false);
const TEST_ADDRESS = '0x4119b2e6c3Cb618F4f0B93ac77f9BeeC7FF02887';
describe('pair', (): void => {
beforeEach(async (): Promise<void> => {
@@ -16,6 +18,10 @@ describe('pair', (): void => {
});
const SIGNATURE = new Uint8Array([80, 191, 198, 147, 225, 207, 75, 88, 126, 39, 129, 109, 191, 38, 72, 181, 75, 254, 81, 143, 244, 79, 237, 38, 236, 141, 28, 252, 134, 26, 169, 234, 79, 33, 153, 158, 151, 34, 175, 188, 235, 20, 35, 135, 83, 120, 139, 211, 233, 130, 1, 208, 201, 215, 73, 80, 56, 98, 185, 196, 11, 8, 193, 14]);
const ENCRYPTED = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 59, 53, 85, 227, 40, 107, 48, 234, 198, 238, 157, 238, 224, 235, 179, 75, 153, 241, 142, 254]);
// the last byte is changed from 254 -> 253
const ENCRYPTED_CHANGED = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 59, 53, 85, 227, 40, 107, 48, 234, 198, 238, 157, 238, 224, 235, 179, 75, 153, 241, 142, 253]);
it('has a publicKey', (): void => {
expect(
@@ -23,6 +29,11 @@ describe('pair', (): void => {
).toEqual(
new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79])
);
expect(
keyring.alice.addressRaw
).toEqual(
new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79])
);
});
it('allows signing', (): void => {
@@ -37,20 +48,143 @@ describe('pair', (): void => {
expect(
keyring.alice.verify(
new Uint8Array([0x61, 0x62, 0x63, 0x64]),
SIGNATURE
SIGNATURE,
keyring.alice.publicKey
)
).toEqual(true);
});
it('fails a correctly signed message (signer changed)', (): void => {
expect(
keyring.alice.verify(
new Uint8Array([0x61, 0x62, 0x63, 0x64]),
SIGNATURE,
keyring.bob.publicKey
)
).toEqual(false);
});
it('fails a correctly signed message (message changed)', (): void => {
expect(
keyring.alice.verify(
new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]),
SIGNATURE
SIGNATURE,
keyring.alice.publicKey
)
).toEqual(false);
});
it('allows vrf sign and verify', (): void => {
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
expect(
keyring.alice.vrfVerify(
message,
keyring.alice.vrfSign(message),
keyring.alice.publicKey
)
).toBe(true);
});
it('fails vrf sign and verify (publicKey changed)', (): void => {
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
expect(
keyring.alice.vrfVerify(
message,
keyring.alice.vrfSign(message),
keyring.bob.publicKey
)
).toBe(false);
});
it('allows encrypting', (): void => {
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
expect(
keyring.alice.encryptMessage(
message,
keyring.bob.publicKey,
new Uint8Array(24)
)
).toEqual(ENCRYPTED);
});
it('validates a correctly encrypted message', (): void => {
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
expect(
keyring.bob.decryptMessage(
ENCRYPTED,
keyring.alice.publicKey
)
).toEqual(message);
});
it('fails a correctly encrypted message (message changed)', (): void => {
expect(
keyring.bob.decryptMessage(
ENCRYPTED_CHANGED,
keyring.alice.publicKey
)
).toEqual(null);
});
it('fails a correctly encrypted message (sender changed)', (): void => {
expect(
keyring.bob.decryptMessage(
ENCRYPTED,
keyring.charlie.publicKey
)
).toEqual(null);
});
it('fails a correctly encrypted message (receiver changed)', (): void => {
expect(
keyring.charlie.decryptMessage(
ENCRYPTED,
keyring.alice.publicKey
)
).toEqual(null);
});
it('validates encryption between ed25519 & sr25519 key pairs', (): void => {
const PASS = 'testing';
const encodedA = keyring.alice.encodePkcs8(PASS);
const encodedB = keyring.bob.encodePkcs8(PASS);
const pairA = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.alice.publicKey });
const pairB = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.bob.publicKey });
pairA.decodePkcs8(PASS, encodedA);
pairB.decodePkcs8(PASS, encodedB);
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
// alice-sr25519 -> bob-ed25519
const encrypted1 = pairA.encryptMessage(message, keyring.bob.publicKey);
// alice-sr25519 -> bob-sr25519
const encrypted2 = pairA.encryptMessage(message, pairB.publicKey);
// alice-ed25519 -> bob-sr25519
const encrypted3 = keyring.alice.encryptMessage(message, pairB.publicKey);
// decrypt: Bob-ed25519 - use alice-ed25519 pubkey
expect(
keyring.bob.decryptMessage(encrypted3, keyring.alice.publicKey)
).toEqual(message);
// decrypt: Bob-ed25519 - use alice-sr25519 pubkey
expect(
keyring.bob.decryptMessage(encrypted1, pairA.publicKey)
).toEqual(message);
// decrypt: Bob-sr25519 - use alice-sr25519 pubkey
expect(
pairB.decryptMessage(encrypted2, pairA.publicKey)
).toEqual(message);
});
it('allows setting/getting of meta', (): void => {
keyring.bob.setMeta({ foo: 'bar', something: 'else' });
@@ -62,15 +196,11 @@ describe('pair', (): void => {
});
it('allows encoding of address with different prefixes', (): void => {
expect(keyring.alice.address).toEqual(
'5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua'
);
expect(keyring.alice.address).toEqual('5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua');
setSS58Format(68);
setSS58Format(255);
expect(keyring.alice.address).toEqual(
'7sGUeMak588SPY2YMmmuKUuLz7u2WQpf74F9dCFtSLB2td9d'
);
expect(keyring.alice.address).toEqual('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k');
setSS58Format(42);
});
@@ -79,18 +209,87 @@ describe('pair', (): void => {
const PASS = 'testing';
const encoded = keyring.alice.encodePkcs8(PASS);
const pair = createPair('sr25519', { publicKey: keyring.alice.publicKey });
const pair = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.alice.publicKey });
pair.decodePkcs8(PASS, encoded);
expect(pair.isLocked).toEqual(false);
});
it('allows derivation on the pair', (): void => {
const alice = createPair('sr25519', { publicKey: PAIRS[0].publicKey, secretKey: PAIRS[0].secretKey }, {});
const alice = createPair({ toSS58, type: 'sr25519' }, { publicKey: PAIRSSR25519[0].publicKey, secretKey: PAIRSSR25519[0].secretKey }, {});
const stash = alice.derive('//stash');
const soft = alice.derive('//funding/0');
expect(stash.publicKey).toEqual(PAIRS[1].publicKey);
expect(stash.publicKey).toEqual(PAIRSSR25519[1].publicKey);
expect(soft.address).toEqual('5ECQNn7UueWHPFda5qUi4fTmTtyCnPvGnuoyVVSj5CboJh9J');
});
it('fails to sign when locked', (): void => {
const pair = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.alice.publicKey });
expect(pair.isLocked).toEqual(true);
expect((): Uint8Array =>
pair.sign(new Uint8Array([0]))
).toThrow('Cannot sign with a locked key pair');
});
describe('ethereum', (): void => {
const PUBLICDERIVED = new Uint8Array([
3, 129, 53, 27, 27, 70, 210, 96,
43, 9, 146, 187, 93, 85, 49, 249,
193, 105, 107, 8, 18, 254, 178, 83,
75, 104, 132, 173, 196, 126, 46, 29,
139
]);
const SECRETDERIVED = new Uint8Array([
7, 13, 195, 17, 115, 0, 1, 25,
24, 226, 107, 2, 23, 105, 69, 204,
21, 195, 213, 72, 207, 73, 253, 132,
24, 217, 127, 147, 175, 105, 158, 70
]);
it('has a valid address from a known public', (): void => {
const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: hexToU8a('0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077') });
expect(pair.address).toEqual(TEST_ADDRESS);
expect(pair.addressRaw).toEqual(hexToU8a(TEST_ADDRESS));
});
it('has a valid address from a known ethereum address (20 length)', (): void => {
const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: new Uint8Array([75, 32, 205, 127, 248, 119, 52, 31, 46, 171, 170, 23, 158, 23, 46, 108, 95, 180, 186, 168]), secretKey: new Uint8Array([]) });
expect(pair.address.toLowerCase()).toEqual('0x4b20cd7ff877341f2eabaa179e172e6c5fb4baa8');
expect(pair.addressRaw).toEqual(hexToU8a('0x4b20cd7ff877341f2eabaa179e172e6c5fb4baa8'));
});
it('converts to json', (): void => {
const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: PUBLICDERIVED, secretKey: SECRETDERIVED });
const json = pair.toJson('password');
expect(json.encoding).toEqual({
content: ['pkcs8', 'ethereum'],
type: ['scrypt', 'xsalsa20-poly1305'],
version: '3'
});
expect(json.address).toEqual(u8aToHex(PUBLICDERIVED));
});
it('denies access to encryptMessage/decryptMessage API', (): void => {
const PASS = 'testing';
const encoded = keyring.alice.encodePkcs8(PASS);
const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: keyring.alice.publicKey });
pair.decodePkcs8(PASS, encoded);
expect(
() => pair.encryptMessage(
new Uint8Array(4), // null message
keyring.bob.publicKey,
new Uint8Array(24)
)
).toThrow('Secp256k1 not supported yet');
});
});
});
+170 -78
View File
@@ -1,64 +1,64 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { Keypair, KeypairType } from '@polkadot/util-crypto/types';
import { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types';
import { PairInfo } from './types';
import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/json/types';
import type { Keypair, KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types';
import type { PairInfo } from './types';
import { u8aConcat, assert } from '@polkadot/util';
import { encodeAddress, keyExtractPath, keyFromPath, naclKeypairFromSeed as naclFromSeed, naclSign, naclVerify, schnorrkelKeypairFromSeed as schnorrkelFromSeed, schnorrkelSign, schnorrkelVerify } from '@polkadot/util-crypto';
import { assert, u8aConcat, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util';
import { blake2AsU8a, convertPublicKeyToCurve25519, convertSecretKeyToCurve25519, ethereumEncode, keccakAsU8a, keyExtractPath, keyFromPath, naclKeypairFromSeed as naclFromSeed, naclOpen, naclSeal, naclSign, schnorrkelKeypairFromSeed as schnorrkelFromSeed, schnorrkelSign, schnorrkelVrfSign, schnorrkelVrfVerify, secp256k1Compress, secp256k1Expand, secp256k1KeypairFromSeed as secp256k1FromSeed, secp256k1Sign, signatureVerify } from '@polkadot/util-crypto';
import decode from './decode';
import encode from './encode';
import toJson from './toJson';
import { decodePair } from './decode';
import { encodePair } from './encode';
import { pairToJson } from './toJson';
interface Setup {
toSS58: (publicKey: Uint8Array) => string;
type: KeypairType;
}
const SIG_TYPE_NONE = new Uint8Array();
const SIG_TYPE_ED25519 = new Uint8Array([0]);
const SIG_TYPE_SR25519 = new Uint8Array([1]);
// const SIG_TYPE_ECDSA = new Uint8Array([2]);
function isEmpty (u8a: Uint8Array): boolean {
return u8a.reduce((count, u8): number => count + u8, 0) === 0;
const TYPE_FROM_SEED = {
ecdsa: secp256k1FromSeed,
ed25519: naclFromSeed,
ethereum: secp256k1FromSeed,
sr25519: schnorrkelFromSeed
};
const TYPE_PREFIX = {
ecdsa: new Uint8Array([2]),
ed25519: new Uint8Array([0]),
ethereum: new Uint8Array([2]),
sr25519: new Uint8Array([1])
};
const TYPE_SIGNATURE = {
ecdsa: (m: Uint8Array, p: Partial<Keypair>) => secp256k1Sign(m, p, 'blake2'),
ed25519: naclSign,
ethereum: (m: Uint8Array, p: Partial<Keypair>) => secp256k1Sign(m, p, 'keccak'),
sr25519: schnorrkelSign
};
const TYPE_ADDRESS = {
ecdsa: (p: Uint8Array) => p.length > 32 ? blake2AsU8a(p) : p,
ed25519: (p: Uint8Array) => p,
ethereum: (p: Uint8Array) => p.length === 20 ? p : keccakAsU8a(secp256k1Expand(p)),
sr25519: (p: Uint8Array) => p
};
// Not 100% correct, since it can be a Uint8Array, but an invalid one - just say "undefined" is anything non-valid
function isLocked (secretKey?: Uint8Array): secretKey is undefined {
return !secretKey || secretKey.length === 0 || secretKey.every((b) => b === 0);
}
function isSr25519 (type: KeypairType): boolean {
return type === 'sr25519';
}
function fromSeed (type: KeypairType, seed: Uint8Array): Keypair {
return isSr25519(type)
? schnorrkelFromSeed(seed)
: naclFromSeed(seed);
}
function multiSignaturePrefix (type: KeypairType): Uint8Array {
return isSr25519(type)
? SIG_TYPE_SR25519
: SIG_TYPE_ED25519;
}
function sign (type: KeypairType, message: Uint8Array, pair: Partial<Keypair>, { withType = false }: SignOptions = {}): Uint8Array {
return u8aConcat(
// for multi-signatures, i.e. with indicator, append the signature type as per
// the MultiSignature enum
withType
? multiSignaturePrefix(type)
: SIG_TYPE_NONE,
isSr25519(type)
? schnorrkelSign(message, pair)
: naclSign(message, pair)
);
}
function verify (type: KeypairType, message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean {
return isSr25519(type)
? schnorrkelVerify(message, signature, publicKey)
: naclVerify(message, signature, publicKey);
function vrfHash (proof: Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array {
return blake2AsU8a(u8aConcat(context || '', extra || '', proof));
}
/**
* @name pair
* @name createPair
* @summary Creates a keyring pair object
* @description Creates a keyring pair object with provided account public key, metadata, and encoded arguments.
* The keyring pair stores the account state including the encoded address and associated metadata.
@@ -88,57 +88,149 @@ function verify (type: KeypairType, message: Uint8Array, signature: Uint8Array,
* an `encoded` property that is assigned with the encoded public key in hex format, and an `encoding`
* property that indicates whether the public key value of the `encoded` property is encoded or not.
*/
export default function createPair (type: KeypairType, { publicKey, secretKey }: PairInfo, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null): KeyringPair {
export function createPair ({ toSS58, type }: Setup, { publicKey, secretKey }: PairInfo, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, encTypes?: EncryptedJsonEncoding[]): KeyringPair {
const decodePkcs8 = (passphrase?: string, userEncoded?: Uint8Array | null): void => {
const decoded = decodePair(passphrase, userEncoded || encoded, encTypes);
if (decoded.secretKey.length === 64) {
publicKey = decoded.publicKey;
secretKey = decoded.secretKey;
} else {
const pair = TYPE_FROM_SEED[type](decoded.secretKey);
publicKey = pair.publicKey;
secretKey = pair.secretKey;
}
};
const recode = (passphrase?: string): Uint8Array => {
isLocked(secretKey) && encoded && decodePkcs8(passphrase, encoded);
encoded = encodePair({ publicKey, secretKey }, passphrase); // re-encode, latest version
encTypes = undefined; // swap to defaults, latest version follows
return encoded;
};
const encodeAddress = (): string => {
const raw = TYPE_ADDRESS[type](publicKey);
return type === 'ethereum'
? ethereumEncode(raw)
: toSS58(raw);
};
return {
get address (): string {
return encodeAddress(publicKey);
return encodeAddress();
},
get addressRaw (): Uint8Array {
const raw = TYPE_ADDRESS[type](publicKey);
return type === 'ethereum'
? raw.slice(-20)
: raw;
},
get isLocked (): boolean {
return isLocked(secretKey);
},
get meta (): KeyringPair$Meta {
return meta;
},
get isLocked (): boolean {
return !secretKey || secretKey.length === 0 || isEmpty(secretKey);
},
get publicKey (): Uint8Array {
return publicKey;
},
get type (): KeypairType {
return type;
},
decodePkcs8: (passphrase?: string, _encoded?: Uint8Array | null): void => {
const decoded = decode(passphrase, _encoded || encoded);
// eslint-disable-next-line sort-keys
decodePkcs8,
decryptMessage: (encryptedMessageWithNonce: string | Uint8Array, senderPublicKey: string | Uint8Array): Uint8Array | null => {
assert(!isLocked(secretKey), 'Cannot encrypt with a locked key pair');
assert(!['ecdsa', 'ethereum'].includes(type), 'Secp256k1 not supported yet');
if (decoded.secretKey.length === 64) {
publicKey = decoded.publicKey;
secretKey = decoded.secretKey;
} else {
const pair = fromSeed(type, decoded.secretKey);
publicKey = pair.publicKey;
secretKey = pair.secretKey;
}
return naclOpen(
u8aToU8a(encryptedMessageWithNonce.slice(24, encryptedMessageWithNonce.length)),
u8aToU8a(encryptedMessageWithNonce.slice(0, 24)),
convertPublicKeyToCurve25519(u8aToU8a(senderPublicKey)),
convertSecretKeyToCurve25519(secretKey)
);
},
derive: (suri: string, meta?: KeyringPair$Meta): KeyringPair => {
assert(secretKey, 'Cannot derive on a locked keypair');
assert(type !== 'ethereum', 'Unable to derive on this keypair');
assert(!isLocked(secretKey), 'Cannot derive on a locked keypair');
const { path } = keyExtractPath(suri);
const derived = keyFromPath({ publicKey, secretKey: secretKey }, path, type);
const derived = keyFromPath({ publicKey, secretKey }, path, type);
return createPair(type, derived, meta, null);
return createPair({ toSS58, type }, derived, meta, null);
},
encodePkcs8: (passphrase?: string): Uint8Array => {
return recode(passphrase);
},
encryptMessage: (message: string | Uint8Array, recipientPublicKey: string | Uint8Array, _nonce?: Uint8Array): Uint8Array => {
assert(!isLocked(secretKey), 'Cannot encrypt with a locked key pair');
assert(!['ecdsa', 'ethereum'].includes(type), 'Secp256k1 not supported yet');
const { nonce, sealed } = naclSeal(u8aToU8a(message), convertSecretKeyToCurve25519(secretKey), convertPublicKeyToCurve25519(u8aToU8a(recipientPublicKey)), _nonce);
return u8aConcat(nonce, sealed);
},
encodePkcs8: (passphrase?: string): Uint8Array =>
encode({ publicKey, secretKey }, passphrase),
lock: (): void => {
secretKey = new Uint8Array(0);
secretKey = new Uint8Array();
},
setMeta: (additional: KeyringPair$Meta): void => {
meta = { ...meta, ...additional };
},
sign: (message: Uint8Array, options?: SignOptions): Uint8Array =>
sign(type, message, { publicKey, secretKey }, options),
toJson: (passphrase?: string): KeyringPair$Json =>
toJson(type, { meta, publicKey }, encode({ publicKey, secretKey }, passphrase), !!passphrase),
verify: (message: Uint8Array, signature: Uint8Array): boolean =>
verify(type, message, signature, publicKey)
sign: (message: string | Uint8Array, options: SignOptions = {}): Uint8Array => {
assert(!isLocked(secretKey), 'Cannot sign with a locked key pair');
return u8aConcat(
options.withType
? TYPE_PREFIX[type]
: SIG_TYPE_NONE,
TYPE_SIGNATURE[type](u8aToU8a(message), { publicKey, secretKey })
);
},
toJson: (passphrase?: string): KeyringPair$Json => {
// NOTE: For ecdsa and ethereum, the publicKey cannot be extracted from the address. For these
// pass the hex-encoded publicKey through to the address portion of the JSON (before decoding)
// unless the publicKey is already an address
const address = ['ecdsa', 'ethereum'].includes(type)
? publicKey.length === 20
? u8aToHex(publicKey)
: u8aToHex(secp256k1Compress(publicKey))
: encodeAddress();
return pairToJson(type, { address, meta }, recode(passphrase), !!passphrase);
},
unlock: (passphrase?: string): void => {
return decodePkcs8(passphrase);
},
verify: (message: string | Uint8Array, signature: Uint8Array, _signerPublic: string | Uint8Array): boolean => {
return signatureVerify(message, signature, TYPE_ADDRESS[type](u8aToU8a(_signerPublic))).isValid;
},
vrfSign: (message: string | Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array => {
assert(!isLocked(secretKey), 'Cannot sign with a locked key pair');
if (type === 'sr25519') {
return schnorrkelVrfSign(message, { secretKey }, context, extra);
}
const proof = TYPE_SIGNATURE[type](u8aToU8a(message), { publicKey, secretKey });
return u8aConcat(vrfHash(proof, context, extra), proof);
},
vrfVerify: (message: string | Uint8Array, vrfResult: Uint8Array, _signerPublic: Uint8Array | string, context?: string | Uint8Array, extra?: string | Uint8Array): boolean => {
const signerPublic = TYPE_ADDRESS[type](u8aToU8a(_signerPublic));
if (type === 'sr25519') {
return schnorrkelVrfVerify(message, vrfResult, publicKey, context, extra);
}
const result = signatureVerify(message, u8aConcat(TYPE_PREFIX[type], vrfResult.subarray(32)), signerPublic);
return result.isValid && u8aEq(vrfResult.subarray(0, 32), vrfHash(vrfResult.subarray(32), context, extra));
}
};
}
+22 -7
View File
@@ -1,8 +1,7 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types';
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types';
import { encodeAddress } from '@polkadot/util-crypto';
@@ -23,24 +22,30 @@ const json: KeyringPair$Json = {
meta
};
export default function everybody (): KeyringPair {
export function nobody (): KeyringPair {
const pair: KeyringPair = {
type: 'ed25519',
address,
addressRaw: publicKey,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
decodePkcs8: (passphrase?: string, encoded?: Uint8Array): void =>
undefined,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
decryptMessage: (encryptedMessageWithNonce: string | Uint8Array, senderPublicKey: string | Uint8Array): Uint8Array | null =>
null,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
derive: (suri: string, meta?: KeyringPair$Meta): KeyringPair =>
pair,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
encodePkcs8: (passphrase?: string): Uint8Array =>
new Uint8Array(0),
meta,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
encryptMessage: (message: string | Uint8Array, recipientPublicKey: string | Uint8Array, _nonce?: Uint8Array): Uint8Array =>
new Uint8Array(),
isLocked: true,
lock: (): void => {
// no locking, it is always locked
},
meta,
publicKey,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
setMeta: (meta: KeyringPair$Meta): void =>
@@ -51,8 +56,18 @@ export default function everybody (): KeyringPair {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
toJson: (passphrase?: string): KeyringPair$Json =>
json,
type: 'ed25519',
// eslint-disable-next-line @typescript-eslint/no-unused-vars
unlock: (passphrase?: string): void =>
undefined,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
verify: (message: Uint8Array, signature: Uint8Array): boolean =>
false,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
vrfSign: (message: Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array =>
new Uint8Array(96),
// eslint-disable-next-line @typescript-eslint/no-unused-vars
vrfVerify: (message: Uint8Array, vrfResult: Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): boolean =>
false
};
+12 -13
View File
@@ -1,10 +1,9 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import testingPairs from '../testingPairs';
import { createTestPairs } from '../testingPairs';
const keyring = testingPairs({ type: 'ed25519' }, false);
const keyring = createTestPairs({ type: 'ed25519' }, false);
describe('toJson', (): void => {
it('creates an unencoded output with no passphrase', (): void => {
@@ -12,15 +11,15 @@ describe('toJson', (): void => {
keyring.alice.toJson()
).toMatchObject({
address: '5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua',
encoded: '0x3053020101300506032b657004220420416c696365202020202020202020202020202020202020202020202020202020d172a74cda4c865912c32ba0a80a57ae69abae410e5ccb59dee84e2f4432db4fa123032100d172a74cda4c865912c32ba0a80a57ae69abae410e5ccb59dee84e2f4432db4f',
encoded: 'MFMCAQEwBQYDK2VwBCIEIEFsaWNlICAgICAgICAgICAgICAgICAgICAgICAgICAg0XKnTNpMhlkSwyugqApXrmmrrkEOXMtZ3uhOL0Qy20+hIwMhANFyp0zaTIZZEsMroKgKV65pq65BDlzLWd7oTi9EMttP',
encoding: {
content: ['pkcs8', 'ed25519'],
type: 'none',
version: '2'
type: ['none'],
version: '3'
},
meta: {
name: 'alice',
isTesting: true
isTesting: true,
name: 'alice'
}
});
});
@@ -28,13 +27,13 @@ describe('toJson', (): void => {
it('creates an encoded output with passphrase', (): void => {
const json = keyring.alice.toJson('testing');
expect(json.encoded).toHaveLength(316);
expect(json.encoded).toHaveLength(268);
expect(json).toMatchObject({
address: '5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua',
encoding: {
content: ['pkcs8', 'ed25519'],
type: 'xsalsa20-poly1305',
version: '2'
type: ['scrypt', 'xsalsa20-poly1305'],
version: '3'
}
});
});
+12 -20
View File
@@ -1,28 +1,20 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { KeypairType } from '@polkadot/util-crypto/types';
import { KeyringPair$Json, KeyringPair$Meta } from '../types';
import type { KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringPair$Json, KeyringPair$Meta } from '../types';
import { u8aToHex } from '@polkadot/util';
import { encodeAddress } from '@polkadot/util-crypto';
import { jsonEncryptFormat } from '@polkadot/util-crypto';
type PairStateJson = KeyringPair$Meta & {
publicKey: Uint8Array;
};
interface PairStateJson {
address: string;
meta: KeyringPair$Meta;
}
export default function toJson (type: KeypairType, { publicKey, meta }: PairStateJson, encoded: Uint8Array, isEncrypted: boolean): KeyringPair$Json {
export function pairToJson (type: KeypairType, { address, meta }: PairStateJson, encoded: Uint8Array, isEncrypted: boolean): KeyringPair$Json {
return {
address: encodeAddress(publicKey),
encoded: u8aToHex(encoded),
encoding: {
content: ['pkcs8', type],
type: isEncrypted
? 'xsalsa20-poly1305'
: 'none',
version: '2'
},
...jsonEncryptFormat(encoded, ['pkcs8', type], isEncrypted),
address,
meta
};
}
+2 -3
View File
@@ -1,6 +1,5 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
export interface PairInfo {
publicKey: Uint8Array;
+53
View File
@@ -0,0 +1,53 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringPair } from '../types';
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady, encodeAddress as toSS58, naclKeypairFromSeed, randomAsU8a, schnorrkelKeypairFromSeed, secp256k1KeypairFromSeed } from '@polkadot/util-crypto';
import { createPair } from '.';
const MESSAGE = 'this is a test message';
const CONTEXT = 'some context';
describe('vrf', (): void => {
let ecdsa: KeyringPair;
let ed25519: KeyringPair;
let sr25519: KeyringPair;
beforeAll(async (): Promise<void> => {
await cryptoWaitReady();
ecdsa = createPair({ toSS58, type: 'ecdsa' }, secp256k1KeypairFromSeed(randomAsU8a()));
ed25519 = createPair({ toSS58, type: 'ed25519' }, naclKeypairFromSeed(randomAsU8a()));
sr25519 = createPair({ toSS58, type: 'sr25519' }, schnorrkelKeypairFromSeed(randomAsU8a()));
});
it('has deterministic signature values for ecdsa', (): void => {
const sig1 = ecdsa.vrfSign(MESSAGE, CONTEXT);
const sig2 = ecdsa.vrfSign(MESSAGE, CONTEXT);
expect(u8aToHex(sig1)).toEqual(u8aToHex(sig2));
expect(ecdsa.vrfVerify(MESSAGE, sig1, ecdsa.publicKey, CONTEXT)).toEqual(true);
expect(ecdsa.vrfVerify(MESSAGE, sig2, ecdsa.publicKey, CONTEXT)).toEqual(true);
});
it('has deterministic signature values for ed25519', (): void => {
const sig1 = ed25519.vrfSign(MESSAGE, CONTEXT);
const sig2 = ed25519.vrfSign(MESSAGE, CONTEXT);
expect(u8aToHex(sig1)).toEqual(u8aToHex(sig2));
expect(ed25519.vrfVerify(MESSAGE, sig1, ed25519.publicKey, CONTEXT)).toEqual(true);
expect(ed25519.vrfVerify(MESSAGE, sig2, ed25519.publicKey, CONTEXT)).toEqual(true);
});
it('has deterministic signature values for sr25519', (): void => {
const sig1 = sr25519.vrfSign(MESSAGE, CONTEXT);
const sig2 = sr25519.vrfSign(MESSAGE, CONTEXT);
expect(u8aToHex(sig1.slice(0, 32))).toEqual(u8aToHex(sig2.slice(0, 32)));
expect(sr25519.vrfVerify(MESSAGE, sig1, sr25519.publicKey, CONTEXT)).toEqual(true);
expect(sr25519.vrfVerify(MESSAGE, sig2, sr25519.publicKey, CONTEXT)).toEqual(true);
});
});
+13 -20
View File
@@ -1,46 +1,39 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { KeyringPairs, KeyringPair } from './types';
import type { KeyringPair, KeyringPairs } from './types';
import { assert, isHex, isU8a, u8aToHex, u8aToU8a } from '@polkadot/util';
import { decodeAddress } from '@polkadot/util-crypto';
type KeyringPairMap = Record<string, KeyringPair>;
export default class Pairs implements KeyringPairs {
private _map: KeyringPairMap;
constructor () {
this._map = {};
}
export class Pairs implements KeyringPairs {
readonly #map: KeyringPairMap = {};
public add (pair: KeyringPair): KeyringPair {
this._map[pair.publicKey.toString()] = pair;
this.#map[decodeAddress(pair.address).toString()] = pair;
return pair;
}
public all (): KeyringPair[] {
return Object.values(this._map);
return Object.values(this.#map);
}
public get (address: string | Uint8Array): KeyringPair {
const pair = this._map[decodeAddress(address).toString()];
const pair = this.#map[decodeAddress(address).toString()];
assert(pair, (): string => {
const formatted: string = isU8a(address) || isHex(address)
assert(pair, () => `Unable to retrieve keypair '${
isU8a(address) || isHex(address)
? u8aToHex(u8aToU8a(address))
: address;
return `Unable to retrieve keypair '${formatted}'`;
});
: address
}'`);
return pair;
}
public remove (address: string | Uint8Array): void {
delete this._map[decodeAddress(address).toString()];
delete this.#map[decodeAddress(address).toString()];
}
}
+74 -55
View File
@@ -1,6 +1,5 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
// From https://github.com/paritytech/substrate/wiki/Secret-URI-Test-Vectors
@@ -11,53 +10,69 @@ import Keyring from '.';
const PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk';
const TESTS = [
{
pk: '0x46ebddef8cd9bb167dc30878d7113b7e168e6f0646beffd77d69d39bad76b47a',
ss: '5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV',
uri: PHRASE
},
{
pk: '0xb69355deefa7a8f33e9297f5af22e680f03597a99d4f4b1c44be47e7a2275802',
ss: '5GC6LfpV352HtJPySfAecb5JdePtf4R9Vq49NUU8RhzgBqgq',
uri: `${PHRASE}///password`
},
{
pk: '0x40b9675df90efa6069ff623b0fdfcf706cd47ca7452a5056c7ad58194d23440a',
ss: '5DXZzrDxHbkQov4QBAY4TjpwnHCMrKXkomTnKSw8UArBEY5v',
uri: `${PHRASE}/foo`
},
{
pk: '0x547d4a55642ec7ebadc0bd29b6e570b8c926059b3c0655d4948075e9a7e6f31e',
ss: '5DyV6fZuvPemWrUqBgWwTSgoV86w6xms3KhkFU6cQcWxU8eP',
uri: `${PHRASE}//foo`
},
{
pk: '0x3841947ffcde6f5fef26fb68b59bb8665637e30e32ec2051f99cf6b9c674fe09',
ss: '5DLU27is5iViNopQb2KxsTyPx6j4vCu8X3sk3j3NNLkPCqKM',
uri: `${PHRASE}//foo/bar`
},
{
pk: '0xdc142f7476a7b0aa262aeccf207f1d18daa90762db393006741e8a31f39dbc53',
ss: '5H3GPTqDSpjkfDwbHy12PD6BWm8jvGSX4xYC8UMprHpTPcRg',
uri: `${PHRASE}/foo//bar`
},
{
pk: '0xa2e56b06407a6d1e819d2fc33fa0ec604b29c2e868b70b3696bb049b8725934b',
ss: '5FkHmNgbg64MwStgCyDi2Uw3ufFu11mqQgmWT9uwK4Lghvpv',
uri: `${PHRASE}//foo/bar//42/69`
},
{
pk: '0x0e0d24e3e1ff2c07f269c99e2e0df8681fda1851ac42fc846ca2daaa90cd8f14',
ss: '5CP8S23JBNXYNpJsL7ESPJBNnUZE6itcfM4EnDxEhaVEU6dT',
uri: `${PHRASE}//foo/bar//42/69///password`
},
{
pk: '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d',
ss: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
uri: `${PHRASE}//Alice`
}
];
const TESTS = {
ecdsa: [
{
pk: '0x020a1091341fe5664bfa1782d5e04779689068c916b04cb365ec3153755684d9a1',
ss: '5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X',
uri: `${PHRASE}//Alice`
}
],
ethereum: [
{
pk: '0x0381351b1b46d2602b0992bb5d5531f9c1696b0812feb2534b6884adc47e2e1d8b',
ss: '0x31ea8795EE32D782C8ff41a5C68Dcbf0F5B27f6d',
uri: "seed sock milk update focus rotate barely fade car face mechanic mercy/m/44'/60'/0'/0/0"
}
],
sr25519: [
{
pk: '0x46ebddef8cd9bb167dc30878d7113b7e168e6f0646beffd77d69d39bad76b47a',
ss: '5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV',
uri: PHRASE
},
{
pk: '0xb69355deefa7a8f33e9297f5af22e680f03597a99d4f4b1c44be47e7a2275802',
ss: '5GC6LfpV352HtJPySfAecb5JdePtf4R9Vq49NUU8RhzgBqgq',
uri: `${PHRASE}///password`
},
{
pk: '0x40b9675df90efa6069ff623b0fdfcf706cd47ca7452a5056c7ad58194d23440a',
ss: '5DXZzrDxHbkQov4QBAY4TjpwnHCMrKXkomTnKSw8UArBEY5v',
uri: `${PHRASE}/foo`
},
{
pk: '0x547d4a55642ec7ebadc0bd29b6e570b8c926059b3c0655d4948075e9a7e6f31e',
ss: '5DyV6fZuvPemWrUqBgWwTSgoV86w6xms3KhkFU6cQcWxU8eP',
uri: `${PHRASE}//foo`
},
{
pk: '0x3841947ffcde6f5fef26fb68b59bb8665637e30e32ec2051f99cf6b9c674fe09',
ss: '5DLU27is5iViNopQb2KxsTyPx6j4vCu8X3sk3j3NNLkPCqKM',
uri: `${PHRASE}//foo/bar`
},
{
pk: '0xdc142f7476a7b0aa262aeccf207f1d18daa90762db393006741e8a31f39dbc53',
ss: '5H3GPTqDSpjkfDwbHy12PD6BWm8jvGSX4xYC8UMprHpTPcRg',
uri: `${PHRASE}/foo//bar`
},
{
pk: '0xa2e56b06407a6d1e819d2fc33fa0ec604b29c2e868b70b3696bb049b8725934b',
ss: '5FkHmNgbg64MwStgCyDi2Uw3ufFu11mqQgmWT9uwK4Lghvpv',
uri: `${PHRASE}//foo/bar//42/69`
},
{
pk: '0x0e0d24e3e1ff2c07f269c99e2e0df8681fda1851ac42fc846ca2daaa90cd8f14',
ss: '5CP8S23JBNXYNpJsL7ESPJBNnUZE6itcfM4EnDxEhaVEU6dT',
uri: `${PHRASE}//foo/bar//42/69///password`
},
{
pk: '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d',
ss: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
uri: `${PHRASE}//Alice`
}
]
};
describe('keyring.addFromUri', (): void => {
const keyring = new Keyring({ type: 'sr25519' });
@@ -66,12 +81,16 @@ describe('keyring.addFromUri', (): void => {
await cryptoWaitReady();
});
TESTS.forEach(({ pk, ss, uri }): void => {
it(`creates ${uri}`, (): void => {
const pair = keyring.addFromUri(uri);
Object.entries(TESTS).forEach(([type, tests]): void => {
describe(type, (): void => {
tests.forEach(({ pk, ss, uri }): void => {
it(`creates ${uri}`, (): void => {
const pair = keyring.addFromUri(uri, {}, type as 'sr25519');
expect(u8aToHex(pair.publicKey)).toEqual(pk);
expect(pair.address).toEqual(ss);
expect(u8aToHex(pair.publicKey)).toEqual(pk);
expect(pair.address).toEqual(ss);
});
});
});
});
});
+82 -29
View File
@@ -1,66 +1,119 @@
// Copyright 2017-2020 @polkadot/keyring authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { KeyringInstance, KeyringOptions } from './types';
import type { KeyringInstance, KeyringOptions } from './types';
import { hexToU8a } from '@polkadot/util';
import { KeypairType } from '@polkadot/util-crypto/types';
import createPair from './pair';
import Keyring from '.';
import { Keyring } from './keyring';
import { createPair } from './pair';
interface PairDef {
name?: string;
publicKey: Uint8Array;
seed: string;
secretKey?: Uint8Array;
type?: 'ed25519' | 'sr25519';
type: KeypairType
}
// NOTE This is not great since we have the secretKey here explicitly, but a testing
// keyring is for testing - what happens is that in most cases the keyring is initialises
// before anything else. Since the sr25519 crypto is async, this creates problems with
// adding the keys when only the keyring is used.
export const PAIRS: PairDef[] = [
export const PAIRSSR25519: PairDef[] = [
{
publicKey: hexToU8a('0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d'),
secretKey: hexToU8a('0x98319d4ff8a9508c4bb0cf0b5a78d760a0b2082c02775e6e82370816fedfff48925a225d97aa00682d6a59b95b18780c10d7032336e88f3442b42361f4a66011'), // nosemgrep
seed: 'Alice',
secretKey: hexToU8a('0x98319d4ff8a9508c4bb0cf0b5a78d760a0b2082c02775e6e82370816fedfff48925a225d97aa00682d6a59b95b18780c10d7032336e88f3442b42361f4a66011'),
publicKey: hexToU8a('0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d')
type: 'sr25519'
},
{
publicKey: hexToU8a('0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f'),
secretKey: hexToU8a('0xe8da6c9d810e020f5e3c7f5af2dea314cbeaa0d72bc6421e92c0808a0c584a6046ab28e97c3ffc77fe12b5a4d37e8cd4afbfebbf2391ffc7cb07c0f38c023efd'), // nosemgrep
seed: 'Alice//stash',
secretKey: hexToU8a('0xe8da6c9d810e020f5e3c7f5af2dea314cbeaa0d72bc6421e92c0808a0c584a6046ab28e97c3ffc77fe12b5a4d37e8cd4afbfebbf2391ffc7cb07c0f38c023efd'),
publicKey: hexToU8a('0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f')
type: 'sr25519'
},
{
publicKey: hexToU8a('0x8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48'),
secretKey: hexToU8a('0x081ff694633e255136bdb456c20a5fc8fed21f8b964c11bb17ff534ce80ebd5941ae88f85d0c1bfc37be41c904e1dfc01de8c8067b0d6d5df25dd1ac0894a325'), // nosemgrep
seed: 'Bob',
secretKey: hexToU8a('0x081ff694633e255136bdb456c20a5fc8fed21f8b964c11bb17ff534ce80ebd5941ae88f85d0c1bfc37be41c904e1dfc01de8c8067b0d6d5df25dd1ac0894a325'),
publicKey: hexToU8a('0x8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48')
type: 'sr25519'
},
{
publicKey: hexToU8a('0xfe65717dad0447d715f660a0a58411de509b42e6efb8375f562f58a554d5860e'),
secretKey: hexToU8a('0xc006507cdfc267a21532394c49ca9b754ca71de21e15a1cdf807c7ceab6d0b6c3ed408d9d35311540dcd54931933e67cf1ea10d46f75408f82b789d9bd212fde'), // nosemgrep
seed: 'Bob//stash',
secretKey: hexToU8a('0xc006507cdfc267a21532394c49ca9b754ca71de21e15a1cdf807c7ceab6d0b6c3ed408d9d35311540dcd54931933e67cf1ea10d46f75408f82b789d9bd212fde'),
publicKey: hexToU8a('0xfe65717dad0447d715f660a0a58411de509b42e6efb8375f562f58a554d5860e')
type: 'sr25519'
},
{
publicKey: hexToU8a('0x90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22'),
secretKey: hexToU8a('0xa8f2d83016052e5d6d77b2f6fd5d59418922a09024cda701b3c34369ec43a7668faf12ff39cd4e5d92bb773972f41a7a5279ebc2ed92264bed8f47d344f8f18c'), // nosemgrep
seed: 'Charlie',
secretKey: hexToU8a('0xa8f2d83016052e5d6d77b2f6fd5d59418922a09024cda701b3c34369ec43a7668faf12ff39cd4e5d92bb773972f41a7a5279ebc2ed92264bed8f47d344f8f18c'),
publicKey: hexToU8a('0x90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22')
type: 'sr25519'
},
{
publicKey: hexToU8a('0x306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20'),
secretKey: hexToU8a('0x20e05482ca4677e0edbc58ae9a3a59f6ed3b1a9484ba17e64d6fe8688b2b7b5d108c4487b9323b98b11fe36cb301b084e920f7b7895536809a6d62a451b25568'), // nosemgrep
seed: 'Dave',
secretKey: hexToU8a('0x20e05482ca4677e0edbc58ae9a3a59f6ed3b1a9484ba17e64d6fe8688b2b7b5d108c4487b9323b98b11fe36cb301b084e920f7b7895536809a6d62a451b25568'),
publicKey: hexToU8a('0x306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20')
type: 'sr25519'
},
{
publicKey: hexToU8a('0xe659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e'),
secretKey: hexToU8a('0x683576abfd5dc35273e4264c23095a1bf21c14517bece57c7f0cc5c0ed4ce06a3dbf386b7828f348abe15d76973a72009e6ef86a5c91db2990cb36bb657c6587'), // nosemgrep
seed: 'Eve',
secretKey: hexToU8a('0x683576abfd5dc35273e4264c23095a1bf21c14517bece57c7f0cc5c0ed4ce06a3dbf386b7828f348abe15d76973a72009e6ef86a5c91db2990cb36bb657c6587'),
publicKey: hexToU8a('0xe659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e')
type: 'sr25519'
},
{
publicKey: hexToU8a('0x1cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c'),
secretKey: hexToU8a('0xb835c20f450079cf4f513900ae9faf8df06ad86c681884122c752a4b2bf74d4303e4f21bc6cc62bb4eeed5a9cce642c25e2d2ac1464093b50f6196d78e3a7426'), // nosemgrep
seed: 'Ferdie',
secretKey: hexToU8a('0xb835c20f450079cf4f513900ae9faf8df06ad86c681884122c752a4b2bf74d4303e4f21bc6cc62bb4eeed5a9cce642c25e2d2ac1464093b50f6196d78e3a7426'),
publicKey: hexToU8a('0x1cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c')
type: 'sr25519'
}
];
export const PAIRSETHEREUM: PairDef[] = [
{
name: 'Alith',
publicKey: hexToU8a('0x02509540919faacf9ab52146c9aa40db68172d83777250b28e4679176e49ccdd9f'),
secretKey: hexToU8a('0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133'), // nosemgrep
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Baltathar',
publicKey: hexToU8a('0x033bc19e36ff1673910575b6727a974a9abd80c9a875d41ab3e2648dbfb9e4b518'),
secretKey: hexToU8a('0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b'), // nosemgrep
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Charleth',
publicKey: hexToU8a('0x0234637bdc0e89b5d46543bcbf8edff329d2702bc995e27e9af4b1ba009a3c2a5e'),
secretKey: hexToU8a('0x0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b'), // nosemgrep
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Dorothy',
publicKey: hexToU8a('0x02a00d60b2b408c2a14c5d70cdd2c205db8985ef737a7e55ad20ea32cc9e7c417c'),
secretKey: hexToU8a('0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68'), // nosemgrep
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Ethan',
publicKey: hexToU8a('0x025cdc005b752651cd3f728fb9192182acb3a9c89e19072cbd5b03f3ee1f1b3ffa'),
secretKey: hexToU8a('0x7dce9bc8babb68fec1409be38c8e1a52650206a7ed90ff956ae8a6d15eeaaef4'), // nosemgrep
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Faith',
publicKey: hexToU8a('0x037964b6c9d546da4646ada28a99e34acaa1d14e7aba861a9055f9bd200c8abf74'),
secretKey: hexToU8a('0xb9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df'), // nosemgrep
seed: "m/44'/40'/0'/0",
type: 'ethereum'
}
];
@@ -68,21 +121,21 @@ export const PAIRS: PairDef[] = [
* @name testKeyring
* @summary Create an instance of Keyring pre-populated with locked test accounts
* @description The test accounts (i.e. alice, bob, dave, eve, ferdie)
* are available on the dev chain and each test account is initialised with DOT funds.
* are available on the dev chain and each test account is initialized with DOT funds.
*/
export default function testKeyring (options: KeyringOptions = {}, isDerived = true): KeyringInstance {
export function createTestKeyring (options: KeyringOptions = {}, isDerived = true): KeyringInstance {
const keyring = new Keyring(options);
const pairs: PairDef[] = (options.type && options.type === 'ethereum') ? PAIRSETHEREUM : PAIRSSR25519;
PAIRS.forEach(({ name, publicKey, secretKey, seed, type }): void => {
pairs.forEach(({ name, publicKey, secretKey, seed, type }): void => {
const meta = {
isTesting: true,
name: name || seed.replace('//', '_').toLowerCase()
};
const pair = !isDerived && !name
? keyring.addFromUri(seed, meta, options.type)
: keyring.addPair(
createPair(type || 'sr25519', { publicKey, secretKey }, meta)
createPair({ toSS58: keyring.encodeAddress, type }, { publicKey, secretKey }, meta)
);
pair.lock = (): void => {

Some files were not shown because too many files have changed in this diff Show More