mirror of
https://github.com/chris2511/xca.git
synced 2026-09-14 11:06:19 +05:00
plainview/treeview not fully working, yet
This commit is contained in:
parent
606ebf01c3
commit
786a0480cc
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user