diff --git a/common/crypto/signature.go b/common/crypto/signature.go index 0a8fd5a0f..aaecf05b8 100644 --- a/common/crypto/signature.go +++ b/common/crypto/signature.go @@ -129,8 +129,6 @@ func (*Signature) VerifySignature(payload, signature []byte, accountAddress stri ) } return nil - case model.SignatureType_MultisigSignature: // multisig validation-only - return nil default: return blocker.NewBlocker( blocker.ValidationErr, diff --git a/common/transaction/multiSignature.go b/common/transaction/multiSignature.go index 4d5f0c6e6..959af6ca4 100644 --- a/common/transaction/multiSignature.go +++ b/common/transaction/multiSignature.go @@ -312,7 +312,10 @@ func (tx *MultiSignatureTransaction) Validate(dbTx bool) error { } err := tx.Signature.VerifySignature(body.SignatureInfo.TransactionHash, sig, addr) if err != nil { - return err + signatureType := util.ConvertBytesToUint32(sig[:]) + if model.SignatureType(signatureType) != model.SignatureType_MultisigSignature { + return err + } } } } diff --git a/common/transaction/multiSignature_test.go b/common/transaction/multiSignature_test.go index 0ac431cc9..3f81fcf27 100644 --- a/common/transaction/multiSignature_test.go +++ b/common/transaction/multiSignature_test.go @@ -589,7 +589,7 @@ func TestMultiSignatureTransaction_Validate(t *testing.T) { SignatureInfo: &model.SignatureInfo{ TransactionHash: make([]byte, 32), Signatures: map[string][]byte{ - "A": {1, 2, 3}, + "A": {1, 2, 3, 4}, }, }, },