updated digest.go: fixes
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user