package security

import "veyron.io/veyron/veyron2/security"

// RevocationToken can be presented to a revocation service to revoke a caveat
type RevocationToken [16]byte

// Revoker is the interface for preventing discharges from being issued. The
// dicharger ensures that no discharges will be issued for caveats that
// have been explicitly revoked using this interface. To prevent discharge
// stealing caveats just have to be unique; the exact structure is not relevant
// to the client or the verifier. To make Revoker's job easy, each caveat
// contains a SHA256 hash of its revocation token. To revoke a caveat C and
// have it added to the discharger's blacklist, one simply needs to call
// Revoke(x) with an x s.t.  SHA256(x) = C. All caveats for which this has not
// been revoked will get discharges, irrespective of who created them. This
// means that the existence of a valid discharge does not imply that a
// corresponding caveat exists, and even if it does, it may not be meant for
// use with this revocation service. Just looking at discharges is meaningless,
// a valid (Caveat, Discharge) pair is what can be relied on for
// authentication. Not keeping track of non-revoked caveats enables
// performance improvements on the Discharger side.
type Revoker interface {
	// Revoke ensures that iff a nil is returned, all discharge requests to the
	// caveat with nonce sha256(caveatPreimage) are going to be denied.
	Revoke(caveatPreimage RevocationToken) error {security.WriteLabel}
}
