Add attr-only patch without body modification

This commit is contained in:
Aleksey Kravchenko 2025-03-28 09:24:44 +03:00
parent 7c66b4cbe2
commit e179c32a3c
3 changed files with 104 additions and 81 deletions

View file

@ -131,6 +131,26 @@ public static class ObjectTools
grpcHeader.Split.Previous = split.Previous?.ToMessage();
}
internal static Header.Types.Split CreateSplit(FrostFsSplit split, ClientKey key, FrostFsOwner owner, FrostFsVersion version)
{
if (split.ParentHeader == null)
{
return split.GetSplit();
}
split.ParentHeader.PayloadCheckSum ??= Array.Empty<byte>().Sha256();
var grpcParentHeader = CreateHeader(split.ParentHeader, split.ParentHeader.PayloadCheckSum, owner, version);
var res = split.GetSplit();
res.ParentHeader = grpcParentHeader;
res.Parent ??= new ObjectID { Value = grpcParentHeader.Sha256() };
res.ParentSignature ??= new Signature
{
Key = key.PublicKeyProto,
Sign = key.ECDsaKey.SignData(res.Parent.ToByteArray()),
};
return res;
}
internal static Header CreateHeader(
FrostFsObjectHeader header,
ReadOnlyMemory<byte> payloadChecksum,