diff --git a/ExportCert.cpp b/ExportCert.cpp index f3309018..4fc87bf0 100644 --- a/ExportCert.cpp +++ b/ExportCert.cpp @@ -52,7 +52,7 @@ #include "ExportCert.h" -ExportCert::ExportCert(QString fname, bool hasKey, +ExportCert::ExportCert(QString fname, bool hasKey, QWidget *parent, const char *name ) :ExportCert_UI(parent,name,true,0) { @@ -63,6 +63,7 @@ ExportCert::ExportCert(QString fname, bool hasKey, exportFormat->insertItem("PEM all trusted Certificates"); exportFormat->insertItem("PEM all Certificates"); exportFormat->insertItem("DER"); + exportFormat->insertItem("Signed PKCS#7"); if (hasKey) { exportFormat->insertItem("PKCS #12"); exportFormat->insertItem("PKCS #12 with Certificate chain"); diff --git a/MainWindowX509.cpp b/MainWindowX509.cpp index aaf0b43f..3efdd0a9 100644 --- a/MainWindowX509.cpp +++ b/MainWindowX509.cpp @@ -682,7 +682,7 @@ void MainWindow::writeCert() if (!crt) return; pki_key *privkey = crt->getKey(); ExportCert *dlg = new ExportCert((crt->getDescription() + ".crt").c_str(), - (privkey->isPrivKey())); + (privkey && privkey->isPrivKey())); if (!dlg->exec()) { delete dlg; return; @@ -767,13 +767,16 @@ void MainWindow::showPopupCert(QListViewItem *item, const QPoint &pt, int x) { CERR( "popup Cert"); QPopupMenu *menu = new QPopupMenu(this); QPopupMenu *subCa = new QPopupMenu(this); + QPopupMenu *subP7 = new QPopupMenu(this); QPopupMenu *subExport = new QPopupMenu(this); - int itemExtend, itemRevoke, itemTrust, itemCA, itemTemplate, itemReq; + int itemExtend, itemRevoke, itemTrust, itemCA, itemTemplate, itemReq, itemP7; bool canSign, parentCanSign, hasTemplates, hasPrivkey; if (!item) { menu->insertItem(tr("New Certificate"), this, SLOT(newCert())); menu->insertItem(tr("Import"), this, SLOT(loadCert())); + menu->insertItem(tr("Import PKCS#12"), this, SLOT(loadPKCS12())); + menu->insertItem(tr("Import from PKCS#7"), this, SLOT(loadCert())); } else { pki_x509 *cert = (pki_x509 *)certs->getSelectedPKI(item->text(0).latin1()); @@ -791,6 +794,12 @@ void MainWindow::showPopupCert(QListViewItem *item, const QPoint &pt, int x) { subCa->insertItem(tr("CRL days"), this, SLOT(setCrlDays())); itemTemplate = subCa->insertItem(tr("Signing Template"), this, SLOT(setTemplate())); subCa->insertItem(tr("Generate CRL"), this, SLOT(genCrl())); + + itemP7 = menu->insertItem(tr("PKCS#7"), subP7); + subP7->insertItem(tr("Sign"), this, SLOT(setSerial())); + subP7->insertItem(tr("Verify"), this, SLOT(setSerial())); + subP7->insertItem(tr("Encrypt"), this, SLOT(setSerial())); + subP7->insertItem(tr("Decrypt"), this, SLOT(setSerial())); menu->insertSeparator(); itemExtend = menu->insertItem(tr("Renewal"), this, SLOT(extendCert())); if (cert) { @@ -809,12 +818,14 @@ void MainWindow::showPopupCert(QListViewItem *item, const QPoint &pt, int x) { menu->setItemEnabled(itemRevoke, parentCanSign); menu->setItemEnabled(itemCA, canSign); subExport->setItemEnabled(itemReq, hasPrivkey); + menu->setItemEnabled(itemP7, hasPrivkey); subCa->setItemEnabled(itemTemplate, hasTemplates); } menu->exec(pt); delete menu; delete subCa; + delete subP7; delete subExport; return; diff --git a/MainWindow_UI.ui b/MainWindow_UI.ui index 38264d0f..bffc3cef 100644 --- a/MainWindow_UI.ui +++ b/MainWindow_UI.ui @@ -12,7 +12,7 @@ 0 0 - 764 + 760 604 @@ -534,6 +534,17 @@ Import PKCS#12 + + QPushButton + + name + PushButton18_2 + + + text + Import from PKCS#7 + + name