Documentation
¶
Index ¶
- Constants
- Variables
- func DeferClose(c func() error, e *error)
- func GetAuditKey(path string) (key crypto.PrivateKey, err error)
- func UnmarshalPrivateKey(data []byte) (crypto.PrivateKey, error)
- func Verify(stream io.Reader, config *LogStreamConfig, pubKey any, checker MessageChecker) error
- type LogStream
- func (l *LogStream) Append(t MessageType, message []byte) error
- func (l *LogStream) Close() (err error)
- func (l *LogStream) Init(t MessageType, message, serial []byte) error
- func (l *LogStream) NextSerial() []byte
- func (l *LogStream) Rotate(t MessageType, message []byte, oldLog io.Writer) error
- func (l *LogStream) SetKey(s crypto.Signer)
- func (l *LogStream) State() LogStreamState
- func (l *LogStream) Verify(pubKey any, checker MessageChecker) error
- type LogStreamConfig
- type LogStreamState
- type Message
- type MessageChecker
- type MessageType
- type MultiMessageChecker
Constants ¶
View Source
const ( PemTypePrivateKey = "PRIVATE KEY" PemTypeECPrivateKey = "EC PRIVATE KEY" PemTypeRsaPrivateKey = "RSA PRIVATE KEY" PemTypePublicKey = "PUBLIC KEY" PemTypeCsr = "CERTIFICATE REQUEST" )
View Source
const ( NeedInit LogStreamState = iota NeetVerification Verified Closed MaxLogMessageSize = 10 * 1024 * 1024 MessageTypeIssuance MessageType = "issuance" MessageTypeLogRoll MessageType = "roll" )
Variables ¶
Functions ¶
func DeferClose ¶
func GetAuditKey ¶
func GetAuditKey(path string) (key crypto.PrivateKey, err error)
func UnmarshalPrivateKey ¶
func UnmarshalPrivateKey(data []byte) (crypto.PrivateKey, error)
func Verify ¶
func Verify(stream io.Reader, config *LogStreamConfig, pubKey any, checker MessageChecker) error
Types ¶
type LogStream ¶
type LogStream struct { LogStreamConfig // contains filtered or unexported fields }
func NewLogStream ¶
func (*LogStream) NextSerial ¶
func (*LogStream) State ¶
func (l *LogStream) State() LogStreamState
type LogStreamConfig ¶
type LogStreamState ¶
type LogStreamState int
type Message ¶
type Message struct { Serial []byte When time.Time What MessageType Length uint64 LastMessageHash []byte Payload []byte Signature []byte }
func ParseMessageHeader ¶
ParseMessageHeader takes a line of text populates all the fields in the message except for the message itself. After parsing the length of the message will be known and so the following Message.Length bytes can be read to populate the message field.
func (*Message) CheckSignature ¶
type MessageChecker ¶
MessageChecker is used to add additional checks to the verification of log messages.
func NewMultiMessageChecker ¶
func NewMultiMessageChecker(checkers ...MessageChecker) MessageChecker
type MessageType ¶
type MessageType string
MessageType is a string that is easy to parse: it may only contain ASCII letters, numbers and hyphen. Function MakeMessageType can be used to ensure that a string is valid.
func MakeMessageType ¶
func MakeMessageType(s string) (MessageType, error)
func MustMessageType ¶
func MustMessageType(s string) MessageType
type MultiMessageChecker ¶
type MultiMessageChecker []MessageChecker
func (MultiMessageChecker) CheckMessage ¶
func (m MultiMessageChecker) CheckMessage(sequenceNumber int, message *Message) error
Click to show internal directories.
Click to hide internal directories.