aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Holst Swende <martin@swende.se>2019-05-16 03:26:07 +0800
committerGitHub <noreply@github.com>2019-05-16 03:26:07 +0800
commit0c5f8c078abca7dc5954e30f307495a5c41c5f6c (patch)
tree96133a01c681a00b444a731b7d19df0b6adb6e37
parentb548b5aeb00dd51f4f2d982f60d9dec5af8615e8 (diff)
downloadgo-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)
-rw-r--r--accounts/accounts.go2
-rw-r--r--signer/core/signed_data.go28
2 files changed, 22 insertions, 8 deletions
diff --git a/accounts/accounts.go b/accounts/accounts.go
index afeb412fe..bf5190ad9 100644
--- a/accounts/accounts.go
+++ b/accounts/accounts.go
@@ -36,7 +36,7 @@ type Account struct {
}
const (
- MimetypeTextWithValidator = "text/validator"
+ MimetypeDataWithValidator = "data/validator"
MimetypeTypedData = "data/typed"
MimetypeClique = "application/x-clique-header"
MimetypeTextPlain = "text/plain"
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
}