diff options
Diffstat (limited to 'src/ui/keypair_details/KeyPairDetailTab.cpp')
-rw-r--r-- | src/ui/keypair_details/KeyPairDetailTab.cpp | 309 |
1 files changed, 0 insertions, 309 deletions
diff --git a/src/ui/keypair_details/KeyPairDetailTab.cpp b/src/ui/keypair_details/KeyPairDetailTab.cpp index 54b845ab..b3a5e296 100644 --- a/src/ui/keypair_details/KeyPairDetailTab.cpp +++ b/src/ui/keypair_details/KeyPairDetailTab.cpp @@ -26,11 +26,8 @@ #include "gpg/function/GpgKeyGetter.h" #include "gpg/function/GpgKeyImportExporter.h" -#include "gpg/function/GpgKeyOpera.h" #include "ui/SignalStation.h" -#include "ui/UserInterfaceUtils.h" #include "ui/WaitingDialog.h" -#include "ui/settings/GlobalSettingStation.h" namespace GpgFrontend::UI { KeyPairDetailTab::KeyPairDetailTab(const std::string& key_id, QWidget* parent) @@ -134,66 +131,6 @@ KeyPairDetailTab::KeyPairDetailTab(const std::string& key_id, QWidget* parent) mvbox->addWidget(fingerprintBox); mvbox->addStretch(); - // Set Menu - createOperaMenu(); - - auto* opera_key_box = new QGroupBox(_("Operations")); - auto* vbox_p_k = new QVBoxLayout(); - - auto export_h_box_layout = new QHBoxLayout(); - vbox_p_k->addLayout(export_h_box_layout); - - auto* export_public_button = new QPushButton(_("Export Public Key")); - export_h_box_layout->addWidget(export_public_button); - connect(export_public_button, SIGNAL(clicked()), this, - SLOT(slotExportPublicKey())); - - if (mKey.is_private_key()) { - auto* export_private_button = new QPushButton(_("Export Private Key")); - export_private_button->setStyleSheet("text-align:center;"); - export_private_button->setMenu(secretKeyExportOperaMenu); - export_h_box_layout->addWidget(export_private_button); - - if (mKey.has_master_key()) { - auto* edit_expires_button = - new QPushButton(_("Modify Expiration Datetime (Primary Key)")); - connect(edit_expires_button, SIGNAL(clicked()), this, - SLOT(slotModifyEditDatetime())); - auto* edit_password_button = new QPushButton(_("Modify Password")); - connect(edit_password_button, SIGNAL(clicked()), this, - SLOT(slotModifyPassword())); - - auto edit_h_box_layout = new QHBoxLayout(); - edit_h_box_layout->addWidget(edit_expires_button); - edit_h_box_layout->addWidget(edit_password_button); - vbox_p_k->addLayout(edit_h_box_layout); - } - } - - auto advance_h_box_layout = new QHBoxLayout(); - auto* key_server_opera_button = - new QPushButton(_("Key Server Operation (Pubkey)")); - key_server_opera_button->setStyleSheet("text-align:center;"); - key_server_opera_button->setMenu(keyServerOperaMenu); - advance_h_box_layout->addWidget(key_server_opera_button); - - if (mKey.is_private_key() && mKey.has_master_key()) { - auto* revoke_cert_gen_button = - new QPushButton(_("Generate Revoke Certificate")); - connect(revoke_cert_gen_button, SIGNAL(clicked()), this, - SLOT(slotGenRevokeCert())); - advance_h_box_layout->addWidget(revoke_cert_gen_button); - } - - auto* modify_tofu_button = new QPushButton(_("Modify TOFU Policy")); - connect(modify_tofu_button, SIGNAL(clicked()), this, - SLOT(slotModifyTOFUPolicy())); - - vbox_p_k->addLayout(advance_h_box_layout); - opera_key_box->setLayout(vbox_p_k); - mvbox->addWidget(opera_key_box); - vbox_p_k->addWidget(modify_tofu_button); - auto* expBox = new QHBoxLayout(); QPixmap pixmap(":warning.png"); @@ -218,126 +155,12 @@ KeyPairDetailTab::KeyPairDetailTab(const std::string& key_id, QWidget* parent) setLayout(mvbox); } -void KeyPairDetailTab::slotExportPublicKey() { - ByteArrayPtr keyArray = nullptr; - - if (!GpgKeyImportExporter::GetInstance().ExportKey(mKey, keyArray)) { - QMessageBox::critical(this, _("Error"), - _("An error occurred during the export operation.")); - return; - } - auto file_string = - mKey.name() + " " + mKey.email() + "(" + mKey.id() + ")_pub.asc"; - auto file_name = - QFileDialog::getSaveFileName( - this, _("Export Key To File"), QString::fromStdString(file_string), - QString(_("Key Files")) + " (*.asc *.txt);;All Files (*)") - .toStdString(); - - if (file_name.empty()) return; - - if (!write_buffer_to_file(file_name, *keyArray)) { - QMessageBox::critical( - this, _("Export Error"), - QString(_("Couldn't open %1 for writing")).arg(file_name.c_str())); - return; - } -} - -void KeyPairDetailTab::slotExportShortPrivateKey() { - // Show a information box with explanation about private key - int ret = QMessageBox::information( - this, _("Exporting short private Key"), - "<h3>" + QString(_("You are about to export your")) + - "<font color=\"red\">" + _(" PRIVATE KEY ") + "</font>!</h3>\n" + - _("This is NOT your Public Key, so DON'T give it away.") + "<br />" + - _("Do you REALLY want to export your PRIVATE KEY in a Minimum " - "Size?") + - "<br />" + - _("For OpenPGP keys it removes all signatures except for the latest " - "self-signatures."), - QMessageBox::Cancel | QMessageBox::Ok); - - // export key, if ok was clicked - if (ret == QMessageBox::Ok) { - ByteArrayPtr keyArray = nullptr; - - if (!GpgKeyImportExporter::GetInstance().ExportSecretKeyShortest( - mKey, keyArray)) { - QMessageBox::critical( - this, _("Error"), - _("An error occurred during the export operation.")); - return; - } - auto file_string = mKey.name() + " " + mKey.email() + "(" + mKey.id() + - ")_short_secret.asc"; - auto file_name = - QFileDialog::getSaveFileName( - this, _("Export Key To File"), QString::fromStdString(file_string), - QString(_("Key Files")) + " (*.asc *.txt);;All Files (*)") - .toStdString(); - - if (file_name.empty()) return; - - if (!write_buffer_to_file(file_name, *keyArray)) { - QMessageBox::critical( - this, _("Export Error"), - QString(_("Couldn't open %1 for writing")).arg(file_name.c_str())); - return; - } - } -} - -void KeyPairDetailTab::slotExportPrivateKey() { - // Show a information box with explanation about private key - int ret = QMessageBox::information( - this, _("Exporting private Key"), - "<h3>" + QString(_("You are about to export your")) + - "<font color=\"red\">" + _(" PRIVATE KEY ") + "</font>!</h3>\n" + - _("This is NOT your Public Key, so DON'T give it away.") + "<br />" + - _("Do you REALLY want to export your PRIVATE KEY?"), - QMessageBox::Cancel | QMessageBox::Ok); - - // export key, if ok was clicked - if (ret == QMessageBox::Ok) { - ByteArrayPtr keyArray = nullptr; - - if (!GpgKeyImportExporter::GetInstance().ExportSecretKey(mKey, keyArray)) { - QMessageBox::critical( - this, _("Error"), - _("An error occurred during the export operation.")); - return; - } - auto file_string = mKey.name() + " " + mKey.email() + "(" + mKey.id() + - ")_full_secret.asc"; - auto file_name = - QFileDialog::getSaveFileName( - this, _("Export Key To File"), QString::fromStdString(file_string), - QString(_("Key Files")) + " (*.asc *.txt);;All Files (*)") - .toStdString(); - - if (file_name.empty()) return; - - if (!write_buffer_to_file(file_name, *keyArray)) { - QMessageBox::critical( - this, _("Export Error"), - QString(_("Couldn't open %1 for writing")).arg(file_name.c_str())); - return; - } - } -} - void KeyPairDetailTab::slotCopyFingerprint() { QString fpr = fingerPrintVarLabel->text().trimmed().replace(" ", QString()); QClipboard* cb = QApplication::clipboard(); cb->setText(fpr); } -void KeyPairDetailTab::slotModifyEditDatetime() { - auto dialog = new KeySetExpireDateDialog(mKey.id(), this); - dialog->show(); -} - void KeyPairDetailTab::slotRefreshKeyInfo() { // Show the situation that primary key not exists. masterKeyExistVarLabel->setText(mKey.has_master_key() ? _("Exists") @@ -430,142 +253,10 @@ void KeyPairDetailTab::slotRefreshKeyInfo() { } } -void KeyPairDetailTab::createOperaMenu() { - keyServerOperaMenu = new QMenu(this); - - auto* uploadKeyPair = new QAction(_("Upload Key Pair to Key Server"), this); - connect(uploadKeyPair, SIGNAL(triggered()), this, - SLOT(slotUploadKeyToServer())); - if (!(mKey.is_private_key() && mKey.has_master_key())) - uploadKeyPair->setDisabled(true); - - auto* updateKeyPair = new QAction(_("Sync Key Pair From Key Server"), this); - connect(updateKeyPair, SIGNAL(triggered()), this, - SLOT(slotUpdateKeyFromServer())); - - // when a key has primary key, it should always upload to keyserver. - if (mKey.has_master_key()) { - updateKeyPair->setDisabled(true); - } - - keyServerOperaMenu->addAction(uploadKeyPair); - keyServerOperaMenu->addAction(updateKeyPair); - - secretKeyExportOperaMenu = new QMenu(this); - - auto* exportFullSecretKey = new QAction(_("Export Full Secret Key"), this); - connect(exportFullSecretKey, SIGNAL(triggered()), this, - SLOT(slotExportPrivateKey())); - if (!mKey.is_private_key()) exportFullSecretKey->setDisabled(true); - - auto* exportShortestSecretKey = - new QAction(_("Export Shortest Secret Key"), this); - connect(exportShortestSecretKey, SIGNAL(triggered()), this, - SLOT(slotExportShortPrivateKey())); - - secretKeyExportOperaMenu->addAction(exportFullSecretKey); - secretKeyExportOperaMenu->addAction(exportShortestSecretKey); -} - -void KeyPairDetailTab::slotUploadKeyToServer() { - auto keys = std::make_unique<KeyIdArgsList>(); - keys->push_back(mKey.id()); - auto* dialog = new KeyUploadDialog(keys, this); - dialog->show(); - dialog->slotUpload(); -} - -void KeyPairDetailTab::slotUpdateKeyFromServer() { - auto keys = std::make_unique<KeyIdArgsList>(); - keys->push_back(mKey.id()); - auto* dialog = new KeyServerImportDialog(this); - dialog->show(); - dialog->slotImport(keys); -} - -void KeyPairDetailTab::slotGenRevokeCert() { - auto literal = QString("%1 (*.rev)").arg(_("Revocation Certificates")); - QString m_output_file_name; - - QFileDialog dialog(this, "Generate revocation certificate", QString(), - literal); - dialog.setDefaultSuffix(".rev"); - dialog.setAcceptMode(QFileDialog::AcceptSave); - - if (dialog.exec()) m_output_file_name = dialog.selectedFiles().front(); - - if (!m_output_file_name.isEmpty()) - CommonUtils::GetInstance()->slotExecuteGpgCommand( - {"--command-fd", "0", "--status-fd", "1", "--no-tty", "-o", - m_output_file_name, "--gen-revoke", mKey.fpr().c_str()}, - [](QProcess* proc) -> void { - // Code From Gpg4Win - while (proc->canReadLine()) { - const QString line = QString::fromUtf8(proc->readLine()).trimmed(); - LOG(INFO) << "line" << line.toStdString(); - if (line == QLatin1String("[GNUPG:] GET_BOOL gen_revoke.okay")) { - proc->write("y\n"); - } else if (line == QLatin1String("[GNUPG:] GET_LINE " - "ask_revocation_reason.code")) { - proc->write("0\n"); - } else if (line == QLatin1String("[GNUPG:] GET_LINE " - "ask_revocation_reason.text")) { - proc->write("\n"); - } else if (line == - QLatin1String( - "[GNUPG:] GET_BOOL openfile.overwrite.okay")) { - // We asked before - proc->write("y\n"); - } else if (line == QLatin1String("[GNUPG:] GET_BOOL " - "ask_revocation_reason.okay")) { - proc->write("y\n"); - } - } - }); -} void KeyPairDetailTab::slotRefreshKey() { LOG(INFO) << _("Called"); this->mKey = GpgKeyGetter::GetInstance().GetKey(mKey.id()); this->slotRefreshKeyInfo(); } -void KeyPairDetailTab::slotModifyPassword() { - auto err = GpgKeyOpera::GetInstance().ModifyPassword(mKey); - if (check_gpg_error_2_err_code(err) != GPG_ERR_NO_ERROR) { - QMessageBox::critical(this, _("Not Successful"), - QString(_("Modify password not successfully."))); - } -} - -void KeyPairDetailTab::slotModifyTOFUPolicy() { - QStringList items; - items << _("Policy Auto") << _("Policy Good") << _("Policy Bad") - << _("Policy Ask") << _("Policy Unknown"); - - bool ok; - QString item = QInputDialog::getItem( - this, _("Modify TOFU Policy(Default is Auto)"), - _("Policy for the Key Pair:"), items, 0, false, &ok); - if (ok && !item.isEmpty()) { - LOG(INFO) << "selected policy" << item.toStdString(); - gpgme_tofu_policy_t tofu_policy = GPGME_TOFU_POLICY_AUTO; - if (item == _("Policy Auto")) { - tofu_policy = GPGME_TOFU_POLICY_AUTO; - } else if (item == _("Policy Good")) { - tofu_policy = GPGME_TOFU_POLICY_GOOD; - } else if (item == _("Policy Bad")) { - tofu_policy = GPGME_TOFU_POLICY_BAD; - } else if (item == _("Policy Ask")) { - tofu_policy = GPGME_TOFU_POLICY_ASK; - } else if (item == _("Policy Unknown")) { - tofu_policy = GPGME_TOFU_POLICY_UNKNOWN; - } - auto err = GpgKeyOpera::GetInstance().ModifyTOFUPolicy(mKey, tofu_policy); - if (check_gpg_error_2_err_code(err) != GPG_ERR_NO_ERROR) { - QMessageBox::critical(this, _("Not Successful"), - QString(_("Modify TOFU policy not successfully."))); - } - } -} - } // namespace GpgFrontend::UI |