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) { func (dig Digest) MarshalJSON() ([]byte, error) {
writer := bytes.NewBuffer(nil) writer := bytes.NewBuffer(nil)
writer.WriteString(`"`)
switch dig.algorithm { switch dig.algorithm {
case SHA256: case SHA256:
writer.WriteString("sha256") writer.WriteString("sha256")
@@ -165,14 +166,18 @@ func (dig Digest) MarshalJSON() ([]byte, error) {
} }
writer.WriteString(":") writer.WriteString(":")
writer.WriteString(hex.EncodeToString(dig.decoded)) writer.WriteString(hex.EncodeToString(dig.decoded))
writer.WriteString(`"`)
return writer.Bytes(), nil return writer.Bytes(), nil
} }
func (dig *Digest) UnmarshalJSON(data []byte) error { func (dig *Digest) UnmarshalJSON(data []byte) error {
var err error var err error
digobj := &Digest{} digobj := Digest{}
str := strings.ToLower(string(data)) str := strings.ToLower(string(data))
str = strings.TrimPrefix(str, `"`)
str = strings.TrimSuffix(str, `"`)
str = strings.TrimPrefix(str, "sha256:") str = strings.TrimPrefix(str, "sha256:")
str = strings.TrimPrefix(str, "sha384:") str = strings.TrimPrefix(str, "sha384:")
str = strings.TrimPrefix(str, "sha512:") str = strings.TrimPrefix(str, "sha512:")
@@ -180,7 +185,7 @@ func (dig *Digest) UnmarshalJSON(data []byte) error {
decoded, err := hex.DecodeString(str) decoded, err := hex.DecodeString(str)
if err != nil { if err != nil {
err := errors.New("Can't decode digest") err := errors.New("Can't decode digest")
return digobj, err return err
} }
digobj.decoded = decoded digobj.decoded = decoded
switch len(decoded) { switch len(decoded) {
@@ -192,7 +197,7 @@ func (dig *Digest) UnmarshalJSON(data []byte) error {
digobj.algorithm = SHA512 digobj.algorithm = SHA512
default: default:
err = errors.New("Unknown digest type") err = errors.New("Unknown digest type")
return digobj, err return err
} }
*dig = digobj *dig = digobj
return err return err