cpp: Update key with --with-secret instead of updating it twice
* lang/cpp/src/key.cpp (Key::update): Call Context::key() only once with KeyListMode::WithSecret. -- With gpg >= 2.1, get the key with --with-secret instead of first trying to get the secret key and, if that fails, getting the public key. GnuPG-bug-id: 4794
This commit is contained in:
parent
13bcc6680a
commit
3dd7377e12
@ -29,6 +29,7 @@
|
||||
#include "util.h"
|
||||
#include "tofuinfo.h"
|
||||
#include "context.h"
|
||||
#include "engineinfo.h"
|
||||
|
||||
#include <gpgme.h>
|
||||
|
||||
@ -363,19 +364,24 @@ void Key::update()
|
||||
KeyListMode::SignatureNotations |
|
||||
KeyListMode::Validate |
|
||||
KeyListMode::WithTofu |
|
||||
KeyListMode::WithKeygrip);
|
||||
KeyListMode::WithKeygrip |
|
||||
KeyListMode::WithSecret);
|
||||
Error err;
|
||||
auto newKey = ctx->key(primaryFingerprint(), err, true);
|
||||
Key newKey;
|
||||
if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.0") {
|
||||
newKey = ctx->key(primaryFingerprint(), err, true);
|
||||
// Not secret so we get the information from the pubring.
|
||||
if (newKey.isNull()) {
|
||||
newKey = ctx->key(primaryFingerprint(), err, false);
|
||||
}
|
||||
} else {
|
||||
newKey = ctx->key(primaryFingerprint(), err, false);
|
||||
}
|
||||
delete ctx;
|
||||
if (err) {
|
||||
return;
|
||||
}
|
||||
swap(newKey);
|
||||
return;
|
||||
}
|
||||
|
||||
// static
|
||||
|
Loading…
Reference in New Issue
Block a user