From 95997d27106daf91336847f50efaaa32279b7fc7 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 16 Oct 2023 17:54:05 +0800 Subject: fix: check and update copyright at files --- src/ui/dialog/import_export/ExportKeyPackageDialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index b58d09c1..a63438f6 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2021 Saturneric + * Copyright (C) 2021 Saturneric * * This file is part of GpgFrontend. * @@ -20,7 +20,7 @@ * the gpg4usb project, which is under GPL-3.0-or-later. * * All the source code of GpgFrontend was modified and released by - * Saturneric starting on May 12, 2021. + * Saturneric starting on May 12, 2021. * * SPDX-License-Identifier: GPL-3.0-or-later * -- cgit v1.2.3 From 4dcd2ac8c4f673fc21c4cf0072d6cb648ca64e7e Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 7 Nov 2023 15:57:28 +0800 Subject: refactor: separate typedef and impl --- src/ui/dialog/import_export/ExportKeyPackageDialog.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index a63438f6..854152ae 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -30,6 +30,7 @@ #include +#include "core/GpgModel.h" #include "core/function/KeyPackageOperator.h" #include "core/function/gpg/GpgKeyGetter.h" #include "ui_ExportKeyPackageDialog.h" -- cgit v1.2.3 From 883db05d54510e76b6548e107593187e1306117d Mon Sep 17 00:00:00 2001 From: saturneric Date: Sun, 3 Dec 2023 04:28:46 -0800 Subject: feat: general improvements of aync execution and memory security --- src/ui/dialog/import_export/ExportKeyPackageDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index 854152ae..4b616741 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -38,7 +38,7 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( KeyIdArgsListPtr key_ids, QWidget* parent) : GeneralDialog(typeid(ExportKeyPackageDialog).name(), parent), - ui_(std::make_shared()), + ui_(GpgFrontend::SecureCreateSharedObject()), key_ids_(std::move(key_ids)) { ui_->setupUi(this); -- cgit v1.2.3 From 0266ff1bbce2feccec34ab789f9e378948d1b24d Mon Sep 17 00:00:00 2001 From: saturneric Date: Thu, 11 Jan 2024 11:05:45 +0800 Subject: feat: improve api and ui of keys import and export --- .../import_export/ExportKeyPackageDialog.cpp | 71 ++++++++++++++-------- 1 file changed, 44 insertions(+), 27 deletions(-) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index 4b616741..66ecb3c9 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -33,6 +33,7 @@ #include "core/GpgModel.h" #include "core/function/KeyPackageOperator.h" #include "core/function/gpg/GpgKeyGetter.h" +#include "ui/UserInterfaceUtils.h" #include "ui_ExportKeyPackageDialog.h" GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( @@ -98,36 +99,52 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( } // get suitable key ids - auto key_id_exported = std::make_unique(); auto keys = GpgKeyGetter::GetInstance().GetKeys(key_ids_); - for (const auto& key : *keys) { - if (ui_->noPublicKeyCheckBox->isChecked() && !key.IsPrivateKey()) - continue; - key_id_exported->push_back(key.GetId()); + auto keys_new_end = + std::remove_if(keys->begin(), keys->end(), [this](const auto& key) { + return ui_->noPublicKeyCheckBox->isChecked() && !key.IsPrivateKey(); + }); + keys->erase(keys_new_end, keys->end()); + + if (keys->empty()) { + QMessageBox::critical(this, _("Error"), + _("No key is suitable to export.")); + return; } - if (KeyPackageOperator::GenerateKeyPackage( - ui_->outputPathLabel->text().toStdString(), - ui_->nameValueLabel->text().toStdString(), key_id_exported, - passphrase_, ui_->includeSecretKeyCheckBox->isChecked())) { - QMessageBox::information( - this, _("Success"), - QString( - _("The Key Package has been successfully generated and has been " - "protected by encryption algorithms(AES-256-ECB). You can " - "safely transfer your Key Package.")) + - "

" + "" + - _("But the key file cannot be leaked under any " - "circumstances. Please delete the Key Package and key file as " - "soon " - "as possible after completing the transfer operation.") + - ""); - accept(); - } else { - QMessageBox::critical( - this, _("Error"), - _("An error occurred while exporting the key package.")); - } + CommonUtils::WaitForOpera( + this, _("Generating"), [this, keys](const OperaWaitingHd& op_hd) { + KeyPackageOperator::GenerateKeyPackage( + ui_->outputPathLabel->text().toStdString(), + ui_->nameValueLabel->text().toStdString(), *keys, passphrase_, + ui_->includeSecretKeyCheckBox->isChecked(), + [=](GFError err, const DataObjectPtr&) { + // stop waiting + op_hd(); + + if (err >= 0) { + QMessageBox::information( + this, _("Success"), + QString( + _("The Key Package has been successfully generated " + "and has been protected by encryption " + "algorithms(AES-256-ECB). You can safely transfer " + "your Key Package.")) + + "

" + "" + + _("But the key file cannot be leaked under any " + "circumstances. Please delete the Key Package and " + "key file as soon as possible after completing the " + "transfer " + "operation.") + + ""); + accept(); + } else { + QMessageBox::critical( + this, _("Error"), + _("An error occurred while exporting the key package.")); + } + }); + }); }); connect(ui_->button_box_, &QDialogButtonBox::rejected, this, -- cgit v1.2.3 From bf538056b24a68b8fd235b1c50991ee8eb46a776 Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 12 Jan 2024 14:02:37 +0800 Subject: refactor: use QString instead of std::string and improve threading system --- src/ui/dialog/import_export/ExportKeyPackageDialog.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index 66ecb3c9..62631905 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -28,8 +28,6 @@ #include "ExportKeyPackageDialog.h" -#include - #include "core/GpgModel.h" #include "core/function/KeyPackageOperator.h" #include "core/function/gpg/GpgKeyGetter.h" @@ -43,12 +41,10 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( key_ids_(std::move(key_ids)) { ui_->setupUi(this); - ui_->nameValueLabel->setText( - KeyPackageOperator::GenerateKeyPackageName().c_str()); + ui_->nameValueLabel->setText(KeyPackageOperator::GenerateKeyPackageName()); connect(ui_->gnerateNameButton, &QPushButton::clicked, this, [=]() { - ui_->nameValueLabel->setText( - KeyPackageOperator::GenerateKeyPackageName().c_str()); + ui_->nameValueLabel->setText(KeyPackageOperator::GenerateKeyPackageName()); }); connect(ui_->setOutputPathButton, &QPushButton::clicked, this, [=]() { @@ -116,7 +112,7 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( this, _("Generating"), [this, keys](const OperaWaitingHd& op_hd) { KeyPackageOperator::GenerateKeyPackage( ui_->outputPathLabel->text().toStdString(), - ui_->nameValueLabel->text().toStdString(), *keys, passphrase_, + ui_->nameValueLabel->text(), *keys, passphrase_, ui_->includeSecretKeyCheckBox->isChecked(), [=](GFError err, const DataObjectPtr&) { // stop waiting -- cgit v1.2.3 From 6983b5c1dd82d159236ebd06cf17f071cc9c1ee9 Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 12 Jan 2024 23:08:38 +0800 Subject: refactor: remove boost and use QString instead of std::filesystem::path --- src/ui/dialog/import_export/ExportKeyPackageDialog.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index 62631905..2883d486 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -67,8 +67,7 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( // check path if (file_name.isEmpty()) return; - if (!KeyPackageOperator::GeneratePassphrase(file_name.toStdString(), - passphrase_)) { + if (!KeyPackageOperator::GeneratePassphrase(file_name, passphrase_)) { QMessageBox::critical( this, _("Error"), _("An error occurred while generating the passphrase file.")); @@ -111,9 +110,8 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( CommonUtils::WaitForOpera( this, _("Generating"), [this, keys](const OperaWaitingHd& op_hd) { KeyPackageOperator::GenerateKeyPackage( - ui_->outputPathLabel->text().toStdString(), - ui_->nameValueLabel->text(), *keys, passphrase_, - ui_->includeSecretKeyCheckBox->isChecked(), + ui_->outputPathLabel->text(), ui_->nameValueLabel->text(), *keys, + passphrase_, ui_->includeSecretKeyCheckBox->isChecked(), [=](GFError err, const DataObjectPtr&) { // stop waiting op_hd(); -- cgit v1.2.3 From 620ae9e7c1a8b2db2515c080416cb592066e5fec Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 16 Jan 2024 21:35:59 +0800 Subject: refactor: remove libgettext from project --- .../import_export/ExportKeyPackageDialog.cpp | 78 +++++++++++----------- 1 file changed, 40 insertions(+), 38 deletions(-) (limited to 'src/ui/dialog/import_export/ExportKeyPackageDialog.cpp') diff --git a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp index 2883d486..7c740063 100644 --- a/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp +++ b/src/ui/dialog/import_export/ExportKeyPackageDialog.cpp @@ -49,8 +49,9 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( connect(ui_->setOutputPathButton, &QPushButton::clicked, this, [=]() { auto file_name = QFileDialog::getSaveFileName( - this, _("Export Key Package"), ui_->nameValueLabel->text() + ".gfepack", - QString(_("Key Package")) + " (*.gfepack);;All Files (*)"); + this, tr("Export Key Package"), + ui_->nameValueLabel->text() + ".gfepack", + tr("Key Package") + " (*.gfepack);;All Files (*)"); // check path if (file_name.isEmpty()) return; @@ -60,17 +61,17 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( connect(ui_->generatePassphraseButton, &QPushButton::clicked, this, [=]() { auto file_name = QFileDialog::getSaveFileName( - this, _("Export Key Package Passphrase"), + this, tr("Export Key Package Passphrase"), ui_->nameValueLabel->text() + ".key", - QString(_("Key File")) + " (*.key);;All Files (*)"); + tr("Key File") + " (*.key);;All Files (*)"); // check path if (file_name.isEmpty()) return; if (!KeyPackageOperator::GeneratePassphrase(file_name, passphrase_)) { QMessageBox::critical( - this, _("Error"), - _("An error occurred while generating the passphrase file.")); + this, tr("Error"), + tr("An error occurred while generating the passphrase file.")); return; } ui_->passphraseValueLabel->setText(file_name); @@ -79,17 +80,17 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( connect(ui_->button_box_, &QDialogButtonBox::accepted, this, [=]() { if (ui_->outputPathLabel->text().isEmpty()) { QMessageBox::critical( - this, _("Forbidden"), - _("Please select an output path before exporting.")); + this, tr("Forbidden"), + tr("Please select an output path before exporting.")); return; } if (ui_->passphraseValueLabel->text().isEmpty()) { QMessageBox::critical( - this, _("Forbidden"), - _("Please generate a password to protect your key before exporting, " - "it is very important. Don't forget to back up your password in a " - "safe place.")); + this, tr("Forbidden"), + tr("Please generate a password to protect your key before exporting, " + "it is very important. Don't forget to back up your password in a " + "safe place.")); return; } @@ -102,13 +103,13 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( keys->erase(keys_new_end, keys->end()); if (keys->empty()) { - QMessageBox::critical(this, _("Error"), - _("No key is suitable to export.")); + QMessageBox::critical(this, tr("Error"), + tr("No key is suitable to export.")); return; } CommonUtils::WaitForOpera( - this, _("Generating"), [this, keys](const OperaWaitingHd& op_hd) { + this, tr("Generating"), [this, keys](const OperaWaitingHd& op_hd) { KeyPackageOperator::GenerateKeyPackage( ui_->outputPathLabel->text(), ui_->nameValueLabel->text(), *keys, passphrase_, ui_->includeSecretKeyCheckBox->isChecked(), @@ -118,24 +119,25 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( if (err >= 0) { QMessageBox::information( - this, _("Success"), + this, tr("Success"), QString( - _("The Key Package has been successfully generated " - "and has been protected by encryption " - "algorithms(AES-256-ECB). You can safely transfer " - "your Key Package.")) + + tr("The Key Package has been successfully generated " + "and has been protected by encryption " + "algorithms(AES-256-ECB). You can safely transfer " + "your Key Package.")) + "

" + "" + - _("But the key file cannot be leaked under any " - "circumstances. Please delete the Key Package and " - "key file as soon as possible after completing the " - "transfer " - "operation.") + + tr("But the key file cannot be leaked under any " + "circumstances. Please delete the Key Package and " + "key file as soon as possible after completing " + "the " + "transfer " + "operation.") + ""); accept(); } else { QMessageBox::critical( - this, _("Error"), - _("An error occurred while exporting the key package.")); + this, tr("Error"), + tr("An error occurred while exporting the key package.")); } }); }); @@ -144,21 +146,21 @@ GpgFrontend::UI::ExportKeyPackageDialog::ExportKeyPackageDialog( connect(ui_->button_box_, &QDialogButtonBox::rejected, this, [=]() { this->close(); }); - ui_->nameLabel->setText(_("Key Package Name")); - ui_->selectOutputPathLabel->setText(_("Output Path")); - ui_->passphraseLabel->setText(_("Passphrase")); + ui_->nameLabel->setText(tr("Key Package Name")); + ui_->selectOutputPathLabel->setText(tr("Output Path")); + ui_->passphraseLabel->setText(tr("Passphrase")); ui_->tipsLabel->setText( - _("Tips: You can use Key Package to safely and conveniently transfer " - "your public and private keys between devices.")); - ui_->generatePassphraseButton->setText(_("Generate and Save Passphrase")); - ui_->gnerateNameButton->setText(_("Generate Key Package Name")); - ui_->setOutputPathButton->setText(_("Select Output Path")); + tr("Tips: You can use Key Package to safely and conveniently transfer " + "your public and private keys between devices.")); + ui_->generatePassphraseButton->setText(tr("Generate and Save Passphrase")); + ui_->gnerateNameButton->setText(tr("Generate Key Package Name")); + ui_->setOutputPathButton->setText(tr("Select Output Path")); ui_->includeSecretKeyCheckBox->setText( - _("Include secret key (Think twice before acting)")); + tr("Include secret key (Think twice before acting)")); ui_->noPublicKeyCheckBox->setText( - _("Exclude keys that do not have a private key")); + tr("Exclude keys that do not have a private key")); setAttribute(Qt::WA_DeleteOnClose); - setWindowTitle(_("Export As Key Package")); + setWindowTitle(tr("Export As Key Package")); } -- cgit v1.2.3