Documentation
¶
Overview ¶
Package entry defines types related to TBSCertificateLogEntry and MTCLogEntry from https://ietf-plants-wg.github.io/merkle-tree-certs/draft-ietf-plants-merkle-tree-certs.html#name-log-entries, and the entry bundle encoding from https://github.com/C2SP/C2SP/blob/main/tlog-tiles.md#log-entries
The concepts fit together like so:
Entry bundles contain MTCLogEntry. MTCLogEntry contains (typically) TBSCertificateLogEntry.
TBSCertificateLogEntry is part of the X.509 layer. It will be used to build certificates (TODO: implement TBSCertificateLogEntry.ToX509).
MTCLogEntry is part of the Merkle tree layer and is what gets hashed. It provides type switching (needed for null_entry) and extensibility.
Entry bundles are part of the tile storage layer. They provide a simple length-prefixed framing so that MTCLogEntries can be concatenated unambiguously.
Note that neither TBSCertificateLogEntry nor MTCLogEntry carries its own length, since they will always be wrapped or converted into a format that has length information: an entry bundle or an X.509 certificate.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BundleBuilder ¶
type BundleBuilder struct {
// contains filtered or unexported fields
}
BundleBuilder appends a sequence of MTCLogEntry to a buffer as an entry bundle.
func NewBundleBuilder ¶
func NewBundleBuilder(buf []byte) *BundleBuilder
NewBundleBuilder returns a BundleBuilder that appends to the given buffer. Like cryptobyte.Builder, the slice will be reallocated if its capacity is exceeded. Use Bytes to get the final buffer.
func (*BundleBuilder) Add ¶
func (b *BundleBuilder) Add(mtcLogEntry *MTCLogEntry)
Add appends a single MTCLogEntry, with its length prefix, to the builder.
func (*BundleBuilder) Bytes ¶
func (b *BundleBuilder) Bytes() ([]byte, error)
Bytes returns the bundle's bytes.
type BundleReader ¶
type BundleReader struct {
// contains filtered or unexported fields
}
BundleReader reads records of MTCLogEntry from the underlying buffer in the entry bundle format.
func NewBundleReader ¶
func NewBundleReader(buf []byte) *BundleReader
NewBundleReader returns a new BundleReader.
func (*BundleReader) ReadEntry ¶
func (br *BundleReader) ReadEntry() (*MTCLogEntry, []byte, error)
ReadEntry reads the bytes of a single entry.
Returns the parsed MTCLogEntry as well as its bytes, both of which reference the same memory as the original buffer.
Returns MTCLogEntry{}, nil, io.EOF when there is no more to read.
type MTCLogEntry ¶
type MTCLogEntry struct {
// contains filtered or unexported fields
}
MTCLogEntry implements the corresponding structure from https://ietf-plants-wg.github.io/merkle-tree-certs/draft-ietf-plants-merkle-tree-certs.html#name-log-entries
struct {
MTCLogEntryExtension extensions<0..2^16-1>;
MTCLogEntryType type;
select (type) {
case null_entry: Empty;
case tbs_cert_entry: opaque tbs_cert_entry_data[N];
/* May be extended with future types. */
}
} MTCLogEntry;
The zero value represents a null_entry.
func FromX509 ¶
func FromX509(in []byte, hash crypto.Hash) (*MTCLogEntry, error)
FromX509 takes a DER-encoded X.509 certificate and transforms it into a TBSCertificateLogEntry, then returns a MTCLogEntry wrapping that TBSCertificateLogEntry.
func (*MTCLogEntry) Marshal ¶
func (mtcle *MTCLogEntry) Marshal() ([]byte, error)
Marshal returns the encoding of its receiver.
Rejects unknown MTCLogEntryTypes. Rejects non-empty MTCLogEntry.extensions.
func (*MTCLogEntry) TBS ¶
func (mtcle *MTCLogEntry) TBS() []byte
TBS returns the TBSCertificateLogEntry bytes if Type is tbs_cert_entry, or nil otherwise.