payload: adapt notary payloads to new hashing too
This commit is contained in:
parent
9d500b86fc
commit
7730aef0ec
2 changed files with 12 additions and 18 deletions
|
@ -71,32 +71,27 @@ func (r *P2PNotaryRequest) GetSignedHash() util.Uint256 {
|
|||
|
||||
// GetSignedPart returns a part of the payload which must be signed.
|
||||
func (r *P2PNotaryRequest) GetSignedPart() []byte {
|
||||
if r.hash.Equals(util.Uint256{}) {
|
||||
if r.createHash() != nil {
|
||||
panic("failed to compute hash!")
|
||||
}
|
||||
}
|
||||
buf := io.NewBufBinWriter()
|
||||
buf.WriteU32LE(uint32(r.Network))
|
||||
r.encodeHashableFields(buf.BinWriter)
|
||||
if buf.Err != nil {
|
||||
return nil
|
||||
}
|
||||
buf.WriteBytes(r.hash[:])
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
// createHash creates hash of the payload.
|
||||
func (r *P2PNotaryRequest) createHash() error {
|
||||
b := r.GetSignedPart()
|
||||
if b == nil {
|
||||
return errors.New("failed to serialize hashable data")
|
||||
}
|
||||
r.updateHashes(b)
|
||||
buf := io.NewBufBinWriter()
|
||||
r.encodeHashableFields(buf.BinWriter)
|
||||
r.hash = hash.Sha256(buf.Bytes())
|
||||
signed := r.GetSignedPart()
|
||||
r.signedHash = hash.Sha256(signed)
|
||||
return nil
|
||||
}
|
||||
|
||||
// updateHashes updates Payload's hashes based on the given buffer which should
|
||||
// be a signable data slice.
|
||||
func (r *P2PNotaryRequest) updateHashes(b []byte) {
|
||||
r.signedHash = hash.Sha256(b)
|
||||
r.hash = hash.Sha256(r.signedHash.BytesBE())
|
||||
}
|
||||
|
||||
// DecodeBinaryUnsigned reads payload from w excluding signature.
|
||||
func (r *P2PNotaryRequest) decodeHashableFields(br *io.BinReader) {
|
||||
r.MainTransaction = &transaction.Transaction{Network: r.Network}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue