working commit

This commit is contained in:
2026-03-05 21:38:26 +02:00
parent b9f1f384fb
commit 48a2d95f14
3 changed files with 62 additions and 51 deletions
+18 -5
View File
@@ -29,14 +29,16 @@ type Algorithm int
const (
Undefined Algorithm = iota
SHA256
SHA384
SHA512
)
func DigestType(digest string) Algorithm {
var err error
var typ Algorithm
var algorithm Algorithm
digest = strings.ToLower(digest)
digest = strings.TrimPrefix(digest, "sha256:")
digest = strings.TrimPrefix(digest, "sha384:")
digest = strings.TrimPrefix(digest, "sha512:")
decoded, err := hex.DecodeString(digest)
if err != nil {
@@ -44,13 +46,15 @@ func DigestType(digest string) Algorithm {
}
switch len(decoded) {
case 32:
typ = SHA256
algorithm = SHA256
case 48:
algorithm = SHA384
case 64:
typ = SHA512
algorithm = SHA512
default:
typ = Undefined
algorithm = Undefined
}
return typ
return algorithm
}
type Digest struct {
@@ -64,6 +68,8 @@ func NewDigestFromBytes(algorithm Algorithm, payload []byte) *Digest {
switch algorithm {
case SHA512:
hasher = sha512.New()
case SHA384:
hasher = sha512.New384()
default:
hasher = sha256.New()
}
@@ -82,6 +88,7 @@ func ParseDigest(str string) (*Digest, error) {
str = strings.ToLower(str)
str = strings.TrimPrefix(str, "sha256:")
str = strings.TrimPrefix(str, "sha384:")
str = strings.TrimPrefix(str, "sha512:")
decoded, err := hex.DecodeString(str)
@@ -93,6 +100,8 @@ func ParseDigest(str string) (*Digest, error) {
switch len(decoded) {
case 32:
digest.algorithm = SHA256
case 48:
digest.algorithm = SHA384
case 64:
digest.algorithm = SHA512
default:
@@ -115,6 +124,8 @@ func (dig *Digest) Prefix() string {
switch dig.algorithm {
case SHA256:
prefix = "sha256"
case SHA384:
prefix = "sha384"
case SHA512:
prefix = "sha512"
}
@@ -126,6 +137,8 @@ func (dig *Digest) Encoded() string {
switch dig.algorithm {
case SHA256:
prefix = "sha256"
case SHA384:
prefix = "sha384"
case SHA512:
prefix = "sha512"
}