Documentation
¶
Index ¶
- type KeyBundleCacheMeasured
- func (b KeyBundleCacheMeasured) GetTLFReaderKeyBundle(bundleID kbfsmd.TLFReaderKeyBundleID) (rkb *kbfsmd.TLFReaderKeyBundleV3, err error)
- func (b KeyBundleCacheMeasured) GetTLFWriterKeyBundle(bundleID kbfsmd.TLFWriterKeyBundleID) (wkb *kbfsmd.TLFWriterKeyBundleV3, err error)
- func (b KeyBundleCacheMeasured) PutTLFReaderKeyBundle(bundleID kbfsmd.TLFReaderKeyBundleID, rkb kbfsmd.TLFReaderKeyBundleV3)
- func (b KeyBundleCacheMeasured) PutTLFWriterKeyBundle(bundleID kbfsmd.TLFWriterKeyBundleID, wkb kbfsmd.TLFWriterKeyBundleV3)
- type KeyMetadata
- type KeyOps
- type KeyOpsConfig
- type KeyOpsStandard
- func (k *KeyOpsStandard) DeleteTLFCryptKeyServerHalf(ctx context.Context, uid keybase1.UID, key kbfscrypto.CryptPublicKey, ...) error
- func (k *KeyOpsStandard) GetTLFCryptKeyServerHalf(ctx context.Context, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID, ...) (kbfscrypto.TLFCryptKeyServerHalf, error)
- func (k *KeyOpsStandard) PutTLFCryptKeyServerHalves(ctx context.Context, keyServerHalves kbfsmd.UserDeviceKeyServerHalves) error
- type KeyServer
- type KeyServerConfig
- type KeyServerLocal
- func (ks *KeyServerLocal) CopyWithConfigAndLogger(config KeyServerConfig, log logger.Logger) *KeyServerLocal
- func (ks *KeyServerLocal) DeleteTLFCryptKeyServerHalf(ctx context.Context, _ keybase1.UID, _ kbfscrypto.CryptPublicKey, ...) error
- func (ks *KeyServerLocal) GetTLFCryptKeyServerHalf(ctx context.Context, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID, ...) (serverHalf kbfscrypto.TLFCryptKeyServerHalf, err error)
- func (ks *KeyServerLocal) PutTLFCryptKeyServerHalves(ctx context.Context, keyServerHalves kbfsmd.UserDeviceKeyServerHalves) error
- func (ks *KeyServerLocal) Shutdown()
- type KeyServerMeasured
- func (b KeyServerMeasured) DeleteTLFCryptKeyServerHalf(ctx context.Context, uid keybase1.UID, key kbfscrypto.CryptPublicKey, ...) (err error)
- func (b KeyServerMeasured) GetTLFCryptKeyServerHalf(ctx context.Context, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID, ...) (serverHalf kbfscrypto.TLFCryptKeyServerHalf, err error)
- func (b KeyServerMeasured) PutTLFCryptKeyServerHalves(ctx context.Context, keyServerHalves kbfsmd.UserDeviceKeyServerHalves) (err error)
- func (b KeyServerMeasured) Shutdown()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type KeyBundleCacheMeasured ¶
type KeyBundleCacheMeasured struct {
// contains filtered or unexported fields
}
KeyBundleCacheMeasured delegates to another KeyBundleCache instance but also keeps track of stats.
func NewKeyBundleCacheMeasured ¶
func NewKeyBundleCacheMeasured(delegate kbfsmd.KeyBundleCache, r metrics.Registry) KeyBundleCacheMeasured
NewKeyBundleCacheMeasured creates and returns a new KeyBundleCacheMeasured instance with the given delegate and registry.
func (KeyBundleCacheMeasured) GetTLFReaderKeyBundle ¶
func (b KeyBundleCacheMeasured) GetTLFReaderKeyBundle( bundleID kbfsmd.TLFReaderKeyBundleID) (rkb *kbfsmd.TLFReaderKeyBundleV3, err error)
GetTLFReaderKeyBundle implements the KeyBundleCache interface for KeyBundleCacheMeasured.
func (KeyBundleCacheMeasured) GetTLFWriterKeyBundle ¶
func (b KeyBundleCacheMeasured) GetTLFWriterKeyBundle( bundleID kbfsmd.TLFWriterKeyBundleID) (wkb *kbfsmd.TLFWriterKeyBundleV3, err error)
GetTLFWriterKeyBundle implements the KeyBundleCache interface for KeyBundleCacheMeasured.
func (KeyBundleCacheMeasured) PutTLFReaderKeyBundle ¶
func (b KeyBundleCacheMeasured) PutTLFReaderKeyBundle( bundleID kbfsmd.TLFReaderKeyBundleID, rkb kbfsmd.TLFReaderKeyBundleV3)
PutTLFReaderKeyBundle implements the KeyBundleCache interface for KeyBundleCacheMeasured.
func (KeyBundleCacheMeasured) PutTLFWriterKeyBundle ¶
func (b KeyBundleCacheMeasured) PutTLFWriterKeyBundle( bundleID kbfsmd.TLFWriterKeyBundleID, wkb kbfsmd.TLFWriterKeyBundleV3)
PutTLFWriterKeyBundle implements the KeyBundleCache interface for KeyBundleCacheMeasured.
type KeyMetadata ¶
type KeyMetadata interface {
// TlfID returns the ID of the TLF for which this object holds
// key info.
TlfID() tlf.ID
// TypeForKeying returns the keying type for this MD.
TypeForKeying() tlf.KeyingType
// LatestKeyGeneration returns the most recent key generation
// with key data in this object, or PublicKeyGen if this TLF
// is public.
LatestKeyGeneration() kbfsmd.KeyGen
// GetTlfHandle returns the handle for the TLF. It must not
// return nil.
//
// TODO: Remove the need for this function in this interface,
// so that kbfsmd.RootMetadata can implement this interface
// fully.
GetTlfHandle() *tlfhandle.Handle
// IsWriter checks that the given user is a valid writer of the TLF
// right now.
IsWriter(
ctx context.Context, checker kbfsmd.TeamMembershipChecker,
osg idutil.OfflineStatusGetter, uid keybase1.UID,
verifyingKey kbfscrypto.VerifyingKey) (bool, error)
// HasKeyForUser returns whether or not the given user has
// keys for at least one device. Returns an error if the TLF
// is public.
HasKeyForUser(user keybase1.UID) (bool, error)
// GetTLFCryptKeyParams returns all the necessary info to
// construct the TLF crypt key for the given key generation,
// user, and device (identified by its crypt public key), or
// false if not found. This returns an error if the TLF is
// public.
GetTLFCryptKeyParams(
keyGen kbfsmd.KeyGen, user keybase1.UID,
key kbfscrypto.CryptPublicKey) (
kbfscrypto.TLFEphemeralPublicKey,
kbfscrypto.EncryptedTLFCryptKeyClientHalf,
kbfscrypto.TLFCryptKeyServerHalfID, bool, error)
// StoresHistoricTLFCryptKeys returns whether or not history keys are
// symmetrically encrypted; if not, they're encrypted per-device.
StoresHistoricTLFCryptKeys() bool
// GetHistoricTLFCryptKey attempts to symmetrically decrypt the
// key at the given generation using the current generation's
// TLFCryptKey.
GetHistoricTLFCryptKey(codec kbfscodec.Codec, keyGen kbfsmd.KeyGen,
currentKey kbfscrypto.TLFCryptKey) (
kbfscrypto.TLFCryptKey, error)
}
KeyMetadata is an interface for something that holds key information. This is usually implemented by RootMetadata.
type KeyOps ¶
type KeyOps interface {
// GetTLFCryptKeyServerHalf gets a server-side key half for a
// device given the key half ID.
GetTLFCryptKeyServerHalf(ctx context.Context,
serverHalfID kbfscrypto.TLFCryptKeyServerHalfID,
cryptPublicKey kbfscrypto.CryptPublicKey) (
kbfscrypto.TLFCryptKeyServerHalf, error)
// PutTLFCryptKeyServerHalves stores a server-side key halves for a
// set of users and devices.
PutTLFCryptKeyServerHalves(ctx context.Context,
keyServerHalves kbfsmd.UserDeviceKeyServerHalves) error
// DeleteTLFCryptKeyServerHalf deletes a server-side key half for a
// device given the key half ID.
DeleteTLFCryptKeyServerHalf(ctx context.Context,
uid keybase1.UID, key kbfscrypto.CryptPublicKey,
serverHalfID kbfscrypto.TLFCryptKeyServerHalfID) error
}
KeyOps fetches server-side key halves from the key server.
type KeyOpsConfig ¶
KeyOpsConfig is a config object containing the outside helper instances needed by KeyOps.
type KeyOpsStandard ¶
type KeyOpsStandard struct {
// contains filtered or unexported fields
}
KeyOpsStandard implements the KeyOps interface and relays get/put requests for server-side key halves from/to the key server.
func NewKeyOpsStandard ¶
func NewKeyOpsStandard(config KeyOpsConfig) *KeyOpsStandard
NewKeyOpsStandard creates a new KeyOpsStandard instance.
func (*KeyOpsStandard) DeleteTLFCryptKeyServerHalf ¶
func (k *KeyOpsStandard) DeleteTLFCryptKeyServerHalf( ctx context.Context, uid keybase1.UID, key kbfscrypto.CryptPublicKey, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID) error
DeleteTLFCryptKeyServerHalf is an implementation of the KeyOps interface.
func (*KeyOpsStandard) GetTLFCryptKeyServerHalf ¶
func (k *KeyOpsStandard) GetTLFCryptKeyServerHalf( ctx context.Context, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID, key kbfscrypto.CryptPublicKey) (kbfscrypto.TLFCryptKeyServerHalf, error)
GetTLFCryptKeyServerHalf is an implementation of the KeyOps interface.
func (*KeyOpsStandard) PutTLFCryptKeyServerHalves ¶
func (k *KeyOpsStandard) PutTLFCryptKeyServerHalves( ctx context.Context, keyServerHalves kbfsmd.UserDeviceKeyServerHalves) error
PutTLFCryptKeyServerHalves is an implementation of the KeyOps interface.
type KeyServer ¶
type KeyServer interface {
// GetTLFCryptKeyServerHalf gets a server-side key half for a
// device given the key half ID.
GetTLFCryptKeyServerHalf(ctx context.Context,
serverHalfID kbfscrypto.TLFCryptKeyServerHalfID,
cryptPublicKey kbfscrypto.CryptPublicKey) (
kbfscrypto.TLFCryptKeyServerHalf, error)
// PutTLFCryptKeyServerHalves stores a server-side key halves for a
// set of users and devices.
PutTLFCryptKeyServerHalves(ctx context.Context,
keyServerHalves kbfsmd.UserDeviceKeyServerHalves) error
// DeleteTLFCryptKeyServerHalf deletes a server-side key half for a
// device given the key half ID.
DeleteTLFCryptKeyServerHalf(ctx context.Context,
uid keybase1.UID, key kbfscrypto.CryptPublicKey,
serverHalfID kbfscrypto.TLFCryptKeyServerHalfID) error
// Shutdown is called to free any KeyServer resources.
Shutdown()
}
KeyServer fetches/writes server-side key halves from/to the key server.
type KeyServerConfig ¶
KeyServerConfig is a config object containing the outside helper instances needed by KeyServerLocal.
type KeyServerLocal ¶
type KeyServerLocal struct {
// contains filtered or unexported fields
}
KeyServerLocal puts/gets key server halves in/from a local leveldb instance.
func NewKeyServerDir ¶
func NewKeyServerDir( config KeyServerConfig, log logger.Logger, dirPath string) ( *KeyServerLocal, error)
NewKeyServerDir constructs a new KeyServerLocal that stores its data in the given directory.
func NewKeyServerMemory ¶
func NewKeyServerMemory(config KeyServerConfig, log logger.Logger) ( *KeyServerLocal, error)
NewKeyServerMemory returns a KeyServerLocal with an in-memory leveldb instance.
func NewKeyServerTempDir ¶
func NewKeyServerTempDir( config KeyServerConfig, log logger.Logger) (*KeyServerLocal, error)
NewKeyServerTempDir constructs a new KeyServerLocal that stores its data in a temp directory which is cleaned up on shutdown.
func (*KeyServerLocal) CopyWithConfigAndLogger ¶
func (ks *KeyServerLocal) CopyWithConfigAndLogger( config KeyServerConfig, log logger.Logger) *KeyServerLocal
CopyWithConfigAndLogger copies a key server but swaps the config and the logger.
func (*KeyServerLocal) DeleteTLFCryptKeyServerHalf ¶
func (ks *KeyServerLocal) DeleteTLFCryptKeyServerHalf(ctx context.Context, _ keybase1.UID, _ kbfscrypto.CryptPublicKey, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID) error
DeleteTLFCryptKeyServerHalf implements the KeyServer interface for KeyServerLocal.
func (*KeyServerLocal) GetTLFCryptKeyServerHalf ¶
func (ks *KeyServerLocal) GetTLFCryptKeyServerHalf( ctx context.Context, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID, key kbfscrypto.CryptPublicKey) ( serverHalf kbfscrypto.TLFCryptKeyServerHalf, err error)
GetTLFCryptKeyServerHalf implements the KeyServer interface for KeyServerLocal.
func (*KeyServerLocal) PutTLFCryptKeyServerHalves ¶
func (ks *KeyServerLocal) PutTLFCryptKeyServerHalves(ctx context.Context, keyServerHalves kbfsmd.UserDeviceKeyServerHalves) error
PutTLFCryptKeyServerHalves implements the KeyServer interface for KeyServerLocal.
func (*KeyServerLocal) Shutdown ¶
func (ks *KeyServerLocal) Shutdown()
Shutdown implements the KeyServer interface for KeyServerLocal.
type KeyServerMeasured ¶
type KeyServerMeasured struct {
// contains filtered or unexported fields
}
KeyServerMeasured delegates to another KeyServer instance but also keeps track of stats.
func NewKeyServerMeasured ¶
func NewKeyServerMeasured(delegate KeyServer, r metrics.Registry) KeyServerMeasured
NewKeyServerMeasured creates and returns a new KeyServerMeasured instance with the given delegate and registry.
func (KeyServerMeasured) DeleteTLFCryptKeyServerHalf ¶
func (b KeyServerMeasured) DeleteTLFCryptKeyServerHalf(ctx context.Context, uid keybase1.UID, key kbfscrypto.CryptPublicKey, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID) (err error)
DeleteTLFCryptKeyServerHalf implements the KeyServer interface for KeyServerMeasured.
func (KeyServerMeasured) GetTLFCryptKeyServerHalf ¶
func (b KeyServerMeasured) GetTLFCryptKeyServerHalf(ctx context.Context, serverHalfID kbfscrypto.TLFCryptKeyServerHalfID, key kbfscrypto.CryptPublicKey) ( serverHalf kbfscrypto.TLFCryptKeyServerHalf, err error)
GetTLFCryptKeyServerHalf implements the KeyServer interface for KeyServerMeasured.
func (KeyServerMeasured) PutTLFCryptKeyServerHalves ¶
func (b KeyServerMeasured) PutTLFCryptKeyServerHalves(ctx context.Context, keyServerHalves kbfsmd.UserDeviceKeyServerHalves) (err error)
PutTLFCryptKeyServerHalves implements the KeyServer interface for KeyServerMeasured.
func (KeyServerMeasured) Shutdown ¶
func (b KeyServerMeasured) Shutdown()
Shutdown implements the KeyServer interface for KeyServerMeasured.