diff options
author | Martin Holst Swende <martin@swende.se> | 2019-05-16 03:26:07 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-16 03:26:07 +0800 |
commit | 0c5f8c078abca7dc5954e30f307495a5c41c5f6c (patch) | |
tree | 96133a01c681a00b444a731b7d19df0b6adb6e37 /signer/core | |
parent | b548b5aeb00dd51f4f2d982f60d9dec5af8615e8 (diff) | |
download | go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.tar go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.tar.gz go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.tar.bz2 go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.tar.lz go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.tar.xz go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.tar.zst go-tangerine-0c5f8c078abca7dc5954e30f307495a5c41c5f6c.zip |
accounts,signer: better support for EIP-191 intended validator (#19523)
Diffstat (limited to 'signer/core')
-rw-r--r-- | signer/core/signed_data.go | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/signer/core/signed_data.go b/signer/core/signed_data.go index d264cbaa0..9dfd7b3f6 100644 --- a/signer/core/signed_data.go +++ b/signer/core/signed_data.go @@ -46,8 +46,8 @@ type SigFormat struct { } var ( - TextValidator = SigFormat{ - accounts.MimetypeTextWithValidator, + IntendedValidator = SigFormat{ + accounts.MimetypeDataWithValidator, 0x00, } DataTyped = SigFormat{ @@ -191,7 +191,7 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType } switch mediaType { - case TextValidator.Mime: + case IntendedValidator.Mime: // Data with an intended validator validatorData, err := UnmarshalValidatorData(data) if err != nil { @@ -200,9 +200,24 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType sighash, msg := SignTextValidator(validatorData) message := []*NameValueType{ { - Name: "message", - Typ: "text", - Value: msg, + Name: "This is a request to sign data intended for a particular validator (see EIP 191 version 0)", + Typ: "description", + Value: "", + }, + { + Name: "Intended validator address", + Typ: "address", + Value: validatorData.Address.String(), + }, + { + Name: "Application-specific data", + Typ: "hexdata", + Value: validatorData.Message, + }, + { + Name: "Full message for signing", + Typ: "hexdata", + Value: fmt.Sprintf("0x%x", msg), }, } req = &SignDataRequest{ContentType: mediaType, Rawdata: []byte(msg), Message: message, Hash: sighash} @@ -275,7 +290,6 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType // hash = keccak256("\x19\x00"${address}${data}). func SignTextValidator(validatorData ValidatorData) (hexutil.Bytes, string) { msg := fmt.Sprintf("\x19\x00%s%s", string(validatorData.Address.Bytes()), string(validatorData.Message)) - fmt.Printf("SignTextValidator:%s\n", msg) return crypto.Keccak256([]byte(msg)), msg } |