From b9b4396b12f9637c17fd5bc3e8c32c786ef2a3f7 Mon Sep 17 00:00:00 2001 From: SET Date: Thu, 12 Nov 2020 22:25:14 +0100 Subject: [PATCH] Fix key generation functions. Created key must always be looked for as it is not assigned to the passed in null key. Delete local context and loopback passphrase provider. Parameter expires was ignored in CreateKeyWithEngineDefaultAlgo. --- GpgMEWorker.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/GpgMEWorker.cpp b/GpgMEWorker.cpp index 3f2efdf..1b53543 100644 --- a/GpgMEWorker.cpp +++ b/GpgMEWorker.cpp @@ -195,7 +195,12 @@ const Error GpgMEWorker::CreateKeyWithEngineDefaultAlgo(GpgME::Key& k, ? 0 : _CREATE_NOEXPIRE; KeyGenerationResult kgr = ctx->createKeyEx(uid.c_str(), "default", - 0, 0, k, flags); + 0, expires, k, flags); + delete ppp; + delete ctx; + if (kgr.error().code() == 0) + // Why is k not assigned the newly created key ?! + k = FindKey(kgr.fingerprint(), e, true); return kgr.error(); } @@ -222,10 +227,11 @@ const Error GpgMEWorker::CreateKey(GpgME::Key& k, KeyGenerationResult kgr = ctx->createKeyEx(uid.c_str(), algo, 0, expires, k, flags); - // Why is k not assigned the newly created key ?! - k = FindKey(kgr.fingerprint(), e, true); delete ppp; delete ctx; + if (kgr.error().code() == 0) + // Why is k not assigned the newly created key ?! + k = FindKey(kgr.fingerprint(), e, true); return kgr.error(); }