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();