1
0

feat: improve gpg utils

This commit is contained in:
saturneric 2023-12-03 04:26:36 -08:00
parent c187645fb3
commit 2875648cc4
3 changed files with 22 additions and 7 deletions

View File

@ -28,6 +28,7 @@
#pragma once #pragma once
#include "core/model/DataObject.h"
namespace GpgFrontend { namespace GpgFrontend {
class GpgKey; ///< forward declaration class GpgKey; ///< forward declaration
@ -35,7 +36,9 @@ class GpgSubKey;
class GpgSignature; class GpgSignature;
class GpgTOFUInfo; class GpgTOFUInfo;
using GpgError = gpgme_error_t; ///< gpgme error code using GpgError = gpgme_error_t; ///< gpgme error
using GpgErrorCode = gpg_err_code_t;
using GpgErrorDesc = std::pair<std::string, std::string>;
using KeyId = std::string; ///< using KeyId = std::string; ///<
using SubkeyId = std::string; ///< using SubkeyId = std::string; ///<
@ -52,5 +55,7 @@ using GpgKeyLinkList = std::list<GpgKey>; ///<
using KeyLinkListPtr = std::unique_ptr<GpgKeyLinkList>; ///< using KeyLinkListPtr = std::unique_ptr<GpgKeyLinkList>; ///<
using KeyPtr = std::unique_ptr<GpgKey>; ///< using KeyPtr = std::unique_ptr<GpgKey>; ///<
using KeyPtrArgsList = const std::initializer_list<KeyPtr>; ///< using KeyPtrArgsList = const std::initializer_list<KeyPtr>; ///<
///
using GpgOperaRunnable = std::function<GpgError(DataObjectPtr)>;
using GpgOperationCallback = std::function<void(GpgError, DataObjectPtr)>;
} // namespace GpgFrontend } // namespace GpgFrontend

View File

@ -53,7 +53,7 @@ static inline auto Trim(std::string& s) -> std::string {
return s; return s;
} }
auto CheckGpgError(gpgme_error_t err) -> gpgme_error_t { auto CheckGpgError(GpgError err) -> GpgError {
if (gpg_err_code(err) != GPG_ERR_NO_ERROR) { if (gpg_err_code(err) != GPG_ERR_NO_ERROR) {
SPDLOG_ERROR("[error: {}] source: {} description: {}", gpg_err_code(err), SPDLOG_ERROR("[error: {}] source: {} description: {}", gpg_err_code(err),
gpgme_strsource(err), gpgme_strerror(err)); gpgme_strsource(err), gpgme_strerror(err));
@ -61,8 +61,7 @@ auto CheckGpgError(gpgme_error_t err) -> gpgme_error_t {
return err; return err;
} }
auto CheckGpgError2ErrCode(gpgme_error_t err, gpgme_error_t predict) auto CheckGpgError2ErrCode(GpgError err, GpgError predict) -> GpgErrorCode {
-> gpg_err_code_t {
auto err_code = gpg_err_code(err); auto err_code = gpg_err_code(err);
if (err_code != gpg_err_code(predict)) { if (err_code != gpg_err_code(predict)) {
if (err_code == GPG_ERR_NO_ERROR) if (err_code == GPG_ERR_NO_ERROR)
@ -77,8 +76,11 @@ auto CheckGpgError2ErrCode(gpgme_error_t err, gpgme_error_t predict)
return err_code; return err_code;
} }
auto CheckGpgError(gpgme_error_t err, const std::string& comment) auto DescribeGpgErrCode(GpgError err) -> GpgErrorDesc {
-> gpgme_error_t { return {gpgme_strsource(err), gpgme_strerror(err)};
}
auto CheckGpgError(GpgError err, const std::string& /*comment*/) -> GpgError {
if (gpg_err_code(err) != GPG_ERR_NO_ERROR) { if (gpg_err_code(err) != GPG_ERR_NO_ERROR) {
SPDLOG_WARN("[Error {}] Source: {} description: {} predict: {}", SPDLOG_WARN("[Error {}] Source: {} description: {} predict: {}",
gpg_err_code(err), gpgme_strsource(err), gpgme_strerror(err), gpg_err_code(err), gpgme_strsource(err), gpgme_strerror(err),

View File

@ -121,6 +121,14 @@ auto GPGFRONTEND_CORE_EXPORT CheckGpgError2ErrCode(
gpgme_error_t err, gpgme_error_t predict = GPG_ERR_NO_ERROR) gpgme_error_t err, gpgme_error_t predict = GPG_ERR_NO_ERROR)
-> gpg_err_code_t; -> gpg_err_code_t;
/**
* @brief
*
* @param err
* @return GpgErrorDesc
*/
auto GPGFRONTEND_CORE_EXPORT DescribeGpgErrCode(GpgError err) -> GpgErrorDesc;
// Check // Check
/** /**