From 9b150ac62f2f725bc6debe22db1eae1b6915d28c Mon Sep 17 00:00:00 2001 From: Ramkumar Chinchani Date: Mon, 30 Oct 2023 23:42:57 +0000 Subject: [PATCH] feat(sha512): add support for sha512 digest Signed-off-by: Ramkumar Chinchani --- pkg/storage/imagestore/imagestore.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/storage/imagestore/imagestore.go b/pkg/storage/imagestore/imagestore.go index 2508a59fd..221165158 100644 --- a/pkg/storage/imagestore/imagestore.go +++ b/pkg/storage/imagestore/imagestore.go @@ -3,9 +3,11 @@ package imagestore import ( "bytes" "crypto/sha256" + "crypto/sha512" "encoding/json" "errors" "fmt" + "hash" "io" "path" "path/filepath" @@ -933,7 +935,14 @@ func (is *ImageStore) FullBlobUpload(repo string, body io.Reader, dstDigest godi uuid := u.String() src := is.BlobUploadPath(repo, uuid) - digester := sha256.New() + + var digester hash.Hash + if dstDigest.Algorithm() == godigest.SHA256 { + digester = sha256.New() + } else if dstDigest.Algorithm() == godigest.SHA512 { + digester = sha512.New() + } + buf := new(bytes.Buffer) _, err = buf.ReadFrom(body) @@ -957,7 +966,7 @@ func (is *ImageStore) FullBlobUpload(repo string, body io.Reader, dstDigest godi return "", -1, err } - srcDigest := godigest.NewDigestFromEncoded(godigest.SHA256, fmt.Sprintf("%x", digester.Sum(nil))) + srcDigest := godigest.NewDigestFromEncoded(dstDigest.Algorithm(), fmt.Sprintf("%x", digester.Sum(nil))) if srcDigest != dstDigest { is.log.Error().Str("srcDigest", srcDigest.String()). Str("dstDigest", dstDigest.String()).Msg("actual digest not equal to expected digest")