Documentation
¶
Overview ¶
Package password provides a simple-password-manager library with an encryption backend to handle app passwords. For full documentation visit https://github.com/image357/password/blob/main/docs/password.md
Index ¶
- Constants
- Variables
- func Check(id string, password string, key string) (bool, error)
- func Clean() error
- func Decrypt(ciphertext string, secret string) (string, error)
- func DecryptOTP(cipherBytes []byte, secret []byte) string
- func Delete(id string) error
- func DisableHashing()
- func DisableRecovery()
- func DumpJSON() (string, error)
- func EnableHashing()
- func EnableRecovery(key string)
- func Encrypt(text string, secret string) (string, error)
- func EncryptOTP(text string) ([]byte, []byte)
- func Exists(id string) (bool, error)
- func FilePath(id string) (string, error)
- func Get(id string, key string) (string, error)
- func GetStorePath() (string, error)
- func List() ([]string, error)
- func LoadJSON(input string) error
- func NormalizeId(id string) string
- func Overwrite(id string, password string, key string) error
- func ReadFromDisk(path string) error
- func RegisterDefaultManager(identifier string)
- func RewriteKey(id string, oldKey string, newKey string) error
- func Set(id string, oldPassword string, newPassword string, key string) error
- func SetDefaultManager(manager *Manager)
- func SetStorePath(path string) error
- func SetTemporaryStorage()
- func Unset(id string, password string, key string) error
- func WriteToDisk(path string) error
- type FileStorage
- func (f *FileStorage) Clean() error
- func (f *FileStorage) Delete(id string) error
- func (f *FileStorage) DumpJSON() (string, error)
- func (f *FileStorage) Exists(id string) (bool, error)
- func (f *FileStorage) FilePath(id string) string
- func (f *FileStorage) GetStorePath() string
- func (f *FileStorage) List() ([]string, error)
- func (f *FileStorage) LoadJSON(input string) error
- func (f *FileStorage) Retrieve(id string) (string, error)
- func (f *FileStorage) SetStorePath(path string)
- func (f *FileStorage) Store(id string, data string) error
- type HashFunc
- type Manager
- func (m *Manager) Check(id string, password string, key string) (bool, error)
- func (m *Manager) Clean() error
- func (m *Manager) Delete(id string) error
- func (m *Manager) DisableRecovery()
- func (m *Manager) EnableRecovery(key string)
- func (m *Manager) Exists(id string) (bool, error)
- func (m *Manager) Get(id string, key string) (string, error)
- func (m *Manager) List() ([]string, error)
- func (m *Manager) Overwrite(id string, password string, key string) error
- func (m *Manager) RewriteKey(id string, oldKey string, newKey string) error
- func (m *Manager) Set(id string, oldPassword string, newPassword string, key string) error
- func (m *Manager) Unset(id string, password string, key string) error
- type Storage
- type TemporaryStorage
- func (t *TemporaryStorage) Clean() error
- func (t *TemporaryStorage) Delete(id string) error
- func (t *TemporaryStorage) DumpJSON() (string, error)
- func (t *TemporaryStorage) Exists(id string) (bool, error)
- func (t *TemporaryStorage) List() ([]string, error)
- func (t *TemporaryStorage) LoadJSON(input string) error
- func (t *TemporaryStorage) ReadFromDisk(path string) error
- func (t *TemporaryStorage) Retrieve(id string) (string, error)
- func (t *TemporaryStorage) Store(id string, data string) error
- func (t *TemporaryStorage) WriteToDisk(path string) error
Constants ¶
const DefaultFileEnding string = "pwd"
DefaultFileEnding is the default file extension for password files.
const DefaultStorePath = "./password"
DefaultStorePath is the default relative storage path of a file storage backend.
const RecoveryIdSuffix string = ".recovery"
RecoveryIdSuffix stores the id/file suffix that identifies recovery key files.
Variables ¶
var Managers = map[string]*Manager{ "default": NewManager(), }
Managers stores a map of string identifiers for all created password managers. The identifier "default" always holds the default manager from GetDefaultManager. It can be set via SetDefaultManager. Do not manipulate directly.
Functions ¶
func Check ¶
Check an existing password for equality with the provided password. key is the encryption secret for storage.
func Decrypt ¶ added in v0.7.0
Decrypt a given ciphertext in base64 representation with AES256. The secret is hashed with the custom Hash function. Galois Counter Mode is used. The nonce is retrieved as a prefix of the ciphertext.
func DecryptOTP ¶ added in v0.3.2
DecryptOTP returns the decrypted message from a One-Time-Pad (OTP) encryption.
func DisableHashing ¶ added in v0.9.0
func DisableHashing()
DisableHashing will set the config variable Manager.HashPassword of the default password manager to false. This disables storage of hashed passwords.
func DisableRecovery ¶ added in v0.3.2
func DisableRecovery()
DisableRecovery will stop recovery key file storage alongside passwords.
func EnableHashing ¶ added in v0.9.0
func EnableHashing()
EnableHashing will set the config variable Manager.HashPassword of the default password manager to true. This enables storage of hashed passwords.
func EnableRecovery ¶ added in v0.3.2
func EnableRecovery(key string)
EnableRecovery will enforce recovery key file storage alongside passwords.
func Encrypt ¶ added in v0.7.0
Encrypt a given text with AES256 and return a base64 representation. The secret is hashed with the custom Hash function. Galois Counter Mode is used. The nonce is stored as a prefix of the ciphertext.
func EncryptOTP ¶ added in v0.3.2
EncryptOTP returns a One-Time-Pad (OTP) encrypted message and its OTP secret.
func FilePath ¶
FilePath returns the storage filepath of a given password-id with system-specific path separators. It accepts system-unspecific or mixed id separators, i.e. forward- and backward-slashes are treated as the same character.
func GetStorePath ¶
GetStorePath returns the current storage path with system-specific path separators.
func NormalizeId ¶
NormalizeId transforms path to lower case letters and normalizes the path separator
func Overwrite ¶
Overwrite an existing password or create a new one. key is the encryption secret for storage.
func ReadFromDisk ¶ added in v0.8.2
ReadFromDisk loads a FileStorage backend from disk into the current storage. Warning: This method does not block operations on the underlying storage backends (read/write/create/delete). You should stop operations manually before usage or ignore the reported error. Data consistency is guaranteed.
func RegisterDefaultManager ¶ added in v0.5.0
func RegisterDefaultManager(identifier string)
RegisterDefaultManager will register the current default password manger under the identifier and set a new default manager.
func RewriteKey ¶ added in v0.8.3
RewriteKey changes the storage key of a password from oldKey to newKey. Encryption hashes will be renewed. Stored metadata will be unchanged. If enabled, recovery entries will be recreated.
func Set ¶
Set an existing password-id or create a new one. oldPassword must match the currently stored password. key is the encryption secret for storage.
func SetDefaultManager ¶ added in v0.5.0
func SetDefaultManager(manager *Manager)
SetDefaultManager will overwrite the current default password manager with the provided one.
func SetStorePath ¶
SetStorePath accepts a new storage path with system-unspecific or mixed path separators.
func SetTemporaryStorage ¶ added in v0.8.0
func SetTemporaryStorage()
SetTemporaryStorage overwrites the current storage backend with a memory based one.
func Unset ¶
Unset (delete) an existing password. password must match the currently stored password. key is the encryption secret for storage.
func WriteToDisk ¶ added in v0.8.2
WriteToDisk saves the current storage to files via FileStorage mechanisms. Warning: This method does not block operations on the underlying storage backends (read/write/create/delete). You should stop operations manually before usage or ignore the reported error. Data consistency is guaranteed.
Types ¶
type FileStorage ¶ added in v0.5.0
type FileStorage struct {
// contains filtered or unexported fields
}
FileStorage is a file based storage backend.
func NewFileStorage ¶ added in v0.5.0
func NewFileStorage() *FileStorage
NewFileStorage returns a default initialized storage backend for persistent files.
func (*FileStorage) Clean ¶ added in v0.5.0
func (f *FileStorage) Clean() error
Clean (delete) all stored passwords.
func (*FileStorage) Delete ¶ added in v0.5.0
func (f *FileStorage) Delete(id string) error
Delete an existing password.
func (*FileStorage) DumpJSON ¶ added in v0.8.4
func (f *FileStorage) DumpJSON() (string, error)
DumpJSON serializes the storage backend to a JSON string. Warning: This method does not block operations on the underlying storage backend (read/write/create/delete). You should stop operations manually before usage or ignore the reported error. Data consistency is guaranteed.
func (*FileStorage) Exists ¶ added in v0.5.0
func (f *FileStorage) Exists(id string) (bool, error)
Exists tests if a given id already exists in the storage backend.
func (*FileStorage) FilePath ¶ added in v0.5.0
func (f *FileStorage) FilePath(id string) string
FilePath returns the storage filepath of a given password-id with system-specific path separators. It accepts system-unspecific or mixed id separators, i.e. forward- and backward-slashes are treated as the same character.
func (*FileStorage) GetStorePath ¶ added in v0.5.0
func (f *FileStorage) GetStorePath() string
GetStorePath returns the current storage path with system-specific path separators.
func (*FileStorage) List ¶ added in v0.5.0
func (f *FileStorage) List() ([]string, error)
List all stored password-ids.
func (*FileStorage) LoadJSON ¶ added in v0.8.4
func (f *FileStorage) LoadJSON(input string) error
LoadJSON deserializes a JSON string into the storage backend. Warning: This method does not block operations on the underlying storage backend (read/write/create/delete). You should stop operations manually before usage or ignore the reported error. Data consistency is guaranteed.
func (*FileStorage) Retrieve ¶ added in v0.5.0
func (f *FileStorage) Retrieve(id string) (string, error)
Retrieve data from an existing file. id is converted to the corresponding filepath.
func (*FileStorage) SetStorePath ¶ added in v0.5.0
func (f *FileStorage) SetStorePath(path string)
SetStorePath accepts a new storage path with system-unspecific or mixed path separators.
type HashFunc ¶ added in v0.2.1
HashFunc is a function signature. The Hash function will be called for password and secret hashing.
var Hash HashFunc = argon2iHash
Hash will calculate a 32 byte hash from a given byte slice. It is used for password and secret hashing. You can overwrite it with any function that meets the HashFunc signature. By default, it is set to a variant of argon2.Key.
type Manager ¶ added in v0.5.0
type Manager struct { // HashPassword signals if passwords will be stored as hashes. HashPassword bool // contains filtered or unexported fields }
func GetDefaultManager ¶ added in v0.5.0
func GetDefaultManager() *Manager
GetDefaultManager returns the current default password manager.
func NewManager ¶ added in v0.5.0
func NewManager() *Manager
NewManager creates a new passwordManager instance and applies basic initialization.
func (*Manager) Check ¶ added in v0.5.0
Check an existing password for equality with the provided password. key is the encryption secret for storage.
func (*Manager) DisableRecovery ¶ added in v0.5.0
func (m *Manager) DisableRecovery()
DisableRecovery will stop recovery key file storage alongside passwords.
func (*Manager) EnableRecovery ¶ added in v0.5.0
EnableRecovery will enforce recovery key file storage alongside passwords.
func (*Manager) Exists ¶ added in v0.5.0
Exists tests if a given id already exists in the storage backend.
func (*Manager) Get ¶ added in v0.5.0
Get an existing password with id. key is the encryption secret for storage.
func (*Manager) Overwrite ¶ added in v0.5.0
Overwrite an existing password or create a new one. key is the encryption secret for storage.
func (*Manager) RewriteKey ¶ added in v0.8.3
RewriteKey changes the storage key of a password from oldKey to newKey. Encryption hashes will be renewed. Stored metadata will be unchanged. If enabled, recovery entries will be recreated.
type Storage ¶ added in v0.5.0
type Storage interface { // Store (create/overwrite) the provided data. Store(id string, data string) error // Retrieve data from an existing storage entry. Retrieve(id string) (string, error) // Exists tests if a given id already exists in the storage backend. Exists(id string) (bool, error) // List all stored password-ids. List() ([]string, error) // Delete an existing password. Delete(id string) error // Clean (delete) all stored passwords. Clean() error // DumpJSON serializes the storage backend to a JSON string. DumpJSON() (string, error) // LoadJSON deserializes a JSON string into the storage backend. LoadJSON(input string) error }
type TemporaryStorage ¶ added in v0.8.0
type TemporaryStorage struct {
// contains filtered or unexported fields
}
TemporaryStorage is a memory based storage backend.
func NewTemporaryStorage ¶ added in v0.8.0
func NewTemporaryStorage() *TemporaryStorage
NewTemporaryStorage returns a memory based storage backend.
func (*TemporaryStorage) Clean ¶ added in v0.8.0
func (t *TemporaryStorage) Clean() error
Clean (delete) all stored passwords.
func (*TemporaryStorage) Delete ¶ added in v0.8.0
func (t *TemporaryStorage) Delete(id string) error
Delete an existing password.
func (*TemporaryStorage) DumpJSON ¶ added in v0.8.4
func (t *TemporaryStorage) DumpJSON() (string, error)
DumpJSON serializes the storage backend to a JSON string.
func (*TemporaryStorage) Exists ¶ added in v0.8.0
func (t *TemporaryStorage) Exists(id string) (bool, error)
Exists tests if a given id already exists in the storage backend.
func (*TemporaryStorage) List ¶ added in v0.8.0
func (t *TemporaryStorage) List() ([]string, error)
List all stored password-ids.
func (*TemporaryStorage) LoadJSON ¶ added in v0.8.4
func (t *TemporaryStorage) LoadJSON(input string) error
LoadJSON deserializes a JSON string into the storage backend.
func (*TemporaryStorage) ReadFromDisk ¶ added in v0.8.2
func (t *TemporaryStorage) ReadFromDisk(path string) error
ReadFromDisk loads a FileStorage backend from disk into a temporary storage. Warning: This method does not block operations on the underlying storage backends (read/write/create/delete). You should stop operations manually before usage or ignore the reported error. Data consistency is guaranteed.
func (*TemporaryStorage) Retrieve ¶ added in v0.8.0
func (t *TemporaryStorage) Retrieve(id string) (string, error)
Retrieve data from an existing memory location.
func (*TemporaryStorage) Store ¶ added in v0.8.0
func (t *TemporaryStorage) Store(id string, data string) error
Store (create/overwrite) the provided data.
func (*TemporaryStorage) WriteToDisk ¶ added in v0.8.2
func (t *TemporaryStorage) WriteToDisk(path string) error
WriteToDisk saves the temporary storage to files via FileStorage mechanisms. Warning: This method does not block operations on the underlying storage backends (read/write/create/delete). You should stop operations manually before usage or ignore the reported error. Data consistency is guaranteed.