updated digest.go: fixes

This commit is contained in:
Олег Бородин
2026-03-07 09:48:07 +02:00
parent 59e3e9019f
commit 46bcc465ee
+8 -3
View File
@@ -155,6 +155,7 @@ func MakeSHA512Digest(src []byte) string {
func (dig Digest) MarshalJSON() ([]byte, error) {
writer := bytes.NewBuffer(nil)
writer.WriteString(`"`)
switch dig.algorithm {
case SHA256:
writer.WriteString("sha256")
@@ -165,14 +166,18 @@ func (dig Digest) MarshalJSON() ([]byte, error) {
}
writer.WriteString(":")
writer.WriteString(hex.EncodeToString(dig.decoded))
writer.WriteString(`"`)
return writer.Bytes(), nil
}
func (dig *Digest) UnmarshalJSON(data []byte) error {
var err error
digobj := &Digest{}
digobj := Digest{}
str := strings.ToLower(string(data))
str = strings.TrimPrefix(str, `"`)
str = strings.TrimSuffix(str, `"`)
str = strings.TrimPrefix(str, "sha256:")
str = strings.TrimPrefix(str, "sha384:")
str = strings.TrimPrefix(str, "sha512:")
@@ -180,7 +185,7 @@ func (dig *Digest) UnmarshalJSON(data []byte) error {
decoded, err := hex.DecodeString(str)
if err != nil {
err := errors.New("Can't decode digest")
return digobj, err
return err
}
digobj.decoded = decoded
switch len(decoded) {
@@ -192,7 +197,7 @@ func (dig *Digest) UnmarshalJSON(data []byte) error {
digobj.algorithm = SHA512
default:
err = errors.New("Unknown digest type")
return digobj, err
return err
}
*dig = digobj
return err