diff --git a/lib/pkcs11.cpp b/lib/pkcs11.cpp index 12edd0d4..d2b7fb0a 100644 --- a/lib/pkcs11.cpp +++ b/lib/pkcs11.cpp @@ -380,8 +380,8 @@ QString pkcs11::driverInfo() return QString( "Cryptoki version: %1.%2\n" - "Manufacturer: %3\n" - "Library: %4 (%5.%6)\n"). + "Manufacturer: %3\n" + "Library: %4 (%5.%6)\n"). arg(info.cryptokiVersion.major).arg(info.cryptokiVersion.minor). arg(UTF8QSTRING(info.manufacturerID, 32)). arg(UTF8QSTRING(info.libraryDescription, 32)). diff --git a/ui/ImportMulti.ui b/ui/ImportMulti.ui index 0a9bb085..a5ef3198 100644 --- a/ui/ImportMulti.ui +++ b/ui/ImportMulti.ui @@ -6,101 +6,163 @@ 0 0 - 506 - 362 + 516 + 477 - - - 6 - - - 9 - + - + + + 6 + + + 0 + + + + + + Arial + 14 + 50 + false + false + false + false + + + + Import PKI Items + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + 95 + 40 + + + + + 95 + 40 + + + + true + + + + - - - QFrame::Box - - - QFrame::Sunken - - - - 6 - - - 9 - - - - - Import &All - - - - - - - &Import - - - - - - - &Done - - - - - - - &Remove - - - - - - - Details - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 204 - 21 - - - - - - - - - 200 - 94 - - - - true - - - - - + + + + + + + + QFrame::Box + + + QFrame::Sunken + + + + + + Import &All + + + + + + + &Import + + + + + + + &Done + + + + + + + &Remove + + + + + + + Details + + + + + + + Delete from token + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 204 + 21 + + + + + + + + + 0 + 0 + + + + QFrame::Box + + + + + + + diff --git a/widgets/ImportMulti.cpp b/widgets/ImportMulti.cpp index 206f3dc6..7e13c8e4 100644 --- a/widgets/ImportMulti.cpp +++ b/widgets/ImportMulti.cpp @@ -28,7 +28,7 @@ ImportMulti::ImportMulti(MainWindow *parent) { mainwin = parent; setupUi(this); - setWindowTitle(tr(XCA_TITLE)); + setWindowTitle(XCA_TITLE); image->setPixmap(*MainWindow::certImg); listView->setEditTriggers(QAbstractItemView::NoEditTriggers); mcont = new db_base("/dev/null", parent); @@ -37,7 +37,17 @@ ImportMulti::ImportMulti(MainWindow *parent) listView->setSelectionMode(QAbstractItemView::ExtendedSelection); connect( listView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(on_butDetails_clicked())); + deleteToken->hide(); + slotInfo->hide(); +} +void ImportMulti::tokenInfo(QString &info) +{ + deleteToken->show(); + slotInfo->show(); + slotInfo->setText(info); + image->setPixmap(*MainWindow::scardImg); + heading->setText(tr("Manage security token")); } void ImportMulti::addItem(pki_base *pki) @@ -119,6 +129,27 @@ void ImportMulti::on_butImport_clicked() } } +void ImportMulti::on_deleteToken_clicked() +{ + QItemSelectionModel *selectionModel = listView->selectionModel(); + QModelIndexList indexes = selectionModel->selectedIndexes(); + QModelIndex index; + QString items; + + foreach(index, indexes) { + if (index.column() != 0) + continue; + pki_base *pki = static_cast(index.internalPointer()); + try { + pki->deleteFromToken(); + mcont->remFromCont(index); + delete pki; + } catch (errorEx &err) { + mainwin->Error(err); + } + } +} + pki_base *ImportMulti::import(QModelIndex &idx) { @@ -209,9 +240,7 @@ void ImportMulti::on_butDetails_clicked() arg(cn)); } catch (errorEx &err) { - QMessageBox::warning(this, XCA_TITLE, - tr("Error") + pki->getClassName() + - err.getString()); + mainwin->Error(err); } } diff --git a/widgets/ImportMulti.h b/widgets/ImportMulti.h index 3bb4ecaa..b51382d6 100644 --- a/widgets/ImportMulti.h +++ b/widgets/ImportMulti.h @@ -30,12 +30,14 @@ class ImportMulti: public QDialog, private Ui::ImportMulti pki_base *import(QModelIndex &idx); void execute(int force=0); int entries(); + void tokenInfo(QString &info); public slots: void on_butRemove_clicked(); void on_butImport_clicked(); void on_butDetails_clicked(); void on_butOk_clicked(); + void on_deleteToken_clicked(); }; diff --git a/widgets/MW_menu.cpp b/widgets/MW_menu.cpp index 70ac4846..f208ae6f 100644 --- a/widgets/MW_menu.cpp +++ b/widgets/MW_menu.cpp @@ -64,7 +64,7 @@ void MainWindow::init_menu() token = menuBar()->addMenu(tr("&Token")); token->addAction(tr("&Manage Security token"), this, - SLOT(importScard())); + SLOT(manageToken())); token->addAction(tr("&Init Security token"), this, SLOT(initToken())); token->addAction(tr("&Change PIN"), this, diff --git a/widgets/MainWindow.cpp b/widgets/MainWindow.cpp index 24750438..48baa310 100644 --- a/widgets/MainWindow.cpp +++ b/widgets/MainWindow.cpp @@ -450,7 +450,7 @@ void MainWindow::initPin() } -void MainWindow::importScard() +void MainWindow::manageToken() { pkcs11 p11; unsigned long slot; @@ -466,9 +466,15 @@ void MainWindow::importScard() return; ImportMulti *dlgi = new ImportMulti(this); - QList objects; p11.startSession(slot); + QString info = p11.driverInfo(); + tkInfo ti = p11.tokenInfo(); + info += tr("\nName: %1\nModel: %2\nSerial: %3"). + arg(ti.label()).arg(ti.model()).arg(ti.serial()); + dlgi->tokenInfo(info); + QList objects; + QList ml = p11.mechanismList(slot); if (ml.count() == 0) ml << CKM_SHA1_RSA_PKCS; diff --git a/widgets/MainWindow.h b/widgets/MainWindow.h index ddced55c..62827614 100644 --- a/widgets/MainWindow.h +++ b/widgets/MainWindow.h @@ -100,7 +100,7 @@ class MainWindow: public QMainWindow, public Ui::MainWindow private slots: void setOptions(); - void importScard(); + void manageToken(); void initToken(); void changePin(bool so=false); void changeSoPin();