signer, clef: implement EIP191/712 (#17789)
* Named functions and defined a basic EIP191 content type list * Written basic content type functions * Added ecRecover method in the clef api * Updated the extapi changelog and addded indications in the README * Changed the version of the external API * Added tests for 0x45 * Implementing UnmarshalJSON() for TypedData * Working on TypedData * Solved the auditlog issue * Changed method to signTypedData * Changed mimes and implemented the 'encodeType' function for EIP-712 * Polished docstrings, ran goimports and swapped fmt.Errorf with errors.New where possible * Drafted recursive encodeData * Ran goimports and gofmt * Drafted first version of EIP-712, including tests * Temporarily switched to using common.Address in tests * Drafted text/validator and and rewritten []byte as hexutil.Bytes * Solved stringified address encoding issue * Changed the property type required by signData from bytes to interface{} * Fixed bugs in 'data/typed' signs * Brought legal warning back after temporarily disabling it for development * Added example RPC calls for account_signData and account_signTypedData * Named functions and defined a basic EIP191 content type list * Written basic content type functions * Added ecRecover method in the clef api * Updated the extapi changelog and addded indications in the README * Added tests for 0x45 * Implementing UnmarshalJSON() for TypedData * Working on TypedData * Solved the auditlog issue * Changed method to signTypedData * Changed mimes and implemented the 'encodeType' function for EIP-712 * Polished docstrings, ran goimports and swapped fmt.Errorf with errors.New where possible * Drafted recursive encodeData * Ran goimports and gofmt * Drafted first version of EIP-712, including tests * Temporarily switched to using common.Address in tests * Drafted text/validator and and rewritten []byte as hexutil.Bytes * Solved stringified address encoding issue * Changed the property type required by signData from bytes to interface{} * Fixed bugs in 'data/typed' signs * Brought legal warning back after temporarily disabling it for development * Added example RPC calls for account_signData and account_signTypedData * Polished and fixed PR * Polished and fixed PR * Solved malformed data panics and also wrote tests * Solved malformed data panics and also wrote tests * Added alphabetical sorting to type dependencies * Added alphabetical sorting to type dependencies * Added pretty print to data/typed UI * Added pretty print to data/typed UI * signer: more tests for typed data * signer: more tests for typed data * Fixed TestMalformedData4 errors and renamed IsValid to Validate * Fixed TestMalformedData4 errors and renamed IsValid to Validate * Fixed more new failing tests and deanonymised some functions * Fixed more new failing tests and deanonymised some functions * Added types to EIP712 output in cliui * Added types to EIP712 output in cliui * Fixed regexp issues * Fixed regexp issues * Added pseudo-failing test * Added pseudo-failing test * Fixed false positive test * Fixed false positive test * Added PrettyPrint method * Added PrettyPrint method * signer: refactor formatting and UI * signer: make ui use new message format for signing * Fixed breaking changes * Fixed rules_test failing test * Added extra regexp for reference types * signer: more hard types * Fixed failing test, formatted files * signer: use golang/x keccak * Fixed goimports error * clef, signer: address some review concerns * Implemented latest recommendations * Fixed comments and uintint256 issue * accounts, signer: fix mimetypes, add interface to sign data with passphrase * signer, accounts: remove duplicated code, pass hash preimages to signing * signer: prevent panic in type assertions, make cliui print rawdata as quotable-safe * signer: linter fixes, remove deprecated crypto dependency * accounts: fix goimport
Showing
- accounts/accounts.go 33 additions, 15 deletionsaccounts/accounts.go
- accounts/external/backend.go 6 additions, 3 deletionsaccounts/external/backend.go
- accounts/keystore/wallet.go 20 additions, 10 deletionsaccounts/keystore/wallet.go
- accounts/usbwallet/wallet.go 7 additions, 0 deletionsaccounts/usbwallet/wallet.go
- cmd/clef/README.md 120 additions, 14 deletionscmd/clef/README.md
- cmd/clef/extapi_changelog.md 10 additions, 0 deletionscmd/clef/extapi_changelog.md
- cmd/clef/intapi_changelog.md 4 additions, 0 deletionscmd/clef/intapi_changelog.md
- cmd/clef/main.go 35 additions, 3 deletionscmd/clef/main.go
- consensus/clique/clique.go 1 addition, 1 deletionconsensus/clique/clique.go
- signer/core/abihelper.go 3 additions, 4 deletionssigner/core/abihelper.go
- signer/core/abihelper_test.go 2 additions, 3 deletionssigner/core/abihelper_test.go
- signer/core/api.go 14 additions, 60 deletionssigner/core/api.go
- signer/core/api_test.go 0 additions, 39 deletionssigner/core/api_test.go
- signer/core/auditlog.go 21 additions, 6 deletionssigner/core/auditlog.go
- signer/core/cliui.go 6 additions, 3 deletionssigner/core/cliui.go
- signer/core/signed_data.go 899 additions, 0 deletionssigner/core/signed_data.go
- signer/core/signed_data_test.go 774 additions, 0 deletionssigner/core/signed_data_test.go
- signer/core/types.go 1 addition, 2 deletionssigner/core/types.go
- signer/rules/rules_test.go 13 additions, 6 deletionssigner/rules/rules_test.go
Loading
Please register or sign in to comment