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:
parent
eca00edc5d
commit
9751b84c7f
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue