From 5eb296d276f1d9d410da136e1b8ee8b03bc3139c Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Wed, 22 Jul 2015 03:42:16 -0700 Subject: [PATCH] Return invalid password when cannot retrieve passphrase Signed-off-by: Derek McGowan (github: dmcgowan) --- cryptoservice/crypto_service.go | 6 +----- trustmanager/keyfilestore.go | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/cryptoservice/crypto_service.go b/cryptoservice/crypto_service.go index e9f54d5bdf..a30a3fcc05 100644 --- a/cryptoservice/crypto_service.go +++ b/cryptoservice/crypto_service.go @@ -94,11 +94,7 @@ func (ccs *CryptoService) Sign(keyIDs []string, payload []byte) ([]data.Signatur privKey, _, err = ccs.keyStore.GetKey(keyName) if err != nil { - // Note that GetKey always fails on InitRepo. - // InitRepo gets a signer that doesn't have access to - // the root keys. Continuing here is safe because we - // end up not returning any signatures. - logrus.Debugf("ignoring error attempting to retrieve key ID: %s, %v", keyid, err) + logrus.Debugf("error attempting to retrieve key ID: %s, %v", keyid, err) return nil, err } diff --git a/trustmanager/keyfilestore.go b/trustmanager/keyfilestore.go index ac04e6234d..2fe15e783c 100644 --- a/trustmanager/keyfilestore.go +++ b/trustmanager/keyfilestore.go @@ -23,7 +23,7 @@ type ErrPasswordInvalid struct{} // ErrPasswordInvalid is returned when signing fails. It could also mean the signing // key file was corrupted, but we have no way to distinguish. func (err ErrPasswordInvalid) Error() string { - return "Password Invalid, operation has failed." + return "password invalid, operation has failed." } // KeyStore is a generic interface for private key storage @@ -159,7 +159,7 @@ func addKey(s LimitedFileStore, passphraseRetriever passphrase.Retriever, cached continue } if giveup { - return errors.New("obtaining passphrase failed") + return ErrPasswordInvalid{} } if attempts > 10 { return errors.New("maximum number of passphrase attempts exceeded")