Issue #55: Refactoring of certificates

This commit is contained in:
Jakub Melka
2023-12-22 19:12:35 +01:00
parent b3580560a4
commit 17f94a102c
22 changed files with 1247 additions and 868 deletions

View File

@@ -23,6 +23,7 @@
#include "pdfwidgetutils.h"
#include "pdfsecurityhandler.h"
#include "pdfcertificatemanager.h"
#include "pdfcertificatelisthelper.h"
#include <QMessageBox>
@@ -84,6 +85,8 @@ PDFEncryptionSettingsDialog::PDFEncryptionSettingsDialog(QByteArray documentId,
m_checkBoxToPermission[ui->permAssembleCheckBox] = pdf::PDFSecurityHandler::Permission::Assemble;
m_checkBoxToPermission[ui->permPrintHighResolutionCheckBox] = pdf::PDFSecurityHandler::Permission::PrintHighResolution;
pdf::PDFCertificateListHelper::initComboBox(ui->certificateComboBox);
updateCertificates();
updateUi();
updatePasswordScore();
@@ -194,17 +197,8 @@ void PDFEncryptionSettingsDialog::updateUi()
void PDFEncryptionSettingsDialog::updateCertificates()
{
QFileInfoList certificates = pdf::PDFCertificateManager::getCertificates();
QVariant currentCertificate = ui->certificateComboBox->currentData();
ui->certificateComboBox->clear();
for (const QFileInfo& certificateItem : certificates)
{
ui->certificateComboBox->addItem(certificateItem.fileName(), certificateItem.absoluteFilePath());
}
ui->certificateComboBox->setCurrentIndex(ui->certificateComboBox->findData(currentCertificate));
m_certificates = pdf::PDFCertificateManager::getCertificates();
pdf::PDFCertificateListHelper::fillComboBox(ui->certificateComboBox, m_certificates);
}
void PDFEncryptionSettingsDialog::updatePasswordScore()
@@ -237,7 +231,12 @@ void PDFEncryptionSettingsDialog::accept()
settings.userPassword = ui->userPasswordEdit->text();
settings.ownerPassword = ui->ownerPasswordEdit->text();
settings.permissions = 0;
settings.certificateFileName = ui->certificateComboBox->currentData().toString();
const int currentCertificateIndex = ui->certificateComboBox->currentIndex();
if (currentCertificateIndex >= 0 && currentCertificateIndex < m_certificates.size())
{
settings.certificate = m_certificates.at(currentCertificateIndex);
}
for (auto item : m_checkBoxToPermission)
{

View File

@@ -20,6 +20,7 @@
#include "pdfviewerglobal.h"
#include "pdfsecurityhandler.h"
#include "pdfcertificatestore.h"
#include <QDialog>
@@ -61,6 +62,7 @@ private:
PDFEncryptionStrengthHintWidget* m_userPasswordStrengthHintWidget;
PDFEncryptionStrengthHintWidget* m_ownerPasswordStrengthHintWidget;
PDFEncryptionStrengthHintWidget* m_algorithmHintWidget;
pdf::PDFCertificateEntries m_certificates;
};
} // namespace pdfviewer

View File

@@ -767,7 +767,7 @@ void PDFSidebarWidget::onSignatureCustomContextMenuRequested(const QPoint& pos)
{
if (QMessageBox::question(this, tr("Add to Trusted Certificate Store"), tr("Are you sure want to add '%1' to the trusted certificate store?").arg(info.getName(pdf::PDFCertificateInfo::CommonName))) == QMessageBox::Yes)
{
if (!m_certificateStore->add(pdf::PDFCertificateStore::EntryType::User, info))
if (!m_certificateStore->add(pdf::PDFCertificateEntry::EntryType::User, info))
{
QMessageBox::critical(this, tr("Trusted Certificate Store Error"), tr("Failed to add certificate to the trusted certificate store."));
}

View File

@@ -675,7 +675,7 @@ void PDFViewerSettingsDialog::updateTrustedCertificatesTable()
ui->trustedCertificateStoreTableWidget->setUpdatesEnabled(false);
ui->trustedCertificateStoreTableWidget->clear();
const pdf::PDFCertificateStore::CertificateEntries& certificates = m_certificateStore.getCertificates();
const pdf::PDFCertificateEntries& certificates = m_certificateStore.getCertificates();
ui->trustedCertificateStoreTableWidget->setRowCount(int(certificates.size()));
ui->trustedCertificateStoreTableWidget->setColumnCount(5);
ui->trustedCertificateStoreTableWidget->verticalHeader()->setVisible(true);
@@ -688,15 +688,11 @@ void PDFViewerSettingsDialog::updateTrustedCertificatesTable()
QString type;
switch (certificates[i].type)
{
case pdf::PDFCertificateStore::EntryType::User:
case pdf::PDFCertificateEntry::EntryType::User:
type = tr("User");
break;
case pdf::PDFCertificateStore::EntryType::EUTL:
type = tr("EUTL");
break;
case pdf::PDFCertificateStore::EntryType::System:
case pdf::PDFCertificateEntry::EntryType::System:
type = tr("System");
break;
@@ -920,8 +916,8 @@ void PDFViewerSettingsDialog::on_removeCertificateButton_clicked()
rows.insert(index.row());
}
pdf::PDFCertificateStore::CertificateEntries newEntries;
const pdf::PDFCertificateStore::CertificateEntries& certificates = m_certificateStore.getCertificates();
pdf::PDFCertificateEntries newEntries;
const pdf::PDFCertificateEntries& certificates = m_certificateStore.getCertificates();
for (int i = 0; i < int(certificates.size()); ++i)
{
if (!rows.count(i))