56 lines
981 B
Go
56 lines
981 B
Go
package vault
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
)
|
|
|
|
func WithPassphrase(passphrase string) InitOption {
|
|
return initOptionFunc(func(vault *Vault) error {
|
|
vault.passphrase = passphrase
|
|
return nil
|
|
})
|
|
}
|
|
|
|
func WithPassphraseFile(path string) InitOption {
|
|
return initOptionFunc(func(vault *Vault) error {
|
|
passphrase, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
vault.passphrase = string(passphrase)
|
|
return nil
|
|
})
|
|
}
|
|
|
|
func WithLoadFromPath(path string) InitOption {
|
|
return initOptionFunc(func(vault *Vault) error {
|
|
vaultFile, err := os.Open(path)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
defer func() {
|
|
_ = vaultFile.Close()
|
|
}()
|
|
|
|
dec := json.NewDecoder(vaultFile)
|
|
if err := dec.Decode(vault); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
})
|
|
}
|
|
|
|
func WithEncryption(encryption Encryption) InitOption {
|
|
return initOptionFunc(func(vault *Vault) error {
|
|
vault.encryption = encryption
|
|
return nil
|
|
})
|
|
}
|