forked from TrueCloudLab/neoneo-go
core: return a special error from verifyHashAgainstScript
It will help us to distinguish proper `false` verification result from various verification errors.
This commit is contained in:
parent
2ab0e6c399
commit
6d357c3793
1 changed files with 2 additions and 1 deletions
|
@ -1595,6 +1595,7 @@ var (
|
||||||
ErrWitnessHashMismatch = errors.New("witness hash mismatch")
|
ErrWitnessHashMismatch = errors.New("witness hash mismatch")
|
||||||
ErrNativeContractWitness = errors.New("native contract witness must have empty verification script")
|
ErrNativeContractWitness = errors.New("native contract witness must have empty verification script")
|
||||||
ErrVerificationFailed = errors.New("signature check failed")
|
ErrVerificationFailed = errors.New("signature check failed")
|
||||||
|
ErrInvalidSignature = fmt.Errorf("%w: invalid signature", ErrVerificationFailed)
|
||||||
ErrUnknownVerificationContract = errors.New("unknown verification contract")
|
ErrUnknownVerificationContract = errors.New("unknown verification contract")
|
||||||
ErrInvalidVerificationContract = errors.New("verification contract is missing `verify` method")
|
ErrInvalidVerificationContract = errors.New("verification contract is missing `verify` method")
|
||||||
)
|
)
|
||||||
|
@ -1674,7 +1675,7 @@ func (bc *Blockchain) verifyHashAgainstScript(hash util.Uint160, witness *transa
|
||||||
return 0, fmt.Errorf("%w: expected exactly one returned value", ErrVerificationFailed)
|
return 0, fmt.Errorf("%w: expected exactly one returned value", ErrVerificationFailed)
|
||||||
}
|
}
|
||||||
if !res {
|
if !res {
|
||||||
return 0, fmt.Errorf("%w: invalid signature", ErrVerificationFailed)
|
return vm.GasConsumed(), ErrInvalidSignature
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return 0, fmt.Errorf("%w: no result returned from the script", ErrVerificationFailed)
|
return 0, fmt.Errorf("%w: no result returned from the script", ErrVerificationFailed)
|
||||||
|
|
Loading…
Reference in a new issue