[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