rebuild DatabaseSettingsDlg

git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@106 b624d157-de02-0410-bad0-e51aec6abb33
master
tarek_saidi 18 years ago
parent f3fd0c681c
commit 0e2725ee06
  1. 8
      src/Database.h
  2. 6
      src/StandardDatabase.h
  3. 13
      src/crypto/yarrow.cpp
  4. 90
      src/dialogs/DatabaseSettingsDlg.cpp
  5. 45
      src/dialogs/DatabaseSettingsDlg.h
  6. 32
      src/forms/DatabaseSettingsDlg.ui
  7. 15
      src/mainwindow.cpp

@ -396,4 +396,12 @@ public:
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;
}; };
class IKdbSettings{
public:
virtual void setCryptAlgorithm(CryptAlgorithm algo)=0;
virtual CryptAlgorithm cryptAlgorithm()=0;
virtual unsigned int keyTransfRounds()=0;
virtual void setKeyTransfRounds(unsigned int rounds)=0;
};
#endif #endif

@ -48,7 +48,7 @@ void memcpyToLEnd32(char* src,const quint32* dst);
void memcpyToLEnd16(char* src,const quint16* dst); void memcpyToLEnd16(char* src,const quint16* dst);
//! Implementation of the standard KeePassX database. //! Implementation of the standard KeePassX database.
class StandardDatabase:public ICustomIcons,public IDatabase, public IFilePasswordAuth{ class StandardDatabase:public ICustomIcons,public IDatabase, public IFilePasswordAuth, public IKdbSettings{
Q_OBJECT Q_OBJECT
public: public:
class StdGroup; class StdGroup;
@ -160,6 +160,10 @@ public:
virtual QList<IEntryHandle*> search(IGroupHandle* Group,const QString& SearchString, bool CaseSensitve, bool RegExp,bool Recursive,bool* Fields); virtual QList<IEntryHandle*> search(IGroupHandle* Group,const QString& SearchString, bool CaseSensitve, bool RegExp,bool Recursive,bool* Fields);
virtual QFile* file(){return File;} virtual QFile* file(){return File;}
virtual bool changeFile(const QString& filename); virtual bool changeFile(const QString& filename);
virtual void setCryptAlgorithm(CryptAlgorithm algo){Algorithm=algo;}
virtual CryptAlgorithm cryptAlgorithm(){return Algorithm;}
virtual unsigned int keyTransfRounds(){return KeyTransfRounds;}
virtual void setKeyTransfRounds(unsigned int rounds){KeyTransfRounds=rounds;}
virtual QList<IEntryHandle*> entries(); virtual QList<IEntryHandle*> entries();
virtual QList<IEntryHandle*> entries(IGroupHandle* Group); virtual QList<IEntryHandle*> entries(IGroupHandle* Group);

@ -401,9 +401,11 @@ yarrow256_force_reseed(struct yarrow256_ctx *ctx)
struct yarrow256_ctx WeakCtx; struct yarrow256_ctx WeakCtx;
struct yarrow256_ctx StrongCtx; struct yarrow256_ctx StrongCtx;
struct yarrow_source WeakSrc[2]; struct yarrow_source WeakSrc[2];
struct yarrow_source StrongSrc[2];
void initYarrow(){ void initYarrow(){
yarrow256_init(&WeakCtx,2,WeakSrc); yarrow256_init(&WeakCtx,2,WeakSrc);
yarrow256_init(&StrongCtx,2,StrongSrc);
quint8 buffer[100]; quint8 buffer[100];
srand(time(0)); srand(time(0));
for(int i=0;i<100;i++) for(int i=0;i<100;i++)
@ -416,5 +418,14 @@ void initYarrow(){
} }
void randomize(void* buffer, unsigned int length){ void randomize(void* buffer, unsigned int length){
yarrow256_random(&WeakCtx,length,(quint8*)buffer); if(!yarrow256_is_seeded(&StrongCtx))
yarrow256_random(&WeakCtx,length,(quint8*)buffer);
else
yarrow256_random(&StrongCtx,length,(quint8*)buffer);
}
void strongRandomize(void* buffer, unsigned int length){
Q_ASSERT(yarrow256_is_seeded(&StrongCtx));
for(int i=0; i<length;i++)
yarrow256_random(&StrongCtx,1,(quint8*)buffer+i);
} }

@ -17,10 +17,11 @@
* Free Software Foundation, Inc., * * Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/ ***************************************************************************/
#include <qcombobox.h>
#include <qlineedit.h> #include <QPainter>
#include <qmessagebox.h> #include <QComboBox>
//Added by qt3to4: #include <QLineEdit>
#include <QMessageBox>
#include <QShowEvent> #include <QShowEvent>
#include "main.h" #include "main.h"
#include "DatabaseSettingsDlg.h" #include "DatabaseSettingsDlg.h"
@ -29,66 +30,51 @@
CDbSettingsDlg::CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal, Qt::WFlags fl) CDbSettingsDlg::CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal, Qt::WFlags fl)
: QDialog(parent,fl) : QDialog(parent,fl)
{ {
setupUi(this); setupUi(this);
database=db; database=dynamic_cast<IKdbSettings*>(db);
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) ); createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width());
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) ); ComboAlgo->insertItem(0,tr("AES(Rijndael): 256 Bit (default)"));
ComboAlgo->insertItem(1,tr("Twofish: 256 Bit"));
ComboAlgo->setCurrentIndex(database->cryptAlgorithm()); //Achtung: AlgoID muss gleich dem ComboBox Index sein!
EditRounds->setText(QString::number(database->keyTransfRounds()));
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
} }
CDbSettingsDlg::~CDbSettingsDlg() CDbSettingsDlg::~CDbSettingsDlg()
{ {
} }
void CDbSettingsDlg::showEvent(QShowEvent *event){ void CDbSettingsDlg::paintEvent(QPaintEvent *event){
//@NICHTVERGESSEN QDialog::paintEvent(event);
/* QPainter painter(this);
if(event->spontaneous()==false){ painter.setClipRegion(event->region());
createBanner(Banner,Icon_Settings32x32,tr("Settings")); painter.drawPixmap(QPoint(0,0),BannerPixmap);
ComboAlgo->insertItem(0,tr("AES(Rijndael): 256 Bit (default)"));
ComboAlgo->insertItem(1,tr("Twofish: 256 Bit"));
ComboAlgo->setCurrentIndex(database->CryptoAlgorithmus); //Achtung: AlgoID muss gleich dem ComboBox Index sein!
EditRounds->setText(QString::number(database->KeyEncRounds));
}
*/
} }
void CDbSettingsDlg::OnCancel() void CDbSettingsDlg::OnCancel()
{ {
done(0); done(0);
} }
void CDbSettingsDlg::OnOK() void CDbSettingsDlg::OnOK()
{ {
if(EditRounds->text()==""){ if(EditRounds->text()==""){
QMessageBox::warning(NULL,tr("Warning"),tr("Please determine the number of encryption rounds."),tr("OK")); QMessageBox::warning(NULL,tr("Warning"),tr("Please determine the number of encryption rounds."),tr("OK"));
return; return;
} }
bool valid; bool valid;
int rounds=EditRounds->text().toUInt(&valid,10); int rounds=EditRounds->text().toUInt(&valid,10);
if(valid==false){ if(valid==false){
QMessageBox::warning(NULL,tr("Error"),tr("'%1' is not valid integer value.").arg(EditRounds->text()),tr("OK")); QMessageBox::warning(NULL,tr("Error"),tr("'%1' is not valid integer value.").arg(EditRounds->text()),tr("OK"));
return; return;
} }
if(rounds==0){ if(rounds==0){
QMessageBox::warning(NULL,tr("Error"),tr("The number of encryption rounds have to be greater than 0."),tr("OK")); QMessageBox::warning(NULL,tr("Error"),tr("The number of encryption rounds have to be greater than 0."),tr("OK"));
return; return;
} }
database->setKeyTransfRounds(rounds);
//@NICHTVERGESSEN database->setCryptAlgorithm((CryptAlgorithm)ComboAlgo->currentIndex());
//database->KeyEncRounds=rounds; done(1);
//database->CryptoAlgorithmus=ComboAlgo->currentIndex(); }
done(1);
}
/*$SPECIALIZATION$*/
//#include "databasesettingsdlg.moc"

@ -1,6 +1,6 @@
/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 by Tarek Saidi * * Copyright (C) 2005-2006 by Tarek Saidi *
* tarek@linux * * tarek.saidi@arcor.de *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
@ -17,39 +17,30 @@
* Free Software Foundation, Inc., * * Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/ ***************************************************************************/
#ifndef DBSETTINGSDLG_H #ifndef DBSETTINGSDLG_H
#define DBSETTINGSDLG_H #define DBSETTINGSDLG_H
#include "ui_DatabaseSettingsDlg.h" #include "ui_DatabaseSettingsDlg.h"
#include "main.h" #include "main.h"
#include "Database.h" #include "Database.h"
//Added by qt3to4: #include <QPaintEvent>
#include <QShowEvent>
class CDbSettingsDlg : public QDialog, public Ui_dbsettingdlg_base class CDbSettingsDlg : public QDialog, public Ui_dbsettingdlg_base
{ {
Q_OBJECT Q_OBJECT
public:
public: CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal = FALSE, Qt::WFlags fl = 0 );
CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal = FALSE, Qt::WFlags fl = 0 ); ~CDbSettingsDlg();
~CDbSettingsDlg(); virtual void paintEvent(QPaintEvent *);
virtual void showEvent(QShowEvent *);
/*$PUBLIC_FUNCTIONS$*/ public slots:
virtual void OnCancel();
public slots: virtual void OnOK();
/*$PUBLIC_SLOTS$*/
private:
protected: IKdbSettings* database;
/*$PROTECTED_FUNCTIONS$*/ QPixmap BannerPixmap;
protected slots:
/*$PROTECTED_SLOTS$*/
public slots:
virtual void OnCancel();
virtual void OnOK();
private:
IDatabase* database;
}; };
#endif #endif

@ -60,22 +60,6 @@
<string>Algorithm:</string> <string>Algorithm:</string>
</property> </property>
</widget> </widget>
<widget class="QPushButton" name="pushButton1" >
<property name="geometry" >
<rect>
<x>390</x>
<y>0</y>
<width>20</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>?</string>
</property>
<property name="shortcut" >
<string/>
</property>
</widget>
<widget class="QComboBox" name="ComboAlgo" > <widget class="QComboBox" name="ComboAlgo" >
<property name="geometry" > <property name="geometry" >
<rect> <rect>
@ -110,22 +94,6 @@
</property> </property>
</widget> </widget>
</widget> </widget>
<widget class="QLabel" name="Banner" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>440</width>
<height>51</height>
</rect>
</property>
<property name="pixmap" >
<pixmap>image0</pixmap>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="ButtonOK" > <widget class="QPushButton" name="ButtonOK" >
<property name="geometry" > <property name="geometry" >
<rect> <rect>

@ -436,12 +436,15 @@ void KeepassMainWindow::OnFileNewKxdb(){
void KeepassMainWindow::OnFileOpen(){ void KeepassMainWindow::OnFileOpen(){
QString filename=QFileDialog::getOpenFileName(this,tr("Open Database..."),QDir::homePath(),"*.kdb"); QFileDialog FileDlg(this,tr("Open Database..."),QDir::homePath());
if(filename!=QString()){ FileDlg.setFilters(QStringList()<< tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
if(FileOpen) FileDlg.setFileMode(QFileDialog::ExistingFile);
if(!closeDatabase())return; FileDlg.setAcceptMode(QFileDialog::AcceptOpen);
openDatabase(filename); if(!FileDlg.exec())return;
} if(!FileDlg.selectedFiles().size())return;
if(FileOpen)
if(!closeDatabase())return;
openDatabase(FileDlg.selectedFiles()[0]);
} }
void KeepassMainWindow::OnFileClose(){ void KeepassMainWindow::OnFileClose(){