backend

package
v1.12.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2021 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrNotFound is returned if the requested backend was not found.
	ErrNotFound = fmt.Errorf("backend not found")
)
View Source
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

func HasCryptoBackend(ctx context.Context) bool

HasCryptoBackend returns true if a value for crypto backend has been set in the context

func HasStorageBackend

func HasStorageBackend(ctx context.Context) bool

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

func WithCryptoBackendString(ctx context.Context, be string) context.Context

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

func WithStorageBackendString

func WithStorageBackendString(ctx context.Context, sb string) context.Context

WithStorageBackendString 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
}

Crypto is a crypto backend

func DetectCrypto

func DetectCrypto(ctx context.Context, storage Storage) (Crypto, error)

DetectCrypto tries to detect the crypto backend used

func NewCrypto

func NewCrypto(ctx context.Context, id CryptoBackend) (Crypto, error)

NewCrypto instantiates a new crypto backend.

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 Revisions

type Revisions []Revision

Revisions implements the sort interface

func (Revisions) Len

func (r Revisions) Len() int

func (Revisions) Less

func (r Revisions) Less(i, j int) bool

func (Revisions) Swap

func (r Revisions) Swap(i, j int)

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 Clone

func Clone(ctx context.Context, id StorageBackend, repo, path string) (Storage, error)

Clone clones an existing repository from a remote.

func DetectStorage

func DetectStorage(ctx context.Context, path string) (Storage, error)

DetectStorage tries to detect the storage backend being used

func InitStorage

func InitStorage(ctx context.Context, id StorageBackend, path string) (Storage, error)

InitStorage initilizes a new storage location.

func NewStorage

func NewStorage(ctx context.Context, id StorageBackend, path string) (Storage, error)

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.

Directories

Path Synopsis
age
gpg
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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL