diff --git a/img/Makefile b/img/Makefile index 98b5270e..9c38025b 100644 --- a/img/Makefile +++ b/img/Makefile @@ -19,7 +19,7 @@ imgres.cpp: imgres.rcc @$(PRINT) " RCC [$(BASENAME)] $@" $(RCC) -o $@ $< -imgres.rcc: bigcert.png bigcrl.png bigcsr.png bigkey.png bigtemp.png crl.png halfkey.png invalidcertkey.png invalidcert.png key.png netscape.png reqkey.png req.png spki.png template.png validcertkey.png validcert.png scard.png +imgres.rcc: bigcert.png bigcrl.png bigcsr.png bigkey.png bigtemp.png crl.png halfkey.png invalidcertkey.png invalidcert.png key.png netscape.png reqkey.png req.png template.png validcertkey.png validcert.png scard.png w32res.o: w32res.rc key.ico xca.ico xdb.ico @$(PRINT) " WINDRES $@" diff --git a/img/imgres.rcc b/img/imgres.rcc index 1e5cbaf5..9f28c07f 100644 --- a/img/imgres.rcc +++ b/img/imgres.rcc @@ -16,7 +16,6 @@ netscape.png reqkey.png req.png - spki.png template.png validcertkey.png validcert.png diff --git a/img/spki.png b/img/spki.png deleted file mode 100644 index a2d297d7..00000000 Binary files a/img/spki.png and /dev/null differ diff --git a/lib/load_obj.cpp b/lib/load_obj.cpp index 109efe74..9b12b028 100644 --- a/lib/load_obj.cpp +++ b/lib/load_obj.cpp @@ -28,6 +28,7 @@ pki_base *load_base::loadItem(QString s) return NULL; try { pki->fload(s); + openssl_error(); } catch (errorEx &err){ delete pki; @@ -64,8 +65,7 @@ pki_base * load_key::newItem() load_req::load_req() :load_base() { - filter = QObject::tr("PKCS#10 CSR ( *.pem *.der *.csr );; " - "Netscape Request ( *.spkac *.spc );;") + filter; + filter = QObject::tr("PKCS#10 CSR ( *.pem *.der *.csr );; ") + filter; caption = QObject::tr("Import Request"); } diff --git a/lib/pki_x509req.cpp b/lib/pki_x509req.cpp index 1978b86a..27e27d12 100644 --- a/lib/pki_x509req.cpp +++ b/lib/pki_x509req.cpp @@ -18,7 +18,7 @@ #include "openssl_compat.h" -QPixmap *pki_x509req::icon[4] = { NULL, NULL, NULL, NULL }; +QPixmap *pki_x509req::icon[3] = { NULL, NULL, NULL }; pki_x509req::pki_x509req(const QString name) : pki_x509super(name) @@ -27,7 +27,6 @@ pki_x509req::pki_x509req(const QString name) class_name = "pki_x509req"; request = X509_REQ_new(); pki_openssl_error(); - spki = NULL; dataVersion=1; pkiType=x509_req; done = false; @@ -37,9 +36,6 @@ pki_x509req::~pki_x509req() { if (request) X509_REQ_free(request); - if (spki) - NETSCAPE_SPKI_free(spki); - pki_openssl_error(); } void pki_x509req::createReq(pki_key *key, const x509name &dn, const EVP_MD *md, extList el) @@ -89,7 +85,7 @@ QString pki_x509req::getMsg(msg_type msg) * %2 will be replaced by the internal name of the request */ - QString type = isSpki() ? "SPKAC" : "PKCS#10"; + QString type = "PKCS#10"; switch (msg) { case msg_import: return tr("Successfully imported the %1 certificate request '%2'").arg(type); @@ -127,11 +123,6 @@ void pki_x509req::fload(const QString fname) _req = d2i_X509_REQ_fp(fp, NULL); } fclose(fp); - // SPKAC - if (!_req) { - pki_ign_openssl_error(); - ret = load_spkac(fname); - } if (ret || pki_ign_openssl_error()) { if (_req) X509_REQ_free(_req); @@ -161,26 +152,11 @@ void pki_x509req::d2i(QByteArray &ba) } } -void pki_x509req::d2i_spki(QByteArray &ba) -{ - NETSCAPE_SPKI *s = (NETSCAPE_SPKI*)d2i_bytearray( - D2I_VOID(d2i_NETSCAPE_SPKI), ba); - if (s) { - NETSCAPE_SPKI_free(spki); - spki = s; - } -} - QByteArray pki_x509req::i2d() { return i2d_bytearray(I2D_VOID(i2d_X509_REQ), request); } -QByteArray pki_x509req::i2d_spki() -{ - return i2d_bytearray(I2D_VOID(i2d_NETSCAPE_SPKI), spki); -} - void pki_x509req::fromData(const unsigned char *p, db_header_t *head ) { int size; @@ -210,15 +186,6 @@ x509name pki_x509req::getSubject() const int pki_x509req::sigAlg() { - if (spki) { -#if OPENSSL_VERSION_NUMBER >= 0x10100000L - ASN1_OBJECT *o = NULL; - X509_PUBKEY_get0_param(&o, 0, 0, 0, spki->spkac->pubkey); - return OBJ_obj2nid(o); -#else - return OBJ_obj2nid(spki->spkac->pubkey->algor->algorithm); -#endif - } return X509_REQ_get_signature_nid(request); } @@ -227,22 +194,13 @@ void pki_x509req::setSubject(const x509name &n) X509_REQ_set_subject_name(request, n.get()); } -bool pki_x509req::isSpki() const -{ - return spki != NULL; -} - QByteArray pki_x509req::toData() { - QByteArray ba; - - ba += i2d(); - if (spki) { - ba += i2d_spki(); - } + QByteArray ba = i2d(); pki_openssl_error(); return ba; } + void pki_x509req::writeDefault(const QString fname) { writeReq(fname + QDir::separator() + getIntName() + ".csr", true); @@ -276,13 +234,7 @@ BIO *pki_x509req::pem(BIO *b, int format) int pki_x509req::verify() { EVP_PKEY *pkey = X509_REQ_get_pubkey(request); - bool x; - - if (spki) { - x = NETSCAPE_SPKI_verify(spki, pkey) > 0; - } else { - x = X509_REQ_verify(request,pkey) > 0; - } + bool x = X509_REQ_verify(request,pkey) > 0; pki_ign_openssl_error(); EVP_PKEY_free(pkey); return x; @@ -309,85 +261,6 @@ extList pki_x509req::getV3ext() return el; } -/*! - Load a spkac FILE into this request structure. - The file format follows the conventions understood by the 'openssl ca' - command. (see: 'man ca') -*/ -int pki_x509req::load_spkac(const QString filename) -{ - QFile file; - x509name subject; - EVP_PKEY *pktmp = NULL; - pki_ign_openssl_error(); - - file.setFileName(filename); - if (!file.open(QIODevice::ReadOnly)) - return 1; - - while (!file.atEnd()) { - int idx, nid; - QByteArray line = file.readLine(); - if (line.size() == 0) - continue; - idx = line.indexOf('='); - if (idx == -1) - goto err; - QString type = line.left(idx).trimmed(); - line = line.mid(idx+1).trimmed(); - - idx = type.lastIndexOf(QRegExp("[:,\\.]")); - if (idx != -1) - type = type.mid(idx+1); - - if ((nid = OBJ_txt2nid(CCHAR(type))) == NID_undef) { - if (type != "SPKAC") - goto err; - pki_ign_openssl_error(); - spki = NETSCAPE_SPKI_b64_decode(line, line.size()); - if (!spki) - goto err; - /* - Now extract the key from the SPKI structure and - check the signature. - */ - pktmp = NETSCAPE_SPKI_get_pubkey(spki); - if (pktmp == NULL) - goto err; - - if (NETSCAPE_SPKI_verify(spki, pktmp) != 1) - goto err; - } else { - // gather all values in the x509name subject. - subject.addEntryByNid(nid, - filename2QString(line.constData())); - } - } - if (!pktmp) - goto err; - setSubject(subject); - X509_REQ_set_pubkey(request, pktmp); - EVP_PKEY_free(pktmp); - return 0; -err: - if (pktmp) - EVP_PKEY_free(pktmp); - if (spki) { - NETSCAPE_SPKI_free(spki); - spki = NULL; - } - return 1; -} - -ASN1_IA5STRING *pki_x509req::spki_challange() -{ - if (spki) { - if (spki->spkac->challenge->length >0) - return spki->spkac->challenge; - } - return NULL; -} - QString pki_x509req::getAttribute(int nid) { int n; @@ -431,12 +304,10 @@ QVariant pki_x509req::getIcon(dbheader *hd) k = getRefKey(); if (k && k->isPrivKey()) pixnum = 1; - if (spki != NULL) - pixnum = 2; break; case HD_req_signed: if (done) - pixnum = 3; + pixnum = 2; break; } if (pixnum == -1) @@ -461,11 +332,4 @@ void pki_x509req::oldFromData(unsigned char *p, int size) privkey = NULL; d2i(ba); - if (ba.count() > 0) - d2i_spki(ba); - - if (ba.count() > 0) { - my_error(tr("Wrong Size %1").arg(ba.count())); - } } - diff --git a/lib/pki_x509req.h b/lib/pki_x509req.h index b419527c..51870c56 100644 --- a/lib/pki_x509req.h +++ b/lib/pki_x509req.h @@ -21,21 +21,15 @@ class pki_x509; class pki_x509req : public pki_x509super { Q_OBJECT - private: - //loading spkac file and convert it to a request - int load_spkac(const QString filename); - //for checking spkac content-fields - int fix_data(int nid, int *type); protected: X509_REQ *request; - NETSCAPE_SPKI *spki; bool done; int sigAlg(); public: extList getV3ext(); - static QPixmap *icon[4]; + static QPixmap *icon[3]; pki_x509req(QString name = ""); void fromPEM_BIO(BIO *bio, QString name); void fload(const QString fname); @@ -45,7 +39,6 @@ class pki_x509req : public pki_x509super void oldFromData(unsigned char *p, int size); QByteArray toData(); x509name getSubject() const; - bool isSpki() const; void writeReq(const QString fname, bool pem); X509_REQ *getReq() { @@ -60,7 +53,6 @@ class pki_x509req : public pki_x509super extList el); void setSubject(const x509name &n); /* SPKAC special functions */ - ASN1_IA5STRING *spki_challange(); QVariant column_data(dbheader *hd); QVariant getIcon(dbheader *hd); void setDone(bool d = true) @@ -73,9 +65,7 @@ class pki_x509req : public pki_x509super } virtual QString getMsg(msg_type msg); void d2i(QByteArray &ba); - void d2i_spki(QByteArray &ba); QByteArray i2d(); - QByteArray i2d_spki(); BIO *pem(BIO *, int); bool visible(); }; diff --git a/lib/pki_x509super.h b/lib/pki_x509super.h index 142c85b4..179a4046 100644 --- a/lib/pki_x509super.h +++ b/lib/pki_x509super.h @@ -52,10 +52,6 @@ class pki_x509super : public pki_x509name }; virtual QString getSigAlg(); virtual const EVP_MD *getDigest(); - virtual bool isSpki() const - { - return false; - } pki_key *getRefKey() const; void setRefKey(pki_key *ref); void delRefKey(pki_key *ref); diff --git a/widgets/CertDetail.cpp b/widgets/CertDetail.cpp index e3ccc4f0..f31ff32d 100644 --- a/widgets/CertDetail.cpp +++ b/widgets/CertDetail.cpp @@ -167,11 +167,7 @@ void CertDetail::setReq(pki_x509req *req) signature->setText("Failed"); } else { signature->setGreen(); - if (req->isSpki()) { - signature->setText("SPKAC"); - } else { - signature->setText("PKCS#10"); - } + signature->setText("PKCS#10"); } signature->disableToolTip(); trustState->hide(); @@ -222,16 +218,6 @@ void CertDetail::setReq(pki_x509req *req) } ii++; } - ASN1_IA5STRING *chal = req->spki_challange(); - if (chal) { - QLabel *label; - label = new QLabel(this); - label->setText(QString("SPKI Challenge String")); - attrLayout->addWidget(label, 0, 0); - label = labelFromAsn1String(chal); - attrLayout->addWidget(label, 0, 1); - added++; - } if (!added) { tabwidget->removeTab(2); } diff --git a/widgets/MainWindow.cpp b/widgets/MainWindow.cpp index 452f8109..47596024 100644 --- a/widgets/MainWindow.cpp +++ b/widgets/MainWindow.cpp @@ -256,8 +256,7 @@ void MainWindow::init_images() pki_scard::icon[0] = loadImg("scard.png"); pki_x509req::icon[0] = loadImg("req.png"); pki_x509req::icon[1] = loadImg("reqkey.png"); - pki_x509req::icon[2] = loadImg("spki.png"); - pki_x509req::icon[3] = doneIco; + pki_x509req::icon[2] = doneIco; pki_x509::icon[0] = loadImg("validcert.png"); pki_x509::icon[1] = loadImg("validcertkey.png"); pki_x509::icon[2] = loadImg("invalidcert.png"); diff --git a/widgets/X509SuperTreeView.cpp b/widgets/X509SuperTreeView.cpp index 33e82f05..4849646f 100644 --- a/widgets/X509SuperTreeView.cpp +++ b/widgets/X509SuperTreeView.cpp @@ -23,10 +23,8 @@ void X509SuperTreeView::fillContextMenu(QMenu *menu, QMenu *subExport, return; subExport->addAction(tr("OpenSSL config"), this, SLOT(toOpenssl())); - subExport->setEnabled(!x->isSpki()); transform = menu->addMenu(tr("Transform")); - transform->addAction(tr("Template"), this, - SLOT(toTemplate()))->setEnabled(!x->isSpki()); + transform->addAction(tr("Template"), this, SLOT(toTemplate())); transform->addAction(tr("Public key"), this, SLOT(extractPubkey()))->setEnabled(!x->getRefKey()); }