mirror of
https://github.com/chris2511/xca.git
synced 2026-09-12 19:51:05 +05:00
*** empty log message ***
This commit is contained in:
parent
75e8368656
commit
5ac8e13d36
1292
CertView.cpp
1292
CertView.cpp
File diff suppressed because it is too large
Load Diff
104
CertView.h
104
CertView.h
@ -1,104 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CERTVIEW_H
|
||||
#define CERTVIEW_H
|
||||
|
||||
#include "XcaListView.h"
|
||||
#include "lib/pki_x509.h"
|
||||
#include "lib/pki_pkcs12.h"
|
||||
#include <qlistview.h>
|
||||
#include "widgets/NewX509.h"
|
||||
|
||||
class CertView : public XcaListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
int viewState;
|
||||
bool mkDir(QString dir);
|
||||
public:
|
||||
CertView(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
|
||||
void showItem(pki_base *item, bool import);
|
||||
void newItem();
|
||||
void deleteItem();
|
||||
void updateViewItem(pki_base *);
|
||||
void load();
|
||||
pki_base* loadItem(QString fname);
|
||||
pki_base* insert(pki_base *item);
|
||||
void store();
|
||||
void popupMenu(QListViewItem *item, const QPoint &pt, int x);
|
||||
void newCert();
|
||||
void newCert(NewX509 *dlg);
|
||||
void extendCert();
|
||||
void loadPKCS12();
|
||||
void insertP12(pki_pkcs12 *pk12);
|
||||
void loadPKCS7();
|
||||
void writePKCS12(QString s, bool chain);
|
||||
void writePKCS7(QString s, int type);
|
||||
public slots:
|
||||
void signP7();
|
||||
void encryptP7();
|
||||
void setTrust();
|
||||
void toRequest();
|
||||
void revoke();
|
||||
void unRevoke();
|
||||
void setSerial();
|
||||
void setCrlDays();
|
||||
void setTemplate();
|
||||
void changeView();
|
||||
void toTinyCA();
|
||||
bool updateView();
|
||||
void updateViewAll();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
236
CrlView.cpp
236
CrlView.cpp
@ -1,236 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "CrlView.h"
|
||||
#include <qpopupmenu.h>
|
||||
#include "lib/pki_crl.h"
|
||||
#include "widgets/MainWindow.h"
|
||||
|
||||
|
||||
void CrlView::showItem(pki_base *item, bool import)
|
||||
{
|
||||
pki_crl *crl = (pki_crl *)item;
|
||||
if (!crl) return;
|
||||
try {
|
||||
CrlDetail_UI *dlg = new CrlDetail(this,0,true);
|
||||
connect( dlg->certList, SIGNAL( doubleClicked(QListViewItem*) ),
|
||||
this, SLOT( showDetailsCert(QListViewItem *) ));
|
||||
QString odesc = crl->getIntName();
|
||||
ret = dlg->exec();
|
||||
QString ndesc = dlg->descr->text();
|
||||
delete dlg;
|
||||
if (!ret && import) {
|
||||
delete crl;
|
||||
}
|
||||
if (!ret) return;
|
||||
if (MainWindow::crls == NULL) {
|
||||
emit init_database();
|
||||
}
|
||||
if (import) {
|
||||
crl = insert(crl);
|
||||
}
|
||||
|
||||
if (ndesc != odesc) {
|
||||
crls->renamePKI(crl, ndesc);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void CrlView::deleteItem()
|
||||
{
|
||||
deleteItem_default(tr("The Revokation list"),
|
||||
tr("is going to be deleted"));
|
||||
}
|
||||
|
||||
pki_base *CrlView::loadItem(QString fname)
|
||||
{
|
||||
pki_base *crl = new pki_crl(fname, &MainWindow::passRead);
|
||||
return crl;
|
||||
}
|
||||
|
||||
void CrlView::loadCrl()
|
||||
{
|
||||
QStringList filter;
|
||||
filt.append(tr("Revokation lists ( *.pem *.crl )"));
|
||||
filt.append(tr("All files ( *.* )"));
|
||||
load_default(filter, tr("Load CRL"));
|
||||
}
|
||||
|
||||
pki_crl *CrlView::insert(pki_base *item)
|
||||
{
|
||||
pki_crl * crl = (pki_crl *)item;
|
||||
try {
|
||||
MARK
|
||||
pki_crl *oldcrl = (pki_crl *)crls->findPKI(crl);
|
||||
MARK
|
||||
if (oldcrl) {
|
||||
QMessageBox::information(this,tr(XCA_TITLE),
|
||||
tr("The revokation list already exists in the database as") +":\n'" +
|
||||
QString::fromLatin1(oldcrl->getDescription().c_str()) +
|
||||
"'\n" + tr("and so it was not imported"), "OK");
|
||||
delete(crl);
|
||||
return oldcrl;
|
||||
}
|
||||
CERR( "insertCrl: inserting" );
|
||||
crls->insertPKI(crl);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return crl;
|
||||
}
|
||||
|
||||
void CrlView::writeCrl_pem()
|
||||
{
|
||||
store(true);
|
||||
}
|
||||
void CrlView::writeCrl_der()
|
||||
{
|
||||
store(false);
|
||||
}
|
||||
|
||||
void CrlView::store(bool pem)
|
||||
{
|
||||
pki_crl *crl;
|
||||
try {
|
||||
crl = (pki_crl *)crls->getSelectedPKI();
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!crl) return;
|
||||
QStringList filt;
|
||||
filt.append("Revokation Lists ( *.crl *.pem)");
|
||||
filt.append("All Files ( *.* )");
|
||||
QString s="";
|
||||
QFileDialog *dlg = new QFileDialog(this,0,true);
|
||||
dlg->setCaption(tr("Export Certificate revokation list"));
|
||||
dlg->setFilters(filt);
|
||||
dlg->setMode( QFileDialog::AnyFile );
|
||||
dlg->setSelection( (crl->getDescription() + ".crl").c_str() );
|
||||
setPath(dlg);
|
||||
if (dlg->exec()) {
|
||||
s = dlg->selectedFile();
|
||||
newPath(dlg);
|
||||
}
|
||||
delete dlg;
|
||||
if (s.isEmpty()) return;
|
||||
s=QDir::convertSeparators(s);
|
||||
try {
|
||||
crl->writeCrl(s.latin1(), pem);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CrlView::popupMenu(QListViewItem *item, const QPoint &pt, int x) {
|
||||
CERR( "popup Crl");
|
||||
QPopupMenu *menu = new QPopupMenu(this);
|
||||
QPopupMenu *subExport = new QPopupMenu(this);
|
||||
|
||||
if (!item) {
|
||||
menu->insertItem(tr("Import"), this, SLOT(loadCrl()));
|
||||
}
|
||||
else {
|
||||
menu->insertItem(tr("Rename"), this, SLOT(startRenameCrl()));
|
||||
menu->insertItem(tr("Show Details"), this, SLOT(showDetailsCrl()));
|
||||
menu->insertItem(tr("Export"), subExport);
|
||||
subExport->insertItem(tr("PEM"), this, SLOT(writeCrl_pem()));
|
||||
subExport->insertItem(tr("DER"), this, SLOT(writeCrl_der()));
|
||||
menu->insertItem(tr("Delete"), this, SLOT(deleteCrl()));
|
||||
}
|
||||
menu->exec(pt);
|
||||
delete menu;
|
||||
delete subExport;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
pki_crl *CrlView::newItem(pki_x509 *cert)
|
||||
{
|
||||
QList<pki_x509> list;
|
||||
pki_x509 *issuedcert = NULL;
|
||||
pki_crl *crl = NULL;
|
||||
try {
|
||||
crl = new pki_crl(cert->getIntName(), cert);
|
||||
|
||||
list = MainWindow::certs->getIssuedCerts(cert);
|
||||
if (!list.isEmpty()) {
|
||||
for ( issuedcert = list.first(); issuedcert != NULL; issuedcert = list.next() ) {
|
||||
if (issuedcert->isRevoked() ) {
|
||||
crl->addRevoked(issuedcert);
|
||||
}
|
||||
}
|
||||
}
|
||||
crl->addV3ext(NID_authority_key_identifier,"keyid,issuer");
|
||||
crl->addV3ext(NID_issuer_alt_name,"issuer:copy");
|
||||
crl->sign(cert->getKey());
|
||||
cert->setLastCrl(crl->getDate());
|
||||
certs->updatePKI(cert);
|
||||
CERR( "CRL done, completely");
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return crl;
|
||||
}
|
||||
|
||||
79
CrlView.h
79
CrlView.h
@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CRLVIEW_H
|
||||
#define CRLVIEW_H
|
||||
|
||||
#include "XcaListView.h"
|
||||
#include <qlistview.h>
|
||||
|
||||
class CrlView : public XcaListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
static const int sizeList[];
|
||||
static void incProgress(int a, int b, void *progress);
|
||||
public:
|
||||
CrlView(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
|
||||
void showItem(pki_base *item, bool import);
|
||||
void newItem();
|
||||
void deleteItem();
|
||||
void load();
|
||||
pki_base *loadItem(QString fname);
|
||||
pki_base* insert(pki_base *item);
|
||||
void store(bool);
|
||||
void popupMenu(QListViewItem *item, const QPoint &pt, int x);
|
||||
void writeCrl_pem();
|
||||
void writeCrl_der();
|
||||
};
|
||||
|
||||
#endif
|
||||
283
KeyView.cpp
283
KeyView.cpp
@ -1,283 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "KeyView.h"
|
||||
#include "ui/NewKey.h"
|
||||
#include "ui/KeyDetail.h"
|
||||
#include "widgets/ExportKey.h"
|
||||
#include "widgets/MainWindow.h"
|
||||
#include <qcombobox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qprogressdialog.h>
|
||||
#include <qtextview.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qpopupmenu.h>
|
||||
|
||||
const int KeyView::sizeList[] = {256, 512, 1024, 2048, 4096, 0 };
|
||||
|
||||
KeyView::KeyView(QWidget * parent = 0, const char * name = 0, WFlags f = 0)
|
||||
:XcaListView(parent, name, f)
|
||||
{
|
||||
addColumn(tr("Keysize"));
|
||||
addColumn(tr("Use count"));
|
||||
}
|
||||
|
||||
void KeyView::newItem()
|
||||
{
|
||||
NewKey_UI *dlg = new NewKey_UI(this,0,true,0);
|
||||
QString x;
|
||||
for (int i=0; sizeList[i] != 0; i++ )
|
||||
dlg->keyLength->insertItem( x.number(sizeList[i]) +" bit");
|
||||
dlg->keyLength->setCurrentItem(2);
|
||||
dlg->image->setPixmap(*MainWindow::keyImg);
|
||||
if (dlg->exec()) {
|
||||
try {
|
||||
int sel = dlg->keyLength->currentItem();
|
||||
QProgressDialog *progress = new QProgressDialog(
|
||||
tr("Please wait, Key generation is in progress"),
|
||||
tr("Cancel"),90, 0, 0, true);
|
||||
progress->setMinimumDuration(0);
|
||||
progress->setProgress(0);
|
||||
progress->setCaption(tr(XCA_TITLE));
|
||||
pki_key *nkey = new pki_key (dlg->keyDesc->text(),
|
||||
&incProgress,
|
||||
progress,
|
||||
sizeList[sel]);
|
||||
progress->cancel();
|
||||
delete progress;
|
||||
insert(nkey);
|
||||
x = nkey->getIntName();
|
||||
emit keyDone(x);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
delete dlg;
|
||||
}
|
||||
|
||||
void KeyView::deleteItem()
|
||||
{
|
||||
deleteItem_default(tr("The key"), tr("is going to be deleted"));
|
||||
}
|
||||
|
||||
void KeyView::showItem(pki_base *item, bool import)
|
||||
{
|
||||
pki_key *key = (pki_key *)item;
|
||||
if (!key) return;
|
||||
KeyDetail_UI *detDlg = new KeyDetail_UI(this, 0, true, 0 );
|
||||
try {
|
||||
detDlg->setCaption(tr(XCA_TITLE));
|
||||
detDlg->keyDesc->setText( key->getIntName() );
|
||||
detDlg->keyLength->setText( key->length() );
|
||||
detDlg->keyPubEx->setText( key->pubEx() );
|
||||
detDlg->keyModulus->setText( key->modulus());
|
||||
if (key->isPubKey()) {
|
||||
detDlg->keyPrivEx->setText(tr("not available") );
|
||||
detDlg->keyPrivEx->setDisabled(true);
|
||||
}
|
||||
detDlg->image->setPixmap(*MainWindow::keyImg);
|
||||
if (import) {
|
||||
detDlg->but_ok->setText(tr("Import"));
|
||||
detDlg->but_cancel->setText(tr("Discard"));
|
||||
}
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
delete detDlg;
|
||||
return;
|
||||
}
|
||||
QString odesc = key->getIntName();
|
||||
bool ret = detDlg->exec();
|
||||
QString ndesc = detDlg->keyDesc->text();
|
||||
delete detDlg;
|
||||
if (!ret && import) {
|
||||
delete key;
|
||||
}
|
||||
if (!ret) return;
|
||||
|
||||
emit init_database();
|
||||
|
||||
if (import) {
|
||||
key = (pki_key *)insert(key);
|
||||
}
|
||||
CERR(ndesc << " " << key->getIntName());
|
||||
if ( ndesc != odesc) {
|
||||
MARK
|
||||
try {
|
||||
db->renamePKI(key, ndesc);
|
||||
MARK
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void KeyView::load()
|
||||
{
|
||||
QStringList filter;
|
||||
filter.append( "PKI Keys ( *.pem *.der *.key )");
|
||||
filter.append( "PKCS#8 Keys ( *.p8 *.pk8 )");
|
||||
load_default(filter, tr("Import key"));
|
||||
}
|
||||
|
||||
pki_base *KeyView::loadItem(QString fname)
|
||||
{
|
||||
pki_base *lkey = new pki_key(fname, &MainWindow::passRead);
|
||||
return lkey;
|
||||
}
|
||||
|
||||
pki_base* KeyView::insert(pki_base *item)
|
||||
{
|
||||
pki_key *lkey = (pki_key *)item;
|
||||
pki_key *oldkey;
|
||||
emit init_database();
|
||||
try {
|
||||
oldkey = (pki_key *)db->getByReference(lkey);
|
||||
if (oldkey != NULL) {
|
||||
if ((oldkey->isPrivKey() && lkey->isPrivKey()) ||
|
||||
lkey->isPubKey()){
|
||||
QMessageBox::information(this,tr(XCA_TITLE),
|
||||
tr("The key is already in the database as") +":\n'" +
|
||||
oldkey->getIntName() +
|
||||
"'\n" + tr("and is not going to be imported"), "OK");
|
||||
delete(lkey);
|
||||
return oldkey;
|
||||
}
|
||||
else {
|
||||
QMessageBox::information(this,tr(XCA_TITLE),
|
||||
tr("The database already contains the public part of the imported key as") +":\n'" +
|
||||
oldkey->getIntName() +
|
||||
"'\n" + tr("and will be completed by the new, private part of the key"), "OK");
|
||||
CERR( "before deleting pki...");
|
||||
db->deletePKI(oldkey);
|
||||
lkey->setIntName(oldkey->getIntName());
|
||||
delete(oldkey);
|
||||
}
|
||||
}
|
||||
CERR( "after findkey");
|
||||
db->insertPKI(lkey);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return lkey;
|
||||
}
|
||||
|
||||
|
||||
void KeyView::store()
|
||||
{
|
||||
bool PEM = false;
|
||||
const EVP_CIPHER *enc = NULL;
|
||||
pki_key *targetKey = NULL;
|
||||
targetKey = (pki_key *)getSelected();
|
||||
if (!targetKey) return;
|
||||
ExportKey *dlg = new ExportKey((targetKey->getIntName() + ".pem"),
|
||||
targetKey->isPubKey(), MainWindow::getPath(), this);
|
||||
dlg->image->setPixmap(*MainWindow::keyImg);
|
||||
int dlgret = dlg->exec();
|
||||
MainWindow::setPath(dlg->dirPath);
|
||||
|
||||
if (!dlgret) {
|
||||
delete dlg;
|
||||
return;
|
||||
}
|
||||
QString fname = dlg->filename->text();
|
||||
if (fname.isEmpty()) {
|
||||
delete dlg;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (dlg->exportFormat->currentText() == "PEM") PEM = true;
|
||||
if (dlg->exportFormat->currentText() == "PKCS#8")
|
||||
targetKey->writePKCS8(fname, &MainWindow::passWrite);
|
||||
else if (dlg->exportPrivate->isChecked()) {
|
||||
if (dlg->encryptKey->isChecked())
|
||||
enc = EVP_des_ede3_cbc();
|
||||
targetKey->writeKey(fname, enc, &MainWindow::passWrite, PEM);
|
||||
}
|
||||
else {
|
||||
targetKey->writePublic(fname, PEM);
|
||||
}
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
delete dlg;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void KeyView::popupMenu(QListViewItem *item, const QPoint &pt, int x) {
|
||||
CERR( " popup key" );
|
||||
QPopupMenu *menu = new QPopupMenu(this);
|
||||
if (!item) {
|
||||
menu->insertItem(tr("New Key"), this, SLOT(newItem()));
|
||||
menu->insertItem(tr("Import"), this, SLOT(load()));
|
||||
}
|
||||
else {
|
||||
menu->insertItem(tr("Rename"), this, SLOT(startRename()));
|
||||
menu->insertItem(tr("Show Details"), this, SLOT(show()));
|
||||
menu->insertItem(tr("Export"), this, SLOT(store()));
|
||||
menu->insertItem(tr("Delete"), this, SLOT(deleteItem()));
|
||||
}
|
||||
menu->exec(pt);
|
||||
delete menu;
|
||||
return;
|
||||
}
|
||||
|
||||
void KeyView::incProgress(int a, int b, void *progress)
|
||||
{
|
||||
int i = ((QProgressDialog *)progress)->progress();
|
||||
((QProgressDialog *)progress)->setProgress(++i);
|
||||
}
|
||||
|
||||
82
KeyView.h
82
KeyView.h
@ -1,82 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef KEYVIEW_H
|
||||
#define KEYVIEW_H
|
||||
|
||||
#include "XcaListView.h"
|
||||
#include "lib/pki_key.h"
|
||||
#include <qlistview.h>
|
||||
|
||||
class KeyView : public XcaListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
static const int sizeList[];
|
||||
static void incProgress(int a, int b, void *progress);
|
||||
public:
|
||||
KeyView(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
|
||||
void showItem(pki_base *item, bool import);
|
||||
void newItem();
|
||||
void deleteItem();
|
||||
void load();
|
||||
pki_base *loadItem(QString fname);
|
||||
pki_base* insert(pki_base *item);
|
||||
void store();
|
||||
void popupMenu(QListViewItem *item, const QPoint &pt, int x);
|
||||
signals:
|
||||
void keyDone(QString &);
|
||||
void init_database();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1,356 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "MainWindow.h"
|
||||
|
||||
|
||||
void MainWindow::showDetailsCrl()
|
||||
{
|
||||
pki_crl *crl = (pki_crl *)crls->getSelectedPKI();
|
||||
showDetailsCrl(crl);
|
||||
}
|
||||
|
||||
void MainWindow::showDetailsCrl(QListViewItem *item)
|
||||
{
|
||||
string crl = item->text(0).latin1();
|
||||
showDetailsCrl((pki_crl *)crls->getSelectedPKI(crl));
|
||||
}
|
||||
|
||||
|
||||
bool MainWindow::showDetailsCrl(pki_crl *crl, bool import)
|
||||
{
|
||||
if (!crl) return false;
|
||||
if (opensslError(crl)) return false;
|
||||
char buf[20];
|
||||
bool ret;
|
||||
int numc, i;
|
||||
pki_x509 *iss, *rev;
|
||||
QListViewItem *current;
|
||||
try {
|
||||
CrlDetail_UI *dlg = new CrlDetail_UI(this,0,true);
|
||||
dlg->image->setPixmap(*revImg);
|
||||
dlg->descr->setText(crl->getDescription().c_str());
|
||||
dlg->setCaption(tr(XCA_TITLE));
|
||||
iss = certs->getBySubject(crl->getIssuerX509_NAME());
|
||||
numc = crl->numRev();
|
||||
dlg->certList->clear();
|
||||
dlg->certList->addColumn(tr("Name"));
|
||||
dlg->certList->addColumn(tr("Serial"));
|
||||
dlg->certList->addColumn(tr("Revokation"));
|
||||
CERR("NUMBER:" << numc);
|
||||
for (i=0; i<numc; i++) {
|
||||
CERR("SERIAL: "<< crl->getSerial(i));
|
||||
rev = certs->getByIssSerial(iss, crl->getSerial(i));
|
||||
if (rev != NULL) {
|
||||
CERR(rev->getDescription());
|
||||
current = new QListViewItem(dlg->certList,
|
||||
rev->getDescription().c_str());
|
||||
}
|
||||
else {
|
||||
current = new QListViewItem(dlg->certList, "Unknown certificate" );
|
||||
}
|
||||
current->setText(1, QString::number(crl->getSerial(i)) );
|
||||
current->setText(2, pki_x509::asn1TimeToSortable(crl->getRevDate(i)).c_str());
|
||||
}
|
||||
dlg->v3Extensions->setText(crl->printV3ext().c_str());
|
||||
dlg->issuer->setText(iss->getDescription().c_str());
|
||||
if (crl->verify(iss->getKey()) == 0) {
|
||||
dlg->signCheck->setText(tr("Success"));
|
||||
}
|
||||
sprintf(buf, "%d", ASN1_INTEGER_get(crl->crl->crl->version)+1);
|
||||
/* yeah, this is really oo programming :-( */
|
||||
dlg->lUpdate->setText(pki_x509::asn1TimeToSortable(crl->crl->crl->lastUpdate).c_str());
|
||||
dlg->nUpdate->setText(pki_x509::asn1TimeToSortable(crl->crl->crl->nextUpdate).c_str());
|
||||
dlg->version->setText(buf);
|
||||
connect( dlg->certList, SIGNAL( doubleClicked(QListViewItem*) ),
|
||||
this, SLOT( showDetailsCert(QListViewItem *) ));
|
||||
string odesc = crl->getDescription();
|
||||
ret = dlg->exec();
|
||||
string ndesc = dlg->descr->text().latin1();
|
||||
delete dlg;
|
||||
if (!ret && import) {
|
||||
delete crl;
|
||||
}
|
||||
if (!ret) return false;
|
||||
if (crls == NULL) {
|
||||
init_database();
|
||||
}
|
||||
if (import) {
|
||||
crl = insertCrl(crl);
|
||||
}
|
||||
|
||||
if (ndesc != odesc) {
|
||||
crls->renamePKI(crl, ndesc);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void MainWindow::deleteCrl()
|
||||
{
|
||||
try {
|
||||
pki_crl *crl = (pki_crl *)crls->getSelectedPKI();
|
||||
if (!crl) return;
|
||||
if (QMessageBox::information(this,tr(XCA_TITLE),
|
||||
tr("Really want to delete the Revokation list") +":\n'" +
|
||||
QString::fromLatin1(crl->getDescription().c_str()) + "'\n" ,
|
||||
tr("Delete"), tr("Cancel") )
|
||||
) return;
|
||||
crls->deletePKI(crl);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::loadCrl()
|
||||
{
|
||||
QStringList filt;
|
||||
filt.append(tr("Revokation lists ( *.pem *.crl )"));
|
||||
filt.append(tr("All files ( *.* )"));
|
||||
QStringList slist;
|
||||
QString s="";
|
||||
QFileDialog *dlg = new QFileDialog(this,0,true);
|
||||
dlg->setCaption(tr("Certificate import"));
|
||||
dlg->setFilters(filt);
|
||||
dlg->setMode( QFileDialog::ExistingFiles );
|
||||
setPath(dlg);
|
||||
MARK
|
||||
if (dlg->exec()) {
|
||||
slist = dlg->selectedFiles();
|
||||
newPath(dlg);
|
||||
}
|
||||
delete dlg;
|
||||
MARK
|
||||
for ( QStringList::Iterator it = slist.begin(); it != slist.end(); ++it ) {
|
||||
s = *it;
|
||||
s = QDir::convertSeparators(s);
|
||||
MARK
|
||||
try {
|
||||
pki_crl *crl = new pki_crl(s.latin1());
|
||||
MARK
|
||||
insertCrl(crl);
|
||||
MARK
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
pki_crl *MainWindow::insertCrl(pki_crl *crl)
|
||||
{
|
||||
try {
|
||||
MARK
|
||||
pki_crl *oldcrl = (pki_crl *)crls->findPKI(crl);
|
||||
MARK
|
||||
if (oldcrl) {
|
||||
QMessageBox::information(this,tr(XCA_TITLE),
|
||||
tr("The revokation list already exists in the database as") +":\n'" +
|
||||
QString::fromLatin1(oldcrl->getDescription().c_str()) +
|
||||
"'\n" + tr("and so it was not imported"), "OK");
|
||||
delete(crl);
|
||||
return oldcrl;
|
||||
}
|
||||
CERR( "insertCrl: inserting" );
|
||||
crls->insertPKI(crl);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return crl;
|
||||
}
|
||||
|
||||
void MainWindow::writeCrl_pem()
|
||||
{
|
||||
writeCrl(true);
|
||||
}
|
||||
void MainWindow::writeCrl_der()
|
||||
{
|
||||
writeCrl(false);
|
||||
}
|
||||
|
||||
void MainWindow::writeCrl(bool pem)
|
||||
{
|
||||
pki_crl *crl;
|
||||
try {
|
||||
crl = (pki_crl *)crls->getSelectedPKI();
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!crl) return;
|
||||
QStringList filt;
|
||||
filt.append("Revokation Lists ( *.crl *.pem)");
|
||||
filt.append("All Files ( *.* )");
|
||||
QString s="";
|
||||
QFileDialog *dlg = new QFileDialog(this,0,true);
|
||||
dlg->setCaption(tr("Export Certificate revokation list"));
|
||||
dlg->setFilters(filt);
|
||||
dlg->setMode( QFileDialog::AnyFile );
|
||||
dlg->setSelection( (crl->getDescription() + ".crl").c_str() );
|
||||
setPath(dlg);
|
||||
if (dlg->exec()) {
|
||||
s = dlg->selectedFile();
|
||||
newPath(dlg);
|
||||
}
|
||||
delete dlg;
|
||||
if (s.isEmpty()) return;
|
||||
s=QDir::convertSeparators(s);
|
||||
try {
|
||||
crl->writeCrl(s.latin1(), pem);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::showPopupCrl(QListViewItem *item, const QPoint &pt, int x) {
|
||||
CERR( "popup Crl");
|
||||
QPopupMenu *menu = new QPopupMenu(this);
|
||||
QPopupMenu *subExport = new QPopupMenu(this);
|
||||
|
||||
if (!item) {
|
||||
menu->insertItem(tr("Import"), this, SLOT(loadCrl()));
|
||||
}
|
||||
else {
|
||||
menu->insertItem(tr("Rename"), this, SLOT(startRenameCrl()));
|
||||
menu->insertItem(tr("Show Details"), this, SLOT(showDetailsCrl()));
|
||||
menu->insertItem(tr("Export"), subExport);
|
||||
subExport->insertItem(tr("PEM"), this, SLOT(writeCrl_pem()));
|
||||
subExport->insertItem(tr("DER"), this, SLOT(writeCrl_der()));
|
||||
menu->insertItem(tr("Delete"), this, SLOT(deleteCrl()));
|
||||
}
|
||||
menu->exec(pt);
|
||||
delete menu;
|
||||
delete subExport;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void MainWindow::renameCrl(QListViewItem *item, int col, const QString &text)
|
||||
{
|
||||
if (col != 0) return;
|
||||
try {
|
||||
pki_base *pki = crls->getSelectedPKI(item);
|
||||
string txt = text.latin1();
|
||||
crls->renamePKI(pki, txt);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
void MainWindow::genCrl()
|
||||
{
|
||||
pki_x509 *cert = (pki_x509 *)certs->getSelectedPKI();
|
||||
if (!cert) return;
|
||||
if (cert->getKey()->isPubKey()) return;
|
||||
pki_crl *crl = genCrl(cert);
|
||||
crls->insertPKI(crl);
|
||||
}
|
||||
|
||||
pki_crl *MainWindow::genCrl(pki_x509 *cert)
|
||||
{
|
||||
QList<pki_x509> list;
|
||||
pki_x509 *issuedcert = NULL;
|
||||
pki_crl *crl = NULL;
|
||||
try {
|
||||
crl = new pki_crl(cert->getDescription(), cert);
|
||||
|
||||
list = certs->getIssuedCerts(cert);
|
||||
if (!list.isEmpty()) {
|
||||
for ( issuedcert = list.first(); issuedcert != NULL; issuedcert = list.next() ) {
|
||||
if (issuedcert->isRevoked() ) {
|
||||
crl->addRevoked(issuedcert);
|
||||
}
|
||||
}
|
||||
}
|
||||
crl->addV3ext(NID_authority_key_identifier,"keyid,issuer");
|
||||
crl->addV3ext(NID_issuer_alt_name,"issuer:copy");
|
||||
crl->sign(cert->getKey());
|
||||
cert->setLastCrl(crl->getDate());
|
||||
certs->updatePKI(cert);
|
||||
CERR( "CRL done, completely");
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return crl;
|
||||
}
|
||||
|
||||
void MainWindow::startRenameCrl()
|
||||
{
|
||||
try {
|
||||
#ifdef qt3
|
||||
pki_base *pki = crls->getSelectedPKI();
|
||||
if (!pki) return;
|
||||
QListViewItem *item = (QListViewItem *)pki->getPointer();
|
||||
item->startRename(0);
|
||||
#else
|
||||
renamePKI(crls);
|
||||
#endif
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
13
Makefile.in
13
Makefile.in
@ -44,12 +44,15 @@ $(SUBDIRS):
|
||||
$(MAKE) -C $@ all
|
||||
|
||||
clean:
|
||||
$(MAKE) -C lib clean
|
||||
$(MAKE) -C ui clean
|
||||
for x in $(SUBDIRS); do \
|
||||
$(MAKE) -C $${x} clean; \
|
||||
done
|
||||
rm -f $(MOC_CPP) $(UI_CPP) $(UI_H) *~ *.o xca
|
||||
|
||||
distclean: clean
|
||||
$(MAKE) -C lib distclean
|
||||
for x in $(SUBDIRS); do \
|
||||
$(MAKE) -C $${x} distclean; \
|
||||
done
|
||||
rm -f Makefile config.cache config.h config.log config.status results
|
||||
rm -rf autom4te.cache
|
||||
|
||||
@ -73,9 +76,5 @@ install: xca
|
||||
install -m 755 -o root xca $(prefix)@prefix@/bin
|
||||
install -m 644 -o root img/*.png $(prefix)@prefix@/share/xca
|
||||
install -m 644 -o root xca_??.qm $(prefix)@prefix@/share/xca
|
||||
|
||||
moc_%.cpp: %.h %.cpp
|
||||
$(MOC) $< -o $@
|
||||
|
||||
|
||||
.PHONY: $(SUBDIRS)
|
||||
|
||||
541
NewX509.cpp
541
NewX509.cpp
@ -1,541 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "NewX509.h"
|
||||
#include <qgroupbox.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qradiobutton.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qlabel.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include <qlistbox.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qvalidator.h>
|
||||
#include <qbuttongroup.h>
|
||||
#include "MainWindow.h"
|
||||
#include "lib/x509name.h"
|
||||
|
||||
NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *req, db_x509 *cert, db_temp *temp, QPixmap *image, QPixmap *ns)
|
||||
:NewX509_UI(parent, name, true, 0)
|
||||
{
|
||||
connect( this, SIGNAL(genKey()), parent, SLOT(newKey()) );
|
||||
connect( parent, SIGNAL(keyDone(QString)), this, SLOT(newKeyDone(QString)) );
|
||||
setCaption(tr(XCA_TITLE));
|
||||
keys = key;
|
||||
reqs = req;
|
||||
temps = temp;
|
||||
certs = cert;
|
||||
fixtemp = NULL;
|
||||
if (image) {
|
||||
bigImg1->setPixmap(*image);
|
||||
bigImg2->setPixmap(*image);
|
||||
bigImg3->setPixmap(*image);
|
||||
bigImg4->setPixmap(*image);
|
||||
bigImg5->setPixmap(*image);
|
||||
bigImg6->setPixmap(*image);
|
||||
nsImg->setPixmap(*ns);
|
||||
}
|
||||
#ifdef qt3
|
||||
// pretty fat Title :-)
|
||||
QFont tFont;// = getFont();
|
||||
tFont.setPointSize(14);
|
||||
tFont.setBold(true);
|
||||
tFont.setUnderline(true);
|
||||
setTitleFont( tFont );
|
||||
#else
|
||||
//setFont( tFont );
|
||||
#endif
|
||||
serialNr->setValidator( new QIntValidator(0, 32767, this));
|
||||
QStringList strings;
|
||||
// are there any useable private keys ?
|
||||
if (keys) {
|
||||
strings = keys->get0PrivateDesc();
|
||||
keyList->insertStringList(strings);
|
||||
}
|
||||
else {
|
||||
keyList->setEnabled(false);
|
||||
genKeyBUT->setEnabled(false);
|
||||
}
|
||||
|
||||
// any PKCS#10 requests to be used ?
|
||||
if (reqs) {
|
||||
strings = reqs->getDesc();
|
||||
if (strings.isEmpty()) {
|
||||
fromReqCB->setDisabled(true);
|
||||
}
|
||||
else {
|
||||
reqList->insertStringList(strings);
|
||||
}
|
||||
}
|
||||
else {
|
||||
reqList->setEnabled(false);
|
||||
fromReqCB->setEnabled(false);
|
||||
}
|
||||
|
||||
// How about signing certificates ?
|
||||
if (certs) {
|
||||
strings = certs->getSignerDesc();
|
||||
if (strings.isEmpty()) {
|
||||
foreignSignRB->setDisabled(true);
|
||||
certList->setDisabled(true);
|
||||
}
|
||||
else {
|
||||
certList->insertStringList(strings);
|
||||
}
|
||||
}
|
||||
else {
|
||||
foreignSignRB->setDisabled(true);
|
||||
certList->setDisabled(true);
|
||||
}
|
||||
|
||||
// settings for the templates ....
|
||||
if (temps) {
|
||||
strings = temps->getDesc();
|
||||
strings.prepend(tr("Server Template"));
|
||||
strings.prepend(tr("Client Template"));
|
||||
strings.prepend(tr("CA Template"));
|
||||
strings.prepend(tr("Empty Template"));
|
||||
tempList->insertStringList(strings);
|
||||
}
|
||||
else {
|
||||
templateBox->setEnabled(false);
|
||||
}
|
||||
|
||||
setFinishEnabled(page7,true);
|
||||
setNextEnabled(page2,false);
|
||||
signerChanged();
|
||||
}
|
||||
void NewX509::setRequest()
|
||||
{
|
||||
setAppropriate(page4, false);
|
||||
setAppropriate(page5, false);
|
||||
setAppropriate(page6, false);
|
||||
finishButton()->setEnabled(true);
|
||||
changeDefault->setEnabled(false);
|
||||
changeDefault->setChecked(false);
|
||||
signerBox->setEnabled(false);
|
||||
startText=tr("\
|
||||
Welcome to the settings for certificate signing requests.
|
||||
A signing request needs a private key, so it will be created \
|
||||
if there isn't any unused key available in the key database. \
|
||||
This signing request can then be given to a Certification authority \
|
||||
while the private key of the request and of the resulting certificate \
|
||||
returned from the CA does never leave your computer.");
|
||||
endText=tr("\
|
||||
You are done with entering all parameters for generating a Certificate signing \
|
||||
request. The resulting request should be exported and send to an appropriate CA \
|
||||
for signing it.");
|
||||
tText=tr("Certificate request");
|
||||
setup();
|
||||
}
|
||||
|
||||
NewX509::~NewX509()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void NewX509::setTemp(pki_temp *temp)
|
||||
{
|
||||
setAppropriate(page1, false);
|
||||
finishButton()->setEnabled(true);
|
||||
startText=tr("\
|
||||
Welcome to the settings for Templates.
|
||||
This templates do not refer to any ASN.1 structure but are used to keep default \
|
||||
settings for signing requests and certificates. \
|
||||
When creating a Request or Certificate the template can preset the needed fields \
|
||||
with default settings.");
|
||||
endText=tr("\
|
||||
You are done with entering all parameters for the Template.
|
||||
After this step the template can be assigned to one of your CAs to be autoatically \
|
||||
applied when signing with this CA.");
|
||||
tText=tr("Template");
|
||||
if (temp->getIntName() != "--") {
|
||||
description->setText(temp->getIntName());
|
||||
tText += tr(" change");
|
||||
}
|
||||
setup();
|
||||
|
||||
}
|
||||
|
||||
void NewX509::setCert()
|
||||
{
|
||||
finishButton()->setEnabled(true);
|
||||
startText=tr("Welcome to the settings for Certificates. The information for the new Certificate can either be grabbed from a given Certificate-request or be filled in by hand. In the case of not signing a request there needs to be at least one unused key. If this is not the case it will be created. If you want to self-sign a request (unusual but nevertheless possible) you need the private key used to create the request.");
|
||||
endText=tr("You are done with entering all parameters for creating a Certificate.");
|
||||
tText=tr("Certificate");
|
||||
setup();
|
||||
}
|
||||
|
||||
void NewX509::setup()
|
||||
{
|
||||
startLabel->setText(startText);
|
||||
endLabel->setText(endText);
|
||||
setTitle(page0, tText + " Wizard");
|
||||
setTitle(page1, tText + " template selection");
|
||||
setTitle(page2, tText + " personal settings");
|
||||
setTitle(page4, tText + " X.509 v3 Extensions");
|
||||
setTitle(page5, tText + " key usage setup");
|
||||
setTitle(page6, tText + " Netscape extensions");
|
||||
setTitle(page7, tText + " Wizard finished");
|
||||
}
|
||||
|
||||
void NewX509::defineTemplate(pki_temp *temp)
|
||||
{
|
||||
fromTemplate(temp);
|
||||
templateChanged(temp);
|
||||
tempList->setEnabled(false);
|
||||
}
|
||||
|
||||
void NewX509::defineRequest(pki_x509req *req)
|
||||
{
|
||||
if (!req) return;
|
||||
fromReqCB->setEnabled(true);
|
||||
fromReqCB->setChecked(true);
|
||||
QString reqname = req->getIntName();
|
||||
#ifdef qt3
|
||||
reqList->setCurrentText(reqname);
|
||||
#else
|
||||
for (int i=0; i<reqList->count(); i++) {
|
||||
if (reqList->text(i) == reqname) {
|
||||
reqList->setCurrentItem(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void NewX509::defineCert(pki_x509 *defcert)
|
||||
{
|
||||
// suggested from: Andrey Brindeew <abr@abr.pp.ru>
|
||||
if (defcert && defcert->canSign()) {
|
||||
QString name = defcert->getIntName();
|
||||
#ifdef qt3
|
||||
certList->setCurrentText(name);
|
||||
#else
|
||||
for (int i=0; i<certList->count();i++) {
|
||||
if (certList->text(i) == name) {
|
||||
certList->setCurrentItem(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
foreignSignRB->setChecked(true);
|
||||
// certList->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int NewX509::lb2int(QListBox *lb)
|
||||
{
|
||||
int x=0;
|
||||
for (int i=0; lb->item(i); i++) {
|
||||
if (lb->isSelected(i)){
|
||||
x |= 1<<i;
|
||||
}
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
void NewX509::int2lb(QListBox *lb, int x)
|
||||
{
|
||||
for (int i=0; lb->item(i); i++) {
|
||||
lb->setSelected(i, (1<<i) & x);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void NewX509::fromTemplate(pki_temp *temp)
|
||||
{
|
||||
countryName->setText(temp->C);
|
||||
stateOrProvinceName->setText(temp->P);
|
||||
localityName->setText(temp->L);
|
||||
organisationName->setText(temp->O);
|
||||
organisationalUnitName->setText(temp->OU);
|
||||
commonName->setText(temp->CN);
|
||||
emailAddress->setText(temp->EMAIL);
|
||||
subAltName->setText(temp->subAltName);
|
||||
issAltName->setText(temp->issAltName);
|
||||
crlDist->setText(temp->crlDist);
|
||||
nsComment->setText(temp->nsComment);
|
||||
nsBaseUrl->setText(temp->nsBaseUrl);
|
||||
nsRevocationUrl->setText(temp->nsRevocationUrl);
|
||||
nsCARevocationUrl->setText(temp->nsCARevocationUrl);
|
||||
nsRenewalUrl->setText(temp->nsRenewalUrl);
|
||||
nsCaPolicyUrl->setText(temp->nsCaPolicyUrl);
|
||||
nsSslServerName->setText(temp->nsSslServerName);
|
||||
int2lb(nsCertType, temp->nsCertType);
|
||||
basicCA->setCurrentItem(temp->ca?1:0);
|
||||
bcCritical->setChecked(temp->bcCrit);
|
||||
kuCritical->setChecked(temp->keyUseCrit);
|
||||
ekuCritical->setChecked(temp->eKeyUseCrit);
|
||||
subKey->setChecked(temp->subKey);
|
||||
authKey->setChecked(temp->authKey);
|
||||
subAltCp->setChecked(temp->subAltCp);
|
||||
issAltCp->setChecked(temp->issAltCp);
|
||||
int2lb(keyUsage, temp->keyUse);
|
||||
int2lb(ekeyUsage, temp->eKeyUse);
|
||||
//validNumber->setText(QString::number(temp->validN));
|
||||
//validRange->setCurrentItem(temp->validM);
|
||||
if (temp->pathLen) {
|
||||
basicPath->setText(QString::number(temp->pathLen));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void NewX509::toTemplate(pki_temp *temp)
|
||||
{
|
||||
temp->setIntName(description->text());
|
||||
temp->C = countryName->text();
|
||||
temp->P = stateOrProvinceName->text();
|
||||
temp->L = localityName->text();
|
||||
temp->O = organisationName->text();
|
||||
temp->OU = organisationalUnitName->text();
|
||||
temp->CN = commonName->text();
|
||||
temp->EMAIL = emailAddress->text();
|
||||
temp->subAltName = subAltName->text();
|
||||
temp->issAltName = issAltName->text();
|
||||
temp->crlDist = crlDist->text();
|
||||
temp->nsComment = nsComment->text();
|
||||
temp->nsBaseUrl = nsBaseUrl->text();
|
||||
temp->nsRevocationUrl = nsRevocationUrl->text();
|
||||
temp->nsCARevocationUrl = nsCARevocationUrl->text();
|
||||
temp->nsRenewalUrl = nsRenewalUrl->text();
|
||||
temp->nsCaPolicyUrl = nsCaPolicyUrl->text();
|
||||
temp->nsSslServerName = nsSslServerName->text();
|
||||
temp->nsCertType = lb2int(nsCertType);
|
||||
temp->ca = basicCA->currentItem();
|
||||
temp->bcCrit = bcCritical->isChecked();
|
||||
temp->keyUseCrit = kuCritical->isChecked();
|
||||
temp->eKeyUseCrit = ekuCritical->isChecked();
|
||||
temp->subKey = subKey->isChecked();
|
||||
temp->authKey = authKey->isChecked();
|
||||
temp->subAltCp = subAltCp->isChecked();
|
||||
temp->issAltCp = issAltCp->isChecked();
|
||||
temp->keyUse = lb2int(keyUsage);
|
||||
temp->eKeyUse = lb2int(ekeyUsage);
|
||||
//temp->validN = validNumber->text().toInt();
|
||||
//temp->validM = validRange->currentItem();
|
||||
temp->pathLen = basicPath->text().toInt();
|
||||
}
|
||||
|
||||
void NewX509::toggleFromRequest()
|
||||
{
|
||||
if (fromReqCB->isChecked()) {
|
||||
setAppropriate(page2, false);
|
||||
reqList->setEnabled(true);
|
||||
}
|
||||
else {
|
||||
setAppropriate(page2, true);
|
||||
reqList->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void NewX509::dataChangeP2()
|
||||
{
|
||||
CERR( "Data changed" );
|
||||
if (description->text() != "" && countryName->text().length() !=1 &&
|
||||
(keyList->count() > 0 || !keyList->isEnabled())){
|
||||
setNextEnabled(page2,true);
|
||||
}
|
||||
else {
|
||||
setNextEnabled(page2,false);
|
||||
}
|
||||
}
|
||||
|
||||
void NewX509::showPage(QWidget *page)
|
||||
{
|
||||
|
||||
if (page == page0) {
|
||||
signerChanged();
|
||||
switchExtended();
|
||||
toggleFromRequest();
|
||||
}
|
||||
else if ( page == page2 ) {
|
||||
if (keyList->isEnabled() && keyList->count() == 0 ) {
|
||||
newKey();
|
||||
}
|
||||
dataChangeP2();
|
||||
}
|
||||
|
||||
QWizard::showPage(page);
|
||||
|
||||
if ( page == page2 ) {
|
||||
description->setFocus();
|
||||
}
|
||||
else if (page == page4) {
|
||||
basicCA->setFocus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void NewX509::signerChanged()
|
||||
{
|
||||
CERR("signer Changed");
|
||||
if (!certs) return;
|
||||
QString name = certList->currentText();
|
||||
CERR( "Certificate: " << name);
|
||||
|
||||
if (name.isEmpty()) return;
|
||||
pki_x509 *cert = (pki_x509 *)certs->getByName(name);
|
||||
|
||||
if (!cert) return;
|
||||
QString templ = cert->getTemplate();
|
||||
|
||||
if (templ.isEmpty()) return;
|
||||
CERR( "set Template: " << templ );
|
||||
|
||||
templateChanged(templ);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void NewX509::templateChanged(QString tempname)
|
||||
{
|
||||
if (!tempList->isEnabled()) return;
|
||||
#ifdef qt3
|
||||
tempList->setCurrentText(tempname);
|
||||
#else
|
||||
for (int i=0; i<tempList->count();i++) {
|
||||
if (tempList->text(i) == tempname) {
|
||||
tempList->setCurrentItem(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void NewX509::templateChanged(pki_temp *templ)
|
||||
{
|
||||
QString tempname = templ->getIntName();
|
||||
templateChanged(tempname);
|
||||
}
|
||||
|
||||
|
||||
void NewX509::templateChanged()
|
||||
{
|
||||
pki_temp *temp = NULL;
|
||||
int item;
|
||||
if (!appropriate(page1)) return;
|
||||
if (!tempList->isEnabled()) return;
|
||||
if ((item = tempList->currentItem())<4) {
|
||||
temp = new pki_temp("temp",item);
|
||||
if (temp) {
|
||||
fromTemplate(temp);
|
||||
CERR("using default template: "<< item);
|
||||
delete (temp);
|
||||
}
|
||||
return;
|
||||
}
|
||||
QString name = tempList->currentText();
|
||||
if (name == "" || !temps) return;
|
||||
temp = (pki_temp *)temps->getByName(name);
|
||||
if (!temp) return;
|
||||
CERR("CHANGING TEMPLATE");
|
||||
fromTemplate(temp);
|
||||
}
|
||||
|
||||
void NewX509::switchExtended()
|
||||
{
|
||||
if ( !appropriate(page1) ) return;
|
||||
CERR( "SWITCH Extended");
|
||||
if (changeDefault->isChecked() || !templateBox->isEnabled()) {
|
||||
setAppropriate(page4, true);
|
||||
setAppropriate(page5, true);
|
||||
setAppropriate(page6, true);
|
||||
}
|
||||
else {
|
||||
setAppropriate(page4, false);
|
||||
setAppropriate(page5, false);
|
||||
setAppropriate(page6, false);
|
||||
}
|
||||
}
|
||||
|
||||
void NewX509::newKey()
|
||||
{
|
||||
emit genKey();
|
||||
}
|
||||
|
||||
void NewX509::newKeyDone(QString name)
|
||||
{
|
||||
keyList->insertItem(name,0);
|
||||
keyList->setCurrentItem(0);
|
||||
dataChangeP2();
|
||||
}
|
||||
|
||||
void NewX509::helpClicked()
|
||||
{
|
||||
QWhatsThis::enterWhatsThisMode();
|
||||
}
|
||||
|
||||
pki_key *NewX509::getSelectedKey()
|
||||
{
|
||||
return (pki_key *)MainWindow::keys->getByName(keyList->currentText());
|
||||
}
|
||||
|
||||
x509name NewX509::getX509name()
|
||||
{
|
||||
x509name x;
|
||||
x.addEntryByNid(NID_commonName, commonName->text());
|
||||
x.addEntryByNid(NID_countryName, countryName->text());
|
||||
x.addEntryByNid(NID_localityName ,localityName->text());
|
||||
x.addEntryByNid(NID_stateOrProvinceName, stateOrProvinceName->text());
|
||||
x.addEntryByNid(NID_organizationName, organisationName->text());
|
||||
x.addEntryByNid(NID_organizationalUnitName, organisationalUnitName->text());
|
||||
x.addEntryByNid(NID_pkcs9_emailAddress, emailAddress->text());
|
||||
return x;
|
||||
}
|
||||
|
||||
107
NewX509.h
107
NewX509.h
@ -1,107 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "ui/NewX509.h"
|
||||
#include "lib/db_key.h"
|
||||
#include "lib/db_x509req.h"
|
||||
#include "lib/db_x509.h"
|
||||
#include "lib/db_temp.h"
|
||||
|
||||
#ifndef NEWX509_H
|
||||
#define NEWX509_H
|
||||
|
||||
class MainWindow;
|
||||
|
||||
class NewX509: public NewX509_UI
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
db_x509req *reqs;
|
||||
db_x509 *certs;
|
||||
db_key *keys;
|
||||
db_temp *temps;
|
||||
pki_temp *fixtemp;
|
||||
QString startText, endText, tText;
|
||||
|
||||
public:
|
||||
NewX509(QWidget *parent, const char *name, db_key *key, db_x509req *req, db_x509 *cert, db_temp *temp, QPixmap *image, QPixmap *ns);
|
||||
~NewX509();
|
||||
void setRequest(); // reduce to request form
|
||||
void setTemp(pki_temp *temp); // reduce to template form
|
||||
void setCert(); // reduce to certificate form
|
||||
void setup();
|
||||
void showPage(QWidget *page);
|
||||
void toTemplate(pki_temp *temp);
|
||||
void fromTemplate(pki_temp *temp);
|
||||
void defineTemplate(pki_temp *temp);
|
||||
void defineRequest(pki_x509req *req);
|
||||
void defineCert(pki_x509 *defcert);
|
||||
int lb2int(QListBox *lb);
|
||||
void int2lb(QListBox *lb, int x);
|
||||
void templateChanged(pki_temp *templ);
|
||||
void templateChanged(QString templatename);
|
||||
pki_key *getSelectedKey();
|
||||
x509name getX509name();
|
||||
public slots:
|
||||
void toggleFromRequest();
|
||||
void newKey();
|
||||
void dataChangeP2();
|
||||
void newKeyDone(QString name);
|
||||
void switchExtended();
|
||||
void templateChanged();
|
||||
void signerChanged();
|
||||
void helpClicked();
|
||||
|
||||
signals:
|
||||
void genKey();
|
||||
};
|
||||
|
||||
#endif
|
||||
295
ReqView.cpp
295
ReqView.cpp
@ -1,295 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "ReqView.h"
|
||||
#include "ui/ReqDetail.h"
|
||||
#include <qpopupmenu.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qfiledialog.h>
|
||||
#include <qdir.h>
|
||||
#include <qlabel.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qpushbutton.h>
|
||||
|
||||
#include "widgets/MainWindow.h"
|
||||
#include "widgets/NewX509.h"
|
||||
#include "distname.h"
|
||||
|
||||
|
||||
ReqView::ReqView(QWidget * parent = 0, const char * name = 0, WFlags f = 0)
|
||||
:XcaListView(parent, name, f)
|
||||
{
|
||||
addColumn(tr("Common Name"));
|
||||
/*
|
||||
connect(keyl, SIGNAL(delKey(pki_key *)), this, SLOT(delKey(pki_key *)));
|
||||
connect(keyl, SIGNAL(newKey(pki_key *)), this, SLOT(newKey(pki_key *)));
|
||||
*/
|
||||
}
|
||||
|
||||
void ReqView::newItem()
|
||||
{
|
||||
newItem(NULL);
|
||||
}
|
||||
|
||||
void ReqView::newItem(pki_temp *temp)
|
||||
{
|
||||
NewX509 *dlg = MainWindow::newX509(MainWindow::csrImg);
|
||||
if (temp) {
|
||||
dlg->defineTemplate(temp);
|
||||
}
|
||||
dlg->setRequest();
|
||||
if (! dlg->exec()){
|
||||
delete dlg;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
pki_key *key = dlg->getSelectedKey();
|
||||
x509name xn = dlg->getX509name();
|
||||
pki_x509req *req = new pki_x509req();
|
||||
req->createReq(key, xn);
|
||||
insert(req);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ReqView::showItem(pki_base *item, bool import)
|
||||
{
|
||||
if (!item) return;
|
||||
emit init_database();
|
||||
try {
|
||||
pki_x509req *req = (pki_x509req *)item;
|
||||
ReqDetail_UI *dlg = new ReqDetail_UI(this,0,true);
|
||||
dlg->descr->setText(req->getIntName());
|
||||
dlg->setCaption(tr(XCA_TITLE));
|
||||
if (!req->verify() ) {
|
||||
dlg->verify->setDisabled(true);
|
||||
dlg->verify->setText("ERROR");
|
||||
}
|
||||
pki_key *key =req->getRefKey();
|
||||
if (key) {
|
||||
dlg->privKey->setText(key->getIntName());
|
||||
dlg->privKey->setDisabled(false);
|
||||
}
|
||||
/*
|
||||
x509name rn = req->getSubject();
|
||||
dlg->dnCN->setText(rn.getEntryByNid(NID_commonName));
|
||||
dlg->dnC->setText(rn.getEntryByNid(NID_countryName) + " / "
|
||||
+ rn.getEntryByNid(NID_stateOrProvinceName));
|
||||
dlg->dnL->setText(rn.getEntryByNid(NID_localityName));
|
||||
dlg->dnO->setText(rn.getEntryByNid(NID_organizationName));
|
||||
dlg->dnOU->setText(rn.getEntryByNid(NID_organizationalUnitName));
|
||||
dlg->dnEmail->setText(rn.getEntryByNid(NID_pkcs9_emailAddress));
|
||||
dlg->image->setPixmap(*MainWindow::csrImg);
|
||||
*/
|
||||
|
||||
dlg->subject->setX509name(req->getSubject());
|
||||
|
||||
// rename the buttons in case of import
|
||||
if (import) {
|
||||
dlg->but_ok->setText(tr("Import"));
|
||||
dlg->but_cancel->setText(tr("Discard"));
|
||||
}
|
||||
|
||||
QString odesc = req->getIntName();
|
||||
bool ret = dlg->exec();
|
||||
QString ndesc = dlg->descr->text();
|
||||
delete dlg;
|
||||
if (!ret && import) {
|
||||
delete req;
|
||||
}
|
||||
if (!ret) return;
|
||||
|
||||
emit init_database();
|
||||
|
||||
if (import) {
|
||||
req = (pki_x509req *)insert((pki_x509req *)req);
|
||||
}
|
||||
|
||||
if (ndesc != odesc) {
|
||||
db->renamePKI(req, ndesc);
|
||||
}
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void ReqView::deleteItem()
|
||||
{
|
||||
deleteItem_default(tr("The Certificate signing request"),
|
||||
tr("is going to be deleted"));
|
||||
}
|
||||
|
||||
void ReqView::load()
|
||||
{
|
||||
QStringList filter;
|
||||
filter.append("PKCS#10 CSR ( *.pem *.der *.csr )");
|
||||
filter.append("All Files ( *.* )");
|
||||
load_default(filter, tr("Import CSR"));
|
||||
}
|
||||
|
||||
pki_base *ReqView::loadItem(QString fname)
|
||||
{
|
||||
pki_base *req = new pki_x509req(fname);
|
||||
return req;
|
||||
}
|
||||
|
||||
|
||||
void ReqView::writeReq_pem() { store(true); }
|
||||
void ReqView::writeReq_der() { store(false); }
|
||||
|
||||
void ReqView::store(bool pem)
|
||||
{
|
||||
pki_x509req *req;
|
||||
try {
|
||||
req = (pki_x509req *)getSelected();
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!req) return;
|
||||
QStringList filt;
|
||||
filt.append("PKCS#10 CSR ( *.pem *.der *.csr )");
|
||||
filt.append("All Files ( *.* )");
|
||||
QString s="";
|
||||
QFileDialog *dlg = new QFileDialog(this,0,true);
|
||||
dlg->setCaption(tr("Export Certificate signing request"));
|
||||
dlg->setFilters(filt);
|
||||
dlg->setMode( QFileDialog::AnyFile );
|
||||
dlg->setSelection( req->getIntName() + ".csr" );
|
||||
|
||||
if (dlg->exec()) {
|
||||
s = dlg->selectedFile();
|
||||
MainWindow::setPath(dlg->dirPath());
|
||||
}
|
||||
delete dlg;
|
||||
if (s.isEmpty()) return;
|
||||
s=QDir::convertSeparators(s);
|
||||
try {
|
||||
req->writeReq(s, pem);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void ReqView::signReq()
|
||||
{
|
||||
pki_x509req *req;
|
||||
try {
|
||||
req = (pki_x509req *)getSelected();
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
return;
|
||||
}
|
||||
newCert(req);
|
||||
}
|
||||
|
||||
|
||||
pki_base *ReqView::insert(pki_base *item)
|
||||
{
|
||||
pki_x509req *oldreq, *req;
|
||||
req = (pki_x509req *)item;
|
||||
emit init_database();
|
||||
try {
|
||||
oldreq = (pki_x509req *)db->getByReference(req);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
if (oldreq) {
|
||||
QMessageBox::information(this,tr(XCA_TITLE),
|
||||
tr("The certificate signing request already exists in the database as") +":\n'" +
|
||||
oldreq->getIntName() +
|
||||
"'\n" + tr("and thus was not stored"), "OK");
|
||||
delete(req);
|
||||
return oldreq;
|
||||
}
|
||||
try {
|
||||
db->insertPKI(req);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
return req;
|
||||
}
|
||||
|
||||
|
||||
void ReqView::popupMenu(QListViewItem *item, const QPoint &pt, int x) {
|
||||
CERR("hallo popup Req");
|
||||
QPopupMenu *menu = new QPopupMenu(this);
|
||||
QPopupMenu *subExport = new QPopupMenu(this);
|
||||
if (!item) {
|
||||
menu->insertItem(tr("New Request"), this, SLOT(newReq()));
|
||||
menu->insertItem(tr("Import"), this, SLOT(loadReq()));
|
||||
}
|
||||
else {
|
||||
menu->insertItem(tr("Rename"), this, SLOT(startRenameReq()));
|
||||
menu->insertItem(tr("Show Details"), this, SLOT(showDetailsReq()));
|
||||
menu->insertItem(tr("Sign"), this, SLOT(signReq()));
|
||||
menu->insertItem(tr("Export"), subExport);
|
||||
subExport->insertItem(tr("PEM"), this, SLOT(writeReq_pem()));
|
||||
subExport->insertItem(tr("DER"), this, SLOT(writeReq_der()));
|
||||
menu->insertItem(tr("Delete"), this, SLOT(deleteItem()));
|
||||
}
|
||||
menu->exec(pt);
|
||||
delete menu;
|
||||
delete subExport;
|
||||
return;
|
||||
}
|
||||
|
||||
87
ReqView.h
87
ReqView.h
@ -1,87 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef REQVIEW_H
|
||||
#define REQVIEW_H
|
||||
|
||||
#include "XcaListView.h"
|
||||
#include "lib/pki_x509req.h"
|
||||
#include "lib/pki_temp.h"
|
||||
#include "widgets/NewX509.h"
|
||||
|
||||
|
||||
class ReqView : public XcaListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ReqView(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
|
||||
void showItem(pki_base *item, bool import);
|
||||
void newItem();
|
||||
void newItem(pki_temp *temp);
|
||||
void deleteItem();
|
||||
void load();
|
||||
void updateViewItem(pki_base *);
|
||||
pki_base *loadItem(QString fname);
|
||||
pki_base* insert(pki_base *item);
|
||||
void store(bool pem);
|
||||
void popupMenu(QListViewItem *item, const QPoint &pt, int x);
|
||||
public slots:
|
||||
void writeReq_pem();
|
||||
void writeReq_der();
|
||||
void signReq();
|
||||
signals:
|
||||
void keyDone(QString &);
|
||||
void newCert(pki_x509req *req);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
151
TempView.cpp
151
TempView.cpp
@ -1,151 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "TempView.h"
|
||||
#include "widgets/MainWindow.h"
|
||||
#include "widgets/NewX509.h"
|
||||
#include <qmessagebox.h>
|
||||
#include <qpopupmenu.h>
|
||||
|
||||
TempView::TempView(QWidget * parent = 0, const char * name = 0, WFlags f = 0)
|
||||
:XcaListView(parent, name, f)
|
||||
{
|
||||
keyicon = loadImg("template.png");
|
||||
addColumn(tr("Type"));
|
||||
}
|
||||
|
||||
void TempView::newItem(int type)
|
||||
{
|
||||
pki_temp *temp = new pki_temp("--", type);
|
||||
if (alterTemp(temp)) {
|
||||
insert(temp);
|
||||
}
|
||||
}
|
||||
|
||||
bool TempView::alterTemp(pki_temp *temp)
|
||||
{
|
||||
NewX509 *dlg = MainWindow::newX509(MainWindow::tempImg);
|
||||
dlg->setTemp(temp);
|
||||
dlg->fromTemplate(temp);
|
||||
if (!dlg->exec()) {
|
||||
delete dlg;
|
||||
return false;
|
||||
}
|
||||
dlg->toTemplate(temp);
|
||||
delete dlg;
|
||||
return true;
|
||||
}
|
||||
|
||||
void TempView::showItem(pki_base *item, bool import)
|
||||
{
|
||||
pki_temp *temp = (pki_temp *)item;
|
||||
if (!temp) return;
|
||||
QString oldname = temp->getIntName();
|
||||
alterTemp(temp);
|
||||
QString newname = temp->getIntName();
|
||||
if (newname!= oldname) {
|
||||
temp->setIntName(oldname);
|
||||
MainWindow::temps->renamePKI(temp, newname);
|
||||
}
|
||||
MainWindow::temps->updatePKI(temp);
|
||||
}
|
||||
|
||||
|
||||
void TempView::deleteItem()
|
||||
{
|
||||
deleteItem_default(tr("The Template"), tr("is going to be deleted"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
pki_base *TempView::insert(pki_base *temp)
|
||||
{
|
||||
MainWindow::temps->insertPKI(temp);
|
||||
return temp;
|
||||
}
|
||||
|
||||
void TempView::certFromTemp()
|
||||
{
|
||||
pki_temp *temp = (pki_temp *)getSelected();
|
||||
// FIXME: newCert(temp);
|
||||
}
|
||||
|
||||
void TempView::reqFromTemp()
|
||||
{
|
||||
pki_temp *temp = (pki_temp *)getSelected();
|
||||
// FIXME: newReq(temp);
|
||||
}
|
||||
|
||||
void TempView::popupMenu(QListViewItem *item, const QPoint &pt, int x)
|
||||
{
|
||||
QPopupMenu *menu = new QPopupMenu(this);
|
||||
QPopupMenu *subMenu = new QPopupMenu(this);
|
||||
if (!item) {
|
||||
menu->insertItem(tr("New Template"), subMenu);
|
||||
subMenu->insertItem(tr("Empty"), this, SLOT(newEmpTemp()));
|
||||
subMenu->insertItem(tr("CA"), this, SLOT(newCATemp()));
|
||||
subMenu->insertItem(tr("Client"), this, SLOT(newCliTemp()));
|
||||
subMenu->insertItem(tr("Server"), this, SLOT(newSerTemp()));
|
||||
|
||||
}
|
||||
else {
|
||||
menu->insertItem(tr("Rename"), this, SLOT(startRenameTemp()));
|
||||
menu->insertItem(tr("Change"), this, SLOT(alterTemp()));
|
||||
menu->insertItem(tr("Delete"), this, SLOT(deleteTemp()));
|
||||
menu->insertItem(tr("Create certificate"), this, SLOT(certFromTemp()));
|
||||
menu->insertItem(tr("Create request"), this, SLOT(reqFromTemp()));
|
||||
}
|
||||
menu->exec(pt);
|
||||
delete menu;
|
||||
delete subMenu;
|
||||
return;
|
||||
}
|
||||
|
||||
85
TempView.h
85
TempView.h
@ -1,85 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TEMPVIEW_H
|
||||
#define TEMPVIEW_H
|
||||
|
||||
#include "XcaListView.h"
|
||||
#include "lib/pki_temp.h"
|
||||
#include <qlistview.h>
|
||||
|
||||
class TempView : public XcaListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
QPixmap *keyicon;
|
||||
public:
|
||||
TempView(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
|
||||
void showItem(pki_base *item, bool import);
|
||||
void newItem(int type);
|
||||
void deleteItem();
|
||||
//void load();
|
||||
void updateViewItem(pki_base *);
|
||||
//pki_base *loadItem(QString fname);
|
||||
pki_base* insert(pki_base *item);
|
||||
//void store();
|
||||
void popupMenu(QListViewItem *item, const QPoint &pt, int x);
|
||||
bool alterTemp(pki_temp *temp);
|
||||
public slots:
|
||||
void certFromTemp();
|
||||
void reqFromTemp();
|
||||
signals:
|
||||
void init_database();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
272
XcaListView.cpp
272
XcaListView.cpp
@ -1,272 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "XcaListView.h"
|
||||
#include "widgets/MainWindow.h"
|
||||
#include <qinputdialog.h>
|
||||
#include <qfiledialog.h>
|
||||
#include <qmessagebox.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
XcaListView::XcaListView( QWidget * parent = 0,
|
||||
const char * name = 0, WFlags f = 0)
|
||||
:QListView(parent, name, f)
|
||||
{
|
||||
#ifdef qt3
|
||||
connect( this, SIGNAL(itemRenamed(QListViewItem *, int, const QString &)),
|
||||
this, SLOT(rename(QListViewItem *, int, const QString &)));
|
||||
#endif
|
||||
connect( this, SIGNAL(rightButtonPressed(QListViewItem *, const QPoint &, int)),
|
||||
this, SLOT(popupMenu(QListViewItem *, const QPoint &, int))) ;
|
||||
|
||||
connect( this, SIGNAL(doubleClicked(QListViewItem *)),
|
||||
this, SLOT(showItem(QListViewItem *))) ;
|
||||
}
|
||||
|
||||
void XcaListView::setDB(db_base *mydb)
|
||||
{
|
||||
db = mydb;
|
||||
updateView();
|
||||
}
|
||||
|
||||
void XcaListView::loadCont()
|
||||
{
|
||||
emit init_database();
|
||||
db->loadContainer();
|
||||
updateView();
|
||||
}
|
||||
|
||||
pki_base *XcaListView::getSelected()
|
||||
{
|
||||
emit init_database();
|
||||
QListViewItem *lvi = selectedItem();
|
||||
if (!lvi) return NULL;
|
||||
QString name = lvi->text(0);
|
||||
return db->getByName(name);
|
||||
}
|
||||
|
||||
void XcaListView::showItem()
|
||||
{
|
||||
showItem(getSelected(), false);
|
||||
}
|
||||
|
||||
void XcaListView::showItem(QListViewItem *item)
|
||||
{
|
||||
showItem(db->getByName(item->text(0)), false);
|
||||
}
|
||||
|
||||
void XcaListView::rename(QListViewItem *item, int col, const QString &text)
|
||||
{
|
||||
emit init_database();
|
||||
try {
|
||||
pki_base *pki = db->getByPtr(item);
|
||||
db->renamePKI(pki, text);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void XcaListView::startRename()
|
||||
{
|
||||
try {
|
||||
#ifdef qt3
|
||||
QListViewItem *item = selectedItem();
|
||||
if (item == NULL) return;
|
||||
item->startRename(0);
|
||||
#else
|
||||
renameDialog();
|
||||
#endif
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void XcaListView::renameDialog()
|
||||
{
|
||||
pki_base * pki = getSelected();
|
||||
if (!pki) return;
|
||||
QString name= pki->getIntName();
|
||||
bool ok;
|
||||
QString nname = QInputDialog::getText (XCA_TITLE, "Please enter the new name",
|
||||
QLineEdit::Normal, name, &ok, this );
|
||||
if (ok && name != nname) {
|
||||
db->renamePKI(pki, nname);
|
||||
pki->getLvi()->setText(0, pki->getIntName());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void XcaListView::deleteItem_default(QString t1, QString t2)
|
||||
{
|
||||
pki_base *del = getSelected();
|
||||
if (!del) return;
|
||||
if (QMessageBox::information(this,tr(XCA_TITLE),
|
||||
t1 + ": '" + del->getIntName() + "'\n" + t2,
|
||||
tr("Delete"), tr("Cancel"))
|
||||
) return;
|
||||
try {
|
||||
db->deletePKI(del);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
|
||||
void XcaListView::load_default(QStringList &filter, QString caption)
|
||||
{
|
||||
filter.append( tr("All Files ( *.* )") );
|
||||
QString s = "";
|
||||
QStringList slist;
|
||||
QFileDialog *dlg = new QFileDialog(this,0,true);
|
||||
dlg->setCaption(caption);
|
||||
dlg->setFilters(filter);
|
||||
dlg->setMode( QFileDialog::ExistingFiles );
|
||||
dlg->setDir(MainWindow::getPath());
|
||||
if (dlg->exec()) {
|
||||
slist = dlg->selectedFiles();
|
||||
MainWindow::setPath(dlg->dirPath());
|
||||
}
|
||||
delete dlg;
|
||||
for ( QStringList::Iterator it = slist.begin(); it != slist.end(); ++it ) {
|
||||
s = *it;
|
||||
s = QDir::convertSeparators(s);
|
||||
try {
|
||||
pki_base *item = loadItem(s);
|
||||
insert(item);
|
||||
}
|
||||
catch (errorEx &err) {
|
||||
Error(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void XcaListView::Error(errorEx &err)
|
||||
{
|
||||
if (err.isEmpty()) {
|
||||
CERR("Empty error Exception silently ignored");
|
||||
return;
|
||||
}
|
||||
QMessageBox::warning(this,tr(XCA_TITLE), tr("The following error occured:") + "\n" +
|
||||
QString::fromLatin1(err.getCString()));
|
||||
}
|
||||
|
||||
bool XcaListView::Error(pki_base *pki)
|
||||
{
|
||||
if (!pki) {
|
||||
QMessageBox::warning(this,tr(XCA_TITLE), tr("The system detected a NULL pointer, maybe the system is out of memory" ));
|
||||
qFatal("NULL pointer detected - Exiting");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void XcaListView::updateView()
|
||||
{
|
||||
clear();
|
||||
QList<pki_base> container;
|
||||
pki_base *pki;
|
||||
container = db->getContainer();
|
||||
if (container.isEmpty()) return;
|
||||
for ( pki = container.first(); pki != NULL; pki = container.next() ) pki->delLvi();
|
||||
QListIterator<pki_base> it(container);
|
||||
for ( ; it.current(); ++it ) {
|
||||
pki = it.current();
|
||||
QListViewItem *lvi = new QListViewItem(this, pki->getIntName());
|
||||
insertItem(lvi);
|
||||
pki->setLvi(lvi);
|
||||
pki->updateView();
|
||||
}
|
||||
}
|
||||
|
||||
pki_base *XcaListView::loadItem(QString) { CERR("Virtual called..."); return NULL; }
|
||||
void XcaListView::newItem(void) { CERR("Virtual called..."); }
|
||||
void XcaListView::deleteItem(void) { CERR("Virtual called..."); }
|
||||
void XcaListView::load(void) { CERR("Virtual called..."); }
|
||||
void XcaListView::store(void) { CERR("Virtual called..."); }
|
||||
pki_base *XcaListView::insert(pki_base *) { CERR("Virtual called..."); return NULL; }
|
||||
void XcaListView::popupMenu(QListViewItem *, QPoint const &, int) { CERR("Virtual called..."); }
|
||||
void XcaListView::showItem(pki_base *, bool) { CERR("Virtual called...");}
|
||||
|
||||
QPixmap *XcaListView::loadImg(const char *name )
|
||||
{
|
||||
#ifdef WIN32
|
||||
static unsigned char PREFIX[100]="";
|
||||
if (PREFIX[0] == '\0') {
|
||||
LONG lRc;
|
||||
HKEY hKey;
|
||||
lRc=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\xca",0,KEY_READ, &hKey);
|
||||
if(lRc!= ERROR_SUCCESS){
|
||||
// No key error
|
||||
QMessageBox::warning(NULL,tr(XCA_TITLE), "Registry Key: 'HKEY_LOCAL_MACHINE->Software->xca' not found");
|
||||
PREFIX[0] = '\0';
|
||||
}
|
||||
else {
|
||||
ULONG dwLength = 100;
|
||||
lRc=RegQueryValueEx(hKey,"Install_Dir",NULL,NULL, PREFIX, &dwLength);
|
||||
if(lRc!= ERROR_SUCCESS){
|
||||
// No key error
|
||||
QMessageBox::warning(NULL,tr(XCA_TITLE), "Registry Key: 'HKEY_LOCAL_MACHINE->Software->xca->Install_Dir' not found");
|
||||
PREFIX[0] = '\0';
|
||||
}
|
||||
}
|
||||
lRc=RegCloseKey(hKey);
|
||||
}
|
||||
#endif
|
||||
QString path = (char *)PREFIX;
|
||||
path += QDir::separator();
|
||||
return new QPixmap(path + name);
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef XCALISTVIEW_H
|
||||
#define XCALISTVIEW_H
|
||||
|
||||
#include <qlistview.h>
|
||||
#include "lib/db_base.h"
|
||||
#include "lib/exception.h"
|
||||
|
||||
class XcaListView : public QListView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
protected:
|
||||
db_base *db;
|
||||
public:
|
||||
XcaListView(QWidget * parent = 0, const char * name = 0, WFlags f = 0);
|
||||
void setDB(db_base *mydb);
|
||||
virtual pki_base *getSelected();
|
||||
virtual void showItem(pki_base *item, bool import);
|
||||
void deleteItem_default(QString t1, QString t2);
|
||||
virtual pki_base *loadItem(QString fname);
|
||||
void load_default(QStringList &filter, QString caption);
|
||||
void setDB(db_base *mydb, QPixmap *myimage);
|
||||
void Error(errorEx &err);
|
||||
bool Error(pki_base *pki);
|
||||
void loadCont();
|
||||
QPixmap *loadImg(const char *name );
|
||||
public slots:
|
||||
virtual void newItem();
|
||||
virtual void deleteItem();
|
||||
void showItem();
|
||||
void showItem(QListViewItem *item);
|
||||
virtual void load();
|
||||
virtual void store();
|
||||
virtual pki_base *insert(pki_base *item);
|
||||
virtual void popupMenu(QListViewItem *item, const QPoint &pt, int x);
|
||||
void startRename();
|
||||
void renameDialog();
|
||||
void rename(QListViewItem *item, int col, const QString &text);
|
||||
void updateView();
|
||||
signals:
|
||||
void init_database();
|
||||
};
|
||||
|
||||
#endif
|
||||
99
distname.cpp
99
distname.cpp
@ -1,99 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "distname.h"
|
||||
|
||||
#include <qcombobox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qlayout.h>
|
||||
#include <qvariant.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include "lib/x509name.h"
|
||||
|
||||
DistName::DistName( QWidget* parent, const char* name )
|
||||
: QGroupBox( parent, name )
|
||||
{
|
||||
if ( !name )
|
||||
setName( "DistName" );
|
||||
setTitle( tr( "Distinguished Name" ) );
|
||||
|
||||
DistNameLayout = new QGridLayout( this );
|
||||
DistNameLayout->setSpacing( 6 );
|
||||
DistNameLayout->setMargin( 11 );
|
||||
}
|
||||
|
||||
void DistName::setX509name(const x509name &n)
|
||||
{
|
||||
QLabel *lb;
|
||||
QLineEdit *le;
|
||||
QStringList sl;
|
||||
for (int i=0; i<n.entryCount(); i++) {
|
||||
lb = new QLabel( this );
|
||||
le = new QLineEdit( this );
|
||||
sl = n.entryList(i);
|
||||
lb->setText(sl[0]);
|
||||
if (lb->text().isEmpty())
|
||||
lb->setText(sl[1]);
|
||||
le->setText(sl[2]);
|
||||
DistNameLayout->addWidget( lb, i, 0 );
|
||||
DistNameLayout->addWidget( le, i, 1 );
|
||||
}
|
||||
//DistNameLayout->invalidate();
|
||||
|
||||
}
|
||||
|
||||
DistName::~DistName()
|
||||
{
|
||||
// no need to delete child widgets, Qt does it all for us
|
||||
}
|
||||
|
||||
80
distname.h
80
distname.h
@ -1,80 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DISTNAME_H
|
||||
#define DISTNAME_H
|
||||
|
||||
#include <qvariant.h>
|
||||
#include <qgroupbox.h>
|
||||
|
||||
class QGridLayout;
|
||||
class x509name;
|
||||
class QLabel;
|
||||
class QComboBox;
|
||||
class QLineEdit;
|
||||
|
||||
class DistName : public QGroupBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DistName( QWidget* parent = 0, const char* name = 0);
|
||||
~DistName();
|
||||
void setX509name(const x509name &n);
|
||||
|
||||
protected:
|
||||
QGridLayout* DistNameLayout;
|
||||
QLabel *Label1, *Label2;
|
||||
QComboBox *nbDay, *nbMon, *naMon, *naDay;
|
||||
QLineEdit *nbYear, *naYear;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
88
main.cpp
88
main.cpp
@ -1,88 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <qapplication.h>
|
||||
#include <qtranslator.h>
|
||||
#include <qtextcodec.h>
|
||||
#include "widgets/MainWindow.h"
|
||||
|
||||
|
||||
int main( int argc, char *argv[] )
|
||||
{
|
||||
int ret = 0;
|
||||
QApplication a( argc, argv );
|
||||
MainWindow *mw = new MainWindow( NULL, "Main Widget");
|
||||
a.setMainWidget( mw );
|
||||
// translation file for Qt
|
||||
QTranslator qtTr( 0 );
|
||||
qtTr.load( QString( "qt_" ) + QTextCodec::locale(), "." );
|
||||
a.installTranslator( &qtTr );
|
||||
//translation file for application strings
|
||||
QTranslator xcaTr( 0 );
|
||||
#ifdef WIN32
|
||||
xcaTr.load( QString( "xca_" ) + QTextCodec::locale(), "." );
|
||||
a.installTranslator( &xcaTr );
|
||||
#else
|
||||
xcaTr.load( QString( "xca_" ) + QTextCodec::locale(), PREFIX );
|
||||
a.installTranslator( &xcaTr );
|
||||
#endif
|
||||
CERR("PKI Counter:" << pki_base::get_pki_counter());
|
||||
if (mw->exitApp == 0) {
|
||||
mw->show();
|
||||
ret = a.exec();
|
||||
}
|
||||
MARK
|
||||
delete mw;
|
||||
MARK
|
||||
clog << "PKI Counter: " << pki_base::get_pki_counter() << endl;
|
||||
clog << "The PKI counter must be 0, if not contact me." << endl;
|
||||
return ret;
|
||||
}
|
||||
@ -11,8 +11,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>544</width>
|
||||
<height>298</height>
|
||||
<width>550</width>
|
||||
<height>369</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
@ -744,11 +744,42 @@
|
||||
</property>
|
||||
</spacer>
|
||||
<widget>
|
||||
<class>DistName</class>
|
||||
<class>QGroupBox</class>
|
||||
<property stdset="1">
|
||||
<name>name</name>
|
||||
<cstring>subject</cstring>
|
||||
<cstring>GroupBox2</cstring>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
<name>title</name>
|
||||
<string>Subject</string>
|
||||
</property>
|
||||
<property>
|
||||
<name>layoutMargin</name>
|
||||
</property>
|
||||
<vbox>
|
||||
<property stdset="1">
|
||||
<name>margin</name>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
<name>spacing</name>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget>
|
||||
<class>DistName</class>
|
||||
<property stdset="1">
|
||||
<name>name</name>
|
||||
<cstring>subject</cstring>
|
||||
</property>
|
||||
<property stdset="1">
|
||||
<name>sizePolicy</name>
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>7</vsizetype>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property>
|
||||
@ -852,7 +883,7 @@
|
||||
<images>
|
||||
<image>
|
||||
<name>image0</name>
|
||||
<data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
|
||||
<data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753</data>
|
||||
</image>
|
||||
</images>
|
||||
<connections>
|
||||
|
||||
149
validity.cpp
149
validity.cpp
@ -1,149 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "validity.h"
|
||||
|
||||
#include <qcombobox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qlayout.h>
|
||||
#include <qvariant.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include "lib/asn1time.h"
|
||||
|
||||
Validity::Validity( QWidget* parent, const char* name )
|
||||
: QGroupBox( parent, name )
|
||||
{
|
||||
QStringList months, days;
|
||||
months << tr("Jan") << tr("Feb") << tr("Mar") << tr("Apr")
|
||||
<< tr("Mai") << tr("Jun") << tr("Jul") << tr("Aug")
|
||||
<< tr("Sep") << tr("Okt") << tr("Nov") << tr("Dez");
|
||||
for (int i=1; i<32; i++)
|
||||
days += QString::number(i);
|
||||
|
||||
if ( !name )
|
||||
setName( "Validity" );
|
||||
setTitle( tr( "Validity" ) );
|
||||
ValidityLayout = new QGridLayout( this );
|
||||
ValidityLayout->setSpacing( 6 );
|
||||
ValidityLayout->setMargin( 11 );
|
||||
|
||||
Label1 = new QLabel( this, "Label1" );
|
||||
Label1->setText( tr( "not Before" ) );
|
||||
|
||||
Label2 = new QLabel( this, "Label2" );
|
||||
Label2->setText( tr( "not After" ) );
|
||||
|
||||
nbDay = new QComboBox( FALSE, this, "nbDay" );
|
||||
nbMon = new QComboBox( FALSE, this, "nbMon" );
|
||||
nbYear = new QLineEdit( this, "nbYear" );
|
||||
|
||||
naDay = new QComboBox( FALSE, this, "naDay" );
|
||||
naMon = new QComboBox( FALSE, this, "naMon" );
|
||||
naYear = new QLineEdit( this, "naYear" );
|
||||
|
||||
ValidityLayout->addWidget( Label1, 0, 0 );
|
||||
ValidityLayout->addWidget( nbDay, 0, 1 );
|
||||
ValidityLayout->addWidget( nbMon, 0, 2 );
|
||||
ValidityLayout->addWidget( nbYear, 0, 3 );
|
||||
|
||||
ValidityLayout->addWidget( Label2, 1, 0 );
|
||||
ValidityLayout->addWidget( naDay, 1, 1 );
|
||||
ValidityLayout->addWidget( naMon, 1, 2 );
|
||||
ValidityLayout->addWidget( naYear, 1, 3 );
|
||||
|
||||
|
||||
nbMon->insertStringList(months);
|
||||
naMon->insertStringList(months);
|
||||
nbDay->insertStringList(days);
|
||||
naDay->insertStringList(days);
|
||||
}
|
||||
|
||||
Validity::~Validity()
|
||||
{
|
||||
// no need to delete child widgets, Qt does it all for us
|
||||
}
|
||||
|
||||
a1time Validity::getNotBefore() const
|
||||
{
|
||||
a1time date;
|
||||
date.set(nbYear->text().toInt(), nbMon->currentItem() + 1,
|
||||
nbDay->currentItem() +1, 0, 0, 0);
|
||||
return date;
|
||||
}
|
||||
|
||||
a1time Validity::getNotAfter() const
|
||||
{
|
||||
a1time date;
|
||||
date.set(naYear->text().toInt(), naMon->currentItem() + 1,
|
||||
naDay->currentItem() +1, 0, 0, 0);
|
||||
return date;
|
||||
}
|
||||
|
||||
void Validity::setNotBefore(const a1time &a)
|
||||
{
|
||||
int y, m, d, g;
|
||||
a.ymdg(&y,&m,&d,&g);
|
||||
nbYear->setText(QString::number(y));
|
||||
nbMon->setCurrentItem(m-1);
|
||||
nbDay->setCurrentItem(d-1);
|
||||
}
|
||||
|
||||
void Validity::setNotAfter(const a1time &a)
|
||||
{
|
||||
int y, m, d, g;
|
||||
a.ymdg(&y,&m,&d,&g);
|
||||
naYear->setText(QString::number(y));
|
||||
naMon->setCurrentItem(m-1);
|
||||
naDay->setCurrentItem(d-1);
|
||||
}
|
||||
|
||||
83
validity.h
83
validity.h
@ -1,83 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef VALIDITY_H
|
||||
#define VALIDITY_H
|
||||
|
||||
#include <qvariant.h>
|
||||
#include <qgroupbox.h>
|
||||
|
||||
class QGridLayout;
|
||||
class a1time;
|
||||
class QLabel;
|
||||
class QComboBox;
|
||||
class QLineEdit;
|
||||
|
||||
class Validity : public QGroupBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Validity( QWidget* parent = 0, const char* name = 0);
|
||||
~Validity();
|
||||
a1time getNotBefore() const;
|
||||
a1time getNotAfter() const;
|
||||
void setNotBefore(const a1time &t);
|
||||
void setNotAfter(const a1time &t);
|
||||
|
||||
protected:
|
||||
QGridLayout* ValidityLayout;
|
||||
QLabel *Label1, *Label2;
|
||||
QComboBox *nbDay, *nbMon, *naMon, *naDay;
|
||||
QLineEdit *nbYear, *naYear;
|
||||
|
||||
};
|
||||
|
||||
#endif // VALIDITY_H
|
||||
156
widgets/CertDetail.cpp
Normal file
156
widgets/CertDetail.cpp
Normal file
@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Christian Hohnstaedt.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* - Neither the name of the author nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* This program links to software with different licenses from:
|
||||
*
|
||||
* http://www.openssl.org which includes cryptographic software
|
||||
* written by Eric Young (eay@cryptsoft.com)"
|
||||
*
|
||||
* http://www.sleepycat.com
|
||||
*
|
||||
* http://www.trolltech.com
|
||||
*
|
||||
*
|
||||
*
|
||||
* http://www.hohnstaedt.de/xca
|
||||
* email: christian@hohnstaedt.de
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "CertDetail.h"
|
||||
#include "MainWindow.h"
|
||||
#include <qlabel.h>
|
||||
#include <qtextview.h>
|
||||
#include <qlistview.h>
|
||||
|
||||
CertDetail::CertDetail(QWidget *parent, const char *name)
|
||||
:CertDetail_UI(parent,name,true,0)
|
||||
{
|
||||
setCaption(tr(XCA_TITLE));
|
||||
image->setPixmap(*MainWindow::revImg);
|
||||
}
|
||||
|
||||
CertDetail::setCrt(pki_x509 *cert)
|
||||
{
|
||||
descr->setText(cert->getIntName());
|
||||
|
||||
// examine the key
|
||||
pki_key *key= cert->getRefKey();
|
||||
if (key && key->isPrivKey()) {
|
||||
privKey->setText(key->getIntName());
|
||||
privKey->setDisabled(false);
|
||||
}
|
||||
|
||||
// examine the signature
|
||||
if ( cert->getSigner() == NULL) {
|
||||
verify->setText(tr("SIGNER UNKNOWN"));
|
||||
}
|
||||
else if ( cert == cert->getSigner()) {
|
||||
verify->setText(tr("SELF SIGNED"));
|
||||
}
|
||||
|
||||
else {
|
||||
verify->setText(cert->getSigner()->getIntName());
|
||||
}
|
||||
|
||||
// check trust state
|
||||
if (cert->getEffTrust() == 0) {
|
||||
verify->setDisabled(true);
|
||||
}
|
||||
CERR( cert->getEffTrust() );
|
||||
|
||||
// the serial
|
||||
serialNr->setText(cert->getSerial().toHex());
|
||||
|
||||
// details of subject
|
||||
x509name subj = cert->getSubject();
|
||||
QString land = subj.getEntryByNid(NID_countryName);
|
||||
QString land1 = subj.getEntryByNid(NID_stateOrProvinceName);
|
||||
if (land != "" && land1 != "")
|
||||
land += " / " +land1;
|
||||
else
|
||||
land+=land1;
|
||||
|
||||
dlg->dnCN->setText(subj.getEntryByNid(NID_commonName));
|
||||
dlg->dnC->setText(land);
|
||||
dlg->dnL->setText(subj.getEntryByNid(NID_localityName));
|
||||
dlg->dnO->setText(subj.getEntryByNid(NID_organizationName));
|
||||
dlg->dnOU->setText(subj.getEntryByNid(NID_organizationalUnitName));
|
||||
dlg->dnEmail->setText(subj.getEntryByNid(NID_pkcs9_emailAddress));
|
||||
|
||||
// same for issuer....
|
||||
x509name iss = cert->getIssuer();
|
||||
land = iss.getEntryByNid(NID_countryName);
|
||||
land1 = iss.getEntryByNid(NID_stateOrProvinceName);
|
||||
if (land != "" && land1 != "")
|
||||
land += " / " +land1;
|
||||
else
|
||||
land+=land1;
|
||||
|
||||
dlg->dnCN_2->setText(iss.getEntryByNid(NID_commonName) );
|
||||
dlg->dnC_2->setText(land);
|
||||
dlg->dnL_2->setText(iss.getEntryByNid(NID_localityName));
|
||||
dlg->dnO_2->setText(iss.getEntryByNid(NID_organizationName));
|
||||
dlg->dnOU_2->setText(iss.getEntryByNid(NID_organizationalUnitName));
|
||||
dlg->dnEmail_2->setText(iss.getEntryByNid(NID_pkcs9_emailAddress));
|
||||
dlg->notBefore->setText(cert->getNotBefore().toPretty());
|
||||
dlg->notAfter->setText(cert->getNotAfter().toPretty());
|
||||
MARK
|
||||
|
||||
// validation of the Date
|
||||
if (cert->checkDate() != 0) {
|
||||
dateValid->setText(tr("Not valid"));
|
||||
dateValid->setDisabled(true);
|
||||
}
|
||||
if (cert->isRevoked()) {
|
||||
dateValid->setText(tr("Revoked: ") +
|
||||
cert->getRevoked().toPretty());
|
||||
dateValid->setDisabled(true);
|
||||
|
||||
}
|
||||
// the fingerprints
|
||||
fpMD5->setText(cert->fingerprint(EVP_md5()));
|
||||
fpSHA1->setText(cert->fingerprint(EVP_sha1()));
|
||||
|
||||
// V3 extensions
|
||||
dlg->v3Extensions->setText(cert->printV3ext());
|
||||
|
||||
void CertDetail::setImport()
|
||||
{
|
||||
// rename the buttons in case of import
|
||||
but_ok->setText(tr("Import"));
|
||||
but_cancel->setText(tr("Discard"));
|
||||
}
|
||||
|
||||
@ -48,29 +48,19 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CERTDETAIL_H
|
||||
#define CERTDETAIL_H
|
||||
|
||||
#include "ui/ExportKey.h"
|
||||
#include <qfiledialog.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qlineedit.h>
|
||||
#include "lib/pki_base.h"
|
||||
#include <iostream>
|
||||
#include "ui/CertDetail.h"
|
||||
#include "lib/pki_x509.h"
|
||||
|
||||
#ifndef EXPORTKEY_H
|
||||
#define EXPORTKEY_H
|
||||
|
||||
|
||||
class ExportKey: public ExportKey_UI
|
||||
class CertDetail: public CertDetail_UI
|
||||
{
|
||||
Q_OBJECT
|
||||
bool onlyPub;
|
||||
|
||||
public:
|
||||
ExportKey(QString fname, bool onlypub, QString dpath,
|
||||
QWidget *parent = 0, const char *name = 0);
|
||||
QString dirPath;
|
||||
public slots:
|
||||
virtual void chooseFile();
|
||||
virtual void canEncrypt();
|
||||
CertDetail( QWidget *parent = 0, const char *name = 0);
|
||||
void setCert(pki_crl *crl);
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -62,20 +62,13 @@
|
||||
#include <iostream>
|
||||
|
||||
DistName::DistName( QWidget* parent, const char* name )
|
||||
: QGroupBox( parent, name )
|
||||
: QWidget( parent, name )
|
||||
{
|
||||
if ( !name )
|
||||
setName( "DistName" );
|
||||
setTitle( tr( "Distinguished Name" ) );
|
||||
|
||||
setFrameShape( QGroupBox::Box );
|
||||
setFrameShadow( QGroupBox::Sunken );
|
||||
|
||||
setColumnLayout(0, Qt::Vertical );
|
||||
layout()->setSpacing( 0 );
|
||||
layout()->setMargin( 0 );
|
||||
|
||||
DistNameLayout = new QGridLayout( this );
|
||||
DistNameLayout = new QGridLayout(this);
|
||||
DistNameLayout->setAlignment( Qt::AlignTop );
|
||||
DistNameLayout->setSpacing( 6 );
|
||||
DistNameLayout->setMargin( 11 );
|
||||
}
|
||||
@ -85,7 +78,6 @@ void DistName::setX509name(const x509name &n)
|
||||
QLabel *lb;
|
||||
QLineEdit *le;
|
||||
QStringList sl;
|
||||
|
||||
for (int i=0; i<n.entryCount(); i++) {
|
||||
lb = new QLabel( this );
|
||||
le = new QLineEdit( this );
|
||||
@ -98,7 +90,6 @@ void DistName::setX509name(const x509name &n)
|
||||
DistNameLayout->addWidget( lb, i, 0 );
|
||||
DistNameLayout->addWidget( le, i, 1 );
|
||||
}
|
||||
DistNameLayout->invalidate();
|
||||
}
|
||||
|
||||
DistName::~DistName()
|
||||
|
||||
@ -61,7 +61,7 @@ class QComboBox;
|
||||
class QLineEdit;
|
||||
class myGridlayout;
|
||||
|
||||
class DistName : public QGroupBox
|
||||
class DistName : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user