forked from TrueCloudLab/frostfs-sdk-go
[#170] checksum: Drop Empty
method
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
9c502a9cae
commit
fd13e61266
11 changed files with 188 additions and 253 deletions
|
@ -1,6 +1,7 @@
|
|||
package object
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/ecdsa"
|
||||
"crypto/sha256"
|
||||
"errors"
|
||||
|
@ -20,10 +21,10 @@ var errIncorrectID = errors.New("incorrect object identifier")
|
|||
// CalculatePayloadChecksum calculates and returns checksum of
|
||||
// object payload bytes.
|
||||
func CalculatePayloadChecksum(payload []byte) *checksum.Checksum {
|
||||
res := checksum.New()
|
||||
res.SetSHA256(sha256.Sum256(payload))
|
||||
var res checksum.Checksum
|
||||
checksum.Calculate(&res, checksum.SHA256, payload)
|
||||
|
||||
return res
|
||||
return &res
|
||||
}
|
||||
|
||||
// CalculateAndSetPayloadChecksum calculates checksum of current
|
||||
|
@ -38,7 +39,7 @@ func CalculateAndSetPayloadChecksum(obj *Object) {
|
|||
// corresponds to its payload.
|
||||
func VerifyPayloadChecksum(obj *Object) error {
|
||||
actual := CalculatePayloadChecksum(obj.Payload())
|
||||
if !checksum.Equal(obj.PayloadChecksum(), actual) {
|
||||
if !bytes.Equal(obj.PayloadChecksum().Value(), actual.Value()) {
|
||||
return errCheckSumMismatch
|
||||
}
|
||||
|
||||
|
|
|
@ -201,33 +201,45 @@ func (o *Object) SetCreationEpoch(v uint64) {
|
|||
|
||||
// PayloadChecksum returns checksum of the object payload.
|
||||
func (o *Object) PayloadChecksum() *checksum.Checksum {
|
||||
return checksum.NewFromV2(
|
||||
(*object.Object)(o).
|
||||
var v checksum.Checksum
|
||||
v.ReadFromV2(
|
||||
*(*object.Object)(o).
|
||||
GetHeader().
|
||||
GetPayloadHash(),
|
||||
)
|
||||
|
||||
return &v
|
||||
}
|
||||
|
||||
// SetPayloadChecksum sets checksum of the object payload.
|
||||
func (o *Object) SetPayloadChecksum(v *checksum.Checksum) {
|
||||
var v2 refs.Checksum
|
||||
v.WriteToV2(&v2)
|
||||
|
||||
o.setHeaderField(func(h *object.Header) {
|
||||
h.SetPayloadHash(v.ToV2())
|
||||
h.SetPayloadHash(&v2)
|
||||
})
|
||||
}
|
||||
|
||||
// PayloadHomomorphicHash returns homomorphic hash of the object payload.
|
||||
func (o *Object) PayloadHomomorphicHash() *checksum.Checksum {
|
||||
return checksum.NewFromV2(
|
||||
(*object.Object)(o).
|
||||
var v checksum.Checksum
|
||||
v.ReadFromV2(
|
||||
*(*object.Object)(o).
|
||||
GetHeader().
|
||||
GetHomomorphicHash(),
|
||||
)
|
||||
|
||||
return &v
|
||||
}
|
||||
|
||||
// SetPayloadHomomorphicHash sets homomorphic hash of the object payload.
|
||||
func (o *Object) SetPayloadHomomorphicHash(v *checksum.Checksum) {
|
||||
var v2 refs.Checksum
|
||||
v.WriteToV2(&v2)
|
||||
|
||||
o.setHeaderField(func(h *object.Header) {
|
||||
h.SetHomomorphicHash(v.ToV2())
|
||||
h.SetHomomorphicHash(&v2)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -122,23 +122,23 @@ func TestObject_SetCreationEpoch(t *testing.T) {
|
|||
|
||||
func TestObject_SetPayloadChecksum(t *testing.T) {
|
||||
obj := New()
|
||||
cs := checksum.New()
|
||||
var cs checksum.Checksum
|
||||
cs.SetSHA256(randSHA256Checksum(t))
|
||||
|
||||
obj.SetPayloadChecksum(cs)
|
||||
obj.SetPayloadChecksum(&cs)
|
||||
|
||||
require.Equal(t, cs, obj.PayloadChecksum())
|
||||
require.Equal(t, &cs, obj.PayloadChecksum())
|
||||
}
|
||||
|
||||
func TestObject_SetPayloadHomomorphicHash(t *testing.T) {
|
||||
obj := New()
|
||||
|
||||
cs := checksum.New()
|
||||
var cs checksum.Checksum
|
||||
cs.SetTillichZemor(randTZChecksum(t))
|
||||
|
||||
obj.SetPayloadHomomorphicHash(cs)
|
||||
obj.SetPayloadHomomorphicHash(&cs)
|
||||
|
||||
require.Equal(t, cs, obj.PayloadHomomorphicHash())
|
||||
require.Equal(t, &cs, obj.PayloadHomomorphicHash())
|
||||
}
|
||||
|
||||
func TestObject_SetAttributes(t *testing.T) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue