Skip to content

Commit 516d321

Browse files
committed
Fix CDoc2 custom server selection
IB-8563, IB-8662 Signed-off-by: Raul Metsma <[email protected]>
1 parent d086099 commit 516d321

File tree

6 files changed

+16
-59
lines changed

6 files changed

+16
-59
lines changed

client/Diagnostics.cpp

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ void Diagnostics::generalInfo(QTextStream &s)
5050
<< "<br />" << Settings::CDOC2_DEFAULT_KEYSERVER.KEY << ": " << Settings::CDOC2_DEFAULT_KEYSERVER
5151
<< "<br /><br /><b>" << tr("TSL signing certs") << ":</b>";
5252
for(const QSslCertificate &cert: Application::confValue(Application::TSLCerts).value<QList<QSslCertificate>>())
53-
s << "<br />" << cert.subjectInfo("CN").value(0);
54-
s << "<br /><br /><b>" << tr("TSL cache") << ":</b>";
53+
s << "<br />" << cert.subjectInfo("CN").value(0) << " (Exp: " << cert.expiryDate().toString(QStringLiteral("dd.MM.yyyy hh:mm:ss)"));
5554
QString cache = Application::confValue(Application::TSLCache).toString();
55+
s << "<br /><br /><b>" << tr("TSL cache") << "</b> (" << cache << "):";
5656
const QStringList tsllist = QDir(cache).entryList({QStringLiteral("*.xml")});
5757
for(const QString &file: tsllist)
5858
{
59-
if(uint ver = Application::readTSLVersion(cache + "/" + file); ver > 0)
59+
if(uint ver = Application::readTSLVersion(cache + '/' + file); ver > 0)
6060
s << "<br />" << file << " (" << ver << ")";
6161
}
6262
s << "<br /><br />";
@@ -77,10 +77,10 @@ void Diagnostics::generalInfo(QTextStream &s)
7777
s << "<b>" << tr("Smart Card service status: ") << "</b>" << " "
7878
<< (QPCSC::instance().serviceRunning() ? tr("Running") : tr("Not running"));
7979

80-
s << "<br /><b>" << tr("Smart Card readers") << ":</b><br />";
80+
s << "<br /><b>" << tr("Smart Card readers") << ":</b>";
8181
for( const QString &readername: QPCSC::instance().readers() )
8282
{
83-
s << readername;
83+
s << "<br />" << readername;
8484
QPCSCReader reader( readername, &QPCSC::instance() );
8585
if( !reader.isPresent() )
8686
{
@@ -109,17 +109,11 @@ void Diagnostics::generalInfo(QTextStream &s)
109109
if( !reader.isPresent() )
110110
continue;
111111

112-
reader.reconnect( QPCSCReader::UnpowerCard );
113-
QString cold = reader.atr();
114-
reader.reconnect( QPCSCReader::ResetCard );
115-
QString warm = reader.atr();
116-
117-
s << "ATR cold - " << cold << "<br />"
118-
<< "ATR warm - " << warm << "<br />";
112+
s << "ATR - " << reader.atr() << "<br />";
119113

120114
reader.beginTransaction();
121115
constexpr auto APDU = &QByteArray::fromHex;
122-
auto printAID = [&](const QLatin1String &label, const QByteArray &apdu)
116+
auto printAID = [&](QLatin1String label, const QByteArray &apdu)
123117
{
124118
QPCSCReader::Result r = reader.transfer(apdu);
125119
s << label << ": " << Qt::hex << r.SW;
@@ -135,7 +129,6 @@ void Diagnostics::generalInfo(QTextStream &s)
135129
if(printAID(QLatin1String("AID_THALES"), APDU("00A4040C 0C A000000063504B43532D3135")) &&
136130
reader.transfer(APDU("00A4080C 04 DFDD 5006")))
137131
s << "ID - " << reader.transfer(APDU("00B00000 00")).data << "<br />";
138-
reader.endTransaction();
139132
}
140133

141134
#ifdef Q_OS_WIN

client/MainWindow.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -715,11 +715,6 @@ void MainWindow::showSettings(int page)
715715
return;
716716
}
717717
SettingsDialog dlg(page, this);
718-
719-
connect(&dlg, &SettingsDialog::langChanged, this, [this](const QString& lang ) {
720-
qApp->loadTranslation( lang );
721-
ui->retranslateUi(this);
722-
});
723718
connect(&dlg, &SettingsDialog::togglePrinting, ui->signContainerPage, &ContainerPage::togglePrinting);
724719
dlg.exec();
725720
}

client/QPCSC.cpp

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -218,21 +218,17 @@ bool QPCSCReader::beginTransaction()
218218
}
219219

220220
bool QPCSCReader::connect(Connect connect, Mode mode)
221-
{
222-
return connectEx(connect, mode) == SCARD_S_SUCCESS;
223-
}
224-
225-
quint32 QPCSCReader::connectEx(Connect connect, Mode mode)
226221
{
227222
LONG err = SC(Connect, d->d->context, d->state.szReader, connect, mode, &d->card, &d->io.dwProtocol);
228223
updateState();
229-
return quint32(err);
224+
return err == SCARD_S_SUCCESS;
230225
}
231226

232227
void QPCSCReader::disconnect( Reset reset )
233228
{
234229
if(d->isTransacted)
235-
endTransaction();
230+
SC(EndTransaction, d->card, reset);
231+
d->isTransacted = false;
236232
if( d->card )
237233
SC(Disconnect, d->card, reset);
238234
d->io.dwProtocol = SCARD_PROTOCOL_UNDEFINED;
@@ -241,14 +237,6 @@ void QPCSCReader::disconnect( Reset reset )
241237
updateState();
242238
}
243239

244-
bool QPCSCReader::endTransaction( Reset reset )
245-
{
246-
bool result = SC(EndTransaction, d->card, reset) == SCARD_S_SUCCESS;
247-
if(result)
248-
d->isTransacted = false;
249-
return result;
250-
}
251-
252240
bool QPCSCReader::isPinPad() const
253241
{
254242
if(d->reader.contains("HID Global OMNIKEY 3x21 Smart Card Reader") ||
@@ -290,15 +278,6 @@ QHash<QPCSCReader::Properties, int> QPCSCReader::properties() const
290278
return properties;
291279
}
292280

293-
bool QPCSCReader::reconnect( Reset reset, Mode mode )
294-
{
295-
if( !d->card )
296-
return false;
297-
LONG err = SC(Reconnect, d->card, DWORD(SCARD_SHARE_SHARED), mode, reset, &d->io.dwProtocol);
298-
updateState();
299-
return err == SCARD_S_SUCCESS;
300-
}
301-
302281
QStringList QPCSCReader::state() const
303282
{
304283
return stateToString(d->state.dwEventState);

client/QPCSC.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,8 @@ class QPCSCReader final: public QObject
108108
bool updateState( quint32 msec = 0 );
109109

110110
bool connect( Connect connect = Shared, Mode mode = Mode(T0|T1) );
111-
quint32 connectEx( Connect connect = Shared, Mode mode = Mode(T0|T1) );
112111
void disconnect( Reset reset = LeaveCard );
113-
bool reconnect( Reset reset = LeaveCard, Mode mode = Mode(T0|T1) );
114112
bool beginTransaction();
115-
bool endTransaction( Reset reset = LeaveCard );
116113
Result transfer( const QByteArray &apdu ) const;
117114
Result transferCTL(const QByteArray &apdu, bool verify, quint16 lang = 0,
118115
quint8 minlen = 4, quint8 newPINOffset = 0, bool requestCurrentPIN = true) const;

client/dialogs/SettingsDialog.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,10 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
249249
setCDoc2Values(key);
250250
});
251251
setCDoc2Values(cdoc2Service);
252-
connect(ui->txtCdoc2UUID, &QLineEdit::textEdited, this, Settings::CDOC2_UUID);
252+
connect(ui->txtCdoc2UUID, &QLineEdit::textEdited, this, [](const QString &uuid) {
253+
Settings::CDOC2_UUID = uuid;
254+
Settings::CDOC2_DEFAULT_KEYSERVER = uuid;
255+
});
253256
connect(ui->txtCdoc2Fetch, &QLineEdit::textEdited, this, [this](const QString &url) {
254257
Settings::CDOC2_GET = url;
255258
if(url.isEmpty())
@@ -424,7 +427,6 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
424427
ui->pageGroup->setId(ui->btnMenuInfo, LicenseSettings);
425428
connect(ui->pageGroup, &QButtonGroup::idClicked, this, &SettingsDialog::showPage);
426429

427-
updateVersion();
428430
updateDiagnostics();
429431
showPage(page);
430432
}
@@ -467,11 +469,8 @@ void SettingsDialog::checkConnection()
467469

468470
void SettingsDialog::retranslate(const QString& lang)
469471
{
470-
emit langChanged(lang);
471-
472472
qApp->loadTranslation( lang );
473473
ui->retranslateUi(this);
474-
updateVersion();
475474
updateDiagnostics();
476475
ui->cmbCdoc2Name->setItemText(ui->cmbCdoc2Name->count() - 1,
477476
tr("Use a manually specified key transfer server for encryption"));
@@ -523,12 +522,6 @@ void SettingsDialog::selectLanguage()
523522
button->setChecked(button->property("lang").toString() == Settings::LANGUAGE);
524523
}
525524

526-
void SettingsDialog::updateVersion()
527-
{
528-
ui->txtNavVersion->setText(tr("DigiDoc4 version %1, released %2")
529-
.arg(QApplication::applicationVersion(), QStringLiteral(BUILD_DATE)));
530-
}
531-
532525
void SettingsDialog::saveProxy()
533526
{
534527
Settings::PROXY_CONFIG = ui->proxyGroup->checkedId();
@@ -568,6 +561,8 @@ void SettingsDialog::loadProxy( const digidoc::Conf *conf )
568561

569562
void SettingsDialog::updateDiagnostics()
570563
{
564+
ui->txtNavVersion->setText(tr("DigiDoc4 version %1, released %2")
565+
.arg(QApplication::applicationVersion(), QStringLiteral(BUILD_DATE)));
571566
ui->txtDiagnostics->setEnabled(false);
572567
ui->txtDiagnostics->clear();
573568
ui->btnNavSaveReport->setDisabled(true);

client/dialogs/SettingsDialog.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ class SettingsDialog final: public QDialog
5959
static void loadProxy( const digidoc::Conf *conf );
6060

6161
signals:
62-
void langChanged(const QString& lang);
6362
void togglePrinting(bool enable);
6463

6564
private:
@@ -74,7 +73,6 @@ class SettingsDialog final: public QDialog
7473
void updateCDoc2Cert(const QSslCertificate &c);
7574
void updateSiVaCert(const QSslCertificate &c);
7675
void updateTSACert(const QSslCertificate &c);
77-
void updateVersion();
7876
void updateDiagnostics();
7977
void useDefaultSettings();
8078

0 commit comments

Comments
 (0)