aboutsummaryrefslogtreecommitdiff
path: root/src/certificateselectiondialog.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-10 21:38:05 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-10 21:38:05 +0200
commitab3e5ad5f25862985c17ba557163a1902b54747f (patch)
treeab91f5b8a245a6b506a00e9b0533b096d0753ea4 /src/certificateselectiondialog.cpp
parentfeb37f7d6b8730e94821fc6d70fb742ff393517d (diff)
downloadkristall-ab3e5ad5f25862985c17ba557163a1902b54747f.tar.gz
Adds install target to makefile, adds support for transient client certificates.
Diffstat (limited to 'src/certificateselectiondialog.cpp')
-rw-r--r--src/certificateselectiondialog.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/certificateselectiondialog.cpp b/src/certificateselectiondialog.cpp
new file mode 100644
index 0000000..70dac42
--- /dev/null
+++ b/src/certificateselectiondialog.cpp
@@ -0,0 +1,71 @@
+#include "certificateselectiondialog.hpp"
+#include "ui_certificateselectiondialog.h"
+
+#include "certificatehelper.hpp"
+
+CertificateSelectionDialog::CertificateSelectionDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::CertificateSelectionDialog)
+{
+ ui->setupUi(this);
+ this->ui->server_request->setVisible(false);
+}
+
+CertificateSelectionDialog::~CertificateSelectionDialog()
+{
+ delete ui;
+}
+
+void CertificateSelectionDialog::setServerQuery(const QString &query)
+{
+ this->ui->server_request->setText(query);
+ this->ui->server_request->setVisible(not query.isEmpty());
+}
+
+CryptoIdentity CertificateSelectionDialog::identity() const
+{
+ return cryto_identity;
+}
+
+void CertificateSelectionDialog::on_use_temp_cert_30m_clicked()
+{
+ acceptTemporaryWithTimeout(QDateTime::currentDateTime().addSecs(1800 * 12));
+}
+
+void CertificateSelectionDialog::on_use_temp_cert_1h_clicked()
+{
+ acceptTemporaryWithTimeout(QDateTime::currentDateTime().addSecs(3600));
+}
+
+void CertificateSelectionDialog::on_use_temp_cert_12h_clicked()
+{
+ acceptTemporaryWithTimeout(QDateTime::currentDateTime().addSecs(3600 * 12));
+}
+
+void CertificateSelectionDialog::on_use_temp_cert_24h_clicked()
+{
+ acceptTemporaryWithTimeout(QDateTime::currentDateTime().addDays(1));
+}
+
+void CertificateSelectionDialog::on_use_temp_cert_48h_clicked()
+{
+ acceptTemporaryWithTimeout(QDateTime::currentDateTime().addDays(2));
+}
+
+#include <QRandomGenerator>
+
+void CertificateSelectionDialog::acceptTemporaryWithTimeout(QDateTime timeout)
+{
+ QRandomGenerator rng;
+
+ char items[8];
+ for(auto & c : items) {
+ c = rng.bounded(std::numeric_limits<char>::min(), std::numeric_limits<char>::max());
+ }
+
+ this->cryto_identity = CertificateHelper::createNewIdentity(
+ QByteArray(items, sizeof items).toBase64(QByteArray::OmitTrailingEquals),
+ timeout);
+
+ this->accept();
+}