Documentation
¶
Overview ¶
Package ocidigest calculates and verifies OCI-compatible content digests.
Index ¶
- Variables
- type Algorithm
- type Digest
- type DigestState
- type Digester
- type Reader
- func (r *Reader) Algorithms() []Algorithm
- func (r *Reader) Digest() (Digest, error)
- func (r *Reader) DigestFor(alg Algorithm) (Digest, error)
- func (r *Reader) Digests() ([]Digest, error)
- func (r *Reader) Read(p []byte) (int, error)
- func (r *Reader) Size() int64
- func (r *Reader) State() (State, error)
- type RegisterOptions
- type State
- type VerifierReader
- type Writer
- func (w *Writer) Algorithms() []Algorithm
- func (w *Writer) Digest() (Digest, error)
- func (w *Writer) DigestFor(alg Algorithm) (Digest, error)
- func (w *Writer) Digests() ([]Digest, error)
- func (w *Writer) Size() int64
- func (w *Writer) State() (State, error)
- func (w *Writer) Write(p []byte) (int, error)
Constants ¶
This section is empty.
Variables ¶
var ( // ErrAlgorithmExists indicates that an algorithm is already registered. ErrAlgorithmExists = errors.New("ocidigest: algorithm is already registered") // ErrAlgorithmInvalidName indicates that an algorithm name is syntactically invalid. ErrAlgorithmInvalidName = errors.New("ocidigest: invalid algorithm name") // ErrAlgorithmUnknown indicates that an algorithm has not been registered. ErrAlgorithmUnknown = errors.New("ocidigest: algorithm is not registered") // ErrAlgorithmDuplicate indicates that an algorithm was specified more than once. ErrAlgorithmDuplicate = errors.New("ocidigest: duplicate algorithm") // ErrDigestInvalid indicates that a digest is invalid. ErrDigestInvalid = errors.New("ocidigest: digest is invalid") // ErrDigestMismatch indicates that calculated content did not match the expected digest. ErrDigestMismatch = errors.New("ocidigest: digest mismatch") // ErrEncodingInvalid indicates that a digest encoding is invalid. ErrEncodingInvalid = errors.New("ocidigest: encoded digest is invalid") // ErrHashInvalid indicates that a hash is invalid. ErrHashInvalid = errors.New("ocidigest: invalid hash") // ErrReaderInvalid indicates that a reader is invalid. ErrReaderInvalid = errors.New("ocidigest: invalid reader") // ErrStateInvalid indicates that digest state is invalid. ErrStateInvalid = errors.New("ocidigest: state is invalid") // ErrStateUnsupported indicates that digest state cannot be restored. ErrStateUnsupported = errors.New("ocidigest: state is not supported") // ErrWriterInvalid indicates that a writer is invalid. ErrWriterInvalid = errors.New("ocidigest: invalid writer") )
Functions ¶
This section is empty.
Types ¶
type Algorithm ¶
type Algorithm struct {
// contains filtered or unexported fields
}
Algorithm identifies a digest algorithm.
func LookupAlgorithm ¶
LookupAlgorithm returns a previously registered algorithm by name.
func RegisterAlgorithm ¶
func RegisterAlgorithm(opts RegisterOptions) (Algorithm, error)
RegisterAlgorithm registers a digest algorithm.
func (Algorithm) FromReader ¶
FromReader reads r to EOF and returns its digest.
type Digest ¶
type Digest string
Digest is an OCI-compatible digest in the form "<algorithm>:<encoded-hash>".
func FromReader ¶
FromReader reads r to EOF and returns its canonical digest.
type DigestState ¶
type DigestState struct {
Algorithm string `json:"algorithm"`
Encoding string `json:"encoding"`
Offset int64 `json:"offset"`
Payload []byte `json:"payload"`
}
DigestState is a serialized digest state for one algorithm.
type Digester ¶
type Digester interface {
io.Writer
Algorithm() Algorithm
Digest() (Digest, error)
Reset()
Size() int64
State() (DigestState, error)
}
Digester calculates a digest incrementally.
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
Reader wraps an io.Reader and records the digest of bytes read through it.
func NewReaderFromState ¶
NewReaderFromState returns a digesting reader restored from state.
func (*Reader) Algorithms ¶
Algorithms returns the algorithms in digest output order.
type RegisterOptions ¶
type RegisterOptions struct {
Name string
Size int
NewHash func() hash.Hash
MarshalState func(hash.Hash) (encoding string, payload []byte, err error)
NewState func(DigestState) (hash.Hash, error)
}
RegisterOptions defines a digest algorithm implementation.
type State ¶
type State struct {
States []DigestState `json:"states"`
}
State is serialized digest state for short-term resume.
type VerifierReader ¶
type VerifierReader struct {
// contains filtered or unexported fields
}
VerifierReader wraps an io.Reader and verifies the stream at EOF.
func NewVerifierReader ¶
func NewVerifierReader(r io.Reader, expected Digest) (*VerifierReader, error)
NewVerifierReader returns a reader that verifies bytes read from r.
func (*VerifierReader) Calculated ¶
func (r *VerifierReader) Calculated() (Digest, error)
Calculated returns the digest calculated from bytes read so far.
func (*VerifierReader) Digest ¶
func (r *VerifierReader) Digest() Digest
Digest returns the expected digest.
func (*VerifierReader) Read ¶
func (r *VerifierReader) Read(p []byte) (int, error)
Read reads from the underlying reader and updates the verifier.
func (*VerifierReader) Verified ¶
func (r *VerifierReader) Verified() bool
Verified reports whether EOF has been reached and the digest matched.
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer wraps an io.Writer and records the digest of bytes written through it.
func NewWriterFromState ¶
NewWriterFromState returns a digesting writer restored from state.
func (*Writer) Algorithms ¶
Algorithms returns the algorithms in digest output order.