Andrei Ivasko
6cbbd6da75
refactor!: Keyring migration ( #9695 )
...
<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->
## Description
The draft PR #9222
Closes : #7108
<!-- Add a description of the changes that this PR introduces and the files that
are the most critical to review. -->
- implement proto definition for `Record`
- rename `Info.go` to `legacyInfo.go` within `keyring` package
- implement CLI `migrate` command that migrates all keys from legacyInfo to proto according to @robert-zaremba migration [algorithm](https://github.com/cosmos/cosmos-sdk/pull/9222/#discussion_r624683839 )
- remove legacy keybase entirely.
- add `Migrate` and `MigrateAll` functions in `keyring.go` for single key and all keys migration
- add tests
- fix tests
---
### Author Checklist
*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*
I have...
- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json ) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting ))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules )
- [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing )
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc )
- [ ] updated the relevant documentation or specification
- [x] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed
### Reviewers Checklist
*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*
I have...
- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json ) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
2021-09-20 12:02:15 +00:00
Robert Zaremba
c66f1f7efe
crypto: add secp256r1 ( #8559 )
...
* Optimize secp256k1 hashing
* Add ADR-028 related functions
* Update ed25519
* fix errors/handle
* fix build
* fix build
* Add tests and update function names
* wip
* Use LengthPrefix for composed addresses
* add tests for NewComposed
* add module hash function
* fix append
* rollback ed25519 ADR-28 update
* rollback ed25519 ADR-28 test
* Adding Module tests and convert tests to test suite
* convert store_key_test.go to test suite
* rollback test check comment
* any.pb.go update
* generated proto files
* wip
* renames
* wip2
* add String method to PBBytes
* wip3
* add pubkey tests
* adding cryptotypes.PrivKey methods
* re-enable test
* fix equals test
* fix ecdsa object receiver
* add ProtoMarshaler implementation and tests
* move code to init and add interface registry
* add bytes tests
* merge Unmarshal with UnmarshalAmino
* implement ProtoMarshaler to ecdsaSK
* remove bytes.go
* add private key marshaling tests
* break tests into 2 suites
* add signature tests
* remove TODO
* remove bytes.proto
* adding changelog
* Update CHANGELOG.md
* Update crypto/keys/ecdsa/ecdsa_privkey.go
* Update crypto/keys/ecdsa/ecdsa_pubkey.go
* comments: add dot (.) at the end
* update comments
* update commented code
* rename files
* remove Amino methods
* use 2 spaces in protocgen.sh
* rollback changes in protocgen.sh
* add MessageName
* rework ecdsa proto structure
* move ecdsa to internal package
* add secp256r1 proto
* refactore proto definition for secp256r1
* fix err check
* update comments
* create const for fieldSize+1
* simplify the PubKey.String test
* Apply suggestions from code review
Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com>
* Update doc comments: SDK Interface -> sdk.Interface
* rename init.go to doc.go
* Add PubKey.Type() test
* Revert "Update doc comments: SDK Interface -> sdk.Interface"
This reverts commit 01f2b4f5efcd79a452483bcda152db54a8fbfee2.
* Use cryptotypes.Address instead of tmcrypto
* Revert "Use cryptotypes.Address instead of tmcrypto"
This reverts commit 15b866ae67bdb7ca4872f4089fcab19f9e2e3608.
This issue will be solved in https://github.com/cosmos/cosmos-sdk/issues/8775
* add link to ANSI X9.62
* move init.go -> doc.go
* use proto.MessageName()
Co-authored-by: Alessio Treglia <alessio@tendermint.com>
Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com>
2021-03-04 12:29:48 +00:00
Marie Gauthier
90e9370bd8
Replace tmcrypto.PubKey by our own cryptotypes.PubKey ( #7419 )
...
* WIP on removing tm pub/privkey
* Fix part of crypto tests
* Add PrivKeyLedgerSecp256K1 proto type
* Use BasePrivKey for ledger priv key type
* Refacto continued
* First round
* x/staking
* Continue porting
* x/* done
* Make build pass
* More conversion
* Remove IntoTmPubKey
* Fix test
* Remove crypto.PubKey in some other places
* Revert ledger changes
* Fix comment
* Remove useless function
* Add To/FromTmPublicKey
* Add migrate tests
* Fix test
* Fix another test
* Rename tm conversion functions
* Less code
* Rename BasePrivKey to LedgerPrivKey
* Add changelog
* Rename functions
Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>
Co-authored-by: Alessio Treglia <alessio@tendermint.com>
2020-11-09 16:01:43 +00:00
Robert Zaremba
6bc8ff2dfe
Use any as validator pubkey ( #7597 )
...
* protobuf pubkey type update
* wip2
* wip3
* solving types.NewValidator issues
* remove bech32 from validator type assignment
* update Validator interface
* Changelog update
* wip4
* update genutil
* fix simapp & x/ibc/testing tests
* update staking
* changelog update
* fix import cycle in tests
* fix amino panic on TestValidatorMarshalUnmarshalJSON
* fix TestValidatorMarshalUnmarshalJSON consensus_pubkey check
* Add UnpackInterfaces to HistoricalInfo
* fix TestHistoricalInfo
* update todos
* fix: Expecting ed25519.PubKey to implement proto.Message
* fix linter issues
* Fix migrate test
* Update CHANGELOG.md
Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com>
* review comments
* cosmetic changes
* add UnpackInterfaces got GenesisRandomized test
* Validator.Equal reuses Validator.MinEqual
* fix test
* use Validator.Equal in tests
* Fix staking simulation TestRandomizedGenState
* Remove TODO
* use HistoricalInfo.Equal
* use proto.Equal
* rename Validator.GetConsPubKey to TmConsPubKey
* prefer require.Equal over reflect.DeepEqual
* SetHistoricalInfo using a pointer
* Fix TestQueryDelegation test
* Fix TestQueryValidators test
* Fix TestSimulateMsgUnjail test
* experiement with LegacyAmino instances
* Register codecs in all simapp tests
* Fix cli_test compilation problems
* fix typo sdk -> std
* fix typo
* fix TestPlanStringer
* Rename to MakeEncodingConfig
* Remove RegisterCodecsTests
* Use gRPC in GetCmdQueryValidators
* Empty status
* fix info log check
* linter fixes
* rename simapparams to simappparams
* Update simapp/test_helpers.go
Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com>
* comments updates
* use valAddr1 instead of sdk.ValAddress(pk1.Address().Bytes())
Co-authored-by: Cory Levinson <cjlevinson@gmail.com>
Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>
Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com>
2020-10-23 12:07:52 +00:00
Marie Gauthier
91ca8ad3c1
Migrate BaseAccount PubKey to use Any ( #7268 )
...
* WIP on BaseAccount protobuf pub_key
* WIP on BaseAccount.PubKey
* WIP on BaseAccount pub key
* Update PubKey
* Update Account
* Docs
* WIP on protobuf keys
* Use Type() and Bytes() in sr25519 pub key Equals
* Add tests
* Add few more tests
* Update other pub/priv key types Equals
* Fix PrivKey's Sign method
* Rename variables in tests
* Fix infinite recursive calls
* Use tm ed25519 keys
* Add Sign and VerifySignature tests
* Remove ed25519 and sr25519 references
* proto linting
* Add proto crypto file
* Implement some of the new multisig proto type methods
* Add tests for MultisigThresholdPubKey
* Add tests for pubkey pb/amino conversion functions
* Move crypto types.go and register new proto pubkeys
* Add missing pointer ref
* Address review comments
* panic in MultisigThresholdPubKey VerifySignature
* Fix compile errors
* Remove pk conversion in ante handler
* Use internal crypto.PubKey in multisig
* Add tests for MultisigThresholdPubKey VerifyMultisignature
* Only keep LegacyAminoMultisigThresholdPubKey and move to proto keys to v1
* Remove conversion functions and introduce internal PubKey type
* Override Amino marshaling for proto pubkeys
* Merge master
* Make proto-gen
* Start removal of old PubKeyMultisigThreshold references
* Fix tests
* Fix solomachine
* Fix ante handler tests
* Pull latest go-amino
* Remove ed25519
* Remove old secp256k1 PubKey and PrivKey
* Uncomment test case
* Fix linting issues
* More linting
* Revert tests keys values
* Add Amino overrides to proto keys
* Add pubkey test
* Fix tests
* Use threshold isntead of K
* Standardize Type
* Revert standardize types commit
* Fix build
* Fix lint
* Fix lint
* Add comment
* Register crypto.PubKey
* Add empty key in BuildSimTx
* Simplify proto names
* Unpack interfaces for signing desc
* Fix IBC tests?
* Format proto
* Use secp256k1 in ibc
* Fixed merge issues
* Uncomment tests
* Update x/ibc/testing/solomachine.go
* UnpackInterfaces for solomachine types
* Remove old multisig
* Add amino marshal for multisig
* Fix lint
* Correctly register amino
* One test left!
* Remove old struct
* Fix test
* Fix test
* Unpack into tmcrypto
* Remove old threshold pubkey tests
* Fix register amino
* Fix lint
* Use sdk crypto PubKey in multisig UnpackInterfaces
* Potential fix?
* Register LegacyAminoPubKey
* Register our own PubKey
* Register tmcrypto PubKey
* Register both PubKeys
* Register interfaces in test
* Refactor fiels
* Add comments
* Remove old cosmos-sdk/crypto/keys reference
* Use anil's suggestion
* Add norace back
* Use our own ed25519
* Fix pubkey types
* Fix network tests
* Fix more tests
* Make ibc work?
* Use TM pubkey in NewValidator
* Fix lint
* Put interface in tpyes
* rerun CI
* Better name register
* Remove stray code
* Add ed25519 tests
* Check nil
* Correct interface impl assert
* rerun CI
* Add fix for Bech32
* Address comments
* FIx lint
* Add tests for solomachine unpack interfaces
* Fix query tx by hash
* Better name in amino register
* Fix lint
* Add back ed25519 test (fixes #7352 )
* go mod tidy
* Fix merge issues
* Sort import
* Add test for backwards-compatibility
* Fix tests
* Fix merge issue
* Update client/context.go
Co-authored-by: Cory <cjlevinson@gmail.com>
* Update types/address.go
Co-authored-by: Cory <cjlevinson@gmail.com>
* Address feedback
* Add comment
* Fix BaseAccount SetPubKey and address further comments
* Lint
* Remove unnecessary use of copy in getPubKeyFromString
* Update comment
Co-authored-by: Aaron Craelius <aaronc@users.noreply.github.com>
Co-authored-by: Aaron Craelius <aaron@regen.network>
Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Cory <cjlevinson@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-09-25 08:41:16 +00:00
Amaury Martiny
7cd25abb87
Proto Tx with Any ( #7276 )
...
* WIP on protobuf keys
* Use Type() and Bytes() in sr25519 pub key Equals
* Add tests
* Add few more tests
* Update other pub/priv key types Equals
* Fix PrivKey's Sign method
* Rename variables in tests
* Fix infinite recursive calls
* Use tm ed25519 keys
* Add Sign and VerifySignature tests
* Remove ed25519 and sr25519 references
* proto linting
* Add proto crypto file
* Implement some of the new multisig proto type methods
* Add tests for MultisigThresholdPubKey
* Add tests for pubkey pb/amino conversion functions
* Move crypto types.go and register new proto pubkeys
* Add missing pointer ref
* Address review comments
* panic in MultisigThresholdPubKey VerifySignature
* Use internal crypto.PubKey in multisig
* Add tests for MultisigThresholdPubKey VerifyMultisignature
* Only keep LegacyAminoMultisigThresholdPubKey and move to proto keys to v1
* Remove conversion functions and introduce internal PubKey type
* Override Amino marshaling for proto pubkeys
* Merge master
* Make proto-gen
* Start removal of old PubKeyMultisigThreshold references
* Fix tests
* Fix solomachine
* Fix ante handler tests
* Pull latest go-amino
* Remove ed25519
* Remove old secp256k1 PubKey and PrivKey
* Uncomment test case
* Fix linting issues
* More linting
* Revert tests keys values
* Add Amino overrides to proto keys
* Add pubkey test
* Fix tests
* Use threshold isntead of K
* Standardize Type
* Revert standardize types commit
* Fix build
* Fix lint
* Fix lint
* Add comment
* Register crypto.PubKey
* Add empty key in BuildSimTx
* Simplify proto names
* Unpack interfaces for signing desc
* Fix IBC tests?
* Format proto
* Use secp256k1 in ibc
* Fixed merge issues
* Uncomment tests
* Update x/ibc/testing/solomachine.go
* UnpackInterfaces for solomachine types
* Remove old multisig
* Add amino marshal for multisig
* Fix lint
* Correctly register amino
* One test left!
* Remove old struct
* Fix test
* Fix test
* Unpack into tmcrypto
* Remove old threshold pubkey tests
* Fix register amino
* Fix lint
* Use sdk crypto PubKey in multisig UnpackInterfaces
* Potential fix?
* Register LegacyAminoPubKey
* Register our own PubKey
* Register tmcrypto PubKey
* Register both PubKeys
* Register interfaces in test
* Refactor fiels
* Add comments
* Use anil's suggestion
* Add norace back
* Check nil
* Address comments
* FIx lint
* Add tests for solomachine unpack interfaces
* Fix query tx by hash
* Better name in amino register
* Display StdTx instead of proto Tx
* Remove useless check
Co-authored-by: Aaron Craelius <aaronc@users.noreply.github.com>
Co-authored-by: blushi <marie.gauthier63@gmail.com>
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
2020-09-21 16:48:28 +00:00