config

package
v2.14.0 Latest Latest
Warning

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

Go to latest
Published: Nov 18, 2020 License: Apache-2.0 Imports: 14 Imported by: 17

Documentation

Index

Constants

View Source
const SymmetricCrypterKeyBytes = 32

SymmetricCrypterKeyBytes is the required key size in bytes.

Variables

This section is empty.

Functions

This section is empty.

Types

type Crypter

type Crypter interface {
	Encrypter
	Decrypter
}

Crypter can both encrypt and decrypt values.

var BlindingCrypter Crypter = blindingCrypter{}

BlindingCrypter returns a Crypter that instead of decrypting or encrypting data, just returns "[secret]", it can be used when you want to display configuration information to a user but don't want to prompt for a password so secrets will not be decrypted or encrypted.

func NewPanicCrypter

func NewPanicCrypter() Crypter

NewPanicCrypter returns a new config crypter that will panic if used.

func NewSymmetricCrypter

func NewSymmetricCrypter(key []byte) Crypter

NewSymmetricCrypter creates a crypter that encrypts and decrypts values using AES-256-GCM. The nonce is stored with the value itself as a pair of base64 values separated by a colon and a version tag `v1` is prepended.

func NewSymmetricCrypterFromPassphrase

func NewSymmetricCrypterFromPassphrase(phrase string, salt []byte) Crypter

NewSymmetricCrypterFromPassphrase uses a passphrase and salt to generate a key, and then returns a crypter using it.

type Decrypter

type Decrypter interface {
	DecryptValue(ciphertext string) (string, error)
}

Decrypter decrypts encrypted ciphertext to its plaintext representation.

var NopDecrypter Decrypter = nopCrypter{}

func NewBlindingDecrypter

func NewBlindingDecrypter() Decrypter

NewBlindingDecrypter returns a blinding decrypter.

type Encrypter

type Encrypter interface {
	EncryptValue(plaintext string) (string, error)
}

Encrypter encrypts plaintext into its encrypted ciphertext.

var NopEncrypter Encrypter = nopCrypter{}

type Key

type Key struct {
	// contains filtered or unexported fields
}

func MustMakeKey

func MustMakeKey(namespace string, name string) Key

MustMakeKey constructs a config.Key for a given namespace and name. The namespace may not contain a `:`

func ParseKey

func ParseKey(s string) (Key, error)

func (Key) MarshalJSON

func (k Key) MarshalJSON() ([]byte, error)

func (Key) MarshalYAML

func (k Key) MarshalYAML() (interface{}, error)

func (Key) Name

func (k Key) Name() string

func (Key) Namespace

func (k Key) Namespace() string

func (Key) String

func (k Key) String() string

func (*Key) UnmarshalJSON

func (k *Key) UnmarshalJSON(b []byte) error

func (*Key) UnmarshalYAML

func (k *Key) UnmarshalYAML(unmarshal func(interface{}) error) error

type KeyArray

type KeyArray []Key

func (KeyArray) Len

func (k KeyArray) Len() int

func (KeyArray) Less

func (k KeyArray) Less(i int, j int) bool

func (KeyArray) Swap

func (k KeyArray) Swap(i int, j int)

type Map

type Map map[Key]Value

Map is a bag of config stored in the settings file.

func (Map) Copy added in v2.7.0

func (m Map) Copy(decrypter Decrypter, encrypter Encrypter) (Map, error)

func (Map) Decrypt

func (m Map) Decrypt(decrypter Decrypter) (map[Key]string, error)

Decrypt returns the configuration as a map from module member to decrypted value.

func (Map) Get

func (m Map) Get(k Key, path bool) (Value, bool, error)

Get gets the value for a given key. If path is true, the key's name portion is treated as a path.

func (Map) HasSecureValue

func (m Map) HasSecureValue() bool

HasSecureValue returns true if the config map contains a secure (encrypted) value.

func (Map) MarshalJSON

func (m Map) MarshalJSON() ([]byte, error)

func (Map) MarshalYAML

func (m Map) MarshalYAML() (interface{}, error)

func (Map) Remove

func (m Map) Remove(k Key, path bool) error

Remove removes the value for a given key. If path is true, the key's name portion is treated as a path.

func (Map) Set

func (m Map) Set(k Key, v Value, path bool) error

Set sets the value for a given key. If path is true, the key's name portion is treated as a path.

func (*Map) UnmarshalJSON

func (m *Map) UnmarshalJSON(b []byte) error

func (*Map) UnmarshalYAML

func (m *Map) UnmarshalYAML(unmarshal func(interface{}) error) error

type TrackingDecrypter

type TrackingDecrypter interface {
	Decrypter
	SecureValues() []string
}

TrackingDecrypter is a Decrypter that keeps track if decrypted values, which can be retrieved via SecureValues().

func NewTrackingDecrypter

func NewTrackingDecrypter(decrypter Decrypter) TrackingDecrypter

NewTrackingDecrypter returns a Decrypter that keeps track of decrypted values.

type Value

type Value struct {
	// contains filtered or unexported fields
}

Value is a single config value.

func NewObjectValue

func NewObjectValue(v string) Value

func NewSecureObjectValue

func NewSecureObjectValue(v string) Value

func NewSecureValue

func NewSecureValue(v string) Value

func NewValue

func NewValue(v string) Value

func (Value) Copy added in v2.7.0

func (c Value) Copy(decrypter Decrypter, encrypter Encrypter) (Value, error)

func (Value) MarshalJSON

func (c Value) MarshalJSON() ([]byte, error)

func (Value) MarshalYAML

func (c Value) MarshalYAML() (interface{}, error)

func (Value) Object

func (c Value) Object() bool

func (Value) Secure

func (c Value) Secure() bool

func (Value) SecureValues

func (c Value) SecureValues(decrypter Decrypter) ([]string, error)

func (Value) ToObject

func (c Value) ToObject() (interface{}, error)

ToObject returns the string value (if not an object), or the unmarshalled JSON object (if an object).

func (*Value) UnmarshalJSON

func (c *Value) UnmarshalJSON(b []byte) error

func (*Value) UnmarshalYAML

func (c *Value) UnmarshalYAML(unmarshal func(interface{}) error) error

func (Value) Value

func (c Value) Value(decrypter Decrypter) (string, error)

Value fetches the value of this configuration entry, using decrypter to decrypt if necessary. If the value is a secret and decrypter is nil, or if decryption fails for any reason, a non-nil error is returned.

Jump to

Keyboard shortcuts

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