Documentation ¶
Index ¶
- Variables
- func ComputeTypedDataHash(typedData TypedData) ([]byte, error)
- func SignTextValidator(validatorData ValidatorData) (signature hexutil.Bytes, message string)
- type NameValueType
- type SigFormat
- type Type
- type TypePriority
- type TypedData
- func (typedData *TypedData) Dependencies(primaryType string, found []string) []string
- func (typedData *TypedData) EncodeData(primaryType string, data map[string]interface{}, depth int) (hexutil.Bytes, error)
- func (typedData *TypedData) EncodePrimitiveValue(encType string, encValue interface{}, depth int) ([]byte, error)
- func (typedData *TypedData) EncodeType(primaryType string) hexutil.Bytes
- func (typedData *TypedData) Format() ([]*NameValueType, error)
- func (typedData *TypedData) HashStruct(primaryType string, data TypedDataMessage) (hexutil.Bytes, error)
- func (typedData *TypedData) Map() map[string]interface{}
- func (typedData *TypedData) TypeHash(primaryType string) hexutil.Bytes
- type TypedDataDomain
- type TypedDataMessage
- type Types
- type ValidatorData
Constants ¶
This section is empty.
Variables ¶
var ( IntendedValidator = SigFormat{ accounts.MimetypeDataWithValidator, 0x00, } DataTyped = SigFormat{ accounts.MimetypeTypedData, 0x01, } ApplicationClique = SigFormat{ accounts.MimetypeClique, 0x02, } TextPlain = SigFormat{ accounts.MimetypeTextPlain, 0x45, } )
Functions ¶
func ComputeTypedDataHash ¶
ComputeTypedDataHash computes keccak hash of typed data for signing.
func SignTextValidator ¶
func SignTextValidator(validatorData ValidatorData) (signature hexutil.Bytes, message string)
SignTextWithValidator signs the given message which can be further recovered with the given validator. hash = keccak256("\x19\x00"${address}${data}).
Types ¶
type NameValueType ¶
type NameValueType struct { Name string `json:"name"` Value interface{} `json:"value"` Typ string `json:"type"` }
NameValueType is a very simple struct with Name, Value and Type. It's meant for simple json structures used to communicate signing-info about typed data with the UI
func (*NameValueType) Pprint ¶
func (nvt *NameValueType) Pprint(depth int) string
Pprint returns a pretty-printed version of nvt
type TypePriority ¶
type TypedData ¶
type TypedData struct { Types Types `json:"types"` PrimaryType string `json:"primaryType"` Domain TypedDataDomain `json:"domain"` Message TypedDataMessage `json:"message"` }
func (*TypedData) Dependencies ¶
Dependencies returns an array of custom types ordered by their hierarchical reference tree
func (*TypedData) EncodeData ¶
func (typedData *TypedData) EncodeData(primaryType string, data map[string]interface{}, depth int) (hexutil.Bytes, error)
EncodeData generates the following encoding: `enc(value₁) ‖ enc(value₂) ‖ … ‖ enc(valueₙ)`
each encoded member is 32-byte long
func (*TypedData) EncodePrimitiveValue ¶
func (typedData *TypedData) EncodePrimitiveValue(encType string, encValue interface{}, depth int) ([]byte, error)
EncodePrimitiveValue deals with the primitive values found while searching through the typed data
func (*TypedData) EncodeType ¶
EncodeType generates the following encoding: `name ‖ "(" ‖ member₁ ‖ "," ‖ member₂ ‖ "," ‖ … ‖ memberₙ ")"`
each member is written as `type ‖ " " ‖ name` encodings cascade down and are sorted by name
func (*TypedData) Format ¶
func (typedData *TypedData) Format() ([]*NameValueType, error)
Format returns a representation of typedData, which can be easily displayed by a user-interface without in-depth knowledge about 712 rules
func (*TypedData) HashStruct ¶
func (typedData *TypedData) HashStruct(primaryType string, data TypedDataMessage) (hexutil.Bytes, error)
HashStruct generates a keccak256 hash of the encoding of the provided data
type TypedDataDomain ¶
type TypedDataDomain struct { Name string `json:"name"` Version string `json:"version"` ChainId *math.HexOrDecimal256 `json:"chainId"` VerifyingContract string `json:"verifyingContract"` Salt string `json:"salt"` }
func (*TypedDataDomain) Map ¶
func (domain *TypedDataDomain) Map() map[string]interface{}
Map is a helper function to generate a map version of the domain
type TypedDataMessage ¶
type TypedDataMessage = map[string]interface{}
type ValidatorData ¶
func UnmarshalValidatorData ¶
func UnmarshalValidatorData(data interface{}) (ValidatorData, error)
UnmarshalValidatorData converts the bytes input to typed data