forked from cerc-io/plugeth
clef: fix chainId key being present in domain map (#19303)
This PR fixes this, moving domain.ChainId from the map's initializer down to a separate if statement which checks the existance of ChainId's value, similar to the rest of the fields, before adding it. I've also included a new test to demonstrate the issue
This commit is contained in:
parent
5b947c5004
commit
f538d15241
@ -894,8 +894,10 @@ func (domain *TypedDataDomain) validate() error {
|
|||||||
|
|
||||||
// Map is a helper function to generate a map version of the domain
|
// Map is a helper function to generate a map version of the domain
|
||||||
func (domain *TypedDataDomain) Map() map[string]interface{} {
|
func (domain *TypedDataDomain) Map() map[string]interface{} {
|
||||||
dataMap := map[string]interface{}{
|
dataMap := map[string]interface{}{}
|
||||||
"chainId": domain.ChainId,
|
|
||||||
|
if domain.ChainId != nil {
|
||||||
|
dataMap["chainId"] = domain.ChainId
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(domain.Name) > 0 {
|
if len(domain.Name) > 0 {
|
||||||
|
@ -225,6 +225,40 @@ func TestSignData(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDomainChainId(t *testing.T) {
|
||||||
|
withoutChainID := TypedData{
|
||||||
|
Types: Types{
|
||||||
|
"EIP712Domain": []Type{
|
||||||
|
{Name: "name", Type: "string"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Domain: TypedDataDomain{
|
||||||
|
Name: "test",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, ok := withoutChainID.Domain.Map()["chainId"]; ok {
|
||||||
|
t.Errorf("Expected the chainId key to not be present in the domain map")
|
||||||
|
}
|
||||||
|
|
||||||
|
withChainID := TypedData{
|
||||||
|
Types: Types{
|
||||||
|
"EIP712Domain": []Type{
|
||||||
|
{Name: "name", Type: "string"},
|
||||||
|
{Name: "chainId", Type: "uint256"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Domain: TypedDataDomain{
|
||||||
|
Name: "test",
|
||||||
|
ChainId: big.NewInt(1),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, ok := withChainID.Domain.Map()["chainId"]; !ok {
|
||||||
|
t.Errorf("Expected the chainId key be present in the domain map")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestHashStruct(t *testing.T) {
|
func TestHashStruct(t *testing.T) {
|
||||||
hash, err := typedData.HashStruct(typedData.PrimaryType, typedData.Message)
|
hash, err := typedData.HashStruct(typedData.PrimaryType, typedData.Message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user