fix signature validation logic.

This commit is contained in:
Raúl Kripalani 2022-10-22 16:55:33 +01:00 committed by vyzo
parent 64afdfc642
commit 9017e5de52

View File

@ -58,10 +58,12 @@ type EthTxArgs struct {
} }
func NewEthTxArgsFromMessage(msg *types.Message) (EthTxArgs, error) { func NewEthTxArgsFromMessage(msg *types.Message) (EthTxArgs, error) {
var to *EthAddress var (
var decodedParams []byte to *EthAddress
var isCreate bool decodedParams []byte
paramsReader := bytes.NewReader(msg.Params) paramsReader = bytes.NewReader(msg.Params)
)
if msg.To == builtintypes.EthereumAddressManagerActorAddr { if msg.To == builtintypes.EthereumAddressManagerActorAddr {
switch msg.Method { switch msg.Method {
case builtintypes.MethodsEAM.Create: case builtintypes.MethodsEAM.Create:
@ -70,27 +72,29 @@ func NewEthTxArgsFromMessage(msg *types.Message) (EthTxArgs, error) {
return EthTxArgs{}, err return EthTxArgs{}, err
} }
decodedParams = create.Initcode decodedParams = create.Initcode
isCreate = true
case builtintypes.MethodsEAM.Create2: case builtintypes.MethodsEAM.Create2:
var create2 eam.Create2Params var create2 eam.Create2Params
if err := create2.UnmarshalCBOR(paramsReader); err != nil { if err := create2.UnmarshalCBOR(paramsReader); err != nil {
return EthTxArgs{}, err return EthTxArgs{}, err
} }
decodedParams = create2.Initcode decodedParams = create2.Initcode
isCreate = true default:
return EthTxArgs{}, fmt.Errorf("unsupported EAM method")
} }
} } else {
if isCreate {
addr, err := EthAddressFromFilecoinAddress(msg.To) addr, err := EthAddressFromFilecoinAddress(msg.To)
if err != nil {
return EthTxArgs{}, nil
}
to = &addr
params, err := cbg.ReadByteArray(paramsReader, uint64(len(msg.Params)))
if err != nil { if err != nil {
return EthTxArgs{}, err return EthTxArgs{}, err
} }
decodedParams = params to = &addr
if len(msg.Params) > 0 {
params, err := cbg.ReadByteArray(paramsReader, uint64(len(msg.Params)))
if err != nil {
return EthTxArgs{}, err
}
decodedParams = params
}
} }
return EthTxArgs{ return EthTxArgs{