From 2945bfc5c95e9a1bd8661a9465bb8a4a312dfcad Mon Sep 17 00:00:00 2001 From: toinux <26522723+itzwam@users.noreply.github.com> Date: Sat, 4 Apr 2026 06:15:49 +0200 Subject: [PATCH 1/2] feat: show slot status on key creation --- lib/pki_scard.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pki_scard.cpp b/lib/pki_scard.cpp index 0034cc68..08416bac 100644 --- a/lib/pki_scard.cpp +++ b/lib/pki_scard.cpp @@ -683,7 +683,8 @@ pk11_attr_data pki_scard::select_id(const pkcs11 &p11) const QMap map; QStringList items; for (QStringList item : fixed_ids) { - items << item[0]; + bool initialized = p11.tokenInfo(map[item[0]]).tokenInitialized(); + items << (initialized ? "[USED]" : "[FREE]") + item[0]; map[item[0]] = item[1].toULong(); } QString idname = QInputDialog::getItem(nullptr, XCA_TITLE, From 6f147c9e3a066eb19d3793f8e023b6dd0bfdf063 Mon Sep 17 00:00:00 2001 From: toinux <26522723+itzwam@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:51:27 +0200 Subject: [PATCH 2/2] feat: pkcs11 USED/FREE in slot lists --- lib/pki_scard.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/pki_scard.cpp b/lib/pki_scard.cpp index 08416bac..bb0acfef 100644 --- a/lib/pki_scard.cpp +++ b/lib/pki_scard.cpp @@ -683,9 +683,23 @@ pk11_attr_data pki_scard::select_id(const pkcs11 &p11) const QMap map; QStringList items; for (QStringList item : fixed_ids) { - bool initialized = p11.tokenInfo(map[item[0]]).tokenInitialized(); - items << (initialized ? "[USED]" : "[FREE]") + item[0]; - map[item[0]] = item[1].toULong(); + bool found = false; + for (auto cls : {CKO_PUBLIC_KEY, CKO_PRIVATE_KEY}) { + pk11_attr_data id(CKA_ID); + pk11_attr_ulong class_att(CKA_CLASS, cls); + pk11_attlist atts(class_att); + id.setULong(item[1].toULong()); + atts << id; + + if (p11.objectList(atts).count() != 0) + found = true; + break; + } + + QString used = found ? "[USED]" : "[FREE]"; + QString itemName = used + " " + item[0]; + items << itemName; + map[itemName] = item[1].toULong(); } QString idname = QInputDialog::getItem(nullptr, XCA_TITLE, tr("Select Slot of %1").arg(ti.model()),