Skip to content

Commit

Permalink
signer/core: EIP-712 encoded data should not reject a Domain without …
Browse files Browse the repository at this point in the history
…a ChainId (ethereum#21306)

* Do not check for a non-nil ChainId

* Add encoding test
  • Loading branch information
natsukagami authored and enriquefynn committed Feb 15, 2021
1 parent c95a810 commit a8bc524
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
6 changes: 1 addition & 5 deletions signer/core/signed_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -965,11 +965,7 @@ func isPrimitiveTypeValid(primitiveType string) bool {
// validate checks if the given domain is valid, i.e. contains at least
// the minimum viable keys and values
func (domain *TypedDataDomain) validate() error {
if domain.ChainId == nil {
return errors.New("chainId must be specified according to EIP-155")
}

if len(domain.Name) == 0 && len(domain.Version) == 0 && len(domain.VerifyingContract) == 0 && len(domain.Salt) == 0 {
if domain.ChainId == nil && len(domain.Name) == 0 && len(domain.Version) == 0 && len(domain.VerifyingContract) == 0 && len(domain.Salt) == 0 {
return errors.New("domain is undefined")
}

Expand Down
8 changes: 8 additions & 0 deletions signer/core/signed_data_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@ func TestDomainChainId(t *testing.T) {
if _, ok := withoutChainID.Domain.Map()["chainId"]; ok {
t.Errorf("Expected the chainId key to not be present in the domain map")
}
// should encode successfully
if _, err := withoutChainID.HashStruct("EIP712Domain", withoutChainID.Domain.Map()); err != nil {
t.Errorf("Expected the typedData to encode the domain successfully, got %v", err)
}
withChainID := core.TypedData{
Types: core.Types{
"EIP712Domain": []core.Type{
Expand All @@ -261,6 +265,10 @@ func TestDomainChainId(t *testing.T) {
if _, ok := withChainID.Domain.Map()["chainId"]; !ok {
t.Errorf("Expected the chainId key be present in the domain map")
}
// should encode successfully
if _, err := withChainID.HashStruct("EIP712Domain", withChainID.Domain.Map()); err != nil {
t.Errorf("Expected the typedData to encode the domain successfully, got %v", err)
}
}

func TestHashStruct(t *testing.T) {
Expand Down

0 comments on commit a8bc524

Please sign in to comment.