diff options
Diffstat (limited to 'src/core/function/result_analyse/GpgVerifyResultAnalyse.cpp')
-rw-r--r-- | src/core/function/result_analyse/GpgVerifyResultAnalyse.cpp | 244 |
1 files changed, 128 insertions, 116 deletions
diff --git a/src/core/function/result_analyse/GpgVerifyResultAnalyse.cpp b/src/core/function/result_analyse/GpgVerifyResultAnalyse.cpp index b19db5b2..618275f9 100644 --- a/src/core/function/result_analyse/GpgVerifyResultAnalyse.cpp +++ b/src/core/function/result_analyse/GpgVerifyResultAnalyse.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2021 Saturneric + * Copyright (C) 2021 Saturneric <[email protected]> * * 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<[email protected]> starting on May 12, 2021. + * Saturneric <[email protected]> starting on May 12, 2021. * * SPDX-License-Identifier: GPL-3.0-or-later * @@ -28,188 +28,200 @@ #include "GpgVerifyResultAnalyse.h" -#include <boost/format.hpp> - #include "GpgFrontend.h" -#include "core/GpgConstants.h" -#include "function/gpg/GpgKeyGetter.h" +#include "core/GpgModel.h" +#include "core/function/gpg/GpgKeyGetter.h" +#include "core/utils/CommonUtils.h" +#include "core/utils/LocalizedUtils.h" GpgFrontend::GpgVerifyResultAnalyse::GpgVerifyResultAnalyse( GpgError error, GpgVerifyResult result) - : error_(error), result_(std::move(result)) {} + : error_(error), result_(result) {} -void GpgFrontend::GpgVerifyResultAnalyse::do_analyse() { - SPDLOG_DEBUG("started"); +void GpgFrontend::GpgVerifyResultAnalyse::doAnalyse() { + auto *result = this->result_.GetRaw(); - stream_ << "[#] " << _("Verify Operation") << " "; + stream_ << "# " << tr("Verify Operation") << " "; - if (gpgme_err_code(error_) == GPG_ERR_NO_ERROR) - stream_ << "[" << _("Success") << "]" << std::endl; - else { - stream_ << "[" << _("Failed") << "] " << gpgme_strerror(error_) - << std::endl; - set_status(-1); + if (gpgme_err_code(error_) == GPG_ERR_NO_ERROR) { + stream_ << " - " << tr("Success") << " " << Qt::endl; + } else { + stream_ << " - " << tr("Failed") << ": " << gpgme_strerror(error_) + << Qt::endl; + setStatus(-1); } - if (result_ != nullptr && result_->signatures != nullptr) { - stream_ << "------------>" << std::endl; - auto sign = result_->signatures; + if (result != nullptr && result->signatures != nullptr) { + stream_ << Qt::endl; + auto *sign = result->signatures; + + stream_ << "-> " << tr("Signed On") << "(" << tr("UTC") << ")" + << ": " << QDateTime::fromSecsSinceEpoch(sign->timestamp).toString() + << Qt::endl; - stream_ << "[>] " << _("Signed On") << "(" << _("UTC") << ")" - << " " - << boost::posix_time::to_iso_extended_string( - boost::posix_time::from_time_t(sign->timestamp)) - << std::endl; + stream_ << "-> " << tr("Signed On") << "(" << tr("Localized") << ")" + << ": " << GetFormatedDateByTimestamp(sign->timestamp) << Qt::endl; - stream_ << std::endl << "[>] " << _("Signatures List") << ":" << std::endl; + stream_ << Qt::endl << "## " << tr("Signatures List") << ":" << Qt::endl; + stream_ << Qt::endl; - bool canContinue = true; + bool can_continue = true; int count = 1; - while (sign && canContinue) { - stream_ << boost::format(_("Signature [%1%]:")) % count++ << std::endl; + while ((sign != nullptr) && can_continue) { + stream_ << "### " << tr("Signature [%1]:").arg(count++) << Qt::endl; + stream_ << "- " << tr("Status") << ": "; switch (gpg_err_code(sign->status)) { case GPG_ERR_BAD_SIGNATURE: - stream_ << _("A Bad Signature.") << std::endl; + stream_ << tr("A Bad Signature.") << Qt::endl; print_signer(stream_, sign); - stream_ << _("This Signature is invalid.") << std::endl; - canContinue = false; - set_status(-1); + stream_ << tr("This Signature is invalid.") << Qt::endl; + can_continue = false; + setStatus(-1); break; case GPG_ERR_NO_ERROR: - stream_ << _("A") << " "; - if (sign->summary & GPGME_SIGSUM_GREEN) { - stream_ << _("Good") << " "; + stream_ << tr("A") << " "; + if ((sign->summary & GPGME_SIGSUM_GREEN) != 0) { + stream_ << tr("Good") << " "; } - if (sign->summary & GPGME_SIGSUM_RED) { - stream_ << _("Bad") << " "; + if ((sign->summary & GPGME_SIGSUM_RED) != 0) { + stream_ << tr("Bad") << " "; } - if (sign->summary & GPGME_SIGSUM_SIG_EXPIRED) { - stream_ << _("Expired") << " "; + if ((sign->summary & GPGME_SIGSUM_SIG_EXPIRED) != 0) { + stream_ << tr("Expired") << " "; } - if (sign->summary & GPGME_SIGSUM_KEY_MISSING) { - stream_ << _("Missing Key's") << " "; + if ((sign->summary & GPGME_SIGSUM_KEY_MISSING) != 0) { + stream_ << tr("Missing Key's") << " "; } - if (sign->summary & GPGME_SIGSUM_KEY_REVOKED) { - stream_ << _("Revoked Key's") << " "; + if ((sign->summary & GPGME_SIGSUM_KEY_REVOKED) != 0) { + stream_ << tr("Revoked Key's") << " "; } - if (sign->summary & GPGME_SIGSUM_KEY_EXPIRED) { - stream_ << _("Expired Key's") << " "; + if ((sign->summary & GPGME_SIGSUM_KEY_EXPIRED) != 0) { + stream_ << tr("Expired Key's") << " "; } - if (sign->summary & GPGME_SIGSUM_CRL_MISSING) { - stream_ << _("Missing CRL's") << " "; + if ((sign->summary & GPGME_SIGSUM_CRL_MISSING) != 0) { + stream_ << tr("Missing CRL's") << " "; } - if (sign->summary & GPGME_SIGSUM_VALID) { - stream_ << _("Signature Fully Valid.") << std::endl; + if ((sign->summary & GPGME_SIGSUM_VALID) != 0) { + stream_ << tr("Signature Fully Valid.") << Qt::endl; } else { - stream_ << _("Signature Not Fully Valid.") << std::endl; - stream_ << _("(May used a subkey to sign)") << std::endl; + stream_ << tr("Signature Not Fully Valid.") << Qt::endl; + stream_ << tr("(Adjust Trust Level to make it Fully Vaild)") + << Qt::endl; } - if (!(sign->status & GPGME_SIGSUM_KEY_MISSING)) { - if (!print_signer(stream_, sign)) set_status(0); + if ((sign->status & GPGME_SIGSUM_KEY_MISSING) == 0U) { + if (!print_signer(stream_, sign)) setStatus(0); } else { - stream_ << _("Key is NOT present with ID 0x") << sign->fpr - << std::endl; + stream_ << tr("Key is NOT present with ID 0x") << sign->fpr + << Qt::endl; } - set_status(1); + setStatus(1); break; case GPG_ERR_NO_PUBKEY: - stream_ << _("A signature could NOT be verified due to a Missing Key") - << std::endl; - set_status(-2); + stream_ + << tr("A signature could NOT be verified due to a Missing Key") + << Qt::endl; + setStatus(-2); break; case GPG_ERR_CERT_REVOKED: - stream_ << _("A signature is valid but the key used to verify the " - "signature has been revoked") - << std::endl; + stream_ << tr("A signature is valid but the key used to verify the " + "signature has been revoked") + << Qt::endl; if (!print_signer(stream_, sign)) { - set_status(0); + setStatus(0); } - set_status(-1); + setStatus(-1); break; case GPG_ERR_SIG_EXPIRED: - stream_ << _("A signature is valid but expired") << std::endl; + stream_ << tr("A signature is valid but expired") << Qt::endl; if (!print_signer(stream_, sign)) { - set_status(0); + setStatus(0); } - set_status(-1); + setStatus(-1); break; case GPG_ERR_KEY_EXPIRED: - stream_ << _("A signature is valid but the key used to " - "verify the signature has expired.") - << std::endl; + stream_ << tr("A signature is valid but the key used to " + "verify the signature has expired.") + << Qt::endl; if (!print_signer(stream_, sign)) { - set_status(0); + setStatus(0); } break; case GPG_ERR_GENERAL: - stream_ << _("There was some other error which prevented " - "the signature verification.") - << std::endl; + stream_ << tr("There was some other error which prevented " + "the signature verification.") + << Qt::endl; status_ = -1; - canContinue = false; + can_continue = false; break; default: - auto fpr = std::string(sign->fpr); - stream_ << _("Error for key with fingerprint") << " " - << GpgFrontend::beautify_fingerprint(fpr); - set_status(-1); + auto fpr = QString(sign->fpr); + stream_ << tr("Error for key with fingerprint") << " " + << GpgFrontend::BeautifyFingerprint(fpr); + setStatus(-1); } - stream_ << std::endl; + stream_ << Qt::endl; sign = sign->next; } - stream_ << "<------------" << std::endl; + stream_ << Qt::endl; } else { stream_ - << "[>] " - << _("Could not find information that can be used for verification.") - << std::endl; - set_status(0); + << "-> " + << tr("Could not find information that can be used for verification.") + << Qt::endl; + setStatus(0); return; } } -bool GpgFrontend::GpgVerifyResultAnalyse::print_signer( - std::stringstream &stream, gpgme_signature_t sign) { - bool keyFound = true; +auto GpgFrontend::GpgVerifyResultAnalyse::print_signer(QTextStream &stream, + gpgme_signature_t sign) + -> bool { + bool key_found = true; auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey(sign->fpr); if (!key.IsGood()) { - stream << " " << _("Signed By") << ": " - << "<" << _("Unknown") << ">" << std::endl; - set_status(0); - keyFound = false; + stream << "- " << tr("Signed By") << ": " + << "<" << tr("Unknown") << ">" << Qt::endl; + setStatus(0); + key_found = false; } else { - stream << " " << _("Signed By") << ": " - << key.GetUIDs()->front().GetUID() << std::endl; + stream << "- " << tr("Signed By") << ": " << key.GetUIDs()->front().GetUID() + << Qt::endl; + } + if (sign->pubkey_algo != 0U) { + stream << "- " << tr("Public Key Algo") << ": " + << gpgme_pubkey_algo_name(sign->pubkey_algo) << Qt::endl; + } + if (sign->hash_algo != 0U) { + stream << "- " << tr("Hash Algo") << ": " + << gpgme_hash_algo_name(sign->hash_algo) << Qt::endl; } - if (sign->pubkey_algo) - stream << " " << _("Public Key Algo") << ": " - << gpgme_pubkey_algo_name(sign->pubkey_algo) << std::endl; - if (sign->hash_algo) - stream << " " << _("Hash Algo") << ": " - << gpgme_hash_algo_name(sign->hash_algo) << std::endl; - if (sign->timestamp) - stream << " " << _("Date") << "(" << _("UTC") << ")" - << ": " - << boost::posix_time::to_iso_extended_string( - boost::posix_time::from_time_t(sign->timestamp)) - << std::endl; - stream << std::endl; - return keyFound; + if (sign->timestamp != 0U) { + stream << "- " << tr("Date") << "(" << tr("UTC") << ")" + << ": " << QDateTime::fromSecsSinceEpoch(sign->timestamp).toString() + << Qt::endl; + + stream << "- " << tr("Date") << "(" << tr("Localized") << ")" + << ": " << GetFormatedDateByTimestamp(sign->timestamp) << Qt::endl; + } + stream << Qt::endl; + return key_found; } -gpgme_signature_t GpgFrontend::GpgVerifyResultAnalyse::GetSignatures() const { - if (result_) - return result_->signatures; - else - return nullptr; +auto GpgFrontend::GpgVerifyResultAnalyse::GetSignatures() const + -> gpgme_signature_t { + if (result_.IsGood()) { + return result_.GetRaw()->signatures; + } + return nullptr; } -GpgFrontend::GpgVerifyResult -GpgFrontend::GpgVerifyResultAnalyse::TakeChargeOfResult() { - return std::move(result_); + +auto GpgFrontend::GpgVerifyResultAnalyse::TakeChargeOfResult() + -> GpgFrontend::GpgVerifyResult { + return result_; } |