mirror of
https://github.com/chris2511/xca.git
synced 2026-09-13 18:46:25 +05:00
Now by default it uses Printable string and only if the value can't be encoded as printable string it will use UTF-8 instead.
119 lines
2.4 KiB
C++
119 lines
2.4 KiB
C++
/* vi: set sw=4 ts=4:
|
|
*
|
|
* Copyright (C) 2001 - 2010 Christian Hohnstaedt.
|
|
*
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#include "Options.h"
|
|
#include "lib/pki_scard.h"
|
|
#include <openssl/objects.h>
|
|
#include <QtGui/QMessageBox>
|
|
|
|
Options::Options(MainWindow *parent)
|
|
:QDialog(parent)
|
|
{
|
|
mw = parent;
|
|
QStringList dnl;
|
|
if (!MainWindow::mandatory_dn.isEmpty())
|
|
dnl = MainWindow::mandatory_dn.split(",");
|
|
|
|
NIDlist dn_nid = *MainWindow::dn_nid;
|
|
setWindowTitle(tr(XCA_TITLE));
|
|
setupUi(this);
|
|
|
|
for (int i=0; i < dn_nid.count(); i++)
|
|
extDNobj->addItem(OBJ_nid2ln(dn_nid[i]));
|
|
|
|
for (int i=0; i < dnl.count(); i++) {
|
|
int nid;
|
|
nid = OBJ_sn2nid(CCHAR(dnl[i]));
|
|
extDNlist->insertItem(0, OBJ_nid2ln(nid));
|
|
}
|
|
string_opts << "MASK:0x2002" << "pkix" << "nombstr" <<
|
|
"utf8only" << "default";
|
|
QStringList s;
|
|
s << tr("Printable string or UTF8 (default)")
|
|
<< tr("PKIX recommendation in RFC2459")
|
|
<< tr("No BMP strings, only printable and T61")
|
|
<< tr("UTF8 strings only (RFC2459)")
|
|
<< tr("All strings");
|
|
mbstring->addItems(s);
|
|
}
|
|
|
|
void Options::on_extDNadd_clicked()
|
|
{
|
|
extDNlist->addItem(extDNobj->currentText());
|
|
}
|
|
void Options::on_extDNdel_clicked()
|
|
{
|
|
extDNlist->takeItem(extDNlist->currentRow());
|
|
}
|
|
|
|
QString Options::getDnString()
|
|
{
|
|
QStringList dn;
|
|
for (int j=0; j<extDNlist->count(); j++) {
|
|
int nid;
|
|
nid = OBJ_ln2nid(CCHAR(extDNlist->item(j)->text()));
|
|
dn << QString(OBJ_nid2sn(nid));
|
|
}
|
|
return dn.join(",");
|
|
}
|
|
|
|
void Options::setStringOpt(const QString string_opt)
|
|
{
|
|
int index = string_opts.indexOf(string_opt);
|
|
if (index < 0)
|
|
index = 0;
|
|
mbstring->setCurrentIndex(index);
|
|
}
|
|
|
|
QString Options::getStringOpt()
|
|
{
|
|
return string_opts[mbstring->currentIndex()];
|
|
}
|
|
|
|
void Options::on_fileButton_clicked(void)
|
|
{
|
|
load_pkcs11 l;
|
|
QString fname;
|
|
|
|
fname = QFileDialog::getOpenFileName(this, l.caption,
|
|
pkcs11path->text(), l.filter);
|
|
|
|
if (fname.isEmpty())
|
|
return;
|
|
pkcs11path->setText(fname);
|
|
}
|
|
|
|
|
|
void Options::on_tryLoadButton_clicked(void)
|
|
{
|
|
try {
|
|
QString lib = pkcs11path->text();
|
|
#ifdef WIN32
|
|
pkcs11::load_lib(lib, false);
|
|
pkcs11::initialize();
|
|
#else
|
|
pki_scard::init_p11engine(lib, false);
|
|
#endif
|
|
QString info;
|
|
if (pkcs11::loaded()) {
|
|
pkcs11 p11;
|
|
info = p11.driverInfo();
|
|
}
|
|
#ifdef WIN32
|
|
pkcs11::finalize();
|
|
pkcs11::load_lib(QString(), true);
|
|
#endif
|
|
if (!lib.isEmpty()) {
|
|
QMessageBox::information(this, XCA_TITLE,
|
|
tr("Successfully loaded PKCS#11 library: %1\n").
|
|
arg(lib) + info);
|
|
}
|
|
} catch (errorEx &err) {
|
|
mw->Error(err);
|
|
}
|
|
}
|