show key dialog again if hash test fails
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@116 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
parent
a8d60588cc
commit
f4efea7849
|
@ -394,6 +394,7 @@ public:
|
||||||
\return TRUE if the creation was successfull, otherwise FALSE.
|
\return TRUE if the creation was successfull, otherwise FALSE.
|
||||||
*/
|
*/
|
||||||
virtual bool createKeyFile(const QString& filename,int length=32, bool Hex=false)=0;
|
virtual bool createKeyFile(const QString& filename,int length=32, bool Hex=false)=0;
|
||||||
|
virtual bool isKeyError()=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class IKdbSettings{
|
class IKdbSettings{
|
||||||
|
|
|
@ -421,6 +421,7 @@ SHA256::hashBuffer(buffer+DB_HEADER_SIZE,FinalKey,crypto_size);
|
||||||
|
|
||||||
if(memcmp(ContentsHash, FinalKey, 32) != 0){
|
if(memcmp(ContentsHash, FinalKey, 32) != 0){
|
||||||
error=tr("Hash test failed.\nThe key is wrong or the file is damaged.");
|
error=tr("Hash test failed.\nThe key is wrong or the file is damaged.");
|
||||||
|
KeyError=true;
|
||||||
return false;}
|
return false;}
|
||||||
|
|
||||||
unsigned long tmp_id=0;
|
unsigned long tmp_id=0;
|
||||||
|
@ -1359,7 +1360,16 @@ void StandardDatabase::create(){
|
||||||
RootGroup.Handle=NULL;
|
RootGroup.Handle=NULL;
|
||||||
Algorithm=Rijndael_Cipher;
|
Algorithm=Rijndael_Cipher;
|
||||||
KeyTransfRounds=6000;
|
KeyTransfRounds=6000;
|
||||||
|
KeyError=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StandardDatabase::isKeyError(){
|
||||||
|
if(KeyError){
|
||||||
|
KeyError=false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
IEntryHandle* StandardDatabase::cloneEntry(const IEntryHandle* entry){
|
IEntryHandle* StandardDatabase::cloneEntry(const IEntryHandle* entry){
|
||||||
|
|
|
@ -146,6 +146,7 @@ public:
|
||||||
virtual int numEntries();
|
virtual int numEntries();
|
||||||
virtual int numGroups();
|
virtual int numGroups();
|
||||||
virtual QString getError();
|
virtual QString getError();
|
||||||
|
virtual bool isKeyError();
|
||||||
virtual void cleanUpHandles();
|
virtual void cleanUpHandles();
|
||||||
virtual QPixmap& icon(int index);
|
virtual QPixmap& icon(int index);
|
||||||
virtual int numIcons();
|
virtual int numIcons();
|
||||||
|
@ -227,6 +228,7 @@ private:
|
||||||
QList<QPixmap>CustomIcons;
|
QList<QPixmap>CustomIcons;
|
||||||
QFile* File;
|
QFile* File;
|
||||||
QString error;
|
QString error;
|
||||||
|
bool KeyError;
|
||||||
QList<StdEntry> UnknownMetaStreams;
|
QList<StdEntry> UnknownMetaStreams;
|
||||||
unsigned int KeyTransfRounds;
|
unsigned int KeyTransfRounds;
|
||||||
CryptAlgorithm Algorithm;
|
CryptAlgorithm Algorithm;
|
||||||
|
|
|
@ -336,11 +336,14 @@ void KeepassMainWindow::openDatabase(QString filename,bool IsAuto){
|
||||||
else{
|
else{
|
||||||
StatusBarGeneral->setText(tr("Loading Failed"));
|
StatusBarGeneral->setText(tr("Loading Failed"));
|
||||||
QString error=db->getError();
|
QString error=db->getError();
|
||||||
|
bool KeyError=auth->isKeyError();
|
||||||
delete db;
|
delete db;
|
||||||
if(error==QString())error=tr("Unknown error while loading database.");
|
if(error==QString())error=tr("Unknown error while loading database.");
|
||||||
QMessageBox::critical(this,tr("Error")
|
QMessageBox::critical(this,tr("Error")
|
||||||
,tr("The following error occured while opening the database:\n%1")
|
,tr("The following error occured while opening the database:\n%1")
|
||||||
.arg(error),tr("OK"));
|
.arg(error),tr("OK"));
|
||||||
|
if(KeyError)
|
||||||
|
openDatabase(filename,IsAuto);
|
||||||
}
|
}
|
||||||
StatusBarGeneral->setText(tr("Ready"));
|
StatusBarGeneral->setText(tr("Ready"));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue