aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-09-12 12:53:08 +0000
committerJustus Winter <[email protected]>2016-09-12 12:56:07 +0000
commita0263ad282d350b548cbbc27e96f196d9217d040 (patch)
tree086c0bd6234ff613bc5f6cbe239171a5b2169538
parentqt: Fix some includes (diff)
downloadgpgme-a0263ad282d350b548cbbc27e96f196d9217d040.tar.gz
gpgme-a0263ad282d350b548cbbc27e96f196d9217d040.zip
tests: Make signature notation test compatible with older GnuPGs.
* lang/python/tests/t-sig-notation.py: Only check the critical flag when GnuPG >= 2.1.13 is used. * tests/gpg/t-sig-notation.c: Likewise. Fixes-commit: c88c9ef3 Signed-off-by: Justus Winter <[email protected]>
-rwxr-xr-xlang/python/tests/t-sig-notation.py11
-rw-r--r--tests/gpg/t-sig-notation.c32
2 files changed, 40 insertions, 3 deletions
diff --git a/lang/python/tests/t-sig-notation.py b/lang/python/tests/t-sig-notation.py
index 0f77e37a..b024bb5a 100755
--- a/lang/python/tests/t-sig-notation.py
+++ b/lang/python/tests/t-sig-notation.py
@@ -29,6 +29,14 @@ expected_notations = {
None: ("http://www.gnu.org/policy/", 0),
}
+# GnuPG prior to 2.1.13 did not report the critical flag correctly.
+with core.Context() as c:
+ version = c.engine_info.version
+ have_correct_sig_data = not (version.startswith("1.")
+ or version == "2.1.1"
+ or (version.startswith("2.1.1")
+ and version[5] < '3'))
+
def check_result(result):
assert len(result.signatures) == 1, "Unexpected number of signatures"
sig = result.signatures[0]
@@ -45,7 +53,8 @@ def check_result(result):
assert r.human_readable \
== bool(flags&constants.SIG_NOTATION_HUMAN_READABLE)
assert r.critical \
- == bool(flags&constants.SIG_NOTATION_CRITICAL)
+ == (bool(flags&constants.SIG_NOTATION_CRITICAL)
+ if have_correct_sig_data else False)
assert len(expected_notations) == 0
diff --git a/tests/gpg/t-sig-notation.c b/tests/gpg/t-sig-notation.c
index 843606a5..798ad24f 100644
--- a/tests/gpg/t-sig-notation.c
+++ b/tests/gpg/t-sig-notation.c
@@ -24,6 +24,7 @@
#include <config.h>
#endif
+#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -33,6 +34,11 @@
#include "t-support.h"
+
+/* GnuPG prior to 2.1.13 did not report the critical flag
+ correctly. */
+int have_correct_sig_data;
+
static struct {
const char *name;
const char *value;
@@ -83,11 +89,17 @@ check_result (gpgme_verify_result_t result)
&& r->value
&& !strcmp (r->value, expected_notations[i].value)
&& r->value_len == strlen (expected_notations[i].value)
- && r->flags == expected_notations[i].flags
+ && r->flags
+ == (have_correct_sig_data
+ ? expected_notations[i].flags
+ : expected_notations[i].flags
+ & ~GPGME_SIG_NOTATION_CRITICAL)
&& r->human_readable
== !!(r->flags & GPGME_SIG_NOTATION_HUMAN_READABLE)
&& r->critical
- == !!(r->flags & GPGME_SIG_NOTATION_CRITICAL))
+ == (have_correct_sig_data
+ ? !!(r->flags & GPGME_SIG_NOTATION_CRITICAL)
+ : 0))
{
expected_notations[i].seen++;
any++;
@@ -121,9 +133,25 @@ main (int argc, char *argv[])
gpgme_verify_result_t result;
char *agent_info;
int i;
+ gpgme_engine_info_t engine_info;
init_gpgme (GPGME_PROTOCOL_OpenPGP);
+ err = gpgme_get_engine_info (&engine_info);
+ fail_if_err (err);
+ for (; engine_info; engine_info = engine_info->next)
+ if (engine_info->protocol == GPGME_PROTOCOL_OpenPGP)
+ break;
+ assert (engine_info);
+
+ /* GnuPG prior to 2.1.13 did not report the critical flag
+ correctly. */
+ have_correct_sig_data =
+ ! (strncmp ("1.", engine_info->version, 2)
+ || (strncmp ("2.1.1", engine_info->version, 5)
+ && (engine_info->version[5] == 0
+ || engine_info->version[5] < '3')));
+
err = gpgme_new (&ctx);
fail_if_err (err);