diff --git a/accounts/account_manager.go b/accounts/account_manager.go
index dc9f40048920e31aa6e70e1b5cc17a7a85e3d74c..2489d29a0aecfc8e7c5d43061499eb01423c0b03 100644
--- a/accounts/account_manager.go
+++ b/accounts/account_manager.go
@@ -38,6 +38,7 @@ import (
 var (
 	ErrLocked  = errors.New("account is locked")
 	ErrNoMatch = errors.New("no key for given address or file")
+	ErrDecrypt = errors.New("could not decrypt key with given passphrase")
 )
 
 type Account struct {
diff --git a/accounts/key_store_passphrase.go b/accounts/key_store_passphrase.go
index 0cc598bbcc8e8e4eeeba77b14e5c69fd404a4df2..87c7cb98f7fa4cfce8a56fb56eeeac3dfc8e7412 100644
--- a/accounts/key_store_passphrase.go
+++ b/accounts/key_store_passphrase.go
@@ -31,7 +31,6 @@ import (
 	"crypto/sha256"
 	"encoding/hex"
 	"encoding/json"
-	"errors"
 	"fmt"
 	"io/ioutil"
 	"path/filepath"
@@ -214,7 +213,7 @@ func decryptKeyV3(keyProtected *encryptedKeyJSONV3, auth string) (keyBytes []byt
 
 	calculatedMAC := crypto.Keccak256(derivedKey[16:32], cipherText)
 	if !bytes.Equal(calculatedMAC, mac) {
-		return nil, nil, errors.New("Decryption failed: MAC mismatch")
+		return nil, nil, ErrDecrypt
 	}
 
 	plainText, err := aesCTRXOR(derivedKey[:16], cipherText, iv)
@@ -248,7 +247,7 @@ func decryptKeyV1(keyProtected *encryptedKeyJSONV1, auth string) (keyBytes []byt
 
 	calculatedMAC := crypto.Keccak256(derivedKey[16:32], cipherText)
 	if !bytes.Equal(calculatedMAC, mac) {
-		return nil, nil, errors.New("Decryption failed: MAC mismatch")
+		return nil, nil, ErrDecrypt
 	}
 
 	plainText, err := aesCBCDecrypt(crypto.Keccak256(derivedKey[:16])[:16], cipherText, iv)
diff --git a/accounts/key_store_test.go b/accounts/key_store_test.go
index 01bf1b50a94b55b8d8e5e8f010d8dd9bb1e273ad..b0417c87e39fef8b5f99c9191bc7713d2a4e801e 100644
--- a/accounts/key_store_test.go
+++ b/accounts/key_store_test.go
@@ -94,8 +94,8 @@ func TestKeyStorePassphraseDecryptionFail(t *testing.T) {
 	if err != nil {
 		t.Fatal(err)
 	}
-	if _, err = ks.GetKey(k1.Address, account.File, "bar"); err == nil {
-		t.Fatal("no error for invalid passphrase")
+	if _, err = ks.GetKey(k1.Address, account.File, "bar"); err != ErrDecrypt {
+		t.Fatalf("wrong error for invalid passphrase\ngot %q\nwant %q", err, ErrDecrypt)
 	}
 }
 
diff --git a/accounts/presale.go b/accounts/presale.go
index 86bfc519c80fb07be57723c7590f8a5a26d6b7ac..bb82821b9d977dbb9c7ff0b612798a6768c85cd4 100644
--- a/accounts/presale.go
+++ b/accounts/presale.go
@@ -22,7 +22,6 @@ import (
 	"crypto/sha256"
 	"encoding/hex"
 	"encoding/json"
-	"errors"
 	"fmt"
 
 	"github.com/ethereum/go-ethereum/crypto"
@@ -106,7 +105,7 @@ func aesCBCDecrypt(key, cipherText, iv []byte) ([]byte, error) {
 	decrypter.CryptBlocks(paddedPlaintext, cipherText)
 	plaintext := pkcs7Unpad(paddedPlaintext)
 	if plaintext == nil {
-		err = errors.New("Decryption failed: PKCS7Unpad failed after AES decryption")
+		return nil, ErrDecrypt
 	}
 	return plaintext, err
 }
diff --git a/cmd/geth/accountcmd.go b/cmd/geth/accountcmd.go
index 35b6b2dd888b2535536d384436654c39edb94273..6e8d2b7ebfd00a0a5c90f8aff1749c06211ae369 100644
--- a/cmd/geth/accountcmd.go
+++ b/cmd/geth/accountcmd.go
@@ -263,7 +263,7 @@ func importWallet(ctx *cli.Context) {
 
 	acct, err := accman.ImportPreSaleKey(keyJson, passphrase)
 	if err != nil {
-		utils.Fatalf("Could not create the account: %v", err)
+		utils.Fatalf("%v", err)
 	}
 	fmt.Printf("Address: {%x}\n", acct.Address)
 }
diff --git a/cmd/geth/accountcmd_test.go b/cmd/geth/accountcmd_test.go
index 7a1bf4ea1f901b21983f58b5d329ace073abae64..fa3f73843a1e52c866a85ec96f54dfa7a4264ceb 100644
--- a/cmd/geth/accountcmd_test.go
+++ b/cmd/geth/accountcmd_test.go
@@ -127,7 +127,7 @@ func TestWalletImportBadPassword(t *testing.T) {
 	geth.expect(`
 !! Unsupported terminal, password will be echoed.
 Passphrase: {{.InputLine "wrong"}}
-Fatal: Could not create the account: Decryption failed: PKCS7Unpad failed after AES decryption
+Fatal: could not decrypt key with given passphrase
 `)
 }