diff options
author | saturneric <[email protected]> | 2024-07-29 19:29:56 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-07-29 19:29:56 +0000 |
commit | fa90ec4b5315b9e70a44a9625c143ce253f0e885 (patch) | |
tree | 8ffa82e33522de03974d6d0289aa831b4fd6ebdf /src/core/function/gpg/GpgKeyManager.cpp | |
parent | fix: correct urls at appdata.xml (diff) | |
parent | Merge branch 'develop' of github.com:saturneric/GpgFrontend into develop (diff) | |
download | GpgFrontend-fa90ec4b5315b9e70a44a9625c143ce253f0e885.tar.gz GpgFrontend-fa90ec4b5315b9e70a44a9625c143ce253f0e885.zip |
Merge branch 'develop'
Diffstat (limited to 'src/core/function/gpg/GpgKeyManager.cpp')
-rw-r--r-- | src/core/function/gpg/GpgKeyManager.cpp | 152 |
1 files changed, 75 insertions, 77 deletions
diff --git a/src/core/function/gpg/GpgKeyManager.cpp b/src/core/function/gpg/GpgKeyManager.cpp index b5efe141..93a864ca 100644 --- a/src/core/function/gpg/GpgKeyManager.cpp +++ b/src/core/function/gpg/GpgKeyManager.cpp @@ -73,10 +73,9 @@ auto GpgFrontend::GpgKeyManager::RevSign( return true; } -auto GpgFrontend::GpgKeyManager::SetExpire(const GpgFrontend::GpgKey& key, - std::unique_ptr<GpgSubKey>& subkey, - std::unique_ptr<QDateTime>& expires) - -> bool { +auto GpgFrontend::GpgKeyManager::SetExpire( + const GpgFrontend::GpgKey& key, std::unique_ptr<GpgSubKey>& subkey, + std::unique_ptr<QDateTime>& expires) -> bool { unsigned long expires_time = 0; if (expires != nullptr) expires_time = expires->toSecsSinceEpoch(); @@ -95,81 +94,83 @@ auto GpgFrontend::GpgKeyManager::SetExpire(const GpgFrontend::GpgKey& key, auto GpgFrontend::GpgKeyManager::SetOwnerTrustLevel(const GpgKey& key, int trust_level) -> bool { if (trust_level < 0 || trust_level > 5) { - GF_CORE_LOG_ERROR("illegal owner trust level: {}", trust_level); + qCWarning(core, "illegal owner trust level: %d", trust_level); } - AutomatonNextStateHandler next_state_handler = [](AutomatonState state, - QString status, - QString args) { - GF_CORE_LOG_DEBUG("next_state_handler state: {}, gpg_status: {}, args: {}", - state, status, args); - auto tokens = args.split(' '); + AutomatonNextStateHandler next_state_handler = + [](AutomatonState state, QString status, QString args) { + qCDebug(core) << "next_state_handler state: " + << static_cast<unsigned int>(state) + << ", gpg_status: " << status << ", args: " << args; - switch (state) { - case AS_START: - if (status == "GET_LINE" && args == "keyedit.prompt") { - return AS_COMMAND; - } - return AS_ERROR; - case AS_COMMAND: - if (status == "GET_LINE" && args == "edit_ownertrust.value") { - return AS_VALUE; - } - return AS_ERROR; - case AS_VALUE: - if (status == "GET_LINE" && args == "keyedit.prompt") { - return AS_QUIT; - } else if (status == "GET_BOOL" && - args == "edit_ownertrust.set_ultimate.okay") { - return AS_REALLY_ULTIMATE; - } - return AS_ERROR; - case AS_REALLY_ULTIMATE: - if (status == "GET_LINE" && args == "keyedit.prompt") { - return AS_QUIT; - } - return AS_ERROR; - case AS_QUIT: - if (status == "GET_LINE" && args == "keyedit.save.okay") { - return AS_SAVE; - } - return AS_ERROR; - case AS_ERROR: - if (status == "GET_LINE" && args == "keyedit.prompt") { - return AS_QUIT; - } - return AS_ERROR; - default: - return AS_ERROR; - }; - }; + auto tokens = args.split(' '); - AutomatonActionHandler action_handler = - [trust_level](AutomatonHandelStruct& handler, AutomatonState state) { - GF_CORE_LOG_DEBUG("action_handler state: {}", state); switch (state) { + case AS_START: + if (status == "GET_LINE" && args == "keyedit.prompt") { + return AS_COMMAND; + } + return AS_ERROR; case AS_COMMAND: - return QString("trust"); + if (status == "GET_LINE" && args == "edit_ownertrust.value") { + return AS_VALUE; + } + return AS_ERROR; case AS_VALUE: - handler.SetSuccess(true); - return QString::number(trust_level); + if (status == "GET_LINE" && args == "keyedit.prompt") { + return AS_QUIT; + } else if (status == "GET_BOOL" && + args == "edit_ownertrust.set_ultimate.okay") { + return AS_REALLY_ULTIMATE; + } + return AS_ERROR; case AS_REALLY_ULTIMATE: - handler.SetSuccess(true); - return QString("Y"); + if (status == "GET_LINE" && args == "keyedit.prompt") { + return AS_QUIT; + } + return AS_ERROR; case AS_QUIT: - return QString("quit"); - case AS_SAVE: - handler.SetSuccess(true); - return QString("Y"); - case AS_START: + if (status == "GET_LINE" && args == "keyedit.save.okay") { + return AS_SAVE; + } + return AS_ERROR; case AS_ERROR: - return QString(""); + if (status == "GET_LINE" && args == "keyedit.prompt") { + return AS_QUIT; + } + return AS_ERROR; default: - return QString(""); - } - return QString(""); + return AS_ERROR; + }; }; + AutomatonActionHandler action_handler = [trust_level]( + AutomatonHandelStruct& handler, + AutomatonState state) { + qCDebug(core, "action_handler state: %d", static_cast<unsigned int>(state)); + switch (state) { + case AS_COMMAND: + return QString("trust"); + case AS_VALUE: + handler.SetSuccess(true); + return QString::number(trust_level); + case AS_REALLY_ULTIMATE: + handler.SetSuccess(true); + return QString("Y"); + case AS_QUIT: + return QString("quit"); + case AS_SAVE: + handler.SetSuccess(true); + return QString("Y"); + case AS_START: + case AS_ERROR: + return QString(""); + default: + return QString(""); + } + return QString(""); + }; + auto key_fpr = key.GetFingerprint(); AutomatonHandelStruct handel_struct(key_fpr); handel_struct.SetHandler(next_state_handler, action_handler); @@ -185,21 +186,19 @@ auto GpgFrontend::GpgKeyManager::SetOwnerTrustLevel(const GpgKey& key, auto GpgFrontend::GpgKeyManager::interactor_cb_fnc(void* handle, const char* status, - const char* args, int fd) - -> gpgme_error_t { + const char* args, + int fd) -> gpgme_error_t { auto* handle_struct = static_cast<AutomatonHandelStruct*>(handle); QString status_s = status; QString args_s = args; - GF_CORE_LOG_DEBUG( - "cb start status: {}, args: {}, fd: {}, handle struct state: {}", - status_s, args_s, fd, handle_struct->CuurentStatus()); if (status_s == "KEY_CONSIDERED") { auto tokens = QString(args).split(' '); if (tokens.empty() || tokens[0] != handle_struct->KeyFpr()) { - GF_CORE_LOG_ERROR("handle struct key fpr {} mismatch token: {}, exit...", - handle_struct->KeyFpr(), tokens[0]); + qCWarning(core) << "handle struct key fpr " << handle_struct->KeyFpr() + << "mismatch token: " << tokens[0] << ", exit..."; + return -1; } @@ -207,13 +206,13 @@ auto GpgFrontend::GpgKeyManager::interactor_cb_fnc(void* handle, } if (status_s == "GOT_IT" || status_s.isEmpty()) { - GF_CORE_LOG_DEBUG("status GOT_IT, continue..."); + qCDebug(core, "status GOT_IT, continue..."); return 0; } AutomatonState next_state = handle_struct->NextState(status_s, args_s); if (next_state == AS_ERROR) { - GF_CORE_LOG_DEBUG("handle struct next state caught error, skipping..."); + qCDebug(core, "handle struct next state caught error, skipping..."); return GPG_ERR_FALSE; } @@ -224,8 +223,7 @@ auto GpgFrontend::GpgKeyManager::interactor_cb_fnc(void* handle, // set state and preform action handle_struct->SetStatus(next_state); Command cmd = handle_struct->Action(); - GF_CORE_LOG_DEBUG("handle struct action done, next state: {}, action cmd: {}", - next_state, cmd); + if (!cmd.isEmpty()) { auto btye_array = cmd.toUtf8(); gpgme_io_write(fd, btye_array, btye_array.size()); |