diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-22 21:10:04 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-22 21:10:04 +0200 |
| commit | 75ec461eeaa851cb5c53f4cfffc434e3e529ed1d (patch) | |
| tree | 3944737340718ca3675381aa06636045d397e780 /src/certificatemanagementdialog.cpp | |
| parent | 8dbfb0890560fd1cd698d06fa05ac868c4db8576 (diff) | |
| download | kristall-75ec461eeaa851cb5c53f4cfffc434e3e529ed1d.tar.gz | |
Restructures the project source and cleans up a bit
Diffstat (limited to 'src/certificatemanagementdialog.cpp')
| -rw-r--r-- | src/certificatemanagementdialog.cpp | 308 |
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; - } -} |
