cpp: Add support for gpgme_op_revsig
* lang/cpp/src/context.cpp, lang/cpp/src/context.h (Context::revokeSignature, Context::startRevokeSignature): New. * lang/cpp/src/context.cpp (getLFSeparatedListOfStrings, getLFSeparatedListOfUserIds): New. (getLFSeparatedListOfFingerprintsFromSubkeys): Extracted second part of function to getLFSeparatedListOfStrings. -- GnuPG-bug-id: 5094
This commit is contained in:
parent
f3407d0ee4
commit
4166d263e4
4
NEWS
4
NEWS
@ -9,6 +9,8 @@ Noteworthy changes in version 1.14.1 (unreleased)
|
||||
|
||||
* cpp: Support for set expire operations in the C++ bindings. [#5003]
|
||||
|
||||
* cpp: Support for revoking key signatures in the C++ bindings. [#5094]
|
||||
|
||||
* qt: Extended ChangeExpiryJob to support changing the expiry of
|
||||
subkeys. [#4717]
|
||||
|
||||
@ -29,6 +31,8 @@ Noteworthy changes in version 1.14.1 (unreleased)
|
||||
cpp: StatusConsumer NEW.
|
||||
cpp: StatusConsumerAssuanTransaction NEW.
|
||||
cpp: Context::cancelPendingOperationImmediately NEW.
|
||||
cpp: Context::revokeSignature NEW.
|
||||
cpp: Context::startRevokeSignature NEW.
|
||||
qt: operator<<(QDebug debug, const GpgME::Error &err) NEW.
|
||||
|
||||
|
||||
|
@ -1532,6 +1532,22 @@ Error Context::startCreateSubkey(const Key &k, const char *algo,
|
||||
k.impl(), algo, reserved, expires, flags));
|
||||
}
|
||||
|
||||
static std::string getLFSeparatedListOfStrings(const std::vector<std::string> &strings)
|
||||
{
|
||||
if (strings.empty()) {
|
||||
return std::string();
|
||||
}
|
||||
|
||||
return std::accumulate(
|
||||
std::next(strings.begin()),
|
||||
strings.end(),
|
||||
strings[0],
|
||||
[](const std::string &a, const std::string &b) {
|
||||
return a + '\n' + b;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
static std::string getLFSeparatedListOfFingerprintsFromSubkeys(const std::vector<Subkey> &subkeys)
|
||||
{
|
||||
if (subkeys.empty()) {
|
||||
@ -1546,18 +1562,7 @@ static std::string getLFSeparatedListOfFingerprintsFromSubkeys(const std::vector
|
||||
}
|
||||
}
|
||||
|
||||
if (fprs.empty()) {
|
||||
return std::string();
|
||||
}
|
||||
|
||||
return std::accumulate(
|
||||
std::next(fprs.begin()),
|
||||
fprs.end(),
|
||||
fprs[0],
|
||||
[](const std::string &a, const std::string &b) {
|
||||
return a + '\n' + b;
|
||||
}
|
||||
);
|
||||
return getLFSeparatedListOfStrings(fprs);
|
||||
}
|
||||
|
||||
Error Context::setExpire(const Key &k, unsigned long expires,
|
||||
@ -1588,6 +1593,41 @@ Error Context::startSetExpire(const Key &k, unsigned long expires,
|
||||
k.impl(), expires, subfprs.c_str(), 0));
|
||||
}
|
||||
|
||||
static std::string getLFSeparatedListOfUserIds(const std::vector<UserID> &userIds)
|
||||
{
|
||||
if (userIds.empty()) {
|
||||
return std::string();
|
||||
}
|
||||
|
||||
std::vector<std::string> uids;
|
||||
uids.reserve(userIds.size());
|
||||
for (auto &userId : userIds) {
|
||||
if (userId.id()) {
|
||||
uids.push_back(std::string(userId.id()));
|
||||
}
|
||||
}
|
||||
|
||||
return getLFSeparatedListOfStrings(uids);
|
||||
}
|
||||
|
||||
Error Context::revokeSignature(const Key &key, const Key &signingKey,
|
||||
const std::vector<UserID> &userIds)
|
||||
{
|
||||
const unsigned int flags = userIds.size() > 1 ? GPGME_REVSIG_LFSEP : 0;
|
||||
const std::string uids = getLFSeparatedListOfUserIds(userIds);
|
||||
return Error(d->lasterr = gpgme_op_revsig(d->ctx,
|
||||
key.impl(), signingKey.impl(), uids.c_str(), flags));
|
||||
}
|
||||
|
||||
Error Context::startRevokeSignature(const Key &key, const Key &signingKey,
|
||||
const std::vector<UserID> &userIds)
|
||||
{
|
||||
const unsigned int flags = userIds.size() > 1 ? GPGME_REVSIG_LFSEP : 0;
|
||||
const std::string uids = getLFSeparatedListOfUserIds(userIds);
|
||||
return Error(d->lasterr = gpgme_op_revsig_start(d->ctx,
|
||||
key.impl(), signingKey.impl(), uids.c_str(), flags));
|
||||
}
|
||||
|
||||
Error Context::setFlag(const char *name, const char *value)
|
||||
{
|
||||
return Error(d->lasterr = gpgme_set_ctx_flag(d->ctx, name, value));
|
||||
|
@ -285,6 +285,11 @@ public:
|
||||
const std::vector<Subkey> &subkeys = std::vector<Subkey>(),
|
||||
const SetExpireFlags flags = SetExpireDefault);
|
||||
|
||||
Error revokeSignature(const Key &key, const Key &signingKey,
|
||||
const std::vector<UserID> &userIds = std::vector<UserID>());
|
||||
Error startRevokeSignature(const Key &key, const Key &signingKey,
|
||||
const std::vector<UserID> &userIds = std::vector<UserID>());
|
||||
|
||||
// using TofuInfo::Policy
|
||||
Error setTofuPolicy(const Key &k, unsigned int policy);
|
||||
Error setTofuPolicyStart(const Key &k, unsigned int policy);
|
||||
|
Loading…
Reference in New Issue
Block a user