Skip to content

v1.0.0-rc0

Pre-release
Pre-release
Compare
Choose a tag to compare
@stevvooe stevvooe released this 31 Jan 21:57
· 101 commits to master since this release
v1.0.0-rc0

Open Containers Go Digest 1.0.0-rc0

This the first official release candidate of the go-digest package, the common digest package used across the container ecosystem.

What is a digest?

A digest is just a hash.

The most common use case for a digest is to create a content identifier for use in Content Addressable Storage systems:

id := digest.FromBytes([]byte("my content"))

In the example above, the id can be used to uniquely identify the byte slice "my content". This allows two disparate applications to agree on a verifiable identifier without having to trust one another.

An identifying digest can be verified, as follows:

if id != digest.FromBytes([]byte("my content")) {
  return errors.New("the content has changed!")
}

A Verifier type can be used to handle cases where an io.Reader makes more sense:

rd := getContent()
verifier := id.Verifier()
io.Copy(verifier, rd)

if !verifier.Verified() {
  return errors.New("the content has changed!")
}

Using Merkle DAGs, this can power a rich, safe, content distribution system.

Please see the README for more information.