aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-07-28 12:21:13 +0000
committersaturneric <[email protected]>2024-07-28 12:23:17 +0000
commit8bb3bf646e0f3ba7b5d9909fc773795d58f780f8 (patch)
tree9d243d6aaa37f613349f28d2123e16ba4c1e3526
parentfix: do some clean up for removal of pinentry (diff)
downloadGpgFrontend-8bb3bf646e0f3ba7b5d9909fc773795d58f780f8.tar.gz
GpgFrontend-8bb3bf646e0f3ba7b5d9909fc773795d58f780f8.zip
fix: passphrase corrected is not correct as the real one
-rw-r--r--src/core/function/gpg/GpgContext.cpp64
1 files changed, 28 insertions, 36 deletions
diff --git a/src/core/function/gpg/GpgContext.cpp b/src/core/function/gpg/GpgContext.cpp
index c6cb75da..75e97e0c 100644
--- a/src/core/function/gpg/GpgContext.cpp
+++ b/src/core/function/gpg/GpgContext.cpp
@@ -93,31 +93,24 @@ class GpgContext::Impl {
static auto TestPassphraseCb(void *opaque, const char *uid_hint,
const char *passphrase_info, int last_was_bad,
int fd) -> gpgme_error_t {
- size_t res;
-#ifdef QT5_BUILD
- QString pass_qstr = "abcdefg\n";
- QByteArray pass = pass_qstr.toUtf8();
-#else
- QString pass = "abcdefg\n";
-#endif
-
- auto passphrase_size = pass.size();
- size_t off = 0;
-
- do {
-#ifdef QT5_BUILD
- const char *p_pass = pass.data();
- res = gpgme_io_write(fd, &p_pass[off], passpahrase_size - off);
-#else
- res = gpgme_io_write(fd, &pass[off], passphrase_size - off);
-#endif
- if (res > 0) off += res;
- } while (res > 0 && static_cast<long long>(off) != passphrase_size);
+ QString passphrase = "abcdefg";
+ auto pass_bytes = passphrase.toLatin1();
+ auto pass_size = pass_bytes.size();
+ const auto *p_pass_bytes = pass_bytes.constData();
+
+ ssize_t res = 0;
+ if (pass_size > 0) {
+ ssize_t off = 0;
+ ssize_t ret = 0;
+ do {
+ ret = gpgme_io_write(fd, &p_pass_bytes[off], pass_size - off);
+ if (ret > 0) off += ret;
+ } while (ret > 0 && off != pass_size);
+ res = off;
+ }
res += gpgme_io_write(fd, "\n", 1);
- return static_cast<long long>(res) == (passphrase_size + 1)
- ? 0
- : gpgme_error_from_errno(GPG_ERR_CANCELED);
+ return res == pass_size + 1 ? 0 : gpgme_error_from_errno(GPG_ERR_CANCELED);
}
static auto CustomPassphraseCb(void *hook, const char *uid_hint,
@@ -157,24 +150,23 @@ class GpgContext::Impl {
looper.exec();
ResetCacheValue("PinentryContext");
- auto passphrase_size = passphrase.size();
- qCDebug(core, "get passphrase from pinentry size: %lld", passphrase_size);
+ auto pass_bytes = passphrase.toLatin1();
+ auto pass_size = pass_bytes.size();
+ const auto *p_pass_bytes = pass_bytes.constData();
- size_t res = 0;
- if (passphrase_size > 0) {
- size_t off = 0;
+ ssize_t res = 0;
+ if (pass_size > 0) {
+ ssize_t off = 0;
+ ssize_t ret = 0;
do {
- res = gpgme_io_write(fd, &passphrase[off], passphrase_size - off);
- if (res > 0) off += res;
- } while (res > 0 && off != passphrase_size);
+ ret = gpgme_io_write(fd, &p_pass_bytes[off], pass_size - off);
+ if (ret > 0) off += ret;
+ } while (ret > 0 && off != pass_size);
+ res = off;
}
res += gpgme_io_write(fd, "\n", 1);
-
- qCDebug(core, "custom passphrase cd is about to return, res: %ld", res);
- return res == passphrase_size + 1
- ? 0
- : gpgme_error_from_errno(GPG_ERR_CANCELED);
+ return res == pass_size + 1 ? 0 : gpgme_error_from_errno(GPG_ERR_CANCELED);
}
static auto TestStatusCb(void *hook, const char *keyword,