[git] GPGME - branch, gpgme-1.4-branch, updated. gpgme-1.4.4-1-g7a0e7f9

by Werner Koch cvs at cvs.gnupg.org
Tue Jul 5 22:12:46 CEST 2016


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, gpgme-1.4-branch has been updated
       via  7a0e7f93f727e82d9404655b96abb0a8558cb2e5 (commit)
      from  998e454a320db77361feddf0dcc5ba39ebd9a49b (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 7a0e7f93f727e82d9404655b96abb0a8558cb2e5
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Aug 12 10:36:30 2014 +0200

    Handle modern keyserver output which may emit the fingerprint.
    
    * src/engine-gpg.c (read_colon_line): Split preprocessed lines.
    (gpg_keylist_preprocess): Limit keyid field and print fingerprint.

diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 36f035a..924ba44 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1237,10 +1237,26 @@ read_colon_line (engine_gpg_t gpg)
 		    }
 
 		  assert (gpg->colon.fnc);
-		  gpg->colon.fnc (gpg->colon.fnc_value, line ? line : buffer);
-		  if (line)
-		    free (line);
-		}
+                  if (line)
+                    {
+                      char *linep = line;
+                      char *endp;
+
+                      do
+                        {
+                          endp = strchr (linep, '\n');
+                          if (endp)
+                            *endp++ = 0;
+                          gpg->colon.fnc (gpg->colon.fnc_value, linep);
+                          linep = endp;
+                        }
+                      while (linep && *linep);
+
+                      free (line);
+                    }
+                  else
+                    gpg->colon.fnc (gpg->colon.fnc_value, buffer);
+                }
 
 	      /* To reuse the buffer for the next line we have to
 		 shift the remaining data to the buffer start and
@@ -2059,6 +2075,7 @@ gpg_keylist_preprocess (char *line, char **r_line)
 #define NR_FIELDS 16
   char *field[NR_FIELDS];
   int fields = 0;
+  size_t n;
 
   *r_line = NULL;
 
@@ -2094,16 +2111,34 @@ gpg_keylist_preprocess (char *line, char **r_line)
 	 pub:<keyid>:<algo>:<keylen>:<creationdate>:<expirationdate>:<flags>
 
 	 as defined in 5.2. Machine Readable Indexes of the OpenPGP
-	 HTTP Keyserver Protocol (draft).
+	 HTTP Keyserver Protocol (draft).  Modern versions of the SKS
+	 keyserver return the fingerprint instead of the keyid.  We
+	 detect this here and use the v4 fingerprint format to convert
+	 it to a key id.
 
 	 We want:
 	 pub:o<flags>:<keylen>:<algo>:<keyid>:<creatdate>:<expdate>::::::::
       */
 
-      if (asprintf (r_line, "pub:o%s:%s:%s:%s:%s:%s::::::::",
-		    field[6], field[3], field[2], field[1],
-		    field[4], field[5]) < 0)
-	return gpg_error_from_syserror ();
+      n = strlen (field[1]);
+      if (n > 16)
+        {
+          if (asprintf (r_line,
+                        "pub:o%s:%s:%s:%s:%s:%s::::::::\n"
+                        "fpr:::::::::%s:",
+                        field[6], field[3], field[2], field[1] + n - 16,
+                        field[4], field[5], field[1]) < 0)
+            return gpg_error_from_syserror ();
+        }
+      else
+        {
+          if (asprintf (r_line,
+                        "pub:o%s:%s:%s:%s:%s:%s::::::::",
+                        field[6], field[3], field[2], field[1],
+                        field[4], field[5]) < 0)
+            return gpg_error_from_syserror ();
+        }
+
       return 0;
 
     case RT_UID:

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

Summary of changes:
 src/engine-gpg.c | 53 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 44 insertions(+), 9 deletions(-)


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




More information about the Gnupg-commits mailing list