From cvs at cvs.gnupg.org Mon May 2 09:00:15 2016 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Mon, 02 May 2016 09:00:15 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.11-165-g6677d8b Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via 6677d8b61446eb5760a30a2488c992d6e895a9ed (commit) from 35f4b6aafdf1889ed1ae569af5852f47738fe993 (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 6677d8b61446eb5760a30a2488c992d6e895a9ed Author: NIIBE Yutaka Date: Mon May 2 15:56:02 2016 +0900 scd: More fix of error return path. * scd/command.c (open_card): Return GPG_ERR_ENODEV on the failure of apdu_connect. -- GnuPG-bug-id: 2306 Signed-off-by: NIIBE Yutaka diff --git a/scd/command.c b/scd/command.c index 4e80d76..72ff132 100644 --- a/scd/command.c +++ b/scd/command.c @@ -469,8 +469,8 @@ open_card (ctrl_t ctrl, const char *apptype) else if (sw == SW_HOST_CARD_INACTIVE) err = gpg_error (GPG_ERR_CARD_RESET); else - err = gpg_error (GPG_ERR_CARD); - } + err = gpg_error (GPG_ERR_ENODEV); + } else err = select_application (ctrl, slot, apptype, &ctrl->app_ctx); } ----------------------------------------------------------------------- Summary of changes: scd/command.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon May 2 13:19:29 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 02 May 2016 13:19:29 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.11-168-g5cef611 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via 5cef6118580fe658a27d32e85696d88775ad417a (commit) via d73e83c3b678add11a5754e199e528aeb39ec8ce (commit) via c88efcc2cc7fde25fdba36a349f670f741fd4e9a (commit) from 6677d8b61446eb5760a30a2488c992d6e895a9ed (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 5cef6118580fe658a27d32e85696d88775ad417a Author: Werner Koch Date: Mon May 2 13:17:08 2016 +0200 gpg: Improve line wrapping for a tofu message. * g10/tofu.c (time_ago_str): Mark non-breakable spaces. (show_statistics): Remove marks. Signed-off-by: Werner Koch diff --git a/g10/tofu.c b/g10/tofu.c index 20fc612..e163928 100644 --- a/g10/tofu.c +++ b/g10/tofu.c @@ -2232,7 +2232,8 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, /* Return a malloced string of the form * "7 months, 1 day, 5 minutes, 0 seconds" - * The caller must free that string. + * The caller should replace all '~' in the returned string by a space + * and also free the returned string. * * This is actually a bad hack which may not work correctly with all * languages. @@ -2306,7 +2307,9 @@ time_ago_str (long long int t) if (years) { - es_fprintf (fp, ngettext("%d year", "%d years", years), years); + /* TRANSLATORS: The tilde ('~') is used here to indicate a + * non-breakable space */ + es_fprintf (fp, ngettext("%d~year", "%d~years", years), years); count ++; first = i; } @@ -2315,7 +2318,7 @@ time_ago_str (long long int t) { if (count) es_fprintf (fp, ", "); - es_fprintf (fp, ngettext("%d month", "%d months", months), months); + es_fprintf (fp, ngettext("%d~month", "%d~months", months), months); count ++; first = i; } @@ -2324,7 +2327,7 @@ time_ago_str (long long int t) { if (count) es_fprintf (fp, ", "); - es_fprintf (fp, ngettext("%d day", "%d days", days), days); + es_fprintf (fp, ngettext("%d~day", "%d~days", days), days); count ++; first = i; } @@ -2333,7 +2336,7 @@ time_ago_str (long long int t) { if (count) es_fprintf (fp, ", "); - es_fprintf (fp, ngettext("%d hour", "%d hours", hours), hours); + es_fprintf (fp, ngettext("%d~hour", "%d~hours", hours), hours); count ++; first = i; } @@ -2342,7 +2345,7 @@ time_ago_str (long long int t) { if (count) es_fprintf (fp, ", "); - es_fprintf (fp, ngettext("%d minute", "%d minutes", minutes), minutes); + es_fprintf (fp, ngettext("%d~minute", "%d~minutes", minutes), minutes); count ++; first = i; } @@ -2351,7 +2354,7 @@ time_ago_str (long long int t) { if (count) es_fprintf (fp, ", "); - es_fprintf (fp, ngettext("%d second", "%d seconds", seconds), seconds); + es_fprintf (fp, ngettext("%d~second", "%d~seconds", seconds), seconds); } es_fputc (0, fp); @@ -2485,12 +2488,15 @@ show_statistics (struct dbs *dbs, const char *fingerprint, } { - char *tmpmsg; + char *tmpmsg, *p; es_fputc (0, fp); if (es_fclose_snatch (fp, (void **) &tmpmsg, NULL)) log_fatal ("error snatching memory stream\n"); msg = format_text (tmpmsg, 0, 72, 80); es_free (tmpmsg); + for (p=msg; *p; p++) + if (*p == '~') + *p = ' '; } log_string (GPGRT_LOG_INFO, msg); commit d73e83c3b678add11a5754e199e528aeb39ec8ce Author: Werner Koch Date: Mon May 2 09:48:19 2016 +0200 gpg: Re-format some tofu messages. * common/status.h (STATUS_TOFU_USER, STATUS_TOFU_STATS) (STATUS_TOFU_STATS_SHORT, STATUS_TOFU_STATS_LONG): New. * g10/tofu.c (NO_WARNING_THRESHOLD): New. (record_binding, tofu_register): Take care of --dry-run. (show_statistics): Print STATUS_TOFU_USER. Reformat some messages. Fix the ngettext/strcmp thing. Use log_string instead of log_info. Use NO_WARNING_THRESHOLD constant. (get_trust): Use format_text and print a compact fingerprint. -- The use of log_string makes long messages better readable; instead of gpg: Warning: if you think you've seen more[...] key, then this key might be a forgery! Car[...] address for small variations. If the key i[...] we now have gpg: Warning: if you think you've seen more[...] key, then this key might be a forgery![...] address for small variations. If the [...] We also put the key information after the message and not between the user id and the last used info like here: gpg: Verified 7 messages signed by "Werner Koch " in the past 4 days, 16 hours. The most recent message was verified 3 days, 13 hours ago. (key: 8061 5870 F5BA D690 3336 [...] 1E42 B367, policy: auto) This also makes the key info a separate translatable string. Further a compact version of the fingerprint (hex w/o spaces) is printed in some messages. Signed-off-by: Werner Koch diff --git a/common/status.h b/common/status.h index e50827f..730a75c 100644 --- a/common/status.h +++ b/common/status.h @@ -133,6 +133,11 @@ enum STATUS_PKA_TRUST_BAD, STATUS_PKA_TRUST_GOOD, + STATUS_TOFU_USER, + STATUS_TOFU_STATS, + STATUS_TOFU_STATS_SHORT, + STATUS_TOFU_STATS_LONG, + STATUS_TRUNCATED, STATUS_MOUNTPOINT, diff --git a/g10/tofu.c b/g10/tofu.c index e3218b9..20fc612 100644 --- a/g10/tofu.c +++ b/g10/tofu.c @@ -40,12 +40,16 @@ #include "trustdb.h" #include "mkdir_p.h" #include "sqlite.h" +#include "status.h" #include "tofu.h" #define CONTROL_L ('L' - 'A' + 1) +/* Number of signed messages required to not show extra warnings. */ +#define NO_WARNING_THRESHOLD 10 + #define DEBUG_TOFU_CACHE 0 #if DEBUG_TOFU_CACHE @@ -1205,7 +1209,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email, { log_debug ("TOFU: Error reading from binding database" " (reading policy for <%s, %s>): %s\n", - fingerprint_pp, email, err); + fingerprint, email, err); sqlite3_free (err); } } @@ -1215,12 +1219,12 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email, if (policy_old != TOFU_POLICY_NONE) log_debug ("Changing TOFU trust policy for binding <%s, %s>" " from %s to %s.\n", - fingerprint_pp, email, + fingerprint, email, tofu_policy_str (policy_old), tofu_policy_str (policy)); else log_debug ("Set TOFU trust policy for binding <%s, %s> to %s.\n", - fingerprint_pp, email, + fingerprint, email, tofu_policy_str (policy)); } @@ -1228,6 +1232,12 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email, /* Nothing to do. */ goto out; + if (opt.dry_run) + { + log_info ("TOFU database update skipped due to --dry-run\n"); + goto out; + } + rc = sqlite3_stepx (db_email->db, &db_email->s.record_binding_update, NULL, NULL, &err, "insert or replace into bindings\n" @@ -1246,7 +1256,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email, { log_error (_("error updating TOFU database: %s\n"), err); print_further_info (" insert bindings <%s, %s> = %s", - fingerprint_pp, email, tofu_policy_str (policy)); + fingerprint, email, tofu_policy_str (policy)); sqlite3_free (err); goto out; } @@ -1273,7 +1283,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email, { log_error (_("error updating TOFU database: %s\n"), err); print_further_info ("insert bindings <%s, %s>", - fingerprint_pp, email); + fingerprint, email); sqlite3_free (err); goto out; } @@ -1680,7 +1690,7 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, policy = opt.tofu_default_policy; if (DBG_TRUST) log_debug ("TOFU: binding <%s, %s>'s policy is auto (default: %s).\n", - fingerprint_pp, email, + fingerprint, email, tofu_policy_str (opt.tofu_default_policy)); } switch (policy) @@ -1693,7 +1703,7 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, We don't need to ask the user anything. */ if (DBG_TRUST) log_debug ("TOFU: Known binding <%s, %s>'s policy: %s\n", - fingerprint_pp, email, tofu_policy_str (policy)); + fingerprint, email, tofu_policy_str (policy)); trust_level = tofu_policy_to_trust_level (policy); goto out; @@ -1771,7 +1781,7 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, if (DBG_TRUST) log_debug ("TOFU: New binding <%s, %s>, no conflict.\n", - email, fingerprint_pp); + email, fingerprint); if (record_binding (dbs, fingerprint, email, user_id, TOFU_POLICY_AUTO, 0) != 0) @@ -1828,8 +1838,6 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, ((policy == TOFU_POLICY_NONE && bindings_with_this_email_count > 0) || (policy == TOFU_POLICY_ASK && conflict)); estream_t fp; - char *binding; - int binding_shown; strlist_t other_user_ids = NULL; struct signature_stats *stats = NULL; struct signature_stats *stats_iter = NULL; @@ -1838,43 +1846,65 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, fp = es_fopenmem (0, "rw,samethread"); if (! fp) - log_fatal ("Error creating memory stream\n"); + log_fatal ("error creating memory stream: %s\n", + gpg_strerror (gpg_error_from_syserror())); - binding = xasprintf ("<%s, %s>", fingerprint_pp, email); - binding_shown = 0; + /* Format the first part of the message. */ + { + estream_t fp1; + char *binding = xasprintf ("<%s, %s>", fingerprint, email); + int binding_shown = 0; + char *tmpstr, *text; - if (policy == TOFU_POLICY_NONE) - { - es_fprintf (fp, _("The binding %s is NOT known."), binding); - es_fputs (" ", fp); - binding_shown = 1; - } - else if (policy == TOFU_POLICY_ASK - /* If there the conflict is with itself, then don't - display this message. */ - && conflict && strcmp (conflict, fingerprint) != 0) - { - char *conflict_pp = format_hexfingerprint (conflict, NULL, 0); - es_fprintf (fp, - _("The key %s raised a conflict with this binding (%s)." - " Since this binding's policy was 'auto', it was " - "changed to 'ask'."), - conflict_pp, binding); - es_fputs (" ", fp); - xfree (conflict_pp); - binding_shown = 1; - } - /* TRANSLATORS: The %s%s is replaced by either a fingerprint and a - blank or by two empty strings. */ - es_fprintf (fp, - _("Please indicate whether you believe the binding %s%s" - "is legitimate (the key belongs to the stated owner) " - "or a forgery (bad)."), - binding_shown ? "" : binding, - binding_shown ? "" : " "); - es_fputs ("\n\n", fp); - - xfree (binding); + fp1 = es_fopenmem (0, "rw,samethread"); + if (!fp1) + log_fatal ("error creating memory stream: %s\n", + gpg_strerror (gpg_error_from_syserror())); + + if (policy == TOFU_POLICY_NONE) + { + es_fprintf (fp1, _("The binding %s is NOT known."), binding); + es_fputs (" ", fp1); + binding_shown = 1; + } + else if (policy == TOFU_POLICY_ASK + /* If there the conflict is with itself, then don't + display this message. */ + && conflict && strcmp (conflict, fingerprint) != 0) + { + es_fprintf (fp1, + _("The key with fingerprint %s raised a conflict " + "with the binding %s." + " Since this binding's policy was 'auto', it was " + "changed to 'ask'."), + conflict, binding); + es_fputs (" ", fp1); + binding_shown = 1; + } + + /* TRANSLATORS: The %s%s is replaced by either a fingerprint and a + blank or by two empty strings. */ + es_fprintf (fp1, + _("Please indicate whether you believe the binding %s%s" + "is legitimate (the key belongs to the stated owner) " + "or a forgery (bad)."), + binding_shown ? "" : binding, + binding_shown ? "" : " "); + es_fputc ('\n', fp1); + + xfree (binding); + + es_fputc (0, fp1); + if (es_fclose_snatch (fp1, (void **)&tmpstr, NULL)) + log_fatal ("error snatching memory stream\n"); + text = format_text (tmpstr, 0, 72, 80); + es_free (tmpstr); + + es_fputs (text, fp); + xfree (text); + } + + es_fputc ('\n', fp); /* Find other user ids associated with this key and whether the bindings are marked as good or bad. */ @@ -2370,6 +2400,9 @@ show_statistics (struct dbs *dbs, const char *fingerprint, goto out; } + write_status_text_and_buffer (STATUS_TOFU_USER, fingerprint, + email, strlen (email), 0); + if (! strlist) log_info (_("Have never verified a message signed by key %s!\n"), fingerprint_pp); @@ -2396,8 +2429,8 @@ show_statistics (struct dbs *dbs, const char *fingerprint, } if (messages == -1 || first_seen_ago == 0) - log_info (_("Failed to collect signature statistics" - " for \"%s\" (key %s)\n"), + log_info (_("Failed to collect signature statistics for \"%s\"\n" + "(key %s)\n"), user_id, fingerprint_pp); else { @@ -2407,55 +2440,67 @@ show_statistics (struct dbs *dbs, const char *fingerprint, fp = es_fopenmem (0, "rw,samethread"); if (! fp) - log_fatal ("error creating memory stream\n"); + log_fatal ("error creating memory stream: %s\n", + gpg_strerror (gpg_error_from_syserror())); if (messages == 0) - es_fprintf (fp, - _("Verified 0 messages signed by \"%s\"" - " (key: %s, policy: %s)."), - user_id, fingerprint_pp, tofu_policy_str (policy)); + { + es_fprintf (fp, _("Verified %ld messages signed by \"%s\"."), + 0L, user_id); + es_fputc ('\n', fp); + } else { - char *first_seen_ago_str = - time_ago_str (first_seen_ago); - char *most_recent_seen_ago_str = - time_ago_str (most_recent_seen_ago); + char *first_seen_ago_str = time_ago_str (first_seen_ago); /* TRANSLATORS: The final %s is replaced by a string like "7 months, 1 day, 5 minutes, 0 seconds". */ - es_fprintf (fp, ngettext("Verified %ld message signed by \"%s\"" - " (key: %s, policy: %s) in the past %s.", - "Verified %ld messages signed by \"%s\"" - " (key: %s, policy: %s) in the past %s.", - messages), - messages, user_id, - fingerprint_pp, tofu_policy_str (policy), - first_seen_ago_str); + es_fprintf (fp, + ngettext("Verified %ld message signed by \"%s\"\n" + "in the past %s.", + "Verified %ld messages signed by \"%s\"\n" + "in the past %s.", + messages), + messages, user_id, first_seen_ago_str); if (messages > 1) { + char *tmpstr = time_ago_str (most_recent_seen_ago); es_fputs (" ", fp); - es_fprintf (fp, - _("The most recent message was verified %s ago."), - most_recent_seen_ago_str); + es_fprintf (fp, _("The most recent message was" + " verified %s ago."), tmpstr); + xfree (tmpstr); } - xfree (first_seen_ago_str); - xfree (most_recent_seen_ago_str); + + if (opt.verbose) + { + es_fputs (" ", fp); + es_fputc ('(', fp); + es_fprintf (fp, _("policy: %s"), tofu_policy_str (policy)); + es_fputs (")\n", fp); + } + else + es_fputs ("\n", fp); } - es_fputc (0, fp); - if (es_fclose_snatch (fp, (void **) &msg, NULL)) - log_fatal ("error snatching memory stream\n"); + { + char *tmpmsg; + es_fputc (0, fp); + if (es_fclose_snatch (fp, (void **) &tmpmsg, NULL)) + log_fatal ("error snatching memory stream\n"); + msg = format_text (tmpmsg, 0, 72, 80); + es_free (tmpmsg); + } - log_info ("%s\n", msg); + log_string (GPGRT_LOG_INFO, msg); xfree (msg); - if (policy == TOFU_POLICY_AUTO && messages < 10) + if (policy == TOFU_POLICY_AUTO && messages < NO_WARNING_THRESHOLD) { char *set_policy_command; char *text; - char *tmp; + char *tmpmsg; if (messages == 0) log_info (_("Warning: we've have yet to see" @@ -2465,34 +2510,29 @@ show_statistics (struct dbs *dbs, const char *fingerprint, " single message signed by this key!\n")); set_policy_command = - xasprintf ("gpg --tofu-policy bad \"%s\"", fingerprint); - /* TRANSLATORS: translate the below text. We don't - directly internationalize that text so that we can - tweak it without breaking translations. */ - text = ngettext("TOFU: few signatures %d message %s", - "TOFU: few signatures %d messages %s", 1); - if (strcmp (text, "TOFU: few signatures %d message %s") == 0) - { - text = - (messages == 1? - "Warning: if you think you've seen more than %d message " - "signed by this key, then this key might be a forgery! " - "Carefully examine the email address for small variations " - "(e.g., additional white space). If the key is suspect, " - "then use '%s' to mark it as being bad.\n" - : - "Warning: if you think you've seen more than %d messages " - "signed by this key, then this key might be a forgery! " - "Carefully examine the email address for small variations " - "(e.g., additional white space). If the key is suspect, " - "then use '%s' to mark it as being bad.\n"); - } - - tmp = xasprintf (text, messages, set_policy_command); - text = format_text (tmp, 0, 72, 80); - xfree (tmp); - log_info ("%s", text); + xasprintf ("gpg --tofu-policy bad %s", fingerprint); + + tmpmsg = xasprintf + (ngettext + ("Warning: if you think you've seen more than %ld message " + "signed by this key, then this key might be a forgery! " + "Carefully examine the email address for small " + "variations. If the key is suspect, then use\n" + " %s\n" + "to mark it as being bad.\n", + "Warning: if you think you've seen more than %ld messages " + "signed by this key, then this key might be a forgery! " + "Carefully examine the email address for small " + "variations. If the key is suspect, then use\n" + " %s\n" + "to mark it as being bad.\n", + messages), + messages, set_policy_command); + text = format_text (tmpmsg, 0, 72, 80); + xfree (tmpmsg); + log_string (GPGRT_LOG_INFO, text); xfree (text); + es_free (set_policy_command); } } @@ -2634,26 +2674,30 @@ tofu_register (PKT_public_key *pk, const char *user_id, because is the primary key! */ log_debug ("SIGNATURES DB contains duplicate records" - " ." + " <%s, %s, 0x%lx, %s, %s>." " Please report.\n", - fingerprint_pp, email, (unsigned long) sig_time, + fingerprint, email, (unsigned long) sig_time, sig_digest, origin); else if (c == 1) { already_verified = 1; if (DBG_TRUST) log_debug ("Already observed the signature" - " \n", - fingerprint_pp, email, (unsigned long) sig_time, + " <%s, %s, 0x%lx, %s, %s>\n", + fingerprint, email, (unsigned long) sig_time, sig_digest, origin); } + else if (opt.dry_run) + { + log_info ("TOFU database update skipped due to --dry-run\n"); + } else /* This is the first time that we've seen this signature. Record it. */ { if (DBG_TRUST) log_debug ("TOFU: Saving signature <%s, %s, %s>\n", - fingerprint_pp, email, sig_digest); + fingerprint, email, sig_digest); log_assert (c == 0); commit c88efcc2cc7fde25fdba36a349f670f741fd4e9a Author: Werner Koch Date: Sun May 1 20:04:39 2016 +0200 doc: Add a comment about the goals of the agent. -- diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index 5a387d4..d890036 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -54,6 +54,32 @@ The agent is automatically started on demand by @command{gpg}, Thus there is no reason to start it manually. In case you want to use the included Secure Shell Agent you may start the agent using: + at c From dkg on gnupg-devel on 2016-04-21: + at c + at c Here's an attempt at writing a short description of the goals of an + at c isolated cryptographic agent: + at c + at c A cryptographic agent should control access to secret key material. + at c The agent permits use of the secret key material by a supplicant + at c without providing a copy of the secret key material to the supplicant. + at c + at c An isolated cryptographic agent separates the request for use of + at c secret key material from permission for use of secret key material. + at c That is, the system or process requesting use of the key (the + at c "supplicant") can be denied use of the key by the owner/operator of + at c the agent (the "owner"), which the supplicant has no control over. + at c + at c One way of enforcing this split is a per-key or per-session + at c passphrase, known only by the owner, which must be supplied to the + at c agent to permit the use of the secret key material. Another way is + at c with an out-of-band permission mechanism (e.g. a button or GUI + at c interface that the owner has access to, but the supplicant does not). + at c + at c The rationale for this separation is that it allows access to the + at c secret key to be tightly controled and audited, and it doesn't permit + at c the the supplicant to either copy the key or to override the owner's + at c intentions. + @example gpg-connect-agent /bye @end example ----------------------------------------------------------------------- Summary of changes: common/status.h | 5 + doc/gpg-agent.texi | 26 +++++ g10/tofu.c | 278 +++++++++++++++++++++++++++++++---------------------- 3 files changed, 195 insertions(+), 114 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 3 11:27:27 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 03 May 2016 11:27:27 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.11-171-g33aacc3 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via 33aacc3d4bbd6a82d7e7ceca058970879741b7da (commit) via 83865be35cff5355a5c4575cc3b50609819b0baa (commit) via ae1889320b822d48f7118a29391605e9ac992701 (commit) from 5cef6118580fe658a27d32e85696d88775ad417a (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 33aacc3d4bbd6a82d7e7ceca058970879741b7da Author: Werner Koch Date: Tue May 3 11:26:06 2016 +0200 tests: Silence output of some tests. * common/t-exechelp.c (print_open_fds): Silence non-verbose output. (test_close_all_fds): Ditto. * common/t-session-env.c (show_stdnames): Indent output. * g10/test.c (TEST): Silence non-verbose okay output. (exit_tests): Ditto. * tools/gpg-zip.in (tar_verbose_opt): Add option --quiet. * tests/openpgp/gpgtar.test (GPGZIP): Pass option --quiet. * tests/openpgp/mds.test: Indent MD5 notice. * tests/openpgp/version.test: Indent --version output. Signed-off-by: Werner Koch diff --git a/common/t-exechelp.c b/common/t-exechelp.c index 19079d3..3a47dc8 100644 --- a/common/t-exechelp.c +++ b/common/t-exechelp.c @@ -35,18 +35,18 @@ print_open_fds (int *array) { int n; + if (!verbose) + return; + for (n=0; array[n] != -1; n++) ; printf ("open file descriptors: %d", n); - if (verbose) - { - putchar (' '); - putchar (' '); - putchar ('('); - for (n=0; array[n] != -1; n++) - printf ("%d%s", array[n], array[n+1] == -1?"":" "); - putchar (')'); - } + putchar (' '); + putchar (' '); + putchar ('('); + for (n=0; array[n] != -1; n++) + printf ("%d%s", array[n], array[n+1] == -1?"":" "); + putchar (')'); putchar ('\n'); } @@ -84,7 +84,8 @@ test_close_all_fds (void) system (buffer); #endif - printf ("max. file descriptors: %d\n", max_fd); + if (verbose) + printf ("max. file descriptors: %d\n", max_fd); array = xget_all_open_fds (); print_open_fds (array); for (initial_count=n=0; array[n] != -1; n++) diff --git a/common/t-session-env.c b/common/t-session-env.c index 46c6552..c5c7b0e 100644 --- a/common/t-session-env.c +++ b/common/t-session-env.c @@ -55,13 +55,24 @@ show_stdnames (void) { const char *name, *assname; int iterator = 0; + int count; - printf ("Known envvars:"); + printf (" > Known envvars:"); + count = 20; while ((name = session_env_list_stdenvnames (&iterator, &assname))) { + if (count > 60) + { + printf ("\n >"); + count = 7; + } printf ( " %s", name); + count += strlen (name) + 1; if (assname) - printf ( "(%s)", assname); + { + printf ( "(%s)", assname); + count += strlen (assname) + 2; + } } putchar('\n'); } diff --git a/g10/test.c b/g10/test.c index 39d5945..e9e2074 100644 --- a/g10/test.c +++ b/g10/test.c @@ -74,10 +74,13 @@ static int verbose; \ if (test_result == expected_result) \ { \ - printf (" ok.\n"); \ + if (verbose) printf (" ok.\n"); \ } \ else \ { \ + if (!verbose) \ + printf ("%d. Checking %s...", \ + tests, (description) ?: ""); \ printf (" failed.\n"); \ printf (" %s == %s failed.\n", \ STRINGIFY(test), \ @@ -125,7 +128,8 @@ exit_tests (int force) { if (tests_failed == 0) { - printf ("All %d tests passed.\n", tests); + if (verbose) + printf ("All %d tests passed.\n", tests); exit (!!force); } else diff --git a/tests/openpgp/gpgtar.test b/tests/openpgp/gpgtar.test index 63bed70..2f33f75 100755 --- a/tests/openpgp/gpgtar.test +++ b/tests/openpgp/gpgtar.test @@ -68,7 +68,7 @@ do_test() awk '{print $NF}' "$FILELIST" | grep "^${F}$" >/dev/null done - $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $EXTRACT_FLAGS \ + $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $EXTRACT_FLAGS --quiet \ --tar-args --directory="${TESTDIR}" \ "${TESTDIR}/test.tar.pgp" for F in $TESTFILES diff --git a/tests/openpgp/mds.test b/tests/openpgp/mds.test index 944f535..bb73312 100755 --- a/tests/openpgp/mds.test +++ b/tests/openpgp/mds.test @@ -26,7 +26,7 @@ cat /dev/null | $GPG --with-colons --print-mds >y if have_hash_algo "MD5"; then test_one ":1:" "D41D8CD98F00B204E9800998ECF8427E" else - echo "Hash algorithm MD5 is not installed (not an error)" + echo " > Hash algorithm MD5 is not installed (not an error)" fi # SHA-1 test_one ":2:" "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709" diff --git a/tests/openpgp/version.test b/tests/openpgp/version.test index be565fb..9d265ad 100755 --- a/tests/openpgp/version.test +++ b/tests/openpgp/version.test @@ -105,6 +105,6 @@ $GPG_PRESET_PASSPHRASE --preset -P abc A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD info "Printing the GPG version" -$GPG --version +$GPG --version | awk '{print " > " $0}' #fixme: check that the output is as expected diff --git a/tools/gpg-zip.in b/tools/gpg-zip.in index a6b4238..48c4766 100644 --- a/tools/gpg-zip.in +++ b/tools/gpg-zip.in @@ -34,6 +34,8 @@ Usage: gpg-zip [--help] [--version] [--encrypt] [--decrypt] [--symmetric] Encrypt or sign files into an archive." +tar_verbose_opt="v" + while test $# -gt 0 ; do case $1 in -h | --help | --h*) @@ -113,6 +115,10 @@ while test $# -gt 0 ; do shift shift ;; + --quiet) + tar_verbose_opt="" + shift + ;; --) shift break @@ -135,7 +141,7 @@ elif test x$list = xyes ; then cat "$1" | $GPG $gpg_args | $TAR $tar_args -tf - elif test x$unpack = xyes ; then # echo "cat \"$1\" | $GPG $gpg_args | $TAR $tar_args -xvf -" 1>&2 - cat "$1" | $GPG $gpg_args | $TAR $tar_args -xvf - + cat "$1" | $GPG $gpg_args | $TAR $tar_args -x${tar_verbose_opt}f - else echo "$usage" 1>&2 exit 1 commit 83865be35cff5355a5c4575cc3b50609819b0baa Author: Werner Koch Date: Tue May 3 10:26:55 2016 +0200 gpg: Emit status lines TOFU_STATS and TOFU_STATS_LONG. * g10/tofu.c (NO_WARNING_THRESHOLD): Rename to BASIC_TRUST_THRESHOLD. (FULL_TRUST_THRESHOLD): New. (write_stats_status): New. (show_statistics): Call new function. Print TOFU_STATS_LONG. Signed-off-by: Werner Koch diff --git a/doc/DETAILS b/doc/DETAILS index 7d5a5a8..5ceab68 100644 --- a/doc/DETAILS +++ b/doc/DETAILS @@ -668,10 +668,54 @@ pkd:0:1024:B665B1435F4C2 .... FF26ABB: - shell :: The standard X.509 model. - chain :: The chain model. - steed :: The STEED model. + - tofu :: The TOFU model Note that the term =TRUST_= in the status names is used for historic reasons; we now speak of validity. +*** TOFU_USER + + This status identifies the key and the userid for all following + Tofu information. The fingerprint is the fingerprint of the + primary key and the mbox is in general the mailbox part of the + userid encoded in UTF-8 and percent escaped. + +*** TOFU_STATS 0 [ [ ]] + + Statistics for the current user id. + + Values for VALIDITY are: + - 0 :: conflict + - 1 :: key without history + - 2 :: key with too little history + - 3 :: key with enough history for basic trust + - 4 :: key with a lot of history + + Values for POLICY are: + - none :: No Policy set + - auto :: Policy is "auto" + - good :: Policy is "good" + - bad :: Policy is "bad" + - ask :: Policy is "ask" + - unknown :: Policy is not known. + + TM1 gives the number of seconds since the the first messages was + verified. TM2 gives the number of seconds since the most recent + message was verified. + +*** TOFU_STATS_SHORT + + Information about the TOFU binding for the signature. + Example: "15 signatures verified. 10 messages encrypted" + +*** TOFU_STATS_LONG + + Information about the TOFU binding for the signature in verbose + format. The LONG_STRING is percent escaped. + Example: 'Verified 9 messages signed by "Werner Koch + (dist sig)" in the past 3 minutes, 40 seconds. The most + recent message was verified 4 seconds ago.' + *** PKA_TRUST_ This is is one: diff --git a/g10/tofu.c b/g10/tofu.c index ed8bbbe..5213e03 100644 --- a/g10/tofu.c +++ b/g10/tofu.c @@ -47,8 +47,12 @@ #define CONTROL_L ('L' - 'A' + 1) -/* Number of signed messages required to not show extra warnings. */ -#define NO_WARNING_THRESHOLD 10 +/* Number of signed messages required to indicate that enough history + * is available for basic trust. */ +#define BASIC_TRUST_THRESHOLD 10 +/* Number of signed messages required to indicate that a lot of + * history is available. */ +#define FULL_TRUST_THRESHOLD 100 #define DEBUG_TOFU_CACHE 0 @@ -2365,6 +2369,40 @@ time_ago_str (long long int t) } +/* Write TOFU_STATS status line. */ +static void +write_stats_status (long messages, enum tofu_policy policy, + long first_seen_ago, long most_recent_seen_ago) +{ + char numbuf1[35]; + char numbuf2[35]; + char numbuf3[35]; + const char *validity; + + if (messages < 1) + validity = "1"; /* Key without history. */ + else if (messages < BASIC_TRUST_THRESHOLD) + validity = "2"; /* Key with too little history. */ + else if (messages < FULL_TRUST_THRESHOLD) + validity = "3"; /* Key with enough history for basic trust. */ + else + validity = "4"; /* Key with a lot of history. */ + + snprintf (numbuf1, sizeof numbuf1, " %ld", messages); + *numbuf2 = *numbuf3 = 0; + if (first_seen_ago >= 0 && most_recent_seen_ago >= 0) + { + snprintf (numbuf2, sizeof numbuf2, " %ld", first_seen_ago); + snprintf (numbuf3, sizeof numbuf3, " %ld", most_recent_seen_ago); + } + + write_status_strings (STATUS_TOFU_STATS, + validity, numbuf1, " 0", + " ", tofu_policy_str (policy), + numbuf2, numbuf3, + NULL); +} + static void show_statistics (struct dbs *dbs, const char *fingerprint, const char *email, const char *user_id, @@ -2407,8 +2445,11 @@ show_statistics (struct dbs *dbs, const char *fingerprint, email, strlen (email), 0); if (! strlist) - log_info (_("Have never verified a message signed by key %s!\n"), - fingerprint_pp); + { + log_info (_("Have never verified a message signed by key %s!\n"), + fingerprint_pp); + write_stats_status (0, TOFU_POLICY_NONE, -1, -1); + } else { signed long messages; @@ -2432,15 +2473,21 @@ show_statistics (struct dbs *dbs, const char *fingerprint, } if (messages == -1 || first_seen_ago == 0) - log_info (_("Failed to collect signature statistics for \"%s\"\n" - "(key %s)\n"), - user_id, fingerprint_pp); + { + write_stats_status (0, TOFU_POLICY_NONE, -1, -1); + log_info (_("Failed to collect signature statistics for \"%s\"\n" + "(key %s)\n"), + user_id, fingerprint_pp); + } else { enum tofu_policy policy = get_policy (dbs, fingerprint, email, NULL); estream_t fp; char *msg; + write_stats_status (messages, policy, + first_seen_ago, most_recent_seen_ago); + fp = es_fopenmem (0, "rw,samethread"); if (! fp) log_fatal ("error creating memory stream: %s\n", @@ -2497,12 +2544,18 @@ show_statistics (struct dbs *dbs, const char *fingerprint, for (p=msg; *p; p++) if (*p == '~') *p = ' '; + + /* Print a status line but suppress the trailing LF. + * Spaces are not percent escaped. */ + if (*msg) + write_status_buffer (STATUS_TOFU_STATS_LONG, + msg, strlen (msg)-1, -1); } log_string (GPGRT_LOG_INFO, msg); xfree (msg); - if (policy == TOFU_POLICY_AUTO && messages < NO_WARNING_THRESHOLD) + if (policy == TOFU_POLICY_AUTO && messages < BASIC_TRUST_THRESHOLD) { char *set_policy_command; char *text; commit ae1889320b822d48f7118a29391605e9ac992701 Author: Werner Koch Date: Mon May 2 19:10:59 2016 +0200 gpg: Extend TRUST_foo status lines with the trust model. * g10/trustdb.h (TRUST_FLAG_TOFU_BASED): New. * g10/trustdb.c (trust_model_string): Lowercase the strings. Add arg "model" and change callers to call with OPT.TRUST_MODEL. * g10/tofu.c (tofu_wot_trust_combine): Set TRUST_FLAG_TOFU_BASED. * g10/pkclist.c (write_trust_status): New. (check_signatures_trust): Call new function. Signed-off-by: Werner Koch diff --git a/g10/pkclist.c b/g10/pkclist.c index b659cb8..de8897a 100644 --- a/g10/pkclist.c +++ b/g10/pkclist.c @@ -505,6 +505,22 @@ do_we_trust_pre( PKT_public_key *pk, unsigned int trustlevel ) } +/* Write a TRUST_foo status line inclduing the validation model. */ +static void +write_trust_status (int statuscode, int trustlevel) +{ + int tm; + + /* For the combined tofu+pgp method, we return the trust model which + * was responsible for the trustlevel. */ + if (opt.trust_model == TM_TOFU_PGP) + tm = (trustlevel & TRUST_FLAG_TOFU_BASED)? TM_TOFU : TM_PGP; + else + tm = opt.trust_model; + write_status_strings (statuscode, "0 ", trust_model_string (tm), NULL); +} + + /**************** * Check whether we can trust this signature. * Returns an error code if we should not trust this signature. @@ -626,7 +642,7 @@ check_signatures_trust( PKT_signature *sig ) /* fall thru */ case TRUST_UNKNOWN: case TRUST_UNDEFINED: - write_status( STATUS_TRUST_UNDEFINED ); + write_trust_status (STATUS_TRUST_UNDEFINED, trustlevel); log_info(_("WARNING: This key is not certified with" " a trusted signature!\n")); log_info(_(" There is no indication that the " @@ -636,7 +652,7 @@ check_signatures_trust( PKT_signature *sig ) case TRUST_NEVER: /* currently we won't get that status */ - write_status( STATUS_TRUST_NEVER ); + write_trust_status (STATUS_TRUST_NEVER, trustlevel); log_info(_("WARNING: We do NOT trust this key!\n")); log_info(_(" The signature is probably a FORGERY.\n")); if (opt.with_fingerprint) @@ -645,7 +661,7 @@ check_signatures_trust( PKT_signature *sig ) break; case TRUST_MARGINAL: - write_status( STATUS_TRUST_MARGINAL ); + write_trust_status (STATUS_TRUST_MARGINAL, trustlevel); log_info(_("WARNING: This key is not certified with" " sufficiently trusted signatures!\n")); log_info(_(" It is not certain that the" @@ -654,13 +670,13 @@ check_signatures_trust( PKT_signature *sig ) break; case TRUST_FULLY: - write_status( STATUS_TRUST_FULLY ); + write_trust_status (STATUS_TRUST_FULLY, trustlevel); if (opt.with_fingerprint) print_fingerprint (NULL, pk, 1); break; case TRUST_ULTIMATE: - write_status( STATUS_TRUST_ULTIMATE ); + write_trust_status (STATUS_TRUST_ULTIMATE, trustlevel); if (opt.with_fingerprint) print_fingerprint (NULL, pk, 1); break; diff --git a/g10/tofu.c b/g10/tofu.c index e163928..ed8bbbe 100644 --- a/g10/tofu.c +++ b/g10/tofu.c @@ -2795,17 +2795,30 @@ tofu_wot_trust_combine (int tofu_base, int wot_base) /* Now we only have positive or neutral trust policies. We take the max. */ - if (tofu == TRUST_ULTIMATE || wot == TRUST_ULTIMATE) + if (tofu == TRUST_ULTIMATE) + return upper | TRUST_ULTIMATE | TRUST_FLAG_TOFU_BASED; + if (wot == TRUST_ULTIMATE) return upper | TRUST_ULTIMATE; - if (tofu == TRUST_FULLY || wot == TRUST_FULLY) + + if (tofu == TRUST_FULLY) + return upper | TRUST_FULLY | TRUST_FLAG_TOFU_BASED; + if (wot == TRUST_FULLY) return upper | TRUST_FULLY; - if (tofu == TRUST_MARGINAL || wot == TRUST_MARGINAL) + + if (tofu == TRUST_MARGINAL) + return upper | TRUST_MARGINAL | TRUST_FLAG_TOFU_BASED; + if (wot == TRUST_MARGINAL) return upper | TRUST_MARGINAL; - if (tofu == TRUST_UNDEFINED || wot == TRUST_UNDEFINED) + + if (tofu == TRUST_UNDEFINED) + return upper | TRUST_UNDEFINED | TRUST_FLAG_TOFU_BASED; + if (wot == TRUST_UNDEFINED) return upper | TRUST_UNDEFINED; + return upper | TRUST_UNKNOWN; } + /* Return the validity (TRUST_NEVER, etc.) of the binding . diff --git a/g10/trustdb.c b/g10/trustdb.c index 1bdc430..195a006 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -378,16 +378,16 @@ do_sync(void) } } -static const char * -trust_model_string(void) +const char * +trust_model_string (int model) { - switch(opt.trust_model) + switch (model) { case TM_CLASSIC: return "classic"; - case TM_PGP: return "PGP"; + case TM_PGP: return "pgp"; case TM_EXTERNAL: return "external"; - case TM_TOFU: return "TOFU"; - case TM_TOFU_PGP: return "TOFU+PGP"; + case TM_TOFU: return "tofu"; + case TM_TOFU_PGP: return "tofu+pgp"; case TM_ALWAYS: return "always"; case TM_DIRECT: return "direct"; default: return "unknown"; @@ -470,7 +470,8 @@ init_trustdb () } if(opt.verbose) - log_info(_("using %s trust model\n"),trust_model_string()); + log_info(_("using %s trust model\n"), + trust_model_string (opt.trust_model)); } if (opt.trust_model==TM_PGP || opt.trust_model==TM_CLASSIC @@ -522,7 +523,7 @@ check_trustdb () } else log_info (_("no need for a trustdb check with '%s' trust model\n"), - trust_model_string()); + trust_model_string(opt.trust_model)); } @@ -538,7 +539,7 @@ update_trustdb() validate_keys (1); else log_info (_("no need for a trustdb update with '%s' trust model\n"), - trust_model_string()); + trust_model_string(opt.trust_model)); } void @@ -1963,7 +1964,8 @@ validate_keys (int interactive) if (!opt.quiet) log_info ("marginals needed: %d completes needed: %d trust model: %s\n", - opt.marginals_needed, opt.completes_needed, trust_model_string()); + opt.marginals_needed, opt.completes_needed, + trust_model_string (opt.trust_model)); for (depth=0; depth < opt.max_cert_depth; depth++) { diff --git a/g10/trustdb.h b/g10/trustdb.h index 718f779..7e1307d 100644 --- a/g10/trustdb.h +++ b/g10/trustdb.h @@ -21,7 +21,7 @@ #ifndef G10_TRUSTDB_H #define G10_TRUSTDB_H -/* Trust values must be sorted in ascending order */ +/* Trust values must be sorted in ascending order! */ #define TRUST_MASK 15 #define TRUST_UNKNOWN 0 /* o: not yet calculated/assigned */ #define TRUST_EXPIRED 1 /* e: calculation may be invalid */ @@ -30,11 +30,13 @@ #define TRUST_MARGINAL 4 /* m: marginally trusted */ #define TRUST_FULLY 5 /* f: fully trusted */ #define TRUST_ULTIMATE 6 /* u: ultimately trusted */ -/* trust values not covered by the mask */ -#define TRUST_FLAG_REVOKED 32 /* r: revoked */ -#define TRUST_FLAG_SUB_REVOKED 64 /* r: revoked but for subkeys */ -#define TRUST_FLAG_DISABLED 128 /* d: key/uid disabled */ +/* Trust values not covered by the mask. */ +#define TRUST_FLAG_REVOKED 32 /* r: revoked */ +#define TRUST_FLAG_SUB_REVOKED 64 /* r: revoked but for subkeys */ +#define TRUST_FLAG_DISABLED 128 /* d: key/uid disabled */ #define TRUST_FLAG_PENDING_CHECK 256 /* a check-trustdb is pending */ +#define TRUST_FLAG_TOFU_BASED 512 /* The trust value is based on + * the TOFU information. */ /* Private value used in tofu.c - must be different from the trust values. */ @@ -117,6 +119,7 @@ void check_trustdb (void); void update_trustdb (void); int setup_trustdb( int level, const char *dbname ); void how_to_fix_the_trustdb (void); +const char *trust_model_string (int model); void init_trustdb( void ); void tdb_check_trustdb_stale (void); void sync_trustdb( void ); ----------------------------------------------------------------------- Summary of changes: common/t-exechelp.c | 21 +++++------ common/t-session-env.c | 15 ++++++-- doc/DETAILS | 44 +++++++++++++++++++++++ g10/pkclist.c | 26 +++++++++++--- g10/test.c | 8 +++-- g10/tofu.c | 90 +++++++++++++++++++++++++++++++++++++++------- g10/trustdb.c | 22 ++++++------ g10/trustdb.h | 13 ++++--- tests/openpgp/gpgtar.test | 2 +- tests/openpgp/mds.test | 2 +- tests/openpgp/version.test | 2 +- tools/gpg-zip.in | 8 ++++- 12 files changed, 203 insertions(+), 50 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 3 16:08:04 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 03 May 2016 16:08:04 +0200 Subject: [git] KSBA - branch, master, updated. libksba-1.3.3-7-g3f74c2c Message-ID: 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 "KSBA is a library to access X.509 certificates and CMS data.". The branch, master has been updated via 3f74c2cc0068d0b3584627af73c8c42ce720a826 (commit) via 6be61daac047d8e6aa941eb103f8e71a1d4e3c75 (commit) via a7eed17a0b2a1c09ef986f3b4b323cd31cea2b64 (commit) from 3d968bbffc3a0acda890e342fbbfa5b34a26085e (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 3f74c2cc0068d0b3584627af73c8c42ce720a826 Author: Werner Koch Date: Tue May 3 16:06:52 2016 +0200 Fix an undefined return value in ksba_cert_get_digest_algo. * src/cert.c (ksba_cert_get_digest_algo): Set ALGO in the error case. * tests/cert-basic.c (one_file): Take care of printf which does not handle NULL for %s -- GnuPG-bug-id: 2343 Reported-by: Pascal Cuoq diff --git a/src/cert.c b/src/cert.c index f3ff6a1..dc97f83 100644 --- a/src/cert.c +++ b/src/cert.c @@ -464,7 +464,10 @@ ksba_cert_get_digest_algo (ksba_cert_t cert) n = _ksba_asn_find_node (cert->root, "Certificate.signatureAlgorithm"); if (!n || n->off == -1) - err = gpg_error (GPG_ERR_UNKNOWN_ALGORITHM); + { + algo = NULL; + err = gpg_error (GPG_ERR_UNKNOWN_ALGORITHM); + } else err = _ksba_parse_algorithm_identifier (cert->image + n->off, n->nhdr + n->len, &nread, &algo); diff --git a/tests/cert-basic.c b/tests/cert-basic.c index 91b394e..4d460bc 100644 --- a/tests/cert-basic.c +++ b/tests/cert-basic.c @@ -448,7 +448,8 @@ one_file (const char *fname) oid = ksba_cert_get_digest_algo (cert); s = get_oid_desc (oid); - printf (" hash algo.: %s%s%s%s\n", oid, s?" (":"",s?s:"",s?")":""); + printf (" hash algo.: %s%s%s%s\n", + oid?oid:"(null)", s?" (":"",s?s:"",s?")":""); /* Under Windows the _ksba_keyinfo_from_sexp are not exported. */ #ifndef __WIN32 commit 6be61daac047d8e6aa941eb103f8e71a1d4e3c75 Author: Werner Koch Date: Tue May 3 16:01:09 2016 +0200 Fix an OOB read access in _ksba_dn_to_str. * src/dn.c (append_utf8_value): Use a straightforward check to fix an off-by-one. -- The old fix for the problem from April 2015 had an off-by-one in the bad encoding handing. Fixes-commit: 243d12fdec66a4360fbb3e307a046b39b5b4ffc3 GnuPG-bug-id: 2344 Reported-by: Pascal Cuoq Signed-off-by: Werner Koch diff --git a/src/dn.c b/src/dn.c index d207bf0..cea18a1 100644 --- a/src/dn.c +++ b/src/dn.c @@ -332,11 +332,8 @@ append_utf8_value (const unsigned char *value, size_t length, } else { - if (n+nmore > length) - nmore = length - n; /* Oops, encoding to short */ - tmp[0] = *s++; n++; - for (i=1; i <= nmore; i++) + for (i=1; n < length && i <= nmore; i++) { if ( (*s & 0xc0) != 0x80) break; /* Invalid encoding - let the next cycle detect this. */ commit a7eed17a0b2a1c09ef986f3b4b323cd31cea2b64 Author: Werner Koch Date: Tue May 3 14:10:04 2016 +0200 Fix possible read access beyond the buffer. * src/ber-help.c (_ksba_ber_parse_tl): Add extra sanity check. * src/cert.c (ksba_cert_get_cert_policies): Check TLV given length against buffer length. (ksba_cert_get_ext_key_usages): Ditto. * src/ocsp.c (parse_asntime_into_isotime): Ditto. -- The returned length of the object from _ksba_ber_parse_tl (ti.length) was not always checked against the actual buffer length, thus leading to a read access after the end of the buffer and thus a segv. GnuPG-bug-id: 2344 Reported-by: Pascal Cuoq Signed-off-by: Werner Koch diff --git a/src/ber-help.c b/src/ber-help.c index f6a6692..87109f3 100644 --- a/src/ber-help.c +++ b/src/ber-help.c @@ -285,9 +285,15 @@ _ksba_ber_parse_tl (unsigned char const **buffer, size_t *size, ti->buf[ti->nhdr++] = c; len |= c & 0xff; } + /* Sanity check for the length: This is done so that we can take + * the value for malloc plus some additional bytes without + * risking an overflow. */ + if (len > (1 << 30)) + return gpg_error (GPG_ERR_BAD_BER); ti->length = len; } + /* Without this kludge some example certs can't be parsed */ if (ti->class == CLASS_UNIVERSAL && !ti->tag) ti->length = 0; diff --git a/src/cert.c b/src/cert.c index 7f19dc1..f3ff6a1 100644 --- a/src/cert.c +++ b/src/cert.c @@ -1335,9 +1335,15 @@ ksba_cert_get_cert_policies (ksba_cert_t cert, char **r_policies) err = gpg_error (GPG_ERR_NOT_DER_ENCODED); goto leave; } + if (ti.length > derlen) + { + err = gpg_error (GPG_ERR_BAD_BER); + goto leave; + } if (!ti.length) { - err = gpg_error (GPG_ERR_INV_CERT_OBJ); /* no empty inner SEQ */ + /* We do not accept an empty inner SEQ */ + err = gpg_error (GPG_ERR_INV_CERT_OBJ); goto leave; } if (ti.nhdr+ti.length > seqlen) @@ -1356,6 +1362,11 @@ ksba_cert_get_cert_policies (ksba_cert_t cert, char **r_policies) err = gpg_error (GPG_ERR_INV_CERT_OBJ); goto leave; } + if (ti.length > derlen) + { + err = gpg_error (GPG_ERR_BAD_BER); + goto leave; + } if (ti.nhdr+ti.length > seqseqlen) { err = gpg_error (GPG_ERR_BAD_BER); @@ -1458,6 +1469,16 @@ ksba_cert_get_ext_key_usages (ksba_cert_t cert, char **result) err = gpg_error (GPG_ERR_INV_CERT_OBJ); goto leave; } + if (ti.ndef) + { + err = gpg_error (GPG_ERR_NOT_DER_ENCODED); + goto leave; + } + if (ti.length > derlen) + { + err = gpg_error (GPG_ERR_BAD_BER); + goto leave; + } suboid = ksba_oid_to_str (der, ti.length); if (!suboid) diff --git a/src/name.c b/src/name.c index c734199..371fc41 100644 --- a/src/name.c +++ b/src/name.c @@ -113,7 +113,7 @@ _ksba_name_new_from_der (ksba_name_t *r_name, *r_name = NULL; - /* count and check for encoding errors - we won;t do this again + /* Count and check for encoding errors - we won't do this again during the second pass */ der = image; derlen = imagelen; diff --git a/src/ocsp.c b/src/ocsp.c index 85679bb..c053b18 100644 --- a/src/ocsp.c +++ b/src/ocsp.c @@ -231,6 +231,8 @@ parse_asntime_into_isotime (unsigned char const **buf, size_t *len, && (ti.tag == TYPE_UTC_TIME || ti.tag == TYPE_GENERALIZED_TIME) && !ti.is_constructed) ) err = gpg_error (GPG_ERR_INV_OBJ); + else if (ti.length > *len) + err = gpg_error (GPG_ERR_INV_BER); else if (!(err = _ksba_asntime_to_iso (*buf, ti.length, ti.tag == TYPE_UTC_TIME, isotime))) parse_skip (buf, len, &ti); ----------------------------------------------------------------------- Summary of changes: src/ber-help.c | 6 ++++++ src/cert.c | 28 ++++++++++++++++++++++++++-- src/dn.c | 5 +---- src/name.c | 2 +- src/ocsp.c | 2 ++ tests/cert-basic.c | 3 ++- 6 files changed, 38 insertions(+), 8 deletions(-) hooks/post-receive -- KSBA is a library to access X.509 certificates and CMS data. http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 3 18:34:23 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 03 May 2016 18:34:23 +0200 Subject: [git] KSBA - branch, master, updated. libksba-1.3.3-11-gba090d9 Message-ID: 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 "KSBA is a library to access X.509 certificates and CMS data.". The branch, master has been updated via ba090d96be474658dec13a3e2aa912022a3ef72f (commit) via 3a92e8c8939767d19aaa48f051d721d582ab0eff (commit) via 8290fabdb260e228c3b89706c88caf90da77358b (commit) via ec820ebbb05cbc0d5ee00f086364ecaf3efa54cb (commit) from 3f74c2cc0068d0b3584627af73c8c42ce720a826 (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 ba090d96be474658dec13a3e2aa912022a3ef72f Author: Werner Koch Date: Tue May 3 18:31:37 2016 +0200 Post release updates -- diff --git a/NEWS b/NEWS index 3b9abb0..9dca760 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Noteworthy changes in version 1.3.5 (unreleased) [C19/A11/R_] +------------------------------------------------ + + Noteworthy changes in version 1.3.4 (2016-05-03) [C19/A11/R4] ------------------------------------------------ diff --git a/configure.ac b/configure.ac index 7cdcf19..d678ce4 100644 --- a/configure.ac +++ b/configure.ac @@ -30,7 +30,7 @@ min_automake_version="1.14" m4_define([mym4_package],[libksba]) m4_define([mym4_major], [1]) m4_define([mym4_minor], [3]) -m4_define([mym4_micro], [4]) +m4_define([mym4_micro], [5]) # Below is m4 magic to extract and compute the git revision number, # the decimalized short revision number, a beta version string and a commit 3a92e8c8939767d19aaa48f051d721d582ab0eff Author: Werner Koch Date: Tue May 3 18:19:48 2016 +0200 Release 1.3.4. * configure.ac: Set LT version to C19/A11/R5. Signed-off-by: Werner Koch diff --git a/NEWS b/NEWS index cc25641..3b9abb0 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,15 @@ -Noteworthy changes in version 1.3.4 (unreleased) [C19/A11/R ] +Noteworthy changes in version 1.3.4 (2016-05-03) [C19/A11/R4] ------------------------------------------------ + * Fixed two OOB read access bugs which could be used to force a DoS. + + * Fixed a crash due to faulty curve OID lookup code. + + * Synced the list of supported curves with those of Libgcrypt. + + * New configure option --enable-build-timestamp; a build timestamp is + not anymore used by default. + Noteworthy changes in version 1.3.3 (2015-04-10) [C19/A11/R4] ------------------------------------------------ diff --git a/configure.ac b/configure.ac index 0ea5225..7cdcf19 100644 --- a/configure.ac +++ b/configure.ac @@ -52,7 +52,7 @@ AC_INIT([mym4_package],[mym4_version], [http://bugs.gnupg.org]) # Please remember to document interface changes in the NEWS file. LIBKSBA_LT_CURRENT=19 LIBKSBA_LT_AGE=11 -LIBKSBA_LT_REVISION=4 +LIBKSBA_LT_REVISION=5 #------------------- # If the API is changed in an incompatible way: increment the next counter. KSBA_CONFIG_API_VERSION=1 commit 8290fabdb260e228c3b89706c88caf90da77358b Author: Werner Koch Date: Tue May 3 18:22:19 2016 +0200 Update config.{guess,sub} to 2016-04-02 and 2016-03-30. * build-aux/config.guess: Update. * build-aux/config.sub: Update. Signed-off-by: Werner Koch diff --git a/build-aux/config.guess b/build-aux/config.guess index dbfb978..0967f2a 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ timestamp='2015-01-01' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ @@ -197,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +221,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +237,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +253,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +272,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -359,16 +380,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +414,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -618,13 +639,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -663,11 +684,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -680,12 +701,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -790,14 +811,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -879,7 +900,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -902,7 +923,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -933,6 +954,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -945,6 +969,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1021,7 +1048,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1100,7 +1127,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1249,6 +1276,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1262,9 +1292,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1286,7 +1316,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1317,7 +1347,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1359,7 +1389,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1370,6 +1400,9 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < Date: Tue May 3 18:10:34 2016 +0200 Create an SWDB file during "make distcheck" * Makefile.am (distcheck-hook): New. -- The SWDB file is used to update the swdb.mac file from the gnupg-doc repo which is the source for https://gnupg.org/swdb.lst https://gnupg.org/swdb.lst.sig Signed-off-by: Werner Koch diff --git a/Makefile.am b/Makefile.am index 0f492aa..f16e128 100644 --- a/Makefile.am +++ b/Makefile.am @@ -41,6 +41,20 @@ SUBDIRS = m4 gl src ${tests} doc dist-hook: gen-ChangeLog +distcheck-hook: + set -e; ( \ + pref="#+macro: $$(echo $(PACKAGE_NAME)|tr '-' '_')_" ;\ + reldate="$$(date -u +%Y-%m-%d)" ;\ + echo "$${pref}ver $(PACKAGE_VERSION)" ;\ + echo "$${pref}date $${reldate}" ;\ + list='$(DIST_ARCHIVES)'; for i in $$list; do \ + case "$$i" in *.tar.bz2) \ + echo "$${pref}size $$(wc -c <$$i|awk '{print int($$1/1024)}')k" ;\ + echo "$${pref}sha1 $$(sha1sum <$$i|cut -d' ' -f1)" ;\ + echo "$${pref}sha2 $$(sha256sum <$$i|cut -d' ' -f1)" ;;\ + esac;\ + done ) | tee $(distdir).swdb + gen_start_date = 2011-12-01T00:00:00 .PHONY: gen-ChangeLog ----------------------------------------------------------------------- Summary of changes: Makefile.am | 14 +++++ NEWS | 15 +++++- build-aux/config.guess | 143 ++++++++++++++++++++++++++++++------------------- build-aux/config.sub | 36 ++++++++----- configure.ac | 4 +- 5 files changed, 140 insertions(+), 72 deletions(-) hooks/post-receive -- KSBA is a library to access X.509 certificates and CMS data. http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 3 18:37:17 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 03 May 2016 18:37:17 +0200 Subject: [git] gnupg-doc - branch, master, updated. 5a3aa6fd8951ae82ad9925bd0a1ad0d5763ad727 Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via 5a3aa6fd8951ae82ad9925bd0a1ad0d5763ad727 (commit) from 51b7dbe7b6f6585ef617c3c61ffa77960ebb49aa (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 5a3aa6fd8951ae82ad9925bd0a1ad0d5763ad727 Author: Werner Koch Date: Tue May 3 18:36:12 2016 +0200 swdb: Release libksba 1.3.4 diff --git a/web/swdb.mac b/web/swdb.mac index 2f81afc..1d10a8b 100644 --- a/web/swdb.mac +++ b/web/swdb.mac @@ -92,10 +92,11 @@ # # LIBKSBA # -#+macro: libksba_ver 1.3.3 -#+macro: libksba_date 2015-04-10 +#+macro: libksba_ver 1.3.4 +#+macro: libksba_date 2016-05-03 #+macro: libksba_size 604k -#+macro: libksba_sha1 86fe0436f3c8c394d32e142ee410a9f9560173fb +#+macro: libksba_sha1 bc84945400bd1cabfd7b8ba4e20e71082f32bcc9 +#+macro: libksba_sha2 f6c2883cebec5608692d8730843d87f237c0964d923bbe7aa89c05f20558ad4f # ----------------------------------------------------------------------- Summary of changes: web/swdb.mac | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 3 18:49:28 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 03 May 2016 18:49:28 +0200 Subject: [git] gnupg-doc - branch, master, updated. 32c316720a85742cffe6eb7ddf66213b8a710f7b Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via 32c316720a85742cffe6eb7ddf66213b8a710f7b (commit) from 5a3aa6fd8951ae82ad9925bd0a1ad0d5763ad727 (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 32c316720a85742cffe6eb7ddf66213b8a710f7b Author: Werner Koch Date: Tue May 3 18:43:44 2016 +0200 web: Typo fix. diff --git a/web/download/cvs_access.org b/web/download/cvs_access.org index 62ffe9c..ac2323b 100644 --- a/web/download/cvs_access.org +++ b/web/download/cvs_access.org @@ -4,8 +4,8 @@ * GIT Access - The GnuPG development is tracked using the GIT disributed revision - control system. A Public read-only GIT repository for GnuPG and + The GnuPG development is tracked using the GIT distributed revision + control system. A public read-only GIT repository for GnuPG and related projects is available. This service is provided to help you in hunting bugs and not to ----------------------------------------------------------------------- Summary of changes: web/download/cvs_access.org | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 4 12:24:27 2016 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 04 May 2016 12:24:27 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.11-182-g2b78223 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via 2b78223d7587c68e2e27a3d7b365219228da7947 (commit) via 5ec76fd0c300b52366cf8d1407fe1c8de3a8a9d4 (commit) via 3f58fc64666101e160e9b13fedb6cdaebeb91a7a (commit) from 6bbab4d1135bd4b17dbf884c13a0706f57e8ff1e (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 2b78223d7587c68e2e27a3d7b365219228da7947 Author: Andre Heinecke Date: Wed May 4 12:22:38 2016 +0200 speedo,w32: Install sqlite * build-aux/speedo/w32/inst.nsi (-sqlite, -un.sqlite): New. diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi index d062345..6b4d023 100644 --- a/build-aux/speedo/w32/inst.nsi +++ b/build-aux/speedo/w32/inst.nsi @@ -790,6 +790,11 @@ Section "-gpgme" SEC_gpgme File include/gpgme.h SectionEnd +Section "-sqlite" SEC_sqlite + SetOutPath "$INSTDIR\bin" + File bin/libsqlite3-0.dll +SectionEnd + !ifdef WITH_GUI Section "-libiconv" SEC_libiconv SetOutPath "$INSTDIR\bin" @@ -1363,6 +1368,10 @@ Section "-un.gnupg" RMDir "$INSTDIR\share\locale" SectionEnd +Section "-un.sqlite" + Delete "$INSTDIR\bin\libsqlite3-0.dll" +SectionEnd + Section "-un.gnupginst" # Delete standard stuff. Delete "$INSTDIR\README.txt" commit 5ec76fd0c300b52366cf8d1407fe1c8de3a8a9d4 Author: Andre Heinecke Date: Wed May 4 12:00:56 2016 +0200 speedo,w32: Fix uninstallation * build-aux/speedo/w32/inst.nsi (-un.gnupg): Delete distsigkey and dirmngr-conf.skel diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi index 1944379..d062345 100644 --- a/build-aux/speedo/w32/inst.nsi +++ b/build-aux/speedo/w32/inst.nsi @@ -1271,6 +1271,8 @@ Section "-un.gnupg" Delete "$INSTDIR\bin\gpg-connect-agent.exe" Delete "$INSTDIR\bin\gpgtar.exe" + Delete "$INSTDIR\share\gnupg\dirmngr-conf.skel" + Delete "$INSTDIR\share\gnupg\distsigkey.gpg" Delete "$INSTDIR\share\gnupg\gpg-conf.skel" RMDir "$INSTDIR\share\gnupg" commit 3f58fc64666101e160e9b13fedb6cdaebeb91a7a Author: Andre Heinecke Date: Wed May 4 11:24:18 2016 +0200 speedo,w32: Install localisation * build-aux/speedo/w32/inst.nsi (-libgpg-error, GnuPG): Install l10n. (-un.libgpg-error, -un.gnupg): Uninstall l10n files. diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi index 3a2d582..1944379 100644 --- a/build-aux/speedo/w32/inst.nsi +++ b/build-aux/speedo/w32/inst.nsi @@ -608,6 +608,63 @@ Section "GnuPG" SEC_gnupg File "share/gnupg/gpg-conf.skel" File "share/gnupg/dirmngr-conf.skel" File "share/gnupg/distsigkey.gpg" + + SetOutPath "$INSTDIR\share\locale\ca\LC_MESSAGES" + File share/locale/ca/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES" + File share/locale/cs/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES" + File share/locale/da/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES" + File share/locale/de/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\el\LC_MESSAGES" + File share/locale/el/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\en at boldquot\LC_MESSAGES" + File share/locale/en at boldquot/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\en at quot\LC_MESSAGES" + File share/locale/en at quot/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES" + File share/locale/eo/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES" + File share/locale/es/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\et\LC_MESSAGES" + File share/locale/et/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\fi\LC_MESSAGES" + File share/locale/fi/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES" + File share/locale/fr/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\gl\LC_MESSAGES" + File share/locale/gl/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES" + File share/locale/hu/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\id\LC_MESSAGES" + File share/locale/id/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES" + File share/locale/it/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES" + File share/locale/ja/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\nb\LC_MESSAGES" + File share/locale/nb/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES" + File share/locale/pl/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES" + File share/locale/pt/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES" + File share/locale/ro/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES" + File share/locale/ru/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\sk\LC_MESSAGES" + File share/locale/sk/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES" + File share/locale/sv/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\tr\LC_MESSAGES" + File share/locale/tr/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES" + File share/locale/uk/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" + File share/locale/zh_CN/LC_MESSAGES/gnupg2.mo + SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" + File share/locale/zh_TW/LC_MESSAGES/gnupg2.mo SectionEnd @@ -631,6 +688,44 @@ Section "-libgpg-error" SEC_libgpg_error File /oname=libgpg-error.imp lib/libgpg-error.dll.a SetOutPath "$INSTDIR\include" File include/gpg-error.h + SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES" + File share/locale/cs/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES" + File share/locale/da/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES" + File share/locale/de/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES" + File share/locale/eo/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES" + File share/locale/fr/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES" + File share/locale/hu/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES" + File share/locale/it/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES" + File share/locale/ja/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\nl\LC_MESSAGES" + File share/locale/nl/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES" + File share/locale/pl/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES" + File share/locale/pt/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES" + File share/locale/ro/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES" + File share/locale/ru/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\sr\LC_MESSAGES" + File share/locale/sr/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES" + File share/locale/sv/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES" + File share/locale/uk/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\vi\LC_MESSAGES" + File share/locale/vi/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" + File share/locale/zh_CN/LC_MESSAGES/libgpg-error.mo + SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" + File share/locale/zh_TW/LC_MESSAGES/libgpg-error.mo SectionEnd Section "-zlib" SEC_zlib @@ -1105,6 +1200,64 @@ Section "-un.libgpg-error" Delete "$INSTDIR\bin\libgpg-error-0.dll" Delete "$INSTDIR\lib\libgpg-error.imp" Delete "$INSTDIR\include\gpg-error.h" + Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\cs" + Delete "$INSTDIR\share\locale\da\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\da\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\da" + Delete "$INSTDIR\share\locale\de\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\de\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\de" + Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\eo" + Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\fr" + Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\hu" + Delete "$INSTDIR\share\locale\it\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\it\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\it" + Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ja" + Delete "$INSTDIR\share\locale\nl\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\nl\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\nl" + Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\pl" + Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\pt" + Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ro" + Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ru" + Delete "$INSTDIR\share\locale\sr\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\sr\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\sr" + Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\sv" + Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\uk" + Delete "$INSTDIR\share\locale\vi\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\vi\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\vi" + Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\zh_CN" + Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\libgpg-error.mo" + RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\zh_TW" + RMDir "$INSTDIR\share\locale" SectionEnd Section "-un.gnupg" @@ -1120,6 +1273,92 @@ Section "-un.gnupg" Delete "$INSTDIR\share\gnupg\gpg-conf.skel" RMDir "$INSTDIR\share\gnupg" + + Delete "$INSTDIR\share\locale\ca\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\ca\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ca" + Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\cs" + Delete "$INSTDIR\share\locale\da\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\da\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\da" + Delete "$INSTDIR\share\locale\de\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\de\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\de" + Delete "$INSTDIR\share\locale\el\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\el\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\el" + Delete "$INSTDIR\share\locale\en at boldquot\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\en at boldquot\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\en at boldquot" + Delete "$INSTDIR\share\locale\en at quot\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\en at quot\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\en at quot" + Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\eo" + Delete "$INSTDIR\share\locale\es\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\es\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\es" + Delete "$INSTDIR\share\locale\et\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\et\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\et" + Delete "$INSTDIR\share\locale\fi\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\fi\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\fi" + Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\fr" + Delete "$INSTDIR\share\locale\gl\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\gl\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\gl" + Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\hu" + Delete "$INSTDIR\share\locale\id\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\id\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\id" + Delete "$INSTDIR\share\locale\it\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\it\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\it" + Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ja" + Delete "$INSTDIR\share\locale\nb\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\nb\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\nb" + Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\pl" + Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\pt" + Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ro" + Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\ru" + Delete "$INSTDIR\share\locale\sk\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\sk\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\sk" + Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\sv" + Delete "$INSTDIR\share\locale\tr\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\tr\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\tr" + Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\uk" + Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\zh_CN" + Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\gnupg2.mo" + RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" + RMDir "$INSTDIR\share\locale\zh_TW" + RMDir "$INSTDIR\share\locale" SectionEnd Section "-un.gnupginst" ----------------------------------------------------------------------- Summary of changes: build-aux/speedo/w32/inst.nsi | 250 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 4 15:09:31 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 04 May 2016 15:09:31 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.11-186-gfb1e9df Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via fb1e9df48465c2f77a65dddd257572fdc79d9450 (commit) via 920b1421b35d1404b8360bd8feac0be659840543 (commit) via edce430b039b313cc2d79402a7bd21347490c3be (commit) via 9ea258fa5b45bb5454ee3f5906df5d5eebdec0dd (commit) from 2b78223d7587c68e2e27a3d7b365219228da7947 (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 fb1e9df48465c2f77a65dddd257572fdc79d9450 Author: Werner Koch Date: Wed May 4 15:08:17 2016 +0200 speedo,w32: Remove the installation directory page. * build-aux/speedo/w32/inst.nsi (MUI_PAGE_DIRECTORY): Remove. Signed-off-by: Werner Koch diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi index 6b4d023..2c671c2 100644 --- a/build-aux/speedo/w32/inst.nsi +++ b/build-aux/speedo/w32/inst.nsi @@ -156,10 +156,10 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}" !insertmacro MUI_PAGE_LICENSE "${TOP_SRCDIR}/COPYING" !define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning +!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckExistingVersion !insertmacro MUI_PAGE_COMPONENTS -!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckExistingVersion -!insertmacro MUI_PAGE_DIRECTORY +# We don't have MUI_PAGE_DIRECTORY !ifdef HAVE_STARTMENU @@ -260,11 +260,11 @@ LangString T_RunKeyManager ${LANG_GERMAN} \ "Die Schl?sselverwaltung aufrufen" LangString T_MoreInfo ${LANG_ENGLISH} \ - "Click here for GnuPG's website" + "Click here to see how to help the GnuPG Project" LangString T_MoreInfo ${LANG_GERMAN} \ - "Hier klicken um zur GnuPG Homepage zu gelangen" -LangString T_MoreInfoURL ${LANG_ENGLISH} "https://gnupg.org" -LangString T_MoreInfoURL ${LANG_GERMAN} "https://gnupg.org" + "Hier klicken um dem GnuPG Projekt zu zu helfen" +LangString T_MoreInfoURL ${LANG_ENGLISH} "https://gnupg.org/donate" +LangString T_MoreInfoURL ${LANG_GERMAN} "https://gnupg.org/donate" LangString T_ShowReadme ${LANG_ENGLISH} \ "Show the README file" @@ -319,8 +319,8 @@ FunctionEnd # Check whether GnuPG has already been installed. This is called as -# a leave function from the directory page. A call to abort will get -# back to the directory selection. +# a leave function from the components page. A call to abort will get +# back to the components selection. Function CheckExistingVersion ClearErrors FileOpen $0 "$INSTDIR\VERSION" r commit 920b1421b35d1404b8360bd8feac0be659840543 Author: Werner Koch Date: Wed May 4 14:40:16 2016 +0200 gpg: Fix const char pointer mismatch with gettext. * g10/tofu.c (get_trust): Use const char *. Signed-off-by: Werner Koch diff --git a/g10/tofu.c b/g10/tofu.c index 5213e03..e591aa5 100644 --- a/g10/tofu.c +++ b/g10/tofu.c @@ -2101,7 +2101,8 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, /* TRANSLATORS: Please translate the text found in the source file below. We don't directly internationalize that text so that we can tweak it without breaking translations. */ - char *text = _("TOFU detected a binding conflict"); + const char *text = _("TOFU detected a binding conflict"); + char *textbuf; if (strcmp (text, "TOFU detected a binding conflict") == 0) /* No translation. Use the English text. */ text = @@ -2111,9 +2112,9 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email, "Alternatively, a new key may indicate a man-in-the-middle " "attack! Before accepting this key, you should talk to or " "call the person to make sure this new key is legitimate."; - text = format_text (text, 0, 72, 80); + textbuf = format_text (text, 0, 72, 80); es_fprintf (fp, "\n%s\n", text); - xfree (text); + xfree (textbuf); } es_fputc ('\n', fp); commit edce430b039b313cc2d79402a7bd21347490c3be Author: Werner Koch Date: Wed May 4 14:39:20 2016 +0200 speedo: Build sqlite with static-libgcc. * build-aux/speedo/patches/sqlite.patch: New. * Makefile.am (EXTRA_DIST): Add file. -- Signed-off-by: Werner Koch diff --git a/Makefile.am b/Makefile.am index 5527e24..bf12302 100644 --- a/Makefile.am +++ b/Makefile.am @@ -43,7 +43,8 @@ EXTRA_DIST = build-aux/config.rpath build-aux/potomo autogen.sh autogen.rc \ build-aux/speedo/w32/gnupg-logo-164x314.bmp \ build-aux/speedo/patches/atk-1.32.0.patch \ build-aux/speedo/patches/libiconv-1.14.patch \ - build-aux/speedo/patches/pango-1.29.4.patch + build-aux/speedo/patches/pango-1.29.4.patch \ + build-aux/speedo/patches/sqlite.patch DISTCLEANFILES = g10defs.h diff --git a/build-aux/speedo/patches/sqlite.patch b/build-aux/speedo/patches/sqlite.patch new file mode 100755 index 0000000..f81a414 --- /dev/null +++ b/build-aux/speedo/patches/sqlite.patch @@ -0,0 +1,42 @@ +#! /bin/sh +grep static-libgcc Makefile.am >/dev/null && exit 0 +patch -p0 -l -f $* < $0 +exit $? + +Use -static-libgcc to avoid linking to libgcc_s_sjlj-1.dll. + +Since gcc 4.8 there is a regression in that plain C programs may link +to libgcc_s.a which has a dependency on libgcc_s_sjlj.dll. This is +for example triggered by using long long arithmetic on a 32 bit +Windows (e.g symbol __udivdi3). + +As usual the gcc maintainers don't care about backward compatibility +and declare that as some kind of compatibility fix and not as +regression from 4.7 and all earlier versions. + +Note that we ignore this patch if it seems to be already applied +upstream. + +--- Makefile.am~ 2016-04-18 20:56:32.000000000 +0200 ++++ Makefile.am 2016-05-04 12:08:53.254035717 +0200 +@@ -3,7 +3,7 @@ + + lib_LTLIBRARIES = libsqlite3.la + libsqlite3_la_SOURCES = sqlite3.c +-libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8 ++libsqlite3_la_LDFLAGS = -XCClinker -static-libgcc -no-undefined -version-info 8:6:8 + + bin_PROGRAMS = sqlite3 + sqlite3_SOURCES = shell.c sqlite3.h + +--- Makefile.in~ 2016-04-18 20:56:36.000000000 +0200 ++++ Makefile.in 2016-05-04 12:13:36.570020590 +0200 +@@ -365,7 +365,7 @@ + AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE + lib_LTLIBRARIES = libsqlite3.la + libsqlite3_la_SOURCES = sqlite3.c +-libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8 ++libsqlite3_la_LDFLAGS = -XCClinker -static-libgcc -no-undefined -version-info 8:6:8 + sqlite3_SOURCES = shell.c sqlite3.h + EXTRA_sqlite3_SOURCES = sqlite3.c + sqlite3_LDADD = @EXTRA_SHELL_OBJ@ @READLINE_LIBS@ commit 9ea258fa5b45bb5454ee3f5906df5d5eebdec0dd Author: Werner Koch Date: Wed May 4 14:31:46 2016 +0200 speedo: Also try patch files w/o version number. * build-aux/speedo.mk (SPKG_template): Try such a patch file. Signed-off-by: Werner Koch diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk index 2812773..d286655 100644 --- a/build-aux/speedo.mk +++ b/build-aux/speedo.mk @@ -866,9 +866,13 @@ $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories | sed -e 's,\.tar.*$$$$,,'`; \ mv $$$${base} $(1); \ patch="$(patdir)/$(1)-$$$${base#$(1)-}.patch";\ + patchx="$(patdir)/$(1).patch"; \ if [ -x "$$$${patch}" ]; then \ echo "speedo: applying patch $$$${patch}"; \ cd $(1); "$$$${patch}"; \ + elif [ -x "$$$${patchx}" ]; then \ + echo "speedo: applying patch $$$${patchx}";\ + cd $(1); "$$$${patchx}"; \ elif [ -f "$$$${patch}" ]; then \ echo "speedo: warning: $$$${patch} is not executable"; \ fi; \ ----------------------------------------------------------------------- Summary of changes: Makefile.am | 3 ++- build-aux/speedo.mk | 4 ++++ build-aux/speedo/patches/sqlite.patch | 42 +++++++++++++++++++++++++++++++++++ build-aux/speedo/w32/inst.nsi | 16 ++++++------- g10/tofu.c | 7 +++--- 5 files changed, 60 insertions(+), 12 deletions(-) create mode 100755 build-aux/speedo/patches/sqlite.patch hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 4 16:50:11 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 04 May 2016 16:50:11 +0200 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.1.11-188-gc3db6f5 Message-ID: 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 "The GNU Privacy Guard". The branch, STABLE-BRANCH-2-2 has been updated via c3db6f58f7b0f02e10c3bf9fb53333026909b08f (commit) via 00df5b1236cac5c7a48638a4613278c5aab486f8 (commit) via fb1e9df48465c2f77a65dddd257572fdc79d9450 (commit) via 920b1421b35d1404b8360bd8feac0be659840543 (commit) via edce430b039b313cc2d79402a7bd21347490c3be (commit) via 9ea258fa5b45bb5454ee3f5906df5d5eebdec0dd (commit) via 2b78223d7587c68e2e27a3d7b365219228da7947 (commit) via 5ec76fd0c300b52366cf8d1407fe1c8de3a8a9d4 (commit) via 3f58fc64666101e160e9b13fedb6cdaebeb91a7a (commit) via 6bbab4d1135bd4b17dbf884c13a0706f57e8ff1e (commit) via d696eb396a9c88319358da4333feb653994d5408 (commit) via 4fd13ab78dd228d8ff85659cddc2076af8728ebe (commit) via 75f31cdd42eed3555952ac478055d52af841f702 (commit) via d00625dae60f26617d2e1bd4f22c6b35a4e92c91 (commit) via 04cc7c3786d91881f83a72799dab058476602a31 (commit) via 3ef0938cfd8637e9801369f142eb8dd564f2ca61 (commit) via 9e28617e260261de3972c20698b5a01561330e1c (commit) via 33aacc3d4bbd6a82d7e7ceca058970879741b7da (commit) via 83865be35cff5355a5c4575cc3b50609819b0baa (commit) via ae1889320b822d48f7118a29391605e9ac992701 (commit) via 5cef6118580fe658a27d32e85696d88775ad417a (commit) via d73e83c3b678add11a5754e199e528aeb39ec8ce (commit) via c88efcc2cc7fde25fdba36a349f670f741fd4e9a (commit) via 6677d8b61446eb5760a30a2488c992d6e895a9ed (commit) via 35f4b6aafdf1889ed1ae569af5852f47738fe993 (commit) via dcad99c98616a6031ddfde313c920339e4012378 (commit) via 300b227cf457deb918f25bcece0d734b61ae1348 (commit) via 64bfeafa52a5ed3fa82bdc0ce7ef0edddeef188c (commit) via 9740dff9f4d18ba764dc7173d4902e94e3f0c2e8 (commit) via cb4fee8bb645745ff199f7428e19226d5bc63dab (commit) via 508b0deb70d39d388149be9a63fab24cc956a239 (commit) via 87de9e19edf0311ca0342e15ef44ebe40e32861e (commit) via c83c6f212e9bc98a9ea8dd8102bc16edd1a03050 (commit) via c3aeda82b8d00b87a5af72b4075c487c10dfdf6b (commit) via fd765df6a7883c3d841abeb657330a1aab4b7756 (commit) via 07dbd061bd6c1f131f1d609b412675a128c5fe99 (commit) via b7fa4960c292ef1a290d32b7f46bb741bbfc0923 (commit) via 2502a76d8edbca035fd2a1879f2132c36b51e2c1 (commit) via 8776abbe02935e720018f3ef6ffd48f21435ff8b (commit) via b8cb0973bcbe201a1e32a326dd97c3e72778b9d8 (commit) via 12af2630cf4d1a39179179925fac8f2cce7504ff (commit) via c6d1f2f08c68efe7e80887219064a8ce6365128f (commit) via 95303ee11df12f284e98d02dba993eda9e425383 (commit) via 342cc488890241b41e49f50886617115342721d6 (commit) via 0c35e09278514f1e3377a4b0a9b1f44dd39b1bf4 (commit) via d81de224ecd542922dda649a492dd9550509d7bc (commit) via bd4d65615b3a5360d455b99e77bd113ad90f1539 (commit) via f8adf1a3234655877a4f985d627d98567507002c (commit) via defbc70b4a16264e067daf76678ecfb9d030dee4 (commit) via 2385b9f1ddc4938e45c01a12a804f4b77d253305 (commit) via d02de6c0a4a55a2720cfa5caddcbfc4ce988a2ec (commit) via 085b19fc9aa7f2f9b82a97824b117e71390964ec (commit) via 6272f24312f2efe8707a7712858c85cd5a42e6fa (commit) via a0642856b25622c81d3464979c47ff2a30af58fa (commit) via d1507b4f95eb7bb2478f7549510ddcb114e6f285 (commit) via 8c3fb2360f154a971d2a390e4937acb22a44a8c2 (commit) via 6df75ec70afeb1a5ad9a00557e1245e1514c37b5 (commit) via 94504b3d5af126abb591dedda1ca0f0970822f55 (commit) via 4159567f7ed7a1139fdc3a6c92988e1648ad84ab (commit) via 100b413d7f69f6f091fd98185df4d579ce6ce0ce (commit) via 7faf131c8b8710419df3dc13a1228d1977c55f53 (commit) via 22b869adca877ff0826707109e7f7b391eb44441 (commit) via 02cf1357dd5ee34a57371f55b9d312b8b9e3a7e8 (commit) via 71040f48ef6bf88e88cb05c2aee8a77d682b2a33 (commit) via 02ef6bb105bb2793115ea5e7868d722bf0aea0a1 (commit) via 76ca869197e304daa5a8dd96ea43113ec7b28354 (commit) via 9354293b8c9f234939bc04182f15e2fe512e914e (commit) via f45ed07a0fffa3adbc75b9d5726108a066927599 (commit) via 4dc4fb1c14b3096bb1cdc5923c0d1eb419036805 (commit) via 4b5341dc333983a15f649601fdddc42ba9161433 (commit) via 7b58a1118d98543ed6854447d7b403877638ba54 (commit) via 96bcd4220f1f1313afe12097d8dc62342ac8de0d (commit) via c6ed863491ec3a1e0fcf9cbe2c93c87468306c29 (commit) via abb352de51bc964c06007fce43ed6f6caea87c15 (commit) via dd5902cc45bae7582f8a0bc91a0a7f4d8ae45d8c (commit) via 42d4c2762f7ae5b009b62963e6595bdec9df6859 (commit) via 6060ea898fda499211c9d5030fff41d58f899fb0 (commit) via b74185b6eaeaae4754726ff203e11977777f568c (commit) via e7171f559590422cc52dbcb8d78d94569b31012f (commit) via 8be9dab2dd2f83ca922c01542c63b404e34bdfd9 (commit) via e2c5781788f765815532410a77077ddbb72513e9 (commit) via fc30c079a348436868968850dabf653b91f82419 (commit) via 7f919063d3e426104fe58ae779a9a066140014c1 (commit) via af9a4afbf0b518c8acff98e50135b2beb6c722c3 (commit) via 1aad5c6277ea3852ff57bbf680f61c9136ce4d5c (commit) via 1dc7f55a4095ee42ce2d8c3eb41b7162edf2ca2e (commit) via 8588c2dbc4c4d1b53796f3dbe8489b932dca7a60 (commit) via b752d2c93778e6a1c1de3eddf8fc725b0ddd354e (commit) via 60b34f96f4f390670462d719c0d797e622cee4d4 (commit) via 834b84c0ee4990393daa5e44afbab5b0aaed0758 (commit) via 4f578cb2fc192f44070bb0d18dffaa3863ed0d92 (commit) via b17577eac6b7599a4bab6fd3ecb04715aa01367c (commit) via eea139c56ef55081d8cd8df2a35ce507386e0f17 (commit) via 53ed98eda77ff2dcf390cebd0cec9f2665661863 (commit) via a68ca5a90457ac97eee4efd7fdea596d27c54697 (commit) via 7a32f87cccddb40521bfdd4eb2d0dc9c88fb3fe5 (commit) via e997552161b2dd8aabf350adee14e208e1545aef (commit) via 1e4b7823008daea1a22a6f0f9b379fdec37a4cd4 (commit) via 40f6529ceeea806fc011135a9fa3a3590a9534ac (commit) via 8daf9a027f5b9ef31f9bf8a39a9a91739246e493 (commit) via 9f0ba5089e664447c36cee3d9249f95e4ea39957 (commit) via a883d4c0f8125e809c144ec69e76c9f522102d8f (commit) via d040628ddf2c09ddc9581ff365680a568ad24278 (commit) via 605276ef8cd449bfd574ae6c498fa5d7d265c5c7 (commit) via 24e0f1d56e6f56e7fb52b5c6bdb100131e12dfe3 (commit) via 1463f9b9624fae97cc89df3aa4546655ee893f7c (commit) via 7eac4942b537c4b3710d34e6adb9c5d36338f38b (commit) via 2fdb950471bd36f046672254ff26ca94797cc9f1 (commit) via 1a624586149f9e34206e5d5e1ba0b7d2b7004c80 (commit) via fd2d00ccf558b1ac1184967d8702ef01cd60bf60 (commit) via 1cdb744d91ab33563fc0b3156fb05694caa55278 (commit) via 50995d26083576ebee064136c13a4ee74cbadca7 (commit) via e77c85577d1bdd77ad3b81907145fd68f2653c01 (commit) via 9a1778abcae0a7afe33be8e02b6d9a909463cd54 (commit) via 3a1d142f9b71721a631cf2037665e9def60aa384 (commit) via 2de0d41219a522e01f050d475b3ddecb9173fc7d (commit) via 87515e39295e4b7eaec1641c38e1ac32e8d39a91 (commit) via 960f5e26f2cda3ac6e6b30548fa808a690c39ffc (commit) via 105a5629c7e938ec7b3c9c338ebe7bdfee4cfdad (commit) via b7b4a1bdd9da28827980c64c623bcb0654736828 (commit) via c9636a1acc952eb8e1355089bc2e229dece98165 (commit) via 512bc72e1f8544341529174142273d857f45540c (commit) via 75861b663bbb37214143c2ff7b1b4d1d10ba2657 (commit) via 14d27b2cadf9b0bb413f2b8bad2d81c1d370c2e7 (commit) via f57a91afb69c58f9d8d9632801650f28c7dc1e0d (commit) via 33ac735a781325c4d47cdf6216813866ab93562e (commit) via 8066f8a3470f9d2f3682a28641a7b09eca29a105 (commit) via 903466e124841cb29f518afa6b7706d490737ac3 (commit) via f7968db30b0e0ccae038e354568accb0a05d877c (commit) via f26867928c451443769fecc41c3283e077e8c49f (commit) via ede0061febe5b2edde6a1a79d599e3c7c0faed5a (commit) via 01dcc2cf2f2f00235ffa7d0718ecb468370980cc (commit) via 785a7f463ec4e937304ce1263c5e6a46e8079137 (commit) via 629284120ff359b98a178b6cddf0e005e5f4db1a (commit) via 5ba4f6047b84e4cfdb3e6bc88e574ca7a455da81 (commit) via 9f4a8d4ea173b4b4cb4d4f06b4004d43e2f4b97a (commit) via 54acc87c1e0b100accbfd02cfce59a897f2f0ce1 (commit) via 709e2a7e9a3197e8ded4be0b05c138e8d5adbca6 (commit) via 5d8f7b16c8490d6951772fa98c1f075a952cc571 (commit) via dd670366d7aedb07e9420d1f8575197acfae1914 (commit) via 8857590006266da200427f2d4f9e8c27fbc89ed9 (commit) via f5a4b6a3a39a2b78d33769184d6133d5e256e02c (commit) via b0125ae9850973b89010517b1dbce04125a51d51 (commit) via 661ba477e01b796db161fa612b46c353393c6b10 (commit) via 2d1d795481bc011447284f8ce0a3ae96a08daf17 (commit) via 44cdb9d73f1a0b7d2c8483a119b9c4d6caabc1ec (commit) via 5fbd80579aea0f75ca1d2700515c5b8747a75c7d (commit) via ac5aea95455372145f3f06df2b4c1584d759d660 (commit) via 10671c3a4c18ea26035a5819a9f2b8fd6c7e41ea (commit) via bf9d1248c80205795e26156f67aff0b3f796cfce (commit) via c45633a571bf663bc7f3610fc481acded6acfc19 (commit) via 7e7f35a2d7d40267a4dd30791df77420efeebfa7 (commit) via 813df2fe6656e55bea4d0be07cc964a140218412 (commit) via e1ceff16765b0342531709cf97d03ef0158c29d5 (commit) via 44b02e1beb4f38f26551d932827d5317fddd27c2 (commit) via 2f02ed75a9671a7aae36968d5a1618f71b491325 (commit) via a1c11283af759c1045a8bb75815db325f415ded4 (commit) via ea9cfcfbf76de232221f31787c53d5f46361a9f0 (commit) via 6fbe12a51e8fe2649ffe5a8a02aa93026a8f02cd (commit) via 772f6b29b557e4e80353bc48e34d7214be895f33 (commit) via 9b28b82e7c40d1eacc446d5932cd613c56378ed8 (commit) via 9663b088480cef6734a3c5892d5ddbbd60ecc1a4 (commit) via 5cdde08ea869ef02111f618ad782d392a296eb7f (commit) via c0268c449d0f3d23be5ec7b92fe92e7e078166cf (commit) via ad43dc6cfc2b610a4e34fe55811bd937f9c3238b (commit) via 86f3bb144ad75461eb9b7ac1e59046ac75efccac (commit) via b0e6ab1109d05fc664f46e17d721fe9b01d38115 (commit) via 13f745b50dc7031755faadb2d3476a6b6aafc739 (commit) via 59fc3507d18072833559f227ecab8aa00cad9466 (commit) via 82d12156ef5f948d44934ed44d79d24cc9e94366 (commit) via 4f152f3276b6d40d2568a27e74903dd18b41d752 (commit) via dc1dbc43a6bfb2f3e6a1cc2ca089e0318b3af0ed (commit) via 3087197008d2b12bf9f0d7d1f2aca500db816e7c (commit) via 6390beca54f55e8d36ff767b99ae9ff68b15f10e (commit) via c5d7045dafcfb569c11c90c04ea7a75328c80084 (commit) via d19d6e1856c9a1acbf48e8b2e39b3d9171aa9f7f (commit) via 81494fd30d3815502247a721f50d9eadf86a73fa (commit) via d711f5c7697cd4bc5dc6d9fd01706cabc771dad2 (commit) via acac103ba5772ae738ce5409d17feab80596cde6 (commit) via d9f9b3be036747c9f55060aed47896f951bfb853 (commit) via 75311cfe18071b94c66121a9785b133b6df345a3 (commit) via 3d952a2fe5da9d84c20d3debdcc1e425b08781c6 (commit) via 1b90b52a56b4f808ad29a7ef79aeafc03c7424b4 (commit) via ab7d41b69ce569270b25bc69f88b8b420465366c (commit) via 4d67144142f04184b835e50314eb21b882b9e00a (commit) via f099042d82ed49be0ed546a751e26a10c4e01a47 (commit) via d0d97089706286fafd3c8ff56f3b5bf7ac07c6e0 (commit) from 167558a67e6d931a186ed35cc61902cc1463cc2f (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 c3db6f58f7b0f02e10c3bf9fb53333026909b08f Author: Werner Koch Date: Wed May 4 16:49:19 2016 +0200 Post release updates. -- diff --git a/NEWS b/NEWS index 4aa7a01..230c14e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Noteworthy changes in version 2.1.13 (unreleased) +------------------------------------------------- + + Noteworthy changes in version 2.1.12 (2016-05-04) ------------------------------------------------- diff --git a/configure.ac b/configure.ac index 6aeca17..6458f1a 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ min_automake_version="1.14" m4_define([mym4_package],[gnupg]) m4_define([mym4_major], [2]) m4_define([mym4_minor], [1]) -m4_define([mym4_micro], [12]) +m4_define([mym4_micro], [13]) # To start a new development series, i.e a new major or minor number # you need to mark an arbitrary commit before the first beta release commit 00df5b1236cac5c7a48638a4613278c5aab486f8 Author: Werner Koch Date: Wed May 4 15:59:11 2016 +0200 Release 2.1.12 diff --git a/NEWS b/NEWS index 49414e6..4aa7a01 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,55 @@ -Noteworthy changes in version 2.1.12 (unreleased) +Noteworthy changes in version 2.1.12 (2016-05-04) ------------------------------------------------- + * gpg: New --edit-key sub-command "change-usage" for testing + purposes. + + * gpg: Out of order key-signatures are now systematically detected + and fixed by --edit-key. + + * gpg: Improved detection of non-armored messages. + + * gpg: Removed the extra prompt needed to create Curve25519 keys. + + * gpg: Improved user ID selection for --quick-sign-key. + + * gpg: Use the root CAs provided by the system with --fetch-key. + + * gpg: Add support for the experimental Web Key Directory key + location service. + + * gpg: Improve formatting of Tofu messages and emit new Tofu specific + status lines. + + * gpgsm: Add option --pinentry-mode to support a loopback pinentry. + + * gpgsm: A new pubring.kbx is now created with the header blob so + that gpg can detect that the keybox format needs to be used. + + * agent: Add read support for the new private key protection format + openpgp-s2k-ocb-aes. + + * agent: Add read support for the new extended private key format. + + * agent: Default to --allow-loopback-pinentry and add option + --no-allow-loopback-pinentry. + + * scd: Changed to use the new libusb 1.0 API for the internal CCID + driver. + + * dirmngr: The dirmngr-client does now auto-detect the PEM format. + + * g13: Add experimental support for dm-crypt. + + * w32: Tofu support is now available with the Speedo build method. + + * w32: Removed the need for libiconv.dll. + + * The man pages for gpg and gpgv are now installed under the correct + name (gpg2 or gpg - depending on a configure option). + + * Lots of internal cleanups and bug fixes. + Noteworthy changes in version 2.1.11 (2016-01-26) ------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Makefile.am | 6 +- NEWS | 55 +- agent/Makefile.am | 2 +- agent/agent.h | 2 +- agent/command-ssh.c | 2 +- agent/command.c | 83 +- agent/cvt-openpgp.c | 2 +- agent/findkey.c | 163 +- agent/genkey.c | 2 +- agent/gpg-agent.c | 16 +- agent/keyformat.txt | 201 +- agent/protect-tool.c | 117 +- agent/protect.c | 436 +- agent/t-protect.c | 2 +- autogen.rc | 2 +- build-aux/config.guess | 143 +- build-aux/config.sub | 36 +- build-aux/speedo.mk | 15 +- build-aux/speedo/patches/sqlite.patch | 42 + build-aux/speedo/w32/inst.nsi | 288 +- build-aux/speedo/w32/pkg-copyright.txt | 26 +- common/Makefile.am | 8 +- common/README | 12 +- common/argparse.c | 8 +- common/exechelp-posix.c | 129 +- common/exechelp-w32.c | 177 +- common/exechelp-w32ce.c | 18 + common/exechelp.h | 9 + common/exectool.c | 27 +- common/homedir.c | 10 +- common/iobuf.c | 71 +- common/iobuf.h | 9 +- common/logging.c | 50 +- common/logging.h | 21 +- common/miscellaneous.c | 11 + common/openpgpdefs.h | 28 + common/private-keys.c | 750 ++++ common/private-keys.h | 109 + common/server-help.c | 137 + common/server-help.h | 62 + common/sexp-parse.h | 2 +- common/simple-pwquery.c | 95 +- common/status.h | 5 + common/strlist.c | 31 +- common/strlist.h | 3 + common/sysutils.c | 73 +- common/sysutils.h | 1 + common/t-exechelp.c | 21 +- common/t-private-keys.c | 541 +++ common/t-session-env.c | 15 +- common/utf8conv.c | 16 +- common/util.h | 6 + configure.ac | 98 +- dirmngr/Makefile.am | 6 +- dirmngr/dirmngr-client.c | 43 +- dirmngr/dns-stuff.c | 24 +- dirmngr/http.c | 40 +- dirmngr/http.h | 9 +- dirmngr/ks-engine-hkp.c | 2 +- dirmngr/ks-engine-http.c | 14 +- dirmngr/server.c | 151 +- dirmngr/t-http.c | 2 +- doc/DETAILS | 44 + doc/HACKING | 32 +- doc/Makefile.am | 42 +- doc/TRANSLATE | 2 +- doc/debugging.texi | 27 +- doc/gnupg-module-overview.svg | 892 +++++ doc/gpg-agent.texi | 44 +- doc/gpg.texi | 94 +- doc/gpgsm.texi | 32 +- doc/gpgv.texi | 24 +- doc/help.ru.txt | 333 +- doc/help.txt | 6 +- doc/mkdefsinc.c | 27 +- g10/Makefile.am | 106 +- g10/armor.c | 88 +- g10/build-packet.c | 446 ++- g10/call-agent.c | 5 +- g10/call-dirmngr.c | 66 +- g10/call-dirmngr.h | 2 + g10/card-util.c | 12 +- g10/cipher.c | 5 +- g10/compress.c | 1 - g10/dearmor.c | 1 - g10/decrypt-data.c | 15 +- g10/decrypt.c | 1 - g10/dek.h | 6 + g10/delkey.c | 1 - g10/ecdh.c | 11 +- g10/encrypt.c | 168 +- g10/export.c | 5 +- g10/free-packet.c | 3 +- g10/getkey.c | 75 +- g10/gpg.c | 13 +- g10/gpgcompose.c | 3038 ++++++++++++++ g10/gpgv.c | 11 + g10/import.c | 23 +- g10/kbnode.c | 1 - g10/keydb.c | 11 +- g10/keydb.h | 40 +- g10/keyedit.c | 944 ++++- g10/keygen.c | 156 +- g10/keyid.c | 67 +- g10/keylist.c | 47 +- g10/keyring.c | 17 +- g10/keyserver-internal.h | 2 + g10/keyserver.c | 36 +- g10/main.h | 19 +- g10/mainproc.c | 9 +- g10/mdfilter.c | 1 - g10/migrate.c | 2 +- g10/misc.c | 2 - g10/openfile.c | 1 - g10/options.h | 2 + g10/packet.h | 260 +- g10/parse-packet.c | 13 +- g10/passphrase.c | 3 +- g10/pkclist.c | 27 +- g10/pkglue.c | 5 +- g10/plaintext.c | 3 +- g10/progress.c | 7 +- g10/pubkey-enc.c | 5 +- g10/revoke.c | 1 - g10/seckey-cert.c | 1 - g10/server.c | 35 +- g10/seskey.c | 45 +- g10/sig-check.c | 408 +- g10/sign.c | 11 +- g10/skclist.c | 1 - g10/sqlite.c | 5 +- g10/t-stutter-data.asc | 1 + g10/t-stutter.c | 610 +++ g10/tdbdump.c | 1 - g10/tdbio.c | 129 +- g10/test-stubs.c | 11 + g10/test.c | 8 +- g10/textfilter.c | 3 +- g10/tofu.c | 656 +-- g10/trust.c | 11 +- g10/trustdb.c | 50 +- g10/trustdb.h | 13 +- g10/verify.c | 1 - g13/Makefile.am | 38 +- g13/backend.c | 155 +- g13/backend.h | 11 +- g13/be-dmcrypt.c | 99 + g13/{be-truecrypt.h => be-dmcrypt.h} | 19 +- g13/call-syshelp.c | 488 +++ g13/call-syshelp.h | 36 + g13/create.c | 100 +- g13/create.h | 6 +- g13/g13-syshelp.c | 753 ++++ g13/g13-syshelp.h | 95 + g13/g13.c | 103 +- g13/g13.h | 10 +- g13/{utils.c => g13tuple.c} | 171 +- g13/{utils.h => g13tuple.h} | 17 +- g13/keyblob.c | 229 ++ g13/keyblob.h | 48 +- g13/mount.c | 275 +- g13/mount.h | 2 - g13/mountinfo.c | 2 +- g13/server.c | 98 +- g13/sh-blockdev.c | 152 + g13/sh-cmd.c | 780 ++++ g13/sh-dmcrypt.c | 943 +++++ g13/suspend.c | 143 + g13/{be-truecrypt.h => suspend.h} | 16 +- g13/t-g13tuple.c | 223 ++ kbx/keybox-file.c | 2 +- po/ca.po | 220 +- po/cs.po | 243 +- po/da.po | 229 +- po/de.po | 303 +- po/el.po | 220 +- po/eo.po | 217 +- po/es.po | 232 +- po/et.po | 220 +- po/fi.po | 225 +- po/fr.po | 229 +- po/gl.po | 220 +- po/hu.po | 220 +- po/id.po | 220 +- po/it.po | 220 +- po/ja.po | 219 +- po/nb.po | 215 +- po/pl.po | 243 +- po/pt.po | 220 +- po/ro.po | 227 +- po/ru.po | 734 ++-- po/sk.po | 224 +- po/sv.po | 230 +- po/tr.po | 229 +- po/uk.po | 247 +- po/zh_CN.po | 215 +- po/zh_TW.po | 219 +- scd/Makefile.am | 2 +- scd/ccid-driver.c | 355 +- scd/command.c | 52 +- sm/Makefile.am | 3 +- sm/call-agent.c | 85 +- sm/gpgsm.c | 25 +- sm/gpgsm.h | 3 +- sm/keydb.c | 12 + sm/passphrase.c | 90 + scd/atr.h => sm/passphrase.h | 16 +- sm/server.c | 33 +- tests/migrations/Makefile.am | 57 + ...3FDB8809B17C5547779F9D205C45F47CE0217CE.key.asc | 27 + ...3D8AF79796EE107D645A2787A9D9252F924E6F.key.asc} | 2 +- ...B5ABF3EF9EB8D96B91A0B8C2C4401C91C834C34.key.asc | 20 + .../pubring.kbx.asc | 39 + .../trustdb.gpg.asc | 31 + tests/migrations/extended-private-key-format.test | 57 + .../from-classic.gpghome/pubring.gpg.asc | 54 + .../from-classic.gpghome/secring.gpg.asc | 68 + .../from-classic.gpghome/trustdb.gpg.asc | 31 + tests/migrations/from-classic.test | 77 + tests/openpgp/Makefile.am | 15 +- tests/openpgp/default-key.test | 8 +- tests/openpgp/defs.inc | 4 +- tests/openpgp/fake-pinentry.c | 67 + tests/openpgp/gpg-agent.conf.tmpl | 1 - tests/openpgp/gpgtar.test | 14 +- tests/openpgp/mds.test | 2 +- tests/openpgp/mkdemodirs | 2 +- tests/openpgp/plain-largeo.asc | 4205 ++++++++++++++++++++ tests/openpgp/signdemokey | 2 +- tests/openpgp/use-exact-key.test | 4 +- tests/openpgp/version.test | 8 +- tools/gpg-zip.in | 8 +- tools/gpgconf-comp.c | 4 +- tools/gpgparsemail.c | 41 +- tools/gpgtar.c | 1 - tools/mk-tdata.c | 6 + 236 files changed, 25782 insertions(+), 5070 deletions(-) create mode 100755 build-aux/speedo/patches/sqlite.patch create mode 100644 common/private-keys.c create mode 100644 common/private-keys.h create mode 100644 common/server-help.c create mode 100644 common/server-help.h create mode 100644 common/t-private-keys.c create mode 100644 doc/gnupg-module-overview.svg create mode 100644 g10/gpgcompose.c create mode 100644 g10/t-stutter-data.asc create mode 100644 g10/t-stutter.c create mode 100644 g13/be-dmcrypt.c copy g13/{be-truecrypt.h => be-dmcrypt.h} (50%) create mode 100644 g13/call-syshelp.c create mode 100644 g13/call-syshelp.h create mode 100644 g13/g13-syshelp.c create mode 100644 g13/g13-syshelp.h rename g13/{utils.c => g13tuple.c} (51%) rename g13/{utils.h => g13tuple.h} (74%) create mode 100644 g13/keyblob.c create mode 100644 g13/sh-blockdev.c create mode 100644 g13/sh-cmd.c create mode 100644 g13/sh-dmcrypt.c create mode 100644 g13/suspend.c copy g13/{be-truecrypt.h => suspend.h} (69%) create mode 100644 g13/t-g13tuple.c create mode 100644 sm/passphrase.c copy scd/atr.h => sm/passphrase.h (71%) create mode 100644 tests/migrations/Makefile.am create mode 100644 tests/migrations/extended-private-key-format.gpghome/private-keys-v1.d/13FDB8809B17C5547779F9D205C45F47CE0217CE.key.asc copy tests/{openpgp/privkeys/343D8AF79796EE107D645A2787A9D9252F924E6F.asc => migrations/extended-private-key-format.gpghome/private-keys-v1.d/343D8AF79796EE107D645A2787A9D9252F924E6F.key.asc} (95%) create mode 100644 tests/migrations/extended-private-key-format.gpghome/private-keys-v1.d/8B5ABF3EF9EB8D96B91A0B8C2C4401C91C834C34.key.asc create mode 100644 tests/migrations/extended-private-key-format.gpghome/pubring.kbx.asc create mode 100644 tests/migrations/extended-private-key-format.gpghome/trustdb.gpg.asc create mode 100755 tests/migrations/extended-private-key-format.test create mode 100644 tests/migrations/from-classic.gpghome/pubring.gpg.asc create mode 100644 tests/migrations/from-classic.gpghome/secring.gpg.asc create mode 100644 tests/migrations/from-classic.gpghome/trustdb.gpg.asc create mode 100755 tests/migrations/from-classic.test create mode 100644 tests/openpgp/fake-pinentry.c create mode 100644 tests/openpgp/plain-largeo.asc hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 4 16:51:51 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 04 May 2016 16:51:51 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.12-1-gc3db6f5 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via c3db6f58f7b0f02e10c3bf9fb53333026909b08f (commit) via 00df5b1236cac5c7a48638a4613278c5aab486f8 (commit) from fb1e9df48465c2f77a65dddd257572fdc79d9450 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: NEWS | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- configure.ac | 2 +- 2 files changed, 55 insertions(+), 2 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 4 17:38:16 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 04 May 2016 17:38:16 +0200 Subject: [git] gnupg-doc - branch, master, updated. 70ce98d57b8cc02f1bec2c9169dd3c57a292a1e5 Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via 70ce98d57b8cc02f1bec2c9169dd3c57a292a1e5 (commit) from 32c316720a85742cffe6eb7ddf66213b8a710f7b (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 70ce98d57b8cc02f1bec2c9169dd3c57a292a1e5 Author: Werner Koch Date: Wed May 4 17:23:21 2016 +0200 web: Release info for GnuPG 2.1.12 diff --git a/tools/getkey.sh b/tools/getkey.sh index 3432b5a..4794788 100755 --- a/tools/getkey.sh +++ b/tools/getkey.sh @@ -20,7 +20,7 @@ Options: --verbose Run in verbose mode --test Run in test environment EOF - exit $1 + exit "$1" } diff --git a/tools/mkkudos.sh b/tools/mkkudos.sh index 2678bdb..032958f 100755 --- a/tools/mkkudos.sh +++ b/tools/mkkudos.sh @@ -36,7 +36,7 @@ Options: --verbose Run in verbose mode --test Run in test environment EOF - exit $1 + exit "$1" } @@ -179,7 +179,7 @@ for file in "$htdocs/donate/"kudos-????.html "$htdocs/donate/"kudos.html \ fi [ $verbose = yes ] && echo "processing $file" >&2 [ -f "$file.tmp" ] && rm "$file.tmp" - awk -F: -v year=$year -v donors="$donors" -v dontable="$dontable" \ + awk -F: -v year="$year" -v donors="$donors" -v dontable="$dontable" \ -v monyear="$monyear" -v thisyear="$thisyear" \ -v euro="$euro" -v euroyr="$euroyr" \ -v nyr="$nyr" -v goal="$goal" -v percent="$percent" \ diff --git a/web/index.org b/web/index.org index 575d010..f2dcf63 100644 --- a/web/index.org +++ b/web/index.org @@ -23,16 +23,18 @@ be freely used, modified and distributed under the terms of the GnuPG comes in three flavours: - - {{{gnupg_ver}}} is the /stable/ version suggested for most users, - - {{{gnupg21_ver}}} is the /modern/ version with support for [[https://en.wikipedia.org/wiki/Elliptic_curve_cryptography][ECC]] and many other new features, + - {{{gnupg_ver}}} is the /stable/ version which is currently mostly + used. + - and {{{gnupg1_ver}}} is the /classic/ portable version. Project [[https://www.gpg4win.org][Gpg4win]] provides a Windows version of GnuPG /stable/. It is nicely integrated into an installer and features several frontends as -well as English and German manuals. +well as English and German manuals. A simple Windows installer for the +/modern/ version is available at our [[file:download/index.org][download]] page. * Reconquer your privacy @@ -64,6 +66,11 @@ The latest release news:\\ # GnuPG's latest news are available as [[http://feedvalidator.org/check.cgi?url%3Dhttps://www.gnupg.org/news.en.rss][RSS 2.0 compliant]] feed. Just # point or paste the [[news.en.rss][RSS file]] into your aggregator. +** GnuPG 2.1.12 released (2016-05-04) + +A new version of the /modern/ branch of GnuPG has been released. +Read the full [[https://lists.gnupg.org/pipermail/gnupg-announce/2016q2/000387.html][announcement mail]] for details. + ** Libgcrypt 1.7.0 released (2016-04-15) We are pleased to announce the availability of Libgcrypt version diff --git a/web/share/site.css b/web/share/site.css index 7e9a033..16989b9 100644 --- a/web/share/site.css +++ b/web/share/site.css @@ -279,7 +279,7 @@ nav ul li:hover ul.sub-menu { z-index: 99; border-radius: 0px; position: absolute; - top: 39px; + top: 37px; left: 0; } nav ul ul li { diff --git a/web/swdb.mac b/web/swdb.mac index 1d10a8b..f4bda88 100644 --- a/web/swdb.mac +++ b/web/swdb.mac @@ -21,18 +21,19 @@ # # GnuPG-2.1 # -#+macro: gnupg21_ver 2.1.11 -#+macro: gnupg21_date 2016-01-26 +#+macro: gnupg21_ver 2.1.12 +#+macro: gnupg21_date 2016-05-04 #+macro: gnupg21_branch STABLE-BRANCH-2-2 -#+macro: gnupg21_size 5101k -#+macro: gnupg21_sha1 4af2032a60ff22e322b1c5b270d6d2228f59a3a3 -#+macro: gnupg21_sha2 b7b0fb2c8c5d47d7ec916d4a1097c0ddcb94a12bb1c0ac424ad86b1ee316b61a -# -#+macro: gnupg21_w32_ver 2.1.11_20160209 -#+macro: gnupg21_w32_date 2016-02-09 -#+macro: gnupg21_w32_size 2630k -#+macro: gnupg21_w32_sha1 89bd31652d370ba69ac27b42b4d474d7edd9e0ea -#+macro: gnupg21_w32_sha2 1e92b39ef4f4cdf3b1849b6f824dd8f160276aa5c9718be35f8a7bd190bf6154 +#+macro: gnupg21_size 5381k +#+macro: gnupg21_sha1 3b01a35ac04277ea31cc01b4ac4e230e54b5480c +#+macro: gnupg21_sha2 ac34929d2400a58a349963865442ee6cdd75e500a8d5df083d29835e88bfc506 +# +#+macro: gnupg21_w32_ver 2.1.12_20160504 +#+macro: gnupg21_w32_date 2016-05-04 +#+macro: gnupg21_w32_size 3477k +#+macro: gnupg21_w32_sha1 0195d8b551e35b958f5efb4b678c3a178ba1ecb7 +#+macro: gnupg21_w32_sha2 68fadfb85068605d6248076977af30b1adbcee98bb6235e5f30eeb8934f02481 + # ----------------------------------------------------------------------- Summary of changes: tools/getkey.sh | 2 +- tools/mkkudos.sh | 4 ++-- web/index.org | 13 ++++++++++--- web/share/site.css | 2 +- web/swdb.mac | 23 ++++++++++++----------- 5 files changed, 26 insertions(+), 18 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 4 17:40:56 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 04 May 2016 17:40:56 +0200 Subject: [git] gnupg-doc - branch, master, updated. bf4a2f6e4c1f7378105b79354e48ed8e91ecd14d Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via bf4a2f6e4c1f7378105b79354e48ed8e91ecd14d (commit) from 70ce98d57b8cc02f1bec2c9169dd3c57a292a1e5 (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 bf4a2f6e4c1f7378105b79354e48ed8e91ecd14d Author: Werner Koch Date: Wed May 4 17:40:09 2016 +0200 drafts: Commit collected changes. diff --git a/misc/id/common/reference.I-D.irtf-cfrg-eddsa.xml b/misc/id/common/reference.I-D.irtf-cfrg-eddsa.xml new file mode 100644 index 0000000..7f9f6b6 --- /dev/null +++ b/misc/id/common/reference.I-D.irtf-cfrg-eddsa.xml @@ -0,0 +1,24 @@ + + + + +Edwards-curve Digital Signature Algorithm (EdDSA) + + + + + + + + + + + +The elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA) is described. The algorithm is instantiated with recommended parameters for the Curve25519 and Curve448 curves. An example implementation and test vectors are provided. + + + + + + diff --git a/misc/id/common/reference.RFC.0822.xml b/misc/id/common/reference.RFC.0822.xml new file mode 100644 index 0000000..e88b0e3 --- /dev/null +++ b/misc/id/common/reference.RFC.0822.xml @@ -0,0 +1,13 @@ + + + + +STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES + + +This document revises the specifications in RFC 733, in order to serve the needs of the larger and more complex ARPA Internet. Some of RFC 733's features failed to gain adequate acceptance. In order to simplify the standard and the software that follows it, these features have been removed. A different addressing scheme is used, to handle the case of internetwork mail; and the concept of re-transmission has been introduced. Obsoletes RFC 733, NIC 41952. + + + + + diff --git a/misc/id/common/reference.RFC.5785.xml b/misc/id/common/reference.RFC.5785.xml new file mode 100644 index 0000000..4cf6c83 --- /dev/null +++ b/misc/id/common/reference.RFC.5785.xml @@ -0,0 +1,13 @@ + + + + +Defining Well-Known Uniform Resource Identifiers (URIs) + + + +This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes. [STANDARDS-TRACK] + + + + diff --git a/misc/id/common/reference.RFC.6189.xml b/misc/id/common/reference.RFC.6189.xml new file mode 100644 index 0000000..6268e1a --- /dev/null +++ b/misc/id/common/reference.RFC.6189.xml @@ -0,0 +1,14 @@ + + + + +ZRTP: Media Path Key Agreement for Unicast Secure RTP + + + + +This document defines ZRTP, a protocol for media path Diffie-Hellman exchange to agree on a session key and parameters for establishing unicast Secure Real-time Transport Protocol (SRTP) sessions for Voice over IP (VoIP) applications. The ZRTP protocol is media path keying because it is multiplexed on the same port as RTP and does not require support in the signaling protocol. ZRTP does not assume a Public Key Infrastructure (PKI) or require the complexity of certificates in end devices. For the media session, ZRTP provides confidentiality, protection against man-in-the-middle (MiTM) attacks, and, in cases where the signaling protocol provides end-to-end integrity protection, authentication. ZRTP can utilize a Session Description Protocol (SDP) attribute to provide discovery and authentication through the signaling channel. To provide best effort SRTP, ZRTP utilizes normal RTP/AVP (Audio-Visual Profile) profiles. ZRTP secures media sessions that include a voice media stream and can also secure media sessions that do not include voice by using an optional digital signature. This document is not an Internet Standards Track specification; it is published for informational purposes. + + + + diff --git a/misc/id/common/reference.RFC.7748.xml b/misc/id/common/reference.RFC.7748.xml new file mode 100644 index 0000000..d82a086 --- /dev/null +++ b/misc/id/common/reference.RFC.7748.xml @@ -0,0 +1,14 @@ + + + + +Elliptic Curves for Security + + + + +This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties. + + + + diff --git a/misc/id/eddsa-for-openpgp/back.mkd b/misc/id/eddsa-for-openpgp/back.mkd index 77a16ca..e00e12f 100644 --- a/misc/id/eddsa-for-openpgp/back.mkd +++ b/misc/id/eddsa-for-openpgp/back.mkd @@ -74,4 +74,4 @@ other values might also be interesting for other ECC specifications: # Changes since -03 - - xxxx + - Changed reference for EdDSA to CFRG draft. diff --git a/misc/id/eddsa-for-openpgp/draft-koch-eddsa-for-openpgp-04.txt b/misc/id/eddsa-for-openpgp/draft-koch-eddsa-for-openpgp-04.txt new file mode 100644 index 0000000..e26533d --- /dev/null +++ b/misc/id/eddsa-for-openpgp/draft-koch-eddsa-for-openpgp-04.txt @@ -0,0 +1,448 @@ + + + + +Network Working Group W. Koch +Internet-Draft g10 Code +Updates: 4880 (if approved) February 28, 2016 +Intended status: Informational +Expires: August 31, 2016 + + + EdDSA for OpenPGP + draft-koch-eddsa-for-openpgp-04 + +Abstract + + This specification extends OpenPGP with the EdDSA public key + algorithm and describes the use of curve Ed25519. + +Status of This Memo + + This Internet-Draft is submitted in full conformance with the + provisions of BCP 78 and BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF). Note that other groups may also distribute + working documents as Internet-Drafts. The list of current Internet- + Drafts is at http://datatracker.ietf.org/drafts/current/. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + This Internet-Draft will expire on August 31, 2016. + +Copyright Notice + + Copyright (c) 2016 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + + + + +Koch Expires August 31, 2016 [Page 1] + +Internet-Draft EdDSA for OpenPGP February 2016 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 + 2. Supported Curves . . . . . . . . . . . . . . . . . . . . . . 2 + 3. Point Format . . . . . . . . . . . . . . . . . . . . . . . . 3 + 4. Encoding of Public and Private Keys . . . . . . . . . . . . . 3 + 5. Message Encoding . . . . . . . . . . . . . . . . . . . . . . 4 + 6. Curve OID . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 5 + 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 + 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 5 + 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 + 10.1. Normative References . . . . . . . . . . . . . . . . . . 5 + 10.2. Informative References . . . . . . . . . . . . . . . . . 6 + Appendix A. Test vectors . . . . . . . . . . . . . . . . . . . . 6 + A.1. Sample key . . . . . . . . . . . . . . . . . . . . . . . 6 + A.2. Sample signature . . . . . . . . . . . . . . . . . . . . 7 + Appendix B. Point compression flag bytes . . . . . . . . . . . . 7 + Appendix C. Changes since -03 . . . . . . . . . . . . . . . . . 8 + Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 + +1. Introduction + + The OpenPGP specification in [RFC4880] defines the RSA, Elgamal, and + DSA public key algorithms. [RFC6637] adds support for Elliptic Curve + Cryptography and specifies the ECDSA and ECDH algorithms. Due to + patent reasons no point compression was defined. + + This document specifies how to use the EdDSA public key signature + algorithm [I-D.irtf-cfrg-eddsa] with the OpenPGP standard. It + defines a new signature algorithm named EdDSA and specifies how to + use the Ed25519 curve with EdDSA. This algorithm uses a custom point + compression method. There are three main advantages of the EdDSA + algorithm: It does not require the use of a unique random number for + each signature, there are no padding or truncation issues as with + ECDSA, and it is more resilient to side-channel attacks. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + +2. Supported Curves + + This document references the Curve "Ed25519" which is the Edwards + form of "Curve25519" ([RFC7748]) and originally specified in the same + paper as the "EdDSA" algorithm ([ED25519]). For the full + specification see [I-D.irtf-cfrg-eddsa]. + + + + +Koch Expires August 31, 2016 [Page 2] + +Internet-Draft EdDSA for OpenPGP February 2016 + + + Other curves may be used by using a specific OID for the curve and + its EdDSA parameters. + + The following public key algorithm IDs are added to expand section + 9.1 of [RFC4880], "Public-Key Algorithms": + + +-------+-----------------------------+ + | ID | Description of Algorithm | + +-------+-----------------------------+ + | TBD1 | EdDSA public key algorithm | + +-------+-----------------------------+ + + Compliant applications MUST support EdDSA with the curve Ed25519. + Applications MAY support other curves as long as a dedicated OID for + using that curve with EdDSA is used. + +3. Point Format + + The EdDSA algorithm defines a specific point compression format. To + indicate the use of this compression format and to make sure that the + key can be represented in the Multiprecision Integer (MPI) format of + [RFC4880] the octet string specifying the point is prefixed with the + octet 0x40. This encoding is an extension of the encoding given in + [RFC6637] which uses 0x04 to indicate an uncompressed point. + + For example, the length of a public key for the curve Ed25519 is 263 + bit: 7 bit to represent the 0x40 prefix octet and 32 octets for the + native value of the public key. + +4. Encoding of Public and Private Keys + + The following algorithm specific packets are added to Section 5.5.2 + of [RFC4880], "Public-Key Packet Formats", to support EdDSA. + + Algorithm-Specific Fields for EdDSA keys: + + o a variable length field containing a curve OID, formatted as + follows: + + * a one-octet size of the following field; values 0 and 0xFF are + reserved for future extensions, + + * octets representing a curve OID, defined in Section 6. + + o MPI of an EC point representing a public key Q as described under + Point Format above. + + + + + +Koch Expires August 31, 2016 [Page 3] + +Internet-Draft EdDSA for OpenPGP February 2016 + + + The following algorithm specific packets are added to Section 5.5.3 + of [RFC4880], "Secret-Key Packet Formats", to support EdDSA. + + Algorithm-Specific Fields for EdDSA keys: + + o an MPI of an integer representing the secret key, which is a + scalar of the public EC point. + + The version 4 packet format MUST be used. + +5. Message Encoding + + Section 5.2.3 of [RFC4880], "Version 4 Signature Packet Format" + specifies formats. To support EdDSA no change is required, the MPIs + representing the R and S value are encoded as MPIs in the same way as + done for the DSA and ECDSA algorithms; in particular the Algorithm- + Specific Fields for an EdDSA signature are: + + - MPI of EdDSA value r. + + - MPI of EdDSA value s. + + Note that the compressed version of R and S as specified for EdDSA + ([I-D.irtf-cfrg-eddsa]) is used. + + The version 3 signature format MUST NOT be used with EdDSA. + + Although that algorithm allows arbitrary data as input, its use with + OpenPGP requires that a digest of the message is used as input. See + section 5.2.4 of [RFC4880], "Computing Signatures" for details. + Truncation of the resulting digest is never applied; the resulting + digest value is used verbatim as input to the EdDSA algorithm. + +6. Curve OID + + The EdDSA key parameter curve OID is an array of octets that defines + a named curve. The table below specifies the exact sequence of bytes + for each named curve referenced in this document: + + +------------------------+------+------------------------+----------+ + | OID | Len | Encoding in hex format | Name | + +------------------------+------+------------------------+----------+ + | 1.3.6.1.4.1.11591.15.1 | 9 | 2B 06 01 04 01 DA 47 | Ed25519 | + | | | 0F 01 | | + +------------------------+------+------------------------+----------+ + + See [RFC6637] for a description of the OID encoding given in the + second and third columns. + + + +Koch Expires August 31, 2016 [Page 4] + +Internet-Draft EdDSA for OpenPGP February 2016 + + +7. Security Considerations + + The security considerations of [RFC4880] apply accordingly. + + Although technically possible the use of EdDSA with digest algorithms + weaker than SHA-256 (e.g. SHA-1) is not suggested. + +8. IANA Considerations + + IANA is requested to assign an algorithm number from the OpenPGP + Public-Key Algorithms range, or the "namespace" in the terminology of + [RFC5226], that was created by [RFC4880]. See section 2. + + +-------+-----------------------------+------------+ + | ID | Algorithm | Reference | + +-------+-----------------------------+------------+ + | TBD1 | EdDSA public key algorithm | This doc | + +-------+-----------------------------+------------+ + + [Notes to RFC-Editor: Please remove the table above on publication. + It is desirable not to reuse old or reserved algorithms because some + existing tools might print a wrong description. A higher number is + also an indication for a newer algorithm. As of now 22 is the next + free number.] + +9. Acknowledgments + + The author would like to acknowledge the help of the individuals who + kindly voiced their opinions on the IETF OpenPGP and GnuPG mailing + lists, in particular, the help of Andrey Jivsov, Jon Callas, and + NIIBE Yutaka. + +10. References + +10.1. Normative References + + [I-D.irtf-cfrg-eddsa] + Josefsson, S. and I. Liusvaara, "Edwards-curve Digital + Signature Algorithm (EdDSA)", draft-irtf-cfrg-eddsa-02 + (work in progress), January 2016. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC4880] Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R. + Thayer, "OpenPGP Message Format", RFC 4880, November 2007. + + + + + +Koch Expires August 31, 2016 [Page 5] + +Internet-Draft EdDSA for OpenPGP February 2016 + + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an + IANA Considerations Section in RFCs", BCP 26, RFC 5226, + May 2008. + + [RFC6637] Jivsov, A., "Elliptic Curve Cryptography (ECC) in + OpenPGP", RFC 6637, June 2012. + +10.2. Informative References + + [ED25519] Bernstein, D., Duif, N., Lange, T., Schwabe, P., and B. + Yang, "High-speed high-security signatures", Journal of + Cryptographic Engineering Volume 2, Issue 2, pp. 77-89, + September 2011, + . + + [RFC7748] Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves + for Security", RFC 7748, DOI 10.17487/RFC7748, January + 2016, . + +Appendix A. Test vectors + + For help implementing this specification a non-normative example is + given. This example assumes that the algorithm id for EdDSA (TBD1) + will be 22. + +A.1. Sample key + + The secret key used for this example is: + + D: 1a8b1ff05ded48e18bf50166c664ab023ea70003d78d9e41f5758a91d850f8d2 + + Note that this is the raw secret key used as input to the EdDSA + signing operation. The key was created on 2014-08-19 14:28:27 and + thus the fingerprint of the OpenPGP key is: + + C959 BDBA FA32 A2F8 9A15 3B67 8CFD E121 9796 5A9A + + The algorithm specific input parameters without the MPI length + headers are: + + oid: 2b06010401da470f01 + + q: 403f098994bdd916ed4053197934e4a87c80733a1280d62f8010992e43ee3b2406 + + The entire public key packet is thus: + + + + + + +Koch Expires August 31, 2016 [Page 6] + +Internet-Draft EdDSA for OpenPGP February 2016 + + + 98 33 04 53 f3 5f 0b 16 09 2b 06 01 04 01 da 47 + 0f 01 01 07 40 3f 09 89 94 bd d9 16 ed 40 53 19 + 79 34 e4 a8 7c 80 73 3a 12 80 d6 2f 80 10 99 2e + 43 ee 3b 24 06 + +A.2. Sample signature + + The signature is created using the sample key over the input data + "OpenPGP" on 2015-09-16 12:24:53 and thus the input to the hash + function is: + + m: 4f70656e504750040016080006050255f95f9504ff0000000c + + Using the SHA-256 hash algorithm yields the digest: + + d: f6220a3f757814f4c2176ffbb68b00249cd4ccdc059c4b34ad871f30b1740280 + + Which is fed into the EdDSA signature function and yields this + signature: + + r: 56f90cca98e2102637bd983fdb16c131dfd27ed82bf4dde5606e0d756aed3366 + + s: d09c4fa11527f038e0f57f2201d82f2ea2c9033265fa6ceb489e854bae61b404 + + The entire signature packet is thus: + + 88 5e 04 00 16 08 00 06 05 02 55 f9 5f 95 00 0a + 09 10 8c fd e1 21 97 96 5a 9a f6 22 01 00 56 f9 + 0c ca 98 e2 10 26 37 bd 98 3f db 16 c1 31 df d2 + 7e d8 2b f4 dd e5 60 6e 0d 75 6a ed 33 66 01 00 + d0 9c 4f a1 15 27 f0 38 e0 f5 7f 22 01 d8 2f 2e + a2 c9 03 32 65 fa 6c eb 48 9e 85 4b ae 61 b4 04 + +Appendix B. Point compression flag bytes + + This specification introduces the new flag byte 0x40 to indicate the + point compression format. The value has been chosen so that the high + bit is not cleared and thus to avoid accidental sign extension. Two + other values might also be interesting for other ECC specifications: + + Flag Description + ---- ----------- + 0x04 Standard flag for uncompressed format + 0x40 Native point format of the curve follows + 0x41 Only X coordinate follows. + 0x42 Only Y coordinate follows. + + + + + +Koch Expires August 31, 2016 [Page 7] + +Internet-Draft EdDSA for OpenPGP February 2016 + + +Appendix C. Changes since -03 + + o Changed reference for EdDSA to CFRG draft. + +Author's Address + + Werner Koch + g10 Code + + Email: wk at gnupg.org + URI: https://g10code.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Koch Expires August 31, 2016 [Page 8] diff --git a/misc/id/eddsa-for-openpgp/middle.mkd b/misc/id/eddsa-for-openpgp/middle.mkd index 2dfeb92..0d9a002 100644 --- a/misc/id/eddsa-for-openpgp/middle.mkd +++ b/misc/id/eddsa-for-openpgp/middle.mkd @@ -6,7 +6,7 @@ Elliptic Curve Cryptography and specifies the ECDSA and ECDH algorithms. Due to patent reasons no point compression was defined. This document specifies how to use the EdDSA public key signature -algorithm [](#I-D.josefsson-eddsa-ed25519) with the OpenPGP standard. +algorithm [](#I-D.irtf-cfrg-eddsa) with the OpenPGP standard. It defines a new signature algorithm named EdDSA and specifies how to use the Ed25519 curve with EdDSA. This algorithm uses a custom point compression method. There are three main advantages of the EdDSA @@ -22,9 +22,9 @@ document are to be interpreted as described in [](#RFC2119). # Supported Curves This document references the Curve "Ed25519" which is the Edwards form -of "Curve25519" and specified in the same paper as the "EdDSA" -algorithm ([](#ED25519)). For the full specification see -[](#I-D.josefsson-eddsa-ed25519). +of "Curve25519" ([](#RFC7748)) and originally specified in the same +paper as the "EdDSA" algorithm ([](#ED25519)). For the full +specification see [](#I-D.irtf-cfrg-eddsa). Other curves may be used by using a specific OID for the curve and its EdDSA parameters. @@ -95,7 +95,7 @@ Algorithm-Specific Fields for an EdDSA signature are: - MPI of EdDSA value s. Note that the compressed version of R and S as specified for EdDSA -([](#I-D.josefsson-eddsa-ed25519)) is used. +([](#I-D.irtf-cfrg-eddsa)) is used. The version 3 signature format MUST NOT be used with EdDSA. diff --git a/misc/id/eddsa-for-openpgp/template.xml b/misc/id/eddsa-for-openpgp/template.xml index d27accc..484e6cb 100644 --- a/misc/id/eddsa-for-openpgp/template.xml +++ b/misc/id/eddsa-for-openpgp/template.xml @@ -8,9 +8,10 @@ + - + ]> @@ -36,7 +37,7 @@ - + Security @@ -50,7 +51,7 @@ - &eddsaed25519; + &eddsa; &rfc.4880; &rfc.6637; &rfc.5226; @@ -58,6 +59,7 @@ &ed25519; + &rfc.7748; &pandocBack; ----------------------------------------------------------------------- Summary of changes: misc/id/common/reference.I-D.irtf-cfrg-eddsa.xml | 24 ++++++ misc/id/common/reference.RFC.0822.xml | 13 ++++ misc/id/common/reference.RFC.5785.xml | 13 ++++ misc/id/common/reference.RFC.6189.xml | 14 ++++ misc/id/common/reference.RFC.7748.xml | 14 ++++ misc/id/eddsa-for-openpgp/back.mkd | 2 +- ...-03.txt => draft-koch-eddsa-for-openpgp-04.txt} | 88 +++++++++++----------- misc/id/eddsa-for-openpgp/middle.mkd | 10 +-- misc/id/eddsa-for-openpgp/template.xml | 10 ++- 9 files changed, 134 insertions(+), 54 deletions(-) create mode 100644 misc/id/common/reference.I-D.irtf-cfrg-eddsa.xml create mode 100644 misc/id/common/reference.RFC.0822.xml create mode 100644 misc/id/common/reference.RFC.5785.xml create mode 100644 misc/id/common/reference.RFC.6189.xml create mode 100644 misc/id/common/reference.RFC.7748.xml copy misc/id/eddsa-for-openpgp/{draft-koch-eddsa-for-openpgp-03.txt => draft-koch-eddsa-for-openpgp-04.txt} (84%) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Fri May 6 06:24:35 2016 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Fri, 06 May 2016 06:24:35 +0200 Subject: [git] GCRYPT - branch, master, updated. libgcrypt-1.7.0-4-gc7430aa Message-ID: 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 "The GNU crypto library". The branch, master has been updated via c7430aa752232aa690c5d8f16575a345442ad8d7 (commit) from ee5a32226a7ca4ab067864e06623fc11a1768900 (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 c7430aa752232aa690c5d8f16575a345442ad8d7 Author: NIIBE Yutaka Date: Fri May 6 13:21:17 2016 +0900 ecc: Fix ecc_verify for cofactor support. * cipher/ecc.c (ecc_verify): Fix the argument for cofactor "h". -- Thanks to onitake. GnuPG-bug-id: 2347 Signed-off-by: NIIBE Yutaka diff --git a/cipher/ecc.c b/cipher/ecc.c index a437a1f..b09902e 100644 --- a/cipher/ecc.c +++ b/cipher/ecc.c @@ -1071,7 +1071,7 @@ ecc_verify (gcry_sexp_t s_sig, gcry_sexp_t s_data, gcry_sexp_t s_keyparms) if ((ctx.flags & PUBKEY_FLAG_PARAM)) rc = sexp_extract_param (s_keyparms, NULL, "-p?a?b?g?n?h?/q", &pk.E.p, &pk.E.a, &pk.E.b, &mpi_g, &pk.E.n, - &pk.E.n, &mpi_q, NULL); + &pk.E.h, &mpi_q, NULL); else rc = sexp_extract_param (s_keyparms, NULL, "/q", &mpi_q, NULL); ----------------------------------------------------------------------- Summary of changes: cipher/ecc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Fri May 6 10:03:58 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Fri, 06 May 2016 10:03:58 +0200 Subject: [git] gnupg-doc - branch, master, updated. 7703092b35dbd0084c26d277bb03cb7e21889add Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via 7703092b35dbd0084c26d277bb03cb7e21889add (commit) from bf4a2f6e4c1f7378105b79354e48ed8e91ecd14d (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 7703092b35dbd0084c26d277bb03cb7e21889add Author: Werner Koch Date: Fri May 6 09:51:55 2016 +0200 drafts: Released first version of openpgp-webkey-service. diff --git a/misc/id/openpgp-webkey-service/abstract.mkd b/misc/id/openpgp-webkey-service/abstract.mkd new file mode 100644 index 0000000..d8596be --- /dev/null +++ b/misc/id/openpgp-webkey-service/abstract.mkd @@ -0,0 +1,4 @@ +This specification describes a service to locate OpenPGP keys by mail +address using a Web service and the HTTPS protocol. It also provides +a method for secure communication between the key owner and the mail +provider to publish and revoke the public key. diff --git a/misc/id/openpgp-webkey-service/back.mkd b/misc/id/openpgp-webkey-service/back.mkd new file mode 100644 index 0000000..78d234b --- /dev/null +++ b/misc/id/openpgp-webkey-service/back.mkd @@ -0,0 +1,23 @@ +# Test Vectors + +For help implementing this specification a non-normative example is +given: + +## Sample key + + TODO + +## Software Notes + + GnuPG supports the key discovery described in this document since + version 2.1.12. To use it, the new method "wkd" needs to be used + with the --auto-key-locate option. + +# Changes + + - This is the initial draft. + +## TODO + + - What about authenticated submission? + - Describe how to handle a key with several User IDs. diff --git a/misc/id/openpgp-webkey-service/draft-koch-openpgp-webkey-service-00.txt b/misc/id/openpgp-webkey-service/draft-koch-openpgp-webkey-service-00.txt new file mode 100644 index 0000000..4f271fc --- /dev/null +++ b/misc/id/openpgp-webkey-service/draft-koch-openpgp-webkey-service-00.txt @@ -0,0 +1,560 @@ + + + + +Network Working Group W. Koch +Internet-Draft GnuPG Project +Intended status: Informational May 6, 2016 +Expires: November 7, 2016 + + + OpenPGP Web Key Service + draft-koch-openpgp-webkey-service-00 + +Abstract + + This specification describes a service to locate OpenPGP keys by mail + address using a Web service and the HTTPS protocol. It also provides + a method for secure communication between the key owner and the mail + provider to publish and revoke the public key. + +Status of This Memo + + This Internet-Draft is submitted in full conformance with the + provisions of BCP 78 and BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF). Note that other groups may also distribute + working documents as Internet-Drafts. The list of current Internet- + Drafts is at http://datatracker.ietf.org/drafts/current/. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + This Internet-Draft will expire on November 7, 2016. + +Copyright Notice + + Copyright (c) 2016 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + + + +Koch Expires November 7, 2016 [Page 1] + +Internet-Draft OpenPGP Web Key Service May 2016 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 + 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 2 + 3. Web Key Directory . . . . . . . . . . . . . . . . . . . . . . 2 + 3.1. Key Discovery . . . . . . . . . . . . . . . . . . . . . . 3 + 4. Web Key Directory Update Protocol . . . . . . . . . . . . . . 4 + 4.1. The Submission Address . . . . . . . . . . . . . . . . . 5 + 4.2. The Submission Mail . . . . . . . . . . . . . . . . . . . 6 + 4.3. The Confirmation Request . . . . . . . . . . . . . . . . 6 + 4.4. The Confirmation Response . . . . . . . . . . . . . . . . 7 + 4.5. Policy Flags . . . . . . . . . . . . . . . . . . . . . . 8 + 5. Security Considerations . . . . . . . . . . . . . . . . . . . 8 + 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 + 6.1. Well-Known URI . . . . . . . . . . . . . . . . . . . . . 9 + 7. Normative References . . . . . . . . . . . . . . . . . . . . 9 + Appendix A. Test Vectors . . . . . . . . . . . . . . . . . . . . 9 + A.1. Sample key . . . . . . . . . . . . . . . . . . . . . . . 10 + A.2. Software Notes . . . . . . . . . . . . . . . . . . . . . 10 + Appendix B. Changes . . . . . . . . . . . . . . . . . . . . . . 10 + B.1. TODO . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 + +1. Introduction + + This memo describes a method to associate OpenPGP keys with a mail + address and now to look them up using a web service with a well-known + URI. In addition a mail based protocol is given to allow a client to + setup such an association and to maintain it. + +2. Notational Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + +3. Web Key Directory + + A major use case for OpenPGP is the encryption of mail. A common + difficulty of sending encrypted mails to a new communication partner + is to find the appropriate public key of the recipient. Unless an + off-channel key exchange has been done, there are no easy ways to + discover the required key. The common practice is to search the + network of public key servers for a key matching the recipient's mail + address. This practise bears the problem that the keyservers are not + able to give a positive confirmation that a key actually belongs to + the mail addresses given in the key. Further, there are often + several keys matching a mail address and thus one needs to pick a key + + + +Koch Expires November 7, 2016 [Page 2] + +Internet-Draft OpenPGP Web Key Service May 2016 + + + on good luck. This is clearly not a secure way to setup an end-to- + end encryption. Even if the need for a trusted key for an initial + mail message is relinquished, a non-authenticated key may be a wrong + one and the actual recipient would receive a mail which she can't + decrypt, due to the use of a wrong key. + + Methods to overcome this problem are + + o sending an initial unencrypted messages with the public key + attached, + + o using the OpenPGP DANE protocol to lookup the recipients key via + the DNS. + + The first method has the obvious problems of not even trying to + encrypt the initial mail, an extra mail round-trip, and problems with + unattended key discovery. + + The latter method works fine but requires that mail providers need to + set up a separate DNS resolver to provide the key. The + administration of a DNS zone is often not in the hands of small mail + installations. Thus an update of the DNS resource records needs to + be delegated to the ISP running the DNS service. Further, DNS + lookups are not encrypted and missing all confidentially. Even if + the participating MUAs are using STARTTLS to encrypt the mail + exchange, a DNS lookup for the key unnecessary identifies the local- + part of the recipients mail address to any passive eavesdroppers. + + This memo specified a new method for key discovery using an encrypted + https connection. + +3.1. Key Discovery + + Although URIs are able to encode all kind of characters, + straightforward implementations of a key directory may want to store + the "local-part" of a mail address directly in the file system. This + forbids the use of certain characters in the "local-part". To allow + for such an implementation method the URI uses an encoded form of the + "local-part" which can be directly mapped to a file name. + + OpenPGP defines its User IDs, and thus the mail address, as UTF-8 + strings. To help with the common pattern of using capitalized names + (e.g. "Joe.Doe at example.org") for mail addresses, and under the + premise that almost all MTAs treat the "local-part" case-insensitive + and that the "domain-part" is required to be compared case- + insensitive anyway, all upper-case ASCII characters in a User ID are + mapped to lowercase. Non-ASCII characters are not changed. + + + + +Koch Expires November 7, 2016 [Page 3] + +Internet-Draft OpenPGP Web Key Service May 2016 + + + The so mapped "local-part" is hashed using the SHA-1 algorithm. The + resulting 160 bit digest is encoded using the Z-Base-32 method as + described in [RFC6189], section 5.1.6. The resulting string has a + fixed length of 32 octets. To form the URI, the scheme "https://" is + concatenated with the mapped "domain-part", the fixed string "./well- + known/openpgpkey/hu/", the "domain-part" again, and the above + constructed 32 octet string. + + For example the URI to lookup the key for Joe.Doe at Example.ORG is: + + https://example.org/.well-known/openpgpkey/ + hu/example.org/iy9q119eutrkn8s1mk4r39qejnbu3n5q + + (line has been wrapped for rendering purposes) + + The HTTP GET method MUST return the binary representation of the + OpenPGP key for the given mail address. The key needs to carry a + User ID packet ([RFC4880]) with that mail address. Note that the key + may be revoked or expired - it is up to the client to handle such + conditions. The server MUST also accept a HEAD method so that a + client may only check for the existence of a key. + + The server SHOULD return "application/pgp-key" as the content-type + for the data but clients MUST also accept "application/octet-string" + as content-type. The server MUST NOT return an ASCII armored version + of the key. + +4. Web Key Directory Update Protocol + + To put keys into the key directory a protocol to automate the task is + desirable. The protocol defined here is entirely based on mail and + the assumption that a mail provider can securely deliver mail to the + INBOX of a user (e.g. an IMAP folder). Note that the same protocol + may also be used for submitting keys for use with OpenPGP DANE. + + We assume that the user already created a key for her mail account + alice at example.org. To install the key at her provider's Web Key + Directory, she performs the following steps: + + 1. She retrieves a file which contains one line with the mail + address used to submit the key to the mail provider. See below + for the syntax of that file. For a mail address at the domain + "example.org" the URI of the file is + + https://example.org/.well-known/openpgpkey/submission-address + + 2. She sends her key using SMTP (or any other transport mechanism) + to the provider using the submission address. The content-type + + + +Koch Expires November 7, 2016 [Page 4] + +Internet-Draft OpenPGP Web Key Service May 2016 + + + SHOULD be "application/pgp-key" and the key being a binary + attachment (which is then likely base64 encoded). Note that the + OpenPGP ASCII armor is not used. + + 3. The provider checks that the received key has a User ID which + + * matches an account name of the provider, + + * and that the from address matches that account. + + 4. The provider sends an encrypted message containing a nonce and + the fingerprint of the key to the mail account of the user. Note + that a similar scheme is used by the well known caff(1) tool to + help with key signing parties. + + 5. A legitimate user will be able to decrypt the message because she + created the key and is in charge of the private key. This step + verifies that the submitted key has actually been created by the + owner of the account. + + 6. The user sends the decrypted nonce back to the submission address + as a confirmation that the private key is owned by her and that + the provider may now publish the key. Also technically not + required, it is suggested that the mail to the provider is + encrypted. The public key for this is retrieved using the key + lookup protocol described above. + + 7. The provider receives the nonce, matches it with its database of + pending confirmations and then publishes the key. Finally the + provider sends a mail back to the user to notify her of the the + publication of her key. + + The message data structures used for the above protocol are specified + in detail below. In the following sections the string "WELLKNOWN" + denotes the first part of an URI specific for a domain. In the + examples the domain "example.org" is assumed, thus + + WELLKNOWN := https://example.org/.well-known/openpgpkey + + The term "target key" denotes the to be published key, the term + "submission key" the key associated with the submission-address of + the mail provider. + +4.1. The Submission Address + + The address of the submission file is + + WELLKNOWN/submission-address + + + +Koch Expires November 7, 2016 [Page 5] + +Internet-Draft OpenPGP Web Key Service May 2016 + + + The file consists of exactly one line, terminated by a LF, or the + sequence of CR and LF, with the full mail address to be used for + submission of a key to the mail provider. For example the content of + the file may be + + key-submission-example.org at directory.example.org + +4.2. The Submission Mail + + The mail used to submit a key to the mail provider MUST comply to the + PGP/MIME specification ([RFC3156], section 7), which states that the + Content-Type must be "application/pgp-keys", there are no required or + optional parameters, and the body part contains the ASCII-armored + transferable Public Key Packets as defined in [RFC4880], section + 11.1. + + If the mail provider has published an encryption key for the + submission-address in the Web Key Directory, the key to be published + MUST be submitted using a PGP/MIME encrypted message ([RFC3156], + section 4). The message MUST not be signed (because the authenticity + of the signing key has not yet been confirmed). After decryption of + the message at the mail provider a single "application/pgp-keys" + part, as specified above, is expected. + +4.3. The Confirmation Request + + The mail provider sends a confirmation mail in response to a received + key publication request. The message SHOULD be sent from the + submission-address of the mail provider to the mail address extracted + from the target key. The message needs to be encrypted to the target + key and MAY be signed by the submission key. PGP/MIME MUST be used + for encryption and signing; the Combined method ([RFC3156], section + 6.2) MUST be used if the message is to be signed. + + The Content-type used for the plaintext part MUST be "application/ + vnd.gnupg.wkd". The body consists of name-value pairs with one name- + value pair per LF or CR+LF terminated line. Empty lines are allowed + and will be ignored by the receiver. A colon is used to terminate a + name. + + In a confirmation request the following names MUST be send in the + specified order: + + "type" The value must be "confirmation-request". + + "from" This is the mailbox the user is expected to sent the + confirmation response to. The value must match the mailbox part + of the "From:" address of this request. + + + +Koch Expires November 7, 2016 [Page 6] + +Internet-Draft OpenPGP Web Key Service May 2016 + + + "address" The value is the addr-spec part of the target key's mail + address. The value SHOULD match the addr-spec part of the + recipient's address. The value MUST be be UTF-8 encoded as + required for an OpenPGP User ID. + + "fingerprint" The value is the fingerprint of the target key. The + fingerprint is given in uppercase hex encoding without any + interleaving spaces. + + "nonce" The value is a string with a minimum length of 16 octets and + a maximum length of 64 octets. The string must entirely be made + up of random ASCII letters or digits. This nonce will be sent + back to the mail provider as proof that the recipient is the + legitimate owner of the target-key. + + The receiver of the message decrypts the message, checks that the + "fingerprint" matches the target key, checks that the "address" + matches a User ID of the target key, and checks the other constrains + of the request format. If any constraint is not asserted, or the + fingerprint or User ID do not match the target key, or there is no + pending publication requests (i.e. a mail recently sent o the + submission address), the user MAY be notified about this fake + confirmation attempt. + + In other cases the confirmation request is legitimate and the MUA + shall silently send a response as described in the next section. + +4.4. The Confirmation Response + + A response to a confirmation request MUST only be send in the + positive case; there is no negative confirmation response. A mail + service provider is expected to cancel a pending key submission after + a suitable time without a confirmation. The mail service provider + SHOULD not retry the sending of a confirmation request after the + first request has been send successfully. + + The user MUST send the confirmation response from her target mail + address to the "from" address of the confirmation request. The + message MUST be signed and SHOULD be encrypted. The PGP/MIME + Combined format MUST be used for encryption and signing ([RFC3156], + section 6.2). The encryption key can be taken from the Web Key + Directory. + + The Content-type used for the plaintext message MUST also be + "application/vnd.gnupg.wkd". The format is the same as described + above for the Confirmation Request. The body must contain three + name-value pairs in this order: + + + + +Koch Expires November 7, 2016 [Page 7] + +Internet-Draft OpenPGP Web Key Service May 2016 + + + "type" The value must be "confirmation-response". + + "from" The value must match the mailbox part of the "From:" address + of this response. + + "nonce" The value is the value of the "nonce" parameter from the + confirmation request. + +4.5. Policy Flags + + For key generation and submission it is sometimes useful to tell the + client about certain properties of the mail provider in advance. + This can be done with a file at the URL + + WELLKNOWN/policy + + The file contains keywords, one per line with each line terminated by + a LF or the sequence of CR and LF. Empty lines and lines starting + with a '#' character are considered comment lines. A keyword is made + up of lowercase letters, digits, hyphens, or dots. An underscore is + allowed as a name space delimiters; see below. The first character + must be a letter. Clients MUST use case-insensitive matching. + + Currently defined keywords are: + + "mailbox-only" The mail server provider does only accept keys with + only a mailbox in the User ID. In particular User IDs with a real + name in addition to the mailbox will be rejected as invalid. + + More keywords will be defined in updates to this I-D. There is no + registry yet except for this document. For experimental use of new + features or for provider specific settings, keywords MUST be prefixed + with a domain name and an underscore. + +5. Security Considerations + + The use of SHA-1 for the mapping of the "local-part" to a fixed + string is not a security feature but merely used to map the local- + part to a fixed-sized string made from a well defined set of + characters. It is not intended to conceal information about a mail + address. + + The domain name part of the mail address is not part of the hash to + avoid problems with internationalized domain names. Instead a + separate web service is required for each domain name. + + + + + + +Koch Expires November 7, 2016 [Page 8] + +Internet-Draft OpenPGP Web Key Service May 2016 + + +6. IANA Considerations + +6.1. Well-Known URI + + IANA is requested to assign a well-known URI in the "Well-Known URIs" + registry as defined by [RFC5785]: + + URI suffix: openpgpkey + + Change controller: IETF + + Specification document: This + +7. Normative References + + [RFC0822] Crocker, D., "STANDARD FOR THE FORMAT OF ARPA INTERNET + TEXT MESSAGES", STD 11, RFC 822, DOI 10.17487/RFC0822, + August 1982, . + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC3156] Elkins, M., Del Torto, D., Levien, R., and T. Roessler, + "MIME Security with OpenPGP", RFC 3156, August 2001. + + [RFC4880] Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R. + Thayer, "OpenPGP Message Format", RFC 4880, November 2007. + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an + IANA Considerations Section in RFCs", BCP 26, RFC 5226, + May 2008. + + [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known + Uniform Resource Identifiers (URIs)", RFC 5785, DOI + 10.17487/RFC5785, April 2010, + . + + [RFC6189] Zimmermann, P., Johnston, A., Ed., and J. Callas, "ZRTP: + Media Path Key Agreement for Unicast Secure RTP", RFC + 6189, DOI 10.17487/RFC6189, April 2011, + . + +Appendix A. Test Vectors + + For help implementing this specification a non-normative example is + given: + + + + + +Koch Expires November 7, 2016 [Page 9] + +Internet-Draft OpenPGP Web Key Service May 2016 + + +A.1. Sample key + + TODO + +A.2. Software Notes + + GnuPG supports the key discovery described in this document since + version 2.1.12. To use it, the new method "wkd" needs to be used + with the --auto-key-locate option. + +Appendix B. Changes + + o This is the initial draft. + +B.1. TODO + + o What about authenticated submission? + + o Describe how to handle a key with several User IDs. + +Author's Address + + Werner Koch + GnuPG Project + + Email: wk at gnupg.org + URI: https://gnupg.org + + + + + + + + + + + + + + + + + + + + + + + + +Koch Expires November 7, 2016 [Page 10] diff --git a/misc/id/openpgp-webkey-service/middle.mkd b/misc/id/openpgp-webkey-service/middle.mkd new file mode 100644 index 0000000..3f0e63f --- /dev/null +++ b/misc/id/openpgp-webkey-service/middle.mkd @@ -0,0 +1,336 @@ +# Introduction + +This memo describes a method to associate OpenPGP keys with a mail +address and now to look them up using a web service with a well-known +URI. In addition a mail based protocol is given to allow a client to +setup such an association and to maintain it. + +# Notational Conventions + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", +"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in [](#RFC2119). + + +# Web Key Directory + +A major use case for OpenPGP is the encryption of mail. A common +difficulty of sending encrypted mails to a new communication partner is +to find the appropriate public key of the recipient. Unless an +off-channel key exchange has been done, there are no easy ways to +discover the required key. The common practice is to search the +network of public key servers for a key matching the recipient's mail +address. This practise bears the problem that the keyservers are not +able to give a positive confirmation that a key actually belongs to +the mail addresses given in the key. Further, there are often several +keys matching a mail address and thus one needs to pick a key on good +luck. This is clearly not a secure way to setup an end-to-end +encryption. Even if the need for a trusted key for an initial mail +message is relinquished, a non-authenticated key may be a wrong one +and the actual recipient would receive a mail which she can't decrypt, +due to the use of a wrong key. + +Methods to overcome this problem are + + - sending an initial unencrypted messages with the public key + attached, + - using the OpenPGP DANE protocol to lookup the recipients key via + the DNS. + +The first method has the obvious problems of not even trying to +encrypt the initial mail, an extra mail round-trip, and problems with +unattended key discovery. + +The latter method works fine but requires that mail providers need to +set up a separate DNS resolver to provide the key. The administration +of a DNS zone is often not in the hands of small mail installations. +Thus an update of the DNS resource records needs to be delegated +to the ISP running the DNS service. Further, DNS lookups are not +encrypted and missing all confidentially. Even if the participating +MUAs are using STARTTLS to encrypt the mail exchange, a DNS lookup for +the key unnecessary identifies the local-part of the recipients mail +address to any passive eavesdroppers. + +This memo specified a new method for key discovery using an encrypted +https connection. + +## Key Discovery + +Although URIs are able to encode all kind of characters, +straightforward implementations of a key directory may want to store +the "local-part" of a mail address directly in the file system. This +forbids the use of certain characters in the "local-part". To allow +for such an implementation method the URI uses an encoded form of the +"local-part" which can be directly mapped to a file name. + +OpenPGP defines its User IDs, and thus the mail address, as UTF-8 +strings. To help with the common pattern of using capitalized names +(e.g. "Joe.Doe at example.org") for mail addresses, and under the premise +that almost all MTAs treat the "local-part" case-insensitive and that +the "domain-part" is required to be compared case-insensitive anyway, +all upper-case ASCII characters in a User ID are mapped to lowercase. +Non-ASCII characters are not changed. + +The so mapped "local-part" is hashed using the SHA-1 algorithm. The +resulting 160 bit digest is encoded using the Z-Base-32 method as +described in [](#RFC6189), section 5.1.6. The resulting string has a +fixed length of 32 octets. To form the URI, the scheme "https://" is +concatenated with the mapped "domain-part", the fixed string +"./well-known/openpgpkey/hu/", the "domain-part" again, and the above +constructed 32 octet string. + +For example the URI to lookup the key for Joe.Doe at Example.ORG is: + + https://example.org/.well-known/openpgpkey/ + hu/example.org/iy9q119eutrkn8s1mk4r39qejnbu3n5q + +(line has been wrapped for rendering purposes) + +The HTTP GET method MUST return the binary representation of the +OpenPGP key for the given mail address. The key needs to carry a User +ID packet ([](#RFC4880)) with that mail address. Note that the key +may be revoked or expired - it is up to the client to handle such +conditions. The server MUST also accept a HEAD method so that a +client may only check for the existence of a key. + +The server SHOULD return "application/pgp-key" as the content-type for +the data but clients MUST also accept "application/octet-string" as +content-type. The server MUST NOT return an ASCII armored version of +the key. + + +# Web Key Directory Update Protocol + +To put keys into the key directory a protocol to automate the task is +desirable. The protocol defined here is entirely based on mail and +the assumption that a mail provider can securely deliver mail to the +INBOX of a user (e.g. an IMAP folder). Note that the same protocol +may also be used for submitting keys for use with OpenPGP DANE. + +We assume that the user already created a key for her mail account +alice at example.org. To install the key at her provider's Web Key +Directory, she performs the following steps: + +1. She retrieves a file which contains one line with the mail address + used to submit the key to the mail provider. See below for the + syntax of that file. For a mail address at the domain "example.org" + the URI of the file is + + https://example.org/.well-known/openpgpkey/submission-address + +2. She sends her key using SMTP (or any other transport mechanism) to + the provider using the submission address. The content-type SHOULD + be "application/pgp-key" and the key being a binary attachment + (which is then likely base64 encoded). Note that the OpenPGP ASCII + armor is not used. + +3. The provider checks that the received key has a User ID which + - matches an account name of the provider, + - and that the from address matches that account. + +4. The provider sends an encrypted message containing a nonce and the + fingerprint of the key to the mail account of the user. Note that + a similar scheme is used by the well known caff(1) tool to + help with key signing parties. + +5. A legitimate user will be able to decrypt the message because she + created the key and is in charge of the private key. This step + verifies that the submitted key has actually been created by the + owner of the account. + +6. The user sends the decrypted nonce back to the submission address + as a confirmation that the private key is owned by her and that the + provider may now publish the key. Also technically not required, + it is suggested that the mail to the provider is encrypted. The + public key for this is retrieved using the key lookup protocol + described above. + +7. The provider receives the nonce, matches it with its database of + pending confirmations and then publishes the key. Finally the + provider sends a mail back to the user to notify her of the + the publication of her key. + +The message data structures used for the above protocol are specified +in detail below. In the following sections the string "WELLKNOWN" +denotes the first part of an URI specific for a domain. In the +examples the domain "example.org" is assumed, thus + + WELLKNOWN := https://example.org/.well-known/openpgpkey + +The term "target key" denotes the to be published key, the term +"submission key" the key associated with the submission-address of the +mail provider. + +## The Submission Address + +The address of the submission file is + + WELLKNOWN/submission-address + +The file consists of exactly one line, terminated by a LF, or the +sequence of CR and LF, with the full mail address to be used for +submission of a key to the mail provider. For example the content of +the file may be + + key-submission-example.org at directory.example.org + +## The Submission Mail + +The mail used to submit a key to the mail provider MUST comply to the +PGP/MIME specification ([](#RFC3156), section 7), which states that the +Content-Type must be "application/pgp-keys", there are no required or +optional parameters, and the body part contains the ASCII-armored +transferable Public Key Packets as defined in [](#RFC4880), +section 11.1. + +If the mail provider has published an encryption key for the +submission-address in the Web Key Directory, the key to be published +MUST be submitted using a PGP/MIME encrypted message ([](#RFC3156), +section 4). The message MUST not be signed (because the +authenticity of the signing key has not yet been confirmed). After +decryption of the message at the mail provider a single +"application/pgp-keys" part, as specified above, is expected. + +## The Confirmation Request + +The mail provider sends a confirmation mail in response to a received +key publication request. The message SHOULD be sent from the +submission-address of the mail provider to the mail address extracted +from the target key. The message needs to be encrypted to the target +key and MAY be signed by the submission key. PGP/MIME MUST be used +for encryption and signing; the Combined method ([](#RFC3156), +section 6.2) MUST be used if the message is to be signed. + +The Content-type used for the plaintext part MUST be +"application/vnd.gnupg.wkd". The body consists of name-value pairs +with one name-value pair per LF or CR+LF terminated line. Empty lines +are allowed and will be ignored by the receiver. A colon is used to +terminate a name. + +In a confirmation request the following names MUST be send in the +specified order: + +"type" + : The value must be "confirmation-request". + +"from" + : This is the mailbox the user is expected to sent the confirmation + response to. The value must match the mailbox part of the + "From:" address of this request. + +"address" + : The value is the addr-spec part of the target key's mail address. + The value SHOULD match the addr-spec part of the recipient's + address. The value MUST be be UTF-8 encoded as required for an + OpenPGP User ID. + +"fingerprint" + : The value is the fingerprint of the target key. The fingerprint + is given in uppercase hex encoding without any interleaving + spaces. + +"nonce" + : The value is a string with a minimum length of 16 octets and a + maximum length of 64 octets. The string must entirely be made up + of random ASCII letters or digits. This nonce will be sent back + to the mail provider as proof that the recipient is the legitimate + owner of the target-key. + + +The receiver of the message decrypts the message, checks that the +"fingerprint" matches the target key, checks that the "address" +matches a User ID of the target key, and checks the other constrains +of the request format. If any constraint is not asserted, or the +fingerprint or User ID do not match the target key, or there is no +pending publication requests (i.e. a mail recently sent o the +submission address), the user MAY be notified about this fake +confirmation attempt. + +In other cases the confirmation request is legitimate and the MUA +shall silently send a response as described in the next section. + +## The Confirmation Response + +A response to a confirmation request MUST only be send in the positive +case; there is no negative confirmation response. A mail service +provider is expected to cancel a pending key submission after a +suitable time without a confirmation. The mail service provider +SHOULD not retry the sending of a confirmation request after the first +request has been send successfully. + +The user MUST send the confirmation response from her target mail +address to the "from" address of the confirmation request. The +message MUST be signed and SHOULD be encrypted. The PGP/MIME Combined +format MUST be used for encryption and signing ([](#RFC3156), +section 6.2). The encryption key can be taken from the Web Key +Directory. + +The Content-type used for the plaintext message MUST also be +"application/vnd.gnupg.wkd". The format is the same as described +above for the Confirmation Request. The body must contain three +name-value pairs in this order: + +"type" + : The value must be "confirmation-response". + +"from" + : The value must match the mailbox part of the "From:" address of + this response. + +"nonce" + : The value is the value of the "nonce" parameter from the + confirmation request. + + +## Policy Flags + +For key generation and submission it is sometimes useful to tell the +client about certain properties of the mail provider in advance. This +can be done with a file at the URL + + WELLKNOWN/policy + +The file contains keywords, one per line with each line terminated by +a LF or the sequence of CR and LF. Empty lines and lines starting +with a '#' character are considered comment lines. A keyword is made +up of lowercase letters, digits, hyphens, or dots. An underscore is +allowed as a name space delimiters; see below. The first character +must be a letter. Clients MUST use case-insensitive matching. + +Currently defined keywords are: + +"mailbox-only" + : The mail server provider does only accept keys with only a mailbox + in the User ID. In particular User IDs with a real name in + addition to the mailbox will be rejected as invalid. + +More keywords will be defined in updates to this I-D. There is no +registry yet except for this document. For experimental use of new +features or for provider specific settings, keywords MUST be prefixed +with a domain name and an underscore. + + +# Security Considerations + +The use of SHA-1 for the mapping of the "local-part" to a fixed string +is not a security feature but merely used to map the local-part to a +fixed-sized string made from a well defined set of characters. It is +not intended to conceal information about a mail address. + +The domain name part of the mail address is not part of the hash to +avoid problems with internationalized domain names. Instead a +separate web service is required for each domain name. + + +# IANA Considerations + +## Well-Known URI + +IANA is requested to assign a well-known URI in the "Well-Known URIs" +registry as defined by [](#RFC5785): + + URI suffix: openpgpkey + + Change controller: IETF + + Specification document: This diff --git a/misc/id/openpgp-webkey-service/template.xml b/misc/id/openpgp-webkey-service/template.xml new file mode 100644 index 0000000..c14ef88 --- /dev/null +++ b/misc/id/openpgp-webkey-service/template.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + +]> + + + + + + + + + + + + + OpenPGP Web Key Service + + GnuPG Project +
+ wk at gnupg.org + https://gnupg.org +
+
+ + + Security + + + &pandocAbstract; + +
+ + + &pandocMiddle; + + + + + &rfc.2119; + &rfc.3156; + &rfc.4880; + &rfc.5226; + &rfc.5785; + &rfc.0822; + &rfc.6189; + + &pandocBack; + +
----------------------------------------------------------------------- Summary of changes: misc/id/openpgp-webkey-service/abstract.mkd | 4 + misc/id/openpgp-webkey-service/back.mkd | 23 + .../draft-koch-openpgp-webkey-service-00.txt | 560 +++++++++++++++++++++ misc/id/openpgp-webkey-service/middle.mkd | 336 +++++++++++++ .../template.xml | 35 +- 5 files changed, 938 insertions(+), 20 deletions(-) create mode 100644 misc/id/openpgp-webkey-service/abstract.mkd create mode 100644 misc/id/openpgp-webkey-service/back.mkd create mode 100644 misc/id/openpgp-webkey-service/draft-koch-openpgp-webkey-service-00.txt create mode 100644 misc/id/openpgp-webkey-service/middle.mkd copy misc/id/{eddsa-for-openpgp => openpgp-webkey-service}/template.xml (57%) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Fri May 6 10:04:38 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Fri, 06 May 2016 10:04:38 +0200 Subject: [git] gnupg-doc - branch, master, updated. 5e326105a760d04f8db6f9e94e54b8ee0d15537e Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via 5e326105a760d04f8db6f9e94e54b8ee0d15537e (commit) from 7703092b35dbd0084c26d277bb03cb7e21889add (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 5e326105a760d04f8db6f9e94e54b8ee0d15537e Author: Werner Koch Date: Fri May 6 10:03:50 2016 +0200 drafts: Fixes some nits in openpgp-webkey-service. diff --git a/misc/id/openpgp-webkey-service/middle.mkd b/misc/id/openpgp-webkey-service/middle.mkd index 3f0e63f..f306322 100644 --- a/misc/id/openpgp-webkey-service/middle.mkd +++ b/misc/id/openpgp-webkey-service/middle.mkd @@ -186,7 +186,7 @@ section 11.1. If the mail provider has published an encryption key for the submission-address in the Web Key Directory, the key to be published MUST be submitted using a PGP/MIME encrypted message ([](#RFC3156), -section 4). The message MUST not be signed (because the +section 4). The message MUST NOT be signed (because the authenticity of the signing key has not yet been confirmed). After decryption of the message at the mail provider a single "application/pgp-keys" part, as specified above, is expected. @@ -255,7 +255,7 @@ A response to a confirmation request MUST only be send in the positive case; there is no negative confirmation response. A mail service provider is expected to cancel a pending key submission after a suitable time without a confirmation. The mail service provider -SHOULD not retry the sending of a confirmation request after the first +SHOULD NOT retry the sending of a confirmation request after the first request has been send successfully. The user MUST send the confirmation response from her target mail diff --git a/misc/id/openpgp-webkey-service/template.xml b/misc/id/openpgp-webkey-service/template.xml index c14ef88..1c6d3fc 100644 --- a/misc/id/openpgp-webkey-service/template.xml +++ b/misc/id/openpgp-webkey-service/template.xml @@ -3,7 +3,6 @@ - @@ -51,9 +50,7 @@ &rfc.2119; &rfc.3156; &rfc.4880; - &rfc.5226; &rfc.5785; - &rfc.0822; &rfc.6189; &pandocBack; ----------------------------------------------------------------------- Summary of changes: misc/id/openpgp-webkey-service/middle.mkd | 4 ++-- misc/id/openpgp-webkey-service/template.xml | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Fri May 6 14:49:37 2016 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Fri, 06 May 2016 14:49:37 +0200 Subject: [git] GPGME - branch, gpgmepp, updated. gpgme-1.6.0-54-ga579be8 Message-ID: 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, gpgmepp has been updated via a579be82c84f0b9732ee3d52ff2142a3decf95d7 (commit) via 11ff8d5964bf66f905818514f6a51fc881ea1a56 (commit) via 20b02a7dd49c7ede148245d8a5319b2ba9ce7673 (commit) via cd267791e9bd73505a2a1ea90c85df988e153c19 (commit) via 3fad1216770f446a89801d842aa8667356a5ec95 (commit) from 5489532ad6ccf3a9b59405686b8a17352f1ecf06 (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 a579be82c84f0b9732ee3d52ff2142a3decf95d7 Author: Andre Heinecke Date: Fri May 6 14:47:24 2016 +0200 Use common error message style for qt lang checks * configure.ac: Use common error highliting for qt lang options. diff --git a/configure.ac b/configure.ac index 798a396..87b9e97 100644 --- a/configure.ac +++ b/configure.ac @@ -308,14 +308,17 @@ if test "$found" = "1"; then enabled_languages=$(echo $enabled_languages | sed 's/qt//') LIST_MEMBER("cpp", $enabled_languages) if test "$found" = "0"; then - AC_MSG_ERROR([qt binding depends on cpp language binding]) + AC_MSG_ERROR([[ +*** +*** Qt language binding depends on cpp binding. +***]]) fi FIND_QT if test "$have_qt5_libs" != "yes"; then if test "$explicit_languages" = "1"; then AC_MSG_ERROR([[ *** -*** Qt5 (Qt5Core) is required for qt binding. +*** Qt5 (Qt5Core) is required for Qt binding. ***]]) else AC_MSG_WARN([[ commit 11ff8d5964bf66f905818514f6a51fc881ea1a56 Author: Andre Heinecke Date: Fri May 6 14:41:22 2016 +0200 Qt: Fix license mentioned in README * lang/qt/README: License is GPLv2+ and not LGPL. -- The only part under lgpl is the QByteArray dataprovider. diff --git a/lang/qt/README b/lang/qt/README index a6b133f..f624f60 100644 --- a/lang/qt/README +++ b/lang/qt/README @@ -2,20 +2,30 @@ Qt API bindings/wrapper for gpgme ---------------------------------------- Based on KF5gpgmepp QGpgme and libkleo/backends/qgpgme -QGpgme is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. +QGpgME is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. -QGpgme is distributed in the hope that it will be useful, +QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Library General Public License for more details. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. -You should have received a copy of the GNU Library General Public License -along with GPGME++; see the file COPYING.LIB. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +In addition, as a special exception, the copyright holders give +permission to link the code of this program with any edition of +the Qt library by Trolltech AS, Norway (or with modified versions +of Qt that use the same license as Qt), and distribute linked +combinations including the two. You must obey the GNU General +Public License in all respects for all of the code used other than +Qt. If you modify this file, you may extend this exception to +your version of the file, but you are not obligated to do so. If +you do not wish to do so, delete this exception statement from +your version. Overview -------- commit 20b02a7dd49c7ede148245d8a5319b2ba9ce7673 Author: Andre Heinecke Date: Fri May 6 14:20:45 2016 +0200 Qt: Fix library name in Copyright headers -- Files are not part of libkleopatra anymore. diff --git a/lang/qt/src/abstractimportjob.h b/lang/qt/src/abstractimportjob.h index 662fed8..33f6a2a 100644 --- a/lang/qt/src/abstractimportjob.h +++ b/lang/qt/src/abstractimportjob.h @@ -5,12 +5,12 @@ Copyright (c) 2009 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/adduseridjob.h b/lang/qt/src/adduseridjob.h index 8ffd962..1b5676f 100644 --- a/lang/qt/src/adduseridjob.h +++ b/lang/qt/src/adduseridjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/changeexpiryjob.h b/lang/qt/src/changeexpiryjob.h index f1a3881..7902cb8 100644 --- a/lang/qt/src/changeexpiryjob.h +++ b/lang/qt/src/changeexpiryjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/changeownertrustjob.h b/lang/qt/src/changeownertrustjob.h index f42fa05..75c1163 100644 --- a/lang/qt/src/changeownertrustjob.h +++ b/lang/qt/src/changeownertrustjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/changepasswdjob.h b/lang/qt/src/changepasswdjob.h index eb9ab0f..7290898 100644 --- a/lang/qt/src/changepasswdjob.h +++ b/lang/qt/src/changepasswdjob.h @@ -5,12 +5,12 @@ Copyright (c) 2010 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/cryptoconfig.h b/lang/qt/src/cryptoconfig.h index 1ab2ccf..858dbb7 100644 --- a/lang/qt/src/cryptoconfig.h +++ b/lang/qt/src/cryptoconfig.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/decryptjob.h b/lang/qt/src/decryptjob.h index 2aa4661..c4fc86f 100644 --- a/lang/qt/src/decryptjob.h +++ b/lang/qt/src/decryptjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/decryptverifyjob.h b/lang/qt/src/decryptverifyjob.h index 501df83..97af008 100644 --- a/lang/qt/src/decryptverifyjob.h +++ b/lang/qt/src/decryptverifyjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/deletejob.h b/lang/qt/src/deletejob.h index 5249960..1f4e8cf 100644 --- a/lang/qt/src/deletejob.h +++ b/lang/qt/src/deletejob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/downloadjob.h b/lang/qt/src/downloadjob.h index 757d76e..09eecf6 100644 --- a/lang/qt/src/downloadjob.h +++ b/lang/qt/src/downloadjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/encryptjob.h b/lang/qt/src/encryptjob.h index 6c4ae5c..060ff8d 100644 --- a/lang/qt/src/encryptjob.h +++ b/lang/qt/src/encryptjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/exportjob.h b/lang/qt/src/exportjob.h index 2cc3d06..df21f03 100644 --- a/lang/qt/src/exportjob.h +++ b/lang/qt/src/exportjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/hierarchicalkeylistjob.h b/lang/qt/src/hierarchicalkeylistjob.h index 63aea6b..7cc519a 100644 --- a/lang/qt/src/hierarchicalkeylistjob.h +++ b/lang/qt/src/hierarchicalkeylistjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/importfromkeyserverjob.h b/lang/qt/src/importfromkeyserverjob.h index 873ce51..7ab13cb 100644 --- a/lang/qt/src/importfromkeyserverjob.h +++ b/lang/qt/src/importfromkeyserverjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/importjob.h b/lang/qt/src/importjob.h index e72ef4c..d9f60d1 100644 --- a/lang/qt/src/importjob.h +++ b/lang/qt/src/importjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/job.cpp b/lang/qt/src/job.cpp index abbe16f..7ca1df9 100644 --- a/lang/qt/src/job.cpp +++ b/lang/qt/src/job.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2005 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/job.h b/lang/qt/src/job.h index 0882539..5767729 100644 --- a/lang/qt/src/job.h +++ b/lang/qt/src/job.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/keygenerationjob.h b/lang/qt/src/keygenerationjob.h index 43e0941..90f29bf 100644 --- a/lang/qt/src/keygenerationjob.h +++ b/lang/qt/src/keygenerationjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/keylistjob.h b/lang/qt/src/keylistjob.h index 76f9a85..6e62c4f 100644 --- a/lang/qt/src/keylistjob.h +++ b/lang/qt/src/keylistjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/listallkeysjob.h b/lang/qt/src/listallkeysjob.h index c662c04..9d4711d 100644 --- a/lang/qt/src/listallkeysjob.h +++ b/lang/qt/src/listallkeysjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/multideletejob.h b/lang/qt/src/multideletejob.h index a142f32..fca73d0 100644 --- a/lang/qt/src/multideletejob.h +++ b/lang/qt/src/multideletejob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeadduseridjob.cpp b/lang/qt/src/qgpgmeadduseridjob.cpp index b1d5c5c..aa873f4 100644 --- a/lang/qt/src/qgpgmeadduseridjob.cpp +++ b/lang/qt/src/qgpgmeadduseridjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeadduseridjob.h b/lang/qt/src/qgpgmeadduseridjob.h index ce26ad4..f77b3c8 100644 --- a/lang/qt/src/qgpgmeadduseridjob.h +++ b/lang/qt/src/qgpgmeadduseridjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmebackend.cpp b/lang/qt/src/qgpgmebackend.cpp index abecde2..27cd178 100644 --- a/lang/qt/src/qgpgmebackend.cpp +++ b/lang/qt/src/qgpgmebackend.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2005 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmebackend.h b/lang/qt/src/qgpgmebackend.h index 16b70cf..3b03633 100644 --- a/lang/qt/src/qgpgmebackend.h +++ b/lang/qt/src/qgpgmebackend.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2005 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmechangeexpiryjob.cpp b/lang/qt/src/qgpgmechangeexpiryjob.cpp index 81a49fd..e0c6c4d 100644 --- a/lang/qt/src/qgpgmechangeexpiryjob.cpp +++ b/lang/qt/src/qgpgmechangeexpiryjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmechangeexpiryjob.h b/lang/qt/src/qgpgmechangeexpiryjob.h index 3ba140b..fab1259 100644 --- a/lang/qt/src/qgpgmechangeexpiryjob.h +++ b/lang/qt/src/qgpgmechangeexpiryjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmechangeownertrustjob.cpp b/lang/qt/src/qgpgmechangeownertrustjob.cpp index c3220ee..2f055f1 100644 --- a/lang/qt/src/qgpgmechangeownertrustjob.cpp +++ b/lang/qt/src/qgpgmechangeownertrustjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmechangeownertrustjob.h b/lang/qt/src/qgpgmechangeownertrustjob.h index 4cf4f72..7ff03a3 100644 --- a/lang/qt/src/qgpgmechangeownertrustjob.h +++ b/lang/qt/src/qgpgmechangeownertrustjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmechangepasswdjob.cpp b/lang/qt/src/qgpgmechangepasswdjob.cpp index 618ed1d..675eee6 100644 --- a/lang/qt/src/qgpgmechangepasswdjob.cpp +++ b/lang/qt/src/qgpgmechangepasswdjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2010 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmechangepasswdjob.h b/lang/qt/src/qgpgmechangepasswdjob.h index b799c20..1531e76 100644 --- a/lang/qt/src/qgpgmechangepasswdjob.h +++ b/lang/qt/src/qgpgmechangepasswdjob.h @@ -5,12 +5,12 @@ Copyright (c) 2010 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedecryptjob.cpp b/lang/qt/src/qgpgmedecryptjob.cpp index 8233f8d..7116449 100644 --- a/lang/qt/src/qgpgmedecryptjob.cpp +++ b/lang/qt/src/qgpgmedecryptjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedecryptjob.h b/lang/qt/src/qgpgmedecryptjob.h index e87120b..e7ed04f 100644 --- a/lang/qt/src/qgpgmedecryptjob.h +++ b/lang/qt/src/qgpgmedecryptjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedecryptverifyjob.cpp b/lang/qt/src/qgpgmedecryptverifyjob.cpp index 8f9026d..d46a9b5 100644 --- a/lang/qt/src/qgpgmedecryptverifyjob.cpp +++ b/lang/qt/src/qgpgmedecryptverifyjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedecryptverifyjob.h b/lang/qt/src/qgpgmedecryptverifyjob.h index 0e67de5..4a209b9 100644 --- a/lang/qt/src/qgpgmedecryptverifyjob.h +++ b/lang/qt/src/qgpgmedecryptverifyjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedeletejob.cpp b/lang/qt/src/qgpgmedeletejob.cpp index 4de3a17..323aec4 100644 --- a/lang/qt/src/qgpgmedeletejob.cpp +++ b/lang/qt/src/qgpgmedeletejob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedeletejob.h b/lang/qt/src/qgpgmedeletejob.h index dea2d85..a2b0d10 100644 --- a/lang/qt/src/qgpgmedeletejob.h +++ b/lang/qt/src/qgpgmedeletejob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedownloadjob.cpp b/lang/qt/src/qgpgmedownloadjob.cpp index 59cf378..48cc907 100644 --- a/lang/qt/src/qgpgmedownloadjob.cpp +++ b/lang/qt/src/qgpgmedownloadjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmedownloadjob.h b/lang/qt/src/qgpgmedownloadjob.h index 979481e..b1120d1 100644 --- a/lang/qt/src/qgpgmedownloadjob.h +++ b/lang/qt/src/qgpgmedownloadjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeencryptjob.cpp b/lang/qt/src/qgpgmeencryptjob.cpp index eb4bd44..8d0bfd4 100644 --- a/lang/qt/src/qgpgmeencryptjob.cpp +++ b/lang/qt/src/qgpgmeencryptjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeencryptjob.h b/lang/qt/src/qgpgmeencryptjob.h index ea0cd42..fc6ad5f 100644 --- a/lang/qt/src/qgpgmeencryptjob.h +++ b/lang/qt/src/qgpgmeencryptjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeexportjob.cpp b/lang/qt/src/qgpgmeexportjob.cpp index dec9817..dfc5fc9 100644 --- a/lang/qt/src/qgpgmeexportjob.cpp +++ b/lang/qt/src/qgpgmeexportjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeexportjob.h b/lang/qt/src/qgpgmeexportjob.h index 9404d87..703687c 100644 --- a/lang/qt/src/qgpgmeexportjob.h +++ b/lang/qt/src/qgpgmeexportjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeimportfromkeyserverjob.cpp b/lang/qt/src/qgpgmeimportfromkeyserverjob.cpp index 2753b0b..0f19679 100644 --- a/lang/qt/src/qgpgmeimportfromkeyserverjob.cpp +++ b/lang/qt/src/qgpgmeimportfromkeyserverjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeimportfromkeyserverjob.h b/lang/qt/src/qgpgmeimportfromkeyserverjob.h index 8c93a41..f50dae0 100644 --- a/lang/qt/src/qgpgmeimportfromkeyserverjob.h +++ b/lang/qt/src/qgpgmeimportfromkeyserverjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeimportjob.cpp b/lang/qt/src/qgpgmeimportjob.cpp index 891c0f6..f125b12 100644 --- a/lang/qt/src/qgpgmeimportjob.cpp +++ b/lang/qt/src/qgpgmeimportjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeimportjob.h b/lang/qt/src/qgpgmeimportjob.h index 3858197..5a55fc9 100644 --- a/lang/qt/src/qgpgmeimportjob.h +++ b/lang/qt/src/qgpgmeimportjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmekeygenerationjob.cpp b/lang/qt/src/qgpgmekeygenerationjob.cpp index d286ed5..cba6b76 100644 --- a/lang/qt/src/qgpgmekeygenerationjob.cpp +++ b/lang/qt/src/qgpgmekeygenerationjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmekeygenerationjob.h b/lang/qt/src/qgpgmekeygenerationjob.h index 520ad4c..fb09b03 100644 --- a/lang/qt/src/qgpgmekeygenerationjob.h +++ b/lang/qt/src/qgpgmekeygenerationjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmekeylistjob.cpp b/lang/qt/src/qgpgmekeylistjob.cpp index a9cc5e1..49a3c03 100644 --- a/lang/qt/src/qgpgmekeylistjob.cpp +++ b/lang/qt/src/qgpgmekeylistjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmekeylistjob.h b/lang/qt/src/qgpgmekeylistjob.h index fd881d9..292f2bb 100644 --- a/lang/qt/src/qgpgmekeylistjob.h +++ b/lang/qt/src/qgpgmekeylistjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmelistallkeysjob.cpp b/lang/qt/src/qgpgmelistallkeysjob.cpp index 260e9d1..fd8bfc3 100644 --- a/lang/qt/src/qgpgmelistallkeysjob.cpp +++ b/lang/qt/src/qgpgmelistallkeysjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmelistallkeysjob.h b/lang/qt/src/qgpgmelistallkeysjob.h index 50747f4..310eabd 100644 --- a/lang/qt/src/qgpgmelistallkeysjob.h +++ b/lang/qt/src/qgpgmelistallkeysjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmenewcryptoconfig.cpp b/lang/qt/src/qgpgmenewcryptoconfig.cpp index 965069c..7303f10 100644 --- a/lang/qt/src/qgpgmenewcryptoconfig.cpp +++ b/lang/qt/src/qgpgmenewcryptoconfig.cpp @@ -5,12 +5,12 @@ Copyright (c) 2010 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmenewcryptoconfig.h b/lang/qt/src/qgpgmenewcryptoconfig.h index 03915d4..81b4cb4 100644 --- a/lang/qt/src/qgpgmenewcryptoconfig.h +++ b/lang/qt/src/qgpgmenewcryptoconfig.h @@ -5,12 +5,12 @@ Copyright (c) 2010 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmerefreshkeysjob.cpp b/lang/qt/src/qgpgmerefreshkeysjob.cpp index 67b0a14..53a9d2c 100644 --- a/lang/qt/src/qgpgmerefreshkeysjob.cpp +++ b/lang/qt/src/qgpgmerefreshkeysjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?vdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmerefreshkeysjob.h b/lang/qt/src/qgpgmerefreshkeysjob.h index bf4fbb2..da928f3 100644 --- a/lang/qt/src/qgpgmerefreshkeysjob.h +++ b/lang/qt/src/qgpgmerefreshkeysjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesecretkeyexportjob.cpp b/lang/qt/src/qgpgmesecretkeyexportjob.cpp index 3c330b0..f4ec698 100644 --- a/lang/qt/src/qgpgmesecretkeyexportjob.cpp +++ b/lang/qt/src/qgpgmesecretkeyexportjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?vdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesecretkeyexportjob.h b/lang/qt/src/qgpgmesecretkeyexportjob.h index 13b2e0d..c58e853 100644 --- a/lang/qt/src/qgpgmesecretkeyexportjob.h +++ b/lang/qt/src/qgpgmesecretkeyexportjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesignencryptjob.cpp b/lang/qt/src/qgpgmesignencryptjob.cpp index e601e6d..d19ab0f 100644 --- a/lang/qt/src/qgpgmesignencryptjob.cpp +++ b/lang/qt/src/qgpgmesignencryptjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesignencryptjob.h b/lang/qt/src/qgpgmesignencryptjob.h index bfdcbb6..bf1439c 100644 --- a/lang/qt/src/qgpgmesignencryptjob.h +++ b/lang/qt/src/qgpgmesignencryptjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesignjob.cpp b/lang/qt/src/qgpgmesignjob.cpp index 9d41dff..4e2312b 100644 --- a/lang/qt/src/qgpgmesignjob.cpp +++ b/lang/qt/src/qgpgmesignjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesignjob.h b/lang/qt/src/qgpgmesignjob.h index 95f117c..8ad35ed 100644 --- a/lang/qt/src/qgpgmesignjob.h +++ b/lang/qt/src/qgpgmesignjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesignkeyjob.cpp b/lang/qt/src/qgpgmesignkeyjob.cpp index 4478851..9a12f61 100644 --- a/lang/qt/src/qgpgmesignkeyjob.cpp +++ b/lang/qt/src/qgpgmesignkeyjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmesignkeyjob.h b/lang/qt/src/qgpgmesignkeyjob.h index aa3592a..6b610ac 100644 --- a/lang/qt/src/qgpgmesignkeyjob.h +++ b/lang/qt/src/qgpgmesignkeyjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeverifydetachedjob.cpp b/lang/qt/src/qgpgmeverifydetachedjob.cpp index 49e4064..8efef05 100644 --- a/lang/qt/src/qgpgmeverifydetachedjob.cpp +++ b/lang/qt/src/qgpgmeverifydetachedjob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeverifydetachedjob.h b/lang/qt/src/qgpgmeverifydetachedjob.h index 6312d0a..6f6257c 100644 --- a/lang/qt/src/qgpgmeverifydetachedjob.h +++ b/lang/qt/src/qgpgmeverifydetachedjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeverifyopaquejob.cpp b/lang/qt/src/qgpgmeverifyopaquejob.cpp index 95d55f6..b513f82 100644 --- a/lang/qt/src/qgpgmeverifyopaquejob.cpp +++ b/lang/qt/src/qgpgmeverifyopaquejob.cpp @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/qgpgmeverifyopaquejob.h b/lang/qt/src/qgpgmeverifyopaquejob.h index 434c329..2374cee 100644 --- a/lang/qt/src/qgpgmeverifyopaquejob.h +++ b/lang/qt/src/qgpgmeverifyopaquejob.h @@ -5,12 +5,12 @@ Copyright (c) 2004,2007,2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/refreshkeysjob.h b/lang/qt/src/refreshkeysjob.h index ca2ee5c..d0bc51f 100644 --- a/lang/qt/src/refreshkeysjob.h +++ b/lang/qt/src/refreshkeysjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/signencryptjob.h b/lang/qt/src/signencryptjob.h index 19eadf1..4818d2a 100644 --- a/lang/qt/src/signencryptjob.h +++ b/lang/qt/src/signencryptjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/signjob.h b/lang/qt/src/signjob.h index 1a5e97b..cf5c628 100644 --- a/lang/qt/src/signjob.h +++ b/lang/qt/src/signjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/signkeyjob.h b/lang/qt/src/signkeyjob.h index 9786897..b5efc01 100644 --- a/lang/qt/src/signkeyjob.h +++ b/lang/qt/src/signkeyjob.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/specialjob.h b/lang/qt/src/specialjob.h index c0076c2..788371e 100644 --- a/lang/qt/src/specialjob.h +++ b/lang/qt/src/specialjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/threadedjobmixin.cpp b/lang/qt/src/threadedjobmixin.cpp index efe9668..cd6ab5f 100644 --- a/lang/qt/src/threadedjobmixin.cpp +++ b/lang/qt/src/threadedjobmixin.cpp @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/threadedjobmixin.h b/lang/qt/src/threadedjobmixin.h index c6c9685..62d7f1c 100644 --- a/lang/qt/src/threadedjobmixin.h +++ b/lang/qt/src/threadedjobmixin.h @@ -5,12 +5,12 @@ Copyright (c) 2008 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/verifydetachedjob.h b/lang/qt/src/verifydetachedjob.h index 6c237ab..fc5bc69 100644 --- a/lang/qt/src/verifydetachedjob.h +++ b/lang/qt/src/verifydetachedjob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/lang/qt/src/verifyopaquejob.h b/lang/qt/src/verifyopaquejob.h index ae9bc89..f064049 100644 --- a/lang/qt/src/verifyopaquejob.h +++ b/lang/qt/src/verifyopaquejob.h @@ -5,12 +5,12 @@ Copyright (c) 2004, 2007 Klar?lvdalens Datakonsult AB Copyright (c) 2016 Intevation GmbH - Libkleopatra is free software; you can redistribute it and/or + QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - Libkleopatra is distributed in the hope that it will be useful, + QGpgME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. commit cd267791e9bd73505a2a1ea90c85df988e153c19 Author: Andre Heinecke Date: Fri May 6 14:17:15 2016 +0200 Add maybe mode for langs and default to it * configure.ac (languages): Warn and disable langs for which requirements are not met. -- If the languages are explicitly enabled on the command line missing dependencies for them will still lead to errors. diff --git a/configure.ac b/configure.ac index 2dcec49..798a396 100644 --- a/configure.ac +++ b/configure.ac @@ -255,45 +255,83 @@ AC_ARG_ENABLE([languages], [enabled_languages=`echo $enableval | \ tr ',:' ' ' | tr '[A-Z]' '[a-z]' | \ sed 's/c++/cpp/'`], - [enabled_languages="$default_languages"]) + [enabled_languages="maybe"]) if test "x$enabled_languages" = "x" \ -o "$enabled_languages" = "no"; then enabled_languages= fi + +# If languages are explicitly set missing requirements +# for the languages are treated as errors otherwise +# there will be a warning. +explicit_languages=1 +if test "x$enabled_languages" = "xmaybe"; then + explicit_languages=0 + enabled_languages="$default_languages" +fi + for language in $enabled_languages; do LIST_MEMBER($language, $available_languages) if test "$found" = "0"; then AC_MSG_ERROR([unsupported language binding specified]) fi done + + + # Enable C++ 11 if cpp language is requested LIST_MEMBER("cpp", $enabled_languages) if test "$found" = "1"; then AX_CXX_COMPILE_STDCXX(11, noext, optional) + if test "$HAVE_CXX11" != "1"; then + if test "$explicit_languages" = "1"; then + AC_MSG_ERROR([[ +*** +*** A compiler with c++11 support is required for the c++ binding. +***]]) + else + enabled_languages=$(echo $enabled_languages | sed 's/cpp//') + enabled_languages=$(echo $enabled_languages | sed 's/qt//') + AC_MSG_WARN([[ +*** +*** No c++11 support detected. C++ and Qt bindings will be disabled. +***]]) + fi + fi fi # Check that if qt is enabled cpp also is enabled LIST_MEMBER("qt", $enabled_languages) if test "$found" = "1"; then - LIST_MEMBER("cpp", $enabled_languages) - if test "$found" = "0"; then - AC_MSG_ERROR([qt binding depends on cpp language binding]) - fi - FIND_QT - if test "$have_qt5_libs" != "yes"; then - AC_MSG_ERROR([[ - *** - *** Qt5 (Qt5Core) is required for qt binding. - ***]]) - fi - - AC_CHECK_PROGS([DOXYGEN], [doxygen]) - if test -z "$DOXYGEN"; - then AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.]) - fi - # Make sure that qt comes after cpp - enabled_languages=`echo $enabled_languages | sed 's/qt//'` - enabled_languages=`echo $enabled_languages qt` + # We need to ensure that in the langauge order qt comes after cpp + # so we remove qt first and explicitly add it as last list member. + enabled_languages=$(echo $enabled_languages | sed 's/qt//') + LIST_MEMBER("cpp", $enabled_languages) + if test "$found" = "0"; then + AC_MSG_ERROR([qt binding depends on cpp language binding]) + fi + FIND_QT + if test "$have_qt5_libs" != "yes"; then + if test "$explicit_languages" = "1"; then + AC_MSG_ERROR([[ +*** +*** Qt5 (Qt5Core) is required for qt binding. +***]]) + else + AC_MSG_WARN([[ +*** +*** Qt5 (Qt5Core) not found Qt Binding will be disabled. +***]]) + fi + else + enabled_languages=`echo $enabled_languages qt` + + AC_CHECK_PROGS([DOXYGEN], [doxygen]) + if test -z "$DOXYGEN"; + # This is not highlighted becase it's not really important. + then AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.]) + fi + fi fi AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) commit 3fad1216770f446a89801d842aa8667356a5ec95 Author: Andre Heinecke Date: Fri May 6 13:19:18 2016 +0200 Cpp: Handle PINENTRY_LAUNCHED status line * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse): Add GPGME_STATUS_PINENTRY_LAUNCHED. -- PINENTRY_LAUNCHED needs no response in any Job. This fixes Jobs which errored out on unknown status lines. diff --git a/lang/cpp/src/editinteractor.cpp b/lang/cpp/src/editinteractor.cpp index edb1ac8..c05ccd6 100644 --- a/lang/cpp/src/editinteractor.cpp +++ b/lang/cpp/src/editinteractor.cpp @@ -210,6 +210,7 @@ bool EditInteractor::needsNoResponse(unsigned int status) const case GPGME_STATUS_USERID_HINT: case GPGME_STATUS_SIGEXPIRED: case GPGME_STATUS_KEYEXPIRED: + case GPGME_STATUS_PINENTRY_LAUNCHED: return true; default: return false; ----------------------------------------------------------------------- Summary of changes: configure.ac | 81 +++++++++++++++++++++------- lang/cpp/src/editinteractor.cpp | 1 + lang/qt/README | 32 +++++++---- lang/qt/src/abstractimportjob.h | 4 +- lang/qt/src/adduseridjob.h | 4 +- lang/qt/src/changeexpiryjob.h | 4 +- lang/qt/src/changeownertrustjob.h | 4 +- lang/qt/src/changepasswdjob.h | 4 +- lang/qt/src/cryptoconfig.h | 4 +- lang/qt/src/decryptjob.h | 4 +- lang/qt/src/decryptverifyjob.h | 4 +- lang/qt/src/deletejob.h | 4 +- lang/qt/src/downloadjob.h | 4 +- lang/qt/src/encryptjob.h | 4 +- lang/qt/src/exportjob.h | 4 +- lang/qt/src/hierarchicalkeylistjob.h | 4 +- lang/qt/src/importfromkeyserverjob.h | 4 +- lang/qt/src/importjob.h | 4 +- lang/qt/src/job.cpp | 4 +- lang/qt/src/job.h | 4 +- lang/qt/src/keygenerationjob.h | 4 +- lang/qt/src/keylistjob.h | 4 +- lang/qt/src/listallkeysjob.h | 4 +- lang/qt/src/multideletejob.h | 4 +- lang/qt/src/qgpgmeadduseridjob.cpp | 4 +- lang/qt/src/qgpgmeadduseridjob.h | 4 +- lang/qt/src/qgpgmebackend.cpp | 4 +- lang/qt/src/qgpgmebackend.h | 4 +- lang/qt/src/qgpgmechangeexpiryjob.cpp | 4 +- lang/qt/src/qgpgmechangeexpiryjob.h | 4 +- lang/qt/src/qgpgmechangeownertrustjob.cpp | 4 +- lang/qt/src/qgpgmechangeownertrustjob.h | 4 +- lang/qt/src/qgpgmechangepasswdjob.cpp | 4 +- lang/qt/src/qgpgmechangepasswdjob.h | 4 +- lang/qt/src/qgpgmedecryptjob.cpp | 4 +- lang/qt/src/qgpgmedecryptjob.h | 4 +- lang/qt/src/qgpgmedecryptverifyjob.cpp | 4 +- lang/qt/src/qgpgmedecryptverifyjob.h | 4 +- lang/qt/src/qgpgmedeletejob.cpp | 4 +- lang/qt/src/qgpgmedeletejob.h | 4 +- lang/qt/src/qgpgmedownloadjob.cpp | 4 +- lang/qt/src/qgpgmedownloadjob.h | 4 +- lang/qt/src/qgpgmeencryptjob.cpp | 4 +- lang/qt/src/qgpgmeencryptjob.h | 4 +- lang/qt/src/qgpgmeexportjob.cpp | 4 +- lang/qt/src/qgpgmeexportjob.h | 4 +- lang/qt/src/qgpgmeimportfromkeyserverjob.cpp | 4 +- lang/qt/src/qgpgmeimportfromkeyserverjob.h | 4 +- lang/qt/src/qgpgmeimportjob.cpp | 4 +- lang/qt/src/qgpgmeimportjob.h | 4 +- lang/qt/src/qgpgmekeygenerationjob.cpp | 4 +- lang/qt/src/qgpgmekeygenerationjob.h | 4 +- lang/qt/src/qgpgmekeylistjob.cpp | 4 +- lang/qt/src/qgpgmekeylistjob.h | 4 +- lang/qt/src/qgpgmelistallkeysjob.cpp | 4 +- lang/qt/src/qgpgmelistallkeysjob.h | 4 +- lang/qt/src/qgpgmenewcryptoconfig.cpp | 4 +- lang/qt/src/qgpgmenewcryptoconfig.h | 4 +- lang/qt/src/qgpgmerefreshkeysjob.cpp | 4 +- lang/qt/src/qgpgmerefreshkeysjob.h | 4 +- lang/qt/src/qgpgmesecretkeyexportjob.cpp | 4 +- lang/qt/src/qgpgmesecretkeyexportjob.h | 4 +- lang/qt/src/qgpgmesignencryptjob.cpp | 4 +- lang/qt/src/qgpgmesignencryptjob.h | 4 +- lang/qt/src/qgpgmesignjob.cpp | 4 +- lang/qt/src/qgpgmesignjob.h | 4 +- lang/qt/src/qgpgmesignkeyjob.cpp | 4 +- lang/qt/src/qgpgmesignkeyjob.h | 4 +- lang/qt/src/qgpgmeverifydetachedjob.cpp | 4 +- lang/qt/src/qgpgmeverifydetachedjob.h | 4 +- lang/qt/src/qgpgmeverifyopaquejob.cpp | 4 +- lang/qt/src/qgpgmeverifyopaquejob.h | 4 +- lang/qt/src/refreshkeysjob.h | 4 +- lang/qt/src/signencryptjob.h | 4 +- lang/qt/src/signjob.h | 4 +- lang/qt/src/signkeyjob.h | 4 +- lang/qt/src/specialjob.h | 4 +- lang/qt/src/threadedjobmixin.cpp | 4 +- lang/qt/src/threadedjobmixin.h | 4 +- lang/qt/src/verifydetachedjob.h | 4 +- lang/qt/src/verifyopaquejob.h | 4 +- 81 files changed, 239 insertions(+), 187 deletions(-) hooks/post-receive -- GnuPG Made Easy http://git.gnupg.org From cvs at cvs.gnupg.org Fri May 6 16:11:16 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Fri, 06 May 2016 16:11:16 +0200 Subject: [git] gnupg-doc - branch, master, updated. adce0202b12c680ee3e64e2f51760608b53d5657 Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via adce0202b12c680ee3e64e2f51760608b53d5657 (commit) from 5e326105a760d04f8db6f9e94e54b8ee0d15537e (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 adce0202b12c680ee3e64e2f51760608b53d5657 Author: Werner Koch Date: Fri May 6 16:10:24 2016 +0200 drafts: Fix content-type contradiction in openpgp-webkey-service. Reported-by: Damien Goutte-Gattat diff --git a/misc/id/openpgp-webkey-service/middle.mkd b/misc/id/openpgp-webkey-service/middle.mkd index f306322..2de39e9 100644 --- a/misc/id/openpgp-webkey-service/middle.mkd +++ b/misc/id/openpgp-webkey-service/middle.mkd @@ -93,10 +93,10 @@ may be revoked or expired - it is up to the client to handle such conditions. The server MUST also accept a HEAD method so that a client may only check for the existence of a key. -The server SHOULD return "application/pgp-key" as the content-type for -the data but clients MUST also accept "application/octet-string" as -content-type. The server MUST NOT return an ASCII armored version of -the key. +The server SHOULD return "application/octet-string" as the +content-type for the data but clients MAY also accept any other +appropriate content-type. The server MUST NOT return an ASCII armored +version of the key. # Web Key Directory Update Protocol @@ -119,10 +119,8 @@ Directory, she performs the following steps: https://example.org/.well-known/openpgpkey/submission-address 2. She sends her key using SMTP (or any other transport mechanism) to - the provider using the submission address. The content-type SHOULD - be "application/pgp-key" and the key being a binary attachment - (which is then likely base64 encoded). Note that the OpenPGP ASCII - armor is not used. + the provider using the submission address and key format as + specified by PGP/MIME. 3. The provider checks that the received key has a User ID which - matches an account name of the provider, ----------------------------------------------------------------------- Summary of changes: misc/id/openpgp-webkey-service/middle.mkd | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Sat May 7 09:09:57 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Sat, 07 May 2016 09:09:57 +0200 Subject: [git] GPG-ERROR - branch, master, updated. libgpg-error-1.22-2-gdfcd58f Message-ID: 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 "Error codes used by GnuPG et al.". The branch, master has been updated via dfcd58fd3f58e548062b91bd6e20e27cbf4da18d (commit) from c780f657c03baf93c3a38f029f9b1a5d135a9ce4 (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 dfcd58fd3f58e548062b91bd6e20e27cbf4da18d Author: Werner Koch Date: Sat May 7 09:09:04 2016 +0200 syscfg: Add a powerpc and a tilgegx architecture. * src/syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h: New. * src/syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h: New. * src/Makefile.am (lock_obj_pub): Add them. -- Debian-bug-id: 823630, 823631 Signed-off-by: Werner Koch diff --git a/src/Makefile.am b/src/Makefile.am index 1d88608..5623aff 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -63,6 +63,7 @@ lock_obj_pub = \ syscfg/lock-obj-pub.powerpc-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc64le-unknown-linux-gnu.h \ + syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h \ syscfg/lock-obj-pub.s390x-ibm-linux-gnu.h \ syscfg/lock-obj-pub.sh4-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sparc-unknown-linux-gnu.h \ @@ -71,6 +72,7 @@ lock_obj_pub = \ syscfg/lock-obj-pub.x86_64-pc-linux-gnu.h \ syscfg/lock-obj-pub.x86_64-pc-linux-gnux32.h \ syscfg/lock-obj-pub.x86_64-pc-linux-musl.h \ + syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mingw32.h diff --git a/src/syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h b/src/syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h new file mode 100644 index 0000000..c53413b --- /dev/null +++ b/src/syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h @@ -0,0 +1,23 @@ +## lock-obj-pub.powerpc-unknown-linux-gnuspe.h +## File created by gen-posix-lock-obj - DO NOT EDIT +## To be included by mkheader into gpg-error.h + +typedef struct +{ + long _vers; + union { + volatile char _priv[24]; + long _x_align; + long *_xp_align; + } u; +} gpgrt_lock_t; + +#define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0}}} +## +## Local Variables: +## mode: c +## buffer-read-only: t +## End: +## diff --git a/src/syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h b/src/syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h new file mode 100644 index 0000000..b99ea32 --- /dev/null +++ b/src/syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h @@ -0,0 +1,25 @@ +## lock-obj-pub.tilegx-unknown-linux-gnu.h +## File created by gen-posix-lock-obj - DO NOT EDIT +## To be included by mkheader into gpg-error.h + +typedef struct +{ + long _vers; + union { + volatile char _priv[40]; + long _x_align; + long *_xp_align; + } u; +} gpgrt_lock_t; + +#define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0, \ + 0,0,0,0,0,0,0,0}}} +## +## Local Variables: +## mode: c +## buffer-read-only: t +## End: +## ----------------------------------------------------------------------- Summary of changes: src/Makefile.am | 2 ++ ...wn-linux-gnueabihf.h => lock-obj-pub.powerpc-unknown-linux-gnuspe.h} | 2 +- ...ub.s390x-ibm-linux-gnu.h => lock-obj-pub.tilegx-unknown-linux-gnu.h} | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) copy src/syscfg/{lock-obj-pub.arm-unknown-linux-gnueabihf.h => lock-obj-pub.powerpc-unknown-linux-gnuspe.h} (90%) copy src/syscfg/{lock-obj-pub.s390x-ibm-linux-gnu.h => lock-obj-pub.tilegx-unknown-linux-gnu.h} (93%) hooks/post-receive -- Error codes used by GnuPG et al. http://git.gnupg.org From cvs at cvs.gnupg.org Mon May 9 08:06:05 2016 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Mon, 09 May 2016 08:06:05 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.12-2-gff870d5 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via ff870d59f067d3c5415e231c02a50d5dceac7e48 (commit) from c3db6f58f7b0f02e10c3bf9fb53333026909b08f (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 ff870d59f067d3c5415e231c02a50d5dceac7e48 Author: NIIBE Yutaka Date: Mon May 9 15:05:29 2016 +0900 po: Update Japanese translation. Signed-off-by: NIIBE Yutaka diff --git a/po/ja.po b/po/ja.po index e138ede..feae081 100644 --- a/po/ja.po +++ b/po/ja.po @@ -4,13 +4,13 @@ # IIDA Yosiaki , 1999, 2000, 2002, 2003, 2004. # Yoshihiro Kajiki , 1999. # Takashi P.KATOH, 2002. -# NIIBE Yutaka , 2013, 2014, 2015. +# NIIBE Yutaka , 2013, 2014, 2015, 2016. # msgid "" msgstr "" -"Project-Id-Version: gnupg 2.1.10\n" +"Project-Id-Version: gnupg 2.1.12\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2015-12-21 21:21+0900\n" +"PO-Revision-Date: 2016-05-09 14:44+0900\n" "Last-Translator: NIIBE Yutaka \n" "Language-Team: none\n" "Language: ja\n" @@ -361,10 +361,8 @@ msgstr "?????????\"trusted\"??????????? msgid "allow presetting passphrase" msgstr "???????????????" -#, fuzzy -#| msgid "allow caller to override the pinentry" msgid "disallow caller to override the pinentry" -msgstr "pinentry??????????????????" +msgstr "pinentry???????????????????" msgid "allow passphrase to be prompted through Emacs" msgstr "Emacs?????????????????????" @@ -449,10 +447,9 @@ msgstr "??????'%s'????????: %s\n" msgid "directory '%s' created\n" msgstr "??????'%s'????????\n" -#, fuzzy, c-format -#| msgid "Warning: unsafe permissions on %s \"%s\"\n" +#, c-format msgid "can't set permissions of '%s': %s\n" -msgstr "??: '%s'???????? \"%s\"\n" +msgstr "'%s'???????????: %s\n" #, c-format msgid "stat() failed for '%s': %s\n" @@ -709,10 +706,9 @@ msgstr "??????????????: %s\n" msgid "error forking process: %s\n" msgstr "????fork???: %s\n" -#, fuzzy, c-format -#| msgid "waiting for process %d to terminate failed: %s\n" +#, c-format msgid "waiting for processes to terminate failed: %s\n" -msgstr "????%d????????: %s\n" +msgstr "????????????: %s\n" #, c-format msgid "error running '%s': probably not installed\n" @@ -750,10 +746,9 @@ msgstr "?????????\n" msgid "problem with the agent\n" msgstr "?????????\n" -#, fuzzy, c-format -#| msgid "problem with the agent: %s\n" +#, c-format msgid "problem with the agent (unexpected response \"%s\")\n" -msgstr "?????????: %s\n" +msgstr "????????? (??????? \"%s\")\n" #, c-format msgid "can't disable core dumps: %s\n" @@ -1154,10 +1149,9 @@ msgstr "" "?????quoted printable?????????????????MTA???????" "???\n" -#, fuzzy, c-format -#| msgid "not human readable" +#, c-format msgid "[ not human readable (%zu bytes: %s%s) ]" -msgstr "????????" +msgstr "[ ???????? (%zu???: %s%s) ]" msgid "" "a notation name must have only printable characters or spaces, and end with " @@ -1174,18 +1168,12 @@ msgstr "???????????????'@'???????? msgid "a notation value must not use any control characters\n" msgstr "????????????????????\n" -#, fuzzy -#| msgid "a notation name must not contain more than one '@' character\n" msgid "a notation name may not contain an '=' character\n" -msgstr "???????????????'@'????????????\n" +msgstr "????????'='?????????????\n" -#, fuzzy -#| msgid "" -#| "a notation name must have only printable characters or spaces, and end " -#| "with an '='\n" msgid "a notation name must have only printable characters or spaces\n" msgstr "" -"?????????????????????'='?????????????\n" +"?????????????????????????????\n" msgid "WARNING: invalid notation data found\n" msgstr "*??*: ???????????\n" @@ -1197,19 +1185,17 @@ msgstr "????%s??????????????????? msgid "Enter passphrase: " msgstr "?????????: " -#, fuzzy, c-format -#| msgid "error creating keyring '%s': %s\n" +#, c-format msgid "error getting version from '%s': %s\n" -msgstr "????'%s'??????: %s\n" +msgstr "%s'????????????: %s\n" #, c-format msgid "server '%s' is older than us (%s < %s)" -msgstr "" +msgstr "???'%s'??????????(%s < %s)" -#, fuzzy, c-format -#| msgid "WARNING: %s overrides %s\n" +#, c-format msgid "WARNING: %s\n" -msgstr "*??*: %s?%s????\n" +msgstr "*??*: %s\n" #, c-format msgid "OpenPGP card not available: %s\n" @@ -1692,24 +1678,18 @@ msgstr "[???ID????????]" msgid "(check argument of option '%s')\n" msgstr "(?????'%s'??????????)\n" -#, fuzzy, c-format -#| msgid "" -#| "Warning: value '%s' for option '%s' should be a long key ID or a " -#| "fingerprint\n" +#, c-format msgid "Warning: '%s' should be a long key ID or a fingerprint\n" msgstr "" -"??: ?'%s'(?????'%s'????)????ID???????????????" -"???\n" +"??: '%s'????ID??????????????????\n" -#, fuzzy, c-format -#| msgid "error closing %s: %s\n" +#, c-format msgid "error looking up: %s\n" -msgstr "'%s'?????????: %s\n" +msgstr "??????: %s\n" -#, fuzzy, c-format -#| msgid "error searching the keyring: %s\n" +#, c-format msgid "Warning: %s appears in the keyring %d times\n" -msgstr "?????????: %s\n" +msgstr "??: %s??????%d??????\n" #, c-format msgid "automatically retrieved '%s' via %s\n" @@ -1726,19 +1706,17 @@ msgstr "???????????????" msgid "secret key \"%s\" not found: %s\n" msgstr "???\"%s\"????????: %s\n" -#, fuzzy, c-format -#| msgid "using \"%s\" as default secret key\n" +#, c-format msgid "Warning: not using '%s' as default key: %s\n" -msgstr "????????????\"%s\"?????\n" +msgstr "??: ???????????? '%s' ??????: %s\n" -#, fuzzy, c-format -#| msgid "using \"%s\" as default secret key\n" +#, c-format msgid "using \"%s\" as default secret key for signing\n" -msgstr "????????????\"%s\"?????\n" +msgstr "????????????????\"%s\"?????\n" #, c-format msgid "all values passed to '%s' ignored\n" -msgstr "" +msgstr "'%s'??????????????????\n" #, c-format msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n" @@ -1859,10 +1837,8 @@ msgstr "???????????????" msgid "run in server mode" msgstr "??????????" -#, fuzzy -#| msgid "|VALUE|set the TOFU policy for a key (good, unknown, bad, ask, auto)" msgid "|VALUE|set the TOFU policy for a key" -msgstr "|VALUE|TOFU???????????(good, unknown, bad, ask, auto)" +msgstr "|VALUE|TOFU???????????" msgid "create ascii armored output" msgstr "ASCII????????" @@ -2333,10 +2309,9 @@ msgstr "????????????????: %s\n" msgid "key export failed: %s\n" msgstr "???????????????: %s\n" -#, fuzzy, c-format -#| msgid "key export failed: %s\n" +#, c-format msgid "export as ssh key failed: %s\n" -msgstr "???????????????: %s\n" +msgstr "ssh??????????????????: %s\n" #, c-format msgid "keyserver search failed: %s\n" @@ -2811,56 +2786,47 @@ msgstr "[??]" msgid "[self-signature]" msgstr "[????]" -#, fuzzy, c-format -#| msgid "key %s: unsupported public key algorithm\n" +#, c-format msgid "can't check signature with unsupported public-key algorithm (%d): %s.\n" -msgstr "?%s: ????????????????????\n" +msgstr "??????????????????(%d)???????????: %s.\n" -#, fuzzy, c-format -#| msgid "card does not support digest algorithm %s\n" +#, c-format msgid "" "can't check signature with unsupported message-digest algorithm %d: %s.\n" -msgstr "????????????????? %s ???????????\n" +msgstr "?????????????????????(%d)???????????: %s.\n" -#, fuzzy -#| msgid "Good signature from" msgid " (reordered signatures follow)" -msgstr "?????" +msgstr "(?????????????)" -#, fuzzy, c-format -#| msgid "key %s: %s\n" +#, c-format msgid "key %s:\n" -msgstr "? %s: %s\n" +msgstr "? %s:\n" -#, fuzzy, c-format -#| msgid "User ID \"%s\": %d signature removed\n" +#, c-format msgid "%d duplicate signature removed\n" msgid_plural "%d duplicate signatures removed\n" -msgstr[0] "???ID \"%s\": %d ???????????\n" +msgstr[0] "%d????????????????\n" -#, fuzzy, c-format -#| msgid "1 signature not checked due to a missing key\n" +#, c-format msgid "%d signature not checked due to a missing key\n" msgid_plural "%d signatures not checked due to missing keys\n" -msgstr[0] "??????1???????????\n" +msgstr[0] "??????%d???????????\n" -#, fuzzy, c-format -#| msgid "%d bad signatures\n" +#, c-format msgid "%d bad signature\n" msgid_plural "%d bad signatures\n" -msgstr[0] "?????%d?\n" +msgstr[0] "%d???????\n" -#, fuzzy, c-format -#| msgid "Good signature from" +#, c-format msgid "%d signature reordered\n" msgid_plural "%d signatures reordered\n" -msgstr[0] "?????" +msgstr[0] "%d???????\n" #, c-format msgid "" "Warning: errors found and only checked self-signatures, run '%s' to check " "all signatures.\n" -msgstr "" +msgstr "??: ????????????????????'%s'???????????????????\n" msgid "" "Please decide how far you trust this user to correctly verify other users' " @@ -3296,10 +3262,9 @@ msgstr "\"%s\"?????????????????\n" msgid "\"%s\" is not the primary fingerprint\n" msgstr "\"%s\" ???????????????????????\n" -#, fuzzy, c-format -#| msgid "read error in '%s': %s\n" +#, c-format msgid "Invalid user ID '%s': %s\n" -msgstr "'%s'????????: %s\n" +msgstr "??????ID '%s': %s\n" msgid "No matching user IDs." msgstr "????????ID???????" @@ -3426,8 +3391,7 @@ msgstr "??????????????? (y/N/q)" msgid "Really delete this self-signature? (y/N)" msgstr "????????????????? (y/N)" -#, fuzzy, c-format -#| msgid "Deleted %d signature.\n" +#, c-format msgid "Deleted %d signature.\n" msgid_plural "Deleted %d signatures.\n" msgstr[0] "%d????????????\n" @@ -3442,8 +3406,7 @@ msgstr "??" msgid "User ID \"%s\" compacted: %s\n" msgstr "???ID \"%s\" ?????????????: %s\n" -#, fuzzy, c-format -#| msgid "User ID \"%s\": %d signature removed\n" +#, c-format msgid "User ID \"%s\": %d signature removed\n" msgid_plural "User ID \"%s\": %d signatures removed\n" msgstr[0] "???ID \"%s\": %d ???????????\n" @@ -4066,23 +4029,20 @@ msgstr "???????????: " msgid "Signature notation: " msgstr "????: " -#, fuzzy, c-format -#| msgid "%d good signatures\n" +#, c-format msgid "%d good signature\n" msgid_plural "%d good signatures\n" msgstr[0] "?????%d?\n" -#, fuzzy, c-format -#| msgid "1 signature not checked due to an error\n" +#, c-format msgid "%d signature not checked due to an error\n" msgid_plural "%d signatures not checked due to errors\n" -msgstr[0] "??????1???????????\n" +msgstr[0] "??????%d???????????\n" -#, fuzzy, c-format -#| msgid "Warning: %lu key(s) skipped due to their large size\n" +#, c-format msgid "Warning: %lu key skipped due to its large size\n" msgid_plural "Warning: %lu keys skipped due to their large sizes\n" -msgstr[0] "*??*: %lu ???????????????????\n" +msgstr[0] "*??*: %lu?????????????????????\n" msgid "Keyring" msgstr "????" @@ -4115,23 +4075,20 @@ msgstr " ????????? =" msgid "caching keyring '%s'\n" msgstr "????'%s'?????????\n" -#, fuzzy, c-format -#| msgid "%lu keys cached so far (%lu signatures)\n" +#, c-format msgid "%lu keys cached so far (%lu signature)\n" msgid_plural "%lu keys cached so far (%lu signatures)\n" -msgstr[0] "%lu??????????? (%lu????)\n" +msgstr[0] "????%lu????????????? (%lu????)\n" -#, fuzzy, c-format -#| msgid "flush the cache" +#, c-format msgid "%lu key cached" msgid_plural "%lu keys cached" -msgstr[0] "??????????????" +msgstr[0] "%lu?????????????" -#, fuzzy, c-format -#| msgid "1 bad signature\n" +#, c-format msgid " (%lu signature)\n" msgid_plural " (%lu signatures)\n" -msgstr[0] "?????1?\n" +msgstr[0] " (%lu???????)\n" #, c-format msgid "%s: keyring created\n" @@ -4172,8 +4129,7 @@ msgstr "??????????????? (us %d!=handler %d)\n" msgid "\"%s\" not a key ID: skipping\n" msgstr "\"%s\"?ID???????: ???????\n" -#, fuzzy, c-format -#| msgid "refreshing %d keys from %s\n" +#, c-format msgid "refreshing %d key from %s\n" msgid_plural "refreshing %d keys from %s\n" msgstr[0] "%d????%s????\n" @@ -4200,10 +4156,8 @@ msgstr "?%s?%s?????%s???\n" msgid "requesting key %s from %s\n" msgstr "?%s?%s???\n" -#, fuzzy -#| msgid "invalid keyserver options\n" msgid "no keyserver known\n" -msgstr "???????????????\n" +msgstr "???????????\n" #, c-format msgid "sending key %s to %s\n" @@ -4414,18 +4368,16 @@ msgstr "*??*: ????????????? %s ?????? msgid "Note: signatures using the %s algorithm are rejected\n" msgstr "??: ?????? %s ??????????????\n" -#, fuzzy, c-format -#| msgid "%s:%u: read error: %s\n" +#, c-format msgid "(reported error: %s)\n" -msgstr "%s:%u: ???????: %s\n" +msgstr "(????????: %s)\n" -#, fuzzy, c-format -#| msgid "read error in '%s': %s\n" +#, c-format msgid "(reported error: %s <%s>)\n" -msgstr "'%s'????????: %s\n" +msgstr "(????????: %s <%s>)\n" msgid "(further info: " -msgstr "" +msgstr "(???????: " #, c-format msgid "%s:%d: deprecated option \"%s\"\n" @@ -4814,10 +4766,9 @@ msgstr "%s: ????: ??????????\n" msgid "%s: skipped: public key already present\n" msgstr "%s: ????: ??????????\n" -#, fuzzy, c-format -#| msgid "can't connect to '%s': %s\n" +#, c-format msgid "can't encrypt to '%s'\n" -msgstr "'%s'????????: %s\n" +msgstr "'%s'?????????\n" #, c-format msgid "option '%s' given, but no valid default keys given\n" @@ -4959,13 +4910,10 @@ msgid "" "declare that a key shall not anymore be used. It is not possible\n" "to retract such a revocation certificate once it has been published." msgstr "" +"?????? \"??????\" ??????????????????\n" +"??????????????????????????????????\n" +"?????????????" -#, fuzzy -#| msgid "" -#| "Use it to revoke this key in case of a compromise or loss of\n" -#| "the secret key. However, if the secret key is still accessible,\n" -#| "it is better to generate a new revocation certificate and give\n" -#| "a reason for the revocation." msgid "" "Use it to revoke this key in case of a compromise or loss of\n" "the secret key. However, if the secret key is still accessible,\n" @@ -4975,26 +4923,21 @@ msgid "" msgstr "" "???????????????????????????????????\n" "???????????????????????????????????\n" -"??????????????????" +"??????????????????????GnuPG??????" +"gpg???? \"--gen-revoke\"???????????" -#, fuzzy -#| msgid "" -#| "To avoid an accidental use of this file, a colon has been inserted\n" -#| "before the 5 dashes below. Remove this colon with a text editor\n" -#| "before making use of this revocation certificate." msgid "" "To avoid an accidental use of this file, a colon has been inserted\n" "before the 5 dashes below. Remove this colon with a text editor\n" "before importing and publishing this revocation certificate." msgstr "" -"????????????????????????????5??????????" -"??????\n" -"??????????????????????????????????????" +"????????????????????????????5??????\n" +"??????????????????????????????????\n" +"???????????????????????" -#, fuzzy, c-format -#| msgid "Revocation certificate created.\n" +#, c-format msgid "revocation certificate stored as '%s.rev'\n" -msgstr "?????????\n" +msgstr "?????? '%s.rev' ????????\n" #, c-format msgid "secret key \"%s\" not found\n" @@ -5088,34 +5031,28 @@ msgstr "???%s???????\n" msgid "WARNING: signing subkey %s has an invalid cross-certification\n" msgstr "*??*: ?????????????%s?????\n" -#, fuzzy, c-format -#| msgid "public key %s is %lu second newer than the signature\n" +#, c-format msgid "public key %s is %lu second newer than the signature\n" msgid_plural "public key %s is %lu seconds newer than the signature\n" -msgstr[0] "???%s???????%lu????????\n" +msgstr[0] "???%s???????%lu?????????\n" -#, fuzzy, c-format -#| msgid "public key %s is %lu second newer than the signature\n" +#, c-format msgid "public key %s is %lu day newer than the signature\n" msgid_plural "public key %s is %lu days newer than the signature\n" -msgstr[0] "???%s???????%lu????????\n" +msgstr[0] "???%s???????%lu?????????\n" -#, fuzzy, c-format -#| msgid "" -#| "key %s was created %lu second in the future (time warp or clock problem)\n" +#, c-format msgid "" "key %s was created %lu second in the future (time warp or clock problem)\n" msgid_plural "" "key %s was created %lu seconds in the future (time warp or clock problem)\n" -msgstr[0] "?%s?%lu????????? (??????????????)\n" +msgstr[0] "?%s?%lu?????????? (??????????????)\n" -#, fuzzy, c-format -#| msgid "" -#| "key %s was created %lu second in the future (time warp or clock problem)\n" +#, c-format msgid "key %s was created %lu day in the future (time warp or clock problem)\n" msgid_plural "" "key %s was created %lu days in the future (time warp or clock problem)\n" -msgstr[0] "?%s?%lu????????? (??????????????)\n" +msgstr[0] "?%s?%lu?????????? (??????????????)\n" #, c-format msgid "Note: signature key %s expired %s\n" @@ -5334,204 +5271,194 @@ msgstr "%d??????????????????????\n" msgid "input line longer than %d characters\n" msgstr "???????%d?????????\n" -#, fuzzy, c-format -#| msgid "error sending standard options: %s\n" +#, c-format msgid "error beginning transaction on TOFU database: %s\n" -msgstr "?????????????: %s\n" +msgstr "TOFU????????????????????: %s\n" #, c-format msgid "error committing transaction on TOFU database: %s\n" -msgstr "" +msgstr "TOFU???????????????????????: %s\n" #, c-format msgid "error rolling back transaction on TOFU database: %s\n" -msgstr "" +msgstr "TOFU??????????????????????????: %s\n" -#, fuzzy, c-format -#| msgid "unsupported algorithm: %s" +#, c-format msgid "unsupported TOFU database version: %s\n" -msgstr "????????????????: %s" +msgstr "??????????TOFU???????????: %s\n" -#, fuzzy, c-format -#| msgid "error sending data: %s\n" +#, c-format msgid "error reading TOFU database: %s\n" -msgstr "????????: %s\n" +msgstr "TOFU??????????????: %s\n" -#, fuzzy, c-format -#| msgid "error writing base64 encoding: %s\n" +#, c-format msgid "error determining TOFU database's version: %s\n" -msgstr "base64????????????????: %s\n" +msgstr "TOFU?????????????????: %s\n" -#, fuzzy, c-format -#| msgid "error initializing reader object: %s\n" +#, c-format msgid "error initializing TOFU database: %s\n" -msgstr "?????????????????: %s\n" +msgstr "TOFU?????????????: %s\n" -#, fuzzy, c-format -#| msgid "error opening '%s': %s\n" +#, c-format msgid "error opening TOFU database '%s': %s\n" -msgstr "'%s'????????: %s\n" +msgstr "TOFU??????????????? '%s': %s\n" msgid "Warning: Home directory contains both tofu.db and tofu.d.\n" -msgstr "" +msgstr "??: tofu.db ? tofu.d ???????????????????\n" msgid "Using split format for TOFU database\n" -msgstr "" +msgstr "TOFU??????????????????\n" -#, fuzzy, c-format -#| msgid "error sending data: %s\n" +#, c-format msgid "error updating TOFU database: %s\n" -msgstr "????????: %s\n" +msgstr "TOFU????????????: %s\n" #, c-format msgid "public key %s not found: %s\n" msgstr "???%s????????: %s\n" -#, fuzzy, c-format -#| msgid "error setting OCSP target: %s\n" +#, c-format msgid "error setting TOFU binding's trust level to %s\n" -msgstr "OCSP???????????: %s\n" +msgstr "TOFU??????????????????: %s\n" #, c-format msgid "The binding %s is NOT known." -msgstr "" +msgstr "%s??????????????" #, c-format msgid "" "The key with fingerprint %s raised a conflict with the binding %s. Since " "this binding's policy was 'auto', it was changed to 'ask'." msgstr "" +"???????????%s????????%s??????????????????????" +"'auto'??????'ask'?????????" #, c-format msgid "" "Please indicate whether you believe the binding %s%sis legitimate (the key " "belongs to the stated owner) or a forgery (bad)." msgstr "" +"???????%s%s???(??????????????)?????????(??)???????????" -#, fuzzy, c-format -#| msgid "error getting responder ID: %s\n" +#, c-format msgid "error gathering other user IDs: %s\n" -msgstr "??ID??????: %s\n" +msgstr "??????ID??????: %s\n" msgid "Known user IDs associated with this key:\n" -msgstr "" +msgstr "????????????????????ID:\n" -#, fuzzy, c-format -#| msgid "validity: %s" +#, c-format msgid "policy: %s" -msgstr "???: %s" +msgstr "????: %s" -#, fuzzy, c-format -#| msgid "error getting stored flags: %s\n" +#, c-format msgid "error gathering signature stats: %s\n" -msgstr "??????????????: %s\n" +msgstr "???????????: %s\n" #, c-format msgid "The email address \"%s\" is associated with %d key:\n" msgid_plural "The email address \"%s\" is associated with %d keys:\n" msgstr[0] "" +"?????????\"%s\"?%d????????????:\n" #, c-format msgid "Statistics for keys with the email address \"%s\":\n" -msgstr "" +msgstr "???????????\"%s\"?????:\n" -#, fuzzy -#| msgid "list keys" msgid "this key" -msgstr "????" +msgstr "???" #, c-format msgid "%ld message signed in the future." msgid_plural "%ld messages signed in the future." -msgstr[0] "" +msgstr[0] "%ld???????????????????" -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "%ld message signed" msgid_plural "%ld messages signed" -msgstr[0] "???????????????" +msgstr[0] "%ld??????????????" #, c-format msgid " over the past %ld day." msgid_plural " over the past %ld days." -msgstr[0] "" +msgstr[0] "??%ld???" #, c-format msgid " over the past %ld week." msgid_plural " over the past %ld weeks." -msgstr[0] "" +msgstr[0] "??%ld????" #, c-format msgid " over the past %ld month." msgid_plural " over the past %ld months." -msgstr[0] "" +msgstr[0] "??%ld???" #. TRANSLATORS: Please translate the text found in the source #. file below. We don't directly internationalize that text #. so that we can tweak it without breaking translations. msgid "TOFU detected a binding conflict" -msgstr "" +msgstr "TOFU??????????????????" #. TRANSLATORS: Two letters (normally the lower and upper case #. version of the hotkey) for each of the five choices. If #. there is only one choice in your language, repeat it. msgid "gGaAuUrRbB" -msgstr "" +msgstr "gGaAuUrRbB" msgid "(G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? " -msgstr "" +msgstr "(G)ood-?, (A)ccept once-?????, (U)nknown-??, (R)eject once-?????, (B)ad-??? " -#, fuzzy, c-format -#| msgid "error creating a pipe: %s\n" +#, c-format msgid "error changing TOFU policy: %s\n" -msgstr "?????????: %s\n" +msgstr "TOFU??????????: %s\n" #. TRANSLATORS: The tilde ('~') is used here to indicate a #. * non-breakable space #, c-format msgid "%d~year" msgid_plural "%d~years" -msgstr[0] "" +msgstr[0] "%d~?" #, c-format msgid "%d~month" msgid_plural "%d~months" -msgstr[0] "" +msgstr[0] "%d~?" #, c-format msgid "%d~day" msgid_plural "%d~days" -msgstr[0] "" +msgstr[0] "%d~?" #, c-format msgid "%d~hour" msgid_plural "%d~hours" -msgstr[0] "" +msgstr[0] "%d~??" #, c-format msgid "%d~minute" msgid_plural "%d~minutes" -msgstr[0] "" +msgstr[0] "%d~?" #, c-format msgid "%d~second" msgid_plural "%d~seconds" -msgstr[0] "" +msgstr[0] "%d~?" #, c-format msgid "Have never verified a message signed by key %s!\n" -msgstr "" +msgstr "?%s???????????????????????????!\n" #, c-format msgid "" "Failed to collect signature statistics for \"%s\"\n" "(key %s)\n" msgstr "" +"\"%s\"????????????????????\n" +"(? %s)\n" -#, fuzzy, c-format -#| msgid "print message digests" +#, c-format msgid "Verified %ld messages signed by \"%s\"." -msgstr "???????????????" +msgstr "%ld??????????????(\"%s\"????????)?" #, c-format msgid "" @@ -5541,16 +5468,17 @@ msgid_plural "" "Verified %ld messages signed by \"%s\"\n" "in the past %s." msgstr[0] "" +"??????%ld???????(\"%s\"???????????? %s)?" #, c-format msgid "The most recent message was verified %s ago." -msgstr "" +msgstr "?????????????%s??????????" msgid "Warning: we've have yet to see a message signed by this key!\n" -msgstr "" +msgstr "??: ???????????????????????????!\n" msgid "Warning: we've only seen a single message signed by this key!\n" -msgstr "" +msgstr "??: ???????????????????????????????!\n" #, c-format msgid "" @@ -5566,11 +5494,15 @@ msgid_plural "" " %s\n" "to mark it as being bad.\n" msgstr[0] "" +"??: ???????????????%ld????????????" +"??????????! ?????????????????????" +"??????????????????????????\n" +" %s\n" +"??????????????\n" -#, fuzzy, c-format -#| msgid "error sending data: %s\n" +#, c-format msgid "error opening TOFU database: %s\n" -msgstr "????????: %s\n" +msgstr "TOFU???????????????: %s\n" #, c-format msgid "'%s' is not a valid long keyID\n" @@ -5635,17 +5567,15 @@ msgstr "--check-trustdb?????????\n" msgid "checking the trustdb\n" msgstr "???????????\n" -#, fuzzy, c-format -#| msgid "%lu keys processed so far\n" +#, c-format msgid "%d key processed" msgid_plural "%d keys processed" -msgstr[0] "????%lu??????\n" +msgstr[0] "%d??????" -#, fuzzy, c-format -#| msgid "%d keys processed (%d validity counts cleared)\n" +#, c-format msgid " (%d validity count cleared)\n" msgid_plural " (%d validity counts cleared)\n" -msgstr[0] "%d?????? (??%d??????????)\n" +msgstr[0] " (??%d??????????)\n" msgid "no ultimately trusted keys found\n" msgstr "?????????????????\n" @@ -5849,8 +5779,7 @@ msgstr "?????CHV????????????\n" msgid "card is permanently locked!\n" msgstr "???????????????!\n" -#, fuzzy, c-format -#| msgid "%d Admin PIN attempts remaining before card is permanently locked\n" +#, c-format msgid "%d Admin PIN attempt remaining before card is permanently locked\n" msgid_plural "" "%d Admin PIN attempts remaining before card is permanently locked\n" @@ -5931,8 +5860,7 @@ msgstr "????????????? ...\n" msgid "generating key failed\n" msgstr "???????????\n" -#, fuzzy, c-format -#| msgid "key generation completed (%d seconds)\n" +#, c-format msgid "key generation completed (%d second)\n" msgid_plural "key generation completed (%d seconds)\n" msgstr[0] "??????????? (%d?)\n" @@ -8029,10 +7957,8 @@ msgstr "|N|N?????????????????" msgid "do not allow the reuse of old passphrases" msgstr "?????????????????????" -#, fuzzy -#| msgid "|N|set LDAP timeout to N seconds" msgid "|N|set the Pinentry timeout to N seconds" -msgstr "|N|LDAP????????N????" +msgstr "|N|Pinentry????????N????" msgid "|NAME|use NAME as default secret key" msgstr "|NAME|????????????NAME????" @@ -8324,12 +8250,6 @@ msgstr "" #~ msgid "you found a bug ... (%s:%d)\n" #~ msgstr "????????????? ... (%s:%d)\n" -#, fuzzy -#~| msgid "%d user IDs without valid self-signatures detected\n" -#~ msgid "%d user ID without valid self-signature detected\n" -#~ msgid_plural "%d user IDs without valid self-signatures detected\n" -#~ msgstr[0] "?????????????ID?%d???\n" - #~ msgid "moving a key signature to the correct place\n" #~ msgstr "????????????????\n" ----------------------------------------------------------------------- Summary of changes: po/ja.po | 410 +++++++++++++++++++++++++-------------------------------------- 1 file changed, 165 insertions(+), 245 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon May 9 21:17:34 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 09 May 2016 21:17:34 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.12-4-g693838f Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via 693838f0125d5d0c963fa3771b1bd117702af697 (commit) via d33b35f7481caa0dcb25f9fa7d6c5bb27895297a (commit) from ff870d59f067d3c5415e231c02a50d5dceac7e48 (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 693838f0125d5d0c963fa3771b1bd117702af697 Author: Werner Koch Date: Mon May 9 21:07:40 2016 +0200 gpg: Fix buglet in the check_all_keysigs function. * g10/keyedit.c (sig_comparison): Actually compare the pubkey algorithms. -- This fixes two bugs: The first was a typo which led to us comparing A with A. The second problem was the use of an assert at a place where this can't be asserted: Two signature may have different algorithms; they won't verify but after all it is about corrupted signatures. Reported-by: Guilhem Moulin GnuPG-bug-id: 2236 Signed-off-by: Werner Koch diff --git a/g10/keyedit.c b/g10/keyedit.c index 7ddf342..200a1ab 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -350,8 +350,9 @@ sig_comparison (const void *av, const void *bv) return 1; ndataa = pubkey_get_nsig (a->pubkey_algo); - ndatab = pubkey_get_nsig (a->pubkey_algo); - log_assert (ndataa == ndatab); + ndatab = pubkey_get_nsig (b->pubkey_algo); + if (ndataa != ndatab) + return (ndataa < ndatab)? -1 : 1; for (i = 0; i < ndataa; i ++) { commit d33b35f7481caa0dcb25f9fa7d6c5bb27895297a Author: Werner Koch Date: Mon May 9 20:57:20 2016 +0200 gpg: Request a "save" after cmd "check" fixed something. * g10/keyedit.c (keyedit_menu) : Set modified. -- Reported-by: Guilhem Moulin GnuPG-bug-id: 2236 Signed-off-by: Werner Koch diff --git a/g10/keyedit.c b/g10/keyedit.c index 5461864..7ddf342 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -2206,8 +2206,9 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, break; case cmdCHECK: - check_all_keysigs (keyblock, count_selected_uids (keyblock), - !strcmp (arg_string, "selfsig")); + if (check_all_keysigs (keyblock, count_selected_uids (keyblock), + !strcmp (arg_string, "selfsig"))) + modified = 1; break; case cmdSIGN: ----------------------------------------------------------------------- Summary of changes: g10/keyedit.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 08:30:29 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 10 May 2016 08:30:29 +0200 Subject: [git] gnupg-doc - branch, master, updated. 8bdcda7bd619f8faca93eaafa77afc2df3c94664 Message-ID: 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 "The GnuPG website and other docs". The branch, master has been updated via 8bdcda7bd619f8faca93eaafa77afc2df3c94664 (commit) from adce0202b12c680ee3e64e2f51760608b53d5657 (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 8bdcda7bd619f8faca93eaafa77afc2df3c94664 Author: Werner Koch Date: Tue May 10 08:29:25 2016 +0200 drafts: Typo fixes for openpgp-webkey-services. Reported-by: Bernhard Reiter diff --git a/misc/id/openpgp-webkey-service/middle.mkd b/misc/id/openpgp-webkey-service/middle.mkd index 2de39e9..4dbca42 100644 --- a/misc/id/openpgp-webkey-service/middle.mkd +++ b/misc/id/openpgp-webkey-service/middle.mkd @@ -1,7 +1,7 @@ # Introduction This memo describes a method to associate OpenPGP keys with a mail -address and now to look them up using a web service with a well-known +address and how to look them up using a web service with a well-known URI. In addition a mail based protocol is given to allow a client to setup such an association and to maintain it. @@ -32,7 +32,7 @@ due to the use of a wrong key. Methods to overcome this problem are - - sending an initial unencrypted messages with the public key + - sending an initial unencrypted message with the public key attached, - using the OpenPGP DANE protocol to lookup the recipients key via the DNS. @@ -48,7 +48,7 @@ Thus an update of the DNS resource records needs to be delegated to the ISP running the DNS service. Further, DNS lookups are not encrypted and missing all confidentially. Even if the participating MUAs are using STARTTLS to encrypt the mail exchange, a DNS lookup for -the key unnecessary identifies the local-part of the recipients mail +the key unnecessarily identifies the local-part of the recipients mail address to any passive eavesdroppers. This memo specified a new method for key discovery using an encrypted ----------------------------------------------------------------------- Summary of changes: misc/id/openpgp-webkey-service/middle.mkd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 08:42:47 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 10 May 2016 08:42:47 +0200 Subject: [git] GpgEX - branch, master, updated. gpgex-1.0.4-2-g689b4d2 Message-ID: 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 extension for the Windows Explorer". The branch, master has been updated via 689b4d294bf2a9c54e445e6775df9f634d84df1f (commit) from 7c7b69f19935e6b6927069f9f78515311071a0ec (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 689b4d294bf2a9c54e445e6775df9f634d84df1f Author: Werner Koch Date: Tue May 10 08:41:53 2016 +0200 po: Fix Russian translation -- GnuPG-bug-id: 2279 diff --git a/po/ru.po b/po/ru.po index 13982d7..eb2ec5b 100644 --- a/po/ru.po +++ b/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GpgEX\n" "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n" -"PO-Revision-Date: 2013-06-26 16:31+0200\n" +"PO-Revision-Date: 2016-05-10 08:40+0200\n" "Last-Translator: Sergei Smirnov \n" "Language-Team: Sergei Smirnov \n" "Language: \n" @@ -47,7 +47,7 @@ msgid "Verify" msgstr "?????????" msgid "Sign and encrypt" -msgstr "????????? ? ???????????" +msgstr "????????? ? ???????????" msgid "Encrypt" msgstr "???????????" ----------------------------------------------------------------------- Summary of changes: po/ru.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- GnupG extension for the Windows Explorer http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 10:29:25 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 10 May 2016 10:29:25 +0200 Subject: [git] GPGME - branch, master, updated. gpgme-1.6.0-14-gfc38c15 Message-ID: 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 fc38c15136c87ce971a8381fa87399088dd5a3cc (commit) from e79199468ac54ce4fe919603ff7bada97267174f (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 fc38c15136c87ce971a8381fa87399088dd5a3cc Author: Werner Koch Date: Tue May 10 10:27:54 2016 +0200 Allow cc to detect missing cases in a switch. * src/delete.c (delete_status_handler): Remove default case from a switch so that cc can check the use of all enum values. Signed-off-by: Werner Koch diff --git a/src/delete.c b/src/delete.c index d20a5bf..d7fdf50 100644 --- a/src/delete.c +++ b/src/delete.c @@ -64,9 +64,9 @@ delete_status_handler (void *priv, gpgme_status_code_t code, char *args) case DELETE_Ambiguous_Specification: return gpg_error (GPG_ERR_AMBIGUOUS_NAME); - default: - return gpg_error (GPG_ERR_GENERAL); } + + return gpg_error (GPG_ERR_GENERAL); } else if (code == GPGME_STATUS_ERROR) { ----------------------------------------------------------------------- Summary of changes: src/delete.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- GnuPG Made Easy http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 11:21:26 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 10 May 2016 11:21:26 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.12-5-gac9ff64 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via ac9ff644b12c4dfa55d466af8ae6af54d1646893 (commit) from 693838f0125d5d0c963fa3771b1bd117702af697 (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 ac9ff644b12c4dfa55d466af8ae6af54d1646893 Author: Werner Koch Date: Tue May 10 11:01:42 2016 +0200 gpg: Allow unattended deletion of secret keys. * agent/command.c (cmd_delete_key): Make the --force option depend on --disallow-loopback-passphrase. * g10/call-agent.c (agent_delete_key): Add arg FORCE. * g10/delkey.c (do_delete_key): Pass opt.answer_yes to agent_delete_key. -- Unless the agent has been configured with --disallow-loopback-passpharse an unattended deletion of a secret key is now possible with gpg by using --batch _and_ --yes. Signed-off-by: Werner Koch diff --git a/agent/command.c b/agent/command.c index c94fdd3..dfbb831 100644 --- a/agent/command.c +++ b/agent/command.c @@ -2333,8 +2333,9 @@ cmd_export_key (assuan_context_t ctx, char *line) static const char hlp_delete_key[] = "DELETE_KEY [--force] \n" "\n" - "Delete a secret key from the key store.\n" - "Unless --force is used the agent asks the user for confirmation.\n"; + "Delete a secret key from the key store. If --force is used\n" + "and a loopback pinentry is allowed, the agent will not ask\n" + "the user for confirmation."; static gpg_error_t cmd_delete_key (assuan_context_t ctx, char *line) { @@ -2349,6 +2350,11 @@ cmd_delete_key (assuan_context_t ctx, char *line) force = has_option (line, "--force"); line = skip_options (line); + /* If the use of a loopback pinentry has been disabled, we assume + * that a silent deletion of keys shall also not be allowed. */ + if (!opt.allow_loopback_pinentry) + force = 0; + err = parse_keygrip (ctx, line, grip); if (err) goto leave; diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index 2989d3b..b45874d 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -337,6 +337,10 @@ internal cache of @command{gpg-agent} with passphrases. Disallow or allow clients to use the loopback pinentry features; see the option @option{pinentry-mode} for details. Allow is the default. +The @option{--force} option of the Assuan command @command{DELETE_KEY} +is also controlled by this option: The option is ignored if a loopback +pinentry is disallowed. + @item --no-allow-external-cache @opindex no-allow-external-cache Tell Pinentry not to enable features which use an external cache for @@ -820,8 +824,17 @@ fi @section Agent's Assuan Protocol Note: this section does only document the protocol, which is used by -GnuPG components; it does not deal with the ssh-agent protocol. +GnuPG components; it does not deal with the ssh-agent protocol. To +see the full specification of each command, use + + at example + gpg-connect-agent 'help COMMAND' /bye + at end example + at noindent +or just 'help' to list all available commands. + + at noindent The @command{gpg-agent} daemon is started on demand by the GnuPG components. diff --git a/doc/gpg.texi b/doc/gpg.texi index 3cad361..a09e610 100644 --- a/doc/gpg.texi +++ b/doc/gpg.texi @@ -376,13 +376,20 @@ safeguard against accidental deletion of multiple keys. @item --delete-secret-keys @code{name} @opindex delete-secret-keys -Remove key from the secret keyring. In batch mode the key -must be specified by fingerprint. +gRemove key from the secret keyring. In batch mode the key must be +specified by fingerprint. The option @option{--yes} can be used to +advice gpg-agent not to request a confirmation. This extra +pre-caution is done because @command{gpg} can't be sure that the +secret key (as controlled by gpg-agent) is only used for the given +OpenPGP public key. + @item --delete-secret-and-public-key @code{name} @opindex delete-secret-and-public-key Same as @option{--delete-key}, but if a secret key exists, it will be removed first. In batch mode the key must be specified by fingerprint. +The option @option{--yes} can be used to advice gpg-agent not to +request a confirmation. @item --export @opindex export diff --git a/g10/call-agent.c b/g10/call-agent.c index c5bd694..d8c6ded 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -2349,9 +2349,11 @@ agent_export_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc, /* Ask the agent to delete the key identified by HEXKEYGRIP. If DESC is not NULL, display DESC instead of the default description - message. */ + message. If FORCE is true the agent is advised not to ask for + confirmation. */ gpg_error_t -agent_delete_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc) +agent_delete_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc, + int force) { gpg_error_t err; char line[ASSUAN_LINELENGTH]; @@ -2376,7 +2378,8 @@ agent_delete_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc) return err; } - snprintf (line, DIM(line)-1, "DELETE_KEY %s", hexkeygrip); + snprintf (line, DIM(line)-1, "DELETE_KEY%s %s", + force? " --force":"", hexkeygrip); err = assuan_transact (agent_ctx, line, NULL, NULL, default_inq_cb, &dfltparm, NULL, NULL); diff --git a/g10/call-agent.h b/g10/call-agent.h index 208b75b..06a19d4 100644 --- a/g10/call-agent.h +++ b/g10/call-agent.h @@ -196,7 +196,7 @@ gpg_error_t agent_export_key (ctrl_t ctrl, const char *keygrip, /* Delete a key from the agent. */ gpg_error_t agent_delete_key (ctrl_t ctrl, const char *hexkeygrip, - const char *desc); + const char *desc, int force); /* Change the passphrase of a key. */ gpg_error_t agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc, diff --git a/g10/delkey.c b/g10/delkey.c index f76277c..966c571 100644 --- a/g10/delkey.c +++ b/g10/delkey.c @@ -184,8 +184,14 @@ do_delete_key( const char *username, int secret, int force, int *r_sec_avail ) prompt = gpg_format_keydesc (node->pkt->pkt.public_key, FORMAT_KEYDESC_DELKEY, 1); err = hexkeygrip_from_pk (node->pkt->pkt.public_key, &hexgrip); + /* NB: We require --yes to advise the agent not to + * request a confirmation. The rationale for this extra + * pre-caution is that since 2.1 the secret key may also + * be used for other protocols and thus deleting it from + * the gpg would also delete the key for other tools. */ if (!err) - err = agent_delete_key (NULL, hexgrip, prompt); + err = agent_delete_key (NULL, hexgrip, prompt, + opt.answer_yes); xfree (prompt); xfree (hexgrip); if (err) ----------------------------------------------------------------------- Summary of changes: agent/command.c | 10 ++++++++-- doc/gpg-agent.texi | 15 ++++++++++++++- doc/gpg.texi | 11 +++++++++-- g10/call-agent.c | 9 ++++++--- g10/call-agent.h | 2 +- g10/delkey.c | 8 +++++++- 6 files changed, 45 insertions(+), 10 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 14:34:33 2016 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Tue, 10 May 2016 14:34:33 +0200 Subject: [git] GPGME - branch, gpgmepp, updated. gpgme-1.6.0-59-gb7d5c2c Message-ID: 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, gpgmepp has been updated via b7d5c2cced796d4092a9f424368fc999165f9d13 (commit) via 56c4d9ea9520c95612e525b2fa1359db6fa88f4a (commit) via 97225bb01cd2ffa1d84c7fedbc577275de4a4893 (commit) via 740f92a7b83389ee9bde98b7bd25556793500b8b (commit) via 0e3195948ddaba3af07d2415bb496491076edc17 (commit) from a579be82c84f0b9732ee3d52ff2142a3decf95d7 (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 b7d5c2cced796d4092a9f424368fc999165f9d13 Author: Andre Heinecke Date: Tue May 10 14:32:22 2016 +0200 Qt: Fix unkonwn doxygen keyword warnings -- Reimp is not a keqword and we inherit documentation anyway. diff --git a/lang/qt/src/dataprovider.h b/lang/qt/src/dataprovider.h index 672980a..337f264 100644 --- a/lang/qt/src/dataprovider.h +++ b/lang/qt/src/dataprovider.h @@ -50,18 +50,13 @@ public: private: // these shall only be accessed through the dataprovider // interface, where they're public: - /*! \reimp */ bool isSupported(Operation) const { return true; } - /*! \reimp */ ssize_t read(void *buffer, size_t bufSize); - /*! \reimp */ ssize_t write(const void *buffer, size_t bufSize); - /*! \reimp */ off_t seek(off_t offset, int whence); - /*! \reimp */ void release(); private: @@ -83,15 +78,10 @@ public: private: // these shall only be accessed through the dataprovider // interface, where they're public: - /*! \reimp */ bool isSupported(Operation) const; - /*! \reimp */ ssize_t read(void *buffer, size_t bufSize); - /*! \reimp */ ssize_t write(const void *buffer, size_t bufSize); - /*! \reimp */ off_t seek(off_t offset, int whence); - /*! \reimp */ void release(); private: diff --git a/lang/qt/src/hierarchicalkeylistjob.h b/lang/qt/src/hierarchicalkeylistjob.h index 7cc519a..2ec187d 100644 --- a/lang/qt/src/hierarchicalkeylistjob.h +++ b/lang/qt/src/hierarchicalkeylistjob.h @@ -101,7 +101,7 @@ public: private Q_SLOTS: void slotResult(const GpgME::KeyListResult &); void slotNextKey(const GpgME::Key &key); - /*! \reimp from Job */ + /* from Job */ void slotCancel() Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/multideletejob.h b/lang/qt/src/multideletejob.h index fca73d0..8915cd1 100644 --- a/lang/qt/src/multideletejob.h +++ b/lang/qt/src/multideletejob.h @@ -82,7 +82,7 @@ public: */ GpgME::Error start(const std::vector &keys, bool allowSecretKeyDeletion = false); - /*! \reimp from Job */ + /* from Job */ void slotCancel() Q_DECL_OVERRIDE; Q_SIGNALS: diff --git a/lang/qt/src/qgpgmeadduseridjob.h b/lang/qt/src/qgpgmeadduseridjob.h index f77b3c8..294eb6c 100644 --- a/lang/qt/src/qgpgmeadduseridjob.h +++ b/lang/qt/src/qgpgmeadduseridjob.h @@ -57,7 +57,7 @@ public: explicit QGpgMEAddUserIDJob(GpgME::Context *context); ~QGpgMEAddUserIDJob(); - /*! \reimp from AddUserIDJob */ + /* from AddUserIDJob */ GpgME::Error start(const GpgME::Key &key, const QString &name, const QString &email, const QString &comment) Q_DECL_OVERRIDE; }; } diff --git a/lang/qt/src/qgpgmechangeexpiryjob.h b/lang/qt/src/qgpgmechangeexpiryjob.h index fab1259..4abdf78 100644 --- a/lang/qt/src/qgpgmechangeexpiryjob.h +++ b/lang/qt/src/qgpgmechangeexpiryjob.h @@ -57,7 +57,7 @@ public: explicit QGpgMEChangeExpiryJob(GpgME::Context *context); ~QGpgMEChangeExpiryJob(); - /*! \reimp from ChangeExpiryJob */ + /* from ChangeExpiryJob */ GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry) Q_DECL_OVERRIDE; }; diff --git a/lang/qt/src/qgpgmechangeownertrustjob.h b/lang/qt/src/qgpgmechangeownertrustjob.h index 7ff03a3..7740616 100644 --- a/lang/qt/src/qgpgmechangeownertrustjob.h +++ b/lang/qt/src/qgpgmechangeownertrustjob.h @@ -57,7 +57,7 @@ public: explicit QGpgMEChangeOwnerTrustJob(GpgME::Context *context); ~QGpgMEChangeOwnerTrustJob(); - /*! \reimp from ChangeOwnerTrustJob */ + /* from ChangeOwnerTrustJob */ GpgME::Error start(const GpgME::Key &key, GpgME::Key::OwnerTrust trust) Q_DECL_OVERRIDE; }; } diff --git a/lang/qt/src/qgpgmechangepasswdjob.h b/lang/qt/src/qgpgmechangepasswdjob.h index 1531e76..e37789e 100644 --- a/lang/qt/src/qgpgmechangepasswdjob.h +++ b/lang/qt/src/qgpgmechangepasswdjob.h @@ -57,7 +57,7 @@ public: explicit QGpgMEChangePasswdJob(GpgME::Context *context); ~QGpgMEChangePasswdJob(); - /*! \reimp from ChangePasswdJob */ + /* from ChangePasswdJob */ GpgME::Error start(const GpgME::Key &key) Q_DECL_OVERRIDE; }; diff --git a/lang/qt/src/qgpgmedecryptjob.h b/lang/qt/src/qgpgmedecryptjob.h index e7ed04f..5335e84 100644 --- a/lang/qt/src/qgpgmedecryptjob.h +++ b/lang/qt/src/qgpgmedecryptjob.h @@ -63,17 +63,17 @@ public: explicit QGpgMEDecryptJob(GpgME::Context *context); ~QGpgMEDecryptJob(); - /*! \reimp from DecryptJob */ + /* from DecryptJob */ GpgME::Error start(const QByteArray &cipherText) Q_DECL_OVERRIDE; - /*! \reimp from DecryptJob */ + /* from DecryptJob */ void start(const std::shared_ptr &cipherText, const std::shared_ptr &plainText) Q_DECL_OVERRIDE; - /*! \reimp from DecryptJob */ + /* from DecryptJob */ GpgME::DecryptionResult exec(const QByteArray &cipherText, QByteArray &plainText) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmedecryptverifyjob.h b/lang/qt/src/qgpgmedecryptverifyjob.h index 4a209b9..de2bce7 100644 --- a/lang/qt/src/qgpgmedecryptverifyjob.h +++ b/lang/qt/src/qgpgmedecryptverifyjob.h @@ -68,17 +68,17 @@ public: explicit QGpgMEDecryptVerifyJob(GpgME::Context *context); ~QGpgMEDecryptVerifyJob(); - /*! \reimp from DecryptVerifyJob */ + /* from DecryptVerifyJob */ GpgME::Error start(const QByteArray &cipherText) Q_DECL_OVERRIDE; - /*! \reimp from DecryptVerifyJob */ + /* from DecryptVerifyJob */ void start(const std::shared_ptr &cipherText, const std::shared_ptr &plainText) Q_DECL_OVERRIDE; - /*! \reimp from DecryptVerifyJob */ + /* from DecryptVerifyJob */ std::pair exec(const QByteArray &cipherText, QByteArray &plainText) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmedeletejob.h b/lang/qt/src/qgpgmedeletejob.h index a2b0d10..992442f 100644 --- a/lang/qt/src/qgpgmedeletejob.h +++ b/lang/qt/src/qgpgmedeletejob.h @@ -62,7 +62,7 @@ public: explicit QGpgMEDeleteJob(GpgME::Context *context); ~QGpgMEDeleteJob(); - /*! \reimp from DeleteJob */ + /* from DeleteJob */ GpgME::Error start(const GpgME::Key &key, bool allowSecretKeyDeletion) Q_DECL_OVERRIDE; }; diff --git a/lang/qt/src/qgpgmedownloadjob.h b/lang/qt/src/qgpgmedownloadjob.h index b1120d1..4091190 100644 --- a/lang/qt/src/qgpgmedownloadjob.h +++ b/lang/qt/src/qgpgmedownloadjob.h @@ -57,10 +57,10 @@ public: explicit QGpgMEDownloadJob(GpgME::Context *context); ~QGpgMEDownloadJob(); - /*! \reimp from DownloadJob */ + /* from DownloadJob */ GpgME::Error start(const QStringList &fingerprints) Q_DECL_OVERRIDE; - /*! \reimp from DownloadJob */ + /* from DownloadJob */ GpgME::Error start(const QByteArray &fingerprint, const std::shared_ptr &keyData) Q_DECL_OVERRIDE; }; diff --git a/lang/qt/src/qgpgmeencryptjob.h b/lang/qt/src/qgpgmeencryptjob.h index fc6ad5f..d35a41b 100644 --- a/lang/qt/src/qgpgmeencryptjob.h +++ b/lang/qt/src/qgpgmeencryptjob.h @@ -68,25 +68,25 @@ public: explicit QGpgMEEncryptJob(GpgME::Context *context); ~QGpgMEEncryptJob(); - /*! \reimp from EncryptJob */ + /* from EncryptJob */ GpgME::Error start(const std::vector &recipients, const QByteArray &plainText, bool alwaysTrust) Q_DECL_OVERRIDE; - /*! \reimp from EncryptJob */ + /* from EncryptJob */ void start(const std::vector &recipients, const std::shared_ptr &plainText, const std::shared_ptr &cipherText, bool alwaysTrust) Q_DECL_OVERRIDE; - /*! \reimp from EncryptJob */ + /* from EncryptJob */ GpgME::EncryptionResult exec(const std::vector &recipients, const QByteArray &plainText, bool alwaysTrust, QByteArray &cipherText) Q_DECL_OVERRIDE; - /*! \reimp from EncryptJob */ + /* from EncryptJob */ void setOutputIsBase64Encoded(bool on) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmeexportjob.h b/lang/qt/src/qgpgmeexportjob.h index 703687c..7561054 100644 --- a/lang/qt/src/qgpgmeexportjob.h +++ b/lang/qt/src/qgpgmeexportjob.h @@ -57,7 +57,7 @@ public: explicit QGpgMEExportJob(GpgME::Context *context); ~QGpgMEExportJob(); - /*! \reimp from ExportJob */ + /* from ExportJob */ GpgME::Error start(const QStringList &patterns) Q_DECL_OVERRIDE; }; diff --git a/lang/qt/src/qgpgmeimportfromkeyserverjob.h b/lang/qt/src/qgpgmeimportfromkeyserverjob.h index f50dae0..8c9f944 100644 --- a/lang/qt/src/qgpgmeimportfromkeyserverjob.h +++ b/lang/qt/src/qgpgmeimportfromkeyserverjob.h @@ -63,13 +63,13 @@ public: explicit QGpgMEImportFromKeyserverJob(GpgME::Context *context); ~QGpgMEImportFromKeyserverJob(); - /*! \reimp from ImportFromKeyserverJob */ + /* from ImportFromKeyserverJob */ GpgME::Error start(const std::vector &keys) Q_DECL_OVERRIDE; - /*! \reimp from ImportFromKeyserverJob */ + /* from ImportFromKeyserverJob */ GpgME::ImportResult exec(const std::vector &keys) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmeimportjob.h b/lang/qt/src/qgpgmeimportjob.h index 5a55fc9..424cb50 100644 --- a/lang/qt/src/qgpgmeimportjob.h +++ b/lang/qt/src/qgpgmeimportjob.h @@ -63,13 +63,13 @@ public: explicit QGpgMEImportJob(GpgME::Context *context); ~QGpgMEImportJob(); - /*! \reimp from ImportJob */ + /* from ImportJob */ GpgME::Error start(const QByteArray &keyData) Q_DECL_OVERRIDE; - /*! \reimp from ImportJob */ + /* from ImportJob */ GpgME::ImportResult exec(const QByteArray &keyData) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmekeygenerationjob.h b/lang/qt/src/qgpgmekeygenerationjob.h index fb09b03..808b714 100644 --- a/lang/qt/src/qgpgmekeygenerationjob.h +++ b/lang/qt/src/qgpgmekeygenerationjob.h @@ -63,7 +63,7 @@ public: explicit QGpgMEKeyGenerationJob(GpgME::Context *context); ~QGpgMEKeyGenerationJob(); - /*! \reimp from KeygenerationJob */ + /* from KeygenerationJob */ GpgME::Error start(const QString ¶meters) Q_DECL_OVERRIDE; }; diff --git a/lang/qt/src/qgpgmekeylistjob.h b/lang/qt/src/qgpgmekeylistjob.h index 292f2bb..cbe1e94 100644 --- a/lang/qt/src/qgpgmekeylistjob.h +++ b/lang/qt/src/qgpgmekeylistjob.h @@ -68,13 +68,13 @@ public: explicit QGpgMEKeyListJob(GpgME::Context *context); ~QGpgMEKeyListJob(); - /*! \reimp from KeyListJob */ + /* from KeyListJob */ GpgME::Error start(const QStringList &patterns, bool secretOnly) Q_DECL_OVERRIDE; - /*! \reimp from KeyListJob */ + /* from KeyListJob */ GpgME::KeyListResult exec(const QStringList &patterns, bool secretOnly, std::vector &keys) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &result) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmelistallkeysjob.h b/lang/qt/src/qgpgmelistallkeysjob.h index 310eabd..1fc69d4 100644 --- a/lang/qt/src/qgpgmelistallkeysjob.h +++ b/lang/qt/src/qgpgmelistallkeysjob.h @@ -68,13 +68,13 @@ public: explicit QGpgMEListAllKeysJob(GpgME::Context *context); ~QGpgMEListAllKeysJob(); - /*! \reimp from ListAllKeysJob */ + /* from ListAllKeysJob */ GpgME::Error start(bool mergeKeys) Q_DECL_OVERRIDE; - /*! \reimp from ListAllKeysJob */ + /* from ListAllKeysJob */ GpgME::KeyListResult exec(std::vector &pub, std::vector &sec, bool mergeKeys) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &result) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmerefreshkeysjob.h b/lang/qt/src/qgpgmerefreshkeysjob.h index da928f3..2a54e38 100644 --- a/lang/qt/src/qgpgmerefreshkeysjob.h +++ b/lang/qt/src/qgpgmerefreshkeysjob.h @@ -54,11 +54,11 @@ public: QGpgMERefreshKeysJob(); ~QGpgMERefreshKeysJob(); - /*! \reimp from RefreshKeysJob */ + /* from RefreshKeysJob */ GpgME::Error start(const QStringList &patterns) Q_DECL_OVERRIDE; private Q_SLOTS: - /*! \reimp from Job */ + /* from Job */ void slotCancel() Q_DECL_OVERRIDE; void slotStatus(QProcess *, const QString &, const QStringList &); diff --git a/lang/qt/src/qgpgmesecretkeyexportjob.h b/lang/qt/src/qgpgmesecretkeyexportjob.h index c58e853..ad53f99 100644 --- a/lang/qt/src/qgpgmesecretkeyexportjob.h +++ b/lang/qt/src/qgpgmesecretkeyexportjob.h @@ -57,11 +57,11 @@ public: QGpgMESecretKeyExportJob(bool armour, const QString &charset); ~QGpgMESecretKeyExportJob(); - /*! \reimp from ExportJob */ + /* from ExportJob */ GpgME::Error start(const QStringList &patterns) Q_DECL_OVERRIDE; private Q_SLOTS: - /*! \reimp from Job */ + /* from Job */ void slotCancel() Q_DECL_OVERRIDE; void slotStdout(); diff --git a/lang/qt/src/qgpgmesignencryptjob.h b/lang/qt/src/qgpgmesignencryptjob.h index bf1439c..49177d3 100644 --- a/lang/qt/src/qgpgmesignencryptjob.h +++ b/lang/qt/src/qgpgmesignencryptjob.h @@ -75,12 +75,12 @@ public: explicit QGpgMESignEncryptJob(GpgME::Context *context); ~QGpgMESignEncryptJob(); - /*! \reimp from SignEncryptJob */ + /* from SignEncryptJob */ GpgME::Error start(const std::vector &signers, const std::vector &recipients, const QByteArray &plainText, bool alwaysTrust) Q_DECL_OVERRIDE; - /*! \reimp from SignEncryptJob */ + /* from SignEncryptJob */ void start(const std::vector &signers, const std::vector &recipients, const std::shared_ptr &plainText, @@ -93,10 +93,10 @@ public: const QByteArray &plainText, bool alwaysTrust, QByteArray &cipherText) Q_DECL_OVERRIDE; - /*! \reimp from SignEncryptJob */ + /* from SignEncryptJob */ void setOutputIsBase64Encoded(bool on) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmesignjob.h b/lang/qt/src/qgpgmesignjob.h index 8ad35ed..1d4a174 100644 --- a/lang/qt/src/qgpgmesignjob.h +++ b/lang/qt/src/qgpgmesignjob.h @@ -68,27 +68,27 @@ public: explicit QGpgMESignJob(GpgME::Context *context); ~QGpgMESignJob(); - /*! \reimp from SignJob */ + /* from SignJob */ GpgME::Error start(const std::vector &signers, const QByteArray &plainText, GpgME::SignatureMode mode) Q_DECL_OVERRIDE; - /*! \reimp from SignJob */ + /* from SignJob */ void start(const std::vector &signers, const std::shared_ptr &plainText, const std::shared_ptr &signature, GpgME::SignatureMode mode) Q_DECL_OVERRIDE; - /*! \reimp from SignJob */ + /* from SignJob */ GpgME::SigningResult exec(const std::vector &signers, const QByteArray &plainText, GpgME::SignatureMode mode, QByteArray &signature) Q_DECL_OVERRIDE; - /*! \reimp from SignJob */ + /* from SignJob */ void setOutputIsBase64Encoded(bool on) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmesignkeyjob.h b/lang/qt/src/qgpgmesignkeyjob.h index 6b610ac..6cdb7db 100644 --- a/lang/qt/src/qgpgmesignkeyjob.h +++ b/lang/qt/src/qgpgmesignkeyjob.h @@ -63,22 +63,22 @@ public: explicit QGpgMESignKeyJob(GpgME::Context *context); ~QGpgMESignKeyJob(); - /*! \reimp from SignKeyJob */ + /* from SignKeyJob */ GpgME::Error start(const GpgME::Key &key) Q_DECL_OVERRIDE; - /*! \reimp from SignKeyJob */ + /* from SignKeyJob */ void setUserIDsToSign(const std::vector &idsToSign) Q_DECL_OVERRIDE; - /*! \reimp from SignKeyJob */ + /* from SignKeyJob */ void setCheckLevel(unsigned int checkLevel) Q_DECL_OVERRIDE; - /*! \reimp from SignKeyJob */ + /* from SignKeyJob */ void setExportable(bool exportable) Q_DECL_OVERRIDE; - /*! \reimp from SignKeyJob */ + /* from SignKeyJob */ void setSigningKey(const GpgME::Key &key) Q_DECL_OVERRIDE; - /*! \reimp from SignKeyJob */ + /* from SignKeyJob */ void setNonRevocable(bool nonRevocable) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmeverifydetachedjob.h b/lang/qt/src/qgpgmeverifydetachedjob.h index 6f6257c..051caf0 100644 --- a/lang/qt/src/qgpgmeverifydetachedjob.h +++ b/lang/qt/src/qgpgmeverifydetachedjob.h @@ -63,17 +63,17 @@ public: explicit QGpgMEVerifyDetachedJob(GpgME::Context *context); ~QGpgMEVerifyDetachedJob(); - /*! \reimp from VerifyDetachedJob */ + /* from VerifyDetachedJob */ GpgME::Error start(const QByteArray &signature, const QByteArray &signedData) Q_DECL_OVERRIDE; - /*! \reimp from VerifyDetachedJob */ + /* from VerifyDetachedJob */ void start(const std::shared_ptr &signature, const std::shared_ptr &signedData) Q_DECL_OVERRIDE; - /*! \reimp from VerifyDetachedJob */ + /* from VerifyDetachedJob */ GpgME::VerificationResult exec(const QByteArray &signature, const QByteArray &signedData) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: diff --git a/lang/qt/src/qgpgmeverifyopaquejob.h b/lang/qt/src/qgpgmeverifyopaquejob.h index 2374cee..87c94a3 100644 --- a/lang/qt/src/qgpgmeverifyopaquejob.h +++ b/lang/qt/src/qgpgmeverifyopaquejob.h @@ -63,16 +63,16 @@ public: explicit QGpgMEVerifyOpaqueJob(GpgME::Context *context); ~QGpgMEVerifyOpaqueJob(); - /*! \reimp from VerifyOpaqueJob */ + /* from VerifyOpaqueJob */ GpgME::Error start(const QByteArray &signedData) Q_DECL_OVERRIDE; - /*! \reimp from VerifyOpaqueJob */ + /* from VerifyOpaqueJob */ void start(const std::shared_ptr &signedData, const std::shared_ptr &plainText) Q_DECL_OVERRIDE; - /*! \reimp form VerifyOpaqueJob */ + /* form VerifyOpaqueJob */ GpgME::VerificationResult exec(const QByteArray &signedData, QByteArray &plainData) Q_DECL_OVERRIDE; - /*! \reimp from ThreadedJobMixin */ + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; private: commit 56c4d9ea9520c95612e525b2fa1359db6fa88f4a Author: Andre Heinecke Date: Tue May 10 14:05:10 2016 +0200 Qt: Make Protocol class public API * lang/qt/src/Makefile.am (qgpgme_headers): Add protocol.h (private_qgpgme_headers): Add protocol_p.h * lang/qt/src/protocol.h: New. From QGpgMEBackend. * lang/qt/src/protocol_p.h: New. From QGpgMEBackend. * lang/qt/src/qgpgmebackend.h, lang/qt/src/qgpgmebackend.cpp (Protocol): Removed. -- The backend class does not make much sense anymore as we only have the GpgME backend obviously. It's purpose was for Libkleo's Backend abstraction. diff --git a/lang/qt/src/Makefile.am b/lang/qt/src/Makefile.am index 30c24b9..7de3ef6 100644 --- a/lang/qt/src/Makefile.am +++ b/lang/qt/src/Makefile.am @@ -49,6 +49,7 @@ qgpgme_headers= \ hierarchicalkeylistjob.h \ job.h \ multideletejob.h \ + protocol.h \ qgpgme_export.h \ qgpgmenewcryptoconfig.h \ signjob.h \ @@ -67,6 +68,7 @@ qgpgme_headers= \ private_qgpgme_headers = \ qgpgme_export.h \ abstractimportjob.h \ + protocol_p.h \ qgpgmeadduseridjob.h \ qgpgmebackend.h \ qgpgmechangeexpiryjob.h \ diff --git a/lang/qt/src/qgpgmebackend.h b/lang/qt/src/protocol.h similarity index 77% copy from lang/qt/src/qgpgmebackend.h copy to lang/qt/src/protocol.h index 3b03633..5162fe6 100644 --- a/lang/qt/src/qgpgmebackend.h +++ b/lang/qt/src/protocol.h @@ -1,5 +1,5 @@ /* - qgpgmebackend.h + protocol.h This file is part of qgpgme, the Qt API binding for gpgme Copyright (c) 2004,2005 Klar?lvdalens Datakonsult AB @@ -30,14 +30,15 @@ you do not wish to do so, delete this exception statement from your version. */ - -#ifndef __QGPGME_QGPGMEBACKEND_H__ -#define __QGPGME_QGPGMEBACKEND_H__ +#ifndef __QGPGME_PROTOCOL_H__ +#define __QGPGME_PROTOCOL_H__ #include +#include -namespace QGpgME -{ +#include "qgpgme_export.h" + +namespace QGpgME { class CryptoConfig; class KeyListJob; class ListAllKeysJob; @@ -61,72 +62,8 @@ class ChangeOwnerTrustJob; class ChangePasswdJob; class AddUserIDJob; class SpecialJob; -} -class QString; -class QVariant; -template class QMap; - -namespace QGpgME -{ -class CryptoConfig; -class Protocol; - -/** Obtain a reference to the OpenPGP Protocol. - * - * The reference is to a static object. - * @returns Refrence to the OpenPGP Protocol. - */ -Protocol *openpgp(); - -/** Obtain a reference to the smime Protocol. - * - * The reference is to a static object. - * @returns Refrence to the smime Protocol. - */ -Protocol *smime(); - -class QGpgMEBackend -{ -public: - QGpgMEBackend(); - ~QGpgMEBackend(); - - QString name() const; - QString displayName() const; - - CryptoConfig *config() const; - - Protocol *openpgp() const; - Protocol *smime() const; - Protocol *protocol(const char *name) const; - - static const char OpenPGP[]; - static const char SMIME[]; - - bool checkForOpenPGP(QString *reason = Q_NULLPTR) const; - bool checkForSMIME(QString *reason = Q_NULLPTR) const; - bool checkForProtocol(const char *name, QString *reason) const; - - bool supportsOpenPGP() const - { - return true; - } - bool supportsSMIME() const - { - return true; - } - bool supportsProtocol(const char *name) const; - - const char *enumerateProtocols(int i) const; - -private: - mutable QGpgME::CryptoConfig *mCryptoConfig; - mutable Protocol *mOpenPGPProtocol; - mutable Protocol *mSMIMEProtocol; -}; - -class Protocol +class QGPGME_EXPORT Protocol { public: virtual ~Protocol() {} @@ -161,6 +98,26 @@ public: virtual SpecialJob *specialJob(const char *type, const QMap &args) const = 0; }; -} +/** Obtain a reference to the OpenPGP Protocol. + * + * The reference is to a static object. + * @returns Refrence to the OpenPGP Protocol. + */ +QGPGME_EXPORT Protocol *openpgp(); + +/** Obtain a reference to the smime Protocol. + * + * The reference is to a static object. + * @returns Refrence to the smime Protocol. + */ +QGPGME_EXPORT Protocol *smime(); + +/** Obtain a reference to a cryptoConfig object. + * + * The reference is to a static object. + * @returns reference to cryptoConfig object. + */ +QGPGME_EXPORT CryptoConfig *cryptoConfig(); -#endif // __QGPGME_QGPGMEBACKEND_H__ +} +#endif diff --git a/lang/qt/src/qgpgmebackend.cpp b/lang/qt/src/protocol_p.h similarity index 74% copy from lang/qt/src/qgpgmebackend.cpp copy to lang/qt/src/protocol_p.h index 27cd178..d6c5625 100644 --- a/lang/qt/src/qgpgmebackend.cpp +++ b/lang/qt/src/protocol_p.h @@ -1,5 +1,5 @@ /* - qgpgmebackend.cpp + protocol_p.h This file is part of qgpgme, the Qt API binding for gpgme Copyright (c) 2004,2005 Klar?lvdalens Datakonsult AB @@ -30,9 +30,8 @@ you do not wish to do so, delete this exception statement from your version. */ - -#include "qgpgmebackend.h" - +#ifndef __QGPGME_PROTOCOL_P_H__ +#define __QGPGME_PROTOCOL_P_H__ #include "qgpgmenewcryptoconfig.h" #include "qgpgmekeygenerationjob.h" @@ -58,15 +57,6 @@ #include "qgpgmechangepasswdjob.h" #include "qgpgmeadduseridjob.h" -#include "error.h" -#include "engineinfo.h" - -#include -#include - -const char QGpgME::QGpgMEBackend::OpenPGP[] = "OpenPGP"; -const char QGpgME::QGpgMEBackend::SMIME[] = "SMIME"; - namespace { @@ -378,150 +368,4 @@ public: }; } - -QGpgME::QGpgMEBackend::QGpgMEBackend() - : mCryptoConfig(0), - mOpenPGPProtocol(0), - mSMIMEProtocol(0) -{ - GpgME::initializeLibrary(); -} - -QGpgME::QGpgMEBackend::~QGpgMEBackend() -{ - delete mCryptoConfig; mCryptoConfig = 0; - delete mOpenPGPProtocol; mOpenPGPProtocol = 0; - delete mSMIMEProtocol; mSMIMEProtocol = 0; -} - -QString QGpgME::QGpgMEBackend::name() const -{ - return QStringLiteral("gpgme"); -} - -QString QGpgME::QGpgMEBackend::displayName() const -{ - return QStringLiteral("GpgME"); -} - -QGpgME::CryptoConfig *QGpgME::QGpgMEBackend::config() const -{ - if (!mCryptoConfig) { - if (GpgME::hasFeature(GpgME::GpgConfEngineFeature, 0)) { - mCryptoConfig = new QGpgMENewCryptoConfig; - } - } - return mCryptoConfig; -} - -static bool check(GpgME::Protocol proto, QString *reason) -{ - if (!GpgME::checkEngine(proto)) { - return true; - } - if (!reason) { - return false; - } - // error, check why: -#if 0 -Port away from localised string or delete. - const GpgME::EngineInfo ei = GpgME::engineInfo(proto); - if (ei.isNull()) { - *reason = i18n("GPGME was compiled without support for %1.", proto == GpgME::CMS ? QLatin1String("S/MIME") : QLatin1String("OpenPGP")); - } else if (ei.fileName() && !ei.version()) { - *reason = i18n("Engine %1 is not installed properly.", QFile::decodeName(ei.fileName())); - } else if (ei.fileName() && ei.version() && ei.requiredVersion()) - *reason = i18n("Engine %1 version %2 installed, " - "but at least version %3 is required.", - QFile::decodeName(ei.fileName()), QLatin1String(ei.version()), QLatin1String(ei.requiredVersion())); - else { - *reason = i18n("Unknown problem with engine for protocol %1.", proto == GpgME::CMS ? QLatin1String("S/MIME") : QLatin1String("OpenPGP")); - } #endif - return false; -} - -bool QGpgME::QGpgMEBackend::checkForOpenPGP(QString *reason) const -{ - return check(GpgME::OpenPGP, reason); -} - -bool QGpgME::QGpgMEBackend::checkForSMIME(QString *reason) const -{ - return check(GpgME::CMS, reason); -} - -bool QGpgME::QGpgMEBackend::checkForProtocol(const char *name, QString *reason) const -{ - if (qstricmp(name, OpenPGP) == 0) { - return check(GpgME::OpenPGP, reason); - } - if (qstricmp(name, SMIME) == 0) { - return check(GpgME::CMS, reason); - } - if (reason) { - *reason = QStringLiteral("Unsupported protocol \"%1\"").arg(QLatin1String(name)); - } - return false; -} - -QGpgME::Protocol *QGpgME::QGpgMEBackend::openpgp() const -{ - if (!mOpenPGPProtocol) - if (checkForOpenPGP()) { - mOpenPGPProtocol = new ::Protocol(GpgME::OpenPGP); - } - return mOpenPGPProtocol; -} - -QGpgME::Protocol *QGpgME::QGpgMEBackend::smime() const -{ - if (!mSMIMEProtocol) - if (checkForSMIME()) { - mSMIMEProtocol = new ::Protocol(GpgME::CMS); - } - return mSMIMEProtocol; -} - -QGpgME::Protocol *QGpgME::QGpgMEBackend::protocol(const char *name) const -{ - if (qstricmp(name, OpenPGP) == 0) { - return openpgp(); - } - if (qstricmp(name, SMIME) == 0) { - return smime(); - } - return 0; -} - -bool QGpgME::QGpgMEBackend::supportsProtocol(const char *name) const -{ - return qstricmp(name, OpenPGP) == 0 || qstricmp(name, SMIME) == 0; -} - -const char *QGpgME::QGpgMEBackend::enumerateProtocols(int i) const -{ - switch (i) { - case 0: return OpenPGP; - case 1: return SMIME; - default: return 0; - } -} - -static QGpgME::QGpgMEBackend *gpgmeBackend; - -QGpgME::Protocol *QGpgME::openpgp() -{ - if (!gpgmeBackend) { - gpgmeBackend = new QGpgME::QGpgMEBackend(); - } - return gpgmeBackend->openpgp(); -} - -QGpgME::Protocol *QGpgME::smime() -{ - if (!gpgmeBackend) { - gpgmeBackend = new QGpgME::QGpgMEBackend(); - } - return gpgmeBackend->smime(); -} diff --git a/lang/qt/src/qgpgmebackend.cpp b/lang/qt/src/qgpgmebackend.cpp index 27cd178..797e58a 100644 --- a/lang/qt/src/qgpgmebackend.cpp +++ b/lang/qt/src/qgpgmebackend.cpp @@ -33,351 +33,18 @@ #include "qgpgmebackend.h" -#include "qgpgmenewcryptoconfig.h" - -#include "qgpgmekeygenerationjob.h" -#include "qgpgmekeylistjob.h" -#include "qgpgmelistallkeysjob.h" -#include "qgpgmedecryptjob.h" -#include "qgpgmedecryptverifyjob.h" -#include "qgpgmerefreshkeysjob.h" -#include "qgpgmedeletejob.h" -#include "qgpgmesecretkeyexportjob.h" -#include "qgpgmedownloadjob.h" -#include "qgpgmesignencryptjob.h" -#include "qgpgmeencryptjob.h" -#include "qgpgmesignjob.h" -#include "qgpgmesignkeyjob.h" -#include "qgpgmeexportjob.h" -#include "qgpgmeverifydetachedjob.h" -#include "qgpgmeimportjob.h" -#include "qgpgmeimportfromkeyserverjob.h" -#include "qgpgmeverifyopaquejob.h" -#include "qgpgmechangeexpiryjob.h" -#include "qgpgmechangeownertrustjob.h" -#include "qgpgmechangepasswdjob.h" -#include "qgpgmeadduseridjob.h" #include "error.h" #include "engineinfo.h" +#include "protocol_p.h" + #include #include const char QGpgME::QGpgMEBackend::OpenPGP[] = "OpenPGP"; const char QGpgME::QGpgMEBackend::SMIME[] = "SMIME"; -namespace -{ - -class Protocol : public QGpgME::Protocol -{ - GpgME::Protocol mProtocol; -public: - explicit Protocol(GpgME::Protocol proto) : mProtocol(proto) {} - - QString name() const Q_DECL_OVERRIDE - { - switch (mProtocol) { - case GpgME::OpenPGP: return QStringLiteral("OpenPGP"); - case GpgME::CMS: return QStringLiteral("SMIME"); - default: return QString(); - } - } - - QString displayName() const Q_DECL_OVERRIDE - { - // ah (2.4.16): Where is this used and isn't this inverted - // with name - switch (mProtocol) { - case GpgME::OpenPGP: return QStringLiteral("gpg"); - case GpgME::CMS: return QStringLiteral("gpgsm"); - default: return QStringLiteral("unknown"); - } - } - - QGpgME::SpecialJob *specialJob(const char *, const QMap &) const Q_DECL_OVERRIDE - { - return 0; - } - - QGpgME::KeyListJob *keyListJob(bool remote, bool includeSigs, bool validate) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - unsigned int mode = context->keyListMode(); - if (remote) { - mode |= GpgME::Extern; - mode &= ~GpgME::Local; - } else { - mode |= GpgME::Local; - mode &= ~GpgME::Extern; - } - if (includeSigs) { - mode |= GpgME::Signatures; - } - if (validate) { - mode |= GpgME::Validate; - } - context->setKeyListMode(mode); - return new QGpgME::QGpgMEKeyListJob(context); - } - - QGpgME::ListAllKeysJob *listAllKeysJob(bool includeSigs, bool validate) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - unsigned int mode = context->keyListMode(); - mode |= GpgME::Local; - mode &= ~GpgME::Extern; - if (includeSigs) { - mode |= GpgME::Signatures; - } - if (validate) { - mode |= GpgME::Validate; - /* Setting the context to offline mode disables CRL / OCSP checks in - this Job. Otherwise we would try to fetch the CRL's for all CMS - keys in the users keyring because GpgME::Validate includes remote - resources by default in the validity check. - This setting only has any effect if gpgsm >= 2.1.6 is used. - */ - context->setOffline(true); - } - context->setKeyListMode(mode); - return new QGpgME::QGpgMEListAllKeysJob(context); - } - - QGpgME::EncryptJob *encryptJob(bool armor, bool textmode) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setArmor(armor); - context->setTextMode(textmode); - return new QGpgME::QGpgMEEncryptJob(context); - } - - QGpgME::DecryptJob *decryptJob() const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEDecryptJob(context); - } - - QGpgME::SignJob *signJob(bool armor, bool textMode) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setArmor(armor); - context->setTextMode(textMode); - return new QGpgME::QGpgMESignJob(context); - } - - QGpgME::VerifyDetachedJob *verifyDetachedJob(bool textMode) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setTextMode(textMode); - return new QGpgME::QGpgMEVerifyDetachedJob(context); - } - - QGpgME::VerifyOpaqueJob *verifyOpaqueJob(bool textMode) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setTextMode(textMode); - return new QGpgME::QGpgMEVerifyOpaqueJob(context); - } - - QGpgME::KeyGenerationJob *keyGenerationJob() const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEKeyGenerationJob(context); - } - - QGpgME::ImportJob *importJob() const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEImportJob(context); - } - - QGpgME::ImportFromKeyserverJob *importFromKeyserverJob() const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEImportFromKeyserverJob(context); - } - - QGpgME::ExportJob *publicKeyExportJob(bool armor) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setArmor(armor); - return new QGpgME::QGpgMEExportJob(context); - } - - QGpgME::ExportJob *secretKeyExportJob(bool armor, const QString &charset) const Q_DECL_OVERRIDE - { - if (mProtocol != GpgME::CMS) { // fixme: add support for gpg, too - return 0; - } - - // this operation is not supported by gpgme, so we have to call gpgsm ourselves: - return new QGpgME::QGpgMESecretKeyExportJob(armor, charset); - } - - QGpgME::RefreshKeysJob *refreshKeysJob() const Q_DECL_OVERRIDE - { - if (mProtocol != GpgME::CMS) { // fixme: add support for gpg, too - return 0; - } - - // this operation is not supported by gpgme, so we have to call gpgsm ourselves: - return new QGpgME::QGpgMERefreshKeysJob(); - } - - QGpgME::DownloadJob *downloadJob(bool armor) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setArmor(armor); - // this is the hackish interface for downloading from keyserers currently: - context->setKeyListMode(GpgME::Extern); - return new QGpgME::QGpgMEDownloadJob(context); - } - - QGpgME::DeleteJob *deleteJob() const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEDeleteJob(context); - } - - QGpgME::SignEncryptJob *signEncryptJob(bool armor, bool textMode) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setArmor(armor); - context->setTextMode(textMode); - return new QGpgME::QGpgMESignEncryptJob(context); - } - - QGpgME::DecryptVerifyJob *decryptVerifyJob(bool textMode) const Q_DECL_OVERRIDE - { - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - - context->setTextMode(textMode); - return new QGpgME::QGpgMEDecryptVerifyJob(context); - } - - QGpgME::ChangeExpiryJob *changeExpiryJob() const Q_DECL_OVERRIDE - { - if (mProtocol != GpgME::OpenPGP) { - return 0; // only supported by gpg - } - - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEChangeExpiryJob(context); - } - - QGpgME::ChangePasswdJob *changePasswdJob() const Q_DECL_OVERRIDE - { - if (!GpgME::hasFeature(GpgME::PasswdFeature, 0)) { - return 0; - } - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEChangePasswdJob(context); - } - - QGpgME::SignKeyJob *signKeyJob() const Q_DECL_OVERRIDE - { - if (mProtocol != GpgME::OpenPGP) { - return 0; // only supported by gpg - } - - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMESignKeyJob(context); - } - - QGpgME::ChangeOwnerTrustJob *changeOwnerTrustJob() const Q_DECL_OVERRIDE - { - if (mProtocol != GpgME::OpenPGP) { - return 0; // only supported by gpg - } - - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEChangeOwnerTrustJob(context); - } - - QGpgME::AddUserIDJob *addUserIDJob() const Q_DECL_OVERRIDE - { - if (mProtocol != GpgME::OpenPGP) { - return 0; // only supported by gpg - } - - GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol); - if (!context) { - return 0; - } - return new QGpgME::QGpgMEAddUserIDJob(context); - } - -}; - -} QGpgME::QGpgMEBackend::QGpgMEBackend() : mCryptoConfig(0), @@ -510,6 +177,15 @@ const char *QGpgME::QGpgMEBackend::enumerateProtocols(int i) const static QGpgME::QGpgMEBackend *gpgmeBackend; +QGpgME::CryptoConfig *QGpgME::cryptoConfig() +{ + if (!gpgmeBackend) { + gpgmeBackend = new QGpgME::QGpgMEBackend(); + } + return gpgmeBackend->config(); + +} + QGpgME::Protocol *QGpgME::openpgp() { if (!gpgmeBackend) { diff --git a/lang/qt/src/qgpgmebackend.h b/lang/qt/src/qgpgmebackend.h index 3b03633..cca8b71 100644 --- a/lang/qt/src/qgpgmebackend.h +++ b/lang/qt/src/qgpgmebackend.h @@ -36,35 +36,9 @@ #include -namespace QGpgME -{ -class CryptoConfig; -class KeyListJob; -class ListAllKeysJob; -class KeyGenerationJob; -class ImportJob; -class ImportFromKeyserverJob; -class ExportJob; -class DownloadJob; -class DeleteJob; -class EncryptJob; -class DecryptJob; -class SignJob; -class SignKeyJob; -class VerifyDetachedJob; -class VerifyOpaqueJob; -class SignEncryptJob; -class DecryptVerifyJob; -class RefreshKeysJob; -class ChangeExpiryJob; -class ChangeOwnerTrustJob; -class ChangePasswdJob; -class AddUserIDJob; -class SpecialJob; -} +#include "protocol.h" class QString; -class QVariant; template class QMap; namespace QGpgME @@ -72,19 +46,6 @@ namespace QGpgME class CryptoConfig; class Protocol; -/** Obtain a reference to the OpenPGP Protocol. - * - * The reference is to a static object. - * @returns Refrence to the OpenPGP Protocol. - */ -Protocol *openpgp(); - -/** Obtain a reference to the smime Protocol. - * - * The reference is to a static object. - * @returns Refrence to the smime Protocol. - */ -Protocol *smime(); class QGpgMEBackend { @@ -126,41 +87,6 @@ private: mutable Protocol *mSMIMEProtocol; }; -class Protocol -{ -public: - virtual ~Protocol() {} - - virtual QString name() const = 0; - - virtual QString displayName() const = 0; - - virtual KeyListJob *keyListJob(bool remote = false, bool includeSigs = false, bool validate = false) const = 0; - virtual ListAllKeysJob *listAllKeysJob(bool includeSigs = false, bool validate = false) const = 0; - virtual EncryptJob *encryptJob(bool armor = false, bool textmode = false) const = 0; - virtual DecryptJob *decryptJob() const = 0; - virtual SignJob *signJob(bool armor = false, bool textMode = false) const = 0; - virtual VerifyDetachedJob *verifyDetachedJob(bool textmode = false) const = 0; - virtual VerifyOpaqueJob *verifyOpaqueJob(bool textmode = false) const = 0; - virtual KeyGenerationJob *keyGenerationJob() const = 0; - virtual ImportJob *importJob() const = 0; - virtual ImportFromKeyserverJob *importFromKeyserverJob() const = 0; - virtual ExportJob *publicKeyExportJob(bool armor = false) const = 0; - // @param charset the encoding of the passphrase in the exported file - virtual ExportJob *secretKeyExportJob(bool armor = false, const QString &charset = QString()) const = 0; - virtual DownloadJob *downloadJob(bool armor = false) const = 0; - virtual DeleteJob *deleteJob() const = 0; - virtual SignEncryptJob *signEncryptJob(bool armor = false, bool textMode = false) const = 0; - virtual DecryptVerifyJob *decryptVerifyJob(bool textmode = false) const = 0; - virtual RefreshKeysJob *refreshKeysJob() const = 0; - virtual ChangeExpiryJob *changeExpiryJob() const = 0; - virtual SignKeyJob *signKeyJob() const = 0; - virtual ChangePasswdJob *changePasswdJob() const = 0; - virtual ChangeOwnerTrustJob *changeOwnerTrustJob() const = 0; - virtual AddUserIDJob *addUserIDJob() const = 0; - virtual SpecialJob *specialJob(const char *type, const QMap &args) const = 0; -}; - } #endif // __QGPGME_QGPGMEBACKEND_H__ commit 97225bb01cd2ffa1d84c7fedbc577275de4a4893 Author: Andre Heinecke Date: Tue May 10 12:52:43 2016 +0200 Qt: Make doxygen quieter * lang/qt/doc/Doxyfile.in: Quiet and no undocumented warnings. diff --git a/lang/qt/doc/Doxyfile.in b/lang/qt/doc/Doxyfile.in index b3b2fda..ef0a5c0 100644 --- a/lang/qt/doc/Doxyfile.in +++ b/lang/qt/doc/Doxyfile.in @@ -693,7 +693,7 @@ CITE_BIB_FILES = # messages are off. # The default value is: NO. -QUIET = NO +QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES @@ -709,7 +709,7 @@ WARNINGS = YES # will automatically be disabled. # The default value is: YES. -WARN_IF_UNDOCUMENTED = YES +WARN_IF_UNDOCUMENTED = NO # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters commit 740f92a7b83389ee9bde98b7bd25556793500b8b Author: Andre Heinecke Date: Tue May 10 12:47:53 2016 +0200 Qt: Only install public headers * lang/qt/src/Makefile.am: Do not install all headers. -- The qgpgme classes hide the implementation and thus make it easier to change it without ABI breaks. They should not be installed. diff --git a/lang/qt/src/Makefile.am b/lang/qt/src/Makefile.am index 6435983..30c24b9 100644 --- a/lang/qt/src/Makefile.am +++ b/lang/qt/src/Makefile.am @@ -35,29 +35,38 @@ qgpgme_sources = \ qgpgmeverifyopaquejob.cpp threadedjobmixin.cpp \ gpgme_backend_debug.cpp -qgpgme_headers = \ - qgpgme_export.h \ - abstractimportjob.h \ +qgpgme_headers= \ adduseridjob.h \ changeexpiryjob.h \ changeownertrustjob.h \ changepasswdjob.h \ - cryptoconfig.h \ dataprovider.h \ decryptjob.h \ decryptverifyjob.h \ - deletejob.h \ downloadjob.h \ encryptjob.h \ exportjob.h \ hierarchicalkeylistjob.h \ + job.h \ + multideletejob.h \ + qgpgme_export.h \ + qgpgmenewcryptoconfig.h \ + signjob.h \ + signkeyjob.h \ + signencryptjob.h \ + verifyopaquejob.h \ + refreshkeysjob.h \ + cryptoconfig.h \ + deletejob.h \ importfromkeyserverjob.h \ importjob.h \ - job.h \ keygenerationjob.h \ keylistjob.h \ - listallkeysjob.h \ - multideletejob.h \ + listallkeysjob.h + +private_qgpgme_headers = \ + qgpgme_export.h \ + abstractimportjob.h \ qgpgmeadduseridjob.h \ qgpgmebackend.h \ qgpgmechangeexpiryjob.h \ @@ -74,7 +83,6 @@ qgpgme_headers = \ qgpgmekeygenerationjob.h \ qgpgmekeylistjob.h \ qgpgmelistallkeysjob.h \ - qgpgmenewcryptoconfig.h \ qgpgmerefreshkeysjob.h \ qgpgmesecretkeyexportjob.h \ qgpgmesignencryptjob.h \ @@ -82,14 +90,8 @@ qgpgme_headers = \ qgpgmesignkeyjob.h \ qgpgmeverifydetachedjob.h \ qgpgmeverifyopaquejob.h \ - refreshkeysjob.h \ - signencryptjob.h \ - signjob.h \ - signkeyjob.h \ specialjob.h \ - threadedjobmixin.h \ - verifydetachedjob.h \ - verifyopaquejob.h + threadedjobmixin.h qgpgme_moc_sources = \ abstractimportjob.moc \ @@ -144,7 +146,7 @@ qgpgme_moc_sources = \ qgpgmeincludedir = $(includedir)/qgpgme qgpgmeinclude_HEADERS = $(qgpgme_headers) -libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) +libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers) AM_CPPFLAGS = @GPGME_QT_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \ -DBUILDING_QGPGME -I$(top_srcdir)/lang/cpp/src commit 0e3195948ddaba3af07d2415bb496491076edc17 Author: Andre Heinecke Date: Fri May 6 16:33:49 2016 +0200 Qt: Add test for async keylisting * src/lang/qt/tests/t-keylist.cpp(KeyListTest::testKeyListAsync): New. diff --git a/lang/qt/tests/t-keylist.cpp b/lang/qt/tests/t-keylist.cpp index 8aa5999..f5c7f13 100644 --- a/lang/qt/tests/t-keylist.cpp +++ b/lang/qt/tests/t-keylist.cpp @@ -1,15 +1,20 @@ #include #include +#include #include "keylistjob.h" #include "qgpgmebackend.h" #include "keylistresult.h" using namespace QGpgME; +using namespace GpgME; class KeyListTest : public QObject { Q_OBJECT +Q_SIGNALS: + void asyncDone(); + private Q_SLOTS: void testSingleKeyListSync() @@ -24,6 +29,19 @@ private Q_SLOTS: Q_ASSERT (kId == QStringLiteral("2D727CC768697734")); } + void testKeyListAsync() + { + KeyListJob *job = openpgp()->keyListJob(); + connect(job, &KeyListJob::result, job, [this, job](KeyListResult, std::vector keys, QString, Error) + { + Q_ASSERT(keys.size() == 1); + Q_EMIT asyncDone(); + }); + job->start(QStringList() << "alfa at example.net"); + QSignalSpy spy (this, &KeyListTest::asyncDone); + Q_ASSERT(spy.wait()); + } + void initTestCase() { const QString gpgHome = qgetenv("GNUPGHOME"); ----------------------------------------------------------------------- Summary of changes: lang/qt/doc/Doxyfile.in | 4 +- lang/qt/src/Makefile.am | 38 +-- lang/qt/src/dataprovider.h | 10 - lang/qt/src/hierarchicalkeylistjob.h | 2 +- lang/qt/src/multideletejob.h | 2 +- lang/qt/src/{qgpgmebackend.h => protocol.h} | 103 ++----- lang/qt/src/{qgpgmebackend.cpp => protocol_p.h} | 162 +---------- lang/qt/src/qgpgmeadduseridjob.h | 2 +- lang/qt/src/qgpgmebackend.cpp | 346 +----------------------- lang/qt/src/qgpgmebackend.h | 76 +----- lang/qt/src/qgpgmechangeexpiryjob.h | 2 +- lang/qt/src/qgpgmechangeownertrustjob.h | 2 +- lang/qt/src/qgpgmechangepasswdjob.h | 2 +- lang/qt/src/qgpgmedecryptjob.h | 8 +- lang/qt/src/qgpgmedecryptverifyjob.h | 8 +- lang/qt/src/qgpgmedeletejob.h | 2 +- lang/qt/src/qgpgmedownloadjob.h | 4 +- lang/qt/src/qgpgmeencryptjob.h | 10 +- lang/qt/src/qgpgmeexportjob.h | 2 +- lang/qt/src/qgpgmeimportfromkeyserverjob.h | 6 +- lang/qt/src/qgpgmeimportjob.h | 6 +- lang/qt/src/qgpgmekeygenerationjob.h | 2 +- lang/qt/src/qgpgmekeylistjob.h | 6 +- lang/qt/src/qgpgmelistallkeysjob.h | 6 +- lang/qt/src/qgpgmerefreshkeysjob.h | 4 +- lang/qt/src/qgpgmesecretkeyexportjob.h | 4 +- lang/qt/src/qgpgmesignencryptjob.h | 8 +- lang/qt/src/qgpgmesignjob.h | 10 +- lang/qt/src/qgpgmesignkeyjob.h | 12 +- lang/qt/src/qgpgmeverifydetachedjob.h | 8 +- lang/qt/src/qgpgmeverifyopaquejob.h | 8 +- lang/qt/tests/t-keylist.cpp | 18 ++ 32 files changed, 149 insertions(+), 734 deletions(-) copy lang/qt/src/{qgpgmebackend.h => protocol.h} (77%) copy lang/qt/src/{qgpgmebackend.cpp => protocol_p.h} (74%) hooks/post-receive -- GnuPG Made Easy http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 15:09:41 2016 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Tue, 10 May 2016 15:09:41 +0200 Subject: [git] GPGME - branch, gpgmepp, updated. gpgme-1.6.0-60-gc303292 Message-ID: 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, gpgmepp has been updated via c303292aca26c43b6efe98719edb3ff7b2d6665d (commit) from b7d5c2cced796d4092a9f424368fc999165f9d13 (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 c303292aca26c43b6efe98719edb3ff7b2d6665d Author: Andre Heinecke Date: Tue May 10 15:05:11 2016 +0200 Qt / Cpp: Fix make dist * lang/cpp/src/Makefile.am (EXTRA_DIST): Fix typo. (private_gpgmepp_headers): New. Private headers. (libgpgmepp_la_SOURCES): Add private headers. * lang/qt/src/Makefile.am (t_keylist_SOURCES): Remove non existent header. diff --git a/lang/cpp/src/Makefile.am b/lang/cpp/src/Makefile.am index e56b818..24e0461 100644 --- a/lang/cpp/src/Makefile.am +++ b/lang/cpp/src/Makefile.am @@ -18,7 +18,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA -EXTRA_DIST = GpgmeppConfig.cmake.in.in GpgmeConfigVersion.cmake.in +EXTRA_DIST = GpgmeppConfig.cmake.in.in GpgmeppConfigVersion.cmake.in lib_LTLIBRARIES = libgpgmepp.la @@ -45,6 +45,9 @@ gpgmepp_headers = \ notation.h result.h scdgetinfoassuantransaction.h signingresult.h \ trustitem.h verificationresult.h vfsmountresult.h gpgmepp_export.h +private_gpgmepp_headers = \ + result_p.h context_p.h util.h callbacks.h data_p.h + interface_headers= \ interfaces/assuantransaction.h interfaces/dataprovider.h \ interfaces/passphraseprovider.h interfaces/progressprovider.h @@ -54,7 +57,7 @@ gpgmeppinclude_HEADERS = $(gpgmepp_headers) nobase_gpgmeppinclude_HEADERS = $(interface_headers) libgpgmepp_la_SOURCES = $(main_sources) $(gpgmepp_headers) context_vanilla.cpp \ - $(interface_headers) + $(interface_headers) $(private_gpgmepp_headers) AM_CPPFLAGS = @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ -DBUILDING_GPGMEPP diff --git a/lang/qt/tests/Makefile.am b/lang/qt/tests/Makefile.am index def50c8..6da9d29 100644 --- a/lang/qt/tests/Makefile.am +++ b/lang/qt/tests/Makefile.am @@ -46,7 +46,7 @@ check-local: ./pubring-stamp # add this dependency: initial.test : check-local -t_keylist_SOURCES = t-keylist.cpp t-keylist.h +t_keylist_SOURCES = t-keylist.cpp nodist_t_keylist_SOURCES = $(moc_files) ----------------------------------------------------------------------- Summary of changes: lang/cpp/src/Makefile.am | 7 +++++-- lang/qt/tests/Makefile.am | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) hooks/post-receive -- GnuPG Made Easy http://git.gnupg.org From cvs at cvs.gnupg.org Tue May 10 16:45:16 2016 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Tue, 10 May 2016 16:45:16 +0200 Subject: [git] GPGME - branch, master, updated. gpgme-1.6.0-62-g34e5c5b Message-ID: 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 34e5c5b33de3608bedc2826be27a06e6eec0ea44 (commit) via c303292aca26c43b6efe98719edb3ff7b2d6665d (commit) via b7d5c2cced796d4092a9f424368fc999165f9d13 (commit) via 56c4d9ea9520c95612e525b2fa1359db6fa88f4a (commit) via 97225bb01cd2ffa1d84c7fedbc577275de4a4893 (commit) via 740f92a7b83389ee9bde98b7bd25556793500b8b (commit) via 0e3195948ddaba3af07d2415bb496491076edc17 (commit) via a579be82c84f0b9732ee3d52ff2142a3decf95d7 (commit) via 11ff8d5964bf66f905818514f6a51fc881ea1a56 (commit) via 20b02a7dd49c7ede148245d8a5319b2ba9ce7673 (commit) via cd267791e9bd73505a2a1ea90c85df988e153c19 (commit) via 3fad1216770f446a89801d842aa8667356a5ec95 (commit) via 5489532ad6ccf3a9b59405686b8a17352f1ecf06 (commit) via d949d711dc1d944a9d627d39a89af74943a5a8c1 (commit) via 6dba47c3a2c32d7c1e1d91a96030f99f606433ea (commit) via 8e7074dbb8093cc342e330bcd6b172b4f769a0c6 (commit) via d2b55101195efe9702e855a48fc6e21839fb98cc (commit) via a1e95f36ce1895cd9894f6d3ca76640c42c2f9fc (commit) via d9f7a18ed88127e7f05d770d55118d1e928f3b3f (commit) via afd8fad6e275e2f74b2ad045dce05d826986e2ec (commit) via e18256fc5f613da9406da60c3ef2f84f2be04ef0 (commit) via d293bd32293929eeb3f6ec35f916a4678fb51729 (commit) via 1bb162a54ba480413c4da07f2578efe6860494c0 (commit) via 691950e18cf08a3f9bbc2004501834cd47bea579 (commit) via cc68ff5f7210ac879fbdf719fcd5944f9ae5602b (commit) via f98898ab1a6952e0c3a5d235963a27eba2e19e46 (commit) via c07aaef6eb8a9b5e623479f27d562fd1570bf4bb (commit) via 0991485170ca4ef90fd566540522027d0fc59a72 (commit) via faf987dd62893955251378a2a715edd2892a540c (commit) via b7b9e38399a572cb61a297db552026eac5b2a5e1 (commit) via 0cc9006dbc59d87c6bcda88b36d59dcb69ac35cb (commit) via 3e38cc6fc67c420dec3e9e8afd072b4c8a157c85 (commit) via 7071b2a9c00b85d434d01b6166269ebf48b01b81 (commit) via 63c115b067400e1b02c7d849c99f54dc9f394d68 (commit) via 576be46f34b42e896a5e3be65560a4b518a758be (commit) via a440050fc2c11e4867da9d4707616fa23ac52141 (commit) via 226e51052ae73efa8d9f30729b28de68d35231af (commit) via 8347f3d5fc3e476aa767fbbaf09a1310a6154280 (commit) via 58ed9c17f00f420035ecc6973a6c6ed948757a9a (commit) via a06603d75e80aba58df58f9a41770c56b6a1f0b8 (commit) via 77c3fb450c7adf36804a55d76ff49a06a71d22a0 (commit) via 98e5b672422ca1e38ca38ff0357cee6cc936aee0 (commit) via c5291a88913ace8f2115021b69c7aeb59b4f79d4 (commit) via a313b3e28cc42785365822519b25d6a87dfdf0c9 (commit) via 7286fc7f3d51d475f82c7c9821d031290f5b0066 (commit) via f5fd787b5b45cb14d539b5c26f44066eb9ac0f75 (commit) via 433bb8e84b2d1e50b5c5b9f7f2006b60cd7d7785 (commit) via 0855a1296a1908016f011eb5e6552854ac53e63a (commit) from fc38c15136c87ce971a8381fa87399088dd5a3cc (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 34e5c5b33de3608bedc2826be27a06e6eec0ea44 Merge: fc38c15 c303292 Author: Andre Heinecke Date: Tue May 10 16:43:36 2016 +0200 Merge branch 'gpgmepp' ----------------------------------------------------------------------- Summary of changes: acinclude.m4 | 16 + configure.ac | 144 +- lang/Makefile.am | 2 +- lang/README | 2 + lang/{cl => cpp}/Makefile.am | 14 +- lang/cpp/README | 60 + lang/cpp/src/GpgmeppConfig.cmake.in.in | 108 + .../src/GpgmeppConfigVersion.cmake.in} | 22 +- lang/cpp/src/Makefile.am | 93 + lang/cpp/src/assuanresult.cpp | 90 + lang/cpp/src/assuanresult.h | 79 + lang/cpp/src/callbacks.cpp | 149 ++ lang/cpp/src/callbacks.h | 45 + lang/cpp/src/configuration.cpp | 934 ++++++++ lang/cpp/src/configuration.h | 290 +++ lang/cpp/src/context.cpp | 1494 +++++++++++++ lang/cpp/src/context.h | 353 +++ lang/cpp/src/context_glib.cpp | 35 + lang/cpp/src/context_p.h | 84 + lang/cpp/src/context_qt.cpp | 35 + lang/cpp/src/context_vanilla.cpp | 33 + lang/cpp/src/data.cpp | 208 ++ lang/cpp/src/data.h | 123 + lang/cpp/src/data_p.h | 40 + lang/cpp/src/decryptionresult.cpp | 240 ++ lang/cpp/src/decryptionresult.h | 130 ++ lang/cpp/src/defaultassuantransaction.cpp | 78 + lang/cpp/src/defaultassuantransaction.h | 65 + lang/cpp/src/editinteractor.cpp | 344 +++ lang/cpp/src/editinteractor.h | 68 + lang/cpp/src/encryptionresult.cpp | 159 ++ lang/cpp/src/encryptionresult.h | 113 + lang/cpp/src/engineinfo.cpp | 83 + lang/cpp/src/engineinfo.h | 70 + lang/cpp/src/error.h | 78 + lang/cpp/src/eventloopinteractor.cpp | 199 ++ lang/cpp/src/eventloopinteractor.h | 156 ++ lang/cpp/src/exception.cpp | 58 + lang/cpp/src/exception.h | 68 + lang/cpp/src/global.h | 206 ++ lang/cpp/src/gpgadduserideditinteractor.cpp | 189 ++ lang/cpp/src/gpgadduserideditinteractor.h | 67 + lang/cpp/src/gpgagentgetinfoassuantransaction.cpp | 119 + lang/cpp/src/gpgagentgetinfoassuantransaction.h | 73 + lang/cpp/src/gpgmefw.h | 70 + lang/cpp/src/gpgmepp_export.h | 53 + lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp | 141 ++ lang/cpp/src/gpgsetexpirytimeeditinteractor.h | 49 + lang/cpp/src/gpgsetownertrusteditinteractor.cpp | 151 ++ lang/cpp/src/gpgsetownertrusteditinteractor.h | 50 + lang/cpp/src/gpgsignkeyeditinteractor.cpp | 318 +++ lang/cpp/src/gpgsignkeyeditinteractor.h | 64 + lang/cpp/src/importresult.cpp | 215 ++ lang/cpp/src/importresult.h | 134 ++ lang/cpp/src/interfaces/assuantransaction.h | 49 + lang/cpp/src/interfaces/dataprovider.h | 53 + lang/cpp/src/interfaces/passphraseprovider.h | 40 + lang/cpp/src/interfaces/progressprovider.h | 40 + lang/cpp/src/key.cpp | 828 +++++++ lang/cpp/src/key.h | 380 ++++ lang/cpp/src/keygenerationresult.cpp | 92 + lang/cpp/src/keygenerationresult.h | 82 + lang/cpp/src/keylistresult.cpp | 107 + lang/cpp/src/keylistresult.h | 81 + lang/cpp/src/notation.h | 84 + lang/cpp/src/result.h | 58 + lang/cpp/src/result_p.h | 43 + lang/cpp/src/scdgetinfoassuantransaction.cpp | 156 ++ lang/cpp/src/scdgetinfoassuantransaction.h | 76 + lang/cpp/src/signingresult.cpp | 265 +++ lang/cpp/src/signingresult.h | 162 ++ lang/cpp/src/trustitem.cpp | 114 + lang/cpp/src/trustitem.h | 81 + lang/cpp/src/util.h | 146 ++ lang/cpp/src/verificationresult.cpp | 557 +++++ lang/cpp/src/verificationresult.h | 173 ++ lang/cpp/src/vfsmountresult.cpp | 90 + lang/cpp/src/vfsmountresult.h | 76 + lang/{cl => qt}/Makefile.am | 14 +- lang/qt/README | 40 + lang/qt/doc/Doxyfile.in | 2352 ++++++++++++++++++++ {tests/opassuan => lang/qt/doc}/Makefile.am | 24 +- lang/qt/src/Makefile.am | 195 ++ lang/qt/src/QGpgmeConfig.cmake.in.in | 107 + .../src/QGpgmeConfigVersion.cmake.in} | 22 +- lang/qt/src/abstractimportjob.h | 62 + lang/qt/src/adduseridjob.h | 84 + lang/qt/src/changeexpiryjob.h | 84 + lang/qt/src/changeownertrustjob.h | 81 + lang/qt/src/changepasswdjob.h | 82 + lang/qt/src/cryptoconfig.h | 399 ++++ lang/qt/src/dataprovider.cpp | 282 +++ lang/qt/src/dataprovider.h | 95 + lang/qt/src/decryptjob.h | 100 + lang/qt/src/decryptverifyjob.h | 105 + lang/qt/src/deletejob.h | 82 + lang/qt/src/downloadjob.h | 103 + lang/qt/src/encryptjob.h | 119 + lang/qt/src/exportjob.h | 86 + lang/qt/src/gpgme_backend_debug.cpp | 10 + lang/qt/src/gpgme_backend_debug.h | 11 + lang/qt/src/hierarchicalkeylistjob.h | 125 ++ lang/qt/src/importfromkeyserverjob.h | 83 + lang/qt/src/importjob.h | 82 + lang/qt/src/job.cpp | 150 ++ lang/qt/src/job.h | 92 + lang/qt/src/keygenerationjob.h | 84 + lang/qt/src/keylistjob.h | 105 + lang/qt/src/listallkeysjob.h | 103 + lang/qt/src/multideletejob.h | 107 + lang/qt/src/protocol.h | 123 + lang/qt/src/protocol_p.h | 371 +++ lang/qt/src/qgpgme_export.h | 53 + lang/qt/src/qgpgmeadduseridjob.cpp | 82 + lang/qt/src/qgpgmeadduseridjob.h | 65 + lang/qt/src/qgpgmebackend.cpp | 203 ++ lang/qt/src/qgpgmebackend.h | 92 + lang/qt/src/qgpgmechangeexpiryjob.cpp | 81 + lang/qt/src/qgpgmechangeexpiryjob.h | 66 + lang/qt/src/qgpgmechangeownertrustjob.cpp | 77 + lang/qt/src/qgpgmechangeownertrustjob.h | 65 + lang/qt/src/qgpgmechangepasswdjob.cpp | 79 + lang/qt/src/qgpgmechangepasswdjob.h | 66 + lang/qt/src/qgpgmedecryptjob.cpp | 128 ++ lang/qt/src/qgpgmedecryptjob.h | 84 + lang/qt/src/qgpgmedecryptverifyjob.cpp | 135 ++ lang/qt/src/qgpgmedecryptverifyjob.h | 89 + lang/qt/src/qgpgmedeletejob.cpp | 65 + lang/qt/src/qgpgmedeletejob.h | 71 + lang/qt/src/qgpgmedownloadjob.cpp | 100 + lang/qt/src/qgpgmedownloadjob.h | 69 + lang/qt/src/qgpgmeencryptjob.cpp | 160 ++ lang/qt/src/qgpgmeencryptjob.h | 99 + lang/qt/src/qgpgmeexportjob.cpp | 76 + lang/qt/src/qgpgmeexportjob.h | 66 + lang/qt/src/qgpgmeimportfromkeyserverjob.cpp | 82 + lang/qt/src/qgpgmeimportfromkeyserverjob.h | 81 + lang/qt/src/qgpgmeimportjob.cpp | 85 + lang/qt/src/qgpgmeimportjob.h | 81 + lang/qt/src/qgpgmekeygenerationjob.cpp | 71 + lang/qt/src/qgpgmekeygenerationjob.h | 72 + lang/qt/src/qgpgmekeylistjob.cpp | 167 ++ lang/qt/src/qgpgmekeylistjob.h | 87 + lang/qt/src/qgpgmelistallkeysjob.cpp | 168 ++ lang/qt/src/qgpgmelistallkeysjob.h | 86 + lang/qt/src/qgpgmenewcryptoconfig.cpp | 738 ++++++ lang/qt/src/qgpgmenewcryptoconfig.h | 189 ++ lang/qt/src/qgpgmerefreshkeysjob.cpp | 225 ++ lang/qt/src/qgpgmerefreshkeysjob.h | 79 + lang/qt/src/qgpgmesecretkeyexportjob.cpp | 142 ++ lang/qt/src/qgpgmesecretkeyexportjob.h | 81 + lang/qt/src/qgpgmesignencryptjob.cpp | 159 ++ lang/qt/src/qgpgmesignencryptjob.h | 109 + lang/qt/src/qgpgmesignjob.cpp | 163 ++ lang/qt/src/qgpgmesignjob.h | 101 + lang/qt/src/qgpgmesignkeyjob.cpp | 127 ++ lang/qt/src/qgpgmesignkeyjob.h | 94 + lang/qt/src/qgpgmeverifydetachedjob.cpp | 118 + lang/qt/src/qgpgmeverifydetachedjob.h | 85 + lang/qt/src/qgpgmeverifyopaquejob.cpp | 125 ++ lang/qt/src/qgpgmeverifyopaquejob.h | 84 + lang/qt/src/refreshkeysjob.h | 93 + lang/qt/src/signencryptjob.h | 135 ++ lang/qt/src/signjob.h | 122 + lang/qt/src/signkeyjob.h | 117 + lang/qt/src/specialjob.h | 90 + lang/qt/src/threadedjobmixin.cpp | 110 + lang/qt/src/threadedjobmixin.h | 272 +++ lang/qt/src/verifydetachedjob.h | 98 + lang/qt/src/verifyopaquejob.h | 101 + lang/qt/tests/Makefile.am | 72 + lang/qt/tests/initial.test | 2 + lang/qt/tests/t-keylist.cpp | 54 + m4/ax_cxx_compile_stdcxx.m4 | 562 +++++ m4/qt.m4 | 56 + src/Makefile.am | 33 +- src/kdpipeiodevice.cpp | 951 -------- src/kdpipeiodevice.h | 73 - src/kdpipeiodevice.moc | 183 -- src/w32-qt-io.cpp | 700 ------ 180 files changed, 25545 insertions(+), 2007 deletions(-) copy lang/{cl => cpp}/Makefile.am (70%) create mode 100644 lang/cpp/README create mode 100644 lang/cpp/src/GpgmeppConfig.cmake.in.in copy lang/{cl/Makefile.am => cpp/src/GpgmeppConfigVersion.cmake.in} (57%) create mode 100644 lang/cpp/src/Makefile.am create mode 100644 lang/cpp/src/assuanresult.cpp create mode 100644 lang/cpp/src/assuanresult.h create mode 100644 lang/cpp/src/callbacks.cpp create mode 100644 lang/cpp/src/callbacks.h create mode 100644 lang/cpp/src/configuration.cpp create mode 100644 lang/cpp/src/configuration.h create mode 100644 lang/cpp/src/context.cpp create mode 100644 lang/cpp/src/context.h create mode 100644 lang/cpp/src/context_glib.cpp create mode 100644 lang/cpp/src/context_p.h create mode 100644 lang/cpp/src/context_qt.cpp create mode 100644 lang/cpp/src/context_vanilla.cpp create mode 100644 lang/cpp/src/data.cpp create mode 100644 lang/cpp/src/data.h create mode 100644 lang/cpp/src/data_p.h create mode 100644 lang/cpp/src/decryptionresult.cpp create mode 100644 lang/cpp/src/decryptionresult.h create mode 100644 lang/cpp/src/defaultassuantransaction.cpp create mode 100644 lang/cpp/src/defaultassuantransaction.h create mode 100644 lang/cpp/src/editinteractor.cpp create mode 100644 lang/cpp/src/editinteractor.h create mode 100644 lang/cpp/src/encryptionresult.cpp create mode 100644 lang/cpp/src/encryptionresult.h create mode 100644 lang/cpp/src/engineinfo.cpp create mode 100644 lang/cpp/src/engineinfo.h create mode 100644 lang/cpp/src/error.h create mode 100644 lang/cpp/src/eventloopinteractor.cpp create mode 100644 lang/cpp/src/eventloopinteractor.h create mode 100644 lang/cpp/src/exception.cpp create mode 100644 lang/cpp/src/exception.h create mode 100644 lang/cpp/src/global.h create mode 100644 lang/cpp/src/gpgadduserideditinteractor.cpp create mode 100644 lang/cpp/src/gpgadduserideditinteractor.h create mode 100644 lang/cpp/src/gpgagentgetinfoassuantransaction.cpp create mode 100644 lang/cpp/src/gpgagentgetinfoassuantransaction.h create mode 100644 lang/cpp/src/gpgmefw.h create mode 100644 lang/cpp/src/gpgmepp_export.h create mode 100644 lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp create mode 100644 lang/cpp/src/gpgsetexpirytimeeditinteractor.h create mode 100644 lang/cpp/src/gpgsetownertrusteditinteractor.cpp create mode 100644 lang/cpp/src/gpgsetownertrusteditinteractor.h create mode 100644 lang/cpp/src/gpgsignkeyeditinteractor.cpp create mode 100644 lang/cpp/src/gpgsignkeyeditinteractor.h create mode 100644 lang/cpp/src/importresult.cpp create mode 100644 lang/cpp/src/importresult.h create mode 100644 lang/cpp/src/interfaces/assuantransaction.h create mode 100644 lang/cpp/src/interfaces/dataprovider.h create mode 100644 lang/cpp/src/interfaces/passphraseprovider.h create mode 100644 lang/cpp/src/interfaces/progressprovider.h create mode 100644 lang/cpp/src/key.cpp create mode 100644 lang/cpp/src/key.h create mode 100644 lang/cpp/src/keygenerationresult.cpp create mode 100644 lang/cpp/src/keygenerationresult.h create mode 100644 lang/cpp/src/keylistresult.cpp create mode 100644 lang/cpp/src/keylistresult.h create mode 100644 lang/cpp/src/notation.h create mode 100644 lang/cpp/src/result.h create mode 100644 lang/cpp/src/result_p.h create mode 100644 lang/cpp/src/scdgetinfoassuantransaction.cpp create mode 100644 lang/cpp/src/scdgetinfoassuantransaction.h create mode 100644 lang/cpp/src/signingresult.cpp create mode 100644 lang/cpp/src/signingresult.h create mode 100644 lang/cpp/src/trustitem.cpp create mode 100644 lang/cpp/src/trustitem.h create mode 100644 lang/cpp/src/util.h create mode 100644 lang/cpp/src/verificationresult.cpp create mode 100644 lang/cpp/src/verificationresult.h create mode 100644 lang/cpp/src/vfsmountresult.cpp create mode 100644 lang/cpp/src/vfsmountresult.h copy lang/{cl => qt}/Makefile.am (70%) create mode 100644 lang/qt/README create mode 100644 lang/qt/doc/Doxyfile.in copy {tests/opassuan => lang/qt/doc}/Makefile.am (72%) create mode 100644 lang/qt/src/Makefile.am create mode 100644 lang/qt/src/QGpgmeConfig.cmake.in.in copy lang/{cl/Makefile.am => qt/src/QGpgmeConfigVersion.cmake.in} (57%) create mode 100644 lang/qt/src/abstractimportjob.h create mode 100644 lang/qt/src/adduseridjob.h create mode 100644 lang/qt/src/changeexpiryjob.h create mode 100644 lang/qt/src/changeownertrustjob.h create mode 100644 lang/qt/src/changepasswdjob.h create mode 100644 lang/qt/src/cryptoconfig.h create mode 100644 lang/qt/src/dataprovider.cpp create mode 100644 lang/qt/src/dataprovider.h create mode 100644 lang/qt/src/decryptjob.h create mode 100644 lang/qt/src/decryptverifyjob.h create mode 100644 lang/qt/src/deletejob.h create mode 100644 lang/qt/src/downloadjob.h create mode 100644 lang/qt/src/encryptjob.h create mode 100644 lang/qt/src/exportjob.h create mode 100644 lang/qt/src/gpgme_backend_debug.cpp create mode 100644 lang/qt/src/gpgme_backend_debug.h create mode 100644 lang/qt/src/hierarchicalkeylistjob.h create mode 100644 lang/qt/src/importfromkeyserverjob.h create mode 100644 lang/qt/src/importjob.h create mode 100644 lang/qt/src/job.cpp create mode 100644 lang/qt/src/job.h create mode 100644 lang/qt/src/keygenerationjob.h create mode 100644 lang/qt/src/keylistjob.h create mode 100644 lang/qt/src/listallkeysjob.h create mode 100644 lang/qt/src/multideletejob.h create mode 100644 lang/qt/src/protocol.h create mode 100644 lang/qt/src/protocol_p.h create mode 100644 lang/qt/src/qgpgme_export.h create mode 100644 lang/qt/src/qgpgmeadduseridjob.cpp create mode 100644 lang/qt/src/qgpgmeadduseridjob.h create mode 100644 lang/qt/src/qgpgmebackend.cpp create mode 100644 lang/qt/src/qgpgmebackend.h create mode 100644 lang/qt/src/qgpgmechangeexpiryjob.cpp create mode 100644 lang/qt/src/qgpgmechangeexpiryjob.h create mode 100644 lang/qt/src/qgpgmechangeownertrustjob.cpp create mode 100644 lang/qt/src/qgpgmechangeownertrustjob.h create mode 100644 lang/qt/src/qgpgmechangepasswdjob.cpp create mode 100644 lang/qt/src/qgpgmechangepasswdjob.h create mode 100644 lang/qt/src/qgpgmedecryptjob.cpp create mode 100644 lang/qt/src/qgpgmedecryptjob.h create mode 100644 lang/qt/src/qgpgmedecryptverifyjob.cpp create mode 100644 lang/qt/src/qgpgmedecryptverifyjob.h create mode 100644 lang/qt/src/qgpgmedeletejob.cpp create mode 100644 lang/qt/src/qgpgmedeletejob.h create mode 100644 lang/qt/src/qgpgmedownloadjob.cpp create mode 100644 lang/qt/src/qgpgmedownloadjob.h create mode 100644 lang/qt/src/qgpgmeencryptjob.cpp create mode 100644 lang/qt/src/qgpgmeencryptjob.h create mode 100644 lang/qt/src/qgpgmeexportjob.cpp create mode 100644 lang/qt/src/qgpgmeexportjob.h create mode 100644 lang/qt/src/qgpgmeimportfromkeyserverjob.cpp create mode 100644 lang/qt/src/qgpgmeimportfromkeyserverjob.h create mode 100644 lang/qt/src/qgpgmeimportjob.cpp create mode 100644 lang/qt/src/qgpgmeimportjob.h create mode 100644 lang/qt/src/qgpgmekeygenerationjob.cpp create mode 100644 lang/qt/src/qgpgmekeygenerationjob.h create mode 100644 lang/qt/src/qgpgmekeylistjob.cpp create mode 100644 lang/qt/src/qgpgmekeylistjob.h create mode 100644 lang/qt/src/qgpgmelistallkeysjob.cpp create mode 100644 lang/qt/src/qgpgmelistallkeysjob.h create mode 100644 lang/qt/src/qgpgmenewcryptoconfig.cpp create mode 100644 lang/qt/src/qgpgmenewcryptoconfig.h create mode 100644 lang/qt/src/qgpgmerefreshkeysjob.cpp create mode 100644 lang/qt/src/qgpgmerefreshkeysjob.h create mode 100644 lang/qt/src/qgpgmesecretkeyexportjob.cpp create mode 100644 lang/qt/src/qgpgmesecretkeyexportjob.h create mode 100644 lang/qt/src/qgpgmesignencryptjob.cpp create mode 100644 lang/qt/src/qgpgmesignencryptjob.h create mode 100644 lang/qt/src/qgpgmesignjob.cpp create mode 100644 lang/qt/src/qgpgmesignjob.h create mode 100644 lang/qt/src/qgpgmesignkeyjob.cpp create mode 100644 lang/qt/src/qgpgmesignkeyjob.h create mode 100644 lang/qt/src/qgpgmeverifydetachedjob.cpp create mode 100644 lang/qt/src/qgpgmeverifydetachedjob.h create mode 100644 lang/qt/src/qgpgmeverifyopaquejob.cpp create mode 100644 lang/qt/src/qgpgmeverifyopaquejob.h create mode 100644 lang/qt/src/refreshkeysjob.h create mode 100644 lang/qt/src/signencryptjob.h create mode 100644 lang/qt/src/signjob.h create mode 100644 lang/qt/src/signkeyjob.h create mode 100644 lang/qt/src/specialjob.h create mode 100644 lang/qt/src/threadedjobmixin.cpp create mode 100644 lang/qt/src/threadedjobmixin.h create mode 100644 lang/qt/src/verifydetachedjob.h create mode 100644 lang/qt/src/verifyopaquejob.h create mode 100644 lang/qt/tests/Makefile.am create mode 100755 lang/qt/tests/initial.test create mode 100644 lang/qt/tests/t-keylist.cpp create mode 100644 m4/ax_cxx_compile_stdcxx.m4 create mode 100644 m4/qt.m4 delete mode 100644 src/kdpipeiodevice.cpp delete mode 100644 src/kdpipeiodevice.h delete mode 100644 src/kdpipeiodevice.moc delete mode 100644 src/w32-qt-io.cpp hooks/post-receive -- GnuPG Made Easy http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 11 12:38:48 2016 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Wed, 11 May 2016 12:38:48 +0200 Subject: [git] GnuPG - branch, master, updated. gnupg-2.1.12-6-g83a90a9 Message-ID: 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 "The GNU Privacy Guard". The branch, master has been updated via 83a90a916e8e2f8e44c3b11d11e1dd75f65a87fb (commit) from ac9ff644b12c4dfa55d466af8ae6af54d1646893 (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 83a90a916e8e2f8e44c3b11d11e1dd75f65a87fb Author: NIIBE Yutaka Date: Wed May 11 19:27:03 2016 +0900 g10: Fix signature checking. * g10/sig-check.c (check_signature_over_key_or_uid): Fix call to walk_kbnode. -- Thanks to Vincent Brillault (Feandil). GnuPG-bug-id: 2351 Signed-off-by: NIIBE Yutaka diff --git a/g10/sig-check.c b/g10/sig-check.c index 290f19a..7000b48 100644 --- a/g10/sig-check.c +++ b/g10/sig-check.c @@ -797,15 +797,20 @@ check_signature_over_key_or_uid (PKT_public_key *signer, *is_selfsig = 1; } else - /* See if one of the subkeys was the signer (although this is - extremely unlikely). */ { kbnode_t ctx = NULL; kbnode_t n; - while ((n = walk_kbnode (kb, &ctx, PKT_PUBLIC_SUBKEY))) + /* See if one of the subkeys was the signer (although this + is extremely unlikely). */ + while ((n = walk_kbnode (kb, &ctx, 0))) { - PKT_public_key *subk = n->pkt->pkt.public_key; + PKT_public_key *subk; + + if (n->pkt->pkttype != PKT_PUBLIC_SUBKEY) + continue; + + subk = n->pkt->pkt.public_key; if (sig->keyid[0] == subk->keyid[0] && sig->keyid[1] == subk->keyid[1]) /* Issued by a subkey. */ ----------------------------------------------------------------------- Summary of changes: g10/sig-check.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 11 12:41:43 2016 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 11 May 2016 12:41:43 +0200 Subject: [git] KSBA - branch, master, updated. libksba-1.3.4-2-g2a9fc56 Message-ID: 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 "KSBA is a library to access X.509 certificates and CMS data.". The branch, master has been updated via 2a9fc5654df497b91ab9b64e946c1e19371888e5 (commit) from ba090d96be474658dec13a3e2aa912022a3ef72f (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 2a9fc5654df497b91ab9b64e946c1e19371888e5 Author: Werner Koch Date: Wed May 11 12:40:12 2016 +0200 Make sure that ASN.1 data is stored in an all-initialized buffer. * src/ber-decoder.c (decoder_next): Clear the image buffer. -- Signed-off-by: Werner Koch diff --git a/src/ber-decoder.c b/src/ber-decoder.c index 9e70d92..dde73fd 100644 --- a/src/ber-decoder.c +++ b/src/ber-decoder.c @@ -857,12 +857,17 @@ decoder_next (BerDecoder d) if (!d->image.buf) { /* We need some extra bytes to store the stuff we read ahead - at the end of the module which is later pushed back. */ + * at the end of the module which is later pushed back. We + * also clear the buffer because there is no guarantee that + * we will copy data to all bytes of the buffer: A broken + * ASN.1 encoding may thus lead to access of uninitialized + * data even if we make sure that that access is not our of + * bounds. */ d->image.used = 0; d->image.length = ti.length + 100; if (d->image.length < ti.length) return gpg_error (GPG_ERR_BAD_BER); - d->image.buf = xtrymalloc (d->image.length); + d->image.buf = xtrycalloc (1, d->image.length); if (!d->image.buf) return gpg_error (GPG_ERR_ENOMEM); } @@ -1133,7 +1138,7 @@ _ksba_ber_decoder_dump (BerDecoder d, FILE *fp) p = ksba_oid_to_str (buf, n); break; default: - for (i=0; i < n && i < 20; i++) + for (i=0; i < n && (d->debug || i < 20); i++) fprintf (fp,"%02x", buf[i]); if (i < n) fputs ("..more..", fp); ----------------------------------------------------------------------- Summary of changes: src/ber-decoder.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) hooks/post-receive -- KSBA is a library to access X.509 certificates and CMS data. http://git.gnupg.org From cvs at cvs.gnupg.org Wed May 11 13:55:31 2016 From: cvs at cvs.gnupg.org (by Justus Winter) Date: Wed, 11 May 2016 13:55:31 +0200 Subject: [git] GPGME - branch, justus/pyme3, created. gpgme-1.6.0-36-gbbeee5e Message-ID: 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, justus/pyme3 has been created at bbeee5e1a060f2d1e37a08220eb552cf4673a058 (commit) - Log ----------------------------------------------------------------- commit bbeee5e1a060f2d1e37a08220eb552cf4673a058 Author: Justus Winter Date: Wed May 11 13:51:40 2016 +0200 python: Fix simple example. * lang/python/examples/simple.py: Flush stdout, encode name as UTF-8 before passing it to GPGME. Signed-off-by: Justus Winter diff --git a/lang/python/examples/simple.py b/lang/python/examples/simple.py index 5693d40..739291e 100755 --- a/lang/python/examples/simple.py +++ b/lang/python/examples/simple.py @@ -36,8 +36,9 @@ c.set_armor(1) # Set up the recipients. sys.stdout.write("Enter name of your recipient: ") +sys.stdout.flush() name = sys.stdin.readline().strip() -c.op_keylist_start(name, 0) +c.op_keylist_start(name.encode(), 0) r = c.op_keylist_next() if r == None: commit a29babd07cf9f9625d2b5aa2eb6b7bc9d1828359 Author: Justus Winter Date: Wed May 11 11:42:00 2016 +0200 python: Integrate into the build system. * configure.ac: Make Python bindings configurable, add new Makefile. * lang/python/Makefile.am: New file. * lang/python/setup.py: Integrate into the build system. * m4/ax_pkg_swig.m4: New file from the autoconf archive. * m4/m4_ax_swig_python.m4: Likewise. Signed-off-by: Justus Winter diff --git a/configure.ac b/configure.ac index 55c388e..96df059 100644 --- a/configure.ac +++ b/configure.ac @@ -587,6 +587,32 @@ AC_SUBST(emacs_local_vars_begin, [['Local][ ][Variables:']]) AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t']) AC_SUBST(emacs_local_vars_end, ['End:']) +# Bindings. +AC_ARG_ENABLE([python], + AC_HELP_STRING([--enable-python], + [build the Python3 bindings]), + [enable_python=$enableval], + [enable_python=auto]) +AX_PKG_SWIG +if test -z "$SWIG"; then + if test $enable_python = yes; then + die=yes + AC_MSG_NOTICE([[ +*** +*** You need SWIG to build the Python bindings. +***]]) + else + enable_python=no + fi +else + if test $enable_python = auto; then + enable_python=yes + fi +fi +if test $enable_python = yes; then + AM_PATH_PYTHON([3.2]) + AX_SWIG_PYTHON +fi # Last check. die=no @@ -632,7 +658,8 @@ AC_CONFIG_FILES(Makefile src/Makefile src/versioninfo.rc src/gpgme.h) AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config) -AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd]) +AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd + lang/python/Makefile]) AC_OUTPUT echo " @@ -644,6 +671,8 @@ echo " UI Server: $uiserver FD Passing: $use_descriptor_passing GPGME Pthread: $have_pthread + + Python bindings: $enable_python " if test "x${gpg_config_script_warn}" != x; then cat <. + +EXTRA_DIST = README.rst + +# Cleanup gpgme.h from deprecated functions and typedefs. +gpgme.h: ../../src/gpgme.h + $(PYTHON) $(srcdir)/gpgme-h-clean.py $< >$@ + +# For VPATH builds we need to copy some files because Python's +# distutils are not VPATH-aware. +copystamp: $(srcdir)/pyme $(srcdir)/helpers.c $(srcdir)/helpers.h + if test "$(srcdir)" != "$(builddir)" ; then cp -a $^ . ; fi + touch $@ + +gpgme_wrap.c pyme/pygpgme.py: gpgme.i gpgme.h copystamp + $(SWIG) -python -py3 $(SWIGOPT) \ + -o $(builddir)/gpgme_wrap.c -outdir $(builddir)/pyme \ + $< + +all-local: gpgme_wrap.c pyme/pygpgme.py copystamp + $(PYTHON) $(srcdir)/setup.py build --verbose + +clean-local: + rm -rf -- build gpgme.h gpgme_wrap.c pyme/pygpgme.py copystamp + if test "$(srcdir)" != "$(builddir)" ; then \ + rm -rf pyme helpers.c helpers.h ; \ + fi + +install-exec-local: + $(PYTHON) $(srcdir)/setup.py install \ + --prefix $(DESTDIR)$(prefix) \ + --record $(DESTDIR)$(pythondir)/pyme/install_files.txt \ + --verbose + +uninstall-local: + xargs <$(DESTDIR)$(pythondir)/pyme/install_files.txt -- rm -rf -- + rm -rf -- $(DESTDIR)$(pythondir)/pyme diff --git a/lang/python/setup.py b/lang/python/setup.py index 562c08f..f3d9143 100755 --- a/lang/python/setup.py +++ b/lang/python/setup.py @@ -22,31 +22,23 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # END OF COPYRIGHT # - from distutils.core import setup, Extension -from distutils.command.build_ext import build_ext import os, os.path, sys import subprocess -sys.path.append("pyme") -import version +sys.path.insert(0, os.path.dirname(__file__)) +import pyme.version def getconfig(what): - try: - process = subprocess.Popen(["gpgme-config", "--%s" % what], - stdout=subprocess.PIPE) - confdata = process.communicate()[0] - except OSError as e: - if e.errno == os.errno.ENOENT: - raise RuntimeError("Could not call gpgme-config, perhaps install libgpgme-dev") - else: - raise + confdata = subprocess.Popen(["../../src/gpgme-config", "--%s" % what], + stdout=subprocess.PIPE).communicate()[0] return [x for x in confdata.decode('utf-8').split() if x != ''] include_dirs = [os.getcwd()] define_macros = [] -library_dirs = [] +library_dirs = ["../../src/.libs"] # XXX uses libtool internals libs = getconfig('libs') + for item in getconfig('cflags'): if item.startswith("-I"): include_dirs.append(item[2:]) @@ -82,16 +74,6 @@ if uname_s.startswith("MINGW32"): library_dirs.append(os.path.join(tgt, item)) break -try: - subprocess.call("swig") -except OSError as e: - if e.errno == os.errno.ENOENT: - raise RuntimeError("Could not call swig, perhaps install swig.") - else: - raise - -subprocess.call(["make swig"], shell=True) - swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"], include_dirs = include_dirs, define_macros = define_macros, @@ -99,15 +81,15 @@ swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"], extra_link_args = libs) setup(name = "pyme", - version = version.versionstr, - description = version.description, - author = version.author, - author_email = version.author_email, - url = version.homepage, + version=pyme.version.versionstr, + description=pyme.version.description, + author=pyme.version.author, + author_email=pyme.version.author_email, + url=pyme.version.homepage, ext_modules=[swige], packages = ['pyme', 'pyme.constants', 'pyme.constants.data', 'pyme.constants.keylist', 'pyme.constants.sig'], - license = version.copyright + \ + license=pyme.version.copyright + \ ", Licensed under the GPL version 2 and the LGPL version 2.1" ) diff --git a/m4/ax_pkg_swig.m4 b/m4/ax_pkg_swig.m4 new file mode 100644 index 0000000..d836eec --- /dev/null +++ b/m4/ax_pkg_swig.m4 @@ -0,0 +1,135 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_pkg_swig.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PKG_SWIG([major.minor.micro], [action-if-found], [action-if-not-found]) +# +# DESCRIPTION +# +# This macro searches for a SWIG installation on your system. If found, +# then SWIG is AC_SUBST'd; if not found, then $SWIG is empty. If SWIG is +# found, then SWIG_LIB is set to the SWIG library path, and AC_SUBST'd. +# +# You can use the optional first argument to check if the version of the +# available SWIG is greater than or equal to the value of the argument. It +# should have the format: N[.N[.N]] (N is a number between 0 and 999. Only +# the first N is mandatory.) If the version argument is given (e.g. +# 1.3.17), AX_PKG_SWIG checks that the swig package is this version number +# or higher. +# +# As usual, action-if-found is executed if SWIG is found, otherwise +# action-if-not-found is executed. +# +# In configure.in, use as: +# +# AX_PKG_SWIG(1.3.17, [], [ AC_MSG_ERROR([SWIG is required to build..]) ]) +# AX_SWIG_ENABLE_CXX +# AX_SWIG_MULTI_MODULE_SUPPORT +# AX_SWIG_PYTHON +# +# LICENSE +# +# Copyright (c) 2008 Sebastian Huber +# Copyright (c) 2008 Alan W. Irwin +# Copyright (c) 2008 Rafael Laboissiere +# Copyright (c) 2008 Andrew Collier +# Copyright (c) 2011 Murray Cumming +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 11 + +AC_DEFUN([AX_PKG_SWIG],[ + # Ubuntu has swig 2.0 as /usr/bin/swig2.0 + AC_PATH_PROGS([SWIG],[swig swig2.0]) + if test -z "$SWIG" ; then + m4_ifval([$3],[$3],[:]) + elif test -n "$1" ; then + AC_MSG_CHECKING([SWIG version]) + [swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`] + AC_MSG_RESULT([$swig_version]) + if test -n "$swig_version" ; then + # Calculate the required version number components + [required=$1] + [required_major=`echo $required | sed 's/[^0-9].*//'`] + if test -z "$required_major" ; then + [required_major=0] + fi + [required=`echo $required | sed 's/[0-9]*[^0-9]//'`] + [required_minor=`echo $required | sed 's/[^0-9].*//'`] + if test -z "$required_minor" ; then + [required_minor=0] + fi + [required=`echo $required | sed 's/[0-9]*[^0-9]//'`] + [required_patch=`echo $required | sed 's/[^0-9].*//'`] + if test -z "$required_patch" ; then + [required_patch=0] + fi + # Calculate the available version number components + [available=$swig_version] + [available_major=`echo $available | sed 's/[^0-9].*//'`] + if test -z "$available_major" ; then + [available_major=0] + fi + [available=`echo $available | sed 's/[0-9]*[^0-9]//'`] + [available_minor=`echo $available | sed 's/[^0-9].*//'`] + if test -z "$available_minor" ; then + [available_minor=0] + fi + [available=`echo $available | sed 's/[0-9]*[^0-9]//'`] + [available_patch=`echo $available | sed 's/[^0-9].*//'`] + if test -z "$available_patch" ; then + [available_patch=0] + fi + # Convert the version tuple into a single number for easier comparison. + # Using base 100 should be safe since SWIG internally uses BCD values + # to encode its version number. + required_swig_vernum=`expr $required_major \* 10000 \ + \+ $required_minor \* 100 \+ $required_patch` + available_swig_vernum=`expr $available_major \* 10000 \ + \+ $available_minor \* 100 \+ $available_patch` + + if test $available_swig_vernum -lt $required_swig_vernum; then + AC_MSG_WARN([SWIG version >= $1 is required. You have $swig_version.]) + SWIG='' + m4_ifval([$3],[$3],[]) + else + AC_MSG_CHECKING([for SWIG library]) + SWIG_LIB=`$SWIG -swiglib` + AC_MSG_RESULT([$SWIG_LIB]) + m4_ifval([$2],[$2],[]) + fi + else + AC_MSG_WARN([cannot determine SWIG version]) + SWIG='' + m4_ifval([$3],[$3],[]) + fi + fi + AC_SUBST([SWIG_LIB]) +]) diff --git a/m4/m4_ax_swig_python.m4 b/m4/m4_ax_swig_python.m4 new file mode 100644 index 0000000..bf22558 --- /dev/null +++ b/m4/m4_ax_swig_python.m4 @@ -0,0 +1,64 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_swig_python.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_SWIG_PYTHON([use-shadow-classes = {no, yes}]) +# +# DESCRIPTION +# +# Checks for Python and provides the $(AX_SWIG_PYTHON_CPPFLAGS), and +# $(AX_SWIG_PYTHON_OPT) output variables. +# +# $(AX_SWIG_PYTHON_OPT) contains all necessary SWIG options to generate +# code for Python. Shadow classes are enabled unless the value of the +# optional first argument is exactly 'no'. If you need multi module +# support (provided by the AX_SWIG_MULTI_MODULE_SUPPORT macro) use +# $(AX_SWIG_PYTHON_LIBS) to link against the appropriate library. It +# contains the SWIG Python runtime library that is needed by the type +# check system for example. +# +# LICENSE +# +# Copyright (c) 2008 Sebastian Huber +# Copyright (c) 2008 Alan W. Irwin +# Copyright (c) 2008 Rafael Laboissiere +# Copyright (c) 2008 Andrew Collier +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 10 + +AU_ALIAS([SWIG_PYTHON], [AX_SWIG_PYTHON]) +AC_DEFUN([AX_SWIG_PYTHON],[ + AC_REQUIRE([AX_PKG_SWIG]) + AC_REQUIRE([AX_PYTHON_DEVEL]) + test "x$1" != "xno" || swig_shadow=" -noproxy" + AC_SUBST([AX_SWIG_PYTHON_OPT],[-python$swig_shadow]) + AC_SUBST([AX_SWIG_PYTHON_CPPFLAGS],[$PYTHON_CPPFLAGS]) +]) commit 11392a80d9a85bcd8718b105e6d58038e61beaac Author: Justus Winter Date: Tue May 10 14:45:44 2016 +0200 python: PEP8 fixes. Cherry picked from 0267c151. Signed-off-by: Justus Winter diff --git a/lang/python/examples/delkey.py b/lang/python/examples/delkey.py index dfcc5ea..600e0c0 100755 --- a/lang/python/examples/delkey.py +++ b/lang/python/examples/delkey.py @@ -2,10 +2,10 @@ # $Id$ # Copyright (C) 2004,2008 Igor Belyi # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,7 +14,8 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA # Sample of key deletion # It deletes keys for joe at example.org generated by genkey.pl script @@ -23,9 +24,10 @@ from pyme import core core.check_version(None) -# Note that we need to collect all keys out of the iterator return by c.op_keylist_all() -# method before starting to delete them. If you delete a key in the middle of iteration -# c.op_keylist_next() will raise INV_VALUE exception +# Note that we need to collect all keys out of the iterator return by +# c.op_keylist_all() method before starting to delete them. If you +# delete a key in the middle of iteration c.op_keylist_next() will +# raise INV_VALUE exception c = core.Context() # 0 in keylist means to list not only public but secret keys as well. diff --git a/lang/python/examples/encrypt-to-all.py b/lang/python/examples/encrypt-to-all.py index c890df4..672e661 100755 --- a/lang/python/examples/encrypt-to-all.py +++ b/lang/python/examples/encrypt-to-all.py @@ -3,10 +3,10 @@ # Copyright (C) 2008 Igor Belyi # Copyright (C) 2002 John Goerzen # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,7 +15,8 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA """ This program will try to encrypt a simple message to each key on your @@ -46,11 +47,11 @@ for key in c.op_keylist_all(None, 0): valid = 0 for subkey in key.subkeys: keyid = subkey.keyid - if keyid == None: + if keyid is None: break can_encrypt = subkey.can_encrypt valid += can_encrypt - print(" Subkey %s: encryption %s" % \ + print(" Subkey %s: encryption %s" % (keyid, can_encrypt and "enabled" or "disabled")) except UnicodeEncodeError as e: print(e) @@ -64,5 +65,3 @@ passno = 0 print("Encrypting to %d recipients" % len(names)) print(sendto(names)) - - diff --git a/lang/python/examples/exportimport.py b/lang/python/examples/exportimport.py index 54204fb..6c7d5b8 100755 --- a/lang/python/examples/exportimport.py +++ b/lang/python/examples/exportimport.py @@ -2,10 +2,10 @@ # $Id$ # Copyright (C) 2004,2008 Igor Belyi # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,7 +14,8 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA # Sample of export and import of keys # It uses keys for joe at example.org generated by genkey.pl script @@ -33,7 +34,7 @@ print(" - Export %s's public keys - " % user) c.op_export(user, 0, expkey) # print out exported data to see how it looks in armor. -expkey.seek(0,0) +expkey.seek(0, 0) expstring = expkey.read() if expstring: print(expstring) @@ -46,10 +47,10 @@ else: # Note that since joe's key has private part as well we can only delete # both of them. As a side effect joe won't have private key for this # exported public one. If it's Ok with you uncomment the next 4 lines. -#print " - Delete %s's public keys - " % user -#for thekey in [x for x in c.op_keylist_all(user, 0)]: -# if not thekey.secret: -# c.op_delete(thekey, 1) +# print " - Delete %s's public keys - " % user +# for thekey in [x for x in c.op_keylist_all(user, 0)]: +# if not thekey.secret: +# c.op_delete(thekey, 1) # initialize import data from a string as if it was read from a file. @@ -63,11 +64,11 @@ result = c.op_import_result() if result: print(" - Result of the import - ") for k in dir(result): - if not k in result.__dict__ and not k.startswith("_"): + if k not in result.__dict__ and not k.startswith("_"): if k == "imports": print(k, ":") for impkey in result.__getattr__(k): - print(" fpr=%s result=%d status=%x" % \ + print(" fpr=%s result=%d status=%x" % (impkey.fpr, impkey.result, impkey.status)) else: print(k, ":", result.__getattr__(k)) diff --git a/lang/python/examples/inter-edit.py b/lang/python/examples/inter-edit.py index f97232b..32f8edd 100644 --- a/lang/python/examples/inter-edit.py +++ b/lang/python/examples/inter-edit.py @@ -14,9 +14,11 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA -import os, sys +import os +import sys from pyme import core from pyme.core import Data, Context from pyme.constants import status @@ -29,12 +31,13 @@ for name in dir(status): if not name.startswith('__') and name != "util": stat2str[getattr(status, name)] = name + # Print the output received since the last prompt before giving the new prompt def edit_fnc(stat, args, helper): global stat_strings try: while True: - helper["data"].seek(helper["skip"],0) + helper["data"].seek(helper["skip"], 0) data = helper["data"].read() helper["skip"] += len(data) print(data) @@ -53,5 +56,5 @@ else: helper = {"skip": 0, "data": out} c.op_edit(key, edit_fnc, helper, out) print("[-- Final output --]") - out.seek(helper["skip"],0) + out.seek(helper["skip"], 0) print(out.read()) commit aade53a12b9716997684b872bc2ac87229f73fb3 Author: Justus Winter Date: Tue May 10 13:30:30 2016 +0200 python: Delete trailing whitespace. -- Signed-off-by: Justus Winter diff --git a/lang/python/README.rst b/lang/python/README.rst index 4cad03a..57df1f2 100644 --- a/lang/python/README.rst +++ b/lang/python/README.rst @@ -22,7 +22,7 @@ Authors * Martin Albrecht, `PyME 0.9+ `_, 2014 to present. * Ben McGinnes, `PyME Python 3 Port `_, 2015 to present. - + ------------ Mailing List ------------ diff --git a/lang/python/docs/old-commits.log b/lang/python/docs/old-commits.log index 4d2bfe0..0db59a0 100644 --- a/lang/python/docs/old-commits.log +++ b/lang/python/docs/old-commits.log @@ -4,7 +4,7 @@ Author: Ben McGinnes Date: Wed May 6 03:04:19 2015 +1000 Merge pull request #4 from Hasimir/master - + history commit 2036f1a0a670a0561993e195c458059220b36114 @@ -19,7 +19,7 @@ Author: Ben McGinnes Date: Wed May 6 02:52:23 2015 +1000 Added a short history - + * A (very) brief summary of the project's history since 2002. * Deals with why the commit log in the GPGME repo does not include the history of PyME. @@ -36,7 +36,7 @@ Author: Ben McGinnes Date: Wed May 6 02:21:34 2015 +1000 Merge pull request #3 from Hasimir/master - + Version release preparation commit 7c37a27a6845c58222d4d947c2efbe38e955b612 @@ -51,7 +51,7 @@ Author: Ben McGinnes Date: Wed May 6 02:09:44 2015 +1000 TODO update - + * Removed reference to GitHub, replaced with impending new home at gnupg.org. docs/TODO.rst | 4 ++-- @@ -62,7 +62,7 @@ Author: Ben McGinnes Date: Wed May 6 02:00:44 2015 +1000 Version bump - + * Bumped version number to 0.9.1 to keep it somewhat in line with the existing PyME project, even though there will be some divergence at some point (or even re-merging, depending on how many of the Python 3 @@ -80,7 +80,7 @@ Author: Ben McGinnes Date: Wed May 6 01:48:01 2015 +1000 README preparation. - + * Changes in preparation for impending move of code to the GnuPG git server as a part of GPGME. @@ -92,7 +92,7 @@ Author: Ben McGinnes Date: Wed May 6 01:43:53 2015 +1000 TODO moved to docs - + * As it says. TODO.rst | 25 ------------------------- @@ -114,7 +114,7 @@ Author: Ben McGinnes Date: Sun May 3 14:59:44 2015 +1000 Merge pull request #2 from Hasimir/master - + Minor editing. commit 44837f6e50fc539c86aef1f75a6a3538b02029ea @@ -122,7 +122,7 @@ Author: Ben McGinnes Date: Sun May 3 14:56:55 2015 +1000 Minor editing. - + * Fixed another URL. * Changed Py3 version's version number to v0.9.1-beta0. @@ -135,7 +135,7 @@ Author: Ben McGinnes Date: Sun May 3 14:26:11 2015 +1000 Merge pull request #1 from Hasimir/master - + Links commit 48eb1856cb0739cc9f0b9084da9d965e1fc7fddd @@ -143,7 +143,7 @@ Author: Ben McGinnes Date: Sun May 3 14:22:30 2015 +1000 Links - + * Fixed URLs for authors. * Updated my entry to point to github location. ** I strongly suspect the result of this work will be concurrent @@ -157,9 +157,9 @@ Author: Ben McGinnes Date: Sun May 3 11:29:00 2015 +1000 Explicit over Implicit ... - + ... isn't just for code. - + * Removed the 2to3 working directory and its contents. * Made the README.rst file a little more clear that this branch is for Python 3 (set Python 3.2 as a fairly arbitrary requirement for the @@ -176,7 +176,7 @@ Author: Ben McGinnes Date: Sun May 3 11:19:41 2015 +1000 Added authors. - + * In alphabetical order. * Mine will need updating once Martin and I have decided what to do regarding the two main branches. @@ -189,7 +189,7 @@ Author: Ben McGinnes Date: Sun May 3 10:23:00 2015 +1000 Docs and other things. - + * Now able to import pyme.core without error, indicates port process is successful. * Code is *not* compatible with the Python 2 version. @@ -227,7 +227,7 @@ Author: Ben McGinnes Date: Sun May 3 10:08:22 2015 +1000 Bytes vs. Unicode - + * Trying PyBytes instead of PyUnicode. gpgme.i | 14 +++++++------- @@ -239,7 +239,7 @@ Author: Ben McGinnes Date: Sun May 3 09:22:58 2015 +1000 String to Unicode - + * Replaced all instances of PyString with PyUnicode (and hoping there's no byte data in there). @@ -252,7 +252,7 @@ Author: Ben McGinnes Date: Sun May 3 09:17:06 2015 +1000 PyInt_AsLong - + * Replaced all instances of PyInt with PyLong, as per C API docs. gpgme.i | 4 ++-- @@ -264,7 +264,7 @@ Author: Ben McGinnes Date: Sun May 3 05:59:36 2015 +1000 Import correction - + * Once pygpgme.py is generated and moved, it will be in the right directory for the explicit "from . import pygpgme" to be correct. @@ -303,10 +303,10 @@ Author: Ben McGinnes Date: Sun May 3 04:53:21 2015 +1000 Pet Peeve - + def pet_peeve(self): peeve = print("people who don't press return after a colon!") - + FFS! pyme/core.py | 5 +++-- @@ -371,7 +371,7 @@ Author: Ben McGinnes Date: Sun May 3 03:51:48 2015 +1000 Linking swig to py3 - + * Changed the swig invocations to run with the -python -py3 flags explicitly. Makefile | 4 ++-- @@ -383,7 +383,7 @@ Author: Ben McGinnes Date: Sat May 2 11:12:00 2015 +1000 String fun - + * streamlined confdata details, including decoding strom binary to string. setup.py | 4 +--- @@ -394,7 +394,7 @@ Author: Ben McGinnes Date: Sat May 2 10:46:59 2015 +1000 Open File - + * Removed deprecated file() and replaced with open(). examples/PyGtkGpgKeys.py | 2 +- @@ -407,7 +407,7 @@ Author: Ben McGinnes Date: Sat May 2 10:36:15 2015 +1000 print() fix - + * Makefile includes a python print, changed from statement to function. Makefile | 2 +- @@ -418,7 +418,7 @@ Author: Ben McGinnes Date: Sat May 2 10:28:42 2015 +1000 Updated Makefile - + * set make to use python3 instead. * This will mean a successful port may need to be maintained seperately from the original python2 code instead of merged, but ought to be able @@ -434,7 +434,7 @@ Author: Ben McGinnes Date: Sat May 2 10:15:20 2015 +1000 Env and a little license issue - + * Updated all the /usr/bin/env paths to point to python3. * Also fixed the hard coded /usr/bin/python paths. * Updated part of setup.py which gave the impression this package was @@ -463,7 +463,7 @@ Author: Ben McGinnes Date: Sat May 2 08:50:54 2015 +1000 Removed extraneous files. - + * The two .bak files. pyme/errors.py.bak | 46 --------------------- @@ -475,7 +475,7 @@ Author: Ben McGinnes Date: Sat May 2 08:19:37 2015 +1000 Added TODO.org - + * TODO list in Emacs org-mode. * Will eventually be removed along with this entire directory when the porting process is complete. @@ -488,7 +488,7 @@ Author: Ben McGinnes Date: Sat May 2 07:58:40 2015 +1000 2to3 conversion of remaining files - + * Ran the extended version against all the unmodified python files. * Only pyme/errors.py required additional work. @@ -502,7 +502,7 @@ Author: Ben McGinnes Date: Sat May 2 07:50:39 2015 +1000 2to3 conversion of setup.py - + * Ran extended 2to3 command to produce python 3 code for setup.py. * Effectively testing for what to run against the other originally unmodified py2 files. @@ -517,7 +517,7 @@ Author: Ben McGinnes Date: Fri May 1 21:50:07 2015 +1000 Removing 2to3 generated .bak files. - + * Not really needed with a real VCS, but couldn't hurt to have them for a couple of revisions. ;) @@ -548,7 +548,7 @@ Author: Ben McGinnes Date: Fri May 1 21:45:50 2015 +1000 2to3 conversion log - + * The output of the command to convert the code from Python 2 to 3. * Note: this contains the list of files which were not modified and which will or may need to be modified. @@ -561,7 +561,7 @@ Author: Ben McGinnes Date: Fri May 1 21:36:58 2015 +1000 2to3 conversion of pyme master - + * Branch from commit 459f3eca659b4949e394c4a032d9ce2053e6c721 * Ran this: or x in `find . | egrep .py$` ; do 2to3 -w $x; done ; * Multiple files not modified, will record elsewhere (see next commit). @@ -614,7 +614,7 @@ Author: Martin Albrecht Date: Wed Jul 9 10:48:33 2014 +0100 Merged in jerrykan/pyme/fix_setup_26 (pull request #1) - + Provide support for using setup.py with Python v2.6 commit dae7f14a54e6c2bde0ad4da7308cc7fc0d0c0469 @@ -622,7 +622,7 @@ Author: John Kristensen Date: Wed Jul 9 15:54:39 2014 +1000 Provide support for using setup.py with Python v2.6 - + The setup.py script uses subprocess.check_output() which was introduced in Python v2.7. The equivalent functionality can be achieved without adding much extra code and provide support for Python v2.6. @@ -701,7 +701,7 @@ Author: Martin Albrecht Date: Sat May 10 15:41:02 2014 +0100 Merge branch 'master' of bitbucket.org:malb/pyme - + Conflicts: setup.py @@ -1018,10 +1018,10 @@ Author: Martin Albrecht Date: Mon Jan 6 17:44:20 2014 +0100 fixing op_export_keys() - + the conversion of gpgme_key_t [] was restricted to gpgme_key_t [] with the name recv, i.e. only the use-cases of encryption were covered. - + see: http://sourceforge.net/mailarchive/forum.php?forum_name=pyme-help&max_rows=25&style=nested&viewmonth=201309 pyme/gpgme.i | 6 +++--- @@ -1618,9 +1618,9 @@ Date: Fri Jun 10 03:01:22 2005 +0000 Update 'docs' rule in Makefile to build packages first to ensure that documentation is build for the current version of pyme and not for the installed one. - + Added 'callbacks' into the list of visible pyme modules (__all__ var.) - + Slightly updated INSTALL file. pyme/INSTALL | 11 ++++++++--- @@ -2100,7 +2100,7 @@ Author: belyi Date: Fri Mar 18 19:09:33 2005 +0000 Added package building for python2.4 - + Updated copyright notes to include myslef and avoid confusion who's the maintainer. In John's own words: "I'd prefer to just step out of the picture". Jonh's copyright notice left intact. diff --git a/lang/python/examples/encrypt-to-all.py b/lang/python/examples/encrypt-to-all.py index 8f9d250..c890df4 100755 --- a/lang/python/examples/encrypt-to-all.py +++ b/lang/python/examples/encrypt-to-all.py @@ -54,7 +54,7 @@ for key in c.op_keylist_all(None, 0): (keyid, can_encrypt and "enabled" or "disabled")) except UnicodeEncodeError as e: print(e) - + if valid: names.append(key) else: diff --git a/lang/python/examples/signverify.py b/lang/python/examples/signverify.py index f8804ca..7194157 100755 --- a/lang/python/examples/signverify.py +++ b/lang/python/examples/signverify.py @@ -43,7 +43,7 @@ if not c.signers_enum(0): passlist = { b"": b"Crypt0R0cks" } - + # callback will return password based on the e-mail listed in the hint. c.set_passphrase_cb(lambda x,y,z: passlist[x[x.rindex("<"):]]) diff --git a/lang/python/examples/t-edit.py b/lang/python/examples/t-edit.py index 6c53342..5553190 100644 --- a/lang/python/examples/t-edit.py +++ b/lang/python/examples/t-edit.py @@ -32,7 +32,7 @@ class KeyEditor: out.seek(0,0) print(out.read(), end=' ') print("[-- Code: %d, %s --]" % (status, args)) - + if args == "keyedit.prompt": result = self.steps[self.step] self.step += 1 diff --git a/lang/python/examples/testCMSgetkey.py b/lang/python/examples/testCMSgetkey.py index 53fdef7..7c95301 100644 --- a/lang/python/examples/testCMSgetkey.py +++ b/lang/python/examples/testCMSgetkey.py @@ -22,7 +22,7 @@ from pyme.constants import protocol def printgetkeyresults(keyfpr): """Run gpgme_get_key().""" - # gpgme_check_version() necessary for initialisation according to + # gpgme_check_version() necessary for initialisation according to # gogme 1.1.6 and this is not done automatically in pyme-0.7.0 print("gpgme version:", core.check_version(None)) c = core.Context() @@ -45,5 +45,3 @@ def main(): if __name__ == "__main__": main() - - diff --git a/lang/python/examples/verifydetails.py b/lang/python/examples/verifydetails.py index 0d47ba5..a8d840e 100755 --- a/lang/python/examples/verifydetails.py +++ b/lang/python/examples/verifydetails.py @@ -96,5 +96,3 @@ def main(): if __name__ == "__main__": main() - - diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index 0115caf..87efce7 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -241,14 +241,14 @@ gpgme_error_t pyEditCb(void *opaque, gpgme_status_code_t status, func = pyopaque; pyargs = PyTuple_New(2); } - + PyTuple_SetItem(pyargs, 0, PyLong_FromLong((long) status)); PyTuple_SetItem(pyargs, 1, PyBytes_FromString(args)); if (dataarg) { Py_INCREF(dataarg); /* Because GetItem doesn't give a ref but SetItem taketh away */ PyTuple_SetItem(pyargs, 2, dataarg); } - + retval = PyObject_CallObject(func, pyargs); Py_DECREF(pyargs); if (PyErr_Occurred()) { diff --git a/lang/python/helpers.c b/lang/python/helpers.c index b53dbdd..96c844f 100644 --- a/lang/python/helpers.c +++ b/lang/python/helpers.c @@ -66,7 +66,7 @@ static gpgme_error_t pyPassphraseCb(void *hook, PyObject *args = NULL; PyObject *retval = NULL; PyObject *dataarg = NULL; - gpgme_error_t err_status = 0; + gpgme_error_t err_status = 0; pygpgme_exception_init(); @@ -119,7 +119,7 @@ static void pyProgressCb(void *hook, const char *what, int type, int current, int total) { PyObject *func = NULL, *dataarg = NULL, *args = NULL, *retval = NULL; PyObject *pyhook = (PyObject *) hook; - + if (PyTuple_Check(pyhook)) { func = PyTuple_GetItem(pyhook, 0); dataarg = PyTuple_GetItem(pyhook, 1); @@ -137,7 +137,7 @@ static void pyProgressCb(void *hook, const char *what, int type, int current, Py_INCREF(dataarg); /* Because GetItem doesn't give a ref but SetItem taketh away */ PyTuple_SetItem(args, 4, dataarg); } - + retval = PyObject_CallObject(func, args); Py_DECREF(args); Py_XDECREF(retval); diff --git a/lang/python/pyme/callbacks.py b/lang/python/pyme/callbacks.py index e3c810c..3a507b9 100644 --- a/lang/python/pyme/callbacks.py +++ b/lang/python/pyme/callbacks.py @@ -33,7 +33,7 @@ def passphrase_stdin(hint, desc, prev_bad, hook=None): def progress_stdout(what, type, current, total, hook=None): print("PROGRESS UPDATE: what = %s, type = %d, current = %d, total = %d" %\ (what, type, current, total)) - + def readcb_fh(count, hook): """A callback for data. hook should be a Python file-like object.""" if count: diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py index b03cedb..09f0fa8 100644 --- a/lang/python/pyme/core.py +++ b/lang/python/pyme/core.py @@ -37,7 +37,7 @@ class Context(GpgmeWrapper): def _getctype(self): return 'gpgme_ctx_t' - + def _getnameprepend(self): return 'gpgme_' @@ -106,7 +106,7 @@ class Context(GpgmeWrapper): if key: key.__del__ = lambda self: pygpgme.gpgme_key_unref(self) return key - + def get_key(self, fpr, secret): """Return the key corresponding to the fingerprint 'fpr'""" ptr = pygpgme.new_gpgme_key_t_p() @@ -147,7 +147,7 @@ class Context(GpgmeWrapper): desc, a string describing the passphrase it needs; prev_bad, a boolean equal True if this is a call made after unsuccessful previous attempt. - + If hook has a value other than None it will be passed into the func as a forth argument. @@ -206,7 +206,7 @@ class Context(GpgmeWrapper): context = pygpgme.gpgme_wait(self.wrapped, ptr, hang) status = pygpgme.gpgme_error_t_p_value(ptr) pygpgme.delete_gpgme_error_t_p(ptr) - + if context == None: errorcheck(status) return None @@ -219,7 +219,7 @@ class Context(GpgmeWrapper): raise ValueError("op_edit: First argument cannot be None") opaquedata = (func, fnc_value) errorcheck(pygpgme.gpgme_op_edit(self.wrapped, key, opaquedata, out)) - + class Data(GpgmeWrapper): """From the GPGME C manual: @@ -236,7 +236,7 @@ class Data(GpgmeWrapper): def _getctype(self): return 'gpgme_data_t' - + def _getnameprepend(self): return 'gpgme_data_' @@ -247,7 +247,7 @@ class Data(GpgmeWrapper): name == 'gpgme_data_seek': return 0 return 1 - + def __init__(self, string = None, file = None, offset = None, length = None, cbs = None): """Initialize a new gpgme_data_t object. @@ -360,7 +360,7 @@ class Data(GpgmeWrapper): """This wraps the GPGME gpgme_data_new_from_fd() function. The argument "file" may be a file-like object, supporting the fileno() call and the mode attribute.""" - + tmp = pygpgme.new_gpgme_data_t_p() fp = pygpgme.fdopen(file.fileno(), file.mode) if fp == None: @@ -375,18 +375,18 @@ class Data(GpgmeWrapper): new_from_fd() method since in python there's not difference between file stream and file descriptor""" self.new_from_fd(file) - + def write(self, buffer): errorcheck(pygpgme.gpgme_data_write(self.wrapped, buffer, len(buffer))) def read(self, size = -1): """Read at most size bytes, returned as a string. - + If the size argument is negative or omitted, read until EOF is reached. Returns the data read, or the empty string if there was no data to read before EOF was reached.""" - + if size == 0: return '' @@ -445,11 +445,11 @@ def set_locale(category, value): def wait(hang): """Wait for asynchronous call on any Context to finish. Wait forever if hang is True. - + For finished anynch calls it returns a tuple (status, context): status - status return by asnynchronous call. context - context which caused this call to return. - + Please read the GPGME manual of more information.""" ptr = pygpgme.new_gpgme_error_t_p() context = pygpgme.gpgme_wait(None, ptr, hang) diff --git a/lang/python/pyme/errors.py b/lang/python/pyme/errors.py index 0ad22f2..37d0fe6 100644 --- a/lang/python/pyme/errors.py +++ b/lang/python/pyme/errors.py @@ -22,7 +22,7 @@ class GPGMEError(Exception): def __init__(self, error = None, message = None): self.error = error self.message = message - + def getstring(self): message = "%s: %s" % (pygpgme.gpgme_strsource(self.error), pygpgme.gpgme_strerror(self.error)) @@ -35,7 +35,7 @@ class GPGMEError(Exception): def getsource(self): return pygpgme.gpgme_err_source(self.error) - + def __str__(self): return "%s (%d,%d)"%(self.getstring(), self.getsource(), self.getcode()) diff --git a/lang/python/pyme/util.py b/lang/python/pyme/util.py index c5f02a9..32e2f55 100644 --- a/lang/python/pyme/util.py +++ b/lang/python/pyme/util.py @@ -28,7 +28,7 @@ def process_constants(starttext, dict): continue name = identifier[index:] dict[name] = getattr(pygpgme, identifier) - + class GpgmeWrapper(object): """Base class all Pyme wrappers for GPGME functionality. Not to be instantiated directly.""" @@ -51,7 +51,7 @@ class GpgmeWrapper(object): def _getctype(self): raise NotImplementedException - + def __getattr__(self, name): """On-the-fly function generation.""" if name[0] == '_' or self._getnameprepend() == None: diff --git a/lang/python/setup.py b/lang/python/setup.py index b0ed3b2..562c08f 100755 --- a/lang/python/setup.py +++ b/lang/python/setup.py @@ -60,7 +60,7 @@ for item in getconfig('cflags'): # Adjust include and library locations in case of win32 uname_s = os.popen("uname -s").read() if uname_s.startswith("MINGW32"): - mnts = [x.split()[0:3:2] for x in os.popen("mount").read().split("\n") if x] + mnts = [x.split()[0:3:2] for x in os.popen("mount").read().split("\n") if x] tmplist = sorted([(len(x[1]), x[1], x[0]) for x in mnts]) tmplist.reverse() extra_dirs = [] @@ -89,9 +89,9 @@ except OSError as e: raise RuntimeError("Could not call swig, perhaps install swig.") else: raise - + subprocess.call(["make swig"], shell=True) - + swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"], include_dirs = include_dirs, define_macros = define_macros, @@ -106,7 +106,7 @@ setup(name = "pyme", url = version.homepage, ext_modules=[swige], packages = ['pyme', 'pyme.constants', 'pyme.constants.data', - 'pyme.constants.keylist', 'pyme.constants.sig'], + 'pyme.constants.keylist', 'pyme.constants.sig'], license = version.copyright + \ ", Licensed under the GPL version 2 and the LGPL version 2.1" ) commit 000dbb5b9a56f9b9143ca2555999a8f83ec88536 Author: Justus Winter Date: Tue May 10 13:21:34 2016 +0200 python: Drop Debian packaging. -- Signed-off-by: Justus Winter diff --git a/lang/python/debian/README.Debian b/lang/python/debian/README.Debian deleted file mode 100644 index c520ba6..0000000 --- a/lang/python/debian/README.Debian +++ /dev/null @@ -1,6 +0,0 @@ -Please note: - -The documentation for this package is in python-pyme-doc. - -When you install that package, you can find the documentation and examples -in /usr/share/doc/python-pyme-doc. diff --git a/lang/python/debian/changelog b/lang/python/debian/changelog deleted file mode 100644 index 7071d79..0000000 --- a/lang/python/debian/changelog +++ /dev/null @@ -1,93 +0,0 @@ -pyme (0.8.1) unstable; urgency=low - - * Add issuing gpgme_key_unref() in __del__ method for keys return from - op_keylist_next() and get_key() calls to avoid memory leak in a long - living contexts. - * Add missing (get|set)_engine_info() methods for the Context class and - set_engine_info() and set_locale() for the core module. - * Remove support for python2.3 in debian packaging since neither testing - nor unstable dist contains packages for it now. - * Update verifydetails.py for the new way structure types are handled; - add testCMSgetkey.py example for CMS keys. Thanks to Bernhard Reiter. - * Fix hang on Windows caused by passphrase_cb. - - -- Igor Belyi Mon, 24 Nov 2008 01:56:19 -0500 - -pyme (0.8.0) unstable; urgency=low - - * Make all structure types containing 'next' field to be return as lists. - This includes when they are return from a function and when they are - member of another structure. Update all examples to use that updated - API. - * Switch to using pycentral for debian packages. - * Add rules to update PY file location in generated doc files. - - -- Igor Belyi Sat, 29 Mar 2008 18:43:27 -0400 - -pyme (0.7.1) unstable; urgency=low - - * Add rules to build Windows version of the package. - * Move all constants into pyme.constants package to avoid conflicts with - Python reserved words. Previous location are preserved for now for - compatibility purposes. - * Change name of the internal GPGME wrapper package from 'gpgme' to - 'pygpgme' to avoid conflict with gpgme.dll library on Windows. - * Fix gpgme.i to work with SWIG version >= 1.3.28 - * Add core.check_version(None) call to the examples to do the proper - startup initialization. - * Add verifydetails.py example provided by Bernhard Reiter. - - -- Igor Belyi Sun, 09 Mar 2008 21:35:16 -0400 - -pyme (0.7.0) unstable; urgency=low - - * Removed workaround in Context.wait() - * Updated core.wait() to return Context() object instead of GPGME pointer. - * Made Context.wait() and Context.op_edit() throw exception on failure. - * Added exception handling for passphrase_cb and edit_cb - * Allowed using None to unset previous callback and made hook argument - optional - * Fixed passphrase_cb to pass previously missing prev_bad argument as well - * Got rid of "warning: function declaration isn't a prototype" in helpers.h - * License on PyMe is changed from GPL to LGPL. Examples keep GPL license. - * Added pygpa.py example to illustrate gpa functionality using python. - - -- Igor Belyi Wed, 27 Apr 2005 17:22:11 -0400 - -pyme (0.6.2) unstable; urgency=low - - * Implemented Context.wait() method more sutable for asynch calls in Python. - * Implemented Context.op_edit() to support editing operations - * Fixed string representation of the errors.GPGMEError exception - * Added a nice example: PyGtkGpgKeys.py (requires Glade2 and PyGTK 2.4). - No match to gpa, seahorse, or kgpg of course. :) - - -- Igor Belyi Sat, 26 Mar 2005 11:42:27 -0500 - -pyme (0.6.1) unstable; urgency=low - - * Added package building for python2.4 - * Updated copyright notes to avoid confusion for John's sake. - * Cleanup deprecated functions and typedefs from gpgme.h before building. - - -- Igor Belyi Fri, 18 Mar 2005 20:41:52 -0500 - -pyme (0.6.0) unstable; urgency=low - - * Added support for libgpgme11 revision of GPGME library. - - -- Igor Belyi Sun, 14 Mar 2004 16:37:39 -0500 - -pyme (0.5.1) unstable; urgency=low - - * Added support for read callbacks for data objects, and an - example for such to callbacks module. - - -- John Goerzen Thu, 21 Nov 2002 08:29:52 -0600 - -pyme (0.5.0) unstable; urgency=low - - * Initial Release. Closes: #169807. - - -- John Goerzen Tue, 19 Nov 2002 14:32:36 -0600 - diff --git a/lang/python/debian/control b/lang/python/debian/control deleted file mode 100644 index 56885f9..0000000 --- a/lang/python/debian/control +++ /dev/null @@ -1,34 +0,0 @@ -Source: pyme -Section: python -Priority: optional -Maintainer: Igor Belyi -Build-Depends: debhelper (>> 4.1.67), python-central, python2.4-dev, python2.5-dev, libgpgme11-dev, swig -XS-Python-Version: 2.4, 2.5 -Standards-Version: 3.5.2 - -Package: python-pyme-doc -Architecture: all -XB-Python-Version: ${python:Versions} -Description: Python interface to the GPGME GnuPG encryption library - This package contains the documentation for Pyme. - -Package: python-pyme -Architecture: any -Provides: ${python:Provides} -Depends: ${python:Depends}, ${shlibs:Depends} -XB-Python-Version: ${python:Versions} -Suggests: python-pyme-doc -Description: Python interface to the GPGME GnuPG encryption library - Pyme is, for the most part, a direct interface to the C GPGME - library. However, it is re-packaged in a more Pythonic way -- - object-oriented with classes and modules. Take a look at the classes - defined here -- they correspond directly to certain object types in GPGME - for C. - . - Features: - * Feature-rich, full implementation of the GPGME library. Supports all - GPGME features. Callback functions may be written in pure Python. - * Ability to sign, encrypt, decrypt, and verify data. - * Ability to list keys, export and import keys, and manage the keyring. - * Fully object-oriented with convenient classes and modules. - diff --git a/lang/python/debian/copyright b/lang/python/debian/copyright deleted file mode 100644 index 5ea64b3..0000000 --- a/lang/python/debian/copyright +++ /dev/null @@ -1,25 +0,0 @@ -The maintainance of the package was taken over by Igor Belyi - on Thu, 18 March 2004