digest: make FromBytes available on digest.Algorithm

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day 2015-12-29 15:16:56 -08:00
parent e02a0b0399
commit 4646282448
2 changed files with 17 additions and 12 deletions

View file

@ -69,18 +69,7 @@ func FromReader(rd io.Reader) (Digest, error) {
// FromBytes digests the input and returns a Digest. // FromBytes digests the input and returns a Digest.
func FromBytes(p []byte) Digest { func FromBytes(p []byte) Digest {
digester := Canonical.New() return Canonical.FromBytes(p)
if _, err := digester.Hash().Write(p); err != nil {
// Writes to a Hash should never fail. None of the existing
// hash implementations in the stdlib or hashes vendored
// here can return errors from Write. Having a panic in this
// condition instead of having FromBytes return an error value
// avoids unnecessary error handling paths in all callers.
panic("write to hash function returned error: " + err.Error())
}
return digester.Digest()
} }
// Validate checks that the contents of d is a valid digest, returning an // Validate checks that the contents of d is a valid digest, returning an

View file

@ -105,6 +105,22 @@ func (a Algorithm) FromReader(rd io.Reader) (Digest, error) {
return digester.Digest(), nil return digester.Digest(), nil
} }
// FromBytes digests the input and returns a Digest.
func (a Algorithm) FromBytes(p []byte) Digest {
digester := a.New()
if _, err := digester.Hash().Write(p); err != nil {
// Writes to a Hash should never fail. None of the existing
// hash implementations in the stdlib or hashes vendored
// here can return errors from Write. Having a panic in this
// condition instead of having FromBytes return an error value
// avoids unnecessary error handling paths in all callers.
panic("write to hash function returned error: " + err.Error())
}
return digester.Digest()
}
// TODO(stevvooe): Allow resolution of verifiers using the digest type and // TODO(stevvooe): Allow resolution of verifiers using the digest type and
// this registration system. // this registration system.