From f7c0578fea8f41019221ea622b5bba1a8cc89825 Mon Sep 17 00:00:00 2001 From: Alessio Treglia Date: Wed, 1 Apr 2020 16:46:47 +0200 Subject: [PATCH] crypto/keyring: drop password from keyWriter internal interface (#5899) Add an extra test case to increase coverage. --- crypto/keyring/base_keybase.go | 4 ++-- crypto/keyring/keyring.go | 4 ++-- crypto/keyring/keyring_test.go | 9 +++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/crypto/keyring/base_keybase.go b/crypto/keyring/base_keybase.go index abec03359a..039b09e8ff 100644 --- a/crypto/keyring/base_keybase.go +++ b/crypto/keyring/base_keybase.go @@ -25,7 +25,7 @@ type ( } writeLocalKeyer interface { - writeLocalKey(name string, priv tmcrypto.PrivKey, passphrase string, algo SigningAlgo) Info + writeLocalKey(name string, priv tmcrypto.PrivKey, algo SigningAlgo) Info } infoWriter interface { @@ -87,7 +87,7 @@ func (kb baseKeybase) CreateAccount( var info Info if encryptPasswd != "" { - info = keyWriter.writeLocalKey(name, privKey, encryptPasswd, algo) + info = keyWriter.writeLocalKey(name, privKey, algo) } else { info = kb.writeOfflineKey(keyWriter, name, privKey.PubKey(), algo) } diff --git a/crypto/keyring/keyring.go b/crypto/keyring/keyring.go index a5b62ba3ee..3f77ce4bb3 100644 --- a/crypto/keyring/keyring.go +++ b/crypto/keyring/keyring.go @@ -364,7 +364,7 @@ func (kb keyringKeybase) ImportPrivKey(name, armor, passphrase string) error { } // NOTE: The keyring keystore has no need for a passphrase. - kb.writeLocalKey(name, privKey, "", SigningAlgo(algo)) + kb.writeLocalKey(name, privKey, SigningAlgo(algo)) return nil } @@ -435,7 +435,7 @@ func (kb keyringKeybase) SupportedAlgosLedger() []SigningAlgo { return kb.base.SupportedAlgosLedger() } -func (kb keyringKeybase) writeLocalKey(name string, priv tmcrypto.PrivKey, _ string, algo SigningAlgo) Info { +func (kb keyringKeybase) writeLocalKey(name string, priv tmcrypto.PrivKey, algo SigningAlgo) Info { // encrypt private key using keyring pub := priv.PubKey() info := newLocalInfo(name, pub, string(priv.Bytes()), algo) diff --git a/crypto/keyring/keyring_test.go b/crypto/keyring/keyring_test.go index e994f91db0..83cd5a409d 100644 --- a/crypto/keyring/keyring_test.go +++ b/crypto/keyring/keyring_test.go @@ -2,6 +2,7 @@ package keyring import ( "bytes" + "errors" "fmt" "strings" "testing" @@ -432,6 +433,14 @@ func TestSupportedAlgos(t *testing.T) { require.Equal(t, []SigningAlgo{"secp256k1"}, kb.SupportedAlgosLedger()) } +func TestCustomDerivFuncKey(t *testing.T) { + kb := NewInMemory(WithDeriveFunc(func(mnemonic string, bip39Passphrase, hdPath string, algo SigningAlgo) ([]byte, error) { + return nil, errors.New("cannot derive keys") + })) + _, _, err := kb.CreateMnemonic("test", English, "", "") + require.Error(t, err, "cannot derive keys") +} + func TestInMemoryLanguage(t *testing.T) { kb := NewInMemory() _, _, err := kb.CreateMnemonic("something", Japanese, "no_pass", Secp256k1)