cpp: Wrap keylist_from_data
* lang/cpp/data.h, lang/cpp/data.cpp (GpgME::Data::toKeys): New. -- Doing this in data instead of Context is a bit more idiomatic. But this could also be added to Context.
This commit is contained in:
parent
121873b821
commit
8ddb42ada4
1
NEWS
1
NEWS
@ -26,6 +26,7 @@ Noteworthy changes in version 1.8.1 (unreleased)
|
|||||||
cpp: GpgGenCardKeyInteractor NEW.
|
cpp: GpgGenCardKeyInteractor NEW.
|
||||||
cpp: Subkey::keyGrip NEW.
|
cpp: Subkey::keyGrip NEW.
|
||||||
cpp: Subkey::isDeVs NEW.
|
cpp: Subkey::isDeVs NEW.
|
||||||
|
cpp: Data::toKeys NEW.
|
||||||
qt: CryptoConfig::stringValueList() NEW.
|
qt: CryptoConfig::stringValueList() NEW.
|
||||||
py: Context.__init__ EXTENDED: New keyword arg home_dir.
|
py: Context.__init__ EXTENDED: New keyword arg home_dir.
|
||||||
py: Context.home_dir NEW.
|
py: Context.home_dir NEW.
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "data_p.h"
|
#include "data_p.h"
|
||||||
|
#include "context_p.h"
|
||||||
#include <error.h>
|
#include <error.h>
|
||||||
#include <interfaces/dataprovider.h>
|
#include <interfaces/dataprovider.h>
|
||||||
|
|
||||||
@ -230,3 +231,26 @@ off_t GpgME::Data::seek(off_t offset, int whence)
|
|||||||
{
|
{
|
||||||
return gpgme_data_seek(d->data, offset, whence);
|
return gpgme_data_seek(d->data, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<GpgME::Key> GpgME::Data::toKeys(Protocol proto) const
|
||||||
|
{
|
||||||
|
std::vector<GpgME::Key> ret;
|
||||||
|
if (isNull()) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
auto ctx = GpgME::Context::createForProtocol(proto);
|
||||||
|
if (!ctx) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpgme_op_keylist_from_data_start (ctx->impl()->ctx, d->data, 0)) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpgme_key_t key;
|
||||||
|
while (!gpgme_op_keylist_next (ctx->impl()->ctx, &key)) {
|
||||||
|
ret.push_back(GpgME::Key(key, false));
|
||||||
|
}
|
||||||
|
delete ctx;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#define __GPGMEPP_DATA_H__
|
#define __GPGMEPP_DATA_H__
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "key.h"
|
||||||
|
|
||||||
#include <sys/types.h> // for size_t, off_t
|
#include <sys/types.h> // for size_t, off_t
|
||||||
#include <cstdio> // FILE
|
#include <cstdio> // FILE
|
||||||
@ -109,6 +110,10 @@ public:
|
|||||||
ssize_t write(const void *buffer, size_t length);
|
ssize_t write(const void *buffer, size_t length);
|
||||||
off_t seek(off_t offset, int whence);
|
off_t seek(off_t offset, int whence);
|
||||||
|
|
||||||
|
/** Try to parse the data to a key object using the
|
||||||
|
* Protocol proto. Returns an empty list on error.*/
|
||||||
|
std::vector<Key> toKeys(const Protocol proto = Protocol::OpenPGP) const;
|
||||||
|
|
||||||
class Private;
|
class Private;
|
||||||
Private *impl()
|
Private *impl()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user