From 09ae216893aa1e82df288a91f2f298d642ede57e Mon Sep 17 00:00:00 2001 From: Rasmus Dahlberg Date: Tue, 27 Oct 2020 11:55:53 +0100 Subject: added leaf appendix --- type.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'type.go') diff --git a/type.go b/type.go index 9166209..f691f34 100644 --- a/type.go +++ b/type.go @@ -6,6 +6,7 @@ import ( "encoding/base64" "github.com/google/certificate-transparency-go/tls" + "github.com/google/certificate-transparency-go/x509" "github.com/google/trillian" ) @@ -136,3 +137,23 @@ func StItemFromB64(s string) (StItem, error) { } return item, nil } + +// Appendix is extra data that Trillian can store about a leaf +type Appendix struct { + Signature []byte `tls:"minlen:0,maxlen:16383"` + Chain []RawCertificate `tls:"minlen:0,maxlen:65535"` +} + +// RawCertificate is a serialized X.509 certificate +type RawCertificate struct { + Data []byte `tls:"minlen:0,maxlen:65535"` +} + +// NewAppendix creates a new leaf Appendix for an X.509 chain and signature +func NewAppendix(x509Chain []*x509.Certificate, signature []byte) Appendix { + chain := make([]RawCertificate, 0, 2) // TODO: base length on config param + for _, c := range x509Chain { + chain = append(chain, RawCertificate{ c.Raw }) + } + return Appendix{ Signature: signature, Chain: chain } +} -- cgit v1.2.3