mirror of
https://github.com/chris2511/xca.git
synced 2026-09-13 18:46:25 +05:00
Move NID lists for ExtendedKeyUsage and DistinguishedName
into lib/oid.h
This commit is contained in:
parent
e4d0ab8f8e
commit
c89b6aff29
@ -26,7 +26,7 @@ dbheaderList db_x509name::getHeaders()
|
||||
new num_dbheader(HD_subject_hash, false, tr("Subject hash"),
|
||||
tr("Hash to lookup certs in directories"));
|
||||
|
||||
foreach(int nid, *MainWindow::dn_nid)
|
||||
foreach(int nid, distname_nid)
|
||||
h << new nid_dbheader(nid, dbheader::hd_x509name);
|
||||
return h;
|
||||
}
|
||||
|
||||
73
lib/oid.cpp
73
lib/oid.cpp
@ -20,6 +20,9 @@
|
||||
|
||||
int first_additional_oid = 0;
|
||||
|
||||
NIDlist extkeyuse_nid;
|
||||
NIDlist distname_nid;
|
||||
|
||||
QMap<QString,const char*> oid_name_clash;
|
||||
QMap<QString,int> oid_lower_map;
|
||||
|
||||
@ -129,32 +132,11 @@ static void readOIDs(QString fname)
|
||||
}
|
||||
}
|
||||
|
||||
void initOIDs()
|
||||
{
|
||||
QString oids = QString(QDir::separator()) + "oids.txt";
|
||||
QString dir = getPrefix();
|
||||
|
||||
first_additional_oid = OBJ_new_nid(0);
|
||||
openssl_error();
|
||||
for (int i=0; i<first_additional_oid;i++)
|
||||
addToLowerMap(i);
|
||||
ign_openssl_error();
|
||||
readOIDs(dir + oids);
|
||||
#if !defined(Q_OS_WIN32)
|
||||
#if !defined(Q_OS_MAC)
|
||||
readOIDs(QString(ETC) + oids);
|
||||
#endif
|
||||
#endif
|
||||
readOIDs(getUserSettingsDir() + oids);
|
||||
openssl_error();
|
||||
}
|
||||
|
||||
/* reads a list of OIDs/SNs from a file and turns them into a QValueList
|
||||
* of integers, representing the NIDs. Usually to be used by NewX509 for
|
||||
* the list of ExtendedKeyUsage and Distinguished Name
|
||||
*/
|
||||
|
||||
NIDlist readNIDlist(QString fname)
|
||||
static NIDlist readNIDlist(const QString &fname)
|
||||
{
|
||||
int line = 0, nid;
|
||||
NIDlist nl;
|
||||
@ -182,3 +164,50 @@ NIDlist readNIDlist(QString fname)
|
||||
openssl_error();
|
||||
return nl;
|
||||
}
|
||||
|
||||
/* creates a new nid list from the given filename */
|
||||
static NIDlist read_nidlist(const QString &name)
|
||||
{
|
||||
NIDlist nl;
|
||||
QString sep = QDir::separator();
|
||||
|
||||
/* first try $HOME/xca/ */
|
||||
nl = readNIDlist(getUserSettingsDir() + sep + name);
|
||||
#if !defined(Q_OS_WIN32)
|
||||
#if !defined(Q_OS_MAC)
|
||||
if (nl.count() == 0){
|
||||
/* next is /etx/xca/... */
|
||||
nl = readNIDlist(QString(ETC) + sep + name);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (nl.count() == 0) {
|
||||
/* look at /usr/(local/)share/xca/ */
|
||||
nl = readNIDlist(getPrefix() + sep + name);
|
||||
}
|
||||
return nl;
|
||||
}
|
||||
|
||||
void initOIDs()
|
||||
{
|
||||
QString oids = QString(QDir::separator()) + "oids.txt";
|
||||
QString dir = getPrefix();
|
||||
|
||||
first_additional_oid = OBJ_new_nid(0);
|
||||
openssl_error();
|
||||
for (int i=0; i<first_additional_oid;i++)
|
||||
addToLowerMap(i);
|
||||
ign_openssl_error();
|
||||
readOIDs(dir + oids);
|
||||
#if !defined(Q_OS_WIN32)
|
||||
#if !defined(Q_OS_MAC)
|
||||
readOIDs(QString(ETC) + oids);
|
||||
#endif
|
||||
#endif
|
||||
readOIDs(getUserSettingsDir() + oids);
|
||||
|
||||
extkeyuse_nid = read_nidlist("eku.txt");
|
||||
distname_nid = read_nidlist("dn.txt");
|
||||
|
||||
openssl_error();
|
||||
}
|
||||
|
||||
12
lib/oid.h
12
lib/oid.h
@ -12,19 +12,17 @@ class QString;
|
||||
#include <QList>
|
||||
#include <QMap>
|
||||
|
||||
typedef QList<int> NIDlist;
|
||||
|
||||
extern NIDlist extkeyuse_nid;
|
||||
extern NIDlist distname_nid;
|
||||
|
||||
extern int first_additional_oid;
|
||||
extern QMap<QString,const char*> oid_name_clash;
|
||||
extern QMap<QString,int> oid_lower_map;
|
||||
|
||||
typedef QList<int> NIDlist;
|
||||
/* reads additional OIDs from a file: oid, sn, ln */
|
||||
|
||||
void initOIDs();
|
||||
|
||||
/* reads a list of OIDs/SNs from a file and turns them into a QValueList
|
||||
* of integers, representing the NIDs. Usually to be used by NewX509 for
|
||||
* the list of ExtendedKeyUsage and Distinguished Name
|
||||
*/
|
||||
|
||||
NIDlist readNIDlist(QString fname);
|
||||
#endif
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include "pki_temp.h"
|
||||
#include "func.h"
|
||||
#include "db.h"
|
||||
#include "oid.h"
|
||||
#include "exception.h"
|
||||
#include "widgets/MainWindow.h"
|
||||
#include <QDir>
|
||||
@ -272,11 +273,10 @@ void pki_temp::fromData(const unsigned char *p, db_header_t *head )
|
||||
static QString old_eKeyUse2QString(int old)
|
||||
{
|
||||
QStringList sl;
|
||||
NIDlist eku_nid = *MainWindow::eku_nid;
|
||||
|
||||
for (int i=0; i<eku_nid.count(); i++) {
|
||||
for (int i = 0; i < extkeyuse_nid.count(); i++) {
|
||||
if (old & (1<<i)) {
|
||||
sl << OBJ_nid2sn(eku_nid[i]);
|
||||
sl << OBJ_nid2sn(extkeyuse_nid[i]);
|
||||
}
|
||||
}
|
||||
return sl.join(", ");
|
||||
|
||||
@ -44,16 +44,12 @@
|
||||
#include "PwDialog.h"
|
||||
#include "OpenDb.h"
|
||||
|
||||
|
||||
db_key *MainWindow::keys = NULL;
|
||||
db_x509req *MainWindow::reqs = NULL;
|
||||
db_x509 *MainWindow::certs = NULL;
|
||||
db_temp *MainWindow::temps = NULL;
|
||||
db_crl *MainWindow::crls = NULL;
|
||||
|
||||
NIDlist *MainWindow::eku_nid = NULL;
|
||||
NIDlist *MainWindow::dn_nid = NULL;
|
||||
|
||||
OidResolver *MainWindow::resolver = NULL;
|
||||
|
||||
void MainWindow::enableTokenMenu(bool enable)
|
||||
@ -132,11 +128,6 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
EVP_add_digest_alias(SN_sha256,SN_dsa_with_SHA256);
|
||||
EVP_add_digest_alias(SN_sha384,SN_ecdsa_with_SHA384);
|
||||
EVP_add_digest_alias(SN_sha512,SN_ecdsa_with_SHA512);
|
||||
/* read in all our own OIDs */
|
||||
initOIDs();
|
||||
|
||||
eku_nid = read_nidlist("eku.txt");
|
||||
dn_nid = read_nidlist("dn.txt");
|
||||
|
||||
setAcceptDrops(true);
|
||||
|
||||
@ -230,29 +221,6 @@ void MainWindow::setItemEnabled(bool enable)
|
||||
enableTokenMenu(pkcs11::loaded());
|
||||
}
|
||||
|
||||
/* creates a new nid list from the given filename */
|
||||
NIDlist *MainWindow::read_nidlist(QString name)
|
||||
{
|
||||
NIDlist nl;
|
||||
name = QDir::separator() + name;
|
||||
|
||||
/* first try $HOME/xca/ */
|
||||
nl = readNIDlist(getUserSettingsDir() + name);
|
||||
#if !defined(Q_OS_WIN32)
|
||||
#if !defined(Q_OS_MAC)
|
||||
if (nl.count() == 0){
|
||||
/* next is /etx/xca/... */
|
||||
nl = readNIDlist(QString(ETC) + name);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (nl.count() == 0) {
|
||||
/* look at /usr/(local/)share/xca/ */
|
||||
nl = readNIDlist(getPrefix() + name);
|
||||
}
|
||||
return new NIDlist(nl);
|
||||
}
|
||||
|
||||
void MainWindow::init_images()
|
||||
{
|
||||
bigKey->setPixmap(QPixmap(":keyImg"));
|
||||
@ -566,10 +534,6 @@ MainWindow::~MainWindow()
|
||||
ERR_free_strings();
|
||||
EVP_cleanup();
|
||||
OBJ_cleanup();
|
||||
if (eku_nid)
|
||||
delete eku_nid;
|
||||
if (dn_nid)
|
||||
delete dn_nid;
|
||||
delete dbindex;
|
||||
#ifdef MDEBUG
|
||||
fprintf(stderr, "Memdebug:\n");
|
||||
|
||||
@ -105,8 +105,7 @@ NewX509::NewX509(QWidget *parent)
|
||||
:QDialog(parent)
|
||||
{
|
||||
int i;
|
||||
eku_nid = *MainWindow::eku_nid;
|
||||
dn_nid = *MainWindow::dn_nid;
|
||||
|
||||
aia_nid << OBJ_sn2nid("OCSP") << OBJ_sn2nid("caIssuers");
|
||||
attr_nid << NID_pkcs9_unstructuredName << NID_pkcs9_challengePassword;
|
||||
QStringList keys;
|
||||
@ -116,7 +115,7 @@ NewX509::NewX509(QWidget *parent)
|
||||
/* temporary storage for creating temporary X509V3_CTX */
|
||||
ctx_cert = NULL;
|
||||
pkiSource = generated;
|
||||
foreach(int nid, dn_nid)
|
||||
foreach(int nid, distname_nid)
|
||||
keys << QString(OBJ_nid2ln(nid));
|
||||
|
||||
extDNlist->setKeys(keys);
|
||||
@ -172,7 +171,7 @@ NewX509::NewX509(QWidget *parent)
|
||||
tempList->insertPkiItems(MainWindow::temps->getAllAndPredefs());
|
||||
|
||||
// setup Extended keyusage
|
||||
foreach(int nid, eku_nid)
|
||||
foreach(int nid, extkeyuse_nid)
|
||||
ekeyUsage->addItem(OBJ_nid2ln(nid));
|
||||
|
||||
// setup Authority Info Access
|
||||
|
||||
@ -43,8 +43,6 @@ class NewX509: public QDialog, public Ui::NewX509
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
NIDlist eku_nid;
|
||||
NIDlist dn_nid;
|
||||
NIDlist aia_nid;
|
||||
NIDlist attr_nid;
|
||||
QList<nameEdit> attrEdits;
|
||||
|
||||
@ -90,10 +90,8 @@ x509v3ext NewX509::getEkeyUsage()
|
||||
|
||||
int rows = ekeyUsage->count();
|
||||
for (int i=0; i<rows; i++) {
|
||||
//QListWidgetItem *li = ekeyUsage->item(i);
|
||||
//printf("rows = %d, ekeyUsage = %d, %p\n", rows, i, li);
|
||||
if (ekeyUsage->isItemSelected(ekeyUsage->item(i))) {
|
||||
cont << QString(OBJ_nid2sn(eku_nid[i]));
|
||||
cont << QString(OBJ_nid2sn(extkeyuse_nid[i]));
|
||||
}
|
||||
}
|
||||
if (ekuCritical->isChecked() && cont.count() > 0)
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#include "Options.h"
|
||||
#include "SearchPkcs11.h"
|
||||
#include "lib/pki_scard.h"
|
||||
#include "lib/oid.h"
|
||||
#include <openssl/objects.h>
|
||||
#include <QMessageBox>
|
||||
#include <QToolTip>
|
||||
@ -21,7 +22,7 @@ Options::Options(MainWindow *parent)
|
||||
setWindowTitle(XCA_TITLE);
|
||||
setupUi(this);
|
||||
|
||||
foreach(int nid, *MainWindow::dn_nid) {
|
||||
foreach(int nid, distname_nid) {
|
||||
QString n = OBJ_nid2ln(nid);
|
||||
extDNobj->addItem(n);
|
||||
expDNobj->addItem(n);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user