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