Use local scope ::Context when creating keys.
The created key was searched with FindKey(), that operates on the class scope ::Context. The latter does not use loopback pinentry. Even though, the created key was found, the passphrase for the created key being cached in gpg-agent.
This commit is contained in:
@@ -290,11 +290,11 @@ const Error GpgMEWorker::CreateKeyWithEngineDefaultAlgo(GpgME::Key& k,
|
|||||||
|
|
||||||
KeyGenerationResult kgr = ctx->createKeyEx(uid.c_str(), "default",
|
KeyGenerationResult kgr = ctx->createKeyEx(uid.c_str(), "default",
|
||||||
0, expires, k, flags);
|
0, expires, k, flags);
|
||||||
delete ppp;
|
|
||||||
delete ctx;
|
|
||||||
if (kgr.error().code() == 0)
|
if (kgr.error().code() == 0)
|
||||||
// Why is k not assigned the newly created key ?!
|
// Why is k not assigned the newly created key ?!
|
||||||
k = FindKey(kgr.fingerprint(), e, true);
|
k = ctx->key(kgr.fingerprint(), e, true);
|
||||||
|
delete ppp;
|
||||||
|
delete ctx;
|
||||||
return kgr.error();
|
return kgr.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,11 +318,12 @@ const Error GpgMEWorker::CreateKey(GpgME::Key& k,
|
|||||||
|
|
||||||
KeyGenerationResult kgr = ctx->createKeyEx(uid.c_str(), algo,
|
KeyGenerationResult kgr = ctx->createKeyEx(uid.c_str(), algo,
|
||||||
0, expires, k, flags);
|
0, expires, k, flags);
|
||||||
delete ppp;
|
|
||||||
delete ctx;
|
|
||||||
if (kgr.error().code() == 0)
|
if (kgr.error().code() == 0)
|
||||||
// Why is k not assigned the newly created key ?!
|
// Why is k not assigned the newly created key ?!
|
||||||
k = FindKey(kgr.fingerprint(), e, true);
|
k = ctx->key(kgr.fingerprint(), e, true);
|
||||||
|
delete ppp;
|
||||||
|
delete ctx;
|
||||||
return kgr.error();
|
return kgr.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user