Documentation
¶
Overview ¶
Package monitoring defines the structs and interfaces for monitoring primitives with Tink. This package isn't yet production ready and might go through various changes.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
Client represents an interface to hold monitoring client context to create a `Logger`. A Client is registered with Tink's registry and used by primitives to obtain a `Logger`.
type Context ¶
type Context struct {
Primitive string
APIFunction string
KeysetInfo *KeysetInfo
}
Context defines a context for monitoring events, wich includes the primitive and API used, and information on the keyset.
func NewContext ¶
func NewContext(primitive string, apiFunction string, keysetInfo *KeysetInfo) *Context
NewContext creates a new monitoring context.
type KeyStatus ¶
type KeyStatus int
KeyStatus represents KeyStatusType in tink/proto/tink.proto.
const ( // Enabled keys can be used for cryptographic operations. Enabled KeyStatus = iota // Disabled keys can't be used, but can be re-enabled. Disabled // Destroyed keys don't exist in the keyset anymore. Destroyed // DoNotUse is intended to guard from failures that may be caused by future expansions. DoNotUse KeyStatus = 20 )
type KeysetInfo ¶
KeysetInfo represents a keyset in a certain point in time for the purpose of monitoring operations involving cryptographic keys.
func NewKeysetInfo ¶
func NewKeysetInfo(annotations map[string]string, primaryKeyID uint32, entries []*Entry) *KeysetInfo
NewKeysetInfo creates a new KeysetInfo.
type Logger ¶
type Logger interface {
// Logs a successful use of `keyID` on an input of `numBytes`. Tink primitive
// wrappers call this method when they successfully use a key to carry out a
// primitive method, e.g. aead.Encrypt(). As a consequence, implementations of
// MonitoringClient should be mindful on the amount of work performed by this
// method, as this will be called on each cryptographic operation. Implementations
// of MonitoringClient are responsible to add context to identify, e.g., the
// primitive and the API function.
Log(keyID uint32, numBytes int)
// Logs a failure. Tink calls this method when a cryptographic operation
// failed, e.g. no key could be found to decrypt a ciphertext. In this
// case the failure is not associated with a specific key, therefore this
// method has no arguments. The MonitoringClient implementation is responsible
// to add context to identify where the failure comes from.
LogFailure()
}
Logger is an interface for logging which can be created through a `Client`. monitoring clients are invoked by Tink during cryptographic operations to emit certain events.