|
|
|
@ -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 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|