chunked: extract blob validation into standalone function

extract the blob checksum validation logic from decodeAndValidateBlob
into a separate function.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2025-04-09 10:27:37 +02:00
parent eca00edc5d
commit 9751b84c7f
1 changed files with 11 additions and 4 deletions

View File

@ -433,19 +433,26 @@ func ensureFileMetadataAttributesMatch(a, b *minimal.FileMetadata) error {
return nil return nil
} }
func decodeAndValidateBlob(blob []byte, lengthUncompressed uint64, expectedCompressedChecksum string) ([]byte, error) { func validateBlob(blob []byte, expectedCompressedChecksum string) error {
d, err := digest.Parse(expectedCompressedChecksum) d, err := digest.Parse(expectedCompressedChecksum)
if err != nil { if err != nil {
return nil, fmt.Errorf("invalid digest %q: %w", expectedCompressedChecksum, err) return fmt.Errorf("invalid digest %q: %w", expectedCompressedChecksum, err)
} }
blobDigester := d.Algorithm().Digester() blobDigester := d.Algorithm().Digester()
blobChecksum := blobDigester.Hash() blobChecksum := blobDigester.Hash()
if _, err := blobChecksum.Write(blob); err != nil { if _, err := blobChecksum.Write(blob); err != nil {
return nil, err return err
} }
if blobDigester.Digest() != d { if blobDigester.Digest() != d {
return nil, fmt.Errorf("invalid blob checksum, expected checksum %s, got %s", d, blobDigester.Digest()) return fmt.Errorf("invalid blob checksum, expected checksum %s, got %s", d, blobDigester.Digest())
}
return nil
}
func decodeAndValidateBlob(blob []byte, lengthUncompressed uint64, expectedCompressedChecksum string) ([]byte, error) {
if err := validateBlob(blob, expectedCompressedChecksum); err != nil {
return nil, err
} }
decoder, err := zstd.NewReader(nil) //nolint:contextcheck decoder, err := zstd.NewReader(nil) //nolint:contextcheck