aboutsummaryrefslogtreecommitdiffstats
path: root/signer/rules
diff options
context:
space:
mode:
authorPaul Berg <hello@paulrberg.com>2019-02-06 15:30:49 +0800
committerMartin Holst Swende <martin@swende.se>2019-02-06 15:30:49 +0800
commit572baae10a28da2d02085df7e2f3a282883f5d6e (patch)
tree3e5424ac64dbeae440604d32aed4293199179c99 /signer/rules
parent7c60d0a6a2d3925c2862cbbb188988475619fd0d (diff)
downloadgo-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.tar
go-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.tar.gz
go-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.tar.bz2
go-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.tar.lz
go-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.tar.xz
go-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.tar.zst
go-tangerine-572baae10a28da2d02085df7e2f3a282883f5d6e.zip
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
Diffstat (limited to 'signer/rules')
-rw-r--r--signer/rules/rules_test.go19
1 files changed, 13 insertions, 6 deletions
diff --git a/signer/rules/rules_test.go b/signer/rules/rules_test.go
index 0b520a15b..d3b2edd55 100644
--- a/signer/rules/rules_test.go
+++ b/signer/rules/rules_test.go
@@ -624,7 +624,7 @@ func TestSignData(t *testing.T) {
function ApproveSignData(r){
if( r.address.toLowerCase() == "0x694267f14675d7e1b9494fd8d72fefe1755710fa")
{
- if(r.message.indexOf("bazonk") >= 0){
+ if(r.message[0].value.indexOf("bazonk") >= 0){
return "Approve"
}
return "Reject"
@@ -636,18 +636,25 @@ function ApproveSignData(r){
t.Errorf("Couldn't create evaluator %v", err)
return
}
- message := []byte("baz bazonk foo")
- hash, msg := core.SignHash(message)
- raw := hexutil.Bytes(message)
+ message := "baz bazonk foo"
+ hash, rawdata := accounts.TextAndHash([]byte(message))
addr, _ := mixAddr("0x694267f14675d7e1b9494fd8d72fefe1755710fa")
fmt.Printf("address %v %v\n", addr.String(), addr.Original())
+
+ nvt := []*core.NameValueType{
+ {
+ Name: "message",
+ Typ: "text/plain",
+ Value: message,
+ },
+ }
resp, err := r.ApproveSignData(&core.SignDataRequest{
Address: *addr,
- Message: msg,
+ Message: nvt,
Hash: hash,
Meta: core.Metadata{Remote: "remoteip", Local: "localip", Scheme: "inproc"},
- Rawdata: raw,
+ Rawdata: []byte(rawdata),
})
if err != nil {
t.Fatalf("Unexpected error %v", err)