summaryrefslogtreecommitdiffstats
path: root/kcert/kcertpart.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kcert/kcertpart.cc')
-rw-r--r--kcert/kcertpart.cc883
1 files changed, 0 insertions, 883 deletions
diff --git a/kcert/kcertpart.cc b/kcert/kcertpart.cc
deleted file mode 100644
index ca5912206..000000000
--- a/kcert/kcertpart.cc
+++ /dev/null
@@ -1,883 +0,0 @@
-/* This file is part of the KDE project
- *
- * Copyright (C) 2001-2003 George Staikos <staikos@kde.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#include "kcertpart.h"
-#include <kparts/genericfactory.h>
-#include <kinstance.h>
-#include <kaboutdata.h>
-#include <tqframe.h>
-#include <klocale.h>
-#include <kdebug.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqbutton.h>
-#include <tqpushbutton.h>
-#include <tqcombobox.h>
-#include <kmessagebox.h>
-#include <kpassdlg.h>
-#include <ksslall.h>
-#include <kopenssl.h>
-#include <ksslpemcallback.h>
-#include <kfiledialog.h>
-#include <kprocess.h>
-#include <tqtabwidget.h>
-#include <kseparator.h>
-#include <klistview.h>
-#include <kio/kmimemagic.h>
-#include <tqmultilineedit.h>
-#include <tqregexp.h>
-#include <kcombobox.h>
-#include <kparts/browserextension.h>
-#include <kparts/browserinterface.h>
-#include <kio/kservicetypefactory.h>
-
-K_EXPORT_COMPONENT_FACTORY( libkcertpart, KParts::GenericFactory<KCertPart> )
-
-
-KX509Item::KX509Item(KListViewItem *parent, KSSLCertificate *x) :
- KListViewItem(parent, 0L)
-{
- setup(x);
-}
-
-KX509Item::KX509Item(KListView *parent, KSSLCertificate *x) :
- KListViewItem(parent)
-{
- setup(x);
-}
-
-void KX509Item::setup(KSSLCertificate *x) {
- cert = x;
- if (x) {
- KSSLX509Map xm(x->getSubject());
- TQString OU = "OU";
- TQString CN = "CN";
- OU = xm.getValue(OU);
- CN = xm.getValue(CN);
- OU.replace(TQRegExp("\n.*"), "");
- CN.replace(TQRegExp("\n.*"), "");
-
- if (OU.length() > 0) {
- _prettyName = OU;
- }
-
- if (CN.length() > 0) {
- if (_prettyName.length() > 0) {
- _prettyName += " - ";
- }
- _prettyName += CN;
- }
- setText(0, _prettyName);
- } else {
- setText(0, i18n("Invalid certificate!"));
- }
-}
-
-
-KX509Item::~KX509Item()
-{
- delete cert;
-}
-
-
-KPKCS12Item::KPKCS12Item(KListViewItem *parent, KSSLPKCS12 *x) :
- KListViewItem(parent, 0L)
-{
- cert = x;
- if (x) {
- KSSLX509Map xm(x->getCertificate()->getSubject());
- TQString CN = "CN";
- CN = xm.getValue(CN);
- CN.replace(TQRegExp("\n.*"), "");
- _prettyName = CN;
- setText(0, _prettyName);
- } else {
- setText(0, i18n("Invalid certificate!"));
- }
-}
-
-
-KPKCS12Item::~KPKCS12Item()
-{
- delete cert;
-}
-
-
-class KCertPartPrivate {
- public:
- KParts::BrowserExtension *browserExtension;
-};
-
-
-KCertPart::KCertPart(TQWidget *parentWidget, const char *widgetName,
- TQObject *parent, const char *name,
- const TQStringList & /*args*/ )
- : KParts::ReadWritePart(parent, name) {
-TDEInstance *instance = new TDEInstance("KCertPart");
-TQGridLayout *grid;
-setInstance(instance);
-
-
-_signers = new KSSLSigners;
-// This is a bit confusing now. Here's how it works:
-// We create a _frame and split it left/right
-// Then we add the ListView to the left and create
-// a new frame on the right. We set the main widget
-// on the right.
-
-_p12 = NULL;
-_ca = NULL;
-_silentImport = false;
-d = new KCertPartPrivate;
-d->browserExtension = new KParts::BrowserExtension(this);
-
-_frame = new TQFrame(parentWidget, widgetName);
-setWidget(_frame);
-
-_baseGrid = new TQGridLayout(_frame, 15, 9, KDialog::marginHint(),
- KDialog::spacingHint());
-
-_sideList = new KListView(_frame);
-_sideList->setRootIsDecorated(true);
-_sideList->addColumn(i18n("Certificates"));
-_parentCA = new KListViewItem(_sideList, i18n("Signers"));
-_parentCA->setExpandable(true);
-_sideList->setOpen(_parentCA, true);
-_parentP12 = new KListViewItem(_sideList, i18n("Client"));
-_parentP12->setExpandable(true);
-_sideList->setOpen(_parentP12, true);
-
-_baseGrid->addMultiCellWidget(_sideList, 0, 13, 0, 1);
-
-_importAll = new TQPushButton(i18n("Import &All"), _frame);
-_baseGrid->addMultiCellWidget(_importAll, 14, 14, 0, 1);
-connect(_importAll, TQT_SIGNAL(clicked()), TQT_SLOT(slotImportAll()));
-
-
-
-//------------------------------------------------------------------------
-// The PKCS widget
-//------------------------------------------------------------------------
-_pkcsFrame = new TQFrame(_frame);
-
-grid = new TQGridLayout(_pkcsFrame, 13, 6, KDialog::marginHint(),
- KDialog::spacingHint() );
-grid->addMultiCellWidget(new TQLabel(i18n("TDE Secure Certificate Import"), _pkcsFrame), 0, 0, 0, 5);
-grid->addWidget(new TQLabel(i18n("Chain:"), _pkcsFrame), 1, 0);
-_p12_chain = new KComboBox(_pkcsFrame);
-grid->addMultiCellWidget(_p12_chain, 1, 1, 1, 4);
-connect(_p12_chain, TQT_SIGNAL(activated(int)), TQT_SLOT(slotChain(int)));
-
-grid->addWidget(new TQLabel(i18n("Subject:"), _pkcsFrame), 2, 0);
-grid->addWidget(new TQLabel(i18n("Issued by:"), _pkcsFrame), 2, 3);
-_p12_subject = KSSLInfoDlg::certInfoWidget(_pkcsFrame, TQString(""));
-_p12_issuer = KSSLInfoDlg::certInfoWidget(_pkcsFrame, TQString(""));
-grid->addMultiCellWidget(_p12_subject, 3, 6, 0, 2);
-grid->addMultiCellWidget(_p12_issuer, 3, 6, 3, 5);
-
-grid->addWidget(new TQLabel(i18n("File:"), _pkcsFrame), 7, 0);
-_p12_filenameLabel = new TQLabel("", _pkcsFrame);
-grid->addWidget(_p12_filenameLabel, 7, 1);
-grid->addWidget(new TQLabel(i18n("File format:"), _pkcsFrame), 7, 3);
-grid->addWidget(new TQLabel("PKCS#12", _pkcsFrame), 7, 4);
-
-
-//
-// Make the first tab
-//
-_tabs = new TQTabWidget(_pkcsFrame);
-grid->addMultiCellWidget(_tabs, 8, 12, 0, 5);
-
-TQFrame *tab = new TQFrame(_pkcsFrame);
-TQGridLayout *tabGrid = new TQGridLayout(tab, 4, 5, KDialog::marginHint(),
- KDialog::spacingHint() );
-tabGrid->addWidget(new TQLabel(i18n("State:"), tab), 0, 0);
-_p12_certState = new TQLabel("", tab);
-tabGrid->addMultiCellWidget(_p12_certState, 0, 0, 1, 4);
-
-tabGrid->addWidget(new TQLabel(i18n("Valid from:"), tab), 1, 0);
-_p12_validFrom = new TQLabel("", tab);
-tabGrid->addMultiCellWidget(_p12_validFrom, 1, 1, 1, 4);
-
-tabGrid->addWidget(new TQLabel(i18n("Valid until:"), tab), 2, 0);
-_p12_validUntil = new TQLabel("", tab);
-tabGrid->addMultiCellWidget(_p12_validUntil, 2, 2, 1, 4);
-
-tabGrid->addWidget(new TQLabel(i18n("Serial number:"), tab), 3, 0);
-_p12_serialNum = new TQLabel("", tab);
-tabGrid->addWidget(_p12_serialNum, 3, 1);
-_tabs->addTab(tab, i18n("State"));
-
-
-//
-// Make the second tab
-//
-tab = new TQFrame(_pkcsFrame);
-tabGrid = new TQGridLayout(tab, 4, 5, KDialog::marginHint(),
- KDialog::spacingHint() );
-tabGrid->addWidget(new TQLabel(i18n("MD5 digest:"), tab), 0, 0);
-_p12_digest = new TQLabel(tab);
-tabGrid->addMultiCellWidget(_p12_digest, 0, 0, 1, 4);
-tabGrid->addWidget(new TQLabel(i18n("Signature:"), tab), 1, 0);
-_p12_sig = new TQMultiLineEdit(tab);
-tabGrid->addMultiCellWidget(_p12_sig, 1, 3, 1, 4);
-_p12_sig->setReadOnly(true);
-
-_tabs->addTab(tab, i18n("Signature"));
-
-
-//
-// Make the third tab
-//
-tab = new TQFrame(_pkcsFrame);
-tabGrid = new TQGridLayout(tab, 4, 5, KDialog::marginHint(),
- KDialog::spacingHint() );
-tabGrid->addWidget(new TQLabel(i18n("Public key:"), tab), 0, 0);
-_p12_pubkey = new TQMultiLineEdit(tab);
-tabGrid->addMultiCellWidget(_p12_pubkey, 0, 3, 1, 4);
-_p12_pubkey->setReadOnly(true);
-
-
-_tabs->addTab(tab, i18n("Public Key"));
-
-_pkcsFrame->hide();
-
-//------------------------------------------------------------------------
-// The X509 widget
-//------------------------------------------------------------------------
-// Note: this is almost identical to the above, but I duplicate it for
-// the simple reason that the above has potential to display much
-// more information, and this one has potential to display different
-// information.
-_x509Frame = new TQFrame(_frame);
-
-grid = new TQGridLayout(_x509Frame, 12, 6, KDialog::marginHint(),
- KDialog::spacingHint() );
-grid->addMultiCellWidget(new TQLabel(i18n("TDE Secure Certificate Import"), _x509Frame), 0, 0, 0, 5);
-
-grid->addWidget(new TQLabel(i18n("Subject:"), _x509Frame), 1, 0);
-grid->addWidget(new TQLabel(i18n("Issued by:"), _x509Frame), 1, 3);
-_ca_subject = KSSLInfoDlg::certInfoWidget(_x509Frame, TQString(""));
-_ca_issuer = KSSLInfoDlg::certInfoWidget(_x509Frame, TQString(""));
-grid->addMultiCellWidget(_ca_subject, 2, 5, 0, 2);
-grid->addMultiCellWidget(_ca_issuer, 2, 5, 3, 5);
-
-grid->addWidget(new TQLabel(i18n("File:"), _x509Frame), 6, 0);
-_ca_filenameLabel = new TQLabel("", _x509Frame);
-grid->addWidget(_ca_filenameLabel, 6, 1);
-grid->addWidget(new TQLabel(i18n("File format:"), _x509Frame), 6, 3);
-grid->addWidget(new TQLabel("PEM or DER Encoded X.509", _x509Frame), 6, 4);
-
-
-//
-// Make the first tab
-//
-_tabs = new TQTabWidget(_x509Frame);
-grid->addMultiCellWidget(_tabs, 7, 11, 0, 5);
-
-tab = new TQFrame(_x509Frame);
-tabGrid = new TQGridLayout(tab, 4, 5, KDialog::marginHint(),
- KDialog::spacingHint() );
-tabGrid->addWidget(new TQLabel(i18n("State:"), tab), 0, 0);
-_ca_certState = new TQLabel("", tab);
-tabGrid->addMultiCellWidget(_ca_certState, 0, 0, 1, 4);
-
-tabGrid->addWidget(new TQLabel(i18n("Valid from:"), tab), 1, 0);
-_ca_validFrom = new TQLabel("", tab);
-tabGrid->addMultiCellWidget(_ca_validFrom, 1, 1, 1, 4);
-
-tabGrid->addWidget(new TQLabel(i18n("Valid until:"), tab), 2, 0);
-_ca_validUntil = new TQLabel("", tab);
-tabGrid->addMultiCellWidget(_ca_validUntil, 2, 2, 1, 4);
-
-tabGrid->addWidget(new TQLabel(i18n("Serial number:"), tab), 3, 0);
-_ca_serialNum = new TQLabel("", tab);
-tabGrid->addWidget(_ca_serialNum, 3, 1);
-_tabs->addTab(tab, i18n("State"));
-
-
-//
-// Make the second tab
-//
-tab = new TQFrame(_x509Frame);
-tabGrid = new TQGridLayout(tab, 4, 5, KDialog::marginHint(),
- KDialog::spacingHint() );
-tabGrid->addWidget(new TQLabel(i18n("MD5 digest:"), tab), 0, 0);
-_ca_digest = new TQLabel(tab);
-tabGrid->addMultiCellWidget(_ca_digest, 0, 0, 1, 4);
-tabGrid->addWidget(new TQLabel(i18n("Signature:"), tab), 1, 0);
-_ca_sig = new TQMultiLineEdit(tab);
-tabGrid->addMultiCellWidget(_ca_sig, 1, 3, 1, 4);
-_ca_sig->setReadOnly(true);
-
-_tabs->addTab(tab, i18n("Signature"));
-
-
-//
-// Make the third tab
-//
-tab = new TQFrame(_x509Frame);
-tabGrid = new TQGridLayout(tab, 4, 5, KDialog::marginHint(),
- KDialog::spacingHint() );
-tabGrid->addWidget(new TQLabel(i18n("Public key:"), tab), 0, 0);
-_ca_pubkey = new TQMultiLineEdit(tab);
-tabGrid->addMultiCellWidget(_ca_pubkey, 0, 3, 1, 4);
-_ca_pubkey->setReadOnly(true);
-
-
-_tabs->addTab(tab, i18n("Public Key"));
-
-_x509Frame->hide();
-
-
-
-
-//------------------------------------------------------------------------
-// The blank widget
-//------------------------------------------------------------------------
-_blankFrame = new TQFrame(_frame);
-grid = new TQGridLayout(_blankFrame, 1, 1, KDialog::marginHint(),
- KDialog::spacingHint() );
-grid->addMultiCellWidget(new TQLabel(i18n("TDE Secure Certificate Import"), _blankFrame), 0, 0, 0, 0);
-_blankFrame->show();
-
-
-
-//
-// Finish it off
-//
-_baseGrid->addMultiCellWidget(new KSeparator(KSeparator::HLine, _frame), 13, 13, 2, 8);
-_launch = new TQPushButton(i18n("&Crypto Manager..."), _frame);
-_import = new TQPushButton(i18n("&Import"), _frame);
-_save = new TQPushButton(i18n("&Save..."), _frame);
-_done = new TQPushButton(i18n("&Done"), _frame);
-_baseGrid->addMultiCellWidget(_launch, 14, 14, 4, 5);
-_baseGrid->addWidget(_import, 14, 6);
-_baseGrid->addWidget(_save, 14, 7);
-_baseGrid->addWidget(_done, 14, 8);
-connect(_launch, TQT_SIGNAL(clicked()), TQT_SLOT(slotLaunch()));
-connect(_import, TQT_SIGNAL(clicked()), TQT_SLOT(slotImport()));
-connect(_save, TQT_SIGNAL(clicked()), TQT_SLOT(slotSave()));
-connect(_done, TQT_SIGNAL(clicked()), TQT_SLOT(slotDone()));
-_import->setEnabled(false);
-_save->setEnabled(false);
-
-
-
-_baseGrid->addMultiCellWidget(_pkcsFrame, 0, 12, 2, 8);
-_baseGrid->addMultiCellWidget(_x509Frame, 0, 12, 2, 8);
-_baseGrid->addMultiCellWidget(_blankFrame, 0, 12, 2, 8);
-
-connect(_sideList, TQT_SIGNAL(selectionChanged(TQListViewItem*)),
- this, TQT_SLOT(slotSelectionChanged(TQListViewItem*)));
-setReadWrite(true);
-}
-
-
-KCertPart::~KCertPart() {
- delete _signers;
- delete d->browserExtension;
- delete d;
-}
-
-
-void KCertPart::setReadWrite(bool rw) {
- if (!rw) {
- _import->setEnabled(false);
- _save->setEnabled(false);
- }
- KParts::ReadWritePart::setReadWrite(rw);
-}
-
-
-bool KCertPart::saveFile() {
-if (_p12) {
- TQString certFile = KFileDialog::getSaveFileName(TQString::null, "application/x-pkcs12");
- if (certFile.isEmpty())
- return false;
-
- if (!_p12->toFile(certFile)) {
- KMessageBox::sorry(_frame, i18n("Save failed."), i18n("Certificate Import"));
- return false;
- }
-
- return true;
-} else if (_ca) {
- TQString certFile = KFileDialog::getSaveFileName(TQString::null, "application/x-x509-ca-cert");
- if (certFile.isEmpty())
- return false;
-
- TQByteArray enc;
- if (certFile.endsWith("der") || certFile.endsWith("crt")) {
- enc = _ca->toDer();
- } else if (certFile.endsWith("netscape")) {
- enc = _ca->toNetscape();
- } else {
- enc = _ca->toPem();
- }
-
- TQFile of(certFile);
-
- if (!of.open(IO_WriteOnly) || (unsigned)of.writeBlock(enc) != enc.size()) {
- KMessageBox::sorry(_frame, i18n("Save failed."), i18n("Certificate Import"));
- return false;
- }
-
- of.flush();
-
- return true;
-} else {
- return false;
-}
-}
-
-
-bool KCertPart::openFile() {
-#ifndef HAVE_SSL
- KMessageBox::sorry(_frame, i18n("You do not seem to have compiled TDE with SSL support."), i18n("Certificate Import"));
- return false;
-#else
-
-if (TQFileInfo(m_file).size() == 0) {
- KMessageBox::sorry(_frame, i18n("Certificate file is empty."), i18n("Certificate Import"));
- return false;
-}
-
-TQString whatType = d->browserExtension->urlArgs().serviceType;
-//whatType = KMimeType::findByURL(m_url,0,true)->name();
-if (whatType.isEmpty())
- whatType = KServiceTypeFactory::self()->findFromPattern(m_file)->name();
-
-/*
- TQString blah = "file: " + m_file
- + "\nurl: " + m_url.url()
- + "\nserviceType: " + d->browserExtension->urlArgs().serviceType
- + "\nfactory: " + KServiceTypeFactory::self()->findFromPattern(m_file)->name()
- + "\nmimeType: " + KMimeType::findByURL(m_url)->name();
- KMessageBox::information(_frame, blah, "ssl");
- */
-
-
-emit completed();
-
-/////////////////////////////////////////////////////////////////////////////
-// x-pkcs12 loading
-/////////////////////////////////////////////////////////////////////////////
-if (whatType == "application/x-pkcs12") {
- TQCString pass;
- _p12 = KSSLPKCS12::loadCertFile(m_file);
-
- while (!_p12) {
- // try prompting for a password.
- int rc = KPasswordDialog::getPassword(pass, i18n("Certificate Password"));
- if (rc != KPasswordDialog::Accepted) break;
-
- _p12 = KSSLPKCS12::loadCertFile(m_file, TQString(pass));
-
- if (!_p12) {
- rc = KMessageBox::warningContinueCancel(_frame, i18n("The certificate file could not be loaded. Try a different password?"), i18n("Certificate Import"),i18n("Try Different"));
- if (rc == KMessageBox::Continue) continue;
- break;
- }
- }
-
- if (!_p12) return false;
-
- new KPKCS12Item(_parentP12, _p12);
- _p12 = NULL;
- return true;
- /////////////////////////////////////////////////////////////////////////////
- // x-509-ca-cert loading
- /////////////////////////////////////////////////////////////////////////////
-} else if (whatType == "application/x-x509-ca-cert" ||
- whatType == "application/binary-certificate") {
- FILE *fp;
- bool isPEM = false;
-
- _ca_filenameLabel->setText(m_file);
-
- ///////////// UGLY HACK TO GET AROUND OPENSSL PROBLEMS ///////////
- if (whatType == "application/x-x509-ca-cert") {
- // Check if it is PEM or not
- TQFile qf(m_file);
- qf.open(IO_ReadOnly);
- TQByteArray theFile = qf.readAll();
- qf.close();
-
- const char *signature = "-----BEGIN CERTIFICATE-----";
- theFile[(uint)(qf.size()-1)] = 0;
- isPEM = (TQCString(theFile.data()).find(signature) >= 0);
- }
-
- fp = fopen(m_file.local8Bit(), "r");
- if (!fp) {
- KMessageBox::sorry(_frame, i18n("This file cannot be opened."), i18n("Certificate Import"));
- return false;
- }
-
- /*
- kdDebug() << "Reading in a file in "
- << (isPEM ? "PEM" : "DER")
- << " format." << endl;
- */
-
- if (!isPEM) {
- X509 *dx = KOSSL::self()->X509_d2i_fp(fp, NULL);
-
- if (dx) {
- KSSLCertificate *xc = KSSLCertificate::fromX509(dx);
- if (xc) {
- if (xc->x509V3Extensions().certTypeCA())
- new KX509Item(_parentCA, xc);
- else
- new KX509Item(_sideList, xc);
- fclose(fp);
- return true;
- }
- KOSSL::self()->X509_free(dx);
- }
- return false;
- }
-
-#define sk_free KOSSL::self()->sk_free
-#define sk_num KOSSL::self()->sk_num
-#define sk_value KOSSL::self()->sk_value
- STACK_OF(X509_INFO) *sx5i = KOSSL::self()->PEM_X509_INFO_read(fp, NULL, KSSLPemCallback, NULL);
-
- if (!sx5i) {
- KMessageBox::sorry(_frame, i18n("This file cannot be opened."), i18n("Certificate Import"));
- fclose(fp);
- return false;
- }
-
- _ca_filenameLabel->setText(m_file);
- for (int i = 0; i < sk_X509_INFO_num(sx5i); i++) {
- X509_INFO* x5i = sk_X509_INFO_value(sx5i, i);
- if (x5i->x_pkey && x5i->x509) { // a personal cert (like PKCS12)
- KSSLCertificate *xc = KSSLCertificate::fromX509(x5i->x509);
- new KX509Item(_sideList, xc);
- } else if (x5i->x509) { // something else - maybe a CA file
- KSSLCertificate *xc = KSSLCertificate::fromX509(x5i->x509);
- if (xc->x509V3Extensions().certTypeCA())
- new KX509Item(_parentCA, xc);
- else new KX509Item(_sideList, xc);
- } else if (x5i->crl) { // a crl
- kdDebug() << "Found a CRL..." << endl;
- }
- }
-
- sk_X509_INFO_free(sx5i);
-
-#undef sk_free
-#undef sk_num
-#undef sk_value
-
- fclose(fp);
- return true;
- /////////////////////////////////////////////////////////////////////////////
- // Dunno how to load this
- /////////////////////////////////////////////////////////////////////////////
-} else {
- TQString emsg = i18n("I do not know how to handle this type of file.") + "\n" + whatType;
- KMessageBox::sorry(_frame, emsg, i18n("Certificate Import"));
- return false;
-}
-#endif
-}
-
-
-void KCertPart::displayPKCS12() {
- KSSLCertificate *xc = _p12->getCertificate();
- _p12_filenameLabel->setText(m_file);
- displayPKCS12Cert(xc);
- _p12_certState->setText(KSSLCertificate::verifyText(_p12->validate()));
-
- // Set the chain if it's there
- if (xc->chain().depth() > 1) {
- TQPtrList<KSSLCertificate> cl = xc->chain().getChain();
- int cnt = 0;
- _p12_chain->setEnabled(true);
- _p12_chain->clear();
- _p12_chain->insertItem(i18n("0 - Site Certificate"));
- for (KSSLCertificate *c = cl.first(); c != 0; c = cl.next()) {
- KSSLX509Map map(c->getSubject());
- _p12_chain->insertItem(TQString::number(++cnt)+" - "+map.getValue("CN"));
- }
- _p12_chain->setCurrentItem(0);
- } else {
- _p12_chain->clear();
- _p12_chain->setEnabled(false);
- }
-}
-
-
-void KCertPart::displayCACert(KSSLCertificate *c) {
- // We have the file, lets work with it.
- _ca_subject->setValues(c->getSubject());
- _ca_issuer->setValues(c->getIssuer());
-
- // Set the valid period
- TQPalette cspl = _ca_validFrom->palette();
- if (TQDateTime::currentDateTime() < c->getQDTNotBefore()) {
- cspl.setColor(TQColorGroup::Foreground, TQColor(196,33,21));
- } else {
- cspl.setColor(TQColorGroup::Foreground, TQColor(42,153,59));
- }
- _ca_validFrom->setPalette(cspl);
- _ca_validFrom->setText(c->getNotBefore());
-
- cspl = _ca_validUntil->palette();
- if (TQDateTime::currentDateTime() > c->getQDTNotAfter()) {
- cspl.setColor(TQColorGroup::Foreground, TQColor(196,33,21));
- } else {
- cspl.setColor(TQColorGroup::Foreground, TQColor(42,153,59));
- }
- _ca_validUntil->setPalette(cspl);
- _ca_validUntil->setText(c->getNotAfter());
-
- _ca_serialNum->setText(c->getSerialNumber());
- cspl = _ca_certState->palette();
- if (!c->isValid()) {
- cspl.setColor(TQColorGroup::Foreground, TQColor(196,33,21));
- } else {
- cspl.setColor(TQColorGroup::Foreground, TQColor(42,153,59));
- }
- _ca_certState->setPalette(cspl);
- _ca_certState->setText(KSSLCertificate::verifyText(c->validate()));
-
- _ca_pubkey->setText(c->getPublicKeyText());
- _ca_digest->setText(c->getMD5DigestText());
- _ca_sig->setText(c->getSignatureText());
-}
-
-
-
-void KCertPart::displayPKCS12Cert(KSSLCertificate *c) {
- // We have the file, lets work with it.
- _p12_subject->setValues(c->getSubject());
- _p12_issuer->setValues(c->getIssuer());
-
- // Set the valid period
- TQPalette cspl = _p12_validFrom->palette();
- if (TQDateTime::currentDateTime() < c->getQDTNotBefore()) {
- cspl.setColor(TQColorGroup::Foreground, TQColor(196,33,21));
- } else {
- cspl.setColor(TQColorGroup::Foreground, TQColor(42,153,59));
- }
- _p12_validFrom->setPalette(cspl);
- _p12_validFrom->setText(c->getNotBefore());
-
- cspl = _p12_validUntil->palette();
- if (TQDateTime::currentDateTime() > c->getQDTNotAfter()) {
- cspl.setColor(TQColorGroup::Foreground, TQColor(196,33,21));
- } else {
- cspl.setColor(TQColorGroup::Foreground, TQColor(42,153,59));
- }
- _p12_validUntil->setPalette(cspl);
- _p12_validUntil->setText(c->getNotAfter());
-
- _p12_serialNum->setText(c->getSerialNumber());
- cspl = _p12_certState->palette();
- if (!c->isValid()) {
- cspl.setColor(TQColorGroup::Foreground, TQColor(196,33,21));
- } else {
- cspl.setColor(TQColorGroup::Foreground, TQColor(42,153,59));
- }
- _p12_certState->setPalette(cspl);
- _p12_certState->setText(KSSLCertificate::verifyText(c->validate()));
-
- _p12_pubkey->setText(c->getPublicKeyText());
- _p12_digest->setText(c->getMD5DigestText());
- _p12_sig->setText(c->getSignatureText());
-}
-
-
-
-void KCertPart::slotChain(int c) {
- if (c == 0) {
- displayPKCS12Cert(_p12->getCertificate());
- _p12_certState->setText(KSSLCertificate::verifyText(_p12->validate()));
- } else {
- displayPKCS12Cert(_p12->getCertificate()->chain().getChain().at(c-1));
- }
-}
-
-
-void KCertPart::slotImport() {
- if (_p12) {
- KSimpleConfig cfg("ksslcertificates", false);
-
- if (cfg.hasGroup(_p12->getCertificate()->getSubject())) {
- TQString msg = _curName + "\n" + i18n("A certificate with that name already exists. Are you sure that you wish to replace it?");
- int rc= KMessageBox::warningContinueCancel(_frame, msg, i18n("Certificate Import"),i18n("Replace"));
- if (rc == KMessageBox::Cancel) {
- return;
- }
- }
-
- cfg.setGroup(_p12->getCertificate()->getSubject());
- cfg.writeEntry("PKCS12Base64", _p12->toString());
- cfg.writeEntry("Password", "");
- cfg.sync();
- if (!_silentImport)
- KMessageBox::information(_frame, i18n("Certificate has been successfully imported into TDE.\nYou can manage your certificate settings from the TDE Control Center."), i18n("Certificate Import"));
- } else if (_ca) {
- TDEConfig cfg("ksslcalist", true, false);
- if (cfg.hasGroup(_ca->getSubject())) {
- TQString msg = _curName + "\n" + i18n("A certificate with that name already exists. Are you sure that you wish to replace it?");
- int rc= KMessageBox::warningContinueCancel(_frame, msg, i18n("Certificate Import"),i18n("Replace"));
- if (rc == KMessageBox::Cancel) {
- return;
- }
- }
- _signers->addCA(_ca->toString(),
- _ca->x509V3Extensions().certTypeSSLCA(),
- _ca->x509V3Extensions().certTypeEmailCA(),
- _ca->x509V3Extensions().certTypeCodeCA());
- if (!_silentImport)
- _signers->regenerate();
-
- if (!_silentImport)
- KMessageBox::information(_frame, i18n("Certificate has been successfully imported into TDE.\nYou can manage your certificate settings from the TDE Control Center."), i18n("Certificate Import"));
- }
-}
-
-
-void KCertPart::slotSave() {
- saveFile();
-}
-
-
-void KCertPart::slotDone() {
- KParts::BrowserInterface *iface = d->browserExtension->browserInterface();
- iface->callMethod("goHistory(int)", -1);
-}
-
-
-void KCertPart::slotLaunch() {
-KShellProcess p;
-p << "kcmshell" << "crypto";
-p.start(TDEProcess::DontCare);
-}
-
-
-void KCertPart::slotSelectionChanged(TQListViewItem *x) {
- KX509Item *x5i = dynamic_cast<KX509Item*>(x);
- KPKCS12Item *p12i = dynamic_cast<KPKCS12Item*>(x);
- _p12 = NULL;
- _ca = NULL;
- if (x && x->parent() == _parentCA) {
- if (!x5i) {
- return;
- }
- x5i->cert->revalidate();
- _blankFrame->hide();
- _pkcsFrame->hide();
- _x509Frame->show();
- _ca = x5i->cert;
- _import->setEnabled(true);
- _save->setEnabled(true);
- _curName = x5i->_prettyName;
- displayCACert(_ca);
- } else if (x && x->parent() == NULL && x->rtti() == 1) {
- if (!x5i) {
- return;
- }
- x5i->cert->revalidate();
- _blankFrame->hide();
- _pkcsFrame->hide();
- _x509Frame->show();
- _ca = x5i->cert;
- _import->setEnabled(false);
- _save->setEnabled(false);
- _curName = x5i->_prettyName;
- displayCACert(_ca);
- } else if (x && x->parent() == _parentP12) {
- if (!p12i) {
- return;
- }
- p12i->cert->revalidate();
- _blankFrame->hide();
- _x509Frame->hide();
- _pkcsFrame->show();
- _p12 = p12i->cert;
- _import->setEnabled(true);
- _save->setEnabled(true);
- _curName = p12i->_prettyName;
- displayPKCS12();
- } else {
- _pkcsFrame->hide();
- _x509Frame->hide();
- _blankFrame->show();
- _import->setEnabled(false);
- _save->setEnabled(false);
- _curName = "";
- }
-}
-
-
-void KCertPart::slotImportAll() {
-KSSLPKCS12 *p12Save = _p12;
-KSSLCertificate *caSave = _ca;
-TQString curNameSave = _curName;
-
-_p12 = NULL;
-_ca = NULL;
-_silentImport = true;
-
-for (KPKCS12Item *t = dynamic_cast<KPKCS12Item*>(_parentP12->firstChild());
- t;
- t = dynamic_cast<KPKCS12Item*>(t->nextSibling())) {
- if (t) {
- _p12 = t->cert;
- _curName = t->_prettyName;
- }
- slotImport();
-}
-_p12 = NULL;
-
-for (KX509Item *t = dynamic_cast<KX509Item*>(_parentCA->firstChild());
- t;
- t = dynamic_cast<KX509Item*>(t->nextSibling())) {
- if (t) {
- _ca = t->cert;
- _curName = t->_prettyName;
- }
- slotImport();
-}
-_ca = NULL;
-
-_signers->regenerate();
-_silentImport = false;
-_p12 = p12Save;
-_ca = caSave;
-_curName = curNameSave;
-KMessageBox::information(_frame, i18n("Certificates have been successfully imported into TDE.\nYou can manage your certificate settings from the TDE Control Center."), i18n("Certificate Import"));
-}
-
-
-TDEAboutData *KCertPart::createAboutData()
-{
- return new TDEAboutData("KCertPart", I18N_NOOP("TDE Certificate Part"), "1.0");
-}
-
-#include "kcertpart.moc"
-