Wizard changed

This commit is contained in:
chris 2002-10-07 21:29:55 +00:00
parent 3661589517
commit ecdecbc8a9
5 changed files with 964 additions and 697 deletions

View File

@ -82,7 +82,7 @@ void MainWindow::newCert(pki_temp *templ)
// Step 1 - Subject and key
if (dlg->fromDataRB->isChecked()) {
if (!dlg->fromReqCB->isChecked()) {
clientkey = (pki_key *)keys->getSelectedPKI(dlg->keyList->currentText().latin1());
if (opensslError(clientkey)) goto err;
string cn = dlg->commonName->text().latin1();
@ -230,7 +230,6 @@ void MainWindow::newCert(pki_temp *templ)
addStr(certTypeStr, certTypeList[i]);
}
}
CERR << "IssAltName:" << issAltName<< endl;
cert->addV3ext(NID_netscape_cert_type, certTypeStr);
cert->addV3ext(NID_netscape_base_url, dlg->nsBaseUrl->text().latin1());
cert->addV3ext(NID_netscape_revocation_url, dlg->nsRevocationUrl->text().latin1());
@ -245,8 +244,10 @@ void MainWindow::newCert(pki_temp *templ)
if (opensslError(cert)) goto err;
CERR << "SIGNED" <<endl;
insertCert(cert);
if (tempReq) delete(req);
CERR <<"inserted"<<endl;
if (tempReq && req) delete(req);
delete (dlg);
CERR << "Dialog deleted" <<endl;
return;
err:
if (cert) delete(cert);
@ -492,6 +493,7 @@ void MainWindow::insertCert(pki_x509 *cert)
delete(cert);
return;
}
CERR << "insertCert: inserting" <<endl;
certs->insertPKI(cert);
}
@ -742,7 +744,7 @@ void MainWindow::genCrl()
}
certs->assignClients(crl);
crl->addV3ext(NID_authority_key_identifier,"keyid,issuer");
crl->addV3ext(NID_issuer_alt_name,"issuer:copy");
//crl->addV3ext(NID_issuer_alt_name,"issuer:copy");
crl->sign(cert->getKey());
if (!opensslError(crl)) {
crl->writeCrl(s.latin1());

View File

@ -66,6 +66,9 @@ NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *re
bigImg1->setPixmap(*image);
bigImg2->setPixmap(*image);
bigImg3->setPixmap(*image);
bigImg4->setPixmap(*image);
bigImg5->setPixmap(*image);
bigImg6->setPixmap(*image);
nsImg->setPixmap(*ns);
}
#ifdef qt3
@ -96,14 +99,13 @@ NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *re
else {
keyList->setEnabled(false);
genKeyBUT->setEnabled(false);
setAppropriate(page3, false);
}
// any PKCS#10 requests to be used ?
if (reqs) {
strings = reqs->getDesc();
if (strings.isEmpty()) {
fromReqRB->setDisabled(true);
fromReqCB->setDisabled(true);
}
else {
reqList->insertStringList(strings);
@ -111,7 +113,7 @@ NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *re
}
else {
reqList->setEnabled(false);
fromReqRB->setEnabled(false);
fromReqCB->setEnabled(false);
}
// How about signing certificates ?
@ -126,9 +128,10 @@ NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *re
// suggested from: Andrey Brindeew <abr@abr.pp.ru>
possibleSigner=(pki_x509 *)certs->getSelectedPKI();
if (possibleSigner && possibleSigner->canSign()) {
//const QString name = possibleSigner->getDescription().c_str();
//certList->setCurrentText(name);
QString name = possibleSigner->getDescription().c_str();
certList->setCurrentText(name);
foreignSignRB->setChecked(true);
// certList->setEnabled(true);
}
}
}
@ -141,7 +144,7 @@ NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *re
if (temps) {
strings = temps->getDesc();
if (strings.isEmpty()) {
setAppropriate(page1,false);
templateBox->setEnabled(false);
}
else {
strings.prepend(tr("Empty Template"));
@ -149,22 +152,21 @@ NewX509::NewX509(QWidget *parent , const char *name, db_key *key, db_x509req *re
}
}
else {
setAppropriate(page1,false);
templateBox->setEnabled(false);
}
fromDataRB->setChecked(true);
setFinishEnabled(page7,true);
setNextEnabled(page2,false);
}
void NewX509::setRequest()
{
setAppropriate(page3, false);
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.... (needs more prosa)");
endText=tr("You are done with entering all parameters for generating a Certificate signing request..... (needs more prosa)");
tText=tr("Certificate request");
@ -174,7 +176,6 @@ void NewX509::setRequest()
void NewX509::setTemp(pki_temp *temp)
{
setAppropriate(page1, false);
setAppropriate(page3, false);
finishButton()->setEnabled(true);
startText=tr("Welcome to the settings for Templates.... (needs more prosa)");
endText=tr("You are done with entering all parameters for generating a Template..... (needs more prosa)");
@ -203,9 +204,8 @@ void NewX509::setup()
setTitle(page0, tText + " Wizard");
setTitle(page1, tText + " template selection");
setTitle(page2, tText + " personal settings");
setTitle(page3, tText + " signing selection");
setTitle(page4, tText + " X.509 v3 Extensions");
setTitle(page5, tText + " keyusage setup");
setTitle(page5, tText + " key usage setup");
setTitle(page6, tText + " Netscape extensions");
setTitle(page7, tText + " Wizard finished");
}
@ -213,7 +213,7 @@ void NewX509::setup()
void NewX509::defineTemplate(pki_temp *temp)
{
setAppropriate(page1,false);
fixtemp = temp;
//fixtemp = temp;
fromTemplate(temp);
}
@ -312,11 +312,23 @@ void NewX509::toTemplate(pki_temp *temp)
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" << endl;
if ((description->text() != "" || fromReqRB->isChecked()) &&
if ((description->text() != "" || fromReqCB->isChecked()) &&
(keyList->count() > 0 || !keyList->isEnabled())){
setNextEnabled(page2,true);
}
@ -329,40 +341,51 @@ void NewX509::showPage(QWidget *page)
{
if (page == page0) {
templateChanged();
signerChanged();
switchExtended();
toggleFromRequest();
}
else if ( page == page2 ) {
dataChangeP2();
description->setFocus();
}
else if ( page == page3 ) {
if (!selfSignRB->isChecked() && !foreignSignRB->isChecked()) {
if (fromDataRB->isChecked()) {
selfSignRB->setChecked(true);
serialNr->setText("00");
serialNr->setFocus();
}
else {
foreignSignRB->setChecked(true);
foreignSignRB->setFocus();
}
}
else {
if (!foreignSignRB->isEnabled()) {
selfSignRB->setChecked(true);
serialNr->setText("00");
serialNr->setFocus();
}
}
QWizard::showPage(page);
if ( page == page2 ) {
description->setFocus();
}
else if (page == page4) {
basicCA->setFocus();
}
QWizard::showPage(page);
}
void NewX509::signerChanged()
{
CERR << "signer Changed" <<endl;
// int i=0, sel=0;
if (!certs) return;
QString name = certList->currentText();
CERR << "Certificate: " << name.latin1() << endl;
if (name.isEmpty()) return;
pki_x509 *cert = (pki_x509 *)certs->getSelectedPKI(name.latin1());
if (!cert) return;
QString templ = cert->getTemplate().c_str();
CERR << "set Template: " << templ.latin1() << endl;
tempList->setCurrentText(templ);
templateChanged();
/*
QStringList templates = tempList->list();
for (i=0; i<templates.count(); i++) {
if (templates[i] == templ) {
sel = i;
}
}
if (sel >0) {
tempList->setSelected(sel);
}*/
}
void NewX509::templateChanged()
{
if (!appropriate(page1)) return;
@ -379,7 +402,7 @@ void NewX509::switchExtended()
{
if ( !appropriate(page1) ) return;
CERR << "SWITCH Extended" <<endl;
if (changeDefault->isChecked()) {
if (changeDefault->isChecked() || !templateBox->isEnabled()) {
setAppropriate(page4, true);
setAppropriate(page5, true);
setAppropriate(page6, true);
@ -391,18 +414,6 @@ void NewX509::switchExtended()
}
}
void NewX509::setDisabled(int state)
{
if (state == 2) {
inputFrame->setDisabled(false);
reqList->setDisabled(true);
}
else if (state == 0) {
inputFrame->setDisabled(true);
reqList->setDisabled(false);
}
}
void NewX509::newKey()
{
emit genKey();

View File

@ -67,6 +67,7 @@
#include <qpixmap.h>
#include <qvalidator.h>
#include <qregexp.h>
#include <qbuttongroup.h>
#ifndef NEWX509_H
#define NEWX509_H
@ -97,12 +98,13 @@ class NewX509: public NewX509_UI
void int2lb(QListBox *lb, int x);
public slots:
void setDisabled(int state);
void toggleFromRequest();
void newKey();
void dataChangeP2();
void newKeyDone(QString name);
void switchExtended();
void templateChanged();
void signerChanged();
signals:
void genKey();

File diff suppressed because it is too large Load Diff

View File

@ -95,6 +95,7 @@ pki_x509::pki_x509(string d,pki_key *clientKey, pki_x509req *req, pki_x509 *sign
caSerial=0;
caTemplate="";
crlDays=30;
lastCrl= NULL;
}
pki_x509::pki_x509(X509 *c) : pki_base()
@ -183,6 +184,9 @@ pki_x509::~pki_x509()
if (revoked) {
ASN1_TIME_free(revoked);
}
if (lastCrl) {
ASN1_TIME_free(lastCrl);
}
}
@ -289,10 +293,14 @@ bool pki_x509::fromData(unsigned char *p, int size)
unsigned char *pki_x509::toData(int *size)
{
#define PKI_DB_VERSION (int)3
CERR <<"cert toData" << endl;
unsigned char *p, *p1;
int sCert = i2d_X509(cert, NULL);
CERR << "A" <<endl;
int sRev = (revoked ? i2d_ASN1_TIME(revoked, NULL) : 0);
CERR << "B" <<endl;
int sLastCrl = (lastCrl ? i2d_ASN1_TIME(lastCrl, NULL) : 0);
CERR << "C" <<endl;
// calculate the needed size
*size = caTemplate.length() + 1 + sCert + sRev + sLastCrl + (7 * sizeof(int));
openssl_error();