From b131e1d2933cda3efffd79506a21e574bd36d26e Mon Sep 17 00:00:00 2001 From: Christian Hohnstaedt Date: Fri, 14 Nov 2014 19:31:08 +0100 Subject: [PATCH] Consolidate more "established x509 terms" like basic constraints, key usage and netscape-thingies --- lib/db_base.cpp | 19 +++- lib/db_x509super.cpp | 13 ++- lib/headerlist.h | 17 +-- lib/pki_x509super.cpp | 2 +- ui/NewX509.ui | 239 +++++++++++------------------------------- widgets/NewX509.cpp | 32 ++++-- 6 files changed, 113 insertions(+), 209 deletions(-) diff --git a/lib/db_base.cpp b/lib/db_base.cpp index 94dd7145..6fdeb784 100644 --- a/lib/db_base.cpp +++ b/lib/db_base.cpp @@ -651,13 +651,14 @@ void db_base::showHeaderMenu(QContextMenuEvent *e, int sect) void db_base::contextMenu(QContextMenuEvent *e, QMenu *parent, int) { int shown = 0; - tipMenu *menu, *dn, *v3ext, *current; + tipMenu *menu, *dn, *v3ext, *current, *v3ns; QAction *a, *sep; dbheader *hd; menu = new tipMenu(QString(), mainwin); dn = new tipMenu(tr("Subject entries"), mainwin); v3ext = new tipMenu(tr("X509v3 Extensions"), mainwin); + v3ns = new tipMenu(tr("Netscape extensions"), mainwin); menu->addAction(tr("Reset"), this, SLOT(columnResetDefaults())); sep = menu->addSeparator(); foreach(hd, allHeaders) { @@ -668,6 +669,9 @@ void db_base::contextMenu(QContextMenuEvent *e, QMenu *parent, int) case dbheader::hd_v3ext: current = v3ext; break; + case dbheader::hd_v3ext_ns: + current = v3ns; + break; default: current = menu; break; @@ -686,11 +690,18 @@ void db_base::contextMenu(QContextMenuEvent *e, QMenu *parent, int) else delete dn; - if (!v3ext->isEmpty()) + if (!v3ext->isEmpty()) { + if (!v3ns->isEmpty()) { + v3ext->addSeparator(); + v3ext->addMenu(v3ns); + } else { + delete v3ns; + } menu->insertMenu(sep, v3ext); - else + } else { delete v3ext; - + delete v3ns; + } if (parent) { parent->addAction(tr("Paste PEM data"), mainwin, SLOT(pastePem())); diff --git a/lib/db_x509super.cpp b/lib/db_x509super.cpp index b2179253..46513972 100644 --- a/lib/db_x509super.cpp +++ b/lib/db_x509super.cpp @@ -43,6 +43,7 @@ db_x509name::db_x509name(QString db, MainWindow *mw) dn_translations[NID_pkcs9_unstructuredName] = tr("Unstructured name"); dn_translations[NID_pkcs9_challengePassword] = tr("Challenge password"); + dn_translations[NID_basic_constraints] = tr("Basic Constraints"); dn_translations[NID_subject_alt_name] = tr("subject alternative name"); dn_translations[NID_issuer_alt_name] = tr("issuer alternative name"); dn_translations[NID_subject_key_identifier] = tr("Subject key identifier"); @@ -61,13 +62,13 @@ db_x509name::db_x509name(QString db, MainWindow *mw) dn_translations[NID_netscape_comment] = tr("Comment"); } foreach(int nid, *MainWindow::dn_nid) - allHeaders << new dn_dbheader(nid); + allHeaders << new nid_dbheader(nid, dbheader::hd_x509name); } db_x509super::db_x509super(QString db, MainWindow *mw) :db_x509name(db, mw) { - NIDlist v3nid; + NIDlist v3nid, v3ns_nid; v3nid << NID_subject_alt_name << NID_issuer_alt_name << @@ -76,7 +77,8 @@ db_x509super::db_x509super(QString db, MainWindow *mw) NID_key_usage << NID_ext_key_usage << NID_crl_distribution_points << - NID_info_access << + NID_info_access; + v3ns_nid << NID_netscape_cert_type << NID_netscape_base_url << NID_netscape_revocation_url << @@ -90,7 +92,10 @@ db_x509super::db_x509super(QString db, MainWindow *mw) tr("Internal name of the key")); foreach(int nid, v3nid) - allHeaders << new v3e_dbheader(nid); + allHeaders << new nid_dbheader(nid, dbheader::hd_v3ext); + + foreach(int nid, v3ns_nid) + allHeaders << new nid_dbheader(nid, dbheader::hd_v3ext_ns); } void db_x509super::delKey(pki_key *delkey) diff --git a/lib/headerlist.h b/lib/headerlist.h index 4b3ab0b9..f467aa38 100644 --- a/lib/headerlist.h +++ b/lib/headerlist.h @@ -68,6 +68,7 @@ class dbheader hd_default, hd_x509name, hd_v3ext, + hd_v3ext_ns, }; int id; bool show; @@ -164,15 +165,16 @@ class dbheader } }; -class dn_dbheader : public dbheader +class nid_dbheader : public dbheader { private: QString sn; public: - dn_dbheader(int aid) : dbheader(aid, aid == NID_commonName) + nid_dbheader(int aid, enum hdr_type atype) + : dbheader(aid, aid == NID_commonName) { - type = hd_x509name; + type = atype; tooltip = dn_translations[id]; name = OBJ_nid2ln(id); sn = OBJ_nid2sn(id); @@ -190,15 +192,6 @@ class dn_dbheader : public dbheader } }; -class v3e_dbheader : public dn_dbheader -{ - public: - v3e_dbheader(int aid) : dn_dbheader(aid) - { - type = hd_v3ext; - } -}; - class dbheaderList: public QList { public: diff --git a/lib/pki_x509super.cpp b/lib/pki_x509super.cpp index 8e90d9a8..80fce69b 100644 --- a/lib/pki_x509super.cpp +++ b/lib/pki_x509super.cpp @@ -57,7 +57,7 @@ QVariant pki_x509super::column_data(dbheader *hd) return QVariant(""); return QVariant(privkey->getIntName()); } - if (hd->type == dbheader::hd_v3ext) { + if (hd->type == dbheader::hd_v3ext || hd->type == dbheader::hd_v3ext_ns) { extList el = getV3ext(); int idx = el.idxByNid(hd->id); if (idx == -1) diff --git a/ui/NewX509.ui b/ui/NewX509.ui index 37201c49..b4433db1 100644 --- a/ui/NewX509.ui +++ b/ui/NewX509.ui @@ -68,7 +68,7 @@ - 2 + 0 @@ -523,12 +523,6 @@ - - Basic constraints - - - Basic constraints - @@ -775,14 +769,7 @@ - - - subject alternative name - - - subject alternative name - - + @@ -818,14 +805,7 @@ - - - issuer alternative name - - - issuer alternative name - - + @@ -875,14 +855,7 @@ - - - Authority Info Access - - - Authority Info Access - - + @@ -944,14 +917,7 @@ - - - CRL distribution point - - - CRL distribution point - - + @@ -978,12 +944,6 @@ - - Key usage - - - Key usage - 6 @@ -1058,12 +1018,6 @@ - - Extended key usage - - - Extended key usage - 6 @@ -1099,61 +1053,55 @@ Netscape - - - 6 - - - 8 - + - - - 6 - - - 0 - + - - - QAbstractItemView::MultiSelection - - - - SSL Client - - - - - SSL Server - - - - - S/MIME - - - - - Object Signing - - - - - SSL CA - - - - - S/MIME CA - - - - - Object Signing CA - - + + + + + + QAbstractItemView::MultiSelection + + + + SSL Client + + + + + SSL Server + + + + + S/MIME + + + + + Object Signing + + + + + SSL CA + + + + + S/MIME CA + + + + + Object Signing CA + + + + + @@ -1228,37 +1176,16 @@ - - - CA Revocation URL - - - CA Revocation URL - - + - - - Revocation URL - - - Revocation URL - - + - - - SSL server name - - - SSL server name - - + @@ -1267,44 +1194,16 @@ - - - Certificate renewal URL - - - Certificate renewal URL - - + - - - Comment - - - Comment - - + - - - CA policy URL - - - CA policy URL - - + - - - Base URL - - - Base URL - - + @@ -1319,26 +1218,6 @@ - - - - 0 - 0 - 100 - 30 - - - - - - - 0 - 0 - 100 - 30 - - - diff --git a/widgets/NewX509.cpp b/widgets/NewX509.cpp index 91b9ff90..e0eeb5b1 100644 --- a/widgets/NewX509.cpp +++ b/widgets/NewX509.cpp @@ -227,22 +227,38 @@ NewX509::NewX509(QWidget *parent) foreach(int nid, nidLabel.keys()) { QLabel *l = nidLabel[nid]; - l->setText(OBJ_nid2ln(nid)); - l->setToolTip(dn_translations[nid]); + l->setText(translate_dn ? + dn_translations[nid] : OBJ_nid2ln(nid)); + if (l->toolTip().isEmpty()) { + l->setToolTip(translate_dn ? + OBJ_nid2ln(nid) : dn_translations[nid]); + } } + + QMap nidGroupBox; + nidGroupBox[NID_basic_constraints] = bcBox; + nidGroupBox[NID_key_usage] = kuBox; + nidGroupBox[NID_ext_key_usage] = ekuBox; + nidGroupBox[NID_netscape_cert_type] = nsCertTypeBox; + + foreach(int nid, nidGroupBox.keys()) { + QGroupBox *g = nidGroupBox[nid]; + g->setTitle(translate_dn ? + dn_translations[nid] : OBJ_nid2ln(nid)); + if (g->toolTip().isEmpty()) { + g->setToolTip(translate_dn ? + OBJ_nid2ln(nid) : dn_translations[nid]); + } + } + if (translate_dn) { QList gb; - gb << distNameBox << bcBox << keyIdentBox << kuBox << ekuBox; + gb << distNameBox << keyIdentBox; foreach(QGroupBox *g, gb) { QString tt = g->toolTip(); g->setToolTip(g->title()); g->setTitle(tt); } - foreach(QLabel *l, nidLabel.values()) { - QString tt = l->toolTip(); - l->setToolTip(l->text()); - l->setText(tt); - } QList cbList; cbList << bcCritical << kuCritical << ekuCritical; foreach(QCheckBox* cb, cbList) {