aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2018-05-29 07:16:22 +0000
committerAndre Heinecke <[email protected]>2018-05-29 07:19:50 +0000
commit618aa7f08db41911f25632d9fba23bca80908ebe (patch)
treedb72649583416f11422685462be70b0f2639b69d
parentjson: Fix compiler warning. (diff)
downloadgpgme-618aa7f08db41911f25632d9fba23bca80908ebe.tar.gz
gpgme-618aa7f08db41911f25632d9fba23bca80908ebe.zip
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
-rw-r--r--NEWS1
-rw-r--r--lang/cpp/src/data.cpp5
-rw-r--r--lang/cpp/src/data.h3
-rw-r--r--lang/qt/tests/t-various.cpp19
4 files changed, 28 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index e0adb35b..848f4e99 100644
--- a/NEWS
+++ b/NEWS
@@ -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)
-------------------------------------------------
diff --git a/lang/cpp/src/data.cpp b/lang/cpp/src/data.cpp
index 52b8da24..2782aa79 100644
--- a/lang/cpp/src/data.cpp
+++ b/lang/cpp/src/data.cpp
@@ -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;
diff --git a/lang/cpp/src/data.h b/lang/cpp/src/data.h
index 446f6fa3..df8607e7 100644
--- a/lang/cpp/src/data.h
+++ b/lang/cpp/src/data.h
@@ -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;
diff --git a/lang/qt/tests/t-various.cpp b/lang/qt/tests/t-various.cpp
index 75456281..76e68063 100644
--- a/lang/qt/tests/t-various.cpp
+++ b/lang/qt/tests/t-various.cpp
@@ -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") {