Skip to content

Commit 2f2725d

Browse files
committed
Enc SSL cert
Signed-off-by: Raul Metsma <[email protected]>
1 parent 947e6d2 commit 2f2725d

File tree

7 files changed

+624
-500
lines changed

7 files changed

+624
-500
lines changed

client/dialogs/MobileProgress.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ background-color: #2F70B6;
138138
<number>30</number>
139139
</property>
140140
<property name="sizeConstraint">
141-
<enum>QLayout::SizeConstraint::SetFixedSize</enum>
141+
<enum>QLayout::SetFixedSize</enum>
142142
</property>
143143
<property name="leftMargin">
144144
<number>40</number>

client/dialogs/SettingsDialog.cpp

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
6767
w->setAttribute(Qt::WA_MacShowFocusRect, false);
6868
for(QCheckBox *w: findChildren<QCheckBox*>())
6969
w->setAttribute(Qt::WA_MacShowFocusRect, false);
70+
for(QToolButton *b: findChildren<QToolButton*>())
71+
b->setCursor(Qt::PointingHandCursor);
72+
for(QPushButton *b: findChildren<QPushButton*>())
73+
{
74+
b->setCursor(Qt::PointingHandCursor);
75+
b->setAutoDefault(false);
76+
}
7077

7178
// pageGeneral
7279
selectLanguage();
@@ -151,7 +158,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
151158
ui->txtMIDUUID->setReadOnly(Settings::MID_UUID.isLocked());
152159
ui->txtMIDUUID->setVisible(ui->rdMIDUUIDCustom->isChecked());
153160
ui->txtMIDUUID->setText(Settings::MID_UUID);
154-
connect(ui->rdMIDUUIDCustom, &QRadioButton::toggled, ui->txtMIDUUID, [=](bool checked) {
161+
connect(ui->rdMIDUUIDCustom, &QRadioButton::toggled, ui->txtMIDUUID, [this](bool checked) {
155162
ui->txtMIDUUID->setVisible(checked);
156163
Settings::MID_UUID_CUSTOM = checked;
157164
Settings::SID_UUID_CUSTOM = checked;
@@ -218,13 +225,17 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
218225
ui->txtCdoc2Fetch->setText(data.value(QLatin1String("FETCH")).toString(Settings::CDOC2_GET));
219226
ui->txtCdoc2Post->setText(data.value(QLatin1String("POST")).toString(Settings::CDOC2_POST));
220227
bool disabled = ui->cmbCdoc2Name->currentIndex() < ui->cmbCdoc2Name->count() - 1;
221-
ui->txtCdoc2UUID->setReadOnly(disabled);
222-
ui->txtCdoc2Fetch->setReadOnly(disabled);
223-
ui->txtCdoc2Post->setReadOnly(disabled);
228+
ui->txtCdoc2UUID->setDisabled(disabled);
229+
ui->txtCdoc2Fetch->setDisabled(disabled);
230+
ui->txtCdoc2Post->setDisabled(disabled);
231+
ui->txtCdoc2UUID->setClearButtonEnabled(!disabled);
232+
ui->txtCdoc2Fetch->setClearButtonEnabled(!disabled);
233+
ui->txtCdoc2Post->setClearButtonEnabled(!disabled);
234+
ui->wgtCDoc2Cert->setHidden(disabled);
224235
};
225236
for(QJsonObject::const_iterator i = list.constBegin(); i != list.constEnd(); ++i)
226237
ui->cmbCdoc2Name->addItem(i.value().toObject().value(QLatin1String("NAME")).toString(), i.key());
227-
ui->cmbCdoc2Name->addItem(tr("Custom"), Settings::CDOC2_UUID);
238+
ui->cmbCdoc2Name->addItem(tr("Use a manually specified key transfer server for encryption"), Settings::CDOC2_UUID);
228239
QString cdoc2Service = Settings::CDOC2_DEFAULT_KEYSERVER;
229240
ui->cmbCdoc2Name->setCurrentIndex(ui->cmbCdoc2Name->findData(cdoc2Service));
230241
connect(ui->cmbCdoc2Name, qOverload<int>(&QComboBox::currentIndexChanged), this, [this, setCDoc2Values] (int index) {
@@ -234,14 +245,40 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
234245
});
235246
setCDoc2Values(cdoc2Service);
236247
connect(ui->txtCdoc2UUID, &QLineEdit::textEdited, this, Settings::CDOC2_UUID);
237-
connect(ui->txtCdoc2Fetch, &QLineEdit::textEdited, this, Settings::CDOC2_GET);
238-
connect(ui->txtCdoc2Post, &QLineEdit::textEdited, this, Settings::CDOC2_POST);
248+
connect(ui->txtCdoc2Fetch, &QLineEdit::textEdited, this, [this](const QString &url) {
249+
Settings::CDOC2_GET = url;
250+
if(url.isEmpty())
251+
{
252+
Settings::CDOC2_GET_CERT.clear();
253+
Settings::CDOC2_POST_CERT.clear();
254+
updateCDoc2Cert(QSslCertificate());
255+
}
256+
});
257+
connect(ui->txtCdoc2Post, &QLineEdit::textEdited, this, [this](const QString &url) {
258+
Settings::CDOC2_POST = url;
259+
if(url.isEmpty())
260+
{
261+
Settings::CDOC2_GET_CERT.clear();
262+
Settings::CDOC2_POST_CERT.clear();
263+
updateCDoc2Cert(QSslCertificate());
264+
}
265+
});
239266
#else
240267
ui->cmbCdoc2Name->addItem(QStringLiteral("Default"));
241268
ui->txtCdoc2UUID->setText(QStringLiteral("00000000-0000-0000-0000-000000000000"));
242269
ui->txtCdoc2Fetch->setText(QStringLiteral(CDOC2_GET_URL));
243270
ui->txtCdoc2Post->setText(QStringLiteral(CDOC2_POST_URL));
244271
#endif
272+
connect(ui->btInstallCDoc2Cert, &QPushButton::clicked, this, [this] {
273+
QSslCertificate cert = selectCert(tr("Select a key transfer server certificate"),
274+
tr("Key transfer server SSL certificate"));
275+
if(cert.isNull())
276+
return;
277+
Settings::CDOC2_GET_CERT = cert.toDer().toBase64();
278+
Settings::CDOC2_POST_CERT = cert.toDer().toBase64();
279+
updateCDoc2Cert(cert);
280+
});
281+
updateCDoc2Cert(QSslCertificate(QByteArray::fromBase64(Settings::CDOC2_GET_CERT), QSsl::Der));
245282

246283
// pageProxy
247284
connect(this, &SettingsDialog::finished, this, &SettingsDialog::saveProxy);
@@ -313,7 +350,7 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
313350
dlg->open();
314351
});
315352
#ifdef CONFIG_URL
316-
connect(qApp->conf(), &Configuration::finished, this, [=](bool /*update*/, const QString &error){
353+
connect(qApp->conf(), &Configuration::finished, this, [this](bool /*update*/, const QString &error){
317354
if(!error.isEmpty()) {
318355
WarningDialog::show(this, tr("Checking updates has failed.") + "<br />" + tr("Please try again."), error);
319356
return;
@@ -334,10 +371,10 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
334371
Application::updateTSLCache({});
335372
});
336373
connect(ui->btnNavUseByDefault, &QPushButton::clicked, this, &SettingsDialog::useDefaultSettings);
337-
connect(ui->btnNavSaveReport, &QPushButton::clicked, this, [=]{
374+
connect(ui->btnNavSaveReport, &QPushButton::clicked, this, [this]{
338375
saveFile(QStringLiteral("diagnostics.txt"), ui->txtDiagnostics->toPlainText().toUtf8());
339376
});
340-
connect(ui->btnNavSaveLibdigidocpp, &QPushButton::clicked, this, [=]{
377+
connect(ui->btnNavSaveLibdigidocpp, &QPushButton::clicked, this, [this]{
341378
Settings::LIBDIGIDOCPP_DEBUG = false;
342379
QString log = QStringLiteral("%1/libdigidocpp.log").arg(QDir::tempPath());
343380
saveFile(QStringLiteral("libdigidocpp.txt"), log);
@@ -424,6 +461,8 @@ void SettingsDialog::retranslate(const QString& lang)
424461
ui->retranslateUi(this);
425462
updateVersion();
426463
updateDiagnostics();
464+
ui->cmbCdoc2Name->setItemText(ui->cmbCdoc2Name->count() - 1,
465+
tr("Use a manually specified key transfer server for encryption"));
427466
}
428467

429468
void SettingsDialog::updateCert(const QSslCertificate &c, QPushButton *btn, CertLabel *lbl)
@@ -439,6 +478,11 @@ void SettingsDialog::updateCert(const QSslCertificate &c, QPushButton *btn, Cert
439478
});
440479
}
441480

481+
void SettingsDialog::updateCDoc2Cert(const QSslCertificate &c)
482+
{
483+
updateCert(c, ui->btShowCDoc2Cert, ui->txtCDoc2Cert);
484+
}
485+
442486
void SettingsDialog::updateSiVaCert(const QSslCertificate &c)
443487
{
444488
updateCert(c, ui->btShowSiVaCert, ui->txtSiVaCert);
@@ -469,8 +513,8 @@ void SettingsDialog::selectLanguage()
469513

470514
void SettingsDialog::updateVersion()
471515
{
472-
ui->txtNavVersion->setText(tr("%1 version %2, released %3")
473-
.arg(tr("DigiDoc4 Client"), QApplication::applicationVersion(), QStringLiteral(BUILD_DATE)));
516+
ui->txtNavVersion->setText(tr("DigiDoc4 version %1, released %2")
517+
.arg(QApplication::applicationVersion(), QStringLiteral(BUILD_DATE)));
474518
}
475519

476520
void SettingsDialog::saveProxy()
@@ -519,7 +563,7 @@ void SettingsDialog::updateDiagnostics()
519563
QApplication::setOverrideCursor( Qt::WaitCursor );
520564
auto *worker = new Diagnostics();
521565
connect(worker, &Diagnostics::update, ui->txtDiagnostics, &QTextBrowser::insertHtml, Qt::QueuedConnection);
522-
connect(worker, &Diagnostics::destroyed, this, [=]{
566+
connect(worker, &Diagnostics::destroyed, this, [this]{
523567
ui->txtDiagnostics->setEnabled(true);
524568
ui->txtDiagnostics->moveCursor(QTextCursor::Start);
525569
ui->txtDiagnostics->ensureCursorVisible();

client/dialogs/SettingsDialog.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class SettingsDialog final: public QDialog
7171
QSslCertificate selectCert(const QString &label, const QString &format);
7272
void selectLanguage();
7373
void updateCert(const QSslCertificate &c, QPushButton *btn, CertLabel *lbl);
74+
void updateCDoc2Cert(const QSslCertificate &c);
7475
void updateSiVaCert(const QSslCertificate &c);
7576
void updateTSACert(const QSslCertificate &c);
7677
void updateVersion();

0 commit comments

Comments
 (0)