summaryrefslogtreecommitdiff
path: root/plugins/Dbx_mdb/src/dbcrypt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Dbx_mdb/src/dbcrypt.cpp')
-rw-r--r--plugins/Dbx_mdb/src/dbcrypt.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/plugins/Dbx_mdb/src/dbcrypt.cpp b/plugins/Dbx_mdb/src/dbcrypt.cpp
index e55d7f38aa..66d74ebf67 100644
--- a/plugins/Dbx_mdb/src/dbcrypt.cpp
+++ b/plugins/Dbx_mdb/src/dbcrypt.cpp
@@ -25,9 +25,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/////////////////////////////////////////////////////////////////////////////////////////
-#define DBKEY_PROVIDER "Provider"
-#define DBKEY_KEY "Key"
-#define DBKEY_IS_ENCRYPTED "EncryptedDB"
+#define DBKEY_PROVIDER "Provider"
+#define DBKEY_KEY "Key"
+#define DBKEY_IS_ENCRYPTED "EncryptedDB"
CRYPTO_PROVIDER* CDbxMdb::SelectProvider()
{
@@ -101,8 +101,25 @@ int CDbxMdb::InitCrypt()
else
{
if (!m_crypto->setKey((const BYTE*)value.mv_data, value.mv_size))
- if (!EnterPassword((const BYTE*)value.mv_data, value.mv_size)) // password protected?
- return 4;
+ {
+ DlgChangePassParam param = { this };
+ CEnterPasswordDialog dlg(&param);
+ while (true)
+ {
+ if (-128 != dlg.DoModal())
+ return 4;
+
+ m_crypto->setPassword(pass_ptrA(mir_utf8encodeT(param.newPass)));
+ if (m_crypto->setKey((const BYTE*)value.mv_data, value.mv_size))
+ {
+ m_bUsesPassword = true;
+ SecureZeroMemory(&param, sizeof(param));
+ break;
+ }
+
+ param.wrongPass++;
+ }
+ }
}
}
else