diff options
Diffstat (limited to 'src/core/GpgConstants.cpp')
-rw-r--r-- | src/core/GpgConstants.cpp | 180 |
1 files changed, 4 insertions, 176 deletions
diff --git a/src/core/GpgConstants.cpp b/src/core/GpgConstants.cpp index 35e485d4..ade003a8 100644 --- a/src/core/GpgConstants.cpp +++ b/src/core/GpgConstants.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,177 +28,5 @@ #include "core/GpgConstants.h" -#include <boost/algorithm/string/predicate.hpp> - -#include "function/FileOperator.h" - -const char* GpgFrontend::GpgConstants::PGP_CRYPT_BEGIN = - "-----BEGIN PGP MESSAGE-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_CRYPT_END = - "-----END PGP MESSAGE-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_SIGNED_BEGIN = - "-----BEGIN PGP SIGNED MESSAGE-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_SIGNED_END = - "-----END PGP SIGNATURE-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_SIGNATURE_BEGIN = - "-----BEGIN PGP SIGNATURE-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_SIGNATURE_END = - "-----END PGP SIGNATURE-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_PUBLIC_KEY_BEGIN = - "-----BEGIN PGP PUBLIC KEY BLOCK-----"; ///< -const char* GpgFrontend::GpgConstants::PGP_PRIVATE_KEY_BEGIN = - "-----BEGIN PGP PRIVATE KEY BLOCK-----"; ///< -const char* GpgFrontend::GpgConstants::GPG_FRONTEND_SHORT_CRYPTO_HEAD = - "GpgF_Scpt://"; ///< - -gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err) { - if (gpg_err_code(err) != GPG_ERR_NO_ERROR) { - SPDLOG_ERROR("[error: {}] source: {} description: {}", gpg_err_code(err), - gpgme_strsource(err), gpgme_strerror(err)); - } - return err; -} - -gpg_err_code_t GpgFrontend::check_gpg_error_2_err_code(gpgme_error_t err, - gpgme_error_t predict) { - auto err_code = gpg_err_code(err); - if (err_code != gpg_err_code(predict)) { - if (err_code == GPG_ERR_NO_ERROR) - SPDLOG_WARN("[Warning {}] Source: {} description: {} predict: {}", - gpg_err_code(err), gpgme_strsource(err), gpgme_strerror(err), - gpgme_strerror(err)); - else - SPDLOG_ERROR("[Error {}] Source: {} description: {} predict: {}", - gpg_err_code(err), gpgme_strsource(err), gpgme_strerror(err), - gpgme_strerror(err)); - } - return err_code; -} - -gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err, - const std::string& comment) { - if (gpg_err_code(err) != GPG_ERR_NO_ERROR) { - SPDLOG_WARN("[Error {}] Source: {} description: {} predict: {}", - gpg_err_code(err), gpgme_strsource(err), gpgme_strerror(err), - gpgme_strerror(err)); - } - return err; -} - -std::string GpgFrontend::beautify_fingerprint( - GpgFrontend::BypeArrayConstRef fingerprint) { - auto len = fingerprint.size(); - std::stringstream out; - decltype(len) count = 0; - while (count < len) { - if (count && !(count % 5)) out << " "; - out << fingerprint[count]; - count++; - } - return out.str(); -} - -static inline void ltrim(std::string& s) { - s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char ch) { - return !std::isspace(ch); - })); -} - -static inline void rtrim(std::string& s) { - s.erase(std::find_if(s.rbegin(), s.rend(), - [](unsigned char ch) { return !std::isspace(ch); }) - .base(), - s.end()); -} - -static inline std::string trim(std::string& s) { - ltrim(s); - rtrim(s); - return s; -} - -std::string GpgFrontend::read_all_data_in_file(const std::string& utf8_path) { - std::string data; - FileOperator::ReadFileStd(utf8_path, data); - return data; -} - -bool GpgFrontend::write_buffer_to_file(const std::string& utf8_path, - const std::string& out_buffer) { - return FileOperator::WriteFileStd(utf8_path, out_buffer); -} - -std::string GpgFrontend::get_file_extension(const std::string& path) { - // Create a path object from given string - std::filesystem::path path_obj(path); - - // Check if file name in the path object has extension - if (path_obj.has_extension()) { - // Fetch the extension from path object and return - return path_obj.extension().u8string(); - } - // In case of no extension return empty string - return {}; -} - -std::string GpgFrontend::get_only_file_name_with_path(const std::string& path) { - // Create a path object from given string - std::filesystem::path path_obj(path); - // Check if file name in the path object has extension - if (path_obj.has_filename()) { - // Fetch the extension from path object and return - return (path_obj.parent_path() / path_obj.stem()).u8string(); - } - // In case of no extension return empty string - return {}; -} - -int GpgFrontend::text_is_signed(GpgFrontend::BypeArrayRef text) { - using boost::algorithm::ends_with; - using boost::algorithm::starts_with; - - auto trim_text = trim(text); - if (starts_with(trim_text, GpgConstants::PGP_SIGNED_BEGIN) && - ends_with(trim_text, GpgConstants::PGP_SIGNED_END)) - return 2; - else if (text.find(GpgConstants::PGP_SIGNED_BEGIN) != std::string::npos && - text.find(GpgConstants::PGP_SIGNED_END) != std::string::npos) - return 1; - else - return 0; -} - -GpgFrontend::GpgEncrResult GpgFrontend::_new_result( - gpgme_encrypt_result_t&& result) { - gpgme_result_ref(result); - return {result, _result_ref_deletor()}; -} - -GpgFrontend::GpgDecrResult GpgFrontend::_new_result( - gpgme_decrypt_result_t&& result) { - gpgme_result_ref(result); - return {result, _result_ref_deletor()}; -} - -GpgFrontend::GpgSignResult GpgFrontend::_new_result( - gpgme_sign_result_t&& result) { - gpgme_result_ref(result); - return {result, _result_ref_deletor()}; -} - -GpgFrontend::GpgVerifyResult GpgFrontend::_new_result( - gpgme_verify_result_t&& result) { - gpgme_result_ref(result); - return {result, _result_ref_deletor()}; -} - -GpgFrontend::GpgGenKeyResult GpgFrontend::_new_result( - gpgme_genkey_result_t&& result) { - gpgme_result_ref(result); - return {result, _result_ref_deletor()}; -} - -void GpgFrontend::_result_ref_deletor::operator()(void* _result) { - SPDLOG_TRACE("gpgme unref {}", _result); - if (_result != nullptr) gpgme_result_unref(_result); -} +namespace GpgFrontend { +} // namespace GpgFrontend |