Merge pull request #1306 from stevvooe/from-bytes-algorithm

digest: make FromBytes available on digest.Algorithm
This commit is contained in:
Stephen Day 2015-12-29 18:59:47 -08:00
commit e63ad1e3d6
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

@ -113,6 +113,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.