Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type NonceService ¶
type NonceService interface {
// Before using a nonce service, it must be initialized. Failure to
// initialize might result in panics or other unexpected results.
Initialize() error
// Get a nonce; returns three values:
//
// 1. The nonce itself, a base64-url-no-padding opaque value.
// 2. A time at which the nonce will expire, based on the validity
// period specified at construction. By default, the service issues
// short-lived nonces.
// 3. An error if one occurred during generation of the nonce.
Get() (string, time.Time, error)
// Redeem the given nonce, returning whether or not it was accepted. A
// nonce given twice will be rejected if the service is a strict nonce
// service, but potentially accepted if the nonce service is loose
// (i.e., temporal revocation only).
Redeem(string) bool
// A hook to tidy the memory usage of the underlying implementation; is
// implementation dependent. Some implementations may not return status
// information.
Tidy() *NonceStatus
// If true, this is a strict only-once redemption service implementation,
// else a nonce could be accepted more than once within some safety
// window.
IsStrict() bool
// Whether or not this service is usable across nodes.
IsCrossNode() bool
}
NonceService is an interface for issuing and redeeming nonces, with a hook to periodically free resources when no redemptions have happened recently.
A nonce is a unique token that can be given to a client, who can later "redeem" or use that token on a subsequent request to prove that the request has only been done once. No tracking of client->token is performed as part of this service. For an example use of nonces within a protocol, see IETF RFC 8555 Automatic Certificate Management Environment (ACME).
Notably, nonces are not guaranteed to be stored or persisted; nonces from one startup will not necessarily be valid from another.
func NewNonceService ¶
func NewNonceService() NonceService
func NewNonceServiceWithValidity ¶
func NewNonceServiceWithValidity(validity time.Duration) NonceService
type NonceStatus ¶
Status information about the number of nonces in this service, perhaps local to this node. Presumably, the delta roughly correlates to present memory usage.