consensus: implement Verifiable interface for Payload
This commit is contained in:
parent
82b230f19f
commit
a224917229
1 changed files with 7 additions and 2 deletions
|
@ -186,7 +186,7 @@ func (p *Payload) EncodeBinary(w *io.BinWriter) {
|
||||||
// Sign signs payload using the private key.
|
// Sign signs payload using the private key.
|
||||||
// It also sets corresponding verification and invocation scripts.
|
// It also sets corresponding verification and invocation scripts.
|
||||||
func (p *Payload) Sign(key *privateKey) error {
|
func (p *Payload) Sign(key *privateKey) error {
|
||||||
sig, err := key.Sign(p.MarshalUnsigned())
|
sig, err := key.Sign(p.GetSignedPart())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,11 @@ func (p *Payload) Sign(key *privateKey) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetSignedPart implements crypto.Verifiable interface.
|
||||||
|
func (p *Payload) GetSignedPart() []byte {
|
||||||
|
return p.MarshalUnsigned()
|
||||||
|
}
|
||||||
|
|
||||||
// Verify verifies payload using provided Witness.
|
// Verify verifies payload using provided Witness.
|
||||||
func (p *Payload) Verify(scriptHash util.Uint160) bool {
|
func (p *Payload) Verify(scriptHash util.Uint160) bool {
|
||||||
verification, err := core.ScriptFromWitness(scriptHash, &p.Witness)
|
verification, err := core.ScriptFromWitness(scriptHash, &p.Witness)
|
||||||
|
@ -205,7 +210,7 @@ func (p *Payload) Verify(scriptHash util.Uint160) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
v := vm.New()
|
v := vm.New()
|
||||||
h := sha256.Sum256(p.MarshalUnsigned())
|
h := sha256.Sum256(p.GetSignedPart())
|
||||||
|
|
||||||
v.SetCheckedHash(h[:])
|
v.SetCheckedHash(h[:])
|
||||||
v.LoadScript(verification)
|
v.LoadScript(verification)
|
||||||
|
|
Loading…
Reference in a new issue