From add15b5b2814fe79c956d4df7df800aa8107a3c9 Mon Sep 17 00:00:00 2001 From: Alessio Treglia Date: Mon, 22 Oct 2018 14:29:27 -0700 Subject: [PATCH] Merge review comments/changes --- client/keys/utils.go | 15 ++++++++++----- crypto/keys/keybase.go | 5 +++++ crypto/keys/types.go | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/client/keys/utils.go b/client/keys/utils.go index f2ea638d9b..b10faf6988 100644 --- a/client/keys/utils.go +++ b/client/keys/utils.go @@ -77,21 +77,26 @@ func ReadPassphraseFromStdin(name string) (string, error) { // TODO make keybase take a database not load from the directory -// initialize a keybase based on the configuration +// GetKeyBase initializes a keybase based on the configuration. func GetKeyBase() (keys.Keybase, error) { rootDir := viper.GetString(cli.HomeFlag) - return getKeyBaseFromDirWithOpts(rootDir, &opt.Options{ReadOnly: true}) + return GetKeyBaseFromDir(rootDir) } -// initialize a keybase based on the configuration with write permission +// GetKeyBaseWithWritePerm initialize a keybase based on the configuration with write permissions. func GetKeyBaseWithWritePerm() (keys.Keybase, error) { rootDir := viper.GetString(cli.HomeFlag) return GetKeyBaseFromDirWithWritePerm(rootDir) } -// initialize a keybase at particular dir with write permission +// GetKeyBaseFromDirWithWritePerm initializes a keybase at a particular dir with write permissions. func GetKeyBaseFromDirWithWritePerm(rootDir string) (keys.Keybase, error) { - return getKeyBaseFromDirWithOpts(rootDir, &opt.Options{ReadOnly: false}) + return getKeyBaseFromDirWithOpts(rootDir, nil) +} + +// GetKeyBaseFromDir initializes a read-only keybase at a particular dir. +func GetKeyBaseFromDir(rootDir string) (keys.Keybase, error) { + return getKeyBaseFromDirWithOpts(rootDir, &opt.Options{ReadOnly: true}) } func getKeyBaseFromDirWithOpts(rootDir string, o *opt.Options) (keys.Keybase, error) { diff --git a/crypto/keys/keybase.go b/crypto/keys/keybase.go index ddcd0357e1..b75c3473ba 100644 --- a/crypto/keys/keybase.go +++ b/crypto/keys/keybase.go @@ -426,6 +426,11 @@ func (kb dbKeybase) Update(name, oldpass string, getNewpass func() (string, erro } } +// CloseDB releases the lock and closes the storage backend. +func (kb dbKeybase) CloseDB() { + kb.db.Close() +} + func (kb dbKeybase) writeLocalKey(priv tmcrypto.PrivKey, name, passphrase string) Info { // encrypt private key using passphrase privArmor := mintkey.EncryptArmorPrivKey(priv, passphrase) diff --git a/crypto/keys/types.go b/crypto/keys/types.go index f5194748a0..ff90c3205d 100644 --- a/crypto/keys/types.go +++ b/crypto/keys/types.go @@ -47,6 +47,9 @@ type Keybase interface { // *only* works on locally-stored keys. Temporary method until we redo the exporting API ExportPrivateKeyObject(name string, passphrase string) (crypto.PrivKey, error) + + // Close closes the database. + CloseDB() } // KeyType reflects a human-readable type for key listing.