in client/clientutil.go [234:266]
func MetadataToAAD(md *configpb.Metadata) ([]byte, error) {
buf := new(bytes.Buffer)
for _, share := range md.GetShares() {
// Serialize share.wrappedShare
if err := binary.Write(buf, binary.LittleEndian, uint64(len(share.GetShare()))); err != nil {
return nil, fmt.Errorf("unable to serialize length of wrapped share: %v", err)
}
if _, err := buf.Write(share.GetShare()); err != nil {
return nil, fmt.Errorf("unable to serialize wrapped share: %v", err)
}
// Serialize share.hash
if err := binary.Write(buf, binary.LittleEndian, uint64(sha256.Size)); err != nil {
return nil, fmt.Errorf("unable to serialize length of hashed share: %v", err)
}
if _, err := buf.Write(share.GetHash()); err != nil {
return nil, fmt.Errorf("unable to serialize hashed share: %v", err)
}
}
// Serialize blobID.
if err := binary.Write(buf, binary.LittleEndian, uint64(len([]byte(md.GetBlobId())))); err != nil {
return nil, fmt.Errorf("unable to serialize length of blobID: %v", err)
}
if _, err := buf.WriteString(md.GetBlobId()); err != nil {
return nil, fmt.Errorf("unable to serialize blobID: %v", md.GetBlobId())
}
return buf.Bytes(), nil
}