Documentation ¶
Overview ¶
Package backend implements a registry to register differnet plugable backends for encryption and storage (incl. version control). The actual backends are implemented in the subpackages. They register themselves in the registry with blank imports.
Index ¶
- Variables
- func CryptoBackendName(cb CryptoBackend) string
- func CryptoBackends() []string
- func CryptoNameFromBackend(be CryptoBackend) string
- func HasCryptoBackend(ctx context.Context) bool
- func HasStorageBackend(ctx context.Context) bool
- func RegisterCrypto(id CryptoBackend, name string, loader CryptoLoader)
- func RegisterStorage(id StorageBackend, name string, loader StorageLoader)
- func StorageBackendName(sb StorageBackend) string
- func StorageBackends() []string
- func StorageNameFromBackend(be StorageBackend) string
- func WithCryptoBackend(ctx context.Context, be CryptoBackend) context.Context
- func WithCryptoBackendString(ctx context.Context, be string) context.Context
- func WithStorageBackend(ctx context.Context, sb StorageBackend) context.Context
- func WithStorageBackendString(ctx context.Context, sb string) context.Context
- type Crypto
- type CryptoBackend
- type CryptoLoader
- type Keyring
- type Revision
- type Revisions
- type Storage
- func Clone(ctx context.Context, id StorageBackend, repo, path string) (Storage, error)
- func DetectStorage(ctx context.Context, path string) (Storage, error)
- func InitStorage(ctx context.Context, id StorageBackend, path string) (Storage, error)
- func NewStorage(ctx context.Context, id StorageBackend, path string) (Storage, error)
- type StorageBackend
- type StorageLoader
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNotFound is returned if the requested backend was not found. ErrNotFound = fmt.Errorf("backend not found") )
var ( // ErrNotSupported is returned by backends for unsupported calls ErrNotSupported = fmt.Errorf("not supported") )
Functions ¶
func CryptoBackendName ¶
func CryptoBackendName(cb CryptoBackend) string
CryptoBackendName returns the name of the given backend
func CryptoBackends ¶
func CryptoBackends() []string
CryptoBackends returns the list of registered crypto backends.
func CryptoNameFromBackend ¶
func CryptoNameFromBackend(be CryptoBackend) string
CryptoNameFromBackend returns the name of a given crypto backend
func HasCryptoBackend ¶
HasCryptoBackend returns true if a value for crypto backend has been set in the context
func HasStorageBackend ¶
HasStorageBackend returns true if a value for store backend was set
func RegisterCrypto ¶
func RegisterCrypto(id CryptoBackend, name string, loader CryptoLoader)
RegisterCrypto registers a new crypto backend with the backend registry.
func RegisterStorage ¶
func RegisterStorage(id StorageBackend, name string, loader StorageLoader)
RegisterStorage registers a new storage backend with the registry.
func StorageBackendName ¶
func StorageBackendName(sb StorageBackend) string
StorageBackendName returns the name of the given backend
func StorageBackends ¶
func StorageBackends() []string
StorageBackends returns the list of registered storage backends.
func StorageNameFromBackend ¶
func StorageNameFromBackend(be StorageBackend) string
StorageNameFromBackend returns the name of a given storage backend
func WithCryptoBackend ¶
func WithCryptoBackend(ctx context.Context, be CryptoBackend) context.Context
WithCryptoBackend returns a context with the given crypto backend set
func WithCryptoBackendString ¶
WithCryptoBackendString returns a context with the given crypto backend set
func WithStorageBackend ¶
func WithStorageBackend(ctx context.Context, sb StorageBackend) context.Context
WithStorageBackend returns a context with the given store backend set
Types ¶
type Crypto ¶
type Crypto interface { Keyring Encrypt(ctx context.Context, plaintext []byte, recipients []string) ([]byte, error) Decrypt(ctx context.Context, ciphertext []byte) ([]byte, error) RecipientIDs(ctx context.Context, ciphertext []byte) ([]string, error) Name() string Version(context.Context) semver.Version Initialized(ctx context.Context) error Ext() string // filename extension IDFile() string // recipient IDs Concurrency() int }
Crypto is a crypto backend
func DetectCrypto ¶
DetectCrypto tries to detect the crypto backend used
type CryptoBackend ¶
type CryptoBackend int
CryptoBackend is a cryptographic backend
const ( // Plain is a no-op crypto backend Plain CryptoBackend = iota // GPGCLI is a gpg-cli based crypto backend GPGCLI // Age - age-encryption.org Age )
func CryptoBackendFromName ¶
func CryptoBackendFromName(name string) CryptoBackend
CryptoBackendFromName parses the identifier into a crypto backend
func GetCryptoBackend ¶
func GetCryptoBackend(ctx context.Context) CryptoBackend
GetCryptoBackend returns the selected crypto backend or the default (GPGCLI)
func (CryptoBackend) String ¶
func (c CryptoBackend) String() string
type CryptoLoader ¶
type CryptoLoader interface { fmt.Stringer New(context.Context) (Crypto, error) Handles(Storage) error Priority() int }
CryptoLoader is the interface for creating a new crypto backend.
type Keyring ¶
type Keyring interface { ListRecipients(ctx context.Context) ([]string, error) ListIdentities(ctx context.Context) ([]string, error) FindRecipients(ctx context.Context, needles ...string) ([]string, error) FindIdentities(ctx context.Context, needles ...string) ([]string, error) Fingerprint(ctx context.Context, id string) string FormatKey(ctx context.Context, id, tpl string) string ReadNamesFromKey(ctx context.Context, buf []byte) ([]string, error) GenerateIdentity(ctx context.Context, name, email, passphrase string) error }
Keyring is a public/private key manager
type Revision ¶
type Revision struct { Hash string AuthorName string AuthorEmail string Date time.Time Subject string Body string }
Revision is a SCM revision
type Storage ¶
type Storage interface { fmt.Stringer Get(ctx context.Context, name string) ([]byte, error) Set(ctx context.Context, name string, value []byte) error Delete(ctx context.Context, name string) error Exists(ctx context.Context, name string) bool List(ctx context.Context, prefix string) ([]string, error) IsDir(ctx context.Context, name string) bool Prune(ctx context.Context, prefix string) error Link(ctx context.Context, from, to string) error Name() string Path() string Version(context.Context) semver.Version Fsck(context.Context) error // contains filtered or unexported methods }
Storage is an storage backend
func DetectStorage ¶
DetectStorage tries to detect the storage backend being used
func InitStorage ¶
InitStorage initilizes a new storage location.
func NewStorage ¶
NewStorage initializes an existing storage backend.
type StorageBackend ¶
type StorageBackend int
StorageBackend is a type of storage backend
const ( // FS is a filesystem-backed storage FS StorageBackend = iota // GitFS is a filesystem-backed storage with Git GitFS )
func GetStorageBackend ¶
func GetStorageBackend(ctx context.Context) StorageBackend
GetStorageBackend returns the store backend or the default (FS)
func StorageBackendFromName ¶
func StorageBackendFromName(name string) StorageBackend
StorageBackendFromName parses the identifier into a storage backend
func (StorageBackend) String ¶
func (s StorageBackend) String() string
type StorageLoader ¶
type StorageLoader interface { fmt.Stringer New(context.Context, string) (Storage, error) Init(context.Context, string) (Storage, error) Clone(context.Context, string, string) (Storage, error) Handles(string) error Priority() int }
StorageLoader is the interface for creating a new storage backend.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
gpg/cli
Package cli implements a GPG CLI crypto backend.
|
Package cli implements a GPG CLI crypto backend. |
plain
Package plain implements a plaintext backend
|
Package plain implements a plaintext backend |
fs
Package fs implement a password-store compatible on disk storage layout with unencrypted paths.
|
Package fs implement a password-store compatible on disk storage layout with unencrypted paths. |
gitfs
Package gitfs implements a git cli based RCS backend.
|
Package gitfs implements a git cli based RCS backend. |