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;
};
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

@ -48,7 +48,7 @@ void memcpyToLEnd32(char* src,const quint32* dst);
void memcpyToLEnd16(char* src,const quint16* dst);
//! 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
public:
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 QFile* file(){return File;}
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(IGroupHandle* Group);

@ -401,9 +401,11 @@ yarrow256_force_reseed(struct yarrow256_ctx *ctx)
struct yarrow256_ctx WeakCtx;
struct yarrow256_ctx StrongCtx;
struct yarrow_source WeakSrc[2];
struct yarrow_source StrongSrc[2];
void initYarrow(){
yarrow256_init(&WeakCtx,2,WeakSrc);
yarrow256_init(&StrongCtx,2,StrongSrc);
quint8 buffer[100];
srand(time(0));
for(int i=0;i<100;i++)
@ -416,5 +418,14 @@ void initYarrow(){
}
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., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <qcombobox.h>
#include <qlineedit.h>
#include <qmessagebox.h>
//Added by qt3to4:
#include <QPainter>
#include <QComboBox>
#include <QLineEdit>
#include <QMessageBox>
#include <QShowEvent>
#include "main.h"
#include "DatabaseSettingsDlg.h"
@ -29,66 +30,51 @@
CDbSettingsDlg::CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal, Qt::WFlags fl)
: QDialog(parent,fl)
{
setupUi(this);
database=db;
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
setupUi(this);
database=dynamic_cast<IKdbSettings*>(db);
createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width());
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()
{
}
void CDbSettingsDlg::showEvent(QShowEvent *event){
//@NICHTVERGESSEN
/*
if(event->spontaneous()==false){
createBanner(Banner,Icon_Settings32x32,tr("Settings"));
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::paintEvent(QPaintEvent *event){
QDialog::paintEvent(event);
QPainter painter(this);
painter.setClipRegion(event->region());
painter.drawPixmap(QPoint(0,0),BannerPixmap);
}
void CDbSettingsDlg::OnCancel()
{
done(0);
done(0);
}
void CDbSettingsDlg::OnOK()
{
if(EditRounds->text()==""){
QMessageBox::warning(NULL,tr("Warning"),tr("Please determine the number of encryption rounds."),tr("OK"));
return;
}
bool valid;
int rounds=EditRounds->text().toUInt(&valid,10);
if(valid==false){
QMessageBox::warning(NULL,tr("Error"),tr("'%1' is not valid integer value.").arg(EditRounds->text()),tr("OK"));
return;
}
if(rounds==0){
QMessageBox::warning(NULL,tr("Error"),tr("The number of encryption rounds have to be greater than 0."),tr("OK"));
return;
}
//@NICHTVERGESSEN
//database->KeyEncRounds=rounds;
//database->CryptoAlgorithmus=ComboAlgo->currentIndex();
done(1);
}
/*$SPECIALIZATION$*/
//#include "databasesettingsdlg.moc"
if(EditRounds->text()==""){
QMessageBox::warning(NULL,tr("Warning"),tr("Please determine the number of encryption rounds."),tr("OK"));
return;
}
bool valid;
int rounds=EditRounds->text().toUInt(&valid,10);
if(valid==false){
QMessageBox::warning(NULL,tr("Error"),tr("'%1' is not valid integer value.").arg(EditRounds->text()),tr("OK"));
return;
}
if(rounds==0){
QMessageBox::warning(NULL,tr("Error"),tr("The number of encryption rounds have to be greater than 0."),tr("OK"));
return;
}
database->setKeyTransfRounds(rounds);
database->setCryptAlgorithm((CryptAlgorithm)ComboAlgo->currentIndex());
done(1);
}

@ -1,6 +1,6 @@
/***************************************************************************
* Copyright (C) 2005 by Tarek Saidi *
* tarek@linux *
* Copyright (C) 2005-2006 by Tarek Saidi *
* tarek.saidi@arcor.de *
* *
* 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 *
@ -17,39 +17,30 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef DBSETTINGSDLG_H
#define DBSETTINGSDLG_H
#include "ui_DatabaseSettingsDlg.h"
#include "main.h"
#include "Database.h"
//Added by qt3to4:
#include <QShowEvent>
#include <QPaintEvent>
class CDbSettingsDlg : public QDialog, public Ui_dbsettingdlg_base
{
Q_OBJECT
public:
CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal = FALSE, Qt::WFlags fl = 0 );
~CDbSettingsDlg();
virtual void showEvent(QShowEvent *);
/*$PUBLIC_FUNCTIONS$*/
public slots:
/*$PUBLIC_SLOTS$*/
protected:
/*$PROTECTED_FUNCTIONS$*/
protected slots:
/*$PROTECTED_SLOTS$*/
public slots:
virtual void OnCancel();
virtual void OnOK();
private:
IDatabase* database;
Q_OBJECT
public:
CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal = FALSE, Qt::WFlags fl = 0 );
~CDbSettingsDlg();
virtual void paintEvent(QPaintEvent *);
public slots:
virtual void OnCancel();
virtual void OnOK();
private:
IKdbSettings* database;
QPixmap BannerPixmap;
};
#endif

@ -60,22 +60,6 @@
<string>Algorithm:</string>
</property>
</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" >
<property name="geometry" >
<rect>
@ -110,22 +94,6 @@
</property>
</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" >
<property name="geometry" >
<rect>

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