plainview/treeview not fully working, yet

This commit is contained in:
Christian 2006-12-01 07:19:41 +01:00
parent 606ebf01c3
commit 786a0480cc
8 changed files with 187 additions and 170 deletions

View File

@ -79,10 +79,10 @@ db_base::db_base(QString db, MainWindow *mw)
db_base::~db_base()
{
FOR_ALL_pki(pki, pki_base) {
rootItem->takeChild(pki);
delete pki;
}
// FOR_ALL_pki(pki, pki_base) {
// rootItem->takeChild(pki);
// delete pki;
// }
delete rootItem;
}
@ -270,7 +270,7 @@ void db_base::storeSelectedItems(XcaTreeView* view)
currentIdx = QModelIndex();
}
void db_base::insertSortChild(pki_base *parent, pki_base *child)
void db_base::insertChild(pki_base *parent, pki_base *child)
{
int row;
QModelIndex idx = QModelIndex();
@ -281,15 +281,14 @@ void db_base::insertSortChild(pki_base *parent, pki_base *child)
if (parent != rootItem)
idx = index(parent);
row = parent->alphabeticRow(child->getIntName());
beginInsertRows(idx, row, row);
parent->insert(row, child);
beginInsertRows(idx, 0, 0);
parent->append(child);
endInsertRows();
}
void db_base::inToCont(pki_base *pki)
{
insertSortChild(rootItem, pki);
insertChild(rootItem, pki);
}
pki_base *db_base::getByName(QString desc)
@ -406,8 +405,9 @@ int db_base::columnCount(const QModelIndex &parent) const
if (headertext.count())
return headertext.count();
item = rootItem;
} else {
item = static_cast<pki_base*>(parent.internalPointer());
}
item = static_cast<pki_base*>(parent.internalPointer());
return item->columns();
}

View File

@ -121,7 +121,7 @@ class db_base: public QAbstractItemModel
void showSelectedItems(XcaTreeView *view);
void storeSelectedItems(XcaTreeView *view);
void load_default(load_base &load);
void insertSortChild(pki_base *parent, pki_base *child);
void insertChild(pki_base *parent, pki_base *child);
virtual void showItem(const QModelIndex &index) {};
public slots:

View File

@ -59,6 +59,7 @@
#include <Qt/qevent.h>
#include <Qt/qaction.h>
bool db_x509::treeview = true;
db_x509::db_x509(QString DBfile, MainWindow *mw)
:db_x509super(DBfile, mw)
@ -135,7 +136,7 @@ void db_x509::remFromCont(QModelIndex &idx)
printf("Child: %s\n", CCHAR(child->getIntName()));
child->delSigner((pki_x509*)pki);
new_parent = findSigner(child);
insertSortChild(new_parent, child);
insertChild(new_parent, child);
}
return;
}
@ -150,6 +151,34 @@ void db_x509::preprocess()
}
void db_x509::changeView()
{
pki_base *temproot = new pki_base();
int rows = rowCount(QModelIndex());
beginRemoveRows(QModelIndex(), 0, rows);
pki_base *pki = rootItem;
pki_base *parent;
while(pki && pki->childCount()) {
pki = pki->takeFirst();
while(pki != rootItem && !pki->childCount()) {
parent = pki->getParent();
temproot->append(pki);
printf("Processing %s\n",CCHAR(pki->getIntName()));
pki = parent;
}
}
endRemoveRows();
treeview = !treeview;
if (treeview)
mainwin->BNviewState->setText(tr("Plain View"));
else
mainwin->BNviewState->setText(tr("Tree View"));
printf("ChildCount=%d\n", temproot->childCount());
while((temproot->childCount()))
inToCont(temproot->takeFirst());
}
void db_x509::calcEffTrust()
{
@ -157,42 +186,33 @@ void db_x509::calcEffTrust()
pki->calcEffTrust();
}
#if 0
void db_x509::insertPKI(pki_base *refpki)
{
pki_x509 *x = (pki_x509 *)refpki;
findSigner(x); /* sets the signer if found for this cert */
FOR_ALL_pki(pki, pki_x509) /* sets this cert as signer the certs */
pki->verify(x);
db_base::insertPKI(refpki);
}
#endif
void db_x509::inToCont(pki_base *pki)
{
pki_x509 *cert = (pki_x509*)pki;
findSigner(cert);
pki_base *root = cert->getSigner();
QModelIndex idx = QModelIndex();
if (!treeview)
root = rootItem;
insertSortChild(root, pki);
insertChild(root, pki);
if (treeview) {
/* search for dangling certificates, which signer this is */
// printf("New Certificate: %s\n", CCHAR(pki->getIntName()));
FOR_ALL_pki(client, pki_x509) {
//printf("client %s ?\n", CCHAR(client->getIntName()));
if (client->getSigner() == NULL) {
//printf("examining client %s\n", CCHAR(client->getIntName()));
if (client->verify(cert)) {
int row = client->row();
// printf("Client cert found: %s(%d)%p -> %s(%d)%p\n", CCHAR(pki->getIntName()), pki->childCount(), pki, CCHAR(client->getIntName()), client->childCount(), client);
beginRemoveRows(QModelIndex(), row, row);
rootItem->takeChild(client);
endRemoveRows();
idx = index(pki);
/* search for dangling certificates, which signer this is */
// printf("New Certificate: %s\n", CCHAR(pki->getIntName()));
FOR_ALL_pki(client, pki_x509) {
//printf("client %s ?\n", CCHAR(client->getIntName()));
if (client->getSigner() == NULL) {
//printf("examining client %s\n", CCHAR(client->getIntName()));
if (client->verify(cert)) {
int row = client->row();
// printf("Client cert found: %s(%d)%p -> %s(%d)%p\n", CCHAR(pki->getIntName()), pki->childCount(), pki, CCHAR(client->getIntName()), client->childCount(), client);
beginRemoveRows(QModelIndex(), row, row);
rootItem->takeChild(client);
endRemoveRows();
insertSortChild(pki, client);
client = (pki_x509*)rootItem->iterate();
insertChild(pki, client);
client = (pki_x509*)rootItem->iterate();
}
}
}
}

View File

@ -65,51 +65,53 @@ class db_x509: public db_x509super
Q_OBJECT
protected:
QPixmap *certicon[4];
QPixmap *certicon[4];
static bool treeview;
public:
db_x509(QString DBfile, MainWindow *mw);
pki_base *newPKI();
pki_x509 *findSigner(pki_x509 *client);
bool updateView();
void updateViewAll();
void updateViewPKI(pki_base *pki);
void remFromCont(QModelIndex &idx);
void preprocess();
QStringList getPrivateDesc();
QStringList getSignerDesc();
void calcEffTrust();
QList<pki_x509*> getIssuedCerts(const pki_x509 *issuer);
QList<pki_x509*> getCerts(bool onlyTrusted);
a1int searchSerial(pki_x509 *signer);
void writeAllCerts(const QString fname, bool onlyTrusted);
pki_x509 *getByIssSerial(const pki_x509 *issuer, const a1int &a);
pki_x509 *getBySubject(const x509name &xname, pki_x509 *last = NULL);
pki_base *insert(pki_base *item);
void newCert(NewX509 *dlg);
void writePKCS12(pki_x509 *cert, QString s, bool chain);
void writePKCS7(pki_x509 *cert, QString s, int type);
void showContextMenu(QContextMenuEvent *e, const QModelIndex &index);
void inToCont(pki_base *pki);
db_x509(QString DBfile, MainWindow *mw);
pki_base *newPKI();
pki_x509 *findSigner(pki_x509 *client);
bool updateView();
void updateViewAll();
void updateViewPKI(pki_base *pki);
void remFromCont(QModelIndex &idx);
void preprocess();
QStringList getPrivateDesc();
QStringList getSignerDesc();
void calcEffTrust();
QList<pki_x509*> getIssuedCerts(const pki_x509 *issuer);
QList<pki_x509*> getCerts(bool onlyTrusted);
a1int searchSerial(pki_x509 *signer);
void writeAllCerts(const QString fname, bool onlyTrusted);
pki_x509 *getByIssSerial(const pki_x509 *issuer, const a1int &a);
pki_x509 *getBySubject(const x509name &xname, pki_x509 *last = NULL);
pki_base *insert(pki_base *item);
void newCert(NewX509 *dlg);
void writePKCS12(pki_x509 *cert, QString s, bool chain);
void writePKCS7(pki_x509 *cert, QString s, int type);
void showContextMenu(QContextMenuEvent *e, const QModelIndex &index);
void inToCont(pki_base *pki);
void changeView();
public slots:
void load(void);
void newItem(void);
void revokeCert(const x509rev &revok, const pki_x509 *issuer);
void store();
void showItem(const QModelIndex &index);
void setMultiTrust(QAbstractItemView* view);
void setTrust();
void extendCert();
void revoke();
void unRevoke();
void genCrl();
void caProperties();
void toRequest();
void newCert(pki_temp *);
void newCert(pki_x509req *);
void loadPKCS12();
void loadPKCS7();
void load(void);
void newItem(void);
void revokeCert(const x509rev &revok, const pki_x509 *issuer);
void store();
void showItem(const QModelIndex &index);
void setMultiTrust(QAbstractItemView* view);
void setTrust();
void extendCert();
void revoke();
void unRevoke();
void genCrl();
void caProperties();
void toRequest();
void newCert(pki_temp *);
void newCert(pki_x509req *);
void loadPKCS12();
void loadPKCS7();
};
#endif

View File

@ -78,6 +78,8 @@ enum pki_type pki_base::getType()
pki_base::~pki_base(void)
{
while((childCount()))
delete takeFirst();
pki_counter--;
}
@ -198,19 +200,6 @@ int pki_base::childCount()
return childItems.count();
}
int pki_base::alphabeticRow(QString name)
{
int i;
for (i=0; i< childItems.size(); i++) {
//printf("CMP: '%s:%s'\n", CCHAR(childItems.at(i)->getIntName()),
// CCHAR(name));
if (childItems.at(i)->getIntName() > name) {
break;
}
}
return i;
}
int pki_base::row(void) const
{
if (parent)

View File

@ -104,7 +104,6 @@ class pki_base : public QObject
pki_base *iterate(pki_base *pki = NULL);
void takeChild(pki_base *pki);
pki_base *takeFirst();
int alphabeticRow(QString name);
int columns();
virtual QVariant column_data(int col);
virtual QVariant getIcon();

View File

@ -319,6 +319,12 @@ void MainWindow::on_BNimportPKCS7_clicked(void)
certs->loadPKCS7();
}
void MainWindow::on_BNviewState_clicked(void)
{
if(certs)
certs->changeView();
}
/* Template buttons */
void MainWindow::on_BNdeleteTemp_clicked(void)
{

View File

@ -70,91 +70,92 @@ class MainWindow: public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
private:
QString workingdir;
private:
QString workingdir;
protected:
void init_images();
void init_menu();
int force_load;
NIDlist *read_nidlist(QString name);
QLabel *statusLabel;
protected:
void init_images();
void init_menu();
int force_load;
NIDlist *read_nidlist(QString name);
QLabel *statusLabel;
public:
static db_x509 *certs;
static db_x509req *reqs;
static db_key *keys;
static db_temp *temps;
static db_crl *crls;
static db_base *settings;
static QPixmap *keyImg, *csrImg, *certImg, *tempImg, *nsImg, *revImg, *appIco;
static NIDlist *eku_nid, *dn_nid, *aia_nid;
int exitApp;
QString dbfile;
public:
static db_x509 *certs;
static db_x509req *reqs;
static db_key *keys;
static db_temp *temps;
static db_crl *crls;
static db_base *settings;
static QPixmap *keyImg, *csrImg, *certImg, *tempImg, *nsImg, *revImg, *appIco;
static NIDlist *eku_nid, *dn_nid, *aia_nid;
int exitApp;
QString dbfile;
MainWindow(QWidget *parent);
virtual ~MainWindow();
void loadSettings();
void saveSettings();
int initPass();
void read_cmdline();
static int passRead(char *buf, int size, int rwflag, void *userdata);
static int passWrite(char *buf, int size, int rwflag, void *userdata);
//static void Qt::SocketError(errorEx &err);
static void Error(errorEx &err);
void cmd_help(const char* msg);
MainWindow(QWidget *parent);
virtual ~MainWindow();
void loadSettings();
void saveSettings();
int initPass();
void read_cmdline();
static int passRead(char *buf, int size, int rwflag, void *userdata);
static int passWrite(char *buf, int size, int rwflag, void *userdata);
//static void Qt::SocketError(errorEx &err);
static void Error(errorEx &err);
void cmd_help(const char* msg);
QString getPath();
void setPath(QString path);
bool mkDir(QString dir);
QString getPath();
void setPath(QString path);
bool mkDir(QString dir);
public slots:
void init_database();
void load_database();
void close_database();
void dump_database();
void connNewX509(NewX509 *nx);
void about();
void help();
void import_dbdump();
public slots:
void init_database();
void load_database();
void close_database();
void dump_database();
void connNewX509(NewX509 *nx);
void about();
void help();
void import_dbdump();
private slots:
void on_keyView_doubleClicked(const QModelIndex &m);
void on_reqView_doubleClicked(const QModelIndex &m);
void on_certView_doubleClicked(const QModelIndex &m);
void on_tempView_doubleClicked(const QModelIndex &m);
void on_crlView_doubleClicked(const QModelIndex &m);
private slots:
void on_keyView_doubleClicked(const QModelIndex &m);
void on_reqView_doubleClicked(const QModelIndex &m);
void on_certView_doubleClicked(const QModelIndex &m);
void on_tempView_doubleClicked(const QModelIndex &m);
void on_crlView_doubleClicked(const QModelIndex &m);
void on_BNnewKey_clicked(void);
void on_BNdeleteKey_clicked(void);
void on_BNdetailsKey_clicked(void);
void on_BNimportKey_clicked(void);
void on_BNexportKey_clicked(void);
void on_BNimportPFX_clicked(void);
void on_BNnewKey_clicked(void);
void on_BNdeleteKey_clicked(void);
void on_BNdetailsKey_clicked(void);
void on_BNimportKey_clicked(void);
void on_BNexportKey_clicked(void);
void on_BNimportPFX_clicked(void);
void on_BNnewReq_clicked(void);
void on_BNdeleteReq_clicked(void);
void on_BNdetailsReq_clicked(void);
void on_BNimportReq_clicked(void);
void on_BNexportReq_clicked(void);
void on_BNnewReq_clicked(void);
void on_BNdeleteReq_clicked(void);
void on_BNdetailsReq_clicked(void);
void on_BNimportReq_clicked(void);
void on_BNexportReq_clicked(void);
void on_BNnewCert_clicked(void);
void on_BNdeleteCert_clicked(void);
void on_BNdetailsCert_clicked(void);
void on_BNimportCert_clicked(void);
void on_BNexportCert_clicked(void);
void on_BNimportPKCS12_clicked(void);
void on_BNimportPKCS7_clicked(void);
void on_BNnewCert_clicked(void);
void on_BNdeleteCert_clicked(void);
void on_BNdetailsCert_clicked(void);
void on_BNimportCert_clicked(void);
void on_BNexportCert_clicked(void);
void on_BNimportPKCS12_clicked(void);
void on_BNimportPKCS7_clicked(void);
void on_BNviewState_clicked(void);
void on_BNnewTemp_clicked(void);
void on_BNdeleteTemp_clicked(void);
void on_BNchangeTemp_clicked(void);
void on_BNimportTemp_clicked(void);
void on_BNexportTemp_clicked(void);
void on_BNnewTemp_clicked(void);
void on_BNdeleteTemp_clicked(void);
void on_BNchangeTemp_clicked(void);
void on_BNimportTemp_clicked(void);
void on_BNexportTemp_clicked(void);
void on_BNdeleteCrl_clicked(void);
void on_BNdetailsCrl_clicked(void);
void on_BNimportCrl_clicked(void);
void on_BNexportCrl_clicked(void);
void on_BNdeleteCrl_clicked(void);
void on_BNdetailsCrl_clicked(void);
void on_BNimportCrl_clicked(void);
void on_BNexportCrl_clicked(void);
};
#endif