aboutsummaryrefslogtreecommitdiff
path: root/src/certificatemanagementdialog.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-22 21:10:04 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-22 21:10:04 +0200
commit75ec461eeaa851cb5c53f4cfffc434e3e529ed1d (patch)
tree3944737340718ca3675381aa06636045d397e780 /src/certificatemanagementdialog.cpp
parent8dbfb0890560fd1cd698d06fa05ac868c4db8576 (diff)
downloadkristall-75ec461eeaa851cb5c53f4cfffc434e3e529ed1d.tar.gz
Restructures the project source and cleans up a bit
Diffstat (limited to 'src/certificatemanagementdialog.cpp')
-rw-r--r--src/certificatemanagementdialog.cpp308
1 files changed, 0 insertions, 308 deletions
diff --git a/src/certificatemanagementdialog.cpp b/src/certificatemanagementdialog.cpp
deleted file mode 100644
index 5141b30..0000000
--- a/src/certificatemanagementdialog.cpp
+++ /dev/null
@@ -1,308 +0,0 @@
-#include "certificatemanagementdialog.hpp"
-#include "ui_certificatemanagementdialog.h"
-
-#include "kristall.hpp"
-
-#include "newidentitiydialog.hpp"
-#include "certificateiodialog.hpp"
-#include "ioutil.hpp"
-
-#include <QCryptographicHash>
-#include <QMessageBox>
-
-CertificateManagementDialog::CertificateManagementDialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::CertificateManagementDialog),
- selected_identity { nullptr }
-{
- ui->setupUi(this);
-
- this->ui->certificates->setModel(&global_identities);
- this->ui->certificates->expandAll();
-
- connect(
- this->ui->certificates->selectionModel(),
- &QItemSelectionModel::currentChanged,
- this,
- &CertificateManagementDialog::on_certificates_selected
- );
- on_certificates_selected(QModelIndex { }, QModelIndex { });
-}
-
-CertificateManagementDialog::~CertificateManagementDialog()
-{
- delete ui;
-}
-
-void CertificateManagementDialog::on_certificates_selected(QModelIndex const& index, QModelIndex const & previous)
-{
- Q_UNUSED(previous);
-
- selected_identity = global_identities.getMutableIdentity(index);
-
- this->ui->export_cert_button->setEnabled(selected_identity != nullptr);
-
- if(selected_identity != nullptr)
- {
- auto & cert = *selected_identity;
- this->ui->groupBox->setEnabled(true);
- this->ui->cert_display_name->setText(cert.display_name);
- this->ui->cert_common_name->setText(cert.certificate.subjectInfo(QSslCertificate::CommonName).join(", "));
- this->ui->cert_expiration_date->setDateTime(cert.certificate.expiryDate());
- this->ui->cert_livetime->setText(QString("%1 days").arg(QDateTime::currentDateTime().daysTo(cert.certificate.expiryDate())));
- this->ui->cert_fingerprint->setPlainText(toFingerprintString(cert.certificate));
- this->ui->cert_notes->setPlainText(cert.user_notes);
-
- this->ui->cert_host_filter->setText(cert.host_filter);
- this->ui->cert_auto_enable->setEnabled(not cert.host_filter.isEmpty());
- this->ui->cert_auto_enable->setChecked(cert.auto_enable);
-
- this->ui->delete_cert_button->setEnabled(true);
- }
- else
- {
- this->ui->groupBox->setEnabled(false);
- this->ui->cert_display_name->setText("");
- this->ui->cert_common_name->setText("");
- this->ui->cert_expiration_date->setDateTime(QDateTime { });
- this->ui->cert_livetime->setText("");
- this->ui->cert_fingerprint->setPlainText("");
- this->ui->cert_host_filter->setText("");
- this->ui->cert_auto_enable->setChecked(false);
-
- if(auto group_name = global_identities.group(index); not group_name.isEmpty()) {
- this->ui->delete_cert_button->setEnabled(global_identities.canDeleteGroup(group_name));
- } else {
- this->ui->delete_cert_button->setEnabled(false);
- }
- }
-}
-
-void CertificateManagementDialog::on_cert_notes_textChanged()
-{
- if(this->selected_identity != nullptr) {
- this->selected_identity->user_notes = this->ui->cert_notes->toPlainText();
- }
-}
-
-void CertificateManagementDialog::on_cert_display_name_textChanged(const QString &arg1)
-{
- Q_UNUSED(arg1)
- if(this->selected_identity != nullptr) {
- this->selected_identity->display_name = this->ui->cert_display_name->text();
- }
-}
-
-void CertificateManagementDialog::on_delete_cert_button_clicked()
-{
- auto index = this->ui->certificates->currentIndex();
-
- if(global_identities.getMutableIdentity(index) != nullptr)
- {
- auto answer = QMessageBox::question(
- this,
- "Kristall",
- "Do you really want to delete this certificate?\r\n\r\nYou will not be able to restore the identity after this!",
- QMessageBox::Yes | QMessageBox::No,
- QMessageBox::No
- );
- if(answer != QMessageBox::Yes)
- return;
- if(not global_identities.destroyIdentity(index)) {
- QMessageBox::warning(this, "Kristall", "Could not destroy identity!");
- }
- }
- else if(auto group_name = global_identities.group(index); not group_name.isEmpty()) {
-
- auto answer = QMessageBox::question(
- this,
- "Kristall",
- QString("Do you want to delete the group '%1'").arg(group_name)
- );
- if(answer != QMessageBox::Yes)
- return;
-
- if(not global_identities.deleteGroup(group_name)) {
- QMessageBox::warning(this, "Kristall", "Could not delete group!");
- }
- }
-}
-
-void CertificateManagementDialog::on_export_cert_button_clicked()
-{
- if(this->selected_identity == nullptr)
- return;
- CertificateIoDialog dialog { this };
-
- dialog.setKeyAlgorithm(this->selected_identity->private_key.algorithm());
- dialog.setIoMode(CertificateIoDialog::Export);
-
- if(dialog.exec() != QDialog::Accepted)
- return;
-
- {
- QFile cert_file { dialog.certificateFileName() };
- if(not cert_file.open(QFile::WriteOnly)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The file %1 could not be found!").arg(dialog.certificateFileName())
- );
- return;
- }
-
- QByteArray cert_blob;
- if(dialog.certificateFileName().endsWith(".der")) {
- cert_blob = this->selected_identity->certificate.toDer();
- } else {
- cert_blob = this->selected_identity->certificate.toPem();
- }
-
- if(not IoUtil::writeAll(cert_file, cert_blob)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The file %1 could not be created found!").arg(dialog.certificateFileName())
- );
- return;
- }
- }
-
- {
- QFile key_file { dialog.keyFileName() };
- if(not key_file.open(QFile::WriteOnly)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The file %1 could not be found!").arg(dialog.keyFileName())
- );
- return;
- }
-
- QByteArray key_blob;
- if(dialog.keyFileName().endsWith(".der")) {
- key_blob = this->selected_identity->private_key.toDer();
- } else {
- key_blob = this->selected_identity->private_key.toPem();
- }
-
- if(not IoUtil::writeAll(key_file, key_blob)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The file %1 could not be created found!").arg(dialog.keyFileName())
- );
- return;
- }
- }
-}
-
-void CertificateManagementDialog::on_import_cert_button_clicked()
-{
- CertificateIoDialog dialog { this };
-
- dialog.setIoMode(CertificateIoDialog::Import);
-
- if(dialog.exec() != QDialog::Accepted)
- return;
-
- QFile cert_file { dialog.certificateFileName() };
- if(not cert_file.open(QFile::ReadOnly)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The file %1 could not be found!").arg(dialog.certificateFileName())
- );
- return;
- }
-
- QFile key_file { dialog.keyFileName() };
- if(not key_file.open(QFile::ReadOnly)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The file %1 could not be found!").arg(dialog.keyFileName())
- );
- return;
- }
-
- CryptoIdentity ident;
- ident.private_key = QSslKey {
- &key_file,
- dialog.keyAlgorithm(),
- dialog.keyFileName().endsWith(".der") ? QSsl::Der : QSsl::Pem,
- QSsl::PrivateKey
- };
- ident.certificate = QSslCertificate {
- &cert_file,
- dialog.keyFileName().endsWith(".der") ? QSsl::Der : QSsl::Pem,
- };
- ident.user_notes = tr("Imported from:\r\nkey: %1\r\n:cert: %2").arg(dialog.keyFileName()).arg(dialog.certificateFileName());
- ident.display_name = "Imported Certificate";
- ident.auto_enable = false;
- ident.host_filter = "";
- ident.is_persistent = true;
-
- if(ident.private_key.isNull()) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The key file %1 could not be loaded. Please verify your key file.").arg(dialog.keyFileName())
- );
- return;
- }
-
- if(ident.certificate.isNull()) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("The certificate file %1 could not be loaded. Please verify your certificate.").arg(dialog.keyFileName())
- );
- return;
- }
-
- if(not global_identities.addCertificate(tr("Imported Certificates"), ident)) {
- QMessageBox::warning(
- this,
- "Kristall",
- tr("Failed to import the certificate.")
- );
- }
-}
-
-void CertificateManagementDialog::on_create_cert_button_clicked()
-{
- NewIdentitiyDialog dialog { this };
-
- dialog.setGroupName(global_identities.group(this->ui->certificates->currentIndex()));
-
- if(dialog.exec() != QDialog::Accepted)
- return;
-
- auto id = dialog.createIdentity();
- if(not id.isValid())
- return;
- id.is_persistent = true;
-
- global_identities.addCertificate(
- dialog.groupName(),
- id);
-}
-
-void CertificateManagementDialog::on_cert_host_filter_textChanged(const QString &host_filter)
-{
- if(this->selected_identity != nullptr) {
- this->ui->cert_auto_enable->setEnabled(not host_filter.isEmpty());
- this->selected_identity->host_filter = host_filter;
- } else {
- this->ui->cert_auto_enable->setEnabled(false);
- }
-
-}
-
-void CertificateManagementDialog::on_cert_auto_enable_clicked(bool checked)
-{
- if(this->selected_identity != nullptr) {
- this->selected_identity->auto_enable = checked;
- }
-}