[git] GPGME - branch, master, updated. gpgme-1.10.0-185-gbdf7cd2

by Werner Koch cvs at cvs.gnupg.org
Thu Apr 12 15:46:22 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".

The branch, master has been updated
       via  bdf7cd2e28432cf0fa7e0758acdfee03d7bfd45f (commit)
      from  f7700a016926f0d8e9cb3c0337837deb7fe01079 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit bdf7cd2e28432cf0fa7e0758acdfee03d7bfd45f
Author: Werner Koch <wk at gnupg.org>
Date:   Thu Apr 12 15:39:20 2018 +0200

    tests: Add another check to gpg/t-verify.
    
    * tests/gpg/t-verify.c (PGM): New.  Use it instead of __FILE__.
    (test_sig1_plus_unknown_key): New test signature.
    (check_result): Allow checking of several signatures.
    (main): Check a signature with a know and an unknown key.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/tests/gpg/t-verify.c b/tests/gpg/t-verify.c
index f955cc9..ffc41ee 100644
--- a/tests/gpg/t-verify.c
+++ b/tests/gpg/t-verify.c
@@ -31,31 +31,14 @@
 
 #include <gpgme.h>
 
+#define PGM "t-verify"
 #include "t-support.h"
 
+
 

 static const char test_text1[] = "Just GNU it!\n";
 static const char test_text1f[]= "Just GNU it?\n";
 static const char test_sig1[] =
-#if 0
-"-----BEGIN PGP SIGNATURE-----\n"
-"\n"
-"iEYEABECAAYFAjoKgjIACgkQLXJ8x2hpdzQMSwCeO/xUrhysZ7zJKPf/FyXA//u1\n"
-"ZgIAn0204PBR7yxSdQx6CFxugstNqmRv\n"
-"=yku6\n"
-"-----END PGP SIGNATURE-----\n"
-#elif 0
-"-----BEGIN PGP SIGNATURE-----\n"
-"Version: GnuPG v1.0.4-2 (GNU/Linux)\n"
-"Comment: For info see http://www.gnupg.org\n"
-"\n"
-"iJcEABECAFcFAjoS8/E1FIAAAAAACAAkZm9vYmFyLjF0aGlzIGlzIGEgbm90YXRp\n"
-"b24gZGF0YSB3aXRoIDIgbGluZXMaGmh0dHA6Ly93d3cuZ3Uub3JnL3BvbGljeS8A\n"
-"CgkQLXJ8x2hpdzQLyQCbBW/fgU8ZeWSlWPM1F8umHX17bAAAoIfSNDSp5zM85XcG\n"
-"iwxMrf+u8v4r\n"
-"=88Zo\n"
-"-----END PGP SIGNATURE-----\n"
-#elif 1
 "-----BEGIN PGP SIGNATURE-----\n"
 "\n"
 "iN0EABECAJ0FAjoS+i9FFIAAAAAAAwA5YmFyw7bDpMO8w58gZGFzIHdhcmVuIFVt\n"
@@ -64,9 +47,24 @@ static const char test_sig1[] =
 "Oi8vd3d3Lmd1Lm9yZy9wb2xpY3kvAAoJEC1yfMdoaXc0JBIAoIiLlUsvpMDOyGEc\n"
 "dADGKXF/Hcb+AKCJWPphZCphduxSvrzH0hgzHdeQaA==\n"
 "=nts1\n"
-"-----END PGP SIGNATURE-----\n"
-#endif
-;
+"-----END PGP SIGNATURE-----\n";
+
+/* The same as test_sig1 but with a second signature for which we do
+ * not have the public key (deleted after signature creation).  */
+static const char test_sig1_plus_unknown_key[] =
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iN0EABECAJ0FAjoS+i9FFIAAAAAAAwA5YmFyw7bDpMO8w58gZGFzIHdhcmVuIFVt\n"
+"bGF1dGUgdW5kIGpldHp0IGVpbiBwcm96ZW50JS1aZWljaGVuNRSAAAAAAAgAJGZv\n"
+"b2Jhci4xdGhpcyBpcyBhIG5vdGF0aW9uIGRhdGEgd2l0aCAyIGxpbmVzGhpodHRw\n"
+"Oi8vd3d3Lmd1Lm9yZy9wb2xpY3kvAAoJEC1yfMdoaXc0JBIAoIiLlUsvpMDOyGEc\n"
+"dADGKXF/Hcb+AKCJWPphZCphduxSvrzH0hgzHdeQaIh1BAAWCAAdFiEENuwqcMZC\n"
+"brD85btN+RyY8EnUIEwFAlrPR4cACgkQ+RyY8EnUIEyiuAEAm41LJTGUFDzhavRm\n"
+"jNwqUZxGGOySduW+u/X1lEfV+MYA/2lJOo75rHtD1EG+tkFVWt4Ukj0rjhR132vZ\n"
+"IOtrYAcG\n"
+"=yYwZ\n"
+"-----END PGP SIGNATURE-----\n";
+
 static const char test_sig2[] =
 "-----BEGIN PGP MESSAGE-----\n"
 "\n"
@@ -91,37 +89,51 @@ static const char double_plaintext_sig[] =
 
 
 
+/* NO_OF_SIGS is the expected number of signatures.  SKIP_SKIPS is
+ * which of these signatures to check (0 based).  */
 static void
-check_result (gpgme_verify_result_t result, unsigned int summary,
-              const char *fpr,
+check_result (gpgme_verify_result_t result, int no_of_sigs, int skip_sigs,
+              unsigned int summary, const char *fpr,
 	      gpgme_error_t status, int notation)
 {
   gpgme_signature_t sig;
+  int n;
 
   sig = result->signatures;
-  if (!sig || sig->next)
+  for (n=0; sig; sig = sig->next)
+    n++;
+  if (n != no_of_sigs)
     {
-      fprintf (stderr, "%s:%i: Unexpected number of signatures\n",
-	       __FILE__, __LINE__);
+      fprintf (stderr, "%s:%i: Unexpected number of signatures"
+               " (got %d expected  %d)\n", PGM, __LINE__, n, no_of_sigs);
       exit (1);
     }
+  if (skip_sigs >= n)
+    {
+      fprintf (stderr, "%s:%i: oops SKIPP_SIGS to high\n", PGM, __LINE__);
+      exit (1);
+    }
+
+  for (n=0, sig = result->signatures; n < skip_sigs; sig = sig->next, n++)
+    ;
+
   if (sig->summary != summary)
     {
-      fprintf (stderr, "%s:%i: Unexpected signature summary: "
+      fprintf (stderr, "%s:%i:sig-%d: Unexpected signature summary: "
                "want=0x%x have=0x%x\n",
-	       __FILE__, __LINE__, summary, sig->summary);
+	       PGM, __LINE__, skip_sigs, summary, sig->summary);
       exit (1);
     }
   if (strcmp (sig->fpr, fpr))
     {
-      fprintf (stderr, "%s:%i: Unexpected fingerprint: %s\n",
-	       __FILE__, __LINE__, sig->fpr);
+      fprintf (stderr, "%s:%i:sig-%d: Unexpected fingerprint: %s\n",
+	       PGM, __LINE__, skip_sigs, sig->fpr);
       exit (1);
     }
   if (gpgme_err_code (sig->status) != status)
     {
-      fprintf (stderr, "%s:%i: Unexpected signature status: %s\n",
-	       __FILE__, __LINE__, gpgme_strerror (sig->status));
+      fprintf (stderr, "%s:%i:sig-%d: Unexpected signature status: %s\n",
+	       PGM, __LINE__, skip_sigs, gpgme_strerror (sig->status));
       exit (1);
     }
   if (notation)
@@ -166,8 +178,8 @@ check_result (gpgme_verify_result_t result, unsigned int summary,
             }
           if (!any)
             {
-              fprintf (stderr, "%s:%i: Unexpected notation data\n",
-                       __FILE__, __LINE__);
+              fprintf (stderr, "%s:%i:sig-%d: Unexpected notation data\n",
+                       PGM, __LINE__, skip_sigs);
               exit (1);
             }
         }
@@ -175,28 +187,30 @@ check_result (gpgme_verify_result_t result, unsigned int summary,
         {
           if (expected_notations[i].seen != 1)
             {
-              fprintf (stderr, "%s:%i: Missing or duplicate notation data\n",
-                       __FILE__, __LINE__);
+              fprintf (stderr, "%s:%i:sig-%d: "
+                       "Missing or duplicate notation data\n",
+                       PGM, __LINE__, skip_sigs);
               exit (1);
             }
         }
     }
   if (sig->wrong_key_usage)
     {
-      fprintf (stderr, "%s:%i: Unexpectedly wrong key usage\n",
-	       __FILE__, __LINE__);
+      fprintf (stderr, "%s:%i:sig-%d: Unexpectedly wrong key usage\n",
+	       PGM, __LINE__, skip_sigs);
       exit (1);
     }
   if (sig->validity != GPGME_VALIDITY_UNKNOWN)
     {
-      fprintf (stderr, "%s:%i: Unexpected validity: %i\n",
-	       __FILE__, __LINE__, sig->validity);
+      fprintf (stderr, "%s:%i:sig-%d: Unexpected validity: %i\n",
+	       PGM, __LINE__, skip_sigs, sig->validity);
       exit (1);
     }
   if (gpgme_err_code (sig->validity_reason) != GPG_ERR_NO_ERROR)
     {
-      fprintf (stderr, "%s:%i: Unexpected validity reason: %s\n",
-	       __FILE__, __LINE__, gpgme_strerror (sig->validity_reason));
+      fprintf (stderr, "%s:%i:sig-%d: Unexpected validity reason: %s\n",
+	       PGM, __LINE__, skip_sigs,
+               gpgme_strerror (sig->validity_reason));
       exit (1);
     }
 }
@@ -227,7 +241,7 @@ main (int argc, char *argv[])
   err = gpgme_op_verify (ctx, sig, text, NULL);
   fail_if_err (err);
   result = gpgme_op_verify_result (ctx);
-  check_result (result, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+  check_result (result, 1, 0, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
 		GPG_ERR_NO_ERROR, 1);
 
   /* Checking a manipulated message.  */
@@ -238,9 +252,27 @@ main (int argc, char *argv[])
   err = gpgme_op_verify (ctx, sig, text, NULL);
   fail_if_err (err);
   result = gpgme_op_verify_result (ctx);
-  check_result (result, GPGME_SIGSUM_RED, "2D727CC768697734",
+  check_result (result, 1, 0, GPGME_SIGSUM_RED, "2D727CC768697734",
 		GPG_ERR_BAD_SIGNATURE, 0);
 
+  /* Checking a valid message.  Bu that one has a second signature
+   * made by an unknown key.  */
+  gpgme_data_release (text);
+  gpgme_data_release (sig);
+  err = gpgme_data_new_from_mem (&text, test_text1, strlen (test_text1), 0);
+  fail_if_err (err);
+  err = gpgme_data_new_from_mem (&sig, test_sig1_plus_unknown_key,
+                                 strlen (test_sig1_plus_unknown_key), 0);
+  fail_if_err (err);
+  err = gpgme_op_verify (ctx, sig, text, NULL);
+  fail_if_err (err);
+  result = gpgme_op_verify_result (ctx);
+  check_result (result, 2, 0, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+		GPG_ERR_NO_ERROR, 1);
+  check_result (result, 2, 1, 0, "36EC2A70C6426EB0FCE5BB4DF91C98F049D4204C",
+		GPG_ERR_NO_ERROR, 0);
+
+
   /* Checking a normal signature.  */
   gpgme_data_release (sig);
   gpgme_data_release (text);
@@ -251,7 +283,7 @@ main (int argc, char *argv[])
   err = gpgme_op_verify (ctx, sig, NULL, text);
   fail_if_err (err);
   result = gpgme_op_verify_result (ctx);
-  check_result (result, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+  check_result (result, 1, 0, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
 		GPG_ERR_NO_ERROR, 0);
 
 
@@ -267,7 +299,7 @@ main (int argc, char *argv[])
   if (gpgme_err_code (err) != GPG_ERR_BAD_DATA)
     {
       fprintf (stderr, "%s:%i: Double plaintext message not detected\n",
-	       __FILE__, __LINE__);
+	       PGM, __LINE__);
       exit (1);
     }
 
@@ -278,7 +310,7 @@ main (int argc, char *argv[])
   if (!s || strcmp (s, "foo at example.org"))
     {
       fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n",
-               __FILE__, __LINE__);
+               PGM, __LINE__);
       exit (1);
     }
 
@@ -288,7 +320,7 @@ main (int argc, char *argv[])
   if (!s || strcmp (s, "bar at example.org"))
     {
       fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n",
-               __FILE__, __LINE__);
+               PGM, __LINE__);
       exit (1);
     }
 
@@ -298,7 +330,7 @@ main (int argc, char *argv[])
   if (!s || strcmp (s, "foo at example.org"))
     {
       fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n",
-               __FILE__, __LINE__);
+               PGM, __LINE__);
       exit (1);
     }
 
@@ -306,7 +338,7 @@ main (int argc, char *argv[])
   if (gpgme_err_code (err) != GPG_ERR_INV_VALUE)
     {
       fprintf (stderr, "%s:%i: gpgme_set_sender didn't detect bogus address\n",
-               __FILE__, __LINE__);
+               PGM, __LINE__);
       exit (1);
     }
   /* (the former address should still be there.)  */
@@ -314,7 +346,7 @@ main (int argc, char *argv[])
   if (!s || strcmp (s, "foo at example.org"))
     {
       fprintf (stderr, "%s:%i: gpgme_{set,get}_sender mismatch\n",
-               __FILE__, __LINE__);
+               PGM, __LINE__);
       exit (1);
     }
 

-----------------------------------------------------------------------

Summary of changes:
 tests/gpg/t-verify.c | 136 +++++++++++++++++++++++++++++++--------------------
 1 file changed, 84 insertions(+), 52 deletions(-)


hooks/post-receive
-- 
GnuPG Made Easy
http://git.gnupg.org




More information about the Gnupg-commits mailing list