cpp: Add gpgme_data_rewind to cpp API

* lang/cpp/src/data.h, lang/cpp/src/data.cpp (Data::rewind): New.
* lang/qt/tests/t-various.cpp (testDataRewind): Test it.

--
The advantage of this convieniance function in GPGME is that
it avoids the messiness that are declarations with off_t.

GnuPG-Bug-Id: T3996
This commit is contained in:
Andre Heinecke 2018-05-29 09:16:22 +02:00
parent 77166851f1
commit 618aa7f08d
No known key found for this signature in database
GPG Key ID: 2978E9D40CBABA5C
4 changed files with 28 additions and 0 deletions

1
NEWS
View File

@ -8,6 +8,7 @@ Noteworthy changes in version 1.11.2 (unreleased)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpp: DecryptionResult::sessionKey NEW.
cpp: DecryptionResult::symkeyAlgo NEW.
cpp: Data::rewind NEW.
Noteworthy changes in version 1.11.1 (2018-04-20)
-------------------------------------------------

View File

@ -232,6 +232,11 @@ off_t GpgME::Data::seek(off_t offset, int whence)
return gpgme_data_seek(d->data, offset, whence);
}
GpgME::Error GpgME::Data::rewind()
{
return Error(gpgme_data_rewind(d->data));
}
std::vector<GpgME::Key> GpgME::Data::toKeys(Protocol proto) const
{
std::vector<GpgME::Key> ret;

View File

@ -110,6 +110,9 @@ public:
ssize_t write(const void *buffer, size_t length);
off_t seek(off_t offset, int whence);
/* Convenience function to do a seek (0, SEEK_SET). */
Error rewind();
/** 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;

View File

@ -98,6 +98,25 @@ private Q_SLOTS:
QVERIFY(key.primaryFingerprint() == QStringLiteral("7A0904B6950DA998020A1AD4BE41C0C3A5FF1F3C"));
}
void testDataRewind()
{
if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.14") {
return;
}
QGpgME::QByteArrayDataProvider dp(aKey);
Data data(&dp);
char buf[20];
data.read(buf, 20);
auto keys = data.toKeys();
QVERIFY(keys.size() == 0);
data.rewind();
keys = data.toKeys();
QVERIFY(keys.size() == 1);
}
void testQuickUid()
{
if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.13") {