diff --git a/pkg/digest/digest.go b/pkg/digest/digest.go index f07e5a0..55179a8 100644 --- a/pkg/digest/digest.go +++ b/pkg/digest/digest.go @@ -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