git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/object/transformer/hasher.go (about) 1 package transformer 2 3 import ( 4 "crypto/sha256" 5 "hash" 6 7 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/checksum" 8 objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object" 9 "git.frostfs.info/TrueCloudLab/tzhash/tz" 10 ) 11 12 type payloadChecksumHasher struct { 13 hasher hash.Hash 14 typ checksum.Type 15 } 16 17 func (h payloadChecksumHasher) writeChecksum(obj *objectSDK.Object) { 18 switch h.typ { 19 case checksum.SHA256: 20 csSHA := [sha256.Size]byte{} 21 h.hasher.Sum(csSHA[:0]) 22 23 var cs checksum.Checksum 24 cs.SetSHA256(csSHA) 25 26 obj.SetPayloadChecksum(cs) 27 case checksum.TZ: 28 csTZ := [tz.Size]byte{} 29 h.hasher.Sum(csTZ[:0]) 30 31 var cs checksum.Checksum 32 cs.SetTillichZemor(csTZ) 33 34 obj.SetPayloadHomomorphicHash(cs) 35 default: 36 panic("unreachable") 37 } 38 }