Files
ociclient/digest.go

50 lines
838 B
Go

package client
import (
"crypto/sha256"
"crypto/sha512"
"encoding/hex"
"strings"
)
func SHA256Digest(src []byte) string {
hasher := sha256.New()
hasher.Write(src)
sum := hasher.Sum(nil)
return "sha256:" + hex.EncodeToString(sum)
}
func SHA512Digest(src []byte) string {
hasher := sha512.New()
hasher.Write(src)
sum := hasher.Sum(nil)
return "sha512:" + hex.EncodeToString(sum)
}
const (
Undefined int = iota
SHA256
SHA512
)
func DigestType(digest string) int {
var err error
var typ int
digest = strings.ToLower(digest)
digest = strings.TrimPrefix(digest, "sha256:")
digest = strings.TrimPrefix(digest, "sha512:")
decoded, err := hex.DecodeString(digest)
if err != nil {
return Undefined
}
switch len(decoded) {
case 32:
typ = SHA256
case 64:
typ = SHA512
default:
typ = Undefined
}
return typ
}