From cvs at cvs.gnupg.org Wed Nov 1 02:40:41 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Wed, 01 Nov 2017 02:40:41 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-59-g6c63a04 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 6c63a04569c07c9c2817c7c530a92ccfa58155cc (commit) from d63b7966cdd72548c60466c620de5cd6104a779e (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 6c63a04569c07c9c2817c7c530a92ccfa58155cc Author: NIIBE Yutaka Date: Wed Nov 1 10:19:35 2017 +0900 g10: Unattended key generation "Key-Grip" and "Subkey-Grip". * g10/keygen.c (pSUBKEYGRIP): New. (read_parameter_file): Add "Key-Grip" and "Subkey-Grip". (do_generate_keypair): Support pSUBKEYGRIP. -- In the manual, it says "Key-Grip". gpgsm also supports "Key-Grip". Adding "Subkey-Grip" now, adding "Key-Grip" makes sense. GnuPG-bug-id: 3478 Signed-off-by: NIIBE Yutaka diff --git a/g10/keygen.c b/g10/keygen.c index 1dddfee..e63fbaa 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -89,7 +89,8 @@ enum para_name { pCARDBACKUPKEY, pHANDLE, pKEYSERVER, - pKEYGRIP + pKEYGRIP, + pSUBKEYGRIP, }; struct para_data_s { @@ -3648,6 +3649,8 @@ read_parameter_file (ctrl_t ctrl, const char *fname ) { "Handle", pHANDLE }, { "Keyserver", pKEYSERVER }, { "Keygrip", pKEYGRIP }, + { "Key-Grip", pKEYGRIP }, + { "Subkey-grip", pSUBKEYGRIP }, { NULL, 0 } }; IOBUF fp; @@ -4696,8 +4699,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, if (!err && card && get_parameter (para, pAUTHKEYTYPE)) { err = gen_card_key (3, get_parameter_algo( para, pAUTHKEYTYPE, NULL ), - 0, pub_root, ×tamp, - get_parameter_u32 (para, pKEYEXPIRE)); + 0, pub_root, ×tamp, expire); if (!err) err = write_keybinding (ctrl, pub_root, pri_psk, NULL, PUBKEY_USAGE_AUTH, timestamp, cache_nonce); @@ -4705,11 +4707,18 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, if (!err && get_parameter (para, pSUBKEYTYPE)) { - sub_psk = NULL; + int subkey_algo = get_parameter_algo (para, pSUBKEYTYPE, NULL); + s = NULL; - if (!card || (s = get_parameter_value (para, pCARDBACKUPKEY))) + key_from_hexgrip = get_parameter_value (para, pSUBKEYGRIP); + if (key_from_hexgrip) + err = do_create_from_keygrip (ctrl, subkey_algo, key_from_hexgrip, + pub_root, timestamp, + get_parameter_u32 (para, pSUBKEYEXPIRE), + 1); + else if (!card || (s = get_parameter_value (para, pCARDBACKUPKEY))) { - err = do_create (get_parameter_algo (para, pSUBKEYTYPE, NULL), + err = do_create (subkey_algo, get_parameter_uint (para, pSUBKEYLENGTH), get_parameter_value (para, pSUBKEYCURVE), pub_root, @@ -4735,9 +4744,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, } else { - err = gen_card_key (2, get_parameter_algo (para, pSUBKEYTYPE, NULL), - 0, pub_root, ×tamp, - get_parameter_u32 (para, pKEYEXPIRE)); + err = gen_card_key (2, subkey_algo, 0, pub_root, ×tamp, expire); } if (!err) ----------------------------------------------------------------------- Summary of changes: g10/keygen.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 1 18:22:34 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 01 Nov 2017 18:22:34 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-62-gfd3f5ca 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 fd3f5ca151b9440ade2fa4991b7cfb190e357893 (commit) via 87b94e08d7811af94403384c45ae5d2bb88f6ed9 (commit) via f795f4529d8ab5a05db1cc1960abd34390bfae1b (commit) from 6c63a04569c07c9c2817c7c530a92ccfa58155cc (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 fd3f5ca151b9440ade2fa4991b7cfb190e357893 Author: Werner Koch Date: Wed Nov 1 18:17:44 2017 +0100 Register another OpenPGP card vendor. -- diff --git a/g10/card-util.c b/g10/card-util.c index 90178dd..9495038 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -212,6 +212,7 @@ get_manufacturer (unsigned int no) case 0x000A: return "Dangerous Things"; case 0x002A: return "Magrathea"; + case 0x0042: return "GnuPG e.V."; case 0x1337: return "Warsaw Hackerspace"; case 0x2342: return "warpzone"; /* hackerspace Muenster. */ commit 87b94e08d7811af94403384c45ae5d2bb88f6ed9 Author: Werner Koch Date: Wed Nov 1 18:14:26 2017 +0100 gpg: Remove trailing comma in an enum. -- Signed-off-by: Werner Koch diff --git a/g10/keygen.c b/g10/keygen.c index e63fbaa..1281574 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -90,7 +90,7 @@ enum para_name { pHANDLE, pKEYSERVER, pKEYGRIP, - pSUBKEYGRIP, + pSUBKEYGRIP }; struct para_data_s { commit f795f4529d8ab5a05db1cc1960abd34390bfae1b Author: Werner Koch Date: Fri Oct 27 14:44:53 2017 +0200 gpg: Rename two card related functions in card-util. * g10/card-util.c (ask_card_rsa_keysize): Rename to ask_card_keyattr. (do_change_rsa_keysize): Rename to do_change_keyattr. -- We want to support other algos than RSA and thus we need a better name for the functions. Signed-off-by: Werner Koch diff --git a/g10/card-util.c b/g10/card-util.c index dae11b0..90178dd 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1330,7 +1330,7 @@ show_keysize_warning (void) select the prompt. Returns 0 to use the default size (i.e. NBITS) or the selected size. */ static unsigned int -ask_card_rsa_keysize (int keyno, unsigned int nbits) +ask_card_keyattr (int keyno, unsigned int nbits) { unsigned int min_nbits = 1024; unsigned int max_nbits = 4096; @@ -1380,7 +1380,7 @@ ask_card_rsa_keysize (int keyno, unsigned int nbits) /* Change the size of key KEYNO (0..2) to NBITS and show an error message if that fails. */ static gpg_error_t -do_change_rsa_keysize (int keyno, unsigned int nbits) +do_change_keyattr (int keyno, unsigned int nbits) { gpg_error_t err; char args[100]; @@ -1461,8 +1461,8 @@ generate_card_keys (ctrl_t ctrl) { if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) { - nbits = ask_card_rsa_keysize (keyno, info.key_attr[keyno].nbits); - if (nbits && do_change_rsa_keysize (keyno, nbits)) + nbits = ask_card_keyattr (keyno, info.key_attr[keyno].nbits); + if (nbits && do_change_keyattr (keyno, nbits)) { /* Error: Better read the default key size again. */ agent_release_card_info (&info); @@ -1544,8 +1544,8 @@ card_generate_subkey (ctrl_t ctrl, kbnode_t pub_keyblock) unsigned int nbits; ask_again: - nbits = ask_card_rsa_keysize (keyno-1, info.key_attr[keyno-1].nbits); - if (nbits && do_change_rsa_keysize (keyno-1, nbits)) + nbits = ask_card_keyattr (keyno-1, info.key_attr[keyno-1].nbits); + if (nbits && do_change_keyattr (keyno-1, nbits)) { /* Error: Better read the default key size again. */ agent_release_card_info (&info); ----------------------------------------------------------------------- Summary of changes: g10/card-util.c | 13 +++++++------ g10/keygen.c | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 1 18:41:48 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Wed, 01 Nov 2017 18:41:48 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-27-g0e5bd47 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 0e5bd473a07f188615c4fce26b73bb452d689d68 (commit) via 3924e1442c6625a2b57573a1a634a5ec56b09a29 (commit) via 4738256f2e0d22302377c9ec7b2ae3999338e6c6 (commit) from 05cb87276c21c3a47226c75026fa46a955553dd9 (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 0e5bd473a07f188615c4fce26b73bb452d689d68 Author: NIIBE Yutaka Date: Tue Sep 19 16:09:05 2017 +0900 common: Accept the Z-suffix for yymmddThhmmssZ format. * common/gettime.c (isotime_p): Accept the Z suffix. -- The intention is use for human interface. GnuPG-bug-id: 3278 Signed-off-by: NIIBE Yutaka (cherry picked from commit ba8afc4966cca1f6aaf9b2a9bfc3220782306c2b) diff --git a/common/gettime.c b/common/gettime.c index 3e1ee55..4ad99f5 100644 --- a/common/gettime.c +++ b/common/gettime.c @@ -222,6 +222,8 @@ isotime_p (const char *string) for (s++, i=9; i < 15; i++, s++) if (!digitp (s)) return 0; + if (*s == 'Z') + s++; if ( !(!*s || (isascii (*s) && isspace(*s)) || *s == ':' || *s == ',')) return 0; /* Wrong delimiter. */ @@ -354,9 +356,10 @@ string2isotime (gnupg_isotime_t atime, const char *string) } -/* Scan an ISO timestamp and return an Epoch based timestamp. The only - supported format is "yyyymmddThhmmss" delimited by white space, nul, a - colon or a comma. Returns (time_t)(-1) for an invalid string. */ +/* Scan an ISO timestamp and return an Epoch based timestamp. The + only supported format is "yyyymmddThhmmss[Z]" delimited by white + space, nul, a colon or a comma. Returns (time_t)(-1) for an + invalid string. */ time_t isotime2epoch (const char *string) { commit 3924e1442c6625a2b57573a1a634a5ec56b09a29 Author: NIIBE Yutaka Date: Fri Oct 27 09:54:48 2017 +0900 agent: Clean up pinentry access locking. * agent/agent.h (struct server_control_s): Rename PINENTRY_ACTIVE. * agent/call-pinentry.c (entry_owner): Remove. (agent_reset_query): Use thread private object of PINENTRY_ACTIVE. (unlock_pinentry): Add CTRL to arguments to access thread private. Check and decrement PINENTRY_ACTIVE for recursive use. (start_pinentry): Check and increment PINENTRY_ACTIVE for recursion. (agent_askpin): Follow the change of unlock_pinentry API. (agent_get_passphrase, agent_get_confirmation): Likewise. (agent_show_message, agent_popup_message_start): Likewise. (agent_popup_message_stop, agent_clear_passphrase): Likewise. -- We use the member PINENTRY_ACTIVE as a thread private object. It's only valid for a single thread at a time. It would be possible to have a thread shared object of PINENTRY_ACTIVE, keeping ENTRY_OWNER for distinguishing its owner (which is also a thread shared object). But, in this case, access to ENTRY_OWNER is tricky (only comparison to accessing thread would be OK with no lock), or we need to introduce another lock for accessing ENTRY_OWNER, which complicates the code too much. So, simply have a thread private object for recursive pinentry access. GnuPG-bug-id: 3190 Signed-off-by: NIIBE Yutaka (cherry picked from commit fb7828676cc2c01047498898378711e049f73fee) diff --git a/agent/agent.h b/agent/agent.h index cde38fe..7bb46fa 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -255,8 +255,9 @@ struct server_control_s count. */ unsigned long s2k_count; - /* Recursion level of pinentry. */ - int pinentry_level; + /* If pinentry is active for this thread. It can be more than 1, + when pinentry is called recursively. */ + int pinentry_active; }; diff --git a/agent/call-pinentry.c b/agent/call-pinentry.c index 0fe8345..a088681 100644 --- a/agent/call-pinentry.c +++ b/agent/call-pinentry.c @@ -67,12 +67,6 @@ static struct } entry_features; -/* The control variable of the connection owning the current pinentry. - This is only valid if ENTRY_CTX is not NULL. Note, that we care - only about the value of the pointer and that it should never be - dereferenced. */ -static ctrl_t entry_owner; - /* A mutex used to serialize access to the pinentry. */ static npth_mutex_t entry_lock; @@ -128,7 +122,7 @@ agent_query_dump_state (void) void agent_reset_query (ctrl_t ctrl) { - if (entry_ctx && popup_tid && entry_owner == ctrl) + if (entry_ctx && popup_tid && ctrl->pinentry_active) { agent_popup_message_stop (ctrl); } @@ -140,7 +134,7 @@ agent_reset_query (ctrl_t ctrl) stalled pinentry does not block other threads. Fixme: We should have a timeout in Assuan for the disconnect operation. */ static gpg_error_t -unlock_pinentry (gpg_error_t rc) +unlock_pinentry (ctrl_t ctrl, gpg_error_t rc) { assuan_context_t ctx = entry_ctx; int err; @@ -177,9 +171,8 @@ unlock_pinentry (gpg_error_t rc) } } - if (--entry_owner->pinentry_level == 0) + if (--ctrl->pinentry_active == 0) { - entry_owner = NULL; entry_ctx = NULL; err = npth_mutex_unlock (&entry_lock); if (err) @@ -292,10 +285,11 @@ start_pinentry (ctrl_t ctrl) char *flavor_version; int err; - if (entry_owner == ctrl) + if (ctrl->pinentry_active) { - /* Allow recursive use of pinentry. */ - ctrl->pinentry_level++; + /* It's trying to use pinentry recursively. In this situation, + the thread holds ENTRY_LOCK already. */ + ctrl->pinentry_active++; return 0; } @@ -313,8 +307,6 @@ start_pinentry (ctrl_t ctrl) return rc; } - entry_owner = ctrl; - if (entry_ctx) return 0; @@ -336,7 +328,7 @@ start_pinentry (ctrl_t ctrl) the Wine implementation does not flush stdin,stdout and stderr - see above. Let's try to ignore the error. */ #ifndef HAVE_W32_SYSTEM - return unlock_pinentry (tmperr); + return unlock_pinentry (ctrl, tmperr); #endif } @@ -383,7 +375,7 @@ start_pinentry (ctrl_t ctrl) return rc; } - ctrl->pinentry_level = 1; + ctrl->pinentry_active = 1; entry_ctx = ctx; /* We don't want to log the pinentry communication to make the logs @@ -404,7 +396,7 @@ start_pinentry (ctrl_t ctrl) { log_error ("can't connect to the PIN entry module '%s': %s\n", full_pgmname, gpg_strerror (rc)); - return unlock_pinentry (gpg_error (GPG_ERR_NO_PIN_ENTRY)); + return unlock_pinentry (ctrl, gpg_error (GPG_ERR_NO_PIN_ENTRY)); } if (DBG_IPC) @@ -415,65 +407,65 @@ start_pinentry (ctrl_t ctrl) { char *optstr; if (asprintf (&optstr, "OPTION pinentry-user-data=%s", value) < 0 ) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); rc = assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL, NULL); xfree (optstr); if (rc && gpg_err_code (rc) != GPG_ERR_UNKNOWN_OPTION) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } rc = assuan_transact (entry_ctx, opt.no_grab? "OPTION no-grab":"OPTION grab", NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); value = session_env_getenv (ctrl->session_env, "GPG_TTY"); if (value) { char *optstr; if (asprintf (&optstr, "OPTION ttyname=%s", value) < 0 ) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); rc = assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL, NULL); xfree (optstr); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } value = session_env_getenv (ctrl->session_env, "TERM"); if (value) { char *optstr; if (asprintf (&optstr, "OPTION ttytype=%s", value) < 0 ) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); rc = assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL, NULL); xfree (optstr); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (ctrl->lc_ctype) { char *optstr; if (asprintf (&optstr, "OPTION lc-ctype=%s", ctrl->lc_ctype) < 0 ) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); rc = assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL, NULL); xfree (optstr); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (ctrl->lc_messages) { char *optstr; if (asprintf (&optstr, "OPTION lc-messages=%s", ctrl->lc_messages) < 0 ) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); rc = assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL, NULL); xfree (optstr); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } @@ -489,7 +481,7 @@ start_pinentry (ctrl_t ctrl) rc = assuan_transact (entry_ctx, "OPTION allow-external-password-cache", NULL, NULL, NULL, NULL, NULL, NULL); if (rc && gpg_err_code (rc) != GPG_ERR_UNKNOWN_OPTION) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (opt.allow_emacs_pinentry) @@ -499,7 +491,7 @@ start_pinentry (ctrl_t ctrl) rc = assuan_transact (entry_ctx, "OPTION allow-emacs-prompt", NULL, NULL, NULL, NULL, NULL, NULL); if (rc && gpg_err_code (rc) != GPG_ERR_UNKNOWN_OPTION) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } @@ -537,7 +529,7 @@ start_pinentry (ctrl_t ctrl) if (*s == '|' && (s2=strchr (s+1,'|'))) s = s2+1; if (asprintf (&optstr, "OPTION default-%s=%s", tbl[idx].key, s) < 0 ) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL, NULL); xfree (optstr); @@ -664,8 +656,8 @@ start_pinentry (ctrl_t ctrl) rc = agent_inq_pinentry_launched (ctrl, pinentry_pid, flavor_version); if (gpg_err_code (rc) == GPG_ERR_CANCELED || gpg_err_code (rc) == GPG_ERR_FULLY_CANCELED) - return unlock_pinentry (gpg_err_make (GPG_ERR_SOURCE_DEFAULT, - gpg_err_code (rc))); + return unlock_pinentry (ctrl, gpg_err_make (GPG_ERR_SOURCE_DEFAULT, + gpg_err_code (rc))); rc = 0; } @@ -1035,18 +1027,18 @@ agent_askpin (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc && gpg_err_code (rc) != GPG_ERR_ASS_UNKNOWN_CMD) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); build_cmd_setdesc (line, DIM(line), desc_text); rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); snprintf (line, DIM(line), "SETPROMPT %s", prompt_text? prompt_text : is_pin? L_("PIN:") : L_("Passphrase:")); rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); /* If a passphrase quality indicator has been requested and a minimum passphrase length has not been disabled, send the command @@ -1055,7 +1047,7 @@ agent_askpin (ctrl_t ctrl, { rc = setup_qualitybar (ctrl); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (initial_errtext) @@ -1064,7 +1056,7 @@ agent_askpin (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (pininfo->with_repeat) @@ -1095,7 +1087,7 @@ agent_askpin (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); errtext = NULL; } @@ -1105,7 +1097,7 @@ agent_askpin (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } saveflag = assuan_get_flag (entry_ctx, ASSUAN_CONFIDENTIAL); @@ -1133,7 +1125,7 @@ agent_askpin (ctrl_t ctrl, errtext = is_pin? L_("PIN too long") : L_("Passphrase too long"); else if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); if (!errtext && pininfo->min_digits) { @@ -1159,7 +1151,7 @@ agent_askpin (ctrl_t ctrl, || gpg_err_code (rc) == GPG_ERR_BAD_PIN) errtext = (is_pin? L_("Bad PIN") : L_("Bad Passphrase")); else if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (!errtext) @@ -1167,7 +1159,7 @@ agent_askpin (ctrl_t ctrl, if (pininfo->with_repeat && (pinentry_status & PINENTRY_STATUS_PIN_REPEATED)) pininfo->repeat_okay = 1; - return unlock_pinentry (0); /* okay, got a PIN or passphrase */ + return unlock_pinentry (ctrl, 0); /* okay, got a PIN or passphrase */ } if ((pinentry_status & PINENTRY_STATUS_PASSWORD_FROM_CACHE)) @@ -1176,7 +1168,7 @@ agent_askpin (ctrl_t ctrl, pininfo->failed_tries --; } - return unlock_pinentry (gpg_error (pininfo->min_digits? GPG_ERR_BAD_PIN + return unlock_pinentry (ctrl, gpg_error (pininfo->min_digits? GPG_ERR_BAD_PIN : GPG_ERR_BAD_PASSPHRASE)); } @@ -1242,7 +1234,7 @@ agent_get_passphrase (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc && gpg_err_code (rc) != GPG_ERR_ASS_UNKNOWN_CMD) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); if (desc) @@ -1251,18 +1243,18 @@ agent_get_passphrase (ctrl_t ctrl, snprintf (line, DIM(line), "RESET"); rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); snprintf (line, DIM(line), "SETPROMPT %s", prompt); rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); if (with_qualitybar && opt.min_passphrase_len) { rc = setup_qualitybar (ctrl); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (errtext) @@ -1270,14 +1262,14 @@ agent_get_passphrase (ctrl_t ctrl, snprintf (line, DIM(line), "SETERROR %s", errtext); rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } memset (&parm, 0, sizeof parm); parm.size = ASSUAN_LINELENGTH/2 - 5; parm.buffer = gcry_malloc_secure (parm.size+10); if (!parm.buffer) - return unlock_pinentry (out_of_core ()); + return unlock_pinentry (ctrl, out_of_core ()); saveflag = assuan_get_flag (entry_ctx, ASSUAN_CONFIDENTIAL); assuan_begin_confidential (entry_ctx); @@ -1301,7 +1293,7 @@ agent_get_passphrase (ctrl_t ctrl, xfree (parm.buffer); else *retpass = parm.buffer; - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } @@ -1345,7 +1337,7 @@ agent_get_confirmation (ctrl_t ctrl, rc = gpg_err_make (gpg_err_source (rc), GPG_ERR_CANCELED); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); if (ok) { @@ -1353,7 +1345,7 @@ agent_get_confirmation (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } if (notok) { @@ -1376,7 +1368,7 @@ agent_get_confirmation (ctrl_t ctrl, NULL, NULL, NULL, NULL, NULL, NULL); } if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } rc = assuan_transact (entry_ctx, "CONFIRM", @@ -1384,7 +1376,7 @@ agent_get_confirmation (ctrl_t ctrl, if (rc && gpg_err_source (rc) && gpg_err_code (rc) == GPG_ERR_ASS_CANCELED) rc = gpg_err_make (gpg_err_source (rc), GPG_ERR_CANCELED); - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } @@ -1418,7 +1410,7 @@ agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn) rc = gpg_err_make (gpg_err_source (rc), GPG_ERR_CANCELED); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); if (ok_btn) { @@ -1426,7 +1418,7 @@ agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn) rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } rc = assuan_transact (entry_ctx, "CONFIRM --one-button", NULL, NULL, NULL, @@ -1434,7 +1426,7 @@ agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn) if (rc && gpg_err_source (rc) && gpg_err_code (rc) == GPG_ERR_ASS_CANCELED) rc = gpg_err_make (gpg_err_source (rc), GPG_ERR_CANCELED); - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } @@ -1482,19 +1474,19 @@ agent_popup_message_start (ctrl_t ctrl, const char *desc, const char *ok_btn) snprintf (line, DIM(line), "RESET"); rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); if (ok_btn) { snprintf (line, DIM(line), "SETOK %s", ok_btn); rc = assuan_transact (entry_ctx, line, NULL,NULL,NULL,NULL,NULL,NULL); if (rc) - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } err = npth_attr_init (&tattr); if (err) - return unlock_pinentry (gpg_error_from_errno (err)); + return unlock_pinentry (ctrl, gpg_error_from_errno (err)); npth_attr_setdetachstate (&tattr, NPTH_CREATE_JOINABLE); popup_finished = 0; @@ -1505,7 +1497,7 @@ agent_popup_message_start (ctrl_t ctrl, const char *desc, const char *ok_btn) rc = gpg_error_from_errno (err); log_error ("error spawning popup message handler: %s\n", strerror (err) ); - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } npth_setname_np (popup_tid, "popup-message"); @@ -1566,7 +1558,7 @@ agent_popup_message_stop (ctrl_t ctrl) memset (&popup_tid, '\0', sizeof (popup_tid)); /* Now we can close the connection. */ - unlock_pinentry (0); + unlock_pinentry (ctrl, 0); } int @@ -1592,5 +1584,5 @@ agent_clear_passphrase (ctrl_t ctrl, rc = assuan_transact (entry_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); - return unlock_pinentry (rc); + return unlock_pinentry (ctrl, rc); } commit 4738256f2e0d22302377c9ec7b2ae3999338e6c6 Author: NIIBE Yutaka Date: Thu Oct 26 14:40:38 2017 +0900 agent: Allow recursive use of pinentry. * agent/agent.h (struct server_control_s): Add pinentry_level. * agent/call-pinentry.c (agent_popup_message_stop): Not clear ENTRY_CTX here. (unlock_pinentry): Handle recursion. Clear ENTRY_CTX here. (start_pinentry): Allow recursive use. -- GnuPG-bug-id: 3190 Signed-off-by: NIIBE Yutaka (cherry picked from commit 3b66a256e3760e88066ca11b7b49d924e42aa46b) diff --git a/agent/agent.h b/agent/agent.h index f5df75e..cde38fe 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -254,6 +254,9 @@ struct server_control_s /* The current S2K which might be different from the calibrated count. */ unsigned long s2k_count; + + /* Recursion level of pinentry. */ + int pinentry_level; }; diff --git a/agent/call-pinentry.c b/agent/call-pinentry.c index 6a5c1fe..0fe8345 100644 --- a/agent/call-pinentry.c +++ b/agent/call-pinentry.c @@ -177,15 +177,19 @@ unlock_pinentry (gpg_error_t rc) } } - entry_ctx = NULL; - err = npth_mutex_unlock (&entry_lock); - if (err) + if (--entry_owner->pinentry_level == 0) { - log_error ("failed to release the entry lock: %s\n", strerror (err)); - if (!rc) - rc = gpg_error_from_errno (err); + entry_owner = NULL; + entry_ctx = NULL; + err = npth_mutex_unlock (&entry_lock); + if (err) + { + log_error ("failed to release the entry lock: %s\n", strerror (err)); + if (!rc) + rc = gpg_error_from_errno (err); + } + assuan_release (ctx); } - assuan_release (ctx); return rc; } @@ -288,6 +292,13 @@ start_pinentry (ctrl_t ctrl) char *flavor_version; int err; + if (entry_owner == ctrl) + { + /* Allow recursive use of pinentry. */ + ctrl->pinentry_level++; + return 0; + } + npth_clock_gettime (&abstime); abstime.tv_sec += LOCK_TIMEOUT; err = npth_mutex_timedlock (&entry_lock, &abstime); @@ -371,6 +382,10 @@ start_pinentry (ctrl_t ctrl) log_error ("can't allocate assuan context: %s\n", gpg_strerror (rc)); return rc; } + + ctrl->pinentry_level = 1; + entry_ctx = ctx; + /* We don't want to log the pinentry communication to make the logs easier to read. We might want to add a new debug option to enable pinentry logging. */ @@ -382,17 +397,15 @@ start_pinentry (ctrl_t ctrl) that atfork is used to change the environment for pinentry. We start the server in detached mode to suppress the console window under Windows. */ - rc = assuan_pipe_connect (ctx, full_pgmname, argv, + rc = assuan_pipe_connect (entry_ctx, full_pgmname, argv, no_close_list, atfork_cb, ctrl, ASSUAN_PIPE_CONNECT_DETACHED); if (rc) { log_error ("can't connect to the PIN entry module '%s': %s\n", full_pgmname, gpg_strerror (rc)); - assuan_release (ctx); return unlock_pinentry (gpg_error (GPG_ERR_NO_PIN_ENTRY)); } - entry_ctx = ctx; if (DBG_IPC) log_debug ("connection to PIN entry established\n"); @@ -1551,7 +1564,6 @@ agent_popup_message_stop (ctrl_t ctrl) /* Thread IDs are opaque, but we try our best here by resetting it to the same content that a static global variable has. */ memset (&popup_tid, '\0', sizeof (popup_tid)); - entry_owner = NULL; /* Now we can close the connection. */ unlock_pinentry (0); ----------------------------------------------------------------------- Summary of changes: agent/agent.h | 4 ++ agent/call-pinentry.c | 144 ++++++++++++++++++++++++++------------------------ common/gettime.c | 9 ++-- 3 files changed, 84 insertions(+), 73 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 08:46:27 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Thu, 02 Nov 2017 08:46:27 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-63-g5e96fe7 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 5e96fe72e477d09e35ccee48af0fd9ab2b3ae409 (commit) from fd3f5ca151b9440ade2fa4991b7cfb190e357893 (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 5e96fe72e477d09e35ccee48af0fd9ab2b3ae409 Author: NIIBE Yutaka Date: Thu Nov 2 16:23:10 2017 +0900 agent: Fix returning GPG_ERR_NOT_FOUND wrongly. * agent/learncard.c (agent_handle_learn): Find SERIALNO. -- Bug is: "gpg-connect-agent learn /bye" just fails wrongly. Fixes-commit: 8c8ce8711d9c938fcb982b0341e6b052742cb887 Signed-off-by: NIIBE Yutaka diff --git a/agent/learncard.c b/agent/learncard.c index e0c882a..abe1dd0 100644 --- a/agent/learncard.c +++ b/agent/learncard.c @@ -340,14 +340,12 @@ agent_handle_learn (ctrl_t ctrl, int send, void *assuan_context, int force) } /* Pass on all the collected status information. */ - if (assuan_context) + for (sitem = sparm.info; sitem; sitem = sitem->next) { - for (sitem = sparm.info; sitem; sitem = sitem->next) - { - if (!strcmp (sitem->keyword, "SERIALNO")) - serialno = sitem->data; - assuan_write_status (assuan_context, sitem->keyword, sitem->data); - } + if (!strcmp (sitem->keyword, "SERIALNO")) + serialno = sitem->data; + if (assuan_context) + assuan_write_status (assuan_context, sitem->keyword, sitem->data); } if (!serialno) ----------------------------------------------------------------------- Summary of changes: agent/learncard.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 17:00:15 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Thu, 02 Nov 2017 17:00:15 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-64-g1651310 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 16513102036a91aa46741260b3af0d42a25941e0 (commit) from 5e96fe72e477d09e35ccee48af0fd9ab2b3ae409 (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 16513102036a91aa46741260b3af0d42a25941e0 Author: Werner Koch Date: Thu Nov 2 16:51:37 2017 +0100 build: Remove configure options --disable-gpg -- gpg is used by several other components as well as from the test suite. We need it. GnuPG-bug-id: 3479 Signed-off-by: Werner Koch diff --git a/configure.ac b/configure.ac index ebd0c2f..119a95f 100644 --- a/configure.ac +++ b/configure.ac @@ -116,7 +116,8 @@ use_tls_library=no large_secmem=no show_tor_support=no -GNUPG_BUILD_PROGRAM(gpg, yes) +# gpg is a required part and can't be disabled anymore. +build_gpg=yes GNUPG_BUILD_PROGRAM(gpgsm, yes) # The agent is a required part and can't be disabled anymore. build_agent=yes ----------------------------------------------------------------------- Summary of changes: configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 17:09:31 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Thu, 02 Nov 2017 17:09:31 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-28-g3da47d1 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 3da47d19df89d302c0ea25921f4bd8ce55705afe (commit) from 0e5bd473a07f188615c4fce26b73bb452d689d68 (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 3da47d19df89d302c0ea25921f4bd8ce55705afe Author: NIIBE Yutaka Date: Thu Nov 2 16:23:10 2017 +0900 agent: Fix returning GPG_ERR_NOT_FOUND wrongly. * agent/learncard.c (agent_handle_learn): Find SERIALNO. -- Bug is: "gpg-connect-agent learn /bye" just fails wrongly. Fixes-commit: 8c8ce8711d9c938fcb982b0341e6b052742cb887 Signed-off-by: NIIBE Yutaka (cherry picked from commit 5e96fe72e477d09e35ccee48af0fd9ab2b3ae409) diff --git a/agent/learncard.c b/agent/learncard.c index e0c882a..abe1dd0 100644 --- a/agent/learncard.c +++ b/agent/learncard.c @@ -340,14 +340,12 @@ agent_handle_learn (ctrl_t ctrl, int send, void *assuan_context, int force) } /* Pass on all the collected status information. */ - if (assuan_context) + for (sitem = sparm.info; sitem; sitem = sitem->next) { - for (sitem = sparm.info; sitem; sitem = sitem->next) - { - if (!strcmp (sitem->keyword, "SERIALNO")) - serialno = sitem->data; - assuan_write_status (assuan_context, sitem->keyword, sitem->data); - } + if (!strcmp (sitem->keyword, "SERIALNO")) + serialno = sitem->data; + if (assuan_context) + assuan_write_status (assuan_context, sitem->keyword, sitem->data); } if (!serialno) ----------------------------------------------------------------------- Summary of changes: agent/learncard.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 17:24:32 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Thu, 02 Nov 2017 17:24:32 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-66-g922bae8 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 922bae8082f2f8d696ea0e7d7e9e4d986789bdfc (commit) via ea09b6cded9d31a8ebd91878553c3eaa2b76e817 (commit) from 16513102036a91aa46741260b3af0d42a25941e0 (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 922bae8082f2f8d696ea0e7d7e9e4d986789bdfc Author: Werner Koch Date: Thu Nov 2 17:20:13 2017 +0100 gpg: Unifiy the message for re-configuring cards. * g10/card-util.c (ask_card_keyattr): Print "rsaNNNN". -- This is a separate patch from the previous to avoid string changes when backporting the other patch to 2.2. Signed-off-by: Werner Koch diff --git a/g10/card-util.c b/g10/card-util.c index 2294df1..8a03a26 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1381,8 +1381,12 @@ ask_card_keyattr (int keyno, unsigned int nbits) } else { + char name[30]; + + snprintf (name, sizeof name, "rsa%u", req_nbits); tty_printf (_("The card will now be re-configured" - " to generate a key of %u bits\n"), req_nbits); + " to generate a key of type: %s\n"), + name); show_keysize_warning (); return req_nbits; } commit ea09b6cded9d31a8ebd91878553c3eaa2b76e817 Author: Werner Koch Date: Thu Nov 2 17:11:03 2017 +0100 gpg: Introduce magic value 25519 to switch a card to ECC. * g10/card-util.c (show_keysize_warning): Slightly change the text. (ask_card_keyattr): Handle special value 25519. (do_change_keyattr): Allow changing to cv25519/ed25519. (generate_card_keys): Ditto. (card_generate_subkey): Ditto. -- This is kludge to make it easier for gnuk to be switched into ECC mode. Signed-off-by: Werner Koch diff --git a/g10/card-util.c b/g10/card-util.c index 9495038..2294df1 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1317,12 +1317,11 @@ show_keysize_warning (void) return; shown = 1; tty_printf - (_("Note: There is no guarantee that the card " - "supports the requested size.\n" - " If the key generation does not succeed, " - "please check the\n" - " documentation of your card to see what " - "sizes are allowed.\n")); + (_("Note: There is no guarantee that the card supports the requested\n" + " key type or size. If the key generation does not succeed,\n" + " please check the documentation of your card to see which\n" + " key types and sizes are supported.\n") + ); } @@ -1353,40 +1352,61 @@ ask_card_keyattr (int keyno, unsigned int nbits) xfree (prompt); xfree (answer); - if (req_nbits != nbits && (req_nbits % 32) ) + if (req_nbits == 25519) { - req_nbits = ((req_nbits + 31) / 32) * 32; - tty_printf (_("rounded up to %u bits\n"), req_nbits); - } - - if (req_nbits == nbits) - return 0; /* Use default. */ + if (req_nbits == nbits) + return 0; /* Use default. */ - if (req_nbits < min_nbits || req_nbits > max_nbits) - { - tty_printf (_("%s keysizes must be in the range %u-%u\n"), - "RSA", min_nbits, max_nbits); + tty_printf (_("The card will now be re-configured" + " to generate a key of type: %s\n"), + keyno==1? "cv25519":"ed25519"); + show_keysize_warning (); + return req_nbits; } else { - tty_printf (_("The card will now be re-configured " - "to generate a key of %u bits\n"), req_nbits); - show_keysize_warning (); - return req_nbits; + if (req_nbits != nbits && (req_nbits % 32) ) + { + req_nbits = ((req_nbits + 31) / 32) * 32; + tty_printf (_("rounded up to %u bits\n"), req_nbits); + } + + if (req_nbits == nbits) + return 0; /* Use default. */ + + if (req_nbits < min_nbits || req_nbits > max_nbits) + { + tty_printf (_("%s keysizes must be in the range %u-%u\n"), + "RSA", min_nbits, max_nbits); + } + else + { + tty_printf (_("The card will now be re-configured" + " to generate a key of %u bits\n"), req_nbits); + show_keysize_warning (); + return req_nbits; + } } } } /* Change the size of key KEYNO (0..2) to NBITS and show an error - message if that fails. */ + * message if that fails. Using the magic value 25519 for NBITS + * switches to ed25519 or cv25519 depending on the KEYNO. */ static gpg_error_t do_change_keyattr (int keyno, unsigned int nbits) { gpg_error_t err; char args[100]; - snprintf (args, sizeof args, "--force %d 1 rsa%u", keyno+1, nbits); + if (nbits == 25519) + snprintf (args, sizeof args, "--force %d %d %s", + keyno+1, + keyno == 1? PUBKEY_ALGO_ECDH : PUBKEY_ALGO_EDDSA, + keyno == 1? "cv25519" : "ed25519"); + else + snprintf (args, sizeof args, "--force %d 1 rsa%u", keyno+1, nbits); err = agent_scd_setattr ("KEY-ATTR", args, strlen (args), NULL); if (err) log_error (_("error changing size of key %d to %u bits: %s\n"), @@ -1460,9 +1480,15 @@ generate_card_keys (ctrl_t ctrl) for (keyno = 0; keyno < DIM (info.key_attr); keyno++) { - if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) + if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA + || info.key_attr[keyno].algo == PUBKEY_ALGO_ECDH + || info.key_attr[keyno].algo == PUBKEY_ALGO_EDDSA) { - nbits = ask_card_keyattr (keyno, info.key_attr[keyno].nbits); + if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) + nbits = ask_card_keyattr (keyno, info.key_attr[keyno].nbits); + else + nbits = ask_card_keyattr (keyno, 25519 /* magic */); + if (nbits && do_change_keyattr (keyno, nbits)) { /* Error: Better read the default key size again. */ @@ -1540,12 +1566,18 @@ card_generate_subkey (ctrl_t ctrl, kbnode_t pub_keyblock) key size. */ if (info.is_v2 && info.extcap.aac) { - if (info.key_attr[keyno-1].algo == PUBKEY_ALGO_RSA) + if (info.key_attr[keyno-1].algo == PUBKEY_ALGO_RSA + || info.key_attr[keyno].algo == PUBKEY_ALGO_ECDH + || info.key_attr[keyno].algo == PUBKEY_ALGO_EDDSA) { unsigned int nbits; ask_again: - nbits = ask_card_keyattr (keyno-1, info.key_attr[keyno-1].nbits); + if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) + nbits = ask_card_keyattr (keyno-1, info.key_attr[keyno-1].nbits); + else + nbits = ask_card_keyattr (keyno-1, 25519); + if (nbits && do_change_keyattr (keyno-1, nbits)) { /* Error: Better read the default key size again. */ ----------------------------------------------------------------------- Summary of changes: g10/card-util.c | 90 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 63 insertions(+), 27 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 17:49:32 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Thu, 02 Nov 2017 17:49:32 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-32-g296783a 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 296783a3181afa605248e27c672cbce7aa88ac0d (commit) via a124907742ab9c2fa382caa4e52803565cb083a3 (commit) via acb300543422c660c87ac2f0211a42f792a65cc4 (commit) via de3a740c2e1156e58d2f94faa85c051740c8988e (commit) from 3da47d19df89d302c0ea25921f4bd8ce55705afe (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 296783a3181afa605248e27c672cbce7aa88ac0d Author: Werner Koch Date: Thu Nov 2 17:43:21 2017 +0100 po: Fixed one string wrongly marked as fuzzy. -- These seems to a a small gettext bug which claimed that "NOTE: There is no guarantee that the card supports[...]" was changed. Also committed changes due to msgmerge. Signed-off-by: Werner Koch diff --git a/po/ca.po b/po/ca.po index 738c5f7..4d9ce66 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1505,6 +1505,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Quina grand?ria voleu? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "arrodonida fins a %u bits\n" @@ -2849,14 +2853,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "clau %08lX: no correspon a la nostra c?pia\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "clau %08lX: no s'ha trobat el bloc de claus original: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "clau %08lX: no s'ha pogut llegir el bloc de claus original: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "clau %08lX: ?%s? 1 ID d'usuari nou\n" @@ -2945,6 +2941,14 @@ msgstr "" "clau %08lX: falta la clau p?blica: no es pot aplicar el certificat\n" "de revocaci?\n" +#, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "clau %08lX: no s'ha trobat el bloc de claus original: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "clau %08lX: no s'ha pogut llegir el bloc de claus original: %s\n" + # O ?rebutjara?? ivb # Per tots els canvis d'anglicisme ?ignorat? -> ?es descarta?, # ?es rebutja? est? b?. jm @@ -3466,6 +3470,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "La clau secreta est? disponible.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "La clau secreta est? disponible.\n" + msgid "Need the secret key to do this.\n" msgstr "Cal la clau secreta per a fer a??.\n" diff --git a/po/cs.po b/po/cs.po index 17bff35..24d54c7 100644 --- a/po/cs.po +++ b/po/cs.po @@ -35,7 +35,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg2 2.1.10\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2015-12-07 20:45+0100\n" +"PO-Revision-Date: 2017-11-02 17:38+0100\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -1393,6 +1393,11 @@ msgstr "Jakou d?lku kl??e pro ?ifrov?n? si p?ejete? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Jakou d?lku kl??e pro autentizaci si p?ejete? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "Karta bude nyn? p?enastavena na generov?n? kl??e dlouh?ho %u bit?\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "zaokrouhleno na %u bit?\n" @@ -2670,14 +2675,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "kl?? %s: neodpov?d? na?? kopii\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "kl?? %s: nemohu naj?t origin?ln? blok kl??e: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "kl?? %s: nemohu ??st origin?ln? blok kl??e: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "kl?? %s: ?%s? 1 nov? identifik?tor u?ivatele\n" @@ -2763,6 +2760,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "kl?? %s: chyb? ve?ejn? kl???? nemohu aplikovat revoka?n? certifik?t\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "kl?? %s: nemohu naj?t origin?ln? blok kl??e: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "kl?? %s: nemohu ??st origin?ln? blok kl??e: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "kl?? %s: neplatn? revoka?n? certifik?t: %s?? zam?tnuto\n" @@ -3214,6 +3219,11 @@ msgstr "sm?stnat nepou?iteln? ID u?ivatel? a odstranit z?kl??e v?echny msgid "Secret key is available.\n" msgstr "Tajn? kl?? je dostupn?.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Tajn? kl?? je dostupn?.\n" + msgid "Need the secret key to do this.\n" msgstr "Pro proveden? t?to operace je pot?eba tajn? kl??.\n" diff --git a/po/da.po b/po/da.po index e124de5..bd6e9c5 100644 --- a/po/da.po +++ b/po/da.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2012-11-01 20:27+0200\n" +"PO-Revision-Date: 2017-11-02 17:39+0100\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "Language: da\n" @@ -1451,11 +1451,6 @@ msgstr "fejl ved indhentelse af aktuel n?gleinformation: %s\n" msgid "Replace existing key? (y/N) " msgstr "Erstat eksisterende n?gle? (j/N) " -#, fuzzy -#| msgid "" -#| "NOTE: There is no guarantee that the card supports the requested size.\n" -#| " If the key generation does not succeed, please check the\n" -#| " documentation of your card to see what sizes are allowed.\n" msgid "" "Note: There is no guarantee that the card supports the requested size.\n" " If the key generation does not succeed, please check the\n" @@ -1478,6 +1473,11 @@ msgstr "Hvilken n?glest?rrelse ?nsker du for krypteringsn?glen? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Hvilken n?glest?rrelse ?nsker du for godkendelsesn?glen? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "Kortet vil nu blive omkonfigureret til at oprette en n?gle p? %u bit\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "afrundet op til %u bit\n" @@ -2811,14 +2811,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "n?gle %s: stemmer ikke med vores kopi\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "n?gle %s: kan ikke lokalisere original n?gleblok: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "n?gle %s: kan ikke l?se original n?gleblok: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "n?gle %s: ?%s? 1 ny bruger-id\n" @@ -2908,6 +2900,14 @@ msgstr "" "n?gle %s: ingen offentlig n?gle - kan ikke anvende tilbagekaldscertifikat\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "n?gle %s: kan ikke lokalisere original n?gleblok: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "n?gle %s: kan ikke l?se original n?gleblok: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "n?gle %s: ugyldigt tilbagekaldscertifikat: %s - afvist\n" @@ -3382,6 +3382,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Hemmelig n?gle er tilg?ngelig.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Hemmelig n?gle er tilg?ngelig.\n" + msgid "Need the secret key to do this.\n" msgstr "Har brug for den hemmelige n?gle for dette.\n" diff --git a/po/el.po b/po/el.po index a57c8b8..cc9439e 100644 --- a/po/el.po +++ b/po/el.po @@ -1440,6 +1440,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "?? ??????? ???????? ?? ??????; (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "????????????????? ??? ?? %u bits\n" @@ -2771,14 +2775,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "?????? %08lX: ??? ????????? ?? ?? ????????? ???\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "?????? %08lX: ???????? ?????????? ??? ??????? ???????? ????????: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "?????? %08lX: ???????? ????????? ??? ??????? ???????? ????????: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "?????? %08lX: \"%s\" 1 ??? user ID\n" @@ -2868,6 +2864,14 @@ msgstr "" "?????????\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "?????? %08lX: ???????? ?????????? ??? ??????? ???????? ????????: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "?????? %08lX: ???????? ????????? ??? ??????? ???????? ????????: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "?????? %08lX: ?? ?????? ????????????? ?????????: %s - ????????\n" @@ -3373,6 +3377,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "?? ??????? ?????? ????? ?????????.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "?? ??????? ?????? ????? ?????????.\n" + msgid "Need the secret key to do this.\n" msgstr "?????????? ?? ??????? ?????? ??? ?? ????? ????.\n" diff --git a/po/eo.po b/po/eo.po index 3c49698..611b987 100644 --- a/po/eo.po +++ b/po/eo.po @@ -1442,6 +1442,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Kiun ?losilgrandon vi deziras? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "rondigita ?is %u bitoj\n" @@ -2752,14 +2756,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "?losilo %08lX: diferencas de nia kopio\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "?losilo %08lX: ne povas trovi originalan ?losilblokon: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "?losilo %08lX: ne povas legi originalan ?losilblokon: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "?losilo %08lX: 1 nova uzantidentigilo\n" @@ -2848,6 +2844,14 @@ msgstr "" "?losilo %08lX: publika ?losilo mankas - ne povas apliki revokatestilon\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "?losilo %08lX: ne povas trovi originalan ?losilblokon: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "?losilo %08lX: ne povas legi originalan ?losilblokon: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "?losilo %08lX: nevalida revokatestilo: %s - malakceptita\n" @@ -3357,6 +3361,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Sekreta ?losilo estas havebla.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Sekreta ?losilo estas havebla.\n" + msgid "Need the secret key to do this.\n" msgstr "Bezonas la sekretan ?losilon por fari tion.\n" diff --git a/po/es.po b/po/es.po index 95a2589..76d3952 100644 --- a/po/es.po +++ b/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 2.0.9\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2015-10-09 17:10+0200\n" +"PO-Revision-Date: 2017-11-02 17:39+0100\n" "Last-Translator: Jaime Su?rez \n" "Language-Team: Spanish \n" "Language: es\n" @@ -1469,11 +1469,6 @@ msgstr "error obteniendo la informaci?n actual de la clave: %s\n" msgid "Replace existing key? (y/N) " msgstr "?Reemplazar la clave existente? (s/N) " -#, fuzzy -#| msgid "" -#| "NOTE: There is no guarantee that the card supports the requested size.\n" -#| " If the key generation does not succeed, please check the\n" -#| " documentation of your card to see what sizes are allowed.\n" msgid "" "Note: There is no guarantee that the card supports the requested size.\n" " If the key generation does not succeed, please check the\n" @@ -1495,6 +1490,11 @@ msgstr "?De qu? tama?o quiere la clave de Cifrado? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "?De qu? tama?o quiere la clave de Autenticaci?n? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "Ahora la tarjeta se reconfigurar? para generar una clave de %u bits\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "redondeados a %u bits\n" @@ -2840,14 +2840,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "clave %s: no coincide con nuestra copia\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "clave %s: no puede localizarse el bloque de claves original: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "clave %s: no puede leerse el bloque de claves original: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "clave %s: \"%s\" 1 ID de usuario nuevo\n" @@ -2938,6 +2930,14 @@ msgstr "" "certificado de revocaci?n\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "clave %s: no puede localizarse el bloque de claves original: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "clave %s: no puede leerse el bloque de claves original: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "clave %s: certificado de revocaci?n inv?lido: %s - rechazado\n" @@ -3395,6 +3395,11 @@ msgstr "compactar IDs inutilizables y borrar todas las firmas de la clave" msgid "Secret key is available.\n" msgstr "Clave secreta disponible.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Clave secreta disponible.\n" + msgid "Need the secret key to do this.\n" msgstr "Se necesita la clave secreta para hacer esto.\n" diff --git a/po/et.po b/po/et.po index f852a29..66e905b 100644 --- a/po/et.po +++ b/po/et.po @@ -1436,6 +1436,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Millist v?tmepikkust te soovite? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "?mardatud ?les %u bitini\n" @@ -2756,14 +2760,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "v?ti %08lX: ei sobi meie koopiaga\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "v?ti %08lX: ei leia algset v?tmeblokki: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "v?ti %08lX: ei ?nnestu lugeda algset v?tmeblokki: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "v?ti %08lX: \"%s\" 1 uus kasutaja ID\n" @@ -2852,6 +2848,14 @@ msgstr "" "v?ti %08lX: avalik v?ti puudub - t?histamise sertifikaati ei saa rakendada\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "v?ti %08lX: ei leia algset v?tmeblokki: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "v?ti %08lX: ei ?nnestu lugeda algset v?tmeblokki: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "v?ti %08lX: vigane t?histamise sertifikaat: %s - l?kkasin tagasi\n" @@ -3346,6 +3350,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Salajane v?ti on kasutatav.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Salajane v?ti on kasutatav.\n" + msgid "Need the secret key to do this.\n" msgstr "Selle tegamiseks on vaja salajast v?tit.\n" diff --git a/po/fi.po b/po/fi.po index ea38194..15f7ce7 100644 --- a/po/fi.po +++ b/po/fi.po @@ -1455,6 +1455,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Mink? kokoisen avaimen haluat? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "py?ristetty %u bittiin\n" @@ -2773,14 +2777,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "avain %08lX: ei vastaa omaa kopiotamme\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "avain %08lX: alkuper?ist? avainlohkoa ei l?ydy: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "avain %08lX. alkuper?isen avainlohko lukeminen ei onnistu: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "avain %08lX: \"%s\" 1 uusi k?ytt?j?tunnus\n" @@ -2869,6 +2865,14 @@ msgstr "" "avain %08lX: ei julkista avainta - mit?t?intivarmennetta ei voida k?ytt??\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "avain %08lX: alkuper?ist? avainlohkoa ei l?ydy: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "avain %08lX. alkuper?isen avainlohko lukeminen ei onnistu: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "avain %08lX: p?tem?t?n mit?t?intivarmenne: %s - hyl?tty\n" @@ -3366,6 +3370,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Salainen avain on saatavilla.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Salainen avain on saatavilla.\n" + msgid "Need the secret key to do this.\n" msgstr "T?h?n tarvitaan salainen avain.\n" diff --git a/po/fr.po b/po/fr.po index 916aef7..fa1e87f 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 2.1\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2015-09-10 16:22+0200\n" +"PO-Revision-Date: 2017-11-02 17:40+0100\n" "Last-Translator: David Pr?vot \n" "Language-Team: French \n" "Language: fr\n" @@ -1403,6 +1403,12 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "" "Quelle taille de clef d?sirez-vous pour la clef d'authentification?? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" +"La carte sera maintenant reconfigur?e pour g?n?rer une clef de %u?bits\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "arrondie ? %u?bits\n" @@ -2710,14 +2716,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "clef %s?: ne correspond pas ? notre copie\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "clef %s?: impossible de trouver le bloc de clef d'origine?: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "clef %s?: impossible de lire le bloc de clef d'origine?: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "clef %s?: ??%s?? 1?nouvelle identit?\n" @@ -2805,6 +2803,14 @@ msgstr "" " de r?vocation\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "clef %s?: impossible de trouver le bloc de clef d'origine?: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "clef %s?: impossible de lire le bloc de clef d'origine?: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "clef %s?: certificat de r?vocation incorrect?: %s ??rejet?\n" @@ -3265,6 +3271,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "La clef secr?te est disponible.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "La clef secr?te est disponible.\n" + msgid "Need the secret key to do this.\n" msgstr "La clef secr?te est n?cessaire pour faire cela.\n" diff --git a/po/gl.po b/po/gl.po index d8434f6..3b18702 100644 --- a/po/gl.po +++ b/po/gl.po @@ -1445,6 +1445,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "?Qu? tama?o de chave quere? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "redondeado a %u bits\n" @@ -2765,18 +2769,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "chave %08lX: non coincide coa nosa copia\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "" -"chave %08lX: non foi posible localiza-lo bloque de chaves original:\n" -"%s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "" -"chave %08lX: non foi posible le-lo bloque de chaves original:\n" -"%s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "chave %08lX: \"%s\" 1 novo ID de usuario\n" @@ -2866,6 +2858,18 @@ msgstr "" "certificado de revocaci?n\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "" +"chave %08lX: non foi posible localiza-lo bloque de chaves original:\n" +"%s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "" +"chave %08lX: non foi posible le-lo bloque de chaves original:\n" +"%s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "" "chave %08lX: certificado de revocaci?n incorrecto:\n" @@ -3370,6 +3374,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "A chave secreta est? disponible.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "A chave secreta est? disponible.\n" + msgid "Need the secret key to do this.\n" msgstr "C?mpre a chave secreta para facer isto.\n" diff --git a/po/hu.po b/po/hu.po index 49bef6c..f18609d 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1436,6 +1436,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Milyen kulcsm?retet szeretne? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "Felkerek?tve %u bitre.\n" @@ -2753,14 +2757,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "%08lX kulcs: Nem egyezik a mi m?solatunkkal!\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "%08lX kulcs: Nem tal?lom az eredeti kulcsblokkot: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "%08lX kulcs: Nem tudom beolvasni az eredeti kulcsblokkot: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "%08lX kulcs: \"%s\" 1 ?j felhaszn?l?i azonos?t?.\n" @@ -2849,6 +2845,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "%08lX kulcs: Nincs nyilv?nos kulcs - nem tudok visszavonni.\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "%08lX kulcs: Nem tal?lom az eredeti kulcsblokkot: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "%08lX kulcs: Nem tudom beolvasni az eredeti kulcsblokkot: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "%08lX kulcs: ?rv?nytelen visszavon? igazol?s: %s - visszautas?tva.\n" @@ -3345,6 +3349,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Titkos kulcs rendelkez?sre ?ll.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Titkos kulcs rendelkez?sre ?ll.\n" + msgid "Need the secret key to do this.\n" msgstr "Ehhez sz?ks?g van a titkos kulcsra.\n" diff --git a/po/id.po b/po/id.po index 786dc42..635ed7d 100644 --- a/po/id.po +++ b/po/id.po @@ -1442,6 +1442,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Keysize yang anda inginkan? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "dibulatkan hingga %u bit\n" @@ -2758,14 +2762,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "kunci %08lX: tidak cocok dengan duplikat kami\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "kunci %08lX: tidak dapat menemukan keyblock orisinal: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "kunci %08lX: tidak dapat membaca keyblok orisinal: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "kunci %08lX: 1 user ID baru \"%s\"\n" @@ -2855,6 +2851,14 @@ msgstr "" "pembatalan\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "kunci %08lX: tidak dapat menemukan keyblock orisinal: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "kunci %08lX: tidak dapat membaca keyblok orisinal: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "kunci %08lX: sertifikat pembatalan tidak valid: %s - ditolak\n" @@ -3350,6 +3354,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Kunci rahasia tersedia.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Kunci rahasia tersedia.\n" + msgid "Need the secret key to do this.\n" msgstr "Perlu kunci rahasia untuk melakukan hal ini.\n" diff --git a/po/it.po b/po/it.po index 1bcc8b8..fc43244 100644 --- a/po/it.po +++ b/po/it.po @@ -1440,6 +1440,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Di che dimensioni vuoi la chiave? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "arrotondate a %u bit\n" @@ -2764,14 +2768,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "chiave %08lX: non corrisponde alla nostra copia\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "chiave %08lX: impossibile individuare il keyblock originale: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "chiave %08lX: impossibile leggere il keyblock originale: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "chiave %08lX: \"%s\" 1 nuovo user ID\n" @@ -2861,6 +2857,14 @@ msgstr "" "certificato di revoca\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "chiave %08lX: impossibile individuare il keyblock originale: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "chiave %08lX: impossibile leggere il keyblock originale: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "chiave %08lX: certificato di revoca non valido: %s - rifiutato\n" @@ -3357,6 +3361,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "? disponibile una chiave segreta.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "? disponibile una chiave segreta.\n" + msgid "Need the secret key to do this.\n" msgstr "Per fare questo serve la chiave segreta.\n" diff --git a/po/ja.po b/po/ja.po index 6567ab3..bdbc953 100644 --- a/po/ja.po +++ b/po/ja.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 2.1.23\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-08-22 11:22+0900\n" +"PO-Revision-Date: 2017-11-02 17:40+0100\n" "Last-Translator: NIIBE Yutaka \n" "Language-Team: none\n" "Language: ja\n" @@ -1340,6 +1340,11 @@ msgstr "????????? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "???????? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "??%u????????????????????????????\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "%u??????????\n" @@ -2545,14 +2550,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "?%s: ????????????\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "?%s: ?????????????????: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "?%s: ???????????????: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "?%s: \"%s\" ??????ID?1?\n" @@ -2638,6 +2635,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "?%s: ????????? - ?????????????\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "?%s: ?????????????????: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "?%s: ???????????????: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "?%s: ????????: %s - ??\n" @@ -3079,6 +3084,11 @@ msgstr "???????ID???????????????? msgid "Secret key is available.\n" msgstr "???????????\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "???????????\n" + msgid "Need the secret key to do this.\n" msgstr "???????????????\n" diff --git a/po/nb.po b/po/nb.po index 7a72323..8be6724 100644 --- a/po/nb.po +++ b/po/nb.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU gnupg 2.1\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-08-15 10:19+0200\n" +"PO-Revision-Date: 2017-11-02 17:40+0100\n" "Last-Translator: ?ka Sikrom \n" "Language-Team: Norwegian Bokm?l \n" "Language: nb\n" @@ -1343,6 +1343,11 @@ msgstr "Hvor stor skal krypteringsn?kkelen v?re? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Hvor stor skal autentiseringsn?kkelen v?re? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "Kortet blir n? satt opp p? nytt for ? lage n?kkel p? %u bit\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "rundet opp til %u bit\n" @@ -2556,14 +2561,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "n?kkel %s: stemmer ikke med v?r kopi\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "n?kkel %s: finner ikke original n?kkelblokk: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "n?kkel %s: klarte ikke ? lese opprinnelig n?kkelblokk: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "n?kkel %s: ?%s? 1 ny bruker-ID\n" @@ -2652,6 +2649,14 @@ msgstr "" "opphevelsessertifikat\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "n?kkel %s: finner ikke original n?kkelblokk: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "n?kkel %s: klarte ikke ? lese opprinnelig n?kkelblokk: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "n?kkel %s: ugyldig opphevingssertifikat: %s - avvist\n" @@ -3103,6 +3108,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Hemmelig n?kkel er tilgjengelig.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Hemmelig n?kkel er tilgjengelig.\n" + msgid "Need the secret key to do this.\n" msgstr "Du trenger tilh?rende hemmelig n?kkel for ? gj?re dette.\n" diff --git a/po/pl.po b/po/pl.po index c4e2d07..ef392ac 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-2.0.20\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-02-22 16:03+0100\n" +"PO-Revision-Date: 2017-11-02 17:41+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -1438,11 +1438,6 @@ msgstr "b??d podczas odczytu aktualnych informacji o kluczu: %s\n" msgid "Replace existing key? (y/N) " msgstr "Zast?pi? istniej?cy klucz? (t/N) " -#, fuzzy -#| msgid "" -#| "NOTE: There is no guarantee that the card supports the requested size.\n" -#| " If the key generation does not succeed, please check the\n" -#| " documentation of your card to see what sizes are allowed.\n" msgid "" "Note: There is no guarantee that the card supports the requested size.\n" " If the key generation does not succeed, please check the\n" @@ -1464,6 +1459,11 @@ msgstr "Jakiej d?ugo?ci klucz do szyfrowania wygenerowa?? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Jakiej d?ugo?ci klucz do uwierzytelniania wygenerowa?? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "Karta zostanie przekonfigurowana do tworzenia klucza %u-bitowego\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "zaokr?glono do %u bit?w\n" @@ -2817,14 +2817,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "klucz %s: nie zgadza si? z lokaln? kopi?\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "klucz %s: brak oryginalnego bloku klucza; %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "klucz %s: nie mo?na odczyta? oryginalnego bloku klucza: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "klucz %s: ,,%s'' 1 nowy identyfikator u?ytkownika\n" @@ -2915,6 +2907,14 @@ msgstr "" " uniewa?nienia\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "klucz %s: brak oryginalnego bloku klucza; %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "klucz %s: nie mo?na odczyta? oryginalnego bloku klucza: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "klucz %s: niepoprawny certyfikat uniewa?nienia: %s - odrzucony\n" @@ -3391,6 +3391,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Dost?pny jest klucz tajny.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Dost?pny jest klucz tajny.\n" + msgid "Need the secret key to do this.\n" msgstr "Do wykonania tej operacji potrzebny jest klucz tajny.\n" diff --git a/po/pt.po b/po/pt.po index e95b887..3caa5ca 100644 --- a/po/pt.po +++ b/po/pt.po @@ -1441,6 +1441,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Qual o tamanho de chave desejado? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "arredondado para %u bits\n" @@ -2758,14 +2762,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "chave %08lX: n?o corresponde ? nossa c?pia\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "chave %08lX: imposs?vel localizar bloco de chaves original: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "chave %08lX: imposs?vel ler bloco de chaves original: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "chave %8lX: \"%s\" 1 novo ID de utilizador\n" @@ -2855,6 +2851,14 @@ msgstr "" "de revoga??o\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "chave %08lX: imposs?vel localizar bloco de chaves original: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "chave %08lX: imposs?vel ler bloco de chaves original: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "chave %08lX: certificado de revoga??o inv?lido: %s - rejeitado\n" @@ -3356,6 +3360,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Chave secreta dispon?vel.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Chave secreta dispon?vel.\n" + msgid "Need the secret key to do this.\n" msgstr "A chave secreta ? necess?ria para fazer isto.\n" diff --git a/po/ro.po b/po/ro.po index d938da7..30a9924 100644 --- a/po/ro.po +++ b/po/ro.po @@ -1446,6 +1446,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Ce lungime de cheie dori?i? (%u) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "rotunjit? prin adaos la %u bi?i\n" @@ -2798,14 +2802,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "cheia %s: nu se potrive?te cu copia noastr?\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "cheia %s: nu pot g?si keyblock-ul original: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "cheia %s: nu pot citi keyblock-ul original: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "cheia %s: \"%s\" 1 nou ID utilizator\n" @@ -2894,6 +2890,14 @@ msgstr "" "cheia %s: nici o cheie public? - nu pot aplica certificatul de revocare\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "cheia %s: nu pot g?si keyblock-ul original: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "cheia %s: nu pot citi keyblock-ul original: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "cheia %s: certificat de revocare invalid: %s - respins\n" @@ -3358,6 +3362,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Cheia secret? este disponibil?.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Cheia secret? este disponibil?.\n" + msgid "Need the secret key to do this.\n" msgstr "Ave?i nevoie de cheia secret? pentru a face aceasta.\n" diff --git a/po/ru.po b/po/ru.po index f995349..930af27 100644 --- a/po/ru.po +++ b/po/ru.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: GnuPG 2.1.0\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-08-05 17:17+0000\n" +"PO-Revision-Date: 2017-11-02 17:41+0100\n" "Last-Translator: Ineiev \n" "Language-Team: Russian \n" "Language: ru\n" @@ -1350,6 +1350,11 @@ msgstr "????? ??? ????? ?????? ????? ??? ?????? msgid "What keysize do you want for the Authentication key? (%u) " msgstr "????? ??? ????? ?????? ????? ??? ??????????????? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "?????? ????? ????? ????????????? ?? ????????? ????? ?????? %u ???\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "???????? ?? %u ???\n" @@ -2585,14 +2590,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "???? %s: ?? ????????? ? ????? ??????\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "???? %s: ???????????? ???? ?????? ?? ??????: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "???? %s: ???????????? ???? ?????? ?? ????????: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "???? %s: \"%s\" 1 ????? ????????????? ????????????\n" @@ -2678,6 +2675,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "???? %s: ??? ????????? ????? - ?? ???? ????????? ?????????? ??????\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "???? %s: ???????????? ???? ?????? ?? ??????: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "???? %s: ???????????? ???? ?????? ?? ????????: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "???? %s: ???????????????? ?????????? ??????: %s - ?????????\n" @@ -3135,6 +3140,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "????????? ???? ????????.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "????????? ???? ????????.\n" + msgid "Need the secret key to do this.\n" msgstr "??? ??????? ???????? ????? ????????? ????.\n" diff --git a/po/sk.po b/po/sk.po index d8b898c..6880122 100644 --- a/po/sk.po +++ b/po/sk.po @@ -1442,6 +1442,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Ak? ve?kos? k???a si prajete? (1024) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "zaokr?hlen? na %u bitov\n" @@ -2773,14 +2777,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "k??? %08lX: nezodpoved? na?ej k?pii\n" #, fuzzy, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "k??? %08lX: nem??em n?js? origin?lny blok k???a: %s\n" - -#, fuzzy, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "k??? %08lX: nem??em ??ta? origin?lny blok k???a: %s\n" - -#, fuzzy, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "k??? %08lX: \"%s\" 1 nov? identifik?tor u??vate?a\n" @@ -2869,6 +2865,14 @@ msgstr "" "k??? %08lX: ch?ba verejn? k??? - nem??em aplikova? revoka?n? certifik?t\n" #, fuzzy, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "k??? %08lX: nem??em n?js? origin?lny blok k???a: %s\n" + +#, fuzzy, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "k??? %08lX: nem??em ??ta? origin?lny blok k???a: %s\n" + +#, fuzzy, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "k??? %08lX: neplatn? revoka?n? certifik?t: %s - zamietnut?\n" @@ -3369,6 +3373,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Tajn? k??? je dostupn?.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Tajn? k??? je dostupn?.\n" + msgid "Need the secret key to do this.\n" msgstr "Na vykonanie tejto oper?cie je potrebn? tajn? k???.\n" diff --git a/po/sv.po b/po/sv.po index ca7ba7e..8d94c9a 100644 --- a/po/sv.po +++ b/po/sv.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg trunk\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2011-01-12 14:53+0100\n" +"PO-Revision-Date: 2017-11-02 17:41+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -1479,11 +1479,6 @@ msgstr "fel vid h?mtning av aktuell nyckelinformation: %s\n" msgid "Replace existing key? (y/N) " msgstr "Ers?tt existerande nyckel? (j/N) " -#, fuzzy -#| msgid "" -#| "NOTE: There is no guarantee that the card supports the requested size.\n" -#| " If the key generation does not succeed, please check the\n" -#| " documentation of your card to see what sizes are allowed.\n" msgid "" "Note: There is no guarantee that the card supports the requested size.\n" " If the key generation does not succeed, please check the\n" @@ -1506,6 +1501,13 @@ msgstr "Vilken nyckelstorlek vill du anv?nda f?r krypteringsnyckeln? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "Vilken nyckelstorlek vill du anv?nda f?r autentiseringsnyckeln? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" +"Kortet kommer nu att konfigureras om f?r att generera en nyckel med %u " +"bitar\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "avrundade upp?t till %u bitar\n" @@ -2875,14 +2877,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "nyckel %s: st?mmer inte mot v?r lokala kopia\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "nyckel %s: kan inte hitta det ursprungliga nyckelblocket: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "nyckel %s: kan inte l?sa det ursprungliga nyckelblocket %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "nyckel %s: \"%s\" 1 ny anv?ndaridentitet\n" @@ -2971,6 +2965,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "nyckel %s: ingen publik nyckel - kan inte verkst?lla sp?rrcertifikat\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "nyckel %s: kan inte hitta det ursprungliga nyckelblocket: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "nyckel %s: kan inte l?sa det ursprungliga nyckelblocket %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "nyckel %s: ogiltigt sp?rrcertifikat: %s - avvisat\n" @@ -3441,6 +3443,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Den hemliga nyckeln finns tillg?nglig.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Den hemliga nyckeln finns tillg?nglig.\n" + msgid "Need the secret key to do this.\n" msgstr "Den hemliga nyckeln beh?vs f?r att g?ra detta.\n" diff --git a/po/tr.po b/po/tr.po index c1743f3..cc77eb9 100644 --- a/po/tr.po +++ b/po/tr.po @@ -1461,6 +1461,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "?stedi?iniz anahtar uzunlu?u nedir? (%u) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "%u bite yuvarland?\n" @@ -2802,14 +2806,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "anahtar %s: bizim kopyam?zla e?le?miyor\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "anahtar %s: ?zg?n anahtar bloku bulunamad?: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "anahtar %s: ?zg?n anahtar bloku okunamad?: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "anahtar %s: \"%s\" 1 yeni kullan?c? kimli?i\n" @@ -2900,6 +2896,14 @@ msgstr "" "uygulanamaz\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "anahtar %s: ?zg?n anahtar bloku bulunamad?: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "anahtar %s: ?zg?n anahtar bloku okunamad?: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "" "anahtar %s: y?r?rl?kten kald?rma sertifikas? ge?ersiz: %s - reddedildi\n" @@ -3377,6 +3381,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Gizli anahtar mevcut.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "Gizli anahtar mevcut.\n" + msgid "Need the secret key to do this.\n" msgstr "Bunu yapmak i?in gizli anahtar gerekli.\n" diff --git a/po/uk.po b/po/uk.po index abbe116..9316d81 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU gnupg 2.1.0\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-01-27 14:10+0200\n" +"PO-Revision-Date: 2017-11-02 17:41+0100\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -1356,6 +1356,12 @@ msgstr "???? ??? ???? ?????? ????? ??? ???????? msgid "What keysize do you want for the Authentication key? (%u) " msgstr "????? ??????? ????? ??? ????????????? ?? ??????? ????????? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" +"????? ???????????? ?????? ???? ??????? ??? ????????? %u-???????? ?????\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "????????? ?? %u ?????\n" @@ -2626,14 +2632,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "???? %s: ?? ?????????? ????? ?????\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "???? %s: ?? ??????? ?????? ?????????? ???? ??????: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "???? %s: ?? ??????? ????????? ?????????? ???? ??????: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "???? %s: ?%s? 1 ????? ????????????? ???????????\n" @@ -2723,6 +2721,14 @@ msgstr "" "???????????\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "???? %s: ?? ??????? ?????? ?????????? ???? ??????: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "???? %s: ?? ??????? ????????? ?????????? ???? ??????: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "???? %s: ??????????? ?????????? ???????????: %s ? ?????????\n" @@ -3182,6 +3188,11 @@ msgstr "" msgid "Secret key is available.\n" msgstr "????????? ???????? ????.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "????????? ???????? ????.\n" + msgid "Need the secret key to do this.\n" msgstr "??? ????? ???????? ???????? ????.\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 0cf93cb..4b3954c 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1427,6 +1427,10 @@ msgid "What keysize do you want for the Authentication key? (%u) " msgstr "????????????(%u)" #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "" + +#, c-format msgid "rounded up to %u bits\n" msgstr "??? %u ?\n" @@ -2739,14 +2743,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "?? %s??????????\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "?? %s?????????????%s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "?? %s????????????? %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "?? %s??%s?????????\n" @@ -2834,6 +2830,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "?? %s???????????????\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "?? %s?????????????%s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "?? %s????????????? %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "?? %s?????????%s?????\n" @@ -3280,6 +3284,11 @@ msgstr "?????????????????" msgid "Secret key is available.\n" msgstr "?????\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "?????\n" + msgid "Need the secret key to do this.\n" msgstr "??????????\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index a3f29b6..f997fa1 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU gnupg 2.1.0\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2014-11-22 20:56+0800\n" +"PO-Revision-Date: 2017-11-02 17:42+0100\n" "Last-Translator: Jedi Lin \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" @@ -1355,6 +1355,11 @@ msgstr "????????????????? (%u) " msgid "What keysize do you want for the Authentication key? (%u) " msgstr "????????????????? (%u) " +#, fuzzy, c-format +#| msgid "The card will now be re-configured to generate a key of %u bits\n" +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "???????????, ???? %u ?????\n" + #, c-format msgid "rounded up to %u bits\n" msgstr "??? %u ??\n" @@ -2600,14 +2605,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "?? %s: ?????????\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "?? %s: ???????????: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "?? %s: ???????????: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "?? %s: \"%s\" 1 ?????? ID\n" @@ -2693,6 +2690,14 @@ msgid "key %s: no public key - can't apply revocation certificate\n" msgstr "?? %s: ???? - ????????\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "?? %s: ???????????: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "?? %s: ???????????: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "?? %s: ???????: %s - ???\n" @@ -3139,6 +3144,11 @@ msgstr "?????????????? ID ????????" msgid "Secret key is available.\n" msgstr "????.\n" +#, fuzzy +#| msgid "Secret key is available.\n" +msgid "Secret subkeys are available.\n" +msgstr "????.\n" + msgid "Need the secret key to do this.\n" msgstr "?????????.\n" commit a124907742ab9c2fa382caa4e52803565cb083a3 Author: Werner Koch Date: Thu Nov 2 17:38:02 2017 +0100 po: Update German translation -- diff --git a/po/de.po b/po/de.po index 2f82d99..e974ddc 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-2.1.0\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-09-26 11:51+0200\n" +"PO-Revision-Date: 2017-11-02 17:36+0100\n" "Last-Translator: Werner Koch \n" "Language-Team: German \n" "Language: de\n" @@ -1378,6 +1378,10 @@ msgstr "" "Welche Schl?ssell?nge w?nschen Sie f?r den Authentisierungs-Schl?ssel? (%u) " #, c-format +msgid "The card will now be re-configured to generate a key of type: %s\n" +msgstr "Die Karte wird nun rekonfiguriert f?r einen Schl?ssel des Typs: %s\n" + +#, c-format msgid "rounded up to %u bits\n" msgstr "aufgerundet auf %u Bit\n" @@ -2629,14 +2633,6 @@ msgid "key %s: doesn't match our copy\n" msgstr "Schl?ssel %s: Stimmt nicht mit unserer Kopie ?berein\n" #, c-format -msgid "key %s: can't locate original keyblock: %s\n" -msgstr "Schl?ssel %s: der originale Schl?sselblock wurde nicht gefunden: %s\n" - -#, c-format -msgid "key %s: can't read original keyblock: %s\n" -msgstr "Schl?ssel %s: Lesefehler im originalen Schl?sselblock: %s\n" - -#, c-format msgid "key %s: \"%s\" 1 new user ID\n" msgstr "Schl?ssel %s: \"%s\" 1 neue User-ID\n" @@ -2727,6 +2723,14 @@ msgstr "" "angebracht werden\n" #, c-format +msgid "key %s: can't locate original keyblock: %s\n" +msgstr "Schl?ssel %s: der originale Schl?sselblock wurde nicht gefunden: %s\n" + +#, c-format +msgid "key %s: can't read original keyblock: %s\n" +msgstr "Schl?ssel %s: Lesefehler im originalen Schl?sselblock: %s\n" + +#, c-format msgid "key %s: invalid revocation certificate: %s - rejected\n" msgstr "Schl?ssel %s: Ung?ltiges Widerrufzertifikat: %s - zur?ckgewiesen\n" @@ -3191,6 +3195,9 @@ msgstr "" msgid "Secret key is available.\n" msgstr "Geheimer Schl?ssel ist vorhanden.\n" +msgid "Secret subkeys are available.\n" +msgstr "Geheimer Unterschl?ssel ist vorhanden.\n" + msgid "Need the secret key to do this.\n" msgstr "Hierzu wird der geheime Schl?ssel ben?tigt.\n" @@ -5841,8 +5848,6 @@ msgstr "" "WARNUNG: Wir m?ssen noch eine mit diesem Schl?ssel signierte Nachricht " "sehen.\n" -#, fuzzy -#| msgid "Warning: we've only seen a single message signed by this key!\n" msgid "" "Warning: we've only seen one message signed using this key and user id!\n" msgstr "" commit acb300543422c660c87ac2f0211a42f792a65cc4 Author: Werner Koch Date: Thu Nov 2 17:11:03 2017 +0100 gpg: Introduce magic value 25519 to switch a card to ECC. * g10/card-util.c (ask_card_keyattr): Handle special value 25519. (do_change_keyattr): Allow changing to cv25519/ed25519. (generate_card_keys): Ditto. (card_generate_subkey): Ditto. -- This is kludge to make it easier for gnuk to be switched into ECC mode. This is basically the same change as commit ea09b6cded9d31a8ebd91878553c3eaa2b76e817 but without the string change in show_keysize_warning. Signed-off-by: Werner Koch diff --git a/g10/card-util.c b/g10/card-util.c index 022e9a6..ef67610 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1350,40 +1350,61 @@ ask_card_keyattr (int keyno, unsigned int nbits) xfree (prompt); xfree (answer); - if (req_nbits != nbits && (req_nbits % 32) ) + if (req_nbits == 25519) { - req_nbits = ((req_nbits + 31) / 32) * 32; - tty_printf (_("rounded up to %u bits\n"), req_nbits); - } - - if (req_nbits == nbits) - return 0; /* Use default. */ + if (req_nbits == nbits) + return 0; /* Use default. */ - if (req_nbits < min_nbits || req_nbits > max_nbits) - { - tty_printf (_("%s keysizes must be in the range %u-%u\n"), - "RSA", min_nbits, max_nbits); + tty_printf (_("The card will now be re-configured" + " to generate a key of type: %s\n"), + keyno==1? "cv25519":"ed25519"); + show_keysize_warning (); + return req_nbits; } else { - tty_printf (_("The card will now be re-configured " - "to generate a key of %u bits\n"), req_nbits); - show_keysize_warning (); - return req_nbits; + if (req_nbits != nbits && (req_nbits % 32) ) + { + req_nbits = ((req_nbits + 31) / 32) * 32; + tty_printf (_("rounded up to %u bits\n"), req_nbits); + } + + if (req_nbits == nbits) + return 0; /* Use default. */ + + if (req_nbits < min_nbits || req_nbits > max_nbits) + { + tty_printf (_("%s keysizes must be in the range %u-%u\n"), + "RSA", min_nbits, max_nbits); + } + else + { + tty_printf (_("The card will now be re-configured" + " to generate a key of %u bits\n"), req_nbits); + show_keysize_warning (); + return req_nbits; + } } } } /* Change the size of key KEYNO (0..2) to NBITS and show an error - message if that fails. */ + * message if that fails. Using the magic value 25519 for NBITS + * switches to ed25519 or cv25519 depending on the KEYNO. */ static gpg_error_t do_change_keyattr (int keyno, unsigned int nbits) { gpg_error_t err; char args[100]; - snprintf (args, sizeof args, "--force %d 1 rsa%u", keyno+1, nbits); + if (nbits == 25519) + snprintf (args, sizeof args, "--force %d %d %s", + keyno+1, + keyno == 1? PUBKEY_ALGO_ECDH : PUBKEY_ALGO_EDDSA, + keyno == 1? "cv25519" : "ed25519"); + else + snprintf (args, sizeof args, "--force %d 1 rsa%u", keyno+1, nbits); err = agent_scd_setattr ("KEY-ATTR", args, strlen (args), NULL); if (err) log_error (_("error changing size of key %d to %u bits: %s\n"), @@ -1457,9 +1478,15 @@ generate_card_keys (ctrl_t ctrl) for (keyno = 0; keyno < DIM (info.key_attr); keyno++) { - if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) + if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA + || info.key_attr[keyno].algo == PUBKEY_ALGO_ECDH + || info.key_attr[keyno].algo == PUBKEY_ALGO_EDDSA) { - nbits = ask_card_keyattr (keyno, info.key_attr[keyno].nbits); + if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) + nbits = ask_card_keyattr (keyno, info.key_attr[keyno].nbits); + else + nbits = ask_card_keyattr (keyno, 25519 /* magic */); + if (nbits && do_change_keyattr (keyno, nbits)) { /* Error: Better read the default key size again. */ @@ -1537,12 +1564,18 @@ card_generate_subkey (ctrl_t ctrl, kbnode_t pub_keyblock) key size. */ if (info.is_v2 && info.extcap.aac) { - if (info.key_attr[keyno-1].algo == PUBKEY_ALGO_RSA) + if (info.key_attr[keyno-1].algo == PUBKEY_ALGO_RSA + || info.key_attr[keyno].algo == PUBKEY_ALGO_ECDH + || info.key_attr[keyno].algo == PUBKEY_ALGO_EDDSA) { unsigned int nbits; ask_again: - nbits = ask_card_keyattr (keyno-1, info.key_attr[keyno-1].nbits); + if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) + nbits = ask_card_keyattr (keyno-1, info.key_attr[keyno-1].nbits); + else + nbits = ask_card_keyattr (keyno-1, 25519); + if (nbits && do_change_keyattr (keyno-1, nbits)) { /* Error: Better read the default key size again. */ commit de3a740c2e1156e58d2f94faa85c051740c8988e Author: Werner Koch Date: Fri Oct 27 14:44:53 2017 +0200 gpg: Rename two card related functions in card-util. * g10/card-util.c (ask_card_rsa_keysize): Rename to ask_card_keyattr. (do_change_rsa_keysize): Rename to do_change_keyattr. -- We want to support other algos than RSA and thus we need a better name for the functions. Signed-off-by: Werner Koch (cherry picked from commit f795f4529d8ab5a05db1cc1960abd34390bfae1b) diff --git a/g10/card-util.c b/g10/card-util.c index 62b2a67..022e9a6 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1328,7 +1328,7 @@ show_keysize_warning (void) select the prompt. Returns 0 to use the default size (i.e. NBITS) or the selected size. */ static unsigned int -ask_card_rsa_keysize (int keyno, unsigned int nbits) +ask_card_keyattr (int keyno, unsigned int nbits) { unsigned int min_nbits = 1024; unsigned int max_nbits = 4096; @@ -1378,7 +1378,7 @@ ask_card_rsa_keysize (int keyno, unsigned int nbits) /* Change the size of key KEYNO (0..2) to NBITS and show an error message if that fails. */ static gpg_error_t -do_change_rsa_keysize (int keyno, unsigned int nbits) +do_change_keyattr (int keyno, unsigned int nbits) { gpg_error_t err; char args[100]; @@ -1459,8 +1459,8 @@ generate_card_keys (ctrl_t ctrl) { if (info.key_attr[keyno].algo == PUBKEY_ALGO_RSA) { - nbits = ask_card_rsa_keysize (keyno, info.key_attr[keyno].nbits); - if (nbits && do_change_rsa_keysize (keyno, nbits)) + nbits = ask_card_keyattr (keyno, info.key_attr[keyno].nbits); + if (nbits && do_change_keyattr (keyno, nbits)) { /* Error: Better read the default key size again. */ agent_release_card_info (&info); @@ -1542,8 +1542,8 @@ card_generate_subkey (ctrl_t ctrl, kbnode_t pub_keyblock) unsigned int nbits; ask_again: - nbits = ask_card_rsa_keysize (keyno-1, info.key_attr[keyno-1].nbits); - if (nbits && do_change_rsa_keysize (keyno-1, nbits)) + nbits = ask_card_keyattr (keyno-1, info.key_attr[keyno-1].nbits); + if (nbits && do_change_keyattr (keyno-1, nbits)) { /* Error: Better read the default key size again. */ agent_release_card_info (&info); ----------------------------------------------------------------------- Summary of changes: g10/card-util.c | 83 ++++++++++++++++++++++++++++++++++++++++----------------- po/ca.po | 25 +++++++++++------ po/cs.po | 28 ++++++++++++------- po/da.po | 33 +++++++++++++---------- po/de.po | 27 +++++++++++-------- po/el.po | 25 +++++++++++------ po/eo.po | 25 +++++++++++------ po/es.po | 33 +++++++++++++---------- po/et.po | 25 +++++++++++------ po/fi.po | 25 +++++++++++------ po/fr.po | 29 +++++++++++++------- po/gl.po | 33 ++++++++++++++--------- po/hu.po | 25 +++++++++++------ po/id.po | 25 +++++++++++------ po/it.po | 25 +++++++++++------ po/ja.po | 28 ++++++++++++------- po/nb.po | 28 ++++++++++++------- po/pl.po | 33 +++++++++++++---------- po/pt.po | 25 +++++++++++------ po/ro.po | 25 +++++++++++------ po/ru.po | 28 ++++++++++++------- po/sk.po | 25 +++++++++++------ po/sv.po | 35 ++++++++++++++---------- po/tr.po | 25 +++++++++++------ po/uk.po | 29 +++++++++++++------- po/zh_CN.po | 25 +++++++++++------ po/zh_TW.po | 28 ++++++++++++------- 27 files changed, 529 insertions(+), 271 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 20:23:22 2017 From: cvs at cvs.gnupg.org (by Jeremie Courreges-Anglas) Date: Thu, 02 Nov 2017 20:23:22 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-1-4, updated. gnupg-1.4.22-8-g96f3b1d 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-1-4 has been updated via 96f3b1de1cb16b51c34910dfd61b6f1402b9d784 (commit) from aa26eda8ab679a80a7be2c82478cb4440b45ec8c (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 96f3b1de1cb16b51c34910dfd61b6f1402b9d784 Author: Jeremie Courreges-Anglas Date: Wed Nov 1 17:13:53 2017 +0100 build: Don't use /dev/srandom on OpenBSD -- All /dev/*random devices have been equivalent since OpenBSD 4.9, on purpose (/dev/random doesn't block). /dev/srandom has been removed in the OpenBSD 6.3 development cycle, /dev/arandom will likely follow. Signed-off-by: Jeremie Courreges-Anglas diff --git a/configure.ac b/configure.ac index 028d485..b92440c 100644 --- a/configure.ac +++ b/configure.ac @@ -847,12 +847,6 @@ AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME", # NAME_OF_DEV_RANDOM="/dev/random" NAME_OF_DEV_URANDOM="/dev/urandom" -case "${host}" in - *-openbsd*) - NAME_OF_DEV_RANDOM="/dev/srandom" - NAME_OF_DEV_URANDOM="/dev/urandom" - ;; -esac AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM", [defined to the name of the strong random device]) AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM", ----------------------------------------------------------------------- Summary of changes: configure.ac | 6 ------ 1 file changed, 6 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 2 21:35:18 2017 From: cvs at cvs.gnupg.org (by Ineiev) Date: Thu, 02 Nov 2017 21:35:18 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-33-g6070f5a 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 6070f5a61d4d17ff437c69e1b708d49d107c22dc (commit) from 296783a3181afa605248e27c672cbce7aa88ac0d (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 6070f5a61d4d17ff437c69e1b708d49d107c22dc Author: Ineiev Date: Tue Oct 31 14:22:51 2017 +0300 po: Update Russian translation diff --git a/po/ru.po b/po/ru.po index 930af27..3e3a0c5 100644 --- a/po/ru.po +++ b/po/ru.po @@ -9,7 +9,7 @@ # Designated-Translator: none msgid "" msgstr "" -"Project-Id-Version: GnuPG 2.1.0\n" +"Project-Id-Version: GnuPG 2.2.0\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" "PO-Revision-Date: 2017-11-02 17:41+0100\n" "Last-Translator: Ineiev \n" @@ -111,7 +111,7 @@ msgid "Passphrase too long" msgstr "??????? ??????? ?????-??????" msgid "Invalid characters in PIN" -msgstr "???????????? ?????? ? PIN" +msgstr "???????????? ??????? ? PIN" msgid "PIN too short" msgstr "??????? ???????? PIN" @@ -144,7 +144,7 @@ msgstr "?????????? ?????, ???????? ?????: %s\n" #, c-format msgid "no authentication key for ssh on card: %s\n" -msgstr "?? ????? ??? ????????? ??????????????????? ????? ??? ssh: %s\n" +msgstr "?? ????? ??? ????? ????????????? ???????? ??? ssh: %s\n" #, c-format msgid "no suitable card key found: %s\n" @@ -263,9 +263,9 @@ msgstr "??, ?????? ?? ?????" #, c-format msgid "A passphrase should be at least %u character long." msgid_plural "A passphrase should be at least %u characters long." -msgstr[0] "?????-?????? ?? ?????? ???? ?????? %u ???????" -msgstr[1] "?????-?????? ?? ?????? ???? ?????? %u ????????" -msgstr[2] "?????-?????? ?? ?????? ???? ?????? %u ????????" +msgstr[0] "?????-?????? ?? ?????? ???? ?????? %u ???????." +msgstr[1] "?????-?????? ?? ?????? ???? ?????? %u ????????." +msgstr[2] "?????-?????? ?? ?????? ???? ?????? %u ????????." #, c-format msgid "A passphrase should contain at least %u digit or%%0Aspecial character." @@ -378,7 +378,7 @@ msgid "enable ssh support" msgstr "???????? ????????? ssh" msgid "|ALGO|use ALGO to show ssh fingerprints" -msgstr "|ALGO|???????????? ???????? ALGO ??? ??????????? ??????????" +msgstr "|ALGO|???????????? ??? ??????????? ?????????? ???????? ALGO" msgid "enable putty support" msgstr "???????? ????????? putty" @@ -390,7 +390,7 @@ msgid "Please report bugs to <@EMAIL@>.\n" msgstr "?? ??????? ? ????????? ????????? ?? ?????? <@EMAIL@>.\n" msgid "Usage: @GPG_AGENT@ [options] (-h for help)" -msgstr "?????: @GPG_AGENT@ [?????????] (-h ??? ?????????)" +msgstr "?????: @GPG_AGENT@ [?????????] (-h - ?????????)" msgid "" "Syntax: @GPG_AGENT@ [options] [command [args]]\n" @@ -501,7 +501,7 @@ msgstr "? ???? ?????? ????? gpg ?? ????????\n" msgid "Usage: gpg-preset-passphrase [options] KEYGRIP (-h for help)\n" msgstr "" -"?????: gpg-preset-passphrase [?????????] ???_????? (-h ??? ?????????)\n" +"?????: gpg-preset-passphrase [?????????] ???_????? (-h - ?????????)\n" msgid "" "Syntax: gpg-preset-passphrase [options] KEYGRIP\n" @@ -527,7 +527,7 @@ msgstr "" " " msgid "Usage: gpg-protect-tool [options] (-h for help)\n" -msgstr "?????: gpg-protect-tool [?????????] (-h ??? ?????????)\n" +msgstr "?????: gpg-protect-tool [?????????] (-h - ?????????)\n" msgid "" "Syntax: gpg-protect-tool [options] [args]\n" @@ -678,7 +678,7 @@ msgstr "DSA ??????? ????? ????, ??????? 8 ?????\n" #, c-format msgid "%s key uses an unsafe (%u bit) hash\n" -msgstr "%s ???? ?????????? ???????????? (%u ???) ???\n" +msgstr "%s ???? ?????????? ???????????? (%u-??????) ???\n" #, c-format msgid "a %zu bit hash is not valid for a %u bit %s key\n" @@ -752,15 +752,15 @@ msgstr "?? ???? ????????? ???????? ????? ????? #, c-format msgid "Warning: unsafe ownership on %s \"%s\"\n" -msgstr "????????: ???????????? ???????? %s \"%s\"\n" +msgstr "????????: ???????????? ???????? ??????? %s \"%s\"\n" #, c-format msgid "Warning: unsafe permissions on %s \"%s\"\n" -msgstr "????????: ???????????? ????? ??????? %s \"%s\"\n" +msgstr "????????: ???????????? ????? ??????? ??????? %s \"%s\"\n" #, c-format msgid "waiting for file '%s' to become accessible ...\n" -msgstr "?????? ??????????? ????? '%s'\n" +msgstr "?????? ??????? ? ????? '%s'\n" #, c-format msgid "renaming '%s' to '%s' failed: %s\n" @@ -906,7 +906,7 @@ msgid "unsupported algorithm: %s" msgstr "???????? (?? ??????????????): %s" msgid "seems to be not encrypted" -msgstr "???????, ?? ???????????" +msgstr "??-????????, ?? ???????????" msgid "Number of recipients" msgstr "?????????? ???????????" @@ -924,7 +924,7 @@ msgstr "???-??????? ??????: %s" #, c-format msgid "Signer %d" -msgstr "??????? %d" +msgstr "??????? ?????? %d" #, c-format msgid "attr hash algorithm: %s" @@ -1077,11 +1077,11 @@ msgstr "?????? ?????? ? '%s': %s\n" #, c-format msgid "removing stale lockfile (created by %d)\n" -msgstr "?????? ???????? ?????????? (????????? %d)\n" +msgstr "?????? ???????? ?????????? (????????? ????????? %d)\n" #, c-format msgid "waiting for lock (held by %d%s) %s...\n" -msgstr "??? ?????? ?????????? (????????????? %d%s) %s...\n" +msgstr "??? ?????? ?????????? (????????????? ????????? %d%s) %s...\n" msgid "(deadlock?) " msgstr "(??????? ??????) " @@ -1171,7 +1171,7 @@ msgstr "" "????????????? ?????? '='\n" msgid "a user notation name must contain the '@' character\n" -msgstr "??? ????????? ?????? ????????? ?????? '@'\n" +msgstr "??? ????????????????? ????????? ?????? ????????? ?????? '@'\n" msgid "a notation name must not contain more than one '@' character\n" msgstr "??? ????????? ?? ?????? ????????? ????? ?????? ??????? '@'\n" @@ -1180,7 +1180,7 @@ msgid "a notation value must not use any control characters\n" msgstr "? ?????? ????????? ?? ?????? ???? ??????????? ????????\n" msgid "a notation name may not contain an '=' character\n" -msgstr "??? ?????????? ?? ?????? ????????? ??????? '='\n" +msgstr "??? ????????? ?? ?????? ????????? ??????? '='\n" msgid "a notation name must have only printable characters or spaces\n" msgstr "??? ????????? ?????? ????????? ?????? ???????? ??????? ??? ???????\n" @@ -1209,7 +1209,7 @@ msgstr "????????: %s\n" msgid "Note: Outdated servers may lack important security fixes.\n" msgstr "" -"?????????: ?? ?????? ???????? ????? ???? ?????????? ??????, ????????? ??? " +"?????????: ?? ?????? ???????? ????? ?????????? ??????, ????????? ??? " "????????????.\n" #, c-format @@ -1232,7 +1232,7 @@ msgid "can't do this in batch mode\n" msgstr "? ???????? ?????? ??? ???????? ??????????\n" msgid "This command is only available for version 2 cards\n" -msgstr "??? ??????? ???????? ?????? ??? ???? ?????? 2.\n" +msgstr "??? ??????? ???????? ?????? ??? ???? ?????? 2\n" msgid "Reset Code not or not anymore available\n" msgstr "??? ?????? (??????) ?? ????????\n" @@ -1253,10 +1253,10 @@ msgid "unspecified" msgstr "?? ??????" msgid "not forced" -msgstr "?? ??????????????" +msgstr "?? ?????????" msgid "forced" -msgstr "??????????????" +msgstr "?????????" msgid "Error: Only plain ASCII is currently allowed.\n" msgstr "??????: ???????? ?????? ??????? ????? ASCII.\n" @@ -1348,7 +1348,7 @@ msgstr "????? ??? ????? ?????? ????? ??? ?????? #, c-format msgid "What keysize do you want for the Authentication key? (%u) " -msgstr "????? ??? ????? ?????? ????? ??? ??????????????? (%u) " +msgstr "????? ??? ????? ?????? ????? ??? ????????????? ????????? (%u) " #, fuzzy, c-format #| msgid "The card will now be re-configured to generate a key of %u bits\n" @@ -1400,7 +1400,7 @@ msgid " (2) Encryption key\n" msgstr " (2) ???? ??????????\n" msgid " (3) Authentication key\n" -msgstr " (3) ???? ??????????????\n" +msgstr " (3) ???? ????????????? ????????\n" msgid "Invalid selection.\n" msgstr "???????????? ?????.\n" @@ -1413,7 +1413,7 @@ msgid "KEYTOCARD failed: %s\n" msgstr "???? ?????? ????? ?? ?????: %s\n" msgid "This command is not supported by this card\n" -msgstr "?????? ??????? ???? ?????? ?? ??????????????.\n" +msgstr "?????? ??????? ???? ?????? ?? ??????????????\n" msgid "Note: This command destroys all keys stored on the card!\n" msgstr "?????????: ??? ??????? ?????? ? ????? ??? ?????!\n" @@ -1717,7 +1717,7 @@ msgstr "(????????? ???????? ????????? '%s')\n" #, c-format msgid "Warning: '%s' should be a long key ID or a fingerprint\n" msgstr "" -"????????: '%s' ?????? ???? ?????? ???? ??????? ??????????????? ??? " +"????????: '%s' ?????? ???? ??????? ??????????????? ??? " "?????????? ?????\n" #, c-format @@ -1944,7 +1944,7 @@ msgstr "" " --fingerprint [?????] ???????? ?????????\n" msgid "Usage: @GPG@ [options] [files] (-h for help)" -msgstr "?????: @GPG@ [?????????] [?????] (-h ??? ?????????)" +msgstr "?????: @GPG@ [?????????] [?????] (-h - ?????????)" msgid "" "Syntax: @GPG@ [options] [files]\n" @@ -2050,43 +2050,43 @@ msgid "unknown configuration item '%s'\n" msgstr "??????????? ??????? ? ????? ???????? '%s'\n" msgid "display photo IDs during key listings" -msgstr "???????? ? ?????? ?????? ??????????????????" +msgstr "?????????? ? ?????? ?????? ??????????????????" msgid "show key usage information during key listings" -msgstr "???????? ? ?????? ?????? ???????? ? ?????????? ?????" +msgstr "?????????? ? ?????? ?????? ???????? ? ?????????? ?????" msgid "show policy URLs during signature listings" -msgstr "???????? ? ?????? ???????? URL ??????" +msgstr "?????????? ? ?????? ???????? URL ??????" msgid "show all notations during signature listings" -msgstr "???????? ? ?????? ???????? ??? ?????????" +msgstr "?????????? ? ?????? ???????? ??? ?????????" msgid "show IETF standard notations during signature listings" -msgstr "???????? ? ?????? ???????? ????????? ????????? IETF" +msgstr "?????????? ? ?????? ???????? ????????? ????????? IETF" msgid "show user-supplied notations during signature listings" -msgstr "???????? ? ?????? ???????? ???????????????? ?????????" +msgstr "?????????? ? ?????? ???????? ???????????????? ?????????" msgid "show preferred keyserver URLs during signature listings" -msgstr "???????? ? ?????? ???????? URL ???????????????? ???????? ??????" +msgstr "?????????? ? ?????? ???????? URL ???????????????? ???????? ??????" msgid "show user ID validity during key listings" msgstr "" -"???????? ? ?????? ?????? ???????????????? ??????????????? ?????????????" +"?????????? ? ?????? ?????? ???????????????? ??????????????? ?????????????" msgid "show revoked and expired user IDs in key listings" msgstr "" -"???????? ? ?????? ?????? ?????????? ? ???????????? ?????????????? " +"?????????? ? ?????? ?????? ?????????? ? ???????????? ?????????????? " "?????????????" msgid "show revoked and expired subkeys in key listings" -msgstr "???????? ? ?????? ?????? ?????????? ? ???????????? ????????" +msgstr "?????????? ? ?????? ?????? ?????????? ? ???????????? ????????" msgid "show the keyring name in key listings" -msgstr "???????? ? ?????? ?????? ???????? ??????? ??????" +msgstr "?????????? ? ?????? ?????? ???????? ??????? ??????" msgid "show expiration dates during signature listings" -msgstr "???????? ? ?????? ???????? ????? ????????" +msgstr "?????????? ? ?????? ???????? ????? ????????" #, c-format msgid "unknown TOFU policy '%s'\n" @@ -2229,7 +2229,7 @@ msgstr "????????: ???????? ? ????????? ??????? #, c-format msgid "will not run with insecure memory due to %s\n" -msgstr "?? ????? ???????? ? ???????????? ??????? ??-?? %s\n" +msgstr "??????????? ???????? ? ???????????? ??????? ??-?? %s\n" msgid "selected cipher algorithm is invalid\n" msgstr "?????? ???????????? ???????? ??????????\n" @@ -2385,7 +2385,7 @@ msgid "|ALGO|reject signatures made with ALGO" msgstr "|ALGO|????????? ???????, ????????? ?? ??????? ?????????" msgid "Usage: gpgv [options] [files] (-h for help)" -msgstr "?????: gpgv [?????????] [?????] (-h ??? ?????????)" +msgstr "?????: gpgv [?????????] [?????] (-h - ?????????)" msgid "" "Syntax: gpgv [options] [files]\n" @@ -2399,7 +2399,7 @@ msgstr "??????? ???" #, c-format msgid "No help available for '%s'" -msgstr "??? ??????? ??? '%s'" +msgstr "??? ??????? ?? ????????? ????? '%s'" msgid "import signatures that are marked as local-only" msgstr "????????????? ???????, ???????????? ??? '?????? ?????????'" @@ -2408,7 +2408,7 @@ msgid "repair damage from the pks keyserver during import" msgstr "????????? ??? ??????? ??????????? ?? ??????? ?????? pks" msgid "do not clear the ownertrust values during import" -msgstr "?? ?????????? ?????? ??????? ?????????? ????? ???????" +msgstr "?? ?????????? ?????? ??????? ?????????? ??? ???????" msgid "do not update the trustdb after import" msgstr "?? ????????? ??????? ??????? ????? ???????" @@ -2723,7 +2723,7 @@ msgstr "???? %s: ???????????? ????? ?????????\n" #, c-format msgid "key %s: removed multiple subkey binding\n" -msgstr "???? %s: ??????? ???????????? ?????????? ?????????\n" +msgstr "???? %s: ??????? ???????????? ????? ?????????\n" #, c-format msgid "key %s: no subkey for key revocation\n" @@ -3140,10 +3140,8 @@ msgstr "" msgid "Secret key is available.\n" msgstr "????????? ???? ????????.\n" -#, fuzzy -#| msgid "Secret key is available.\n" msgid "Secret subkeys are available.\n" -msgstr "????????? ???? ????????.\n" +msgstr "????????? ???????? ????????.\n" msgid "Need the secret key to do this.\n" msgstr "??? ??????? ???????? ????? ????????? ????.\n" @@ -3247,7 +3245,7 @@ msgstr "" "?????????????\n" msgid "Set preference list to:\n" -msgstr "?????????? ???????????? ?:\n" +msgstr "?????????? ????????????, ??????:\n" msgid "Really update the preferences for the selected user IDs? (y/N) " msgstr "" @@ -3358,7 +3356,7 @@ msgid "expires: %s" msgstr " ????? ??: %s" # perhaps this should be somewhere in help/man -# (S - ???????, C - ????????????, E - ??????????, A - ??????????????) +# (S - ???????, C - ????????????, E - ??????????, A - ????????????? ????????) # too long for repeating messages. #, c-format msgid "usage: %s" @@ -3446,7 +3444,7 @@ msgid "Nothing deleted.\n" msgstr "?????? ?? ???????.\n" msgid "invalid" -msgstr "????????????" +msgstr "??????????" #, c-format msgid "User ID \"%s\" compacted: %s\n" @@ -3630,24 +3628,24 @@ msgstr "??????? %s ??? ???????.\n" #, c-format msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n" -msgstr "????? ?????????????????? %s ??????? %ld ??? ????? %s (uid %d)\n" +msgstr "????? ?????????????????? %s ??????? %ld ??? ????? %s (????????????? ???????????? %d)\n" #, c-format msgid "invalid value for option '%s'\n" -msgstr "???????????? ???????? ??? ????????? \"%s\"\n" +msgstr "???????????? ???????? ????????? \"%s\"\n" #, c-format msgid "preference '%s' duplicated\n" msgstr "???????????? '%s' ???????????\n" msgid "too many cipher preferences\n" -msgstr "??????? ????? ???????? ????????????\n" +msgstr "??????? ????? ???????????? ??????\n" msgid "too many digest preferences\n" -msgstr "??????? ????? ???????????? ??? ???-???????\n" +msgstr "??????? ????? ???????????? ???-???????\n" msgid "too many compression preferences\n" -msgstr "??????? ????? ???????????? ??? ??????? ??????\n" +msgstr "??????? ????? ???????????? ??????? ??????\n" #, c-format msgid "invalid item '%s' in preference string\n" @@ -3660,7 +3658,7 @@ msgid "writing self signature\n" msgstr "?????? ???????????\n" msgid "writing key binding signature\n" -msgstr "?????? ???????????? ???????\n" +msgstr "?????? ????????? ???????\n" #, c-format msgid "keysize invalid; using %u bits\n" @@ -3686,7 +3684,7 @@ msgid "Encrypt" msgstr "???????????" msgid "Authenticate" -msgstr "?????????????????" +msgstr "???????????? ????????" #. TRANSLATORS: Please use only plain ASCII characters for the #. translation. If this is not possible use single digits. The @@ -3710,15 +3708,15 @@ msgstr "????????? ????????: " #, c-format msgid " (%c) Toggle the sign capability\n" -msgstr " (%c) ??????????? ??????????? ????????????? ??? ???????\n" +msgstr " (%c) ??????????? ??????????? ???????\n" #, c-format msgid " (%c) Toggle the encrypt capability\n" -msgstr " (%c) ??????????? ??????????? ????????????? ??? ??????????\n" +msgstr " (%c) ??????????? ??????????? ??????????\n" #, c-format msgid " (%c) Toggle the authenticate capability\n" -msgstr " (%c) ??????????? ??????????? ????????????? ??? ??????????????\n" +msgstr " (%c) ??????????? ??????????? ????????????? ????????\n" #, c-format msgid " (%c) Finished\n" @@ -3753,11 +3751,11 @@ msgstr " (%d) RSA (?????? ??? ??????????)\n" #, c-format msgid " (%d) DSA (set your own capabilities)\n" -msgstr " (%d) DSA (? ?????????? ?????????????)\n" +msgstr " (%d) DSA (?????? ???????????)\n" #, c-format msgid " (%d) RSA (set your own capabilities)\n" -msgstr " (%d) RSA (? ?????????? ?????????????)\n" +msgstr " (%d) RSA (?????? ???????????)\n" #, c-format msgid " (%d) ECC and ECC\n" @@ -3769,7 +3767,7 @@ msgstr " (%d) ECC (?????? ??? ???????)\n" #, c-format msgid " (%d) ECC (set your own capabilities)\n" -msgstr " (%d) ECC (? ?????????? ?????????????)\n" +msgstr " (%d) ECC (?????? ???????????)\n" #, c-format msgid " (%d) ECC (encrypt only)\n" @@ -3794,7 +3792,7 @@ msgstr "???????? ?? %u ???\n" #, c-format msgid "%s keys may be between %u and %u bits long.\n" -msgstr "????? ?????? %s ????? ???? ?? %u ?? %u ???.\n" +msgstr "????? ?????? %s ????? ???? ?? %u ?? %u.\n" #, c-format msgid "What keysize do you want for the subkey? (%u) " @@ -3933,7 +3931,7 @@ msgstr "???????????? ?????? ? ??????????\n" #, c-format msgid "You are using the '%s' character set.\n" -msgstr "???????????? ??????? ????????: '%s'.\n" +msgstr "???????????? ??????? ???????? '%s'.\n" #, c-format msgid "" @@ -3964,16 +3962,16 @@ msgid "NnCcEeOoQq" msgstr "NnCcEeOoQq" msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? " -msgstr "??????? (N)???, (C)??????????, (E)????? ??? (Q)?????? " +msgstr "??????? (N)???, (C)??????????, (E)?????; (Q)?????? " msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? " -msgstr "??????? (N)???, (C)??????????, (E)????? ??? (O)???????/(Q)?????? " +msgstr "??????? (N)???, (C)??????????, (E)?????; (O)???????/(Q)?????? " msgid "Change (N)ame, (E)mail, or (Q)uit? " -msgstr "??????? (N)???, (E)????? ??? (Q)?????? " +msgstr "??????? (N)???, (E)?????; (Q)?????? " msgid "Change (N)ame, (E)mail, or (O)kay/(Q)uit? " -msgstr "??????? (N)???, (E)????? ??? (O)???????/(Q)?????? " +msgstr "??????? (N)???, (E)?????; (O)???????/(Q)?????? " msgid "Please correct the error first\n" msgstr "??????? ????????? ??????\n" @@ -4000,7 +3998,7 @@ msgid "" " \"%s\"\n" "\n" msgstr "" -"????????? ???? ???:\n" +"????????? ???? ????????????\n" " \"%s\"\n" "\n" @@ -4009,7 +4007,7 @@ msgstr "??????????? (Y/n) " #, c-format msgid "A key for \"%s\" already exists\n" -msgstr "???? ??? \"%s\" ??? ??????????\n" +msgstr "???? ???????????? \"%s\" ??? ??????????\n" msgid "Create anyway? (y/N) " msgstr "??? ????? ??????? ?????? (y/N) " @@ -4052,7 +4050,7 @@ msgid "" "Note that this key cannot be used for encryption. You may want to use\n" "the command \"--edit-key\" to generate a subkey for this purpose.\n" msgstr "" -"??????, ??? ?????? ???? ?? ????? ?????????????? ??? ??????????. ?? ??????\n" +"??????, ??? ?????? ???? ?? ????? ?????????????? ??? ??????????. ?????\n" "??????????????? ???????? \"--edit-key\" ? ??????? ??????? ??? ???? ?????.\n" #, c-format @@ -4193,7 +4191,7 @@ msgid "include revoked keys in search results" msgstr "???????? ? ?????????? ?????? ?????????? ?????" msgid "include subkeys when searching by key ID" -msgstr "?????? ?? ?????????????? ?????, ??????? ????????" +msgstr "???????? ???????? ? ????? ?? ?????????????? ?????" msgid "override timeout options set for dirmngr" msgstr "????????????? ????????? ??????? ???????? ??? dirmngr" @@ -4211,7 +4209,7 @@ msgid "disabled" msgstr "????????" msgid "Enter number(s), N)ext, or Q)uit > " -msgstr "??????? ?????, N) ????????? ??? Q) ?????> " +msgstr "??????? ?????, N) ?????????; Q) ????? > " #, c-format msgid "invalid keyserver protocol (us %d!=handler %d)\n" @@ -4234,7 +4232,7 @@ msgstr "????????: ?????????? ???????? ???? %s ? % #, c-format msgid "key \"%s\" not found on keyserver\n" -msgstr "???? \"%s\" ?? ?????? ?? ??????? ??????\n" +msgstr "???? \"%s\" ?? ??????? ?????? ?? ??????\n" msgid "key not found on keyserver\n" msgstr "???? ?? ?????? ?? ??????? ??????\n" @@ -4251,7 +4249,7 @@ msgid "requesting key %s from %s\n" msgstr "????????? ????? %s ? %s\n" msgid "no keyserver known\n" -msgstr "?? ???? ?????? ?????? ?? ????????\n" +msgstr "?? ???????? ?? ?????? ??????? ??????\n" #, c-format msgid "skipped \"%s\": %s\n" @@ -4629,7 +4627,7 @@ msgid "" "Keeping the image close to 240x288 is a good size to use.\n" msgstr "" "\n" -"???????? ??????????? ??? ?????? ??????????????????. ??? ?????? ???? ???? " +"???????? ??????????? ??? ?????? ??????????????????. ??? ?????? ???? ???? " "JPEG.\n" "???????, ??? ??????????? ????? ????????? ? ????? ???????? ????? ? ????????\n" "??? ??????! ????????????? ?????? ????? 240x288.\n" @@ -5014,7 +5012,7 @@ msgid "" "of the gpg command \"--generate-revocation\" in the GnuPG manual." msgstr "" "??????????? ?? ??? ?????? ????? ????? ? ?????? ????????? ??? ??????\n" -"?????????? ?????. ??????, ???? ????????? ???? ????????, ????? ???????\n" +"?????????? ?????. ?????? ???? ????????? ???? ????????, ????? ???????\n" "????? ?????????? ? ????????? ??????? ??????. ??????????? ??. ? ????????\n" "??????? gpg \"--generate-revocation\" ? ??????????? ?? GnuPG." @@ -5286,11 +5284,11 @@ msgstr "??????? ???????: ???? ?????????????: %s\n #, c-format msgid "can't create lock for '%s'\n" -msgstr "?????????? ??????? ?????????? ??? '%s'\n" +msgstr "?? ??????? ??????? ?????????? ??? '%s'\n" #, c-format msgid "can't lock '%s'\n" -msgstr "?????????? ????????????? '%s'\n" +msgstr "?? ??????? ????????????? '%s'\n" #, c-format msgid "trustdb rec %lu: lseek failed: %s\n" @@ -5936,7 +5934,7 @@ msgid "enable full debugging" msgstr "????????? ???????? ???????" msgid "Usage: kbxutil [options] [files] (-h for help)" -msgstr "?????: kbxutil [?????????] [?????] (-h ??? ?????????)" +msgstr "?????: kbxutil [?????????] [?????] (-h - ?????????)" msgid "" "Syntax: kbxutil [options] [files]\n" @@ -6134,7 +6132,7 @@ msgstr "????????? ????? ??????? ????????\n" #, c-format msgid "RSA prime %s missing or not of size %d bits\n" -msgstr "??????? ????? RSA %s ????????? ??? ??? ?????? ?? ????? %d ???\n" +msgstr "??????? ????? RSA %s ????????? ??? ??? ?????? ?? ????? %d\n" #, c-format msgid "failed to store the key: %s\n" @@ -6222,7 +6220,7 @@ msgid "use variable length input for pinpad" msgstr "???????????? ??????? ?????? ????????? ????? ??? ?????????? ???????????" msgid "Usage: @SCDAEMON@ [options] (-h for help)" -msgstr "?????: @SCDAEMON@ [?????????] (-h ??? ?????????)" +msgstr "?????: @SCDAEMON@ [?????????] (-h - ?????????)" msgid "" "Syntax: scdaemon [options] [command [args]]\n" @@ -6292,7 +6290,7 @@ msgstr "????? ??????????????? ????????????: %d\n #, c-format msgid "dirmngr cache-only key lookup failed: %s\n" -msgstr "???? ?? ?????? ? ?????? dirmngr: %s\n" +msgstr "???? ? ?????? dirmngr ?? ??????: %s\n" msgid "failed to allocate keyDB handle\n" msgstr "???? ??? ????????? ?????? ??? ????????? ?? ???? ??????\n" @@ -6779,7 +6777,7 @@ msgid "|NAME|use message digest algorithm NAME" msgstr "|NAME|???????????? ???-??????? NAME" msgid "Usage: @GPGSM@ [options] [files] (-h for help)" -msgstr "?????: @GPGSM@ [?????????] [?????] (-h ??? ?????????)" +msgstr "?????: @GPGSM@ [?????????] [?????] (-h - ?????????)" msgid "" "Syntax: @GPGSM@ [options] [files]\n" @@ -6787,7 +6785,7 @@ msgid "" "Default operation depends on the input data\n" msgstr "" "?????????: @GPGSM@ [?????????] [?????]\n" -"?????????, ?????????, ??????????? ??? ????????????, ????????? ???????? S/" +"?????????, ?????????, ??????????? ??? ???????????? ?? ????????? S/" "MIME\n" "???????? ?? ????????? ??????? ?? ??????? ??????\n" @@ -6921,11 +6919,11 @@ msgstr "" #, c-format msgid "hash algorithm %d (%s) for signer %d not supported; using %s\n" -msgstr "???-??????? %d (%s) ??? %d ?? ??????????????; ????????? %s\n" +msgstr "???-??????? %d (%s) ??? ???????????? %d ?? ??????????????; ????????? %s\n" #, c-format msgid "hash algorithm used for signer %d: %s (%s)\n" -msgstr "???-??????? ??? ??????? %d: %s (%s)\n" +msgstr "???-??????? ??? ???????????? %d: %s (%s)\n" #, c-format msgid "checking for qualified certificate failed: %s\n" @@ -7030,7 +7028,7 @@ msgstr "?????? ????????? ??????????? ? ?????: %s #, c-format msgid "invalid SHA1 fingerprint string '%s'\n" -msgstr "???????? ????????? SHA1 '%s'\n" +msgstr "???????? ?????? ?????????? SHA1 '%s'\n" #, c-format msgid "error fetching certificate by S/N: %s\n" @@ -7519,8 +7517,7 @@ msgstr "????????????? ???????????? ???????? ? msgid "Usage: dirmngr-client [options] [certfile|pattern] (-h for help)\n" msgstr "" -"?????: dirmngr-client [?????????] [????_???????????|??????] (-h ??? " -"?????????)\n" +"?????: dirmngr-client [?????????] [????_???????????|??????] (-h - ?????????)\n" msgid "" "Syntax: dirmngr-client [options] [certfile|pattern]\n" @@ -7529,9 +7526,9 @@ msgid "" "not valid and other error codes for general failures\n" msgstr "" "?????????: dirmngr-client [?????????] [????_???????????|??????]\n" -"???????? ??????????? X.509 ?? ?????? ?????????? ???????????? ??? ?? OCSP\n" +"???????? ??????????? X.509 ?? ?????? ?????????? ???????????? ??? ?? OCSP.\n" "??????? ?????????? 0, ???? ?????????? ??????????, 1, ???? ????????????,\n" -"? ?????? ???? ?????? ??? ????? ???????\n" +"? ?????? ???? ?????? ??? ????? ???????.\n" #, c-format msgid "error reading certificate from stdin: %s\n" @@ -7685,7 +7682,7 @@ msgstr "" "(?????? ?????? ?????? ? ?????????? ??. ? ??????????? \"info\")\n" msgid "Usage: @DIRMNGR@ [options] (-h for help)" -msgstr "?????: @DIRMNGR@ [?????????] (-h ??? ?????????)" +msgstr "?????: @DIRMNGR@ [?????????] (-h - ?????????)" msgid "" "Syntax: @DIRMNGR@ [options] [command [args]]\n" @@ -7765,10 +7762,10 @@ msgid "|N|connect to port N" msgstr "|N|???????????? ? ????? N" msgid "|NAME|use user NAME for authentication" -msgstr "|NAME|???????????? ??? ?????????????? ???????????? NAME" +msgstr "|NAME|???????????? ??? ???????????? NAME ??? ????????????? ????????" msgid "|PASS|use password PASS for authentication" -msgstr "|PASS|???????????? ??? ?????????????? ?????? PASS" +msgstr "|PASS|???????????? ??? ????????????? ???????? ?????? PASS" msgid "take password from $DIRMNGR_LDAP_PASS" msgstr "????? ?????? ?? $DIRMNGR_LDAP_PASS" @@ -7783,7 +7780,7 @@ msgid "|STRING|return the attribute STRING" msgstr "|STRING|??????? ??????? STRING" msgid "Usage: dirmngr_ldap [options] [URL] (-h for help)\n" -msgstr "?????: dirmngr_ldap [?????????] [URL] (-h ??? ?????????)\n" +msgstr "?????: dirmngr_ldap [?????????] [URL] (-h - ?????????)\n" msgid "" "Syntax: dirmngr_ldap [options] [URL]\n" @@ -8198,7 +8195,7 @@ msgid "run /subst on startup" msgstr "????????? ??? ??????? ??????????? subst" msgid "Usage: @GPG at -connect-agent [options] (-h for help)" -msgstr "?????: @GPG at -connect-agent [?????????] (-h ??? ?????????)" +msgstr "?????: @GPG at -connect-agent [?????????] (-h - ?????????)" msgid "" "Syntax: @GPG at -connect-agent [options]\n" @@ -8423,7 +8420,7 @@ msgid "activate changes at runtime, if possible" msgstr "????????????? ????????? ?? ????? ??????????, ???? ????????" msgid "Usage: @GPGCONF@ [options] (-h for help)" -msgstr "?????: @GPGCONF@ [?????????] (-h ??? ?????????)" +msgstr "?????: @GPGCONF@ [?????????] (-h - ?????????)" msgid "" "Syntax: @GPGCONF@ [options]\n" @@ -8469,7 +8466,7 @@ msgid "input file name (default stdin)" msgstr "??? ???????? ????? (?? ????????? stdin)" msgid "Usage: symcryptrun [options] (-h for help)" -msgstr "?????: symcryptrun [?????????] (-h ??? ?????????)" +msgstr "?????: symcryptrun [?????????] (-h - ?????????)" msgid "" "Syntax: symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE " @@ -8577,7 +8574,7 @@ msgstr "????? %s ?? ??????????????\n" msgid "Usage: gpg-check-pattern [options] patternfile (-h for help)\n" msgstr "" -"?????: gpg-check-pattern [?????????] ????_???????? (-h ??? ?????????)\n" +"?????: gpg-check-pattern [?????????] ????_???????? (-h - ?????????)\n" msgid "" "Syntax: gpg-check-pattern [options] patternfile\n" ----------------------------------------------------------------------- Summary of changes: po/ru.po | 203 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 100 insertions(+), 103 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 6 07:00:09 2017 From: cvs at cvs.gnupg.org (by Jeremie Courreges-Anglas) Date: Mon, 06 Nov 2017 07:00:09 +0100 Subject: [git] GCRYPT - branch, master, updated. libgcrypt-1.8.1-20-g77e314a 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 77e314a42a9c3c3557f0e60b3bf6da2ff9f7709a (commit) from 94b84360ca55c407222a3eb8222d8b1816fc617f (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 77e314a42a9c3c3557f0e60b3bf6da2ff9f7709a Author: Jeremie Courreges-Anglas Date: Mon Nov 6 14:57:28 2017 +0900 build: Don't use /dev/srandom on OpenBSD. -- Ported from GnuPG 1.4. All /dev/*random devices have been equivalent since OpenBSD 4.9, on purpose (/dev/random doesn't block). /dev/srandom has been removed in the OpenBSD 6.3 development cycle, /dev/arandom will likely follow. Signed-off-by: Jeremie Courreges-Anglas diff --git a/configure.ac b/configure.ac index 86035a4..57b840e 100644 --- a/configure.ac +++ b/configure.ac @@ -316,21 +316,8 @@ case "${host}" in ;; esac -# -# Figure out the name of the random device -# -case "${host}" in - *-openbsd*) - NAME_OF_DEV_RANDOM="/dev/srandom" - NAME_OF_DEV_URANDOM="/dev/urandom" - ;; - - *) - NAME_OF_DEV_RANDOM="/dev/random" - NAME_OF_DEV_URANDOM="/dev/urandom" - ;; -esac - +NAME_OF_DEV_RANDOM="/dev/random" +NAME_OF_DEV_URANDOM="/dev/urandom" AC_ARG_ENABLE(endian-check, AC_HELP_STRING([--disable-endian-check], ----------------------------------------------------------------------- Summary of changes: configure.ac | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 6 12:17:54 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Mon, 06 Nov 2017 12:17:54 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-35-g6801616 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 680161647ad56d1ca92988f80bcc4d6fcb20b1eb (commit) via f183b9768b42a6792c55a6129488bd8fbf5e8e6d (commit) from 6070f5a61d4d17ff437c69e1b708d49d107c22dc (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 680161647ad56d1ca92988f80bcc4d6fcb20b1eb Author: NIIBE Yutaka Date: Wed Nov 1 10:19:35 2017 +0900 g10: Unattended key generation "Key-Grip" and "Subkey-Grip". * g10/keygen.c (pSUBKEYGRIP): New. (read_parameter_file): Add "Key-Grip" and "Subkey-Grip". (do_generate_keypair): Support pSUBKEYGRIP. -- In the manual, it says "Key-Grip". gpgsm also supports "Key-Grip". Adding "Subkey-Grip" now, adding "Key-Grip" makes sense. GnuPG-bug-id: 3478 Signed-off-by: NIIBE Yutaka (cherry picked from commit 6c63a04569c07c9c2817c7c530a92ccfa58155cc) diff --git a/g10/keygen.c b/g10/keygen.c index 8f30b7e..38686b2 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -90,7 +90,8 @@ enum para_name { pCARDBACKUPKEY, pHANDLE, pKEYSERVER, - pKEYGRIP + pKEYGRIP, + pSUBKEYGRIP, }; struct para_data_s { @@ -3649,6 +3650,8 @@ read_parameter_file (ctrl_t ctrl, const char *fname ) { "Handle", pHANDLE }, { "Keyserver", pKEYSERVER }, { "Keygrip", pKEYGRIP }, + { "Key-Grip", pKEYGRIP }, + { "Subkey-grip", pSUBKEYGRIP }, { NULL, 0 } }; IOBUF fp; @@ -4697,8 +4700,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, if (!err && card && get_parameter (para, pAUTHKEYTYPE)) { err = gen_card_key (3, get_parameter_algo( para, pAUTHKEYTYPE, NULL ), - 0, pub_root, ×tamp, - get_parameter_u32 (para, pKEYEXPIRE)); + 0, pub_root, ×tamp, expire); if (!err) err = write_keybinding (ctrl, pub_root, pri_psk, NULL, PUBKEY_USAGE_AUTH, timestamp, cache_nonce); @@ -4706,11 +4708,18 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, if (!err && get_parameter (para, pSUBKEYTYPE)) { - sub_psk = NULL; + int subkey_algo = get_parameter_algo (para, pSUBKEYTYPE, NULL); + s = NULL; - if (!card || (s = get_parameter_value (para, pCARDBACKUPKEY))) + key_from_hexgrip = get_parameter_value (para, pSUBKEYGRIP); + if (key_from_hexgrip) + err = do_create_from_keygrip (ctrl, subkey_algo, key_from_hexgrip, + pub_root, timestamp, + get_parameter_u32 (para, pSUBKEYEXPIRE), + 1); + else if (!card || (s = get_parameter_value (para, pCARDBACKUPKEY))) { - err = do_create (get_parameter_algo (para, pSUBKEYTYPE, NULL), + err = do_create (subkey_algo, get_parameter_uint (para, pSUBKEYLENGTH), get_parameter_value (para, pSUBKEYCURVE), pub_root, @@ -4736,9 +4745,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, } else { - err = gen_card_key (2, get_parameter_algo (para, pSUBKEYTYPE, NULL), - 0, pub_root, ×tamp, - get_parameter_u32 (para, pKEYEXPIRE)); + err = gen_card_key (2, subkey_algo, 0, pub_root, ×tamp, expire); } if (!err) commit f183b9768b42a6792c55a6129488bd8fbf5e8e6d Author: NIIBE Yutaka Date: Mon Oct 30 11:59:11 2017 +0900 g10: Simplify "factory-reset" procedure. * g10/card-util.c (factory_reset): Simplify. -- In this summer, I got report about old code before this change didn't work with newer Yubikey. I got another report test version of OpenPGP card V3.3 implementation didn't work, either. Then, I confirmed that according to the OpenPGP card specification, the procedure of old code is not expected by its author. This change simplify "factory-reset" as simple. Only versions of Gnuk 1.2.2, 1.2.3, 1.2.4, won't work with this change. That's because the factory-reset feature of Gnuk was introduced by reading the implementation of GnuPG, instead of reading the specification. Gnuk 1.2.5 and later works well. All OpenPGPcard implementations I have work well (2.0, 2.1, 2.2, test version of 3). GnuPG-bug-id: 3286 Signed-off-by: NIIBE Yutaka (cherry picked from commit d63b7966cdd72548c60466c620de5cd6104a779e) diff --git a/g10/card-util.c b/g10/card-util.c index ef67610..a396b7d 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1760,9 +1760,6 @@ factory_reset (void) scd apdu 00 20 00 83 08 40 40 40 40 40 40 40 40 scd apdu 00 20 00 83 08 40 40 40 40 40 40 40 40 scd apdu 00 e6 00 00 - scd reset - scd serialno undefined - scd apdu 00 A4 04 00 06 D2 76 00 01 24 01 scd apdu 00 44 00 00 /echo Card has been reset to factory defaults @@ -1837,17 +1834,6 @@ factory_reset (void) goto leave; } - /* The card is in termination state - reset and select again. */ - err = send_apdu (NULL, "RESET", 0); - if (err) - goto leave; - err = send_apdu ("undefined", "dummy select", 0); - if (err) - goto leave; - - /* Select the OpenPGP application. (no error checking here). */ - send_apdu ("00A4040006D27600012401", "SELECT AID", 0xffff); - /* Send activate datafile command. This is used without confirmation if the card is already in termination state. */ err = send_apdu ("00440000", "ACTIVATE DF", 0); ----------------------------------------------------------------------- Summary of changes: g10/card-util.c | 14 -------------- g10/keygen.c | 25 ++++++++++++++++--------- 2 files changed, 16 insertions(+), 23 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 6 15:07:58 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 06 Nov 2017 15:07:58 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-68-g52d41c8 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 52d41c8b0f4af6278d18d8935399ddad16a26856 (commit) via f7212f1d11aad5d910d2c77b2e5c6ab31a0e786e (commit) from 922bae8082f2f8d696ea0e7d7e9e4d986789bdfc (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 52d41c8b0f4af6278d18d8935399ddad16a26856 Author: Werner Koch Date: Mon Nov 6 14:20:03 2017 +0100 agent: New GETINFO sub-commands "s2k_count_cal" and "s2k_time". * agent/command.c (cmd_getinfo): New sub-commands. * agent/protect.c (get_standard_s2k_count): Factor some code out to ... (get_calibrated_s2k_count): new. (get_standard_s2k_time): New. Signed-off-by: Werner Koch diff --git a/agent/agent.h b/agent/agent.h index 47cc345..687635d 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -486,8 +486,10 @@ gpg_error_t agent_protect_and_store (ctrl_t ctrl, gcry_sexp_t s_skey, char **passphrase_addr); /*-- protect.c --*/ +unsigned long get_calibrated_s2k_count (void); unsigned long get_standard_s2k_count (void); unsigned char get_standard_s2k_count_rfc4880 (void); +unsigned long get_standard_s2k_time (void); int agent_protect (const unsigned char *plainkey, const char *passphrase, unsigned char **result, size_t *resultlen, unsigned long s2k_count, int use_ocb); diff --git a/agent/command.c b/agent/command.c index 3b249b1..7c7e8a4 100644 --- a/agent/command.c +++ b/agent/command.c @@ -2843,20 +2843,22 @@ static const char hlp_getinfo[] = "Multipurpose function to return a variety of information.\n" "Supported values for WHAT are:\n" "\n" - " version - Return the version of the program.\n" - " pid - Return the process id of the server.\n" - " socket_name - Return the name of the socket.\n" + " version - Return the version of the program.\n" + " pid - Return the process id of the server.\n" + " socket_name - Return the name of the socket.\n" " ssh_socket_name - Return the name of the ssh socket.\n" - " scd_running - Return OK if the SCdaemon is already running.\n" - " s2k_count - Return the calibrated S2K count.\n" + " scd_running - Return OK if the SCdaemon is already running.\n" + " s2k_time - Return the time in milliseconds required for S2K.\n" + " s2k_count - Return the standard S2K count.\n" + " s2k_count_cal - Return the calibrated S2K count.\n" " std_env_names - List the names of the standard environment.\n" " std_session_env - List the standard session environment.\n" " std_startup_env - List the standard startup environment.\n" - " cmd_has_option\n" - " - Returns OK if the command CMD implements the option OPT.\n" - " connections - Return number of active connections.\n" - " jent_active - Returns OK if Libgcrypt's JENT is active.\n" - " restricted - Returns OK if the connection is in restricted mode.\n"; + " connections - Return number of active connections.\n" + " jent_active - Returns OK if Libgcrypt's JENT is active.\n" + " restricted - Returns OK if the connection is in restricted mode.\n" + " cmd_has_option CMD OPT\n" + " - Returns OK if command CMD has option OPT.\n"; static gpg_error_t cmd_getinfo (assuan_context_t ctx, char *line) { @@ -3014,6 +3016,20 @@ cmd_getinfo (assuan_context_t ctx, char *line) rc = gpg_error (GPG_ERR_FALSE); #endif } + else if (!strcmp (line, "s2k_count_cal")) + { + char numbuf[50]; + + snprintf (numbuf, sizeof numbuf, "%lu", get_calibrated_s2k_count ()); + rc = assuan_send_data (ctx, numbuf, strlen (numbuf)); + } + else if (!strcmp (line, "s2k_time")) + { + char numbuf[50]; + + snprintf (numbuf, sizeof numbuf, "%lu", get_standard_s2k_time ()); + rc = assuan_send_data (ctx, numbuf, strlen (numbuf)); + } else rc = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT"); return rc; diff --git a/agent/protect.c b/agent/protect.c index 9b4ba91..fe44f18 100644 --- a/agent/protect.c +++ b/agent/protect.c @@ -191,16 +191,13 @@ calibrate_s2k_count (void) } - -/* Return the standard S2K count. */ +/* Return the calibrated S2K count. This is only public for the use + * of the Assuan getinfo s2k_count_cal command. */ unsigned long -get_standard_s2k_count (void) +get_calibrated_s2k_count (void) { static unsigned long count; - if (opt.s2k_count) - return opt.s2k_count < 65536 ? 65536 : opt.s2k_count; - if (!count) count = calibrate_s2k_count (); @@ -209,6 +206,26 @@ get_standard_s2k_count (void) } +/* Return the standard S2K count. */ +unsigned long +get_standard_s2k_count (void) +{ + if (opt.s2k_count) + return opt.s2k_count < 65536 ? 65536 : opt.s2k_count; + + return get_calibrated_s2k_count (); +} + + +/* Return the milliseconds required for the standard S2K + * operation. */ +unsigned long +get_standard_s2k_time (void) +{ + return calibrate_s2k_count_one (get_standard_s2k_count ()); +} + + /* Same as get_standard_s2k_count but return the count in the encoding as described by rfc4880. */ unsigned char diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index 6579622..afe2804 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -186,6 +186,9 @@ this convention). @node Agent Options @section Option Summary +Options may either be used on the command line or, after stripping off +the two leading dashes, in the configuration file. + @table @gnupgtabopt @anchor{option --options} @@ -193,8 +196,9 @@ this convention). @opindex options Reads configuration from @var{file} instead of from the default per-user configuration file. The default configuration file is named - at file{gpg-agent.conf} and expected in the @file{.gnupg} directory directly -below the home directory of the user. + at file{gpg-agent.conf} and expected in the @file{.gnupg} directory +directly below the home directory of the user. This option is ignored +if used in an options file. @anchor{option --homedir} @include opt-homedir.texi @@ -652,19 +656,25 @@ transitioned from using MD5 to the more secure SHA256. @opindex s2k-count Specify the iteration count used to protect the passphrase. This option can be used to override the auto-calibration done by default. -This auto-calibration computes a count which requires 100ms to mangle -a given passphrase. To view the auto-calibrated count do not use this -option (or use 0 for @var{n}) and run this command: +The auto-calibration computes a count which requires 100ms to mangle +a given passphrase. + +To view the actually used iteration count and the milliseconds +required for an S2K operation use: @example gpg-connect-agent 'GETINFO s2k_count' /bye +gpg-connect-agent 'GETINFO s2k_time' /bye @end example +To view the auto-calibrated count use: + + at example +gpg-connect-agent 'GETINFO s2k_count_cal' /bye + at end example - at end table -All the long options may also be given in the configuration file after -stripping off the two leading dashes. + at end table @mansect files commit f7212f1d11aad5d910d2c77b2e5c6ab31a0e786e Author: Werner Koch Date: Mon Nov 6 13:57:30 2017 +0100 agent: New option --s2k-count. * agent/agent.h (opt): New field 's2k_count'. * agent/gpg-agent.c (oS2KCount): New enum value. (opts): New option --s2k-count. (parse_rereadable_options): Set opt.s2k_count. -- This option is useful to speed up the starting of gpg-agent and in cases where the auto-calibration runs into problems due to a broken time measurement facility. Signed-off-by: Werner Koch diff --git a/agent/agent.h b/agent/agent.h index bf8d244..47cc345 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -171,6 +171,10 @@ struct /* The digest algorithm to use for ssh fingerprints when * communicating with the user. */ int ssh_fingerprint_digest; + + /* The value of the option --s2k-count. If this option is not given + * or 0 an auto-calibrated value is used. */ + unsigned long s2k_count; } opt; diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 030d1da..2e19d19 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -134,6 +134,8 @@ enum cmd_and_opt_values oPuttySupport, oDisableScdaemon, oDisableCheckOwnSocket, + oS2KCount, + oWriteEnvFile }; @@ -248,6 +250,8 @@ static ARGPARSE_OPTS opts[] = { ), ARGPARSE_s_n (oEnableExtendedKeyFormat, "enable-extended-key-format", "@"), + ARGPARSE_s_u (oS2KCount, "s2k-count", "@"), + /* Dummy options for backward compatibility. */ ARGPARSE_o_s (oWriteEnvFile, "write-env-file", "@"), ARGPARSE_s_n (oUseStandardSocket, "use-standard-socket", "@"), @@ -819,6 +823,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) disable_check_own_socket = 0; /* Note: When changing the next line, change also gpgconf_list. */ opt.ssh_fingerprint_digest = GCRY_MD_MD5; + opt.s2k_count = 0; return 1; } @@ -910,6 +915,10 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) opt.ssh_fingerprint_digest = i; break; + case oS2KCount: + opt.s2k_count = pargs->r.ret_ulong; + break; + default: return 0; /* not handled */ } diff --git a/agent/protect.c b/agent/protect.c index 9b262a9..9b4ba91 100644 --- a/agent/protect.c +++ b/agent/protect.c @@ -198,6 +198,9 @@ get_standard_s2k_count (void) { static unsigned long count; + if (opt.s2k_count) + return opt.s2k_count < 65536 ? 65536 : opt.s2k_count; + if (!count) count = calibrate_s2k_count (); diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index d7a562a..6579622 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -648,6 +648,19 @@ Select the digest algorithm used to compute ssh fingerprints that are communicated to the user, e.g. in pinentry dialogs. OpenSSH has transitioned from using MD5 to the more secure SHA256. + at item --s2k-count @var{n} + at opindex s2k-count +Specify the iteration count used to protect the passphrase. This +option can be used to override the auto-calibration done by default. +This auto-calibration computes a count which requires 100ms to mangle +a given passphrase. To view the auto-calibrated count do not use this +option (or use 0 for @var{n}) and run this command: + + at example +gpg-connect-agent 'GETINFO s2k_count' /bye + at end example + + @end table All the long options may also be given in the configuration file after @@ -813,6 +826,7 @@ again. Only certain options are honored: @code{quiet}, @code{pinentry-invisible-char}, @code{default-cache-ttl}, @code{max-cache-ttl}, @code{ignore-cache-for-signing}, + at code{s2k-count}, @code{no-allow-external-cache}, @code{allow-emacs-pinentry}, @code{no-allow-mark-trusted}, @code{disable-scdaemon}, and @code{disable-check-own-socket}. @code{scdaemon-program} is also ----------------------------------------------------------------------- Summary of changes: agent/agent.h | 6 ++++++ agent/command.c | 36 ++++++++++++++++++++++++++---------- agent/gpg-agent.c | 9 +++++++++ agent/protect.c | 26 +++++++++++++++++++++++--- doc/gpg-agent.texi | 34 +++++++++++++++++++++++++++++----- 5 files changed, 93 insertions(+), 18 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 6 15:16:14 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 06 Nov 2017 15:16:14 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-37-g3607ab2 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 3607ab2cf382296cb398a92d5ec792239960bf7b (commit) via 78a6d0ce88ae14d8324fbab3aee3286b17e49259 (commit) from 680161647ad56d1ca92988f80bcc4d6fcb20b1eb (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 3607ab2cf382296cb398a92d5ec792239960bf7b Author: Werner Koch Date: Mon Nov 6 14:20:03 2017 +0100 agent: New GETINFO sub-commands "s2k_count_cal" and "s2k_time". * agent/command.c (cmd_getinfo): New sub-commands. * agent/protect.c (get_standard_s2k_count): Factor some code out to ... (get_calibrated_s2k_count): new. (get_standard_s2k_time): New. Signed-off-by: Werner Koch (cherry picked from commit 52d41c8b0f4af6278d18d8935399ddad16a26856) diff --git a/agent/agent.h b/agent/agent.h index 19f9f49..c2d8579 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -485,8 +485,10 @@ gpg_error_t agent_protect_and_store (ctrl_t ctrl, gcry_sexp_t s_skey, char **passphrase_addr); /*-- protect.c --*/ +unsigned long get_calibrated_s2k_count (void); unsigned long get_standard_s2k_count (void); unsigned char get_standard_s2k_count_rfc4880 (void); +unsigned long get_standard_s2k_time (void); int agent_protect (const unsigned char *plainkey, const char *passphrase, unsigned char **result, size_t *resultlen, unsigned long s2k_count, int use_ocb); diff --git a/agent/command.c b/agent/command.c index e20361a..0916f88 100644 --- a/agent/command.c +++ b/agent/command.c @@ -2843,20 +2843,22 @@ static const char hlp_getinfo[] = "Multipurpose function to return a variety of information.\n" "Supported values for WHAT are:\n" "\n" - " version - Return the version of the program.\n" - " pid - Return the process id of the server.\n" - " socket_name - Return the name of the socket.\n" + " version - Return the version of the program.\n" + " pid - Return the process id of the server.\n" + " socket_name - Return the name of the socket.\n" " ssh_socket_name - Return the name of the ssh socket.\n" - " scd_running - Return OK if the SCdaemon is already running.\n" - " s2k_count - Return the calibrated S2K count.\n" + " scd_running - Return OK if the SCdaemon is already running.\n" + " s2k_time - Return the time in milliseconds required for S2K.\n" + " s2k_count - Return the standard S2K count.\n" + " s2k_count_cal - Return the calibrated S2K count.\n" " std_env_names - List the names of the standard environment.\n" " std_session_env - List the standard session environment.\n" " std_startup_env - List the standard startup environment.\n" - " cmd_has_option\n" - " - Returns OK if the command CMD implements the option OPT.\n" - " connections - Return number of active connections.\n" - " jent_active - Returns OK if Libgcrypt's JENT is active.\n" - " restricted - Returns OK if the connection is in restricted mode.\n"; + " connections - Return number of active connections.\n" + " jent_active - Returns OK if Libgcrypt's JENT is active.\n" + " restricted - Returns OK if the connection is in restricted mode.\n" + " cmd_has_option CMD OPT\n" + " - Returns OK if command CMD has option OPT.\n"; static gpg_error_t cmd_getinfo (assuan_context_t ctx, char *line) { @@ -3014,6 +3016,20 @@ cmd_getinfo (assuan_context_t ctx, char *line) rc = gpg_error (GPG_ERR_FALSE); #endif } + else if (!strcmp (line, "s2k_count_cal")) + { + char numbuf[50]; + + snprintf (numbuf, sizeof numbuf, "%lu", get_calibrated_s2k_count ()); + rc = assuan_send_data (ctx, numbuf, strlen (numbuf)); + } + else if (!strcmp (line, "s2k_time")) + { + char numbuf[50]; + + snprintf (numbuf, sizeof numbuf, "%lu", get_standard_s2k_time ()); + rc = assuan_send_data (ctx, numbuf, strlen (numbuf)); + } else rc = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT"); return rc; diff --git a/agent/protect.c b/agent/protect.c index ab26220..3073fc4 100644 --- a/agent/protect.c +++ b/agent/protect.c @@ -191,16 +191,13 @@ calibrate_s2k_count (void) } - -/* Return the standard S2K count. */ +/* Return the calibrated S2K count. This is only public for the use + * of the Assuan getinfo s2k_count_cal command. */ unsigned long -get_standard_s2k_count (void) +get_calibrated_s2k_count (void) { static unsigned long count; - if (opt.s2k_count) - return opt.s2k_count < 65536 ? 65536 : opt.s2k_count; - if (!count) count = calibrate_s2k_count (); @@ -209,6 +206,26 @@ get_standard_s2k_count (void) } +/* Return the standard S2K count. */ +unsigned long +get_standard_s2k_count (void) +{ + if (opt.s2k_count) + return opt.s2k_count < 65536 ? 65536 : opt.s2k_count; + + return get_calibrated_s2k_count (); +} + + +/* Return the milliseconds required for the standard S2K + * operation. */ +unsigned long +get_standard_s2k_time (void) +{ + return calibrate_s2k_count_one (get_standard_s2k_count ()); +} + + /* Same as get_standard_s2k_count but return the count in the encoding as described by rfc4880. */ unsigned char diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index 6579622..afe2804 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -186,6 +186,9 @@ this convention). @node Agent Options @section Option Summary +Options may either be used on the command line or, after stripping off +the two leading dashes, in the configuration file. + @table @gnupgtabopt @anchor{option --options} @@ -193,8 +196,9 @@ this convention). @opindex options Reads configuration from @var{file} instead of from the default per-user configuration file. The default configuration file is named - at file{gpg-agent.conf} and expected in the @file{.gnupg} directory directly -below the home directory of the user. + at file{gpg-agent.conf} and expected in the @file{.gnupg} directory +directly below the home directory of the user. This option is ignored +if used in an options file. @anchor{option --homedir} @include opt-homedir.texi @@ -652,19 +656,25 @@ transitioned from using MD5 to the more secure SHA256. @opindex s2k-count Specify the iteration count used to protect the passphrase. This option can be used to override the auto-calibration done by default. -This auto-calibration computes a count which requires 100ms to mangle -a given passphrase. To view the auto-calibrated count do not use this -option (or use 0 for @var{n}) and run this command: +The auto-calibration computes a count which requires 100ms to mangle +a given passphrase. + +To view the actually used iteration count and the milliseconds +required for an S2K operation use: @example gpg-connect-agent 'GETINFO s2k_count' /bye +gpg-connect-agent 'GETINFO s2k_time' /bye @end example +To view the auto-calibrated count use: + + at example +gpg-connect-agent 'GETINFO s2k_count_cal' /bye + at end example - at end table -All the long options may also be given in the configuration file after -stripping off the two leading dashes. + at end table @mansect files commit 78a6d0ce88ae14d8324fbab3aee3286b17e49259 Author: Werner Koch Date: Mon Nov 6 13:57:30 2017 +0100 agent: New option --s2k-count. * agent/agent.h (opt): New field 's2k_count'. * agent/gpg-agent.c (oS2KCount): New enum value. (opts): New option --s2k-count. (parse_rereadable_options): Set opt.s2k_count. -- This option is useful to speed up the starting of gpg-agent and in cases where the auto-calibration runs into problems due to a broken time measurement facility. Signed-off-by: Werner Koch (cherry picked from commit f7212f1d11aad5d910d2c77b2e5c6ab31a0e786e) diff --git a/agent/agent.h b/agent/agent.h index 7bb46fa..19f9f49 100644 --- a/agent/agent.h +++ b/agent/agent.h @@ -171,6 +171,10 @@ struct /* The digest algorithm to use for ssh fingerprints when * communicating with the user. */ int ssh_fingerprint_digest; + + /* The value of the option --s2k-count. If this option is not given + * or 0 an auto-calibrated value is used. */ + unsigned long s2k_count; } opt; diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 030d1da..2e19d19 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -134,6 +134,8 @@ enum cmd_and_opt_values oPuttySupport, oDisableScdaemon, oDisableCheckOwnSocket, + oS2KCount, + oWriteEnvFile }; @@ -248,6 +250,8 @@ static ARGPARSE_OPTS opts[] = { ), ARGPARSE_s_n (oEnableExtendedKeyFormat, "enable-extended-key-format", "@"), + ARGPARSE_s_u (oS2KCount, "s2k-count", "@"), + /* Dummy options for backward compatibility. */ ARGPARSE_o_s (oWriteEnvFile, "write-env-file", "@"), ARGPARSE_s_n (oUseStandardSocket, "use-standard-socket", "@"), @@ -819,6 +823,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) disable_check_own_socket = 0; /* Note: When changing the next line, change also gpgconf_list. */ opt.ssh_fingerprint_digest = GCRY_MD_MD5; + opt.s2k_count = 0; return 1; } @@ -910,6 +915,10 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread) opt.ssh_fingerprint_digest = i; break; + case oS2KCount: + opt.s2k_count = pargs->r.ret_ulong; + break; + default: return 0; /* not handled */ } diff --git a/agent/protect.c b/agent/protect.c index c257861..ab26220 100644 --- a/agent/protect.c +++ b/agent/protect.c @@ -198,6 +198,9 @@ get_standard_s2k_count (void) { static unsigned long count; + if (opt.s2k_count) + return opt.s2k_count < 65536 ? 65536 : opt.s2k_count; + if (!count) count = calibrate_s2k_count (); diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index d7a562a..6579622 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -648,6 +648,19 @@ Select the digest algorithm used to compute ssh fingerprints that are communicated to the user, e.g. in pinentry dialogs. OpenSSH has transitioned from using MD5 to the more secure SHA256. + at item --s2k-count @var{n} + at opindex s2k-count +Specify the iteration count used to protect the passphrase. This +option can be used to override the auto-calibration done by default. +This auto-calibration computes a count which requires 100ms to mangle +a given passphrase. To view the auto-calibrated count do not use this +option (or use 0 for @var{n}) and run this command: + + at example +gpg-connect-agent 'GETINFO s2k_count' /bye + at end example + + @end table All the long options may also be given in the configuration file after @@ -813,6 +826,7 @@ again. Only certain options are honored: @code{quiet}, @code{pinentry-invisible-char}, @code{default-cache-ttl}, @code{max-cache-ttl}, @code{ignore-cache-for-signing}, + at code{s2k-count}, @code{no-allow-external-cache}, @code{allow-emacs-pinentry}, @code{no-allow-mark-trusted}, @code{disable-scdaemon}, and @code{disable-check-own-socket}. @code{scdaemon-program} is also ----------------------------------------------------------------------- Summary of changes: agent/agent.h | 6 ++++++ agent/command.c | 36 ++++++++++++++++++++++++++---------- agent/gpg-agent.c | 9 +++++++++ agent/protect.c | 26 +++++++++++++++++++++++--- doc/gpg-agent.texi | 34 +++++++++++++++++++++++++++++----- 5 files changed, 93 insertions(+), 18 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 6 16:54:27 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 06 Nov 2017 16:54:27 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-69-g4230822 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 42308224d1fce64c666aed2be5eb4ef42e8aced4 (commit) from 52d41c8b0f4af6278d18d8935399ddad16a26856 (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 42308224d1fce64c666aed2be5eb4ef42e8aced4 Author: Werner Koch Date: Mon Nov 6 16:49:07 2017 +0100 tests: Minor imporvement in agent invocation * tests/openpgp/defs.scm (create-gpghome): Add s2k-count. -- My tests show only 2.5% improvement, but as we have that option now let's use it. real 9m12.604s user 2m20.720s sys 0m11.452s real 8m3.815s user 2m16.700s sys 0m11.544s Signed-off-by: Werner Koch diff --git a/tests/openpgp/defs.scm b/tests/openpgp/defs.scm index a6347fe..9f780fe 100644 --- a/tests/openpgp/defs.scm +++ b/tests/openpgp/defs.scm @@ -351,6 +351,7 @@ "allow-preset-passphrase" "no-grab" "enable-ssh-support" + "s2k-count 65536" (if (flag "--extended-key-format" *args*) "enable-extended-key-format" "#enable-extended-key-format") (string-append "pinentry-program " (tool 'pinentry)) ----------------------------------------------------------------------- Summary of changes: tests/openpgp/defs.scm | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 03:03:05 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Tue, 07 Nov 2017 03:03:05 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-70-g380bce1 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 380bce13d94ff03c96e39ac1d834f382c5c730a1 (commit) from 42308224d1fce64c666aed2be5eb4ef42e8aced4 (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 380bce13d94ff03c96e39ac1d834f382c5c730a1 Author: NIIBE Yutaka Date: Tue Nov 7 10:49:36 2017 +0900 agent: Use clock or clock_gettime for calibration. * agent/protect.c (calibrate_get_time): Use clock or clock_gettime. -- For calibration, clock(3) is better than times(3) among UNIXen. Tested on NetBSD 7.1 and FreeBSD 11.1, using QEMU. Thanks to Damien Goutte-Gattat for the information of use of CLOCKS_PER_SEC; The old code with times(3) is not 100% correct, in terms of POSIX. It should have used sysconf (_SC_CLK_TCK) instead of CLOCKS_PER_SEC. CLOCKS_PER_SEC is specifically for clock(3). GnuPG-bug-id: 3056, 3276, 3472 Signed-off-by: NIIBE Yutaka diff --git a/agent/protect.c b/agent/protect.c index fe44f18..90690d9 100644 --- a/agent/protect.c +++ b/agent/protect.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -104,11 +105,14 @@ calibrate_get_time (struct calibrate_time_s *data) &data->creation_time, &data->exit_time, &data->kernel_time, &data->user_time); # endif -#else - struct tms tmp; +#elif defined (CLOCK_THREAD_CPUTIME_ID) + struct timespec tmp; - times (&tmp); - data->ticks = tmp.tms_utime; + clock_gettime (CLOCK_THREAD_CPUTIME_ID, &tmp); + data->ticks = (clock_t)(((unsigned long long)tmp.tv_sec * 1000000000 + + tmp.tv_nsec) * CLOCKS_PER_SEC / 1000000000); +#else + data->ticks = clock (); #endif } @@ -135,7 +139,7 @@ calibrate_elapsed_time (struct calibrate_time_s *starttime) } #else return (unsigned long)((((double) (stoptime.ticks - starttime->ticks)) - /CLOCKS_PER_SEC)*10000000); + /CLOCKS_PER_SEC)*1000); #endif } diff --git a/agent/t-protect.c b/agent/t-protect.c index 1d3c8ec..92d312c 100644 --- a/agent/t-protect.c +++ b/agent/t-protect.c @@ -322,9 +322,9 @@ test_agent_protect_shared_secret (void) int main (int argc, char **argv) { - (void)argc; (void)argv; + opt.verbose = argc - 1; /* We can do "./t-protect -v -v" */ gcry_control (GCRYCTL_DISABLE_SECMEM); test_agent_protect (); ----------------------------------------------------------------------- Summary of changes: agent/protect.c | 14 +++++++++----- agent/t-protect.c | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 03:16:32 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Tue, 07 Nov 2017 03:16:32 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-38-g96d441b 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 96d441b315ec5c9f329596cfda28ac13a8bfa21a (commit) from 3607ab2cf382296cb398a92d5ec792239960bf7b (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 96d441b315ec5c9f329596cfda28ac13a8bfa21a Author: NIIBE Yutaka Date: Tue Nov 7 11:16:02 2017 +0900 po: Update Japanese translation diff --git a/po/ja.po b/po/ja.po index bdbc953..26c032f 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,9 +8,9 @@ # msgid "" msgstr "" -"Project-Id-Version: gnupg 2.1.23\n" +"Project-Id-Version: gnupg 2.2.2\n" "Report-Msgid-Bugs-To: translations at gnupg.org\n" -"PO-Revision-Date: 2017-11-02 17:40+0100\n" +"PO-Revision-Date: 2017-11-07 11:11+0900\n" "Last-Translator: NIIBE Yutaka \n" "Language-Team: none\n" "Language: ja\n" @@ -3084,10 +3084,8 @@ msgstr "???????ID???????????????? msgid "Secret key is available.\n" msgstr "???????????\n" -#, fuzzy -#| msgid "Secret key is available.\n" msgid "Secret subkeys are available.\n" -msgstr "???????????\n" +msgstr "????????????\n" msgid "Need the secret key to do this.\n" msgstr "???????????????\n" ----------------------------------------------------------------------- Summary of changes: po/ja.po | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 03:26:44 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Tue, 07 Nov 2017 03:26:44 +0100 Subject: [git] GnuPG - branch, gniibe/scd-kdf-support, created. gnupg-2.2.1-71-g526d144 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, gniibe/scd-kdf-support has been created at 526d144b1bb64cdead54e5fa12c7446afeeafd6c (commit) - Log ----------------------------------------------------------------- commit 526d144b1bb64cdead54e5fa12c7446afeeafd6c Author: NIIBE Yutaka Date: Tue Nov 7 11:20:53 2017 +0900 scd: Support KDF Data Object of OpenPGPcard V3.3. * scd/app-openpgp.c (do_getattr, do_setattr): Add KDF support. (pin2hash_if_kdf): New. (verify_a_chv): Add PINLEN arg. Use pin2hash_if_kdf. (verify_chv2, do_sign): Follow the change of verify_a_chv. (verify_chv3, do_change_pin): Use pin2hash_if_kdf. -- GnuPG-bug-id: 3152 Signed-off-by: NIIBE Yutaka diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 6fcec3e..c9f2840 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -121,6 +121,7 @@ static struct { /* V3.0 */ { 0x7F74, 0, 0, 1, 0, 0, 0, 0, "General Feature Management"}, { 0x00D5, 0, 0, 1, 0, 0, 0, 0, "AES key data"}, + { 0x00F9, 0, 0, 1, 0, 0, 0, 0, "KDF data object"}, { 0 } }; @@ -199,7 +200,7 @@ struct app_local_s { unsigned int private_dos:1; unsigned int algo_attr_change:1; /* Algorithm attributes changeable. */ unsigned int has_decrypt:1; /* Support symmetric decryption. */ - unsigned int kdf_do:1; /* Support KDF DOs. */ + unsigned int kdf_do:1; /* Support KDF DO. */ unsigned int sm_algo:2; /* Symmetric crypto algo for SM. */ unsigned int pin_blk2:1; /* PIN block 2 format supported. */ @@ -980,6 +981,7 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name) { "PRIVATE-DO-4", 0x0104 }, { "$AUTHKEYID", 0x0000, -3 }, { "$DISPSERIALNO",0x0000, -4 }, + { "KDF", 0x00F9 }, { NULL, 0 } }; int idx, i, rc; @@ -2054,6 +2056,47 @@ get_prompt_info (app_t app, int chvno, unsigned long sigcount, int remaining) return result; } +/* Compute hash if KDF-DO is available. CHVNO must be 0 for reset + code, 1 or 2 for user pin and 3 for admin pin. + */ +static gpg_error_t +pin2hash_if_kdf (app_t app, int chvno, char *pinvalue, int *r_pinlen) +{ + gpg_error_t err = 0; + void *relptr; + unsigned char *buffer; + size_t buflen; + + if (app->app_local->extcap.kdf_do + && (relptr = get_one_do (app, 0x00F9, &buffer, &buflen, NULL))) + { + char *salt; + unsigned long s2k_count; + char dek[32]; + + salt = &buffer[(chvno==3 ? 34 : (chvno==0 ? 24 : 14))]; + s2k_count = (((unsigned int)buffer[8] << 24) + | (buffer[9] << 16) | (buffer[10] << 8) | buffer[11]); + err = gcry_kdf_derive (pinvalue, strlen (pinvalue), + GCRY_KDF_ITERSALTED_S2K, + DIGEST_ALGO_SHA256, salt, 8, + s2k_count, sizeof (dek), dek); + if (!err) + { + /* pinvalue has a buffer of MAXLEN_PIN+1, 32 is OK. */ + *r_pinlen = 32; + memcpy (pinvalue, dek, *r_pinlen); + wipememory (dek, *r_pinlen); + } + + xfree (relptr); + } + else + *r_pinlen = strlen (pinvalue); + + return err; +} + /* Verify a CHV either using the pinentry or if possible by using a pinpad. PINCB and PINCB_ARG describe the usual callback @@ -2068,8 +2111,8 @@ get_prompt_info (app_t app, int chvno, unsigned long sigcount, int remaining) static gpg_error_t verify_a_chv (app_t app, gpg_error_t (*pincb)(void*, const char *, char **), - void *pincb_arg, - int chvno, unsigned long sigcount, char **pinvalue) + void *pincb_arg, int chvno, unsigned long sigcount, + char **pinvalue, int *pinlen) { int rc = 0; char *prompt_buffer = NULL; @@ -2081,6 +2124,7 @@ verify_a_chv (app_t app, log_assert (chvno == 1 || chvno == 2); *pinvalue = NULL; + *pinlen = 0; remaining = get_remaining_tries (app, 0); if (remaining == -1) @@ -2169,8 +2213,9 @@ verify_a_chv (app_t app, return gpg_error (GPG_ERR_BAD_PIN); } - rc = iso7816_verify (app->slot, 0x80+chvno, - *pinvalue, strlen (*pinvalue)); + rc = pin2hash_if_kdf (app, chvno, *pinvalue, pinlen); + if (!rc) + rc = iso7816_verify (app->slot, 0x80+chvno, *pinvalue, *pinlen); } if (rc) @@ -2194,11 +2239,12 @@ verify_chv2 (app_t app, { int rc; char *pinvalue; + int pinlen; if (app->did_chv2) return 0; /* We already verified CHV2. */ - rc = verify_a_chv (app, pincb, pincb_arg, 2, 0, &pinvalue); + rc = verify_a_chv (app, pincb, pincb_arg, 2, 0, &pinvalue, &pinlen); if (rc) return rc; app->did_chv2 = 1; @@ -2209,7 +2255,7 @@ verify_chv2 (app_t app, the card is not configured to require a verification before each CHV1 controlled operation (force_chv1) and if we are not using the pinpad (PINVALUE == NULL). */ - rc = iso7816_verify (app->slot, 0x81, pinvalue, strlen (pinvalue)); + rc = iso7816_verify (app->slot, 0x81, pinvalue, pinlen); if (gpg_err_code (rc) == GPG_ERR_BAD_PIN) rc = gpg_error (GPG_ERR_PIN_NOT_SYNCED); if (rc) @@ -2319,6 +2365,7 @@ verify_chv3 (app_t app, else { char *pinvalue; + int pinlen; rc = pincb (pincb_arg, prompt, &pinvalue); xfree (prompt); @@ -2338,7 +2385,9 @@ verify_chv3 (app_t app, return gpg_error (GPG_ERR_BAD_PIN); } - rc = iso7816_verify (app->slot, 0x83, pinvalue, strlen (pinvalue)); + rc = pin2hash_if_kdf (app, 3, pinvalue, &pinlen); + if (!rc) + rc = iso7816_verify (app->slot, 0x83, pinvalue, pinlen); xfree (pinvalue); } @@ -2389,6 +2438,7 @@ do_setattr (app_t app, const char *name, { "SM-KEY-MAC", 0x00D2, 3, 0, 1 }, { "KEY-ATTR", 0, 0, 3, 1 }, { "AESKEY", 0x00D5, 3, 0, 1 }, + { "KDF", 0x00F9, 3, 0, 1 }, { NULL, 0 } }; int exmode; @@ -2501,6 +2551,8 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, pininfo_t pininfo; int use_pinpad = 0; int minlen = 6; + int pinlen0 = 0; + int pinlen = 0; (void)ctrl; memset (&pininfo, 0, sizeof pininfo); @@ -2685,10 +2737,17 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, rc = gpg_error_from_syserror (); else { - strcpy (stpcpy (buffer, resetcode), pinvalue); - rc = iso7816_reset_retry_counter_with_rc (app->slot, 0x81, - buffer, strlen (buffer)); - wipememory (buffer, strlen (buffer)); + strcpy (buffer, resetcode); + rc = pin2hash_if_kdf (app, 0, buffer, &pinlen0); + if (!rc) + { + strcpy (buffer+pinlen0, pinvalue); + rc = pin2hash_if_kdf (app, 0, buffer+pinlen0, &pinlen); + } + if (!rc) + rc = iso7816_reset_retry_counter_with_rc (app->slot, 0x81, + buffer, pinlen0+pinlen); + wipememory (buffer, pinlen0 + pinlen); xfree (buffer); } } @@ -2700,16 +2759,19 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, rc = gpg_error (GPG_ERR_BAD_PIN); } else - rc = iso7816_put_data (app->slot, 0, 0xD3, - pinvalue, strlen (pinvalue)); + { + rc = pin2hash_if_kdf (app, 0, pinvalue, &pinlen); + if (!rc) + rc = iso7816_put_data (app->slot, 0, 0xD3, pinvalue, pinlen); + } } else if (reset_mode) { - rc = iso7816_reset_retry_counter (app->slot, 0x81, - pinvalue, strlen (pinvalue)); + rc = pin2hash_if_kdf (app, 1, pinvalue, &pinlen); + if (!rc) + rc = iso7816_reset_retry_counter (app->slot, 0x81, pinvalue, pinlen); if (!rc && !app->app_local->extcap.is_v2) - rc = iso7816_reset_retry_counter (app->slot, 0x82, - pinvalue, strlen (pinvalue)); + rc = iso7816_reset_retry_counter (app->slot, 0x82, pinvalue, pinlen); } else if (!app->app_local->extcap.is_v2) { @@ -2750,14 +2812,20 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, pincb (pincb_arg, NULL, NULL); /* Dismiss the prompt. */ } else - rc = iso7816_change_reference_data (app->slot, 0x80 + chvno, - oldpinvalue, strlen (oldpinvalue), - pinvalue, strlen (pinvalue)); + { + rc = pin2hash_if_kdf (app, chvno, oldpinvalue, &pinlen0); + if (!rc) + rc = pin2hash_if_kdf (app, chvno, pinvalue, &pinlen); + if (!rc) + rc = iso7816_change_reference_data (app->slot, 0x80 + chvno, + oldpinvalue, pinlen0, + pinvalue, pinlen); + } } if (pinvalue) { - wipememory (pinvalue, strlen (pinvalue)); + wipememory (pinvalue, pinlen); xfree (pinvalue); } if (rc) @@ -2771,7 +2839,7 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, } if (oldpinvalue) { - wipememory (oldpinvalue, strlen (oldpinvalue)); + wipememory (oldpinvalue, pinlen0); xfree (oldpinvalue); } return rc; @@ -4277,8 +4345,9 @@ do_sign (app_t app, const char *keyidstr, int hashalgo, if (!app->did_chv1 || app->force_chv1 ) { char *pinvalue; + int pinlen; - rc = verify_a_chv (app, pincb, pincb_arg, 1, sigcount, &pinvalue); + rc = verify_a_chv (app, pincb, pincb_arg, 1, sigcount, &pinvalue, &pinlen); if (rc) return rc; @@ -4291,7 +4360,7 @@ do_sign (app_t app, const char *keyidstr, int hashalgo, pinpad has been used. */ if (!app->did_chv2 && pinvalue && !app->app_local->extcap.is_v2) { - rc = iso7816_verify (app->slot, 0x82, pinvalue, strlen (pinvalue)); + rc = iso7816_verify (app->slot, 0x82, pinvalue, pinlen); if (gpg_err_code (rc) == GPG_ERR_BAD_PIN) rc = gpg_error (GPG_ERR_PIN_NOT_SYNCED); if (rc) ----------------------------------------------------------------------- hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 05:24:03 2017 From: cvs at cvs.gnupg.org (by Jeremie Courreges-Anglas) Date: Tue, 07 Nov 2017 05:24:03 +0100 Subject: [git] GCRYPT - branch, LIBGCRYPT-1.8-BRANCH, updated. libgcrypt-1.8.1-2-g71a0770 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, LIBGCRYPT-1.8-BRANCH has been updated via 71a07704ad98b7c3b776629336fbffff1dfeaaeb (commit) from eb8f35243916132e10125e9e9edb066e8f1edd08 (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 71a07704ad98b7c3b776629336fbffff1dfeaaeb Author: Jeremie Courreges-Anglas Date: Mon Nov 6 14:57:28 2017 +0900 build: Don't use /dev/srandom on OpenBSD. -- Ported from GnuPG 1.4. All /dev/*random devices have been equivalent since OpenBSD 4.9, on purpose (/dev/random doesn't block). /dev/srandom has been removed in the OpenBSD 6.3 development cycle, /dev/arandom will likely follow. Signed-off-by: Jeremie Courreges-Anglas diff --git a/configure.ac b/configure.ac index e24e710..6c23a04 100644 --- a/configure.ac +++ b/configure.ac @@ -315,21 +315,8 @@ case "${host}" in ;; esac -# -# Figure out the name of the random device -# -case "${host}" in - *-openbsd*) - NAME_OF_DEV_RANDOM="/dev/srandom" - NAME_OF_DEV_URANDOM="/dev/urandom" - ;; - - *) - NAME_OF_DEV_RANDOM="/dev/random" - NAME_OF_DEV_URANDOM="/dev/urandom" - ;; -esac - +NAME_OF_DEV_RANDOM="/dev/random" +NAME_OF_DEV_URANDOM="/dev/urandom" AC_ARG_ENABLE(endian-check, AC_HELP_STRING([--disable-endian-check], ----------------------------------------------------------------------- Summary of changes: configure.ac | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 09:29:46 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 09:29:46 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-71-gf9f72ff 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 f9f72ffbfa9fd7d1a7a1823697d116d76155b407 (commit) from 380bce13d94ff03c96e39ac1d834f382c5c730a1 (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 f9f72ffbfa9fd7d1a7a1823697d116d76155b407 Author: Werner Koch Date: Tue Nov 7 09:21:10 2017 +0100 speedo: Include software versions in the W32 README Signed-off-by: Werner Koch diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk index b1c6ef8..7276787 100644 --- a/build-aux/speedo.mk +++ b/build-aux/speedo.mk @@ -757,6 +757,7 @@ define SETVARS git="$(call GETVAR,speedo_pkg_$(1)_git)"; \ gitref="$(call GETVAR,speedo_pkg_$(1)_gitref)"; \ tar="$(call GETVAR,speedo_pkg_$(1)_tar)"; \ + ver="$(call GETVAR,$(1)_ver)"; \ sha2="$(call GETVAR,$(1)_sha2)"; \ sha1="$(call GETVAR,$(1)_sha1)"; \ pkgsdir="$(sdir)/$(1)"; \ @@ -792,6 +793,7 @@ define SETVARS_W64 git="$(call GETVAR,speedo_pkg_$(1)_git)"; \ gitref="$(call GETVAR,speedo_pkg_$(1)_gitref)"; \ tar="$(call GETVAR,speedo_pkg_$(1)_tar)"; \ + ver="$(call GETVAR,$(1)_ver)"; \ sha2="$(call GETVAR,$(1)_sha2)"; \ sha1="$(call GETVAR,$(1)_sha1)"; \ pkgsdir="$(sdir)/$(1)"; \ @@ -1048,6 +1050,9 @@ endif touch $(stampdir)/stamp-w64-$(1)-03-install $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-03-install + @($(call SETVARS,$(1)); \ + printf "%-14s %-12s %s\n" $(1) "$$$${ver}" "$$$${sha1}" \ + >> $(bdir)/pkg-versions.txt) @echo "speedo: $(1) done" @touch $(stampdir)/stamp-final-$(1) @@ -1097,13 +1102,16 @@ endef # Insert the template for each source package. $(foreach spkg, $(speedo_spkgs), $(eval $(call SPKG_template,$(spkg)))) -$(stampdir)/stamp-final: $(stampdir)/stamp-directories +$(stampdir)/stamp-final: $(stampdir)/stamp-directories clean-pkg-versions ifeq ($(TARGETOS),w32) $(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-w64-final-,$(speedo_w64_build_list)) endif $(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-final-,$(speedo_build_list)) touch $(stampdir)/stamp-final +clean-pkg-versions: + @: >$(bdir)/pkg-versions.txt + all-speedo: $(stampdir)/stamp-final report-speedo: $(addprefix report-,$(speedo_build_list)) @@ -1143,12 +1151,18 @@ $(bdir)/NEWS.tmp: $(topsrc)/NEWS awk '/^Notewo/ {if(okay>1){exit}; okay++};okay {print $0}' \ <$(topsrc)/NEWS >$(bdir)/NEWS.tmp +# Sort the file with the package versions. +$(bdir)/pkg-versions.sorted: $(bdir)/pkg-versions.txt + grep -v '^gnupg ' <$(bdir)/pkg-versions.txt \ + | sort | uniq >$(bdir)/pkg-versions.sorted + $(bdir)/README.txt: $(bdir)/NEWS.tmp $(topsrc)/README $(w32src)/README.txt \ - $(w32src)/pkg-copyright.txt + $(w32src)/pkg-copyright.txt $(bdir)/pkg-versions.sorted sed -e '/^;.*/d;' \ -e '/!NEWSFILE!/{r $(bdir)/NEWS.tmp' -e 'd;}' \ -e '/!GNUPGREADME!/{r $(topsrc)/README' -e 'd;}' \ -e '/!PKG-COPYRIGHT!/{r $(w32src)/pkg-copyright.txt' -e 'd;}' \ + -e '/!PKG-VERSIONS!/{r $(bdir)/pkg-versions.sorted' -e 'd;}' \ -e 's,!VERSION!,$(INST_VERSION),g' \ < $(w32src)/README.txt \ | sed -e '/^#/d' \ @@ -1252,4 +1266,4 @@ check-tools: # Mark phony targets # .PHONY: all all-speedo report-speedo clean-stamps clean-speedo installer \ - w32_insthelpers check-tools + w32_insthelpers check-tools clean-pkg-versions diff --git a/build-aux/speedo/w32/README.txt b/build-aux/speedo/w32/README.txt index 0d72fe6..7c29095 100644 --- a/build-aux/speedo/w32/README.txt +++ b/build-aux/speedo/w32/README.txt @@ -5,8 +5,9 @@ ;; replaced by the Makefile; those words are enclosed by exclamation ;; marks. - GNUPG for Windows - =================== + + GNU Privacy Guard for Windows + =============================== This is GnuPG for Windows, version !VERSION!. @@ -15,7 +16,8 @@ Content: 1. Important notes 2. Changes 3. GnuPG README file - 4. Legal notices + 4. Package versions + 5. Legal notices 1. Important Notes @@ -47,7 +49,7 @@ release. !NEWSFILE! -3. GnuPG README file +3. GnuPG README File ==================== Below is the README file as distributed with the GnuPG source. @@ -55,8 +57,19 @@ Below is the README file as distributed with the GnuPG source. !GNUPGREADME! -4. Legal notices pertaining to the individual packets -===================================================== +4. Software Versions of the Included Packages +============================================= + +GnuPG for Windows depends on several independet developed packages +which are part of the installation. These packages along with their +version numbers and the SHA-1 checksums of their compressed tarballs +are listed here: + +!PKG-VERSIONS! + + +5. Legal Notices Pertaining to the Individual Packages +====================================================== GnuPG for Windows consist of several independent developed packages, available under different license conditions. Most of these packages diff --git a/build-aux/speedo/w32/pkg-copyright.txt b/build-aux/speedo/w32/pkg-copyright.txt index a630c8e..11056e8 100644 --- a/build-aux/speedo/w32/pkg-copyright.txt +++ b/build-aux/speedo/w32/pkg-copyright.txt @@ -1,11 +1,12 @@ Here is a list with collected copyright notices. For details see the -description of each individual package. [Compiled by wk 2016-06-17] +description of each individual package. [Compiled by wk 2017-11-07] -GnuPG is - Copyright (C) 1997-2016 Werner Koch - Copyright (C) 1994-2016 Free Software Foundation, Inc. - Copyright (C) 2003-2016 g10 Code GmbH +GNUPG is + + Copyright (C) 1997-2017 Werner Koch + Copyright (C) 1994-2017 Free Software Foundation, Inc. + Copyright (C) 2003-2017 g10 Code GmbH Copyright (C) 2002 Klar?lvdalens Datakonsult AB Copyright (C) 1995-1997, 2000-2007 Ulrich Drepper Copyright (C) 1994 X Consortium @@ -32,38 +33,209 @@ GnuPG is License for more details. 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 + along with this program; if not, see . -GPGME is +LIBGCRYPT is + + Copyright (C) 1989,1991-2017 Free Software Foundation, Inc. + Copyright (C) 1994 X Consortium + Copyright (C) 1996 L. Peter Deutsch + Copyright (C) 1997 Werner Koch + Copyright (C) 1998 The Internet Society + Copyright (C) 1996-1999 Peter Gutmann, Paul Kendall, and Chris Wedgwood + Copyright (C) 1996-2006 Peter Gutmann, Matt Thomlinson and Blake Coverett + Copyright (C) 2003 Nikos Mavroyanopoulos + Copyright (C) 2006-2007 NTT (Nippon Telegraph and Telephone Corporation) + Copyright (C) 2012-2017 g10 Code GmbH + Copyright (C) 2012 Simon Josefsson, Niels M?ller + Copyright (c) 2012 Intel Corporation + Copyright (C) 2013 Christian Grothoff + Copyright (C) 2013-2017 Jussi Kivilinna + Copyright (C) 2013-2014 Dmitry Eremin-Solenikov + Copyright (C) 2014 Stephan Mueller + Copyright (C) 2017 Bundesamt f?r Sicherheit in der Informationstechnik + + Libgcrypt is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + Libgcrypt 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see . + + +LIBGPG-ERROR is + + Copyright (C) 2003-2004, 2010, 2013-2017 g10 Code GmbH + + libgpg-error is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + libgpg-error 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . + + +LIBASSUAN is + + Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1994 X Consortium Copyright (C) 2000 Werner Koch (dd9jn) - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 g10 Code GmbH + Copyright (C) 2001-2016 g10 Code GmbH + Copyright (C) 2004 Simon Josefsson - GPGME is free software; you can redistribute it and/or modify it + Assuan is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - GPGME is distributed in the hope that it will be useful, but + Assuan 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 Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public License + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see . + + +LIBKSBA is + + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011 + 2012, 2013, 2014, 2015 g10 Code GmbH + Copyright (C) 2001, 2002, 2003, 2007 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Fabio Fiorina + + The library and the header files are distributed under the following + terms (LGPLv3+/GPLv2+): + + KSBA is free software; you can redistribute it and/or modify + it under the terms of either + + - the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version. + + or + + - 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. + + or both in parallel, as here. + + KSBA 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. + + The other parts (e.g. manual, build system, tests) are distributed + under the following terms (GPLv3): + + KSBA 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 3 of the License, or + (at your option) any later version. + + KSBA 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. + + +NPTH is + + Copyright (C) 2011, 2012, 2014, 2015, 2017 g10 Code GmbH + + nPth is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + nPth 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see . + + +NTBTLS is + + Copyright (C) 2006-2014 Brainspark B.V. + Copyright (C) 2014-2017 g10 Code GmbH + + NTBTLS 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 3 of the License, or + (at your option) any later version. + + NTBTLS 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 . -LIBGPG-ERROR is - Copyright (C) 2003, 2004 g10 Code GmbH +PINENTRY is - libgpg-error is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation; either version 2.1 of + Copyright (C) 1999 Robert Bihlmeyer + Copyright (C) 2001-2004, 2007-2008, 2010, 2015-2016 g10 Code GmbH + Copyright (C) 2002, 2008 Klar?lvdalens Datakonsult AB (KDAB) + Copyright (C) 2004 by Albrecht Dre? + Copyright 2007 Ingo Kl?cker + Copyright (C) 2014 Serge Voilokov + Copyright (C) 2015 Daiki Ueno + Copyright (C) 2015 Daniel Kahn Gillmor + Copyright 2016 Intevation GmbH + + PINENTRY 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. + + PINENTRY 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 . + + +GPGME is + + Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2001 Werner Koch + Copyright (C) 2001-2017 g10 Code GmbH + Copyright (C) 2002 Klar?lvdalens Datakonsult AB + Copyright (C) 2004-2008 Igor Belyi + Copyright (C) 2002 John Goerzen + Copyright (C) 2014, 2015 Martin Albrecht + Copyright (C) 2015 Ben McGinnes + Copyright (C) 2015-2016 Bundesamt f?r Sicherheit in der Informationstechnik + Copyright (C) 2016 Intevation GmbH + + GPGME is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - libgpg-error is distributed in the hope that it will be useful, but + GPGME 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 Lesser General Public License for more details. @@ -74,7 +246,9 @@ LIBGPG-ERROR is NSIS is - Copyright (C) 1999-2005 Nullsoft, Inc. + Copyright 1999-2009 Nullsoft and Contributors + Copyright 2002-2008 Amir Szekely + Copyright 2003 Ramon This license applies to everything in the NSIS package, except where otherwise noted. @@ -100,19 +274,12 @@ NSIS is The user interface used with the installer is - Copyright (C) 2002-2005 Joost Verburg + Copyright 2002-2009 Joost Verburg [It is distributed along with NSIS and the same conditions as stated above apply] -ADNS is - - Copyright (C) 1997-2000,2003,2006 Ian Jackson - Copyright (C) 1999-2000,2003,2006 Tony Finch - Copyright (C) 1991 Massachusetts Institute of Technology - - TinySCHEME is part of the GnuPG package and is Copyright (c) 2000, Dimitrios Souflis @@ -146,7 +313,7 @@ TinySCHEME is part of the GnuPG package and is SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -libdns is part of the GnuPG package and is +LIBDNS is part of the GnuPG package and is Copyright (c) 2008, 2009, 2010, 2012-2016 William Ahern @@ -170,7 +337,69 @@ libdns is part of the GnuPG package and is USE OR OTHER DEALINGS IN THE SOFTWARE. -SQLite has +ZLIB is + + (C) 1995-2013 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup at gzip.org madler at alumni.caltech.edu + + +BZIP2 is + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +SQLITE has been put into the public-domain by its author D. Richard Hipp: The author disclaims copyright to this source code. In place of ----------------------------------------------------------------------- Summary of changes: build-aux/speedo.mk | 20 ++- build-aux/speedo/w32/README.txt | 25 ++- build-aux/speedo/w32/pkg-copyright.txt | 289 +++++++++++++++++++++++++++++---- 3 files changed, 295 insertions(+), 39 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 10:00:00 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 10:00:00 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-40-g23bfac6 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 23bfac6d1a8bd2d0af5a6fac3ba3a6e986d6c9e8 (commit) via 1941287c9d2c9e666bad1bd330db169f0e3d6b6c (commit) from 96d441b315ec5c9f329596cfda28ac13a8bfa21a (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 23bfac6d1a8bd2d0af5a6fac3ba3a6e986d6c9e8 Author: Werner Koch Date: Tue Nov 7 09:21:10 2017 +0100 speedo: Include software versions in the W32 README Signed-off-by: Werner Koch (cherry picked from commit f9f72ffbfa9fd7d1a7a1823697d116d76155b407) diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk index b1c6ef8..7276787 100644 --- a/build-aux/speedo.mk +++ b/build-aux/speedo.mk @@ -757,6 +757,7 @@ define SETVARS git="$(call GETVAR,speedo_pkg_$(1)_git)"; \ gitref="$(call GETVAR,speedo_pkg_$(1)_gitref)"; \ tar="$(call GETVAR,speedo_pkg_$(1)_tar)"; \ + ver="$(call GETVAR,$(1)_ver)"; \ sha2="$(call GETVAR,$(1)_sha2)"; \ sha1="$(call GETVAR,$(1)_sha1)"; \ pkgsdir="$(sdir)/$(1)"; \ @@ -792,6 +793,7 @@ define SETVARS_W64 git="$(call GETVAR,speedo_pkg_$(1)_git)"; \ gitref="$(call GETVAR,speedo_pkg_$(1)_gitref)"; \ tar="$(call GETVAR,speedo_pkg_$(1)_tar)"; \ + ver="$(call GETVAR,$(1)_ver)"; \ sha2="$(call GETVAR,$(1)_sha2)"; \ sha1="$(call GETVAR,$(1)_sha1)"; \ pkgsdir="$(sdir)/$(1)"; \ @@ -1048,6 +1050,9 @@ endif touch $(stampdir)/stamp-w64-$(1)-03-install $(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-03-install + @($(call SETVARS,$(1)); \ + printf "%-14s %-12s %s\n" $(1) "$$$${ver}" "$$$${sha1}" \ + >> $(bdir)/pkg-versions.txt) @echo "speedo: $(1) done" @touch $(stampdir)/stamp-final-$(1) @@ -1097,13 +1102,16 @@ endef # Insert the template for each source package. $(foreach spkg, $(speedo_spkgs), $(eval $(call SPKG_template,$(spkg)))) -$(stampdir)/stamp-final: $(stampdir)/stamp-directories +$(stampdir)/stamp-final: $(stampdir)/stamp-directories clean-pkg-versions ifeq ($(TARGETOS),w32) $(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-w64-final-,$(speedo_w64_build_list)) endif $(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-final-,$(speedo_build_list)) touch $(stampdir)/stamp-final +clean-pkg-versions: + @: >$(bdir)/pkg-versions.txt + all-speedo: $(stampdir)/stamp-final report-speedo: $(addprefix report-,$(speedo_build_list)) @@ -1143,12 +1151,18 @@ $(bdir)/NEWS.tmp: $(topsrc)/NEWS awk '/^Notewo/ {if(okay>1){exit}; okay++};okay {print $0}' \ <$(topsrc)/NEWS >$(bdir)/NEWS.tmp +# Sort the file with the package versions. +$(bdir)/pkg-versions.sorted: $(bdir)/pkg-versions.txt + grep -v '^gnupg ' <$(bdir)/pkg-versions.txt \ + | sort | uniq >$(bdir)/pkg-versions.sorted + $(bdir)/README.txt: $(bdir)/NEWS.tmp $(topsrc)/README $(w32src)/README.txt \ - $(w32src)/pkg-copyright.txt + $(w32src)/pkg-copyright.txt $(bdir)/pkg-versions.sorted sed -e '/^;.*/d;' \ -e '/!NEWSFILE!/{r $(bdir)/NEWS.tmp' -e 'd;}' \ -e '/!GNUPGREADME!/{r $(topsrc)/README' -e 'd;}' \ -e '/!PKG-COPYRIGHT!/{r $(w32src)/pkg-copyright.txt' -e 'd;}' \ + -e '/!PKG-VERSIONS!/{r $(bdir)/pkg-versions.sorted' -e 'd;}' \ -e 's,!VERSION!,$(INST_VERSION),g' \ < $(w32src)/README.txt \ | sed -e '/^#/d' \ @@ -1252,4 +1266,4 @@ check-tools: # Mark phony targets # .PHONY: all all-speedo report-speedo clean-stamps clean-speedo installer \ - w32_insthelpers check-tools + w32_insthelpers check-tools clean-pkg-versions diff --git a/build-aux/speedo/w32/README.txt b/build-aux/speedo/w32/README.txt index 0d72fe6..7c29095 100644 --- a/build-aux/speedo/w32/README.txt +++ b/build-aux/speedo/w32/README.txt @@ -5,8 +5,9 @@ ;; replaced by the Makefile; those words are enclosed by exclamation ;; marks. - GNUPG for Windows - =================== + + GNU Privacy Guard for Windows + =============================== This is GnuPG for Windows, version !VERSION!. @@ -15,7 +16,8 @@ Content: 1. Important notes 2. Changes 3. GnuPG README file - 4. Legal notices + 4. Package versions + 5. Legal notices 1. Important Notes @@ -47,7 +49,7 @@ release. !NEWSFILE! -3. GnuPG README file +3. GnuPG README File ==================== Below is the README file as distributed with the GnuPG source. @@ -55,8 +57,19 @@ Below is the README file as distributed with the GnuPG source. !GNUPGREADME! -4. Legal notices pertaining to the individual packets -===================================================== +4. Software Versions of the Included Packages +============================================= + +GnuPG for Windows depends on several independet developed packages +which are part of the installation. These packages along with their +version numbers and the SHA-1 checksums of their compressed tarballs +are listed here: + +!PKG-VERSIONS! + + +5. Legal Notices Pertaining to the Individual Packages +====================================================== GnuPG for Windows consist of several independent developed packages, available under different license conditions. Most of these packages diff --git a/build-aux/speedo/w32/pkg-copyright.txt b/build-aux/speedo/w32/pkg-copyright.txt index a630c8e..11056e8 100644 --- a/build-aux/speedo/w32/pkg-copyright.txt +++ b/build-aux/speedo/w32/pkg-copyright.txt @@ -1,11 +1,12 @@ Here is a list with collected copyright notices. For details see the -description of each individual package. [Compiled by wk 2016-06-17] +description of each individual package. [Compiled by wk 2017-11-07] -GnuPG is - Copyright (C) 1997-2016 Werner Koch - Copyright (C) 1994-2016 Free Software Foundation, Inc. - Copyright (C) 2003-2016 g10 Code GmbH +GNUPG is + + Copyright (C) 1997-2017 Werner Koch + Copyright (C) 1994-2017 Free Software Foundation, Inc. + Copyright (C) 2003-2017 g10 Code GmbH Copyright (C) 2002 Klar?lvdalens Datakonsult AB Copyright (C) 1995-1997, 2000-2007 Ulrich Drepper Copyright (C) 1994 X Consortium @@ -32,38 +33,209 @@ GnuPG is License for more details. 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 + along with this program; if not, see . -GPGME is +LIBGCRYPT is + + Copyright (C) 1989,1991-2017 Free Software Foundation, Inc. + Copyright (C) 1994 X Consortium + Copyright (C) 1996 L. Peter Deutsch + Copyright (C) 1997 Werner Koch + Copyright (C) 1998 The Internet Society + Copyright (C) 1996-1999 Peter Gutmann, Paul Kendall, and Chris Wedgwood + Copyright (C) 1996-2006 Peter Gutmann, Matt Thomlinson and Blake Coverett + Copyright (C) 2003 Nikos Mavroyanopoulos + Copyright (C) 2006-2007 NTT (Nippon Telegraph and Telephone Corporation) + Copyright (C) 2012-2017 g10 Code GmbH + Copyright (C) 2012 Simon Josefsson, Niels M?ller + Copyright (c) 2012 Intel Corporation + Copyright (C) 2013 Christian Grothoff + Copyright (C) 2013-2017 Jussi Kivilinna + Copyright (C) 2013-2014 Dmitry Eremin-Solenikov + Copyright (C) 2014 Stephan Mueller + Copyright (C) 2017 Bundesamt f?r Sicherheit in der Informationstechnik + + Libgcrypt is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + Libgcrypt 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see . + + +LIBGPG-ERROR is + + Copyright (C) 2003-2004, 2010, 2013-2017 g10 Code GmbH + + libgpg-error is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + libgpg-error 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . + + +LIBASSUAN is + + Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1994 X Consortium Copyright (C) 2000 Werner Koch (dd9jn) - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 g10 Code GmbH + Copyright (C) 2001-2016 g10 Code GmbH + Copyright (C) 2004 Simon Josefsson - GPGME is free software; you can redistribute it and/or modify it + Assuan is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - GPGME is distributed in the hope that it will be useful, but + Assuan 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 Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public License + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see . + + +LIBKSBA is + + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011 + 2012, 2013, 2014, 2015 g10 Code GmbH + Copyright (C) 2001, 2002, 2003, 2007 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Fabio Fiorina + + The library and the header files are distributed under the following + terms (LGPLv3+/GPLv2+): + + KSBA is free software; you can redistribute it and/or modify + it under the terms of either + + - the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version. + + or + + - 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. + + or both in parallel, as here. + + KSBA 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. + + The other parts (e.g. manual, build system, tests) are distributed + under the following terms (GPLv3): + + KSBA 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 3 of the License, or + (at your option) any later version. + + KSBA 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. + + +NPTH is + + Copyright (C) 2011, 2012, 2014, 2015, 2017 g10 Code GmbH + + nPth is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + nPth 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, see . + + +NTBTLS is + + Copyright (C) 2006-2014 Brainspark B.V. + Copyright (C) 2014-2017 g10 Code GmbH + + NTBTLS 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 3 of the License, or + (at your option) any later version. + + NTBTLS 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 . -LIBGPG-ERROR is - Copyright (C) 2003, 2004 g10 Code GmbH +PINENTRY is - libgpg-error is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation; either version 2.1 of + Copyright (C) 1999 Robert Bihlmeyer + Copyright (C) 2001-2004, 2007-2008, 2010, 2015-2016 g10 Code GmbH + Copyright (C) 2002, 2008 Klar?lvdalens Datakonsult AB (KDAB) + Copyright (C) 2004 by Albrecht Dre? + Copyright 2007 Ingo Kl?cker + Copyright (C) 2014 Serge Voilokov + Copyright (C) 2015 Daiki Ueno + Copyright (C) 2015 Daniel Kahn Gillmor + Copyright 2016 Intevation GmbH + + PINENTRY 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. + + PINENTRY 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 . + + +GPGME is + + Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2001 Werner Koch + Copyright (C) 2001-2017 g10 Code GmbH + Copyright (C) 2002 Klar?lvdalens Datakonsult AB + Copyright (C) 2004-2008 Igor Belyi + Copyright (C) 2002 John Goerzen + Copyright (C) 2014, 2015 Martin Albrecht + Copyright (C) 2015 Ben McGinnes + Copyright (C) 2015-2016 Bundesamt f?r Sicherheit in der Informationstechnik + Copyright (C) 2016 Intevation GmbH + + GPGME is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - libgpg-error is distributed in the hope that it will be useful, but + GPGME 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 Lesser General Public License for more details. @@ -74,7 +246,9 @@ LIBGPG-ERROR is NSIS is - Copyright (C) 1999-2005 Nullsoft, Inc. + Copyright 1999-2009 Nullsoft and Contributors + Copyright 2002-2008 Amir Szekely + Copyright 2003 Ramon This license applies to everything in the NSIS package, except where otherwise noted. @@ -100,19 +274,12 @@ NSIS is The user interface used with the installer is - Copyright (C) 2002-2005 Joost Verburg + Copyright 2002-2009 Joost Verburg [It is distributed along with NSIS and the same conditions as stated above apply] -ADNS is - - Copyright (C) 1997-2000,2003,2006 Ian Jackson - Copyright (C) 1999-2000,2003,2006 Tony Finch - Copyright (C) 1991 Massachusetts Institute of Technology - - TinySCHEME is part of the GnuPG package and is Copyright (c) 2000, Dimitrios Souflis @@ -146,7 +313,7 @@ TinySCHEME is part of the GnuPG package and is SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -libdns is part of the GnuPG package and is +LIBDNS is part of the GnuPG package and is Copyright (c) 2008, 2009, 2010, 2012-2016 William Ahern @@ -170,7 +337,69 @@ libdns is part of the GnuPG package and is USE OR OTHER DEALINGS IN THE SOFTWARE. -SQLite has +ZLIB is + + (C) 1995-2013 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup at gzip.org madler at alumni.caltech.edu + + +BZIP2 is + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +SQLITE has been put into the public-domain by its author D. Richard Hipp: The author disclaims copyright to this source code. In place of commit 1941287c9d2c9e666bad1bd330db169f0e3d6b6c Author: Ineiev Date: Tue Nov 7 09:28:04 2017 +0100 po: Update Russian translation diff --git a/po/ru.po b/po/ru.po index 3e3a0c5..a2d0383 100644 --- a/po/ru.po +++ b/po/ru.po @@ -500,8 +500,7 @@ msgid "no gpg-agent running in this session\n" msgstr "? ???? ?????? ????? gpg ?? ????????\n" msgid "Usage: gpg-preset-passphrase [options] KEYGRIP (-h for help)\n" -msgstr "" -"?????: gpg-preset-passphrase [?????????] ???_????? (-h - ?????????)\n" +msgstr "?????: gpg-preset-passphrase [?????????] ???_????? (-h - ?????????)\n" msgid "" "Syntax: gpg-preset-passphrase [options] KEYGRIP\n" @@ -1717,8 +1716,7 @@ msgstr "(????????? ???????? ????????? '%s')\n" #, c-format msgid "Warning: '%s' should be a long key ID or a fingerprint\n" msgstr "" -"????????: '%s' ?????? ???? ??????? ??????????????? ??? " -"?????????? ?????\n" +"????????: '%s' ?????? ???? ??????? ??????????????? ??? ?????????? ?????\n" #, c-format msgid "error looking up: %s\n" @@ -3628,7 +3626,9 @@ msgstr "??????? %s ??? ???????.\n" #, c-format msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n" -msgstr "????? ?????????????????? %s ??????? %ld ??? ????? %s (????????????? ???????????? %d)\n" +msgstr "" +"????? ?????????????????? %s ??????? %ld ??? ????? %s (????????????? " +"???????????? %d)\n" #, c-format msgid "invalid value for option '%s'\n" @@ -6785,8 +6785,7 @@ msgid "" "Default operation depends on the input data\n" msgstr "" "?????????: @GPGSM@ [?????????] [?????]\n" -"?????????, ?????????, ??????????? ??? ???????????? ?? ????????? S/" -"MIME\n" +"?????????, ?????????, ??????????? ??? ???????????? ?? ????????? S/MIME\n" "???????? ?? ????????? ??????? ?? ??????? ??????\n" #, c-format @@ -6919,7 +6918,8 @@ msgstr "" #, c-format msgid "hash algorithm %d (%s) for signer %d not supported; using %s\n" -msgstr "???-??????? %d (%s) ??? ???????????? %d ?? ??????????????; ????????? %s\n" +msgstr "" +"???-??????? %d (%s) ??? ???????????? %d ?? ??????????????; ????????? %s\n" #, c-format msgid "hash algorithm used for signer %d: %s (%s)\n" @@ -7517,7 +7517,8 @@ msgstr "????????????? ???????????? ???????? ? msgid "Usage: dirmngr-client [options] [certfile|pattern] (-h for help)\n" msgstr "" -"?????: dirmngr-client [?????????] [????_???????????|??????] (-h - ?????????)\n" +"?????: dirmngr-client [?????????] [????_???????????|??????] (-h - " +"?????????)\n" msgid "" "Syntax: dirmngr-client [options] [certfile|pattern]\n" @@ -8573,8 +8574,7 @@ msgid "class %s is not supported\n" msgstr "????? %s ?? ??????????????\n" msgid "Usage: gpg-check-pattern [options] patternfile (-h for help)\n" -msgstr "" -"?????: gpg-check-pattern [?????????] ????_???????? (-h - ?????????)\n" +msgstr "?????: gpg-check-pattern [?????????] ????_???????? (-h - ?????????)\n" msgid "" "Syntax: gpg-check-pattern [options] patternfile\n" ----------------------------------------------------------------------- Summary of changes: build-aux/speedo.mk | 20 ++- build-aux/speedo/w32/README.txt | 25 ++- build-aux/speedo/w32/pkg-copyright.txt | 289 +++++++++++++++++++++++++++++---- po/ru.po | 22 +-- 4 files changed, 306 insertions(+), 50 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 10:08:24 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 10:08:24 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-72-gab7ac82 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 ab7ac827041b5cd97bbca7a75b0930072dd6611f (commit) from f9f72ffbfa9fd7d1a7a1823697d116d76155b407 (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 ab7ac827041b5cd97bbca7a75b0930072dd6611f Author: Werner Koch Date: Tue Nov 7 10:02:53 2017 +0100 dirmngr: Reduce default LDAP timeout to 15 seconds. * dirmngr/dirmngr.c (DEFAULT_LDAP_TIMEOUT): Change to 15. * dirmngr/dirmngr_ldap.c (DEFAULT_LDAP_TIMEOUT): Ditto. Signed-off-by: Werner Koch diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 0d133c6..5317c21 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -279,7 +279,7 @@ static struct debug_flags_s debug_flags [] = }; #define DEFAULT_MAX_REPLIES 10 -#define DEFAULT_LDAP_TIMEOUT 100 /* arbitrary large timeout */ +#define DEFAULT_LDAP_TIMEOUT 15 /* seconds */ #define DEFAULT_CONNECT_TIMEOUT (15*1000) /* 15 seconds */ #define DEFAULT_CONNECT_QUICK_TIMEOUT ( 2*1000) /* 2 seconds */ diff --git a/dirmngr/dirmngr_ldap.c b/dirmngr/dirmngr_ldap.c index 5a9ae97..5be4e58 100644 --- a/dirmngr/dirmngr_ldap.c +++ b/dirmngr/dirmngr_ldap.c @@ -104,7 +104,7 @@ static void npth_protect (void) { } typedef struct timeval my_ldap_timeval_t; #endif -#define DEFAULT_LDAP_TIMEOUT 100 /* Arbitrary long timeout. */ +#define DEFAULT_LDAP_TIMEOUT 15 /* Arbitrary long timeout. */ /* Constants for the options. */ diff --git a/doc/dirmngr.texi b/doc/dirmngr.texi index eef78a8..9654a0e 100644 --- a/doc/dirmngr.texi +++ b/doc/dirmngr.texi @@ -416,7 +416,7 @@ percent-escaped strings.} @item --ldaptimeout @var{secs} @opindex ldaptimeout Specify the number of seconds to wait for an LDAP query before timing -out. The default is currently 100 seconds. 0 will never timeout. +out. The default are 15 seconds. 0 will never timeout. @item --add-servers ----------------------------------------------------------------------- Summary of changes: dirmngr/dirmngr.c | 2 +- dirmngr/dirmngr_ldap.c | 2 +- doc/dirmngr.texi | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 11:21:28 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 11:21:28 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.1-43-g6530aff 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 6530aff6923b118fad39f9e29c7357370cae650c (commit) via 5bd515005032f9340bd73e4346bbd0aef8518074 (commit) via 30f21f8b0fa6844a9bba3f24dc41b3ac32170109 (commit) from 23bfac6d1a8bd2d0af5a6fac3ba3a6e986d6c9e8 (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 6530aff6923b118fad39f9e29c7357370cae650c Author: Werner Koch Date: Tue Nov 7 11:04:44 2017 +0100 Post release updates. -- diff --git a/NEWS b/NEWS index 0ffff2f..ce6c5d7 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Noteworthy changes in version 2.2.3 (unreleased) +------------------------------------------------ + + Noteworthy changes in version 2.2.2 (2017-11-07) ------------------------------------------------ diff --git a/configure.ac b/configure.ac index dc1fc1a..227b57f 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], [2]) -m4_define([mym4_micro], [2]) +m4_define([mym4_micro], [3]) # 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 5bd515005032f9340bd73e4346bbd0aef8518074 Author: Werner Koch Date: Tue Nov 7 10:23:01 2017 +0100 Release 2.2.2 Signed-off-by: Werner Koch diff --git a/AUTHORS b/AUTHORS index 99bb0e2..d27dfb6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -38,182 +38,15 @@ List of Copyright holders Authors with a FSF copyright assignment ======================================= -Ales Nyakhaychyk Translations [be] - -Andrey Jivsov Assigns past and future changes for ECC. - (g10/ecdh.c. other changes to support ECC) - -Ben Kibbey Assigns past and future changes. - -Birger Langkjer Translations [da] - -Maxim Britov Translations [ru] - -Daniel Resare Translations [sv] -Per Tunedal Translations [sv] -Daniel Nylander Translations [sv] - -Daiki Ueno Assigns Past and Future Changes. - (changed:passphrase.c and related code) - -David Shaw Assigns past and future changes. - (all in keyserver/, - a lot of changes in g10/ see the ChangeLog, - bug fixes here and there) - -Dokianakis Theofanis Translations [el] - -Edmund GRIMLEY EVANS Translations [eo] - -Florian Weimer Assigns past and future changes - (changed:g10/parse-packet.c, include/iobuf.h, util/iobuf.c) - -g10 Code GmbH Assigns past and future changes - (all work since 2001 as indicated by mail addresses in ChangeLogs) - -Ga?l Qu?ri Translations [fr] - (fixed a lot of typos) - -Gregory Steuck Translations [ru] - -Nagy Ferenc L?szl? Translations [hu] - -Ivo Timmermans Translations [nl] - -Jacobo Tarri'o Barreiro Translations [gl] - -Janusz Aleksander Urbanowicz Translations [pl] -Jakub Bogusz Translations [pl] - -Jedi Lin Translations [zh-tw] - -Jouni Hiltunen Translations [fi] -Tommi Vainikainen Translations [fi] - -Laurentiu Buzdugan Translations [ro] - -Magda Procha'zkova' Translations [cs] - -Michael Roth Assigns changes. - (wrote cipher/des.c., changes and bug fixes all over the place) - -Michal Majer Translations [sk] - -Marco d'Itri Translations [it] - -Marcus Brinkmann - (gpgconf and fixes all over the place) - -Matthew Skala Disclaimer - (wrote cipher/twofish.c) - -Moritz Schulte - (ssh support gpg-agent) - -Niklas Hernaeus Disclaimer - (weak key patches) - -Nilgun Belma Buguner Translations [tr] - -Nils Ellmenreich - Assigns past and future changes - (configure.in, cipher/rndlinux.c, FAQ) - -Paul Eggert - (configuration macros for LFS) - -Pavel I. Shajdo Translations [ru] - (man pages) - -Pedro Morais Translations [pt_PT] - -R?mi Guyomarch Assigns past and future changes. - (g10/compress.c, g10/encr-data.c, - g10/free-packet.c, g10/mdfilter.c, g10/plaintext.c, util/iobuf.c) - -Stefan Bellon Assigns past and future changes. - (All patches to support RISC OS) - -Timo Schulz Assigns past and future changes. - (util/w32reg.c, g10/passphrase.c, g10/hkp.c) - -Tedi Heriyanto Translations [id] - -Thiago Jung Bauermann Translations [pt_BR] -Rafael Caetano dos Santos Translations [pt_BR] - -Toomas Soome Translations [et] - -Urko Lusa Translations [es_ES] - -Walter Koch Translations [de] - -Werner Koch Assigns GNU Privacy Guard and future changes. - (started the whole thing, wrote the S/MIME extensions, the - smartcard daemon and the gpg-agent) - -Yosiaki IIDA Translations [ja] - -Yuri Chornoivan, yurchor at ukr dot net: Translations [uk] - -Yutaka Niibe Assigns Past and Future Changes - (scd/) +The list of authors who signed a FSF copyright assignment is kept in +the GIT master branch's copy of this file. Authors with a DCO ================== -Andre Heinecke -2014-09-19:4525694.FcpLvWDUFT at esus: - -Andreas Schwier -2014-07-22:53CED1D8.1010306 at cardcontact.de: - -Christian Aistleitner -2013-05-26:20130626112332.GA2228 at quelltextlich.at: - -Damien Goutte-Gattat -2015-01-17:54BA49AA.2040708 at incenp.org: - -Daniel Kahn Gillmor -2014-09-24:87oau6w9q7.fsf at alice.fifthhorseman.net: - -Hans of Guardian -2013-06-26:D84473D7-F3F7-43D5-A9CE-16580B88D574 at guardianproject.info: - -Ineiev -2017-05-09:20170509121611.GH25850 at gnu.org: - -Jonas Borgstr?m -2013-08-29:521F1E7A.5080602 at borgstrom.se: - -Joshua Rogers -2014-12-22:5497FE75.7010503 at internot.info: - -Kyle Butt -2013-05-29:CAAODAYLbCtqOG6msLLL0UTdASKWT6u2ptxsgUQ1JpusBESBoNQ at mail.gmail.com: - -Stefan Tomanek -2014-01-30:20140129234449.GY30808 at zirkel.wertarbyte.de: - -Tobias Mueller -2016-11-23:1479937342.11180.3.camel at cryptobitch.de: - -Werner Koch -2013-03-29:87620ahchj.fsf at vigenere.g10code.de: - -William L. Thomson Jr. -2017-05-23:assp.0316398ca8.20170523093623.00a17d03 at o-sinc.com: - -Yann E. MORIN -2016-07-10:20160710093202.GA3688 at free.fr: - -Arnaud Fontaine -2016-10-17:580484F4.8040806 at ssi.gouv.fr: - -Phil Pennock -Phil Pennock -2017-01-19:20170119061225.GA26207 at breadbox.private.spodhuis.org: +The list of authors who signed the Developer's Certificate of Origin +is kept in the GIT master branch's copy of this file. Other authors diff --git a/NEWS b/NEWS index 2dd4e53..0ffff2f 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,45 @@ -Noteworthy changes in version 2.2.2 (unreleased) +Noteworthy changes in version 2.2.2 (2017-11-07) ------------------------------------------------ + * gpg: Avoid duplicate key imports by concurrently running gpg + processes. [#3446] + + * gpg: Fix creating on-disk subkey with on-card primary key. [#3280] + + * gpg: Fix validity retrieval for multiple keyrings. [Debian#878812] + + * gpg: Fix --dry-run and import option show-only for secret keys. + + * gpg: Print "sec" or "sbb" for secret keys with import option + import-show. [#3431] + + * gpg: Make import less verbose. [#3397] + + * gpg: Add alias "Key-Grip" for parameter "Keygrip" and new + parameter "Subkey-Grip" to unattended key generation. [#3478] + + * gpg: Improve "factory-reset" command for OpenPGP cards. [#3286] + + * gpg: Ease switching Gnuk tokens into ECC mode by using the magic + keysize value 25519. + + * gpgsm: Fix --with-colon listing in crt records for fields > 12. + + * gpgsm: Do not expect X.509 keyids to be unique. [#1644] + + * agent: Fix stucked Pinentry when using --max-passphrase-days. [#3190] + + * agent: New option --s2k-count. [#3276 (workaround)] + + * dirmngr: Do not follow https-to-http redirects. [#3436] + + * dirmngr: Reduce default LDAP timeout from 100 to 15 seconds. [#3487] + + * gpgconf: Ignore non-installed components for commands + --apply-profile and --apply-defaults. [#3313] + + * Add configure option --enable-werror. [#2423] + Noteworthy changes in version 2.2.1 (2017-09-19) ------------------------------------------------ @@ -23,6 +62,8 @@ Noteworthy changes in version 2.2.1 (2017-09-19) certificates are configured. If build with GNUTLS, this was already the case. + See-also: gnupg-announce/2017q3/000415.html + Noteworthy changes in version 2.2.0 (2017-08-28) ------------------------------------------------ diff --git a/README b/README index 6cd4ddb..dd66dab 100644 --- a/README +++ b/README @@ -26,8 +26,7 @@ Note that the 2.0 series of GnuPG will reach end-of-life on 2017-12-31. It is not possible to install a 2.2.x version along - with any 2.0.x version. However, it is possible to install GnuPG - 1.4 along with any 2.x version. + with any 2.0.x version. * BUILD INSTRUCTIONS commit 30f21f8b0fa6844a9bba3f24dc41b3ac32170109 Author: Werner Koch Date: Tue Nov 7 10:02:53 2017 +0100 dirmngr: Reduce default LDAP timeout to 15 seconds. * dirmngr/dirmngr.c (DEFAULT_LDAP_TIMEOUT): Change to 15. * dirmngr/dirmngr_ldap.c (DEFAULT_LDAP_TIMEOUT): Ditto. Signed-off-by: Werner Koch (cherry picked from commit ab7ac827041b5cd97bbca7a75b0930072dd6611f) GnuPG-bug-id: 3487 diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 0d133c6..5317c21 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -279,7 +279,7 @@ static struct debug_flags_s debug_flags [] = }; #define DEFAULT_MAX_REPLIES 10 -#define DEFAULT_LDAP_TIMEOUT 100 /* arbitrary large timeout */ +#define DEFAULT_LDAP_TIMEOUT 15 /* seconds */ #define DEFAULT_CONNECT_TIMEOUT (15*1000) /* 15 seconds */ #define DEFAULT_CONNECT_QUICK_TIMEOUT ( 2*1000) /* 2 seconds */ diff --git a/dirmngr/dirmngr_ldap.c b/dirmngr/dirmngr_ldap.c index 5a9ae97..5be4e58 100644 --- a/dirmngr/dirmngr_ldap.c +++ b/dirmngr/dirmngr_ldap.c @@ -104,7 +104,7 @@ static void npth_protect (void) { } typedef struct timeval my_ldap_timeval_t; #endif -#define DEFAULT_LDAP_TIMEOUT 100 /* Arbitrary long timeout. */ +#define DEFAULT_LDAP_TIMEOUT 15 /* Arbitrary long timeout. */ /* Constants for the options. */ diff --git a/doc/dirmngr.texi b/doc/dirmngr.texi index eef78a8..9654a0e 100644 --- a/doc/dirmngr.texi +++ b/doc/dirmngr.texi @@ -416,7 +416,7 @@ percent-escaped strings.} @item --ldaptimeout @var{secs} @opindex ldaptimeout Specify the number of seconds to wait for an LDAP query before timing -out. The default is currently 100 seconds. 0 will never timeout. +out. The default are 15 seconds. 0 will never timeout. @item --add-servers ----------------------------------------------------------------------- Summary of changes: AUTHORS | 175 ++----------------------------------------------- NEWS | 47 ++++++++++++- README | 3 +- configure.ac | 2 +- dirmngr/dirmngr.c | 2 +- dirmngr/dirmngr_ldap.c | 2 +- doc/dirmngr.texi | 2 +- 7 files changed, 55 insertions(+), 178 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 11:24:15 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 11:24:15 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-73-g68284e1 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 68284e1509490a68adcc6019a5bf8fb3674d3807 (commit) from ab7ac827041b5cd97bbca7a75b0930072dd6611f (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 68284e1509490a68adcc6019a5bf8fb3674d3807 Author: Werner Koch Date: Tue Nov 7 11:20:00 2017 +0100 doc: Include NEWS from the 2.2.2 release -- diff --git a/NEWS b/NEWS index 6cf076d..79f44c5 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,47 @@ Noteworthy changes in version 2.3.0 (unreleased) ------------------------------------------------ + Changes also found in 2.2.2: + + * gpg: Avoid duplicate key imports by concurrently running gpg + processes. [#3446] + + * gpg: Fix creating on-disk subkey with on-card primary key. [#3280] + + * gpg: Fix validity retrieval for multiple keyrings. [Debian#878812] + + * gpg: Fix --dry-run and import option show-only for secret keys. + + * gpg: Print "sec" or "sbb" for secret keys with import option + import-show. [#3431] + + * gpg: Make import less verbose. [#3397] + + * gpg: Add alias "Key-Grip" for parameter "Keygrip" and new + parameter "Subkey-Grip" to unattended key generation. [#3478] + + * gpg: Improve "factory-reset" command for OpenPGP cards. [#3286] + + * gpg: Ease switching Gnuk tokens into ECC mode by using the magic + keysize value 25519. + + * gpgsm: Fix --with-colon listing in crt records for fields > 12. + + * gpgsm: Do not expect X.509 keyids to be unique. [#1644] + + * agent: Fix stucked Pinentry when using --max-passphrase-days. [#3190] + + * agent: New option --s2k-count. [#3276 (workaround)] + + * dirmngr: Do not follow https-to-http redirects. [#3436] + + * dirmngr: Reduce default LDAP timeout from 100 to 15 seconds. [#3487] + + * gpgconf: Ignore non-installed components for commands + --apply-profile and --apply-defaults. [#3313] + + * Add configure option --enable-werror. [#2423] + Changes also found in 2.2.1: * gpg: Fix formatting of the user id in batch mode key generation @@ -24,6 +65,7 @@ Noteworthy changes in version 2.3.0 (unreleased) Release dates of 2.2.x versions: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Version 2.2.1 (2017-09-19) + Version 2.2.2 (2017-11-07) Noteworthy changes in version 2.2.0 (2017-08-28) ----------------------------------------------------------------------- Summary of changes: NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 11:28:17 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 11:28:17 +0100 Subject: [git] gnupg-doc - branch, master, updated. b556dad0c74dbd79c66cb0f623bd8453fe3d7bae 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 b556dad0c74dbd79c66cb0f623bd8453fe3d7bae (commit) from 075b9032092e903a31374c20d9d6184083c0f175 (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 b556dad0c74dbd79c66cb0f623bd8453fe3d7bae Author: Werner Koch Date: Tue Nov 7 11:23:45 2017 +0100 swdb: Release of gnupg 2.2.2 diff --git a/web/swdb.mac b/web/swdb.mac index 50e73f0..0615fde 100644 --- a/web/swdb.mac +++ b/web/swdb.mac @@ -10,32 +10,32 @@ # # GnuPG-2.2 # -#+macro: gnupg22_ver 2.2.1 -#+macro: gnupg22_date 2017-09-19 -#+macro: gnupg22_size 6384k -#+macro: gnupg22_sha1 5455373fd7208b787f319027de2464721cdd4413 -#+macro: gnupg22_sha2 34d70cd65b9c95f3f2f90a9f5c1e0b6a0fe039a8d685e2d66d69c33d1cbf62fb +#+macro: gnupg22_ver 2.2.2 +#+macro: gnupg22_date 2017-11-07 +#+macro: gnupg22_size 6393k +#+macro: gnupg22_sha1 efa00fc20295b1cafe467359107ea170258870e2 +#+macro: gnupg22_sha2 bfb62c7412ceb3b9422c6c7134a34ff01a560f98eb981c2d96829c1517c08197 #+macro: gnupg22_branch STABLE-BRANCH-2-2 -#+macro: gnupg22_w32_ver 2.2.1_20170919 -#+macro: gnupg22_w32_date 2017-09-19 -#+macro: gnupg22_w32_size 3799k -#+macro: gnupg22_w32_sha1 bcf1905655e52e2eec794bcbba72485f7b9ed2d3 -#+macro: gnupg22_w32_sha2 a8fa4ef2168461310b2350b446f219c05003e3fc29f2901bdd188f7fae9a4cbd +#+macro: gnupg22_w32_ver 2.2.2_20171107 +#+macro: gnupg22_w32_date 2017-11-07 +#+macro: gnupg22_w32_size 3806k +#+macro: gnupg22_w32_sha1 19224023f5a7750743d042b0bfbd5e44fbc9aeb2 +#+macro: gnupg22_w32_sha2 846477967a8cb934438ecbb6c8032c19e652c1d31d772fe02e9e40555e2f68ea # temporary keep it as "gnupg21". In the future we will use the name of # the stable branch even for the development versions. -#+macro: gnupg21_ver 2.2.1 -#+macro: gnupg21_date 2017-09-19 -#+macro: gnupg21_size 6384k -#+macro: gnupg21_sha1 5455373fd7208b787f319027de2464721cdd4413 -#+macro: gnupg21_sha2 34d70cd65b9c95f3f2f90a9f5c1e0b6a0fe039a8d685e2d66d69c33d1cbf62fb +#+macro: gnupg21_ver 2.2.2 +#+macro: gnupg21_date 2017-11-07 +#+macro: gnupg21_size 6393k +#+macro: gnupg21_sha1 efa00fc20295b1cafe467359107ea170258870e2 +#+macro: gnupg21_sha2 bfb62c7412ceb3b9422c6c7134a34ff01a560f98eb981c2d96829c1517c08197 #+macro: gnupg21_branch STABLE-BRANCH-2-2 -#+macro: gnupg21_w32_ver 2.2.1_20170919 -#+macro: gnupg21_w32_date 2017-09-19 -#+macro: gnupg21_w32_size 3799k -#+macro: gnupg21_w32_sha1 bcf1905655e52e2eec794bcbba72485f7b9ed2d3 -#+macro: gnupg21_w32_sha2 a8fa4ef2168461310b2350b446f219c05003e3fc29f2901bdd188f7fae9a4cbd +#+macro: gnupg21_w32_ver 2.2.2_20171107 +#+macro: gnupg21_w32_date 2017-11-07 +#+macro: gnupg21_w32_size 3806k +#+macro: gnupg21_w32_sha1 19224023f5a7750743d042b0bfbd5e44fbc9aeb2 +#+macro: gnupg21_w32_sha2 846477967a8cb934438ecbb6c8032c19e652c1d31d772fe02e9e40555e2f68ea # ----------------------------------------------------------------------- Summary of changes: web/swdb.mac | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 12:28:53 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 12:28:53 +0100 Subject: [git] gnupg-doc - branch, master, updated. 926243fc33c16d3dbf86eb04830ee5c09a95d7a1 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 926243fc33c16d3dbf86eb04830ee5c09a95d7a1 (commit) from b556dad0c74dbd79c66cb0f623bd8453fe3d7bae (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 926243fc33c16d3dbf86eb04830ee5c09a95d7a1 Author: Werner Koch Date: Tue Nov 7 12:24:42 2017 +0100 web: Release announcement for GnuPG 2.2.2. diff --git a/web/index.org b/web/index.org index f65a473..4af2bf2 100644 --- a/web/index.org +++ b/web/index.org @@ -65,6 +65,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.2.2 released (2017-11-07) + +We are pleased to announce the availability of GnuPG version 2.2.2. +This is a maintenance release fixing a few bugs. {[[https://lists.gnupg.org/pipermail/gnupg-announce/2017q4/000416.html][more]]} + ** GnuPG 2.2.1 released (2017-09-19) We are pleased to announce the availability of GnuPG version 2.2.1. ----------------------------------------------------------------------- Summary of changes: web/index.org | 5 +++++ 1 file changed, 5 insertions(+) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 7 12:37:04 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 07 Nov 2017 12:37:04 +0100 Subject: [git] gnupg-doc - branch, master, updated. 05d2896101decb3aeb28aa5d1f45e9e9efeb84ac 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 05d2896101decb3aeb28aa5d1f45e9e9efeb84ac (commit) from 926243fc33c16d3dbf86eb04830ee5c09a95d7a1 (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 05d2896101decb3aeb28aa5d1f45e9e9efeb84ac Author: Werner Koch Date: Tue Nov 7 12:32:54 2017 +0100 verein: Add new member diff --git a/web/verein/members.org b/web/verein/members.org index 3c1297f..91da777 100644 --- a/web/verein/members.org +++ b/web/verein/members.org @@ -18,6 +18,7 @@ active in development or in evangelizing end-to-end encryption. - Justus Winter - Kai Michaelis - Kristian Fiskerstrand + - Maurice Kemmann - Neal Walfied - Phil Pennock - Werner Koch ----------------------------------------------------------------------- Summary of changes: web/verein/members.org | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 12:17:48 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 08 Nov 2017 12:17:48 +0100 Subject: [git] gnupg-doc - branch, master, updated. 084ff18fc464afaf15b15fa7618736bfebb18144 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 084ff18fc464afaf15b15fa7618736bfebb18144 (commit) from 05d2896101decb3aeb28aa5d1f45e9e9efeb84ac (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 084ff18fc464afaf15b15fa7618736bfebb18144 Author: Werner Koch Date: Wed Nov 8 12:13:35 2017 +0100 web: Add 4 new icons. These icons are from the Tango icon theme: Debian downlaode them from http://tango.freedesktop.org/releases/ The COPYING file of the tarball states the following: The icons in this repository are herefore released into the Public Domain. diff --git a/web/share/document.png b/web/share/document.png new file mode 100644 index 0000000..c9baeda Binary files /dev/null and b/web/share/document.png differ diff --git a/web/share/folder.png b/web/share/folder.png new file mode 100644 index 0000000..01f45b8 Binary files /dev/null and b/web/share/folder.png differ diff --git a/web/share/tar.png b/web/share/tar.png new file mode 100644 index 0000000..dc76287 Binary files /dev/null and b/web/share/tar.png differ diff --git a/web/share/up.png b/web/share/up.png new file mode 100644 index 0000000..b0a0cd7 Binary files /dev/null and b/web/share/up.png differ ----------------------------------------------------------------------- Summary of changes: web/share/document.png | Bin 0 -> 654 bytes web/share/folder.png | Bin 0 -> 848 bytes web/share/tar.png | Bin 0 -> 695 bytes web/share/up.png | Bin 0 -> 877 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 web/share/document.png create mode 100644 web/share/folder.png create mode 100644 web/share/tar.png create mode 100644 web/share/up.png hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 13:39:19 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 08 Nov 2017 13:39:19 +0100 Subject: [git] gnupg-doc - branch, master, updated. 07cf6d628c4f9036b1579af439a54d944fb15488 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 07cf6d628c4f9036b1579af439a54d944fb15488 (commit) from 084ff18fc464afaf15b15fa7618736bfebb18144 (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 07cf6d628c4f9036b1579af439a54d944fb15488 Author: Werner Koch Date: Wed Nov 8 13:34:48 2017 +0100 tools: First take on a new FTP indexer diff --git a/tools/ftp-indexer.c b/tools/ftp-indexer.c new file mode 100644 index 0000000..5457f3d --- /dev/null +++ b/tools/ftp-indexer.c @@ -0,0 +1,1169 @@ +/* ftp-indexer.c - Create an HTML index file for an FTP directory + * Copyright (C) 2017 g10 Code GmbH + * + * 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 3 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 . + */ + +/* How to use: + * + **/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define PGMNAME "ftp-indexer" + + +#define DIM(v) (sizeof(v)/sizeof((v)[0])) +#define DIMof(type,member) DIM(((type *)0)->member) +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5) +#define ATTR_PRINTF(a,b) __attribute__ ((format (printf,a,b))) +#define ATTR_NR_PRINTF(a,b) __attribute__ ((noreturn,format (printf,a,b))) +#else +#define ATTR_PRINTF(a,b) +#define ATTR_NR_PRINTF(a,b) +#endif + +#define digitp(a) ((a) >= '0' && (a) <= '9') +#define VALID_URI_CHARS "abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + "01234567890@" \ + "!\"#$%&'()*+,-./:;<=>?[\\]^_{|}~" + + +/* A simple object to keep strings in a list. */ +struct strlist_s +{ + struct strlist_s *next; + char d[1]; +}; +typedef struct strlist_s *strlist_t; + + +/* An object to collect information about files. */ +struct finfo_s +{ + struct finfo_s *next; + unsigned int is_dir:1; + unsigned int is_reg:1; + time_t mtime; + unsigned long long size; + char name[1]; +}; +typedef struct finfo_s *finfo_t; + + +static int opt_verbose; +static int opt_debug; +static int opt_reverse; +static int opt_reverse_ver; +static int opt_files_first; +static int opt_html; +static int opt_index; +static int opt_gpgweb; +static int opt_readme; +static strlist_t opt_exclude; + +static void die (const char *format, ...) ATTR_NR_PRINTF(1,2); +static void err (const char *format, ...) ATTR_PRINTF(1,2); +static void inf (const char *format, ...) ATTR_PRINTF(1,2); + + + +static void +die (const char *fmt, ...) +{ + va_list arg_ptr; + + va_start (arg_ptr, fmt); + fputs (PGMNAME": ", stderr); + vfprintf (stderr, fmt, arg_ptr); + va_end (arg_ptr); + exit (1); +} + + +static void +err (const char *fmt, ...) +{ + va_list arg_ptr; + + va_start (arg_ptr, fmt); + fputs (PGMNAME": ", stderr); + vfprintf (stderr, fmt, arg_ptr); + va_end (arg_ptr); +} + + +static void +inf (const char *fmt, ...) +{ + va_list arg_ptr; + + if (!opt_verbose) + return; + + va_start (arg_ptr, fmt); + fputs (PGMNAME": ", stderr); + vfprintf (stderr, fmt, arg_ptr); + va_end (arg_ptr); +} + + +static void * +xmalloc (size_t n) +{ + void *p = malloc (n); + if (!p) + die ("out of core\n"); + return p; +} + + +static void * +xcalloc (size_t n, size_t k) +{ + void *p = calloc (n, k); + if (!p) + die ("out of core\n"); + return p; +} + + +static char * +xstrdup (const char *string) +{ + char *buf = xmalloc (strlen (string)); + strcpy (buf, string); + return buf; +} + + +static inline char * +my_stpcpy (char *a, const char *b) +{ + while (*b) + *a++ = *b++; + *a = 0; + + return (char*)a; +} + + +/* If SPECIAL is NULL this function escapes in forms mode. */ +static size_t +escape_data (char *buffer, const void *data, size_t datalen, + const char *special) +{ + int forms = !special; + const unsigned char *s; + size_t n = 0; + + if (forms) + special = "%;?&="; + + for (s = data; datalen; s++, datalen--) + { + if (forms && *s == ' ') + { + if (buffer) + *buffer++ = '+'; + n++; + } + else if (forms && *s == '\n') + { + if (buffer) + memcpy (buffer, "%0D%0A", 6); + n += 6; + } + else if (forms && *s == '\r' && datalen > 1 && s[1] == '\n') + { + if (buffer) + memcpy (buffer, "%0D%0A", 6); + n += 6; + s++; + datalen--; + } + else if (strchr (VALID_URI_CHARS, *s) && !strchr (special, *s)) + { + if (buffer) + *(unsigned char*)buffer++ = *s; + n++; + } + else + { + if (buffer) + { + snprintf (buffer, 4, "%%%02X", *s); + buffer += 3; + } + n += 3; + } + } + return n; +} + + +static int +insert_escapes (char *buffer, const char *string, + const char *special) +{ + return escape_data (buffer, string, strlen (string), special); +} + + +/* Allocate a new string from STRING using standard HTTP escaping as + * well as escaping of characters given in SPECIALS. A common pattern + * for SPECIALS is "%;?&=". However it depends on the needs, for + * example "+" and "/: often needs to be escaped too. Returns NULL on + * failure and sets ERRNO. If SPECIAL is NULL a dedicated forms + * encoding mode is used. */ +static char * +http_escape_string (const char *string, const char *specials) +{ + int n; + char *buf; + + n = insert_escapes (NULL, string, specials); + buf = xmalloc (n+1); + insert_escapes (buf, string, specials); + buf[n] = 0; + return buf; +} + + +/* Same as http_escape_string but with an explict length. */ +static char * +http_escape_buffer (const char *string, size_t length, const char *specials) +{ + int n; + char *buf; + + n = escape_data (NULL, string, length, specials); + buf = xmalloc (n+1); + escape_data (buf, string, length, specials); + buf[n] = 0; + return buf; +} + + +/* Percent-escape the string STR by replacing colons with '%3a'. */ +static char * +do_percent_escape (const char *str) +{ + int i, j; + char *ptr; + + for (i=j=0; str[i]; i++) + if (str[i] == ':' || str[i] == '%' || str[i] == '\n') + j++; + ptr = xmalloc (i + 2 * j + 1); + i = 0; + while (*str) + { + if (*str == ':') + { + ptr[i++] = '%'; + ptr[i++] = '3'; + ptr[i++] = 'a'; + } + else if (*str == '%') + { + ptr[i++] = '%'; + ptr[i++] = '2'; + ptr[i++] = '5'; + } + else if (*str == '\n') + { + /* The newline is problematic in a line-based format. */ + ptr[i++] = '%'; + ptr[i++] = '0'; + ptr[i++] = 'a'; + } + else + ptr[i++] = *str; + str++; + } + ptr[i] = '\0'; + + return ptr; +} + + +/* Simple percent escape for colon based listings. Returns a + * statically allocated buffer. */ +static char * +percent_escape (const char *str) +{ + static char *buffer; + + free (buffer); + buffer = do_percent_escape (str); + return buffer; +} + + +/* Escape STRING at a max length of N for use in HTML. Returns a + * statically allocated buffer. */ +static const char * +html_escape_n (const char *string, size_t length) +{ + static char *buffer; + char *p; + + /* The escaped string may be up to 6 times of STRING due to the + expansion of '\"' to """. */ + free (buffer); + p = buffer = xmalloc (6 * length + 1); + for (; *string && length; string++, length--) + { + switch (*string) + { + case '\"': p = my_stpcpy (p, """); break; + case '&': p = my_stpcpy (p, "&"); break; + case '<': p = my_stpcpy (p, "<"); break; + case '>': p = my_stpcpy (p, ">"); break; + default: *p++ = *string; break; + } + } + *p = 0; + return buffer; +} + + +/* Escape STRING for use in HTML. Returns a statically allocated + * buffer. noet that this buffer is shared with the buffer returned + * by html_escape_n. */ +static const char * +html_escape (const char *string) +{ + return html_escape_n (string, strlen (string)); +} + + +/* Escape STRING but insert for one https link. */ +static const char * +html_escape_detect_link (const char *string) +{ + const char *start, *s; + char *part1, *url, *part2, *part3; + size_t urllen; + char *buffer, *p; + + start = strstr (string, "https://"); + if (!start || !start[8] || start[8] == ' ' || start[8] == '\t') + return html_escape (string); + if (!(start == string || start[-1] == ' ' || start[-1] == '\t' + || start[-1] == '<')) + return html_escape (string); + + urllen = 0; + for (s = start; *s && *s != ' ' && *s != '\t' && *s != '>'; s++) + urllen++; + + part1 = xstrdup (html_escape_n (string, start-string)); + url = http_escape_buffer (start, urllen, "\""); + part2 = xstrdup (html_escape_n (start, urllen)); + part3 = xstrdup (html_escape (start + urllen)); + + buffer = xmalloc (strlen (part1) + strlen (url) + + strlen (part2) + strlen (part3) + 100); + p = my_stpcpy (buffer, part1); + p = my_stpcpy (p, ""); + p = my_stpcpy (p, part2); + p = my_stpcpy (p, ""); + my_stpcpy (p, part3); + + free (part1); + free (url); + free (part2); + free (part3); + return buffer; +} + + + +/* Escape STRING for use as a HREF attribute. Returns a statically + * allocated buffer. */ +static const char * +html_escape_href (const char *string) +{ + static char *buffer; + + free (buffer); + buffer = http_escape_string (string, "\""); + return buffer; +} + + +/* Format T and return a statically allocated buffer. */ +static const char * +format_time (time_t t) +{ + static char buffer[80]; + struct tm *tp; + + tp = gmtime (&t); + if (!tp) + *buffer = 0; + else if (opt_html) + snprintf (buffer, sizeof buffer, + "" + "%04d-%02d-%02d", + 1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday, + tp->tm_hour, tp->tm_min, tp->tm_sec, + 1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday); + else + snprintf (buffer, sizeof buffer, "%04d%02d%02dT%02d%02d%02dZ", + 1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday, + tp->tm_hour, tp->tm_min, tp->tm_sec); + return buffer; +} + + +/* Format SIZE and return a statically allocated buffer. */ +static const char * +format_size (unsigned long long size) +{ + static char buffer[80]; + const char *suffix; + unsigned long long val = size; + + if (size < 1024) + { + val = size; + suffix = ""; + } + else if (size < 1024 * 1024) + { + val = size / 1024; + suffix = "k"; + } + else if (size < 1024 * 1024 * 1024) + { + val = size / (1024 * 1024); + suffix = "M"; + } + else + { + val = size / (1024 * 1024 * 1024); + suffix = "G"; + } + + if (opt_html) + snprintf (buffer, sizeof buffer, + "%llu%s", + size, size == 1? "":"s", + val, suffix); + else + snprintf (buffer, sizeof buffer, "%llu%s", val, suffix); + + return buffer; +} + + +/* This function parses the first portion of the version number S and + * stores it at NUMBER. On success, this function returns a pointer + * into S starting with the first character, which is not part of the + * initial number portion; on failure, NULL is returned. */ +static const char* +parse_version_number (const char *s, int *number) +{ + int val = 0; + + if (*s == '0' && digitp (s[1])) + return NULL; /* Leading zeros are not allowed. */ + for (; digitp (*s); s++) + { + val *= 10; + val += *s - '0'; + } + *number = val; + return val < 0 ? NULL : s; +} + + +/* This function breaks up the complete string-representation of the + * version number S, which is of the following struture: ... The major, + * minor and micro number components will be stored in *MAJOR, *MINOR + * and *MICRO. + * + * On success, the last component, the patch level, will be returned; + * in failure, NULL will be returned. */ +static const char * +parse_version_string (const char *s, int *major, int *minor, int *micro) +{ + s = parse_version_number (s, major); + if (!s || *s != '.') + return NULL; + s++; + s = parse_version_number (s, minor); + if (!s || *s != '.') + return NULL; + s++; + s = parse_version_number (s, micro); + if (!s) + return NULL; + return s; /* patchlevel */ +} + + +/* Compare function for version strings. */ +static int +compare_version_strings (const char *a, const char *b) +{ + int a_major, a_minor, a_micro; + int b_major, b_minor, b_micro; + const char *a_plvl, *b_plvl; + + a_plvl = parse_version_string (a, &a_major, &a_minor, &a_micro); + if (!a_plvl) + a_major = a_minor = a_micro = 0; + + b_plvl = parse_version_string (b, &b_major, &b_minor, &b_micro); + if (!b_plvl) + b_major = b_minor = b_micro = 0; + + if (!a_plvl && !b_plvl) + return -1; /* Put invalid strings at the end. */ + if (a_plvl && !b_plvl) + return 1; + if (!a_plvl && b_plvl) + return -1; + + if (a_major > b_major) + return 1; + if (a_major < b_major) + return -1; + + if (a_minor > b_minor) + return 1; + if (a_minor < b_minor) + return -1; + + if (a_micro > b_micro) + return 1; + if (a_micro < b_micro) + return -1; + + if (opt_reverse_ver && !opt_reverse) + { + /* We may only compare up to the next dot and the swicth back to + * regular order. */ + for (; *a_plvl && *b_plvl; a_plvl++, b_plvl++) + { + if (*a_plvl == '.' && *b_plvl == '.') + return 0 - strcmp (a_plvl, b_plvl); + else if (*a_plvl == '.') + return 1; /* B is larger but we need to reverse. */ + else if (*b_plvl == '.') + return -1; /* A is larger but we need to reverse. */ + else if (*a_plvl != *b_plvl) + break; + } + if (*a_plvl == *b_plvl) + return 0; + else + return (*(signed char *)b_plvl - *(signed char *)a_plvl); + } + else + return strcmp (a_plvl, b_plvl); +} + + +/* If string looks like a file name with a version nuymber, return a + * pointer to the version number part; else return NULL. */ +static const char * +find_version_string (const char *s) +{ + do + { + s = strchr (s, '-'); + if (!s) + return NULL; /* Version string must be prefixed with a dash. */ + s++; + } + while (!digitp (*s)); + + return s; +} + + +/* Sort function for the directory listing. */ +static int +sort_finfo (const void *arg_a, const void *arg_b) +{ + const finfo_t *a = arg_a; + const finfo_t *b = arg_b; + const char *astr, *bstr; + const char *aver, *bver; + + if (opt_reverse) + { + astr = (*b)->name; + bstr = (*a)->name; + } + else + { + astr = (*a)->name; + bstr = (*b)->name; + } + + aver = find_version_string (astr); + bver = aver? find_version_string (bstr) : NULL; + + if (aver && bver + && (aver - astr) == (bver - bstr) + && !memcmp (astr, bstr, (aver - astr))) + { + if (opt_reverse_ver) + return 0 - compare_version_strings (aver, bver); + else + return compare_version_strings (aver, bver); + } + + return strcmp(astr, bstr); +} + + +/* Note: This function assumes that the CWD is the listed directory. */ +static void +print_header (const char *title) +{ + const char *esc_title; + + if (!opt_html) + return; + + esc_title = html_escape (title); + + if (opt_gpgweb) + { + FILE *readme; + char line[256]; + char *p; + int c; + + fputs ("\n" + "\n" + "\n", stdout); + printf("\n" + "ftp.gnupg.org - %s\n", + esc_title); + fputs ("\n" + "\n" + "\n" + "\n", stdout); + + fputs ("\n" + "
\n" + "
" + " " + "
\n", stdout); + + printf("
\n" + "
\n" + "

%s

\n" + "
\n", + esc_title); + + readme = fopen ("README", "r"); + if (opt_readme && (readme = fopen ("README", "r"))) + { + fputs ("
\n", stdout);
+          while (fgets (line, sizeof line, readme))
+            {
+              int no_lf = 0;
+              /* Eat up the rest of an incomplete line.  */
+              if (!*line)
+                no_lf = 1;
+              else if (line[strlen (line)-1] != '\n')
+                {
+                  no_lf = 1;
+                  while ((c = getc (readme)) != EOF && c != '\n')
+                    ;
+                }
+
+              /* Replace empty lines with a leading doc by an empty
+               * line.  These lines are used on FTP servers to avoid
+               * problems with broken FTP cleints.  */
+              if (*line == '.')
+                {
+                  for (p=line+1; (*p == ' ' || *p == '\t' || *p == '\n'); p++)
+                    ;
+                  if (!*p)
+                    {
+                      putchar ('\n');
+                      *line = 0;
+                    }
+                }
+
+              if (*line)
+                fputs (html_escape_detect_link (line), stdout);
+              if (no_lf)
+                putchar ('\n');
+            }
+          fputs ("
\n", stdout); + fclose (readme); + } + fputs ("
\n", stdout); + + } + else + { + printf ("\n" + "\n" + "Index of %s\n" + "\n" + "\n" + "

Index of %s

\n" + "\n", + esc_title, esc_title); + } +} + + +static void +print_footer (void) +{ + if (!opt_html) + return; + + if (opt_gpgweb) + { + fputs ("\n" + "\n" + "
\n", stdout); + fputs ("
\n" + "\n" + "
\n", stdout); + + fputs ("
\n" + "\"Traueranzeige:\n" + "

\n" + "
\n", stdout); + + fputs ("
\n" + "" + "\"CC " + "This web page is Copyright 2017 GnuPG e.V. and" + " licensed under a " + "Creative Commons Attribution-ShareAlike 4.0 International" + " License. See " + "copying for details.\n", stdout); + printf("Page last updated on 2017-xx-xx.\n"); + fputs ("
\n" + "
\n" + "\n" + "\n" + "\n", stdout); + } + else + { + printf ("
\n" + "\n" + "\n"); + } +} + + +/* Print COUNT directories from the array SORTED. */ +static void +print_dirs (finfo_t *sorted, int count, const char *directory) +{ + int idx; + finfo_t fi; + int any = 0; + + for (idx=0; idx < count; idx++) + { + fi = sorted[idx]; + if (!fi->is_dir) + continue; + + if (!any && opt_html) + { + any = 1; + + if (opt_gpgweb) + { + fputs ("

Directories

\n" + "
\n" + "\n", stdout); + + if (strcmp (directory, "/")) + fputs ("" + "\n", stdout); + } + else + { + fputs ("" + "\n", + stdout); + if (strcmp (directory, "/")) + fputs ("\n", stdout); + } + } + + if (opt_gpgweb) + printf ("" + "\n", + html_escape_href (fi->name), html_escape (fi->name)); + else if (opt_html) + printf ("\n", + html_escape_href (fi->name), html_escape (fi->name)); + else + printf ("D %s\n", fi->name); + } + + if (any && opt_gpgweb) + { + fputs ("
" + "Parent Directory
 

Directories

" + "Parent Directory
%s
%s
\n" + "
\n\n", stdout); + } +} + + +/* Print COUNT files from the array SORTED. */ +static void +print_files (finfo_t *sorted, int count) +{ + int idx; + finfo_t fi; + int any = 0; + + for (idx=0; idx < count; idx++) + { + fi = sorted[idx]; + if (!fi->is_reg) + continue; + + if (!any && opt_html) + { + any = 1; + if (opt_gpgweb) + { + fputs ("

Files

\n" + "
\n" + "\n", stdout); + } + else + fputs ("\n", + stdout); + + } + + if (opt_gpgweb) + printf ("" + "" + "\n", + strstr (fi->name, ".sig")? "document": + strstr (fi->name, ".tar")? "tar" : "document", + html_escape_href (fi->name), html_escape (fi->name), + format_time (fi->mtime), format_size (fi->size)); + else if (opt_html) + printf ("" + "\n", + html_escape_href (fi->name), html_escape (fi->name), + format_time (fi->mtime), format_size (fi->size)); + else + printf ("F %s\n", fi->name); + } + + if (any && opt_gpgweb) + { + fputs ("

Files

%s%s%s
%s%s%s
\n" + "
\n\n", stdout); + } +} + + +/* Scan DIRECTORY and print an index. + * FIXME: This does a chdir and does not preserve the old PWD. + * The fix is to build the full filename beofre stat'ing. + */ +static void +scan_directory (const char *directory, const char *title) +{ + DIR *dir; + struct dirent *dentry; + finfo_t fi; + finfo_t finfo = NULL; + finfo_t *sorted; + int count = 0; + int idx; + size_t len; + strlist_t sl; + + dir = opendir (directory); + if (!dir) + { + err ("can't open directory '%s': %s\n", directory, strerror (errno)); + return; + } + + while (errno=0,(dentry = readdir (dir))) + { + if (*dentry->d_name == '.') + continue; /* Skip self, parent, and hidden directories. */ + len = strlen (dentry->d_name); + if (!len) + continue; /* Empty filenames should actually not exist. */ + if (dentry->d_name[len-1] == '~') + continue; /* Skip backup files. */ + for (sl = opt_exclude; sl; sl = sl->next) + if (!strcmp (sl->d, dentry->d_name)) + break; + if (sl) + continue; /* Skip excluded names. */ + fi = xcalloc (1, sizeof *fi + strlen (dentry->d_name)); + strcpy (fi->name, dentry->d_name); + fi->next = finfo; + finfo = fi; + count++; + } + if (errno) + die ("error reading directory '%s': %s\n", directory, strerror (errno)); + closedir (dir); + + sorted = xcalloc (count, sizeof *sorted); + for (fi=finfo, idx=0; fi; fi = fi->next) + sorted[idx++] = fi; + + inf ("directory '%s' has %d files\n", directory, count); + qsort (sorted, count, sizeof *sorted, sort_finfo); + + if (chdir (directory)) + die ("cannot chdir to '%s': %s\n", directory, strerror (errno)); + + for (idx=0; idx < count; idx++) + { + struct stat sb; + + fi = sorted[idx]; + if (stat (fi->name, &sb)) + { + err ("cannot stat '%s': %s\n", fi->name, strerror (errno)); + continue; + } + + fi->is_dir = !!S_ISDIR(sb.st_mode); + fi->is_reg = !!S_ISREG(sb.st_mode); + fi->size = fi->is_reg? sb.st_size : 0; + fi->mtime = sb.st_mtime; + } + + print_header (title); + if (opt_files_first) + { + print_files (sorted, count); + print_dirs (sorted, count, directory); + } + else + { + print_dirs (sorted, count, directory); + print_files (sorted, count); + } + print_footer (); + + /* We create the index file in the current directory. */ + if (opt_index) + { + FILE *indexfp = fopen (".ftp-index", "w"); + if (!indexfp) + die ("error creating .ftp-index in '%s': %s\n", + directory, strerror (errno)); + + for (idx=0; idx < count; idx++) + { + fi = sorted[idx]; + fprintf (indexfp, "%s:%c:%llu:%lu:\n", + percent_escape (fi->name), + fi->is_dir? 'd': + fi->is_reg? 'r': '?', + fi->size, + (unsigned long)fi->mtime); + } + if (ferror (indexfp)) + die ("error writing .ftp-index in '%s': %s\n", + directory, strerror (errno)); + /* Fixme: Check for close errors. */ + fclose (indexfp); + } + + free (sorted); + while ((fi = finfo)) + { + fi = finfo->next; + free (finfo); + finfo = fi; + } +} + + +int +main (int argc, char **argv) +{ + int last_argc = -1; + strlist_t sl; + + if (argc < 1) + die ("Hey, read up on how to use exec(2)\n"); + argv++; argc--; + + while (argc && last_argc != argc ) + { + last_argc = argc; + if (!strcmp (*argv, "--")) + { + argc--; argv++; + break; + } + else if (!strcmp (*argv, "--help")) + { + fputs ("usage: " PGMNAME " [options] directory [title]\n" + "Print an index for an FTP directory.\n\n" + "Options:\n" + " --verbose verbose diagnostics\n" + " --debug flyswatter\n" + " --reverse reverse sort order\n" + " --reverse-ver reverse only the version number order\n" + " --files-first print files before directories\n" + " --html output HTML\n" + " --gpgweb output HTML as used at gnupg.org\n" + " --readme include README file\n" + " --index create an .ftp-index file\n" + " --exclude NAME ignore file NAME\n" + , stdout); + exit (0); + } + else if (!strcmp (*argv, "--verbose")) + { + opt_verbose++; + argc--; argv++; + } + else if (!strcmp (*argv, "--debug")) + { + opt_debug++; + argc--; argv++; + } + else if (!strcmp (*argv, "--reverse")) + { + opt_reverse = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--reverse-ver")) + { + opt_reverse_ver = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--files-first")) + { + opt_files_first = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--readme")) + { + opt_readme = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--html")) + { + opt_html = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--index")) + { + opt_index = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--gpgweb")) + { + opt_gpgweb = opt_html = 1; + argc--; argv++; + } + else if (!strcmp (*argv, "--exclude")) + { + argc--; argv++; + if (!argc || !**argv) + die ("argument missing for option '%s'\n", argv[-1]); + sl = xmalloc (sizeof *sl + strlen (*argv)); + strcpy (sl->d, *argv); + sl->next = opt_exclude; + opt_exclude = sl; + argc--; argv++; + } + else if (!strncmp (*argv, "--", 2)) + die ("unknown option '%s' (use --help)\n", *argv); + } + + if (argc < 1 || argc > 2) + die ("usage: " PGMNAME " [options] directory [title]\n"); + + + scan_directory (argv[0], argv[1]? argv[1]:argv[0]); + + + return 0; +} + +/* +Local Variables: +compile-command: "cc -Wall -g -o ftp-indexer ftp-indexer.c" +End: +*/ diff --git a/web/share/site.css b/web/share/site.css index b34693f..c075577 100644 --- a/web/share/site.css +++ b/web/share/site.css @@ -485,6 +485,12 @@ pre { overflow: auto; } +pre.ftp-readme { + border: none; + background-color: #ffffff; +} + + /* Classes used by makeinfo (manuals). */ pre.display { ----------------------------------------------------------------------- Summary of changes: tools/ftp-indexer.c | 1169 +++++++++++++++++++++++++++++++++++++++++++++++++++ web/share/site.css | 6 + 2 files changed, 1175 insertions(+) create mode 100644 tools/ftp-indexer.c hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 16:18:30 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 08 Nov 2017 16:18:30 +0100 Subject: [git] gnupg-doc - branch, master, updated. 3d80b1935f07a3c4bc03d4f497fde99ca3c2fed2 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 3d80b1935f07a3c4bc03d4f497fde99ca3c2fed2 (commit) from 07cf6d628c4f9036b1579af439a54d944fb15488 (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 3d80b1935f07a3c4bc03d4f497fde99ca3c2fed2 Author: Werner Koch Date: Wed Nov 8 16:14:16 2017 +0100 tools: Improve the ftp indexer. Also add a link to the bottom menus. diff --git a/tools/ftp-indexer.c b/tools/ftp-indexer.c index 5457f3d..32c6de9 100644 --- a/tools/ftp-indexer.c +++ b/tools/ftp-indexer.c @@ -15,7 +15,67 @@ * along with this program; if not, see . */ -/* How to use: +/* The following script is triggred by a cronjob at ftp.gnupg.org to + * build the index pages. + * +--8<---------------cut here---------------start------------->8--- +#!/bin/sh + +set -e +top=/home/ftp +scratch=/home/ftp/.scratch +cd "$top" + +opt_force=no +if [ "$1" == "--force" ]; then + shift + opt_force=yes +fi + +INDEXER=/usr/local/bin/ftp-indexer +if [ ! -x $INDEXER ]; then + echo "mk-ftp-index.html.sh: Index tool $INDEXER not found - aborting" >&2 + exit 1 +fi +INDEXER_OPTS="--reverse-ver --gpgweb --readme --index $scratch/ftp-index.new" +INDEXER_OPTS="$INDEXER_OPTS --exclude README --exclude index.html" + + +(find . -type d ! -name '\.*' ! -name dev ; echo .) |\ + while read dir rest; do + dir=${dir##./} + if cd "$dir"; then + if [ "$dir" = "." ]; then + desc="/" + extraopt="--exclude dev" + else + desc="$dir/" + extraopt="" + fi + + [ -f $scratch/index.html ] && rm $scratch/index.html + [ -f index.html ] && cat index.html >$scratch/index.html + $INDEXER $INDEXER_OPTS $extraopt . "$desc" >$scratch/index.html.new + if [ $opt_force = no -a -f $scratch/index.html ]; then + grep -v '^$scratch/index.html.x + grep -v '^$scratch/index.html.new.x + if ! cmp -s $scratch/index.html.x $scratch/index.html.new.x ; then + mv $scratch/index.html.new index.html + mv $scratch/ftp-index.new .ftp-index + fi + rm $scratch/index.html + [ -f $scratch/index.html.new ] && rm $scratch/index.html.new + [ -f $scratch/ftp-index.new ] && rm $scratch/ftp-index.new + else + mv $scratch/index.html.new index.html + mv $scratch/ftp-index.new .ftp-index + fi + fi + cd "$top" +done +--8<---------------cut here---------------end--------------->8--- * **/ @@ -33,7 +93,7 @@ #define PGMNAME "ftp-indexer" - +#define VERSION "0.1" #define DIM(v) (sizeof(v)/sizeof((v)[0])) #define DIMof(type,member) DIM(((type *)0)->member) @@ -80,7 +140,7 @@ static int opt_reverse; static int opt_reverse_ver; static int opt_files_first; static int opt_html; -static int opt_index; +static const char *opt_index; static int opt_gpgweb; static int opt_readme; static strlist_t opt_exclude; @@ -421,6 +481,31 @@ html_escape_href (const char *string) /* Format T and return a statically allocated buffer. */ static const char * +format_time_now (int human) +{ + static char buffer[40]; + struct tm *tp; + time_t now; + + time (&now); + tp = gmtime (&now); + if (!tp) + *buffer = 0; + + if (human) + snprintf (buffer, sizeof buffer, "%04d-%02d-%02d", + 1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday); + else + snprintf (buffer, sizeof buffer, "%04d%02d%02dT%02d%02d%02dZ", + 1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday, + tp->tm_hour, tp->tm_min, tp->tm_sec); + + return buffer; +} + + +/* Format T and return a statically allocated buffer. */ +static const char * format_time (time_t t) { static char buffer[80]; @@ -674,14 +759,16 @@ print_header (const char *title) "\n", stdout); printf("\n" - "ftp.gnupg.org - %s\n", + "ftp.gnupg.org:%s\n", esc_title); fputs ("\n" + " content=\"text/html; charset=UTF-8\"/>\n", stdout); + printf("\n", format_time_now (0)); + fputs ("\n" "\n" + " content=\"width=device-width, initial-scale=1\"/>\n" "\n" + " type=\"text/css\"/>\n" "\n", stdout); fputs ("\n" @@ -693,7 +780,7 @@ print_header (const char *title) printf("
\n" "
\n" - "

%s

\n" + "

ftp.gnupg.org:%s

\n" "
\n", esc_title); @@ -747,7 +834,7 @@ print_header (const char *title) "\n" "\n" "

Index of %s

\n" - "\n", + "
\n", esc_title, esc_title); } } @@ -770,12 +857,10 @@ print_footer (void) "\n" "
  • Imprint" "
  • \n" - "
  • Archive" - "
  • \n" - "
  • Sitemap" - "
  • \n" "
  • Blog" "
  • \n" + "
  • Web" + "
  • \n" "\n" "\n", stdout); @@ -801,7 +886,7 @@ print_footer (void) "Creative Commons Attribution-ShareAlike 4.0 International" " License. See " "copying for details.\n", stdout); - printf("Page last updated on 2017-xx-xx.\n"); + printf("Page last updated on %s.\n", format_time_now (1)); fputs ("\n" "\n" "\n" @@ -819,7 +904,7 @@ print_footer (void) /* Print COUNT directories from the array SORTED. */ static void -print_dirs (finfo_t *sorted, int count, const char *directory) +print_dirs (finfo_t *sorted, int count, int at_root) { int idx; finfo_t fi; @@ -839,9 +924,9 @@ print_dirs (finfo_t *sorted, int count, const char *directory) { fputs ("

    Directories

    \n" "
    \n" - "
    \n", stdout); + "
    \n", stdout); - if (strcmp (directory, "/")) + if (!at_root) fputs ("" "" "\n", stdout); - if (strcmp (directory, "/")) + if (!at_root) fputs ("\n", stdout); } @@ -875,6 +960,20 @@ print_dirs (finfo_t *sorted, int count, const char *directory) fputs ("
    " @@ -852,7 +937,7 @@ print_dirs (finfo_t *sorted, int count, const char *directory) fputs ("
     

    Directories

    " "Parent Directory
    \n" "
    \n\n", stdout); } + else if (opt_gpgweb && !at_root) + { + /* !any - need to print an UP link */ + fputs ("
    \n" + "\n" + "" + "\n" + "
    " + "Parent Directory
    \n" + "
    \n", stdout); + + + } } @@ -899,7 +998,7 @@ print_files (finfo_t *sorted, int count) { fputs ("

    Files

    \n" "
    \n" - "\n", stdout); + "
    \n", stdout); } else fputs ("\n", @@ -949,6 +1048,15 @@ scan_directory (const char *directory, const char *title) int idx; size_t len; strlist_t sl; + int at_root = 0; + + if (opt_gpgweb) + { + if (!strcmp (title, "/")) + at_root = 1; + } + else if (!strcmp (directory, "/")) + at_root = 1; dir = opendir (directory); if (!dir) @@ -1012,11 +1120,11 @@ scan_directory (const char *directory, const char *title) if (opt_files_first) { print_files (sorted, count); - print_dirs (sorted, count, directory); + print_dirs (sorted, count, at_root); } else { - print_dirs (sorted, count, directory); + print_dirs (sorted, count, at_root); print_files (sorted, count); } print_footer (); @@ -1024,10 +1132,10 @@ scan_directory (const char *directory, const char *title) /* We create the index file in the current directory. */ if (opt_index) { - FILE *indexfp = fopen (".ftp-index", "w"); + FILE *indexfp = fopen (opt_index, "w"); if (!indexfp) - die ("error creating .ftp-index in '%s': %s\n", - directory, strerror (errno)); + die ("error creating '%s' for '%s': %s\n", + opt_index, directory, strerror (errno)); for (idx=0; idx < count; idx++) { @@ -1040,8 +1148,8 @@ scan_directory (const char *directory, const char *title) (unsigned long)fi->mtime); } if (ferror (indexfp)) - die ("error writing .ftp-index in '%s': %s\n", - directory, strerror (errno)); + die ("error writing '%s' for '%s': %s\n", + opt_index, directory, strerror (errno)); /* Fixme: Check for close errors. */ fclose (indexfp); } @@ -1074,11 +1182,24 @@ main (int argc, char **argv) argc--; argv++; break; } + else if (!strcmp (*argv, "--version")) + { + fputs (PGMNAME " " VERSION "\n" + "Copyright (C) 2017 g10 Code GmbH\n" + "License GPLv3+: GNU GPL version 3 or later" + " \n" + "This is free software: you are free to change" + " and redistribute it.\n" + "There is NO WARRANTY, to the extent permitted by law.\n", + stdout); + exit (0); + } else if (!strcmp (*argv, "--help")) { fputs ("usage: " PGMNAME " [options] directory [title]\n" "Print an index for an FTP directory.\n\n" "Options:\n" + " --version print program version\n" " --verbose verbose diagnostics\n" " --debug flyswatter\n" " --reverse reverse sort order\n" @@ -1087,7 +1208,7 @@ main (int argc, char **argv) " --html output HTML\n" " --gpgweb output HTML as used at gnupg.org\n" " --readme include README file\n" - " --index create an .ftp-index file\n" + " --index FILE create index FILE\n" " --exclude NAME ignore file NAME\n" , stdout); exit (0); @@ -1129,7 +1250,10 @@ main (int argc, char **argv) } else if (!strcmp (*argv, "--index")) { - opt_index = 1; + argc--; argv++; + if (!argc || !**argv) + die ("argument missing for option '%s'\n", argv[-1]); + opt_index = *argv; argc--; argv++; } else if (!strcmp (*argv, "--gpgweb")) diff --git a/web/share/gpgweb.el b/web/share/gpgweb.el index 9a719f2..6539206 100644 --- a/web/share/gpgweb.el +++ b/web/share/gpgweb.el @@ -146,6 +146,9 @@ if not available. If CUSTOM is true only a minimal header is set." ()) ("/blog/index.html" "Blog" + ()) + ("/ftp/index.html" + "Files" ())) "The definition of the gnupg.org bottom menu structure.") ----------------------------------------------------------------------- Summary of changes: tools/ftp-indexer.c | 180 ++++++++++++++++++++++++++++++++++++++++++++-------- web/share/gpgweb.el | 3 + 2 files changed, 155 insertions(+), 28 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 16:31:45 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 08 Nov 2017 16:31:45 +0100 Subject: [git] gnupg-doc - branch, master, updated. 8fc663510f8aa84e3852bd9e2c23e91b6f7d922e 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 8fc663510f8aa84e3852bd9e2c23e91b6f7d922e (commit) from 3d80b1935f07a3c4bc03d4f497fde99ca3c2fed2 (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 8fc663510f8aa84e3852bd9e2c23e91b6f7d922e Author: Werner Koch Date: Wed Nov 8 16:27:32 2017 +0100 tools: Remove bashism in the ftp-listener example diff --git a/tools/ftp-indexer.c b/tools/ftp-indexer.c index 32c6de9..e59ad60 100644 --- a/tools/ftp-indexer.c +++ b/tools/ftp-indexer.c @@ -27,7 +27,7 @@ scratch=/home/ftp/.scratch cd "$top" opt_force=no -if [ "$1" == "--force" ]; then +if [ "$1" = "--force" ]; then shift opt_force=yes fi ----------------------------------------------------------------------- Summary of changes: tools/ftp-indexer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 17:43:35 2017 From: cvs at cvs.gnupg.org (by Daniel Kahn Gillmor) Date: Wed, 08 Nov 2017 17:43:35 +0100 Subject: [git] GnuPG - branch, T3490-proposal1, created. gnupg-2.2.1-59-gceac6e9 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, T3490-proposal1 has been created at ceac6e9e6c088767964b53d59cef003bbe828376 (commit) - Log ----------------------------------------------------------------- commit ceac6e9e6c088767964b53d59cef003bbe828376 Author: Daniel Kahn Gillmor Date: Wed Nov 8 16:26:40 2017 +0100 assuan: Use exponential decay for first 1s of spinlock. * common/asshelp.c (wait_for_sock): instead of checking the socket every second, we check 10 times in the first second (with exponential decay). -- This cuts the wall clock time for the standard test suite roughly by half. GnuPG-bug-id: 3490 Signed-off-by: Daniel Kahn Gillmor diff --git a/common/asshelp.c b/common/asshelp.c index 68a41be..76f812d 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -310,14 +310,32 @@ unlock_spawning (lock_spawn_t *lock, const char *name) static gpg_error_t wait_for_sock (int secs, const char *name, const char *sockname, int verbose, assuan_context_t ctx, int *did_success_msg) { - int i; gpg_error_t err = 0; - for (i=0; i < secs; i++) + int target_us = secs * 1000000; + int elapsed_us = 0; + /* + * 977us * 1024 = just a little more than 1s. + * so we will double this timeout 10 times in the first + * second, and then switch over to 1s checkins. + */ + int next_sleep_us = 977; + int lastalert = secs+1; + int secsleft; + + while (elapsed_us < target_us) { if (verbose) - log_info (_("waiting for the %s to come up ... (%ds)\n"), - name, secs - i); - gnupg_sleep (1); + { + secsleft = (target_us - elapsed_us)/1000000; + if (secsleft < lastalert) + { + log_info (_("waiting for the %s to come up ... (%ds)\n"), + name, secsleft); + lastalert = secsleft; + } + } + gnupg_usleep (next_sleep_us); + elapsed_us += next_sleep_us; err = assuan_socket_connect (ctx, sockname, 0, 0); if (!err) { @@ -329,6 +347,9 @@ wait_for_sock (int secs, const char *name, const char *sockname, int verbose, as } break; } + next_sleep_us *= 2; + if (next_sleep_us > 1000000) + next_sleep_us = 1000000; } return err; } commit 1fe8fc56f2468d41b575a183721f96fbe4108012 Author: Daniel Kahn Gillmor Date: Wed Nov 8 16:15:30 2017 +0100 assuan: Reorganize waiting for socket. * common/asshelp.c (wait_for_sock): New function, collecting codepaths from... (start_new_gpg_agent) here and... (start_new_dirmngr) here. -- This has no functional change, but makes it easier to make this function more efficient. GnuPG-bug-id: 3490 Signed-off-by: Daniel Kahn Gillmor diff --git a/common/asshelp.c b/common/asshelp.c index f3a92f9..68a41be 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -307,6 +307,32 @@ unlock_spawning (lock_spawn_t *lock, const char *name) } } +static gpg_error_t +wait_for_sock (int secs, const char *name, const char *sockname, int verbose, assuan_context_t ctx, int *did_success_msg) +{ + int i; + gpg_error_t err = 0; + for (i=0; i < secs; i++) + { + if (verbose) + log_info (_("waiting for the %s to come up ... (%ds)\n"), + name, secs - i); + gnupg_sleep (1); + err = assuan_socket_connect (ctx, sockname, 0, 0); + if (!err) + { + if (verbose) + { + log_info (_("connection to %s established\n"), + name); + *did_success_msg = 1; + } + break; + } + } + return err; +} + /* Try to connect to the agent via socket or start it if it is not running and AUTOSTART is set. Handle the server's initial greeting. Returns a new assuan context at R_CTX or an error @@ -433,25 +459,8 @@ start_new_gpg_agent (assuan_context_t *r_ctx, log_error ("failed to start agent '%s': %s\n", agent_program, gpg_strerror (err)); else - { - for (i=0; i < SECS_TO_WAIT_FOR_AGENT; i++) - { - if (verbose) - log_info (_("waiting for the agent to come up ... (%ds)\n"), - SECS_TO_WAIT_FOR_AGENT - i); - gnupg_sleep (1); - err = assuan_socket_connect (ctx, sockname, 0, 0); - if (!err) - { - if (verbose) - { - log_info (_("connection to agent established\n")); - did_success_msg = 1; - } - break; - } - } - } + err = wait_for_sock (SECS_TO_WAIT_FOR_AGENT, "agent", + sockname, verbose, ctx, &did_success_msg); } unlock_spawning (&lock, "agent"); @@ -584,29 +593,8 @@ start_new_dirmngr (assuan_context_t *r_ctx, log_error ("failed to start the dirmngr '%s': %s\n", dirmngr_program, gpg_strerror (err)); else - { - int i; - - for (i=0; i < SECS_TO_WAIT_FOR_DIRMNGR; i++) - { - if (verbose) - log_info (_("waiting for the dirmngr " - "to come up ... (%ds)\n"), - SECS_TO_WAIT_FOR_DIRMNGR - i); - gnupg_sleep (1); - err = assuan_socket_connect (ctx, sockname, 0, 0); - if (!err) - { - if (verbose) - { - log_info (_("connection to the dirmngr" - " established\n")); - did_success_msg = 1; - } - break; - } - } - } + err = wait_for_sock (SECS_TO_WAIT_FOR_DIRMNGR, "dirmngr", + sockname, verbose, ctx, &did_success_msg); } unlock_spawning (&lock, "dirmngr"); ----------------------------------------------------------------------- hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 17:56:04 2017 From: cvs at cvs.gnupg.org (by Daniel Kahn Gillmor) Date: Wed, 08 Nov 2017 17:56:04 +0100 Subject: [git] GnuPG - branch, T3490-proposal1, updated. gnupg-2.2.1-75-g149041b 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, T3490-proposal1 has been updated discards ceac6e9e6c088767964b53d59cef003bbe828376 (commit) discards 1fe8fc56f2468d41b575a183721f96fbe4108012 (commit) via 149041b0b917f4298239fe18b5ebd5ead71584a6 (commit) via 0471ff9d3bf8d6b9a359f3c426d70d0935066907 (commit) via 68284e1509490a68adcc6019a5bf8fb3674d3807 (commit) via ab7ac827041b5cd97bbca7a75b0930072dd6611f (commit) via f9f72ffbfa9fd7d1a7a1823697d116d76155b407 (commit) via 380bce13d94ff03c96e39ac1d834f382c5c730a1 (commit) via 42308224d1fce64c666aed2be5eb4ef42e8aced4 (commit) via 52d41c8b0f4af6278d18d8935399ddad16a26856 (commit) via f7212f1d11aad5d910d2c77b2e5c6ab31a0e786e (commit) via 922bae8082f2f8d696ea0e7d7e9e4d986789bdfc (commit) via ea09b6cded9d31a8ebd91878553c3eaa2b76e817 (commit) via 16513102036a91aa46741260b3af0d42a25941e0 (commit) via 5e96fe72e477d09e35ccee48af0fd9ab2b3ae409 (commit) via fd3f5ca151b9440ade2fa4991b7cfb190e357893 (commit) via 87b94e08d7811af94403384c45ae5d2bb88f6ed9 (commit) via f795f4529d8ab5a05db1cc1960abd34390bfae1b (commit) via 6c63a04569c07c9c2817c7c530a92ccfa58155cc (commit) via d63b7966cdd72548c60466c620de5cd6104a779e (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (ceac6e9e6c088767964b53d59cef003bbe828376) \ N -- N -- N (149041b0b917f4298239fe18b5ebd5ead71584a6) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. 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 149041b0b917f4298239fe18b5ebd5ead71584a6 Author: Daniel Kahn Gillmor Date: Wed Nov 8 16:26:40 2017 +0100 assuan: Use exponential decay for first 1s of spinlock. * common/asshelp.c (wait_for_sock): instead of checking the socket every second, we check 10 times in the first second (with exponential decay). -- This cuts the wall clock time for the standard test suite roughly by half. GnuPG-bug-id: 3490 Signed-off-by: Daniel Kahn Gillmor diff --git a/common/asshelp.c b/common/asshelp.c index 68a41be..76f812d 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -310,14 +310,32 @@ unlock_spawning (lock_spawn_t *lock, const char *name) static gpg_error_t wait_for_sock (int secs, const char *name, const char *sockname, int verbose, assuan_context_t ctx, int *did_success_msg) { - int i; gpg_error_t err = 0; - for (i=0; i < secs; i++) + int target_us = secs * 1000000; + int elapsed_us = 0; + /* + * 977us * 1024 = just a little more than 1s. + * so we will double this timeout 10 times in the first + * second, and then switch over to 1s checkins. + */ + int next_sleep_us = 977; + int lastalert = secs+1; + int secsleft; + + while (elapsed_us < target_us) { if (verbose) - log_info (_("waiting for the %s to come up ... (%ds)\n"), - name, secs - i); - gnupg_sleep (1); + { + secsleft = (target_us - elapsed_us)/1000000; + if (secsleft < lastalert) + { + log_info (_("waiting for the %s to come up ... (%ds)\n"), + name, secsleft); + lastalert = secsleft; + } + } + gnupg_usleep (next_sleep_us); + elapsed_us += next_sleep_us; err = assuan_socket_connect (ctx, sockname, 0, 0); if (!err) { @@ -329,6 +347,9 @@ wait_for_sock (int secs, const char *name, const char *sockname, int verbose, as } break; } + next_sleep_us *= 2; + if (next_sleep_us > 1000000) + next_sleep_us = 1000000; } return err; } commit 0471ff9d3bf8d6b9a359f3c426d70d0935066907 Author: Daniel Kahn Gillmor Date: Wed Nov 8 16:15:30 2017 +0100 assuan: Reorganize waiting for socket. * common/asshelp.c (wait_for_sock): New function, collecting codepaths from... (start_new_gpg_agent) here and... (start_new_dirmngr) here. -- This has no functional change, but makes it easier to make this function more efficient. GnuPG-bug-id: 3490 Signed-off-by: Daniel Kahn Gillmor diff --git a/common/asshelp.c b/common/asshelp.c index f3a92f9..68a41be 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -307,6 +307,32 @@ unlock_spawning (lock_spawn_t *lock, const char *name) } } +static gpg_error_t +wait_for_sock (int secs, const char *name, const char *sockname, int verbose, assuan_context_t ctx, int *did_success_msg) +{ + int i; + gpg_error_t err = 0; + for (i=0; i < secs; i++) + { + if (verbose) + log_info (_("waiting for the %s to come up ... (%ds)\n"), + name, secs - i); + gnupg_sleep (1); + err = assuan_socket_connect (ctx, sockname, 0, 0); + if (!err) + { + if (verbose) + { + log_info (_("connection to %s established\n"), + name); + *did_success_msg = 1; + } + break; + } + } + return err; +} + /* Try to connect to the agent via socket or start it if it is not running and AUTOSTART is set. Handle the server's initial greeting. Returns a new assuan context at R_CTX or an error @@ -433,25 +459,8 @@ start_new_gpg_agent (assuan_context_t *r_ctx, log_error ("failed to start agent '%s': %s\n", agent_program, gpg_strerror (err)); else - { - for (i=0; i < SECS_TO_WAIT_FOR_AGENT; i++) - { - if (verbose) - log_info (_("waiting for the agent to come up ... (%ds)\n"), - SECS_TO_WAIT_FOR_AGENT - i); - gnupg_sleep (1); - err = assuan_socket_connect (ctx, sockname, 0, 0); - if (!err) - { - if (verbose) - { - log_info (_("connection to agent established\n")); - did_success_msg = 1; - } - break; - } - } - } + err = wait_for_sock (SECS_TO_WAIT_FOR_AGENT, "agent", + sockname, verbose, ctx, &did_success_msg); } unlock_spawning (&lock, "agent"); @@ -584,29 +593,8 @@ start_new_dirmngr (assuan_context_t *r_ctx, log_error ("failed to start the dirmngr '%s': %s\n", dirmngr_program, gpg_strerror (err)); else - { - int i; - - for (i=0; i < SECS_TO_WAIT_FOR_DIRMNGR; i++) - { - if (verbose) - log_info (_("waiting for the dirmngr " - "to come up ... (%ds)\n"), - SECS_TO_WAIT_FOR_DIRMNGR - i); - gnupg_sleep (1); - err = assuan_socket_connect (ctx, sockname, 0, 0); - if (!err) - { - if (verbose) - { - log_info (_("connection to the dirmngr" - " established\n")); - did_success_msg = 1; - } - break; - } - } - } + err = wait_for_sock (SECS_TO_WAIT_FOR_DIRMNGR, "dirmngr", + sockname, verbose, ctx, &did_success_msg); } unlock_spawning (&lock, "dirmngr"); ----------------------------------------------------------------------- Summary of changes: NEWS | 42 +++++ agent/agent.h | 6 + agent/command.c | 36 ++-- agent/gpg-agent.c | 9 + agent/learncard.c | 12 +- agent/protect.c | 40 ++++- agent/t-protect.c | 2 +- build-aux/speedo.mk | 20 ++- build-aux/speedo/w32/README.txt | 25 ++- build-aux/speedo/w32/pkg-copyright.txt | 289 +++++++++++++++++++++++++++++---- configure.ac | 3 +- dirmngr/dirmngr.c | 2 +- dirmngr/dirmngr_ldap.c | 2 +- doc/dirmngr.texi | 2 +- doc/gpg-agent.texi | 34 +++- g10/card-util.c | 113 ++++++++----- g10/keygen.c | 25 ++- tests/openpgp/defs.scm | 1 + 18 files changed, 535 insertions(+), 128 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 8 18:41:11 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 08 Nov 2017 18:41:11 +0100 Subject: [git] gnupg-doc - branch, master, updated. 4bb81e5ae79457ced41a5f2b467fafcf4eebde3d 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 4bb81e5ae79457ced41a5f2b467fafcf4eebde3d (commit) from 8fc663510f8aa84e3852bd9e2c23e91b6f7d922e (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 4bb81e5ae79457ced41a5f2b467fafcf4eebde3d Author: Werner Koch Date: Wed Nov 8 18:36:58 2017 +0100 tools: Add descriptions to directory listings. These descriptions are taken from the file ".title" in the respective sub-directory. Only the first line is used. diff --git a/tools/ftp-indexer.c b/tools/ftp-indexer.c index e59ad60..5576e42 100644 --- a/tools/ftp-indexer.c +++ b/tools/ftp-indexer.c @@ -104,6 +104,12 @@ done #define ATTR_PRINTF(a,b) #define ATTR_NR_PRINTF(a,b) #endif +#if __GNUC__ >= 4 +# define ATTR_SENTINEL(a) __attribute__ ((sentinel(a))) +#else +# define ATTR_SENTINEL(a) +#endif + #define digitp(a) ((a) >= '0' && (a) <= '9') #define VALID_URI_CHARS "abcdefghijklmnopqrstuvwxyz" \ @@ -148,7 +154,7 @@ static strlist_t opt_exclude; static void die (const char *format, ...) ATTR_NR_PRINTF(1,2); static void err (const char *format, ...) ATTR_PRINTF(1,2); static void inf (const char *format, ...) ATTR_PRINTF(1,2); - +static char *xstrconcat (const char *s1, ...) ATTR_SENTINEL(0); static void @@ -214,7 +220,7 @@ xcalloc (size_t n, size_t k) static char * xstrdup (const char *string) { - char *buf = xmalloc (strlen (string)); + char *buf = xmalloc (strlen (string) + 1); strcpy (buf, string); return buf; } @@ -231,6 +237,55 @@ my_stpcpy (char *a, const char *b) } +/* Helper for xstrconcat. */ +static char * +do_strconcat (const char *s1, va_list arg_ptr) +{ + const char *argv[48]; + size_t argc; + size_t needed; + char *buffer, *p; + + argc = 0; + argv[argc++] = s1; + needed = strlen (s1); + while (((argv[argc] = va_arg (arg_ptr, const char *)))) + { + needed += strlen (argv[argc]); + if (argc >= DIM (argv)-1) + die ("internal error: too may args for strconcat\n"); + argc++; + } + needed++; + buffer = xmalloc (needed); + for (p = buffer, argc=0; argv[argc]; argc++) + p = my_stpcpy (p, argv[argc]); + + return buffer; +} + + +/* Concatenate the string S1 with all the following strings up to a + NULL. Returns a malloced buffer with the new string or NULL on a + malloc error or if too many arguments are given. */ +static char * +xstrconcat (const char *s1, ...) +{ + va_list arg_ptr; + char *result; + + if (!s1) + result = xstrdup (""); + else + { + va_start (arg_ptr, s1); + result = do_strconcat (s1, arg_ptr); + va_end (arg_ptr); + } + return result; +} + + /* If SPECIAL is NULL this function escapes in forms mode. */ static size_t escape_data (char *buffer, const void *data, size_t datalen, @@ -902,13 +957,15 @@ print_footer (void) } -/* Print COUNT directories from the array SORTED. */ +/* Print COUNT directories from the array SORTED. + * Note: This function assumes that the CWD is the listed directory. */ static void print_dirs (finfo_t *sorted, int count, int at_root) { int idx; finfo_t fi; int any = 0; + char *title = NULL; for (idx=0; idx < count; idx++) { @@ -943,14 +1000,44 @@ print_dirs (finfo_t *sorted, int count, int at_root) } } + free (title); + title = NULL; if (opt_gpgweb) - printf ("" - "\n", - html_escape_href (fi->name), html_escape (fi->name)); - else if (opt_html) - printf ("\n", - html_escape_href (fi->name), html_escape (fi->name)); + { + char *fname; + FILE *fp; + + fname = xstrconcat (fi->name, "/", ".title", NULL); + fp = fopen (fname, "r"); + free (fname); + if (fp) + { + char line[200]; + + if (fgets (line, sizeof line, fp) && *line) + { + if (line[strlen(line)-1] == '\n') + line[strlen(line)-1] = 0; + title = xstrdup (html_escape (line)); + } + fclose (fp); + } + } + + if (opt_html) + { + if (opt_gpgweb) + printf ("" + "", + html_escape_href (fi->name), html_escape (fi->name)); + else + printf ("", + html_escape_href (fi->name), html_escape (fi->name)); + if (title) + printf ("", title); + fputs ("\n", stdout); + } else printf ("D %s\n", fi->name); } @@ -974,6 +1061,8 @@ print_dirs (finfo_t *sorted, int count, int at_root) } + + free (title); } ----------------------------------------------------------------------- Summary of changes: tools/ftp-indexer.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 99 insertions(+), 10 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 9 03:02:00 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Thu, 09 Nov 2017 03:02:00 +0100 Subject: [git] GCRYPT - branch, master, updated. libgcrypt-1.8.1-21-g621f5c4 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 621f5c4e837347308a6b06a8cfbfc47ca9fae69e (commit) from 77e314a42a9c3c3557f0e60b3bf6da2ff9f7709a (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 621f5c4e837347308a6b06a8cfbfc47ca9fae69e Author: NIIBE Yutaka Date: Thu Nov 9 10:59:33 2017 +0900 Fix secmem test for machine with larger page. * tests/t-secmem.c (main): Detect page size and setup chunk size. * src/secmem.c (init_pool): Simplify the expression. -- GnuPG-bug-id: 3351 Signed-off-by: NIIBE Yutaka diff --git a/src/secmem.c b/src/secmem.c index 86de72d..f7ad1f6 100644 --- a/src/secmem.c +++ b/src/secmem.c @@ -407,7 +407,7 @@ init_pool (pooldesc_t *pool, size_t n) # else pgsize_val = -1; # endif - pgsize = (pgsize_val != -1 && pgsize_val > 0)? pgsize_val:DEFAULT_PAGE_SIZE; + pgsize = (pgsize_val > 0)? pgsize_val:DEFAULT_PAGE_SIZE; pool->size = (pool->size + pgsize - 1) & ~(pgsize - 1); # ifdef MAP_ANONYMOUS diff --git a/tests/t-secmem.c b/tests/t-secmem.c index 8f4cce1..ecbc55a 100644 --- a/tests/t-secmem.c +++ b/tests/t-secmem.c @@ -25,6 +25,7 @@ #include #include #include +#include #define PGM "t-secmem" @@ -32,6 +33,11 @@ #include "../src/gcrypt-testapi.h" +#define DEFAULT_PAGE_SIZE 4096 +#define MINIMUM_POOL_SIZE 16384 +static size_t pool_size; +static size_t chunk_size; + static void test_secmem (void) { @@ -42,12 +48,12 @@ test_secmem (void) memset (a, 0, sizeof a); /* Allocating 28*512=14k should work in the default 16k pool even - * with extrem alignment requirements. */ + * with extra alignment requirements. */ for (i=0; i < DIM(a); i++) - a[i] = gcry_xmalloc_secure (512); + a[i] = gcry_xmalloc_secure (chunk_size); /* Allocating another 2k should fail for the default 16k pool. */ - b = gcry_malloc_secure (2048); + b = gcry_malloc_secure (chunk_size*4); if (b) fail ("allocation did not fail as expected\n"); @@ -68,7 +74,7 @@ test_secmem_overflow (void) /* Allocating 150*512=75k should require more than one overflow buffer. */ for (i=0; i < DIM(a); i++) { - a[i] = gcry_xmalloc_secure (512); + a[i] = gcry_xmalloc_secure (chunk_size); if (verbose && !(i %40)) xgcry_control (GCRYCTL_DUMP_SECMEM_STATS, 0 , 0); } @@ -111,6 +117,18 @@ int main (int argc, char **argv) { int last_argc = -1; + long int pgsize_val = -1; + size_t pgsize; + +# if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE) + pgsize_val = sysconf (_SC_PAGESIZE); +# elif defined(HAVE_GETPAGESIZE) + pgsize_val = getpagesize (); +# endif + pgsize = (pgsize_val > 0)? pgsize_val : DEFAULT_PAGE_SIZE; + + pool_size = (MINIMUM_POOL_SIZE + pgsize - 1) & ~(pgsize - 1); + chunk_size = pool_size / 32; if (argc) { argc--; argv++; } @@ -153,7 +171,7 @@ main (int argc, char **argv) if (debug) xgcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u , 0); xgcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0); - xgcry_control (GCRYCTL_INIT_SECMEM, 16384, 0); + xgcry_control (GCRYCTL_INIT_SECMEM, pool_size, 0); gcry_set_outofcore_handler (outofcore_handler, NULL); xgcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); ----------------------------------------------------------------------- Summary of changes: src/secmem.c | 2 +- tests/t-secmem.c | 28 +++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 9 03:03:12 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Thu, 09 Nov 2017 03:03:12 +0100 Subject: [git] GCRYPT - branch, LIBGCRYPT-1.8-BRANCH, updated. libgcrypt-1.8.1-3-gda127f7 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, LIBGCRYPT-1.8-BRANCH has been updated via da127f7505ff7681fc9dbfbf332121d2998e88aa (commit) from 71a07704ad98b7c3b776629336fbffff1dfeaaeb (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 da127f7505ff7681fc9dbfbf332121d2998e88aa Author: NIIBE Yutaka Date: Thu Nov 9 10:59:33 2017 +0900 Fix secmem test for machine with larger page. * tests/t-secmem.c (main): Detect page size and setup chunk size. * src/secmem.c (init_pool): Simplify the expression. -- GnuPG-bug-id: 3351 Signed-off-by: NIIBE Yutaka diff --git a/src/secmem.c b/src/secmem.c index 86de72d..f7ad1f6 100644 --- a/src/secmem.c +++ b/src/secmem.c @@ -407,7 +407,7 @@ init_pool (pooldesc_t *pool, size_t n) # else pgsize_val = -1; # endif - pgsize = (pgsize_val != -1 && pgsize_val > 0)? pgsize_val:DEFAULT_PAGE_SIZE; + pgsize = (pgsize_val > 0)? pgsize_val:DEFAULT_PAGE_SIZE; pool->size = (pool->size + pgsize - 1) & ~(pgsize - 1); # ifdef MAP_ANONYMOUS diff --git a/tests/t-secmem.c b/tests/t-secmem.c index 8f4cce1..ecbc55a 100644 --- a/tests/t-secmem.c +++ b/tests/t-secmem.c @@ -25,6 +25,7 @@ #include #include #include +#include #define PGM "t-secmem" @@ -32,6 +33,11 @@ #include "../src/gcrypt-testapi.h" +#define DEFAULT_PAGE_SIZE 4096 +#define MINIMUM_POOL_SIZE 16384 +static size_t pool_size; +static size_t chunk_size; + static void test_secmem (void) { @@ -42,12 +48,12 @@ test_secmem (void) memset (a, 0, sizeof a); /* Allocating 28*512=14k should work in the default 16k pool even - * with extrem alignment requirements. */ + * with extra alignment requirements. */ for (i=0; i < DIM(a); i++) - a[i] = gcry_xmalloc_secure (512); + a[i] = gcry_xmalloc_secure (chunk_size); /* Allocating another 2k should fail for the default 16k pool. */ - b = gcry_malloc_secure (2048); + b = gcry_malloc_secure (chunk_size*4); if (b) fail ("allocation did not fail as expected\n"); @@ -68,7 +74,7 @@ test_secmem_overflow (void) /* Allocating 150*512=75k should require more than one overflow buffer. */ for (i=0; i < DIM(a); i++) { - a[i] = gcry_xmalloc_secure (512); + a[i] = gcry_xmalloc_secure (chunk_size); if (verbose && !(i %40)) xgcry_control (GCRYCTL_DUMP_SECMEM_STATS, 0 , 0); } @@ -111,6 +117,18 @@ int main (int argc, char **argv) { int last_argc = -1; + long int pgsize_val = -1; + size_t pgsize; + +# if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE) + pgsize_val = sysconf (_SC_PAGESIZE); +# elif defined(HAVE_GETPAGESIZE) + pgsize_val = getpagesize (); +# endif + pgsize = (pgsize_val > 0)? pgsize_val : DEFAULT_PAGE_SIZE; + + pool_size = (MINIMUM_POOL_SIZE + pgsize - 1) & ~(pgsize - 1); + chunk_size = pool_size / 32; if (argc) { argc--; argv++; } @@ -153,7 +171,7 @@ main (int argc, char **argv) if (debug) xgcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u , 0); xgcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0); - xgcry_control (GCRYCTL_INIT_SECMEM, 16384, 0); + xgcry_control (GCRYCTL_INIT_SECMEM, pool_size, 0); gcry_set_outofcore_handler (outofcore_handler, NULL); xgcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); ----------------------------------------------------------------------- Summary of changes: src/secmem.c | 2 +- tests/t-secmem.c | 28 +++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 9 07:38:54 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Thu, 09 Nov 2017 07:38:54 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-74-gccf3ba9 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 ccf3ba92087e79abdeaa0208795829b431c6f201 (commit) from 68284e1509490a68adcc6019a5bf8fb3674d3807 (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 ccf3ba92087e79abdeaa0208795829b431c6f201 Author: NIIBE Yutaka Date: Thu Nov 9 14:03:22 2017 +0900 g10: Fix regexp sanitization. * g10/trustdb.c (sanitize_regexp): Only escape operators. -- To sanitize a regular expression, quoting by backslash should be only done for defined characters. POSIX defines 12 characters including dot and backslash. Quoting other characters is wrong, in two ways; It may build an operator like: \b, \s, \w when using GNU library. Case ignored match doesn't work, because quoting lower letter means literally and no much to upper letter. GnuPG-bug-id: 2923 Co-authored-by: Damien Goutte-Gattat Signed-off-by: NIIBE Yutaka diff --git a/g10/trustdb.c b/g10/trustdb.c index 92c1ca5..0a98c12 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -1505,6 +1505,10 @@ store_validation_status (ctrl_t ctrl, int depth, /* Returns a sanitized copy of the regexp (which might be "", but not NULL). */ #ifndef DISABLE_REGEX +/* Operator charactors except '.' and backslash. + See regex(7) on BSD. */ +#define REGEXP_OPERATOR_CHARS "^[$()|*+?{" + static char * sanitize_regexp(const char *old) { @@ -1544,7 +1548,7 @@ sanitize_regexp(const char *old) { if(!escaped && old[start]=='\\') escaped=1; - else if(!escaped && old[start]!='.') + else if (!escaped && strchr (REGEXP_OPERATOR_CHARS, old[start])) new[idx++]='\\'; else escaped=0; ----------------------------------------------------------------------- Summary of changes: g10/trustdb.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Fri Nov 10 15:50:26 2017 From: cvs at cvs.gnupg.org (by Dario Niedermann) Date: Fri, 10 Nov 2017 15:50:26 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-1-4, updated. gnupg-1.4.22-9-g877e307 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-1-4 has been updated via 877e3073d731fec55a88673f91ed646a75e786c8 (commit) from 96f3b1de1cb16b51c34910dfd61b6f1402b9d784 (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 877e3073d731fec55a88673f91ed646a75e786c8 Author: Dario Niedermann Date: Fri Nov 10 15:45:59 2017 +0100 Do not use C99 feature. * cipher/rsa.c (secret): Move var decl to the beginning. -- Trivial patch; ChangeLog written by wk. Signed-off-by: Werner Koch diff --git a/cipher/rsa.c b/cipher/rsa.c index 51b7640..b3ecd3b 100644 --- a/cipher/rsa.c +++ b/cipher/rsa.c @@ -304,6 +304,9 @@ secret(MPI output, MPI input, RSA_secret_key *skey ) #if 0 mpi_powm( output, input, skey->d, skey->n ); #else + MPI D_blind; + MPI rr; + unsigned int rr_nbits; int nlimbs = mpi_get_nlimbs (skey->n)+1; MPI m1 = mpi_alloc_secure (nlimbs); MPI m2 = mpi_alloc_secure (nlimbs); @@ -326,9 +329,7 @@ secret(MPI output, MPI input, RSA_secret_key *skey ) # endif /* USE_BLINDING */ /* RSA secret operation: */ - MPI D_blind = mpi_alloc_secure (nlimbs); - MPI rr; - unsigned int rr_nbits; + D_blind = mpi_alloc_secure (nlimbs); rr_nbits = mpi_get_nbits (skey->p) / 4; if (rr_nbits < 96) ----------------------------------------------------------------------- Summary of changes: cipher/rsa.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Fri Nov 10 17:49:55 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Fri, 10 Nov 2017 17:49:55 +0100 Subject: [git] GpgOL - branch, master, updated. gpgol-2.0.1-5-g3cadd0e 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 MS Outlook". The branch, master has been updated via 3cadd0e929e4e30db0b604d096c91c11e44c9925 (commit) via 1815757181ff8ea6364f5a82771c6f09d3c4a660 (commit) via c3780cfaaf3112d3ba5d8e6e9251466fd5d1fb0e (commit) from 6a54171276524e2e39f3d9f2ad88683d0c0036c2 (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 3cadd0e929e4e30db0b604d096c91c11e44c9925 Author: Andre Heinecke Date: Fri Nov 10 17:48:26 2017 +0100 Fix build example by adding --enable-static -- Dependencies are needed as static libs so this must be enabled. diff --git a/INSTALL b/INSTALL index e09dc59..23ed737 100644 --- a/INSTALL +++ b/INSTALL @@ -35,7 +35,7 @@ for proj in $PROJECTS; do ./autogen.sh mkdir build-w32 cd build-w32 - ../autogen.sh --build-w32 + ../autogen.sh --build-w32 --enable-static make -j`nproc` make install done commit 1815757181ff8ea6364f5a82771c6f09d3c4a660 Author: Andre Heinecke Date: Fri Nov 10 17:47:04 2017 +0100 Remove obsolete info from README -- diff --git a/README b/README index 3876d9c..4690af3 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ ======================= Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010, 2011 g10 Code GmbH - 2013, 2015, 2016 Intevation GmbH + 2013, 2015, 2016, 2017 Intevation GmbH GpgOL is a GnuPG plugin for MS Outlook. @@ -14,14 +14,10 @@ for additional features and sending encrypted mail. src/ Code to build the actual core of the plugin. The resulting DLL will be named "gpgol.dll". It is to be build using - the Mingw toolchain. - -To install this plugin, copy "gpgol.dll" to some directory (e.g. where -gpg lives), make sure that the libgpg-error.dll and gpgme.dll are -available in a directory where Windows searches for DLLs -(e.g. c:\winnt\system32), stop Outlook, run the command "regsvr32 -gpgol.dll" and start Outlook. You should then find a new tab named -"GnuPG" in Outlook's option menu. + the Mingw toolchain see INSTALL for details. + +To install this plugin, install Gpg4win and replace the +installed gpgol.dll with the compiled binary. You will need an UiServer (either GPA or Kleopatra) in a location pointed to by the standard gpg4win registry keys. It is suggested commit c3780cfaaf3112d3ba5d8e6e9251466fd5d1fb0e Author: Andre Heinecke Date: Fri Nov 10 17:09:53 2017 +0100 Improve debug output in parsecontroller * src/parsecontroller.cpp: Debug detected type. diff --git a/src/parsecontroller.cpp b/src/parsecontroller.cpp index 25cdc5e..c93c173 100644 --- a/src/parsecontroller.cpp +++ b/src/parsecontroller.cpp @@ -80,7 +80,7 @@ ParseController::ParseController(LPSTREAM instream, msgtype_t type): m_type (type) { log_mime_parser ("%s:%s: Creating parser for stream: %p of type %i" - " expect headers: %i expect no mime: %i", + " expect no headers: %i expect no mime: %i", SRCNAME, __func__, instream, type, expect_no_headers (type), expect_no_mime (type)); } @@ -276,12 +276,12 @@ ParseController::parse() } Data output (m_outputprovider); - log_debug ("%s:%s:%p decrypt: %i verify: %i with protocol: %s sender: %s", + log_debug ("%s:%s:%p decrypt: %i verify: %i with protocol: %s sender: %s type: %i", SRCNAME, __func__, this, decrypt, verify, protocol == OpenPGP ? "OpenPGP" : protocol == CMS ? "CMS" : "Unknown", - m_sender.empty() ? "none" : m_sender.c_str()); + m_sender.empty() ? "none" : m_sender.c_str(), input.type ()); if (decrypt) { input.seek (0, SEEK_SET); ----------------------------------------------------------------------- Summary of changes: INSTALL | 2 +- README | 14 +++++--------- src/parsecontroller.cpp | 6 +++--- 3 files changed, 9 insertions(+), 13 deletions(-) hooks/post-receive -- GnuPG extension for MS Outlook http://git.gnupg.org From cvs at cvs.gnupg.org Fri Nov 10 17:59:17 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Fri, 10 Nov 2017 17:59:17 +0100 Subject: [git] GpgOL - branch, master, updated. gpgol-2.0.1-8-gc499ce5 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 MS Outlook". The branch, master has been updated via c499ce50aa9f1e9fe85549e82d0e799aa7de0134 (commit) via 474cc15d8e331c9def298dbbfe3b99e6c8cf8035 (commit) via 8d5e9d19ecaf0f753b5204a70d72d2505b373048 (commit) from 3cadd0e929e4e30db0b604d096c91c11e44c9925 (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 c499ce50aa9f1e9fe85549e82d0e799aa7de0134 Author: Andre Heinecke Date: Fri Nov 10 17:56:57 2017 +0100 Fix reversion for S/MIME mails if S/MIME disabled * src/mailitem-events.cpp (EVENT_SINK_INVOKE): Revert again if S/MIME is disabled but we parsed the mail. -- While reversion is no longer neccessary for crypto mails to hide the plaintext we still might need it to change the message class back. And wiping the body etc. is also a good idea when we "leave a mail alone" GnuPG-Bug-ID: T3494 diff --git a/src/mailitem-events.cpp b/src/mailitem-events.cpp index f9f827b..0772004 100644 --- a/src/mailitem-events.cpp +++ b/src/mailitem-events.cpp @@ -215,6 +215,9 @@ EVENT_SINK_INVOKE(MailItemEvents) { /* We want to save the mail when it's an smime mail and smime is disabled to revert it. */ + log_debug ("%s:%s: S/MIME mail but S/MIME is disabled." + " Need save.", + SRCNAME, __func__); m_mail->set_needs_save (true); } break; @@ -378,6 +381,18 @@ EVENT_SINK_INVOKE(MailItemEvents) SRCNAME, __func__); return S_OK; } + + if (m_mail->is_crypto_mail () && m_mail->needs_save () && + m_mail->revert ()) + { + /* An error cleaning the mail should not happen normally. + But just in case there is an error we cancel the + write here. */ + log_debug ("%s:%s: Failed to remove plaintext.", + SRCNAME, __func__); + *(parms->rgvarg[0].pboolVal) = VARIANT_TRUE; + } + log_debug ("%s:%s: Passing write event.", SRCNAME, __func__); m_mail->set_needs_save (false); commit 474cc15d8e331c9def298dbbfe3b99e6c8cf8035 Author: Andre Heinecke Date: Fri Nov 10 17:52:01 2017 +0100 Fix handling of "own" S/MIME Mails * src/mimedataprovider.cpp (MimeDataProvider::collect_data): Expect headers if the first line of the data starts with MIME-Version. -- This fixes the problem that S/MIME Mails in the sent folder are not handled. The problem is that for received S/MIME Mails GpgOL sees the S/MIME part as the original structure and just needs to copy this part to gpgol. But for our own mails in the sent mails folder we get our MIME Structure that we created for the MAPI to MIME conversion including headers. To avoid a big mess with another content type we check the first bytes of the data we parse if they say "MIME-Version" in that case we expect MIME headers. GnuPG-Bug-ID: T3442 diff --git a/src/mimedataprovider.cpp b/src/mimedataprovider.cpp index 82a84f0..4e825b8 100644 --- a/src/mimedataprovider.cpp +++ b/src/mimedataprovider.cpp @@ -752,6 +752,7 @@ MimeDataProvider::collect_data(LPSTREAM stream) HRESULT hr; char buf[BUFSIZE]; ULONG bRead; + bool first_read = true; while ((hr = stream->Read (buf, BUFSIZE, &bRead)) == S_OK || hr == S_FALSE) { @@ -764,6 +765,27 @@ MimeDataProvider::collect_data(LPSTREAM stream) log_mime_parser ("%s:%s: Read %lu bytes.", SRCNAME, __func__, bRead); + if (first_read) + { + if (bRead > 12 && strncmp ("MIME-Version", buf, 12) == 0) + { + /* Fun! In case we have exchange or sent messages created by us + we get the mail attachment like it is before the MAPI to MIME + conversion. So it has our MIME structure. In that case + we have to expect MIME data even if the initial data check + suggests that we don't. + + Checking if the content starts with MIME-Version appears + to be a robust way to check if we try to parse MIME data. */ + m_collect_everything = false; + log_debug ("%s:%s: Found MIME-Version marker." + "Expecting headers even if type suggested not to.", + SRCNAME, __func__); + + } + } + first_read = false; + if (m_collect_everything) { /* For S/MIME, Clearsigned, PGP MESSAGES we just pass everything commit 8d5e9d19ecaf0f753b5204a70d72d2505b373048 Author: Andre Heinecke Date: Fri Nov 10 17:51:18 2017 +0100 Add some more tracing in mail * src/mail.cpp (Mail::update_body): Add some traces. -- Possibly something fishy in here where we crash. diff --git a/src/mail.cpp b/src/mail.cpp index e7a2a51..9db7c85 100644 --- a/src/mail.cpp +++ b/src/mail.cpp @@ -776,6 +776,7 @@ void Mail::update_body() { const auto error = m_parser->get_formatted_error (); + TRACEPOINT; if (!error.empty()) { if (opt.prefer_html) @@ -801,7 +802,9 @@ Mail::update_body() auto html = m_parser->get_html_body (); /** Outlook does not show newlines if \r\r\n is a newline. We replace these as apparently some other buggy MUA sends this. */ + TRACEPOINT; find_and_replace (html, "\r\r\n", "\r\n"); + TRACEPOINT; if (opt.prefer_html && !html.empty()) { char *converted = ansi_charset_to_utf8 (m_parser->get_html_charset().c_str(), @@ -813,6 +816,8 @@ Mail::update_body() log_error ("%s:%s: Failed to modify html body of item.", SRCNAME, __func__); } + + TRACEPOINT; return; } auto body = m_parser->get_body (); @@ -820,12 +825,14 @@ Mail::update_body() char *converted = ansi_charset_to_utf8 (m_parser->get_body_charset().c_str(), body.c_str(), body.size()); int ret = put_oom_string (m_mailitem, "Body", converted ? converted : ""); + TRACEPOINT; xfree (converted); if (ret) { log_error ("%s:%s: Failed to modify body of item.", SRCNAME, __func__); } + TRACEPOINT; return; } ----------------------------------------------------------------------- Summary of changes: src/mail.cpp | 7 +++++++ src/mailitem-events.cpp | 15 +++++++++++++++ src/mimedataprovider.cpp | 22 ++++++++++++++++++++++ 3 files changed, 44 insertions(+) hooks/post-receive -- GnuPG extension for MS Outlook http://git.gnupg.org From cvs at cvs.gnupg.org Sat Nov 11 11:44:12 2017 From: cvs at cvs.gnupg.org (by Daniel Kahn Gillmor) Date: Sat, 11 Nov 2017 11:44:12 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-75-gd048157 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 d048157e87d8b8023d2b26baea3be666ed49b79a (commit) from ccf3ba92087e79abdeaa0208795829b431c6f201 (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 d048157e87d8b8023d2b26baea3be666ed49b79a Author: Daniel Kahn Gillmor Date: Sat Nov 11 18:42:06 2017 +0800 po/da: Fix Danish confusion between "compressed" and "compromised" -- In https://bugs.debian.org/881393 , Jonas Smedegaard reports: > In option number 1, the word "komprimeret" means "compressed". > > I am pretty sure it should say "kompromitteret" instead, which means > "compromised". Debian-Bug-Id: 881393 Signed-off-by: Daniel Kahn Gillmor diff --git a/po/da.po b/po/da.po index e124de5..dc97051 100644 --- a/po/da.po +++ b/po/da.po @@ -4989,7 +4989,7 @@ msgid "Key is superseded" msgstr "N?glen er blevet afl?st" msgid "Key has been compromised" -msgstr "N?glen er blevet komprimeret" +msgstr "N?glen er blevet kompromitteret" msgid "Key is no longer used" msgstr "N?glen bruges ikke l?ngere" ----------------------------------------------------------------------- Summary of changes: po/da.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Sat Nov 11 11:46:00 2017 From: cvs at cvs.gnupg.org (by Daniel Kahn Gillmor) Date: Sat, 11 Nov 2017 11:46:00 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-2-g115a04f 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 115a04f939de4d7f9322a01aa5500e475e98e61f (commit) from 6530aff6923b118fad39f9e29c7357370cae650c (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 115a04f939de4d7f9322a01aa5500e475e98e61f Author: Daniel Kahn Gillmor Date: Sat Nov 11 18:42:06 2017 +0800 po/da: Fix Danish confusion between "compressed" and "compromised" -- In https://bugs.debian.org/881393 , Jonas Smedegaard reports: > In option number 1, the word "komprimeret" means "compressed". > > I am pretty sure it should say "kompromitteret" instead, which means > "compromised". Debian-Bug-Id: 881393 Signed-off-by: Daniel Kahn Gillmor diff --git a/po/da.po b/po/da.po index bd6e9c5..abc1257 100644 --- a/po/da.po +++ b/po/da.po @@ -4994,7 +4994,7 @@ msgid "Key is superseded" msgstr "N?glen er blevet afl?st" msgid "Key has been compromised" -msgstr "N?glen er blevet komprimeret" +msgstr "N?glen er blevet kompromitteret" msgid "Key is no longer used" msgstr "N?glen bruges ikke l?ngere" ----------------------------------------------------------------------- Summary of changes: po/da.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Sat Nov 11 11:54:12 2017 From: cvs at cvs.gnupg.org (by Daniel Kahn Gillmor) Date: Sat, 11 Nov 2017 11:54:12 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-1-4, updated. gnupg-1.4.22-10-g2cdc3783 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-1-4 has been updated via 2cdc37834261142504de5ea9f8aff51428b423f3 (commit) from 877e3073d731fec55a88673f91ed646a75e786c8 (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 2cdc37834261142504de5ea9f8aff51428b423f3 Author: Daniel Kahn Gillmor Date: Sat Nov 11 18:53:29 2017 +0800 po/da: Fix Danish confusion between "compressed" and "compromised" -- In https://bugs.debian.org/881393 , Jonas Smedegaard reports: > In option number 1, the word "komprimeret" means "compressed". > > I am pretty sure it should say "kompromitteret" instead, which means > "compromised". Debian-Bug-Id: 881393 Signed-off-by: Daniel Kahn Gillmor diff --git a/po/da.po b/po/da.po index 99d2ed2..142ada2 100644 --- a/po/da.po +++ b/po/da.po @@ -1805,7 +1805,7 @@ msgid "" msgstr "" "Du skal angive en ?rsag for certifikationen. Afh?ngig af konteksten\n" "har du mulighed for at v?lge fra denne liste:\n" -" ?N?gle er blevet komprimeret?\n" +" ?N?gle er blevet kompromitteret?\n" " Brug denne hvis du har en grund til at tro, at uautoriserede personer\n" " har f?et adgang til din hemmelige n?gle.\n" " ?N?gle er afl?st?\n" @@ -4064,7 +4064,7 @@ msgid "Key is superseded" msgstr "N?glen er blevet afl?st" msgid "Key has been compromised" -msgstr "N?glen er blevet komprimeret" +msgstr "N?glen er blevet kompromitteret" msgid "Key is no longer used" msgstr "N?glen bruges ikke l?ngere" ----------------------------------------------------------------------- Summary of changes: po/da.po | 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 Sun Nov 12 08:57:13 2017 From: cvs at cvs.gnupg.org (by Robert J. Hansen) Date: Sun, 12 Nov 2017 08:57:13 +0100 Subject: [git] gnupg-doc - branch, master, updated. 2691758e1bf56e103f4b28587f17e99203069124 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 2691758e1bf56e103f4b28587f17e99203069124 (commit) via f923342634509dd9076709673b8d1bf56c911cb7 (commit) from 4bb81e5ae79457ced41a5f2b467fafcf4eebde3d (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 2691758e1bf56e103f4b28587f17e99203069124 Merge: f923342 4bb81e5 Author: Robert J. Hansen Date: Sun Nov 12 02:56:48 2017 -0500 Merge branch 'master' of git+ssh://playfair.gnupg.org/git/gnupg-doc commit f923342634509dd9076709673b8d1bf56c911cb7 Author: Robert J. Hansen Date: Sun Nov 12 02:56:37 2017 -0500 Minor typo fixes. Also no longer advises DSA for automated usage. diff --git a/web/faq/gnupg-faq.org b/web/faq/gnupg-faq.org index 39920be..68648f8 100644 --- a/web/faq/gnupg-faq.org +++ b/web/faq/gnupg-faq.org @@ -265,11 +265,10 @@ A convenient Windows installer is available from [[https://www.gpg4win.org][GPG4 :CUSTOM_ID: get_gnupg_osx :END: -The [[https://www.gpgtools.org][GPGtools project]] has everything needed to get started. -However, GPGTools only offers GnuPG 2.0; if you want the -latest-and-greatest 2.1, look at Patrick Brunschwig?s -[[http://sourceforge.net/projects/gpgosx/][GnuPG for OS X]] project on SourceForge. Finally, -[[https://brew.sh][Homebrew]], [[http://www.finkproject.org/][Fink]], and [[https://www.macports.org/][MacPorts]] all have it in their repositories. +The [[https://www.gpgtools.org][GPGtools project]] has everything needed to get started. Another +excellent resources is the [[http://sourceforge.net/projects/gpgosx/][GnuPG for OS X]] project on +SourceForge. Finally, [[https://brew.sh][Homebrew]], [[http://www.finkproject.org/][Fink]], and [[https://www.macports.org/][MacPorts]] all have it in +their repositories. *** ? for the free Unixes? :PROPERTIES: @@ -1342,12 +1341,12 @@ GnuPG to ensure the output contains only printable characters. :CUSTOM_ID: common_options :END: +Some of the most commonly used options are: + Produce more output explaining what GnuPG is doing: =-v=, =--verbose= -Some of the most commonly used options are: - Make no changes; this is useful for testing a command line that will modify keys or generate output: @@ -1528,7 +1527,7 @@ private key to read it. Only Alice has her private key. That?s why you can?t read encrypted traffic you generated: only Alice can read it. -To get around this, add yourself as a recipient (=--recipient = /[your +To get around this, add yourself as a recipient (=--recipient= /[your certificate ID]/). @@ -1652,7 +1651,8 @@ follows. First, on a secure machine: =gpg --edit-key= /keyID/ - Enter "addkey" and select the DSA key type. + Enter ?addkey? and choose whichever key type best suits your + needs. (If you don?t know which one is best, choose RSA.) 2. Make sure that you use a passphrase; this is required by the current implementation to let you export the secret key. ----------------------------------------------------------------------- Summary of changes: web/faq/gnupg-faq.org | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 13 08:22:49 2017 From: cvs at cvs.gnupg.org (by Damien Goutte-Gattat) Date: Mon, 13 Nov 2017 08:22:49 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-76-ga1fe370 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 a1fe3708d0894c138f6dd75d2a6bd22c64359172 (commit) from d048157e87d8b8023d2b26baea3be666ed49b79a (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 a1fe3708d0894c138f6dd75d2a6bd22c64359172 Author: Damien Goutte-Gattat Date: Fri Nov 10 10:38:32 2017 +0000 tests: Run the trust-pgp-4 test again. * tests/openpgp/Makefile.am (XTESTS): Add trust-pgp-4.scm. (EXTRA_DIST): Remove the test file from EXTRA_DIST. -- Now that issue 2923 is fixed, the trust-pgp-4 test passes as expected and we can enable it again. That should help prevent a future regression on this issue. Signed-off-by: Damien Goutte-Gattat diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am index f6014c9..827d3e3 100644 --- a/tests/openpgp/Makefile.am +++ b/tests/openpgp/Makefile.am @@ -85,6 +85,7 @@ XTESTS = \ trust-pgp-1.scm \ trust-pgp-2.scm \ trust-pgp-3.scm \ + trust-pgp-4.scm \ gpgtar.scm \ use-exact-key.scm \ default-key.scm \ @@ -102,9 +103,6 @@ XTESTS = \ issue2929.scm \ issue2941.scm -# Temporary removed tests: -# trust-pgp-4.scm - # XXX: Currently, one cannot override automake's 'check' target. As a # workaround, we avoid defining 'TESTS', thus automake will not emit @@ -268,7 +266,7 @@ sample_msgs = samplemsgs/clearsig-1-key-1.asc \ EXTRA_DIST = defs.scm trust-pgp/common.scm $(XTESTS) $(TEST_FILES) \ mkdemodirs signdemokey $(priv_keys) $(sample_keys) \ - $(sample_msgs) ChangeLog-2011 run-tests.scm trust-pgp-4.scm \ + $(sample_msgs) ChangeLog-2011 run-tests.scm \ setup.scm shell.scm all-tests.scm signed-messages.scm CLEANFILES = prepared.stamp x y yy z out err $(data_files) \ ----------------------------------------------------------------------- Summary of changes: tests/openpgp/Makefile.am | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 13 10:53:57 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Mon, 13 Nov 2017 10:53:57 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-77-g80b9045 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 80b904543486a2f12087bc34a6049ede4eb75940 (commit) from a1fe3708d0894c138f6dd75d2a6bd22c64359172 (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 80b904543486a2f12087bc34a6049ede4eb75940 Author: NIIBE Yutaka Date: Mon Nov 13 18:50:30 2017 +0900 tests: Handle the case with DISABLE_REGEX. * tests/openpgp/Makefile.am [DISABLE_REGEX] (EXTRA_DIST, XTESTS): Conditionalize. * tests/openpgp/all-tests.scm (all-tests): Input file is Makefile. -- The feature is only valid with !DISABLE_REGEX. Signed-off-by: NIIBE Yutaka diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am index 827d3e3..e5be42b 100644 --- a/tests/openpgp/Makefile.am +++ b/tests/openpgp/Makefile.am @@ -85,7 +85,6 @@ XTESTS = \ trust-pgp-1.scm \ trust-pgp-2.scm \ trust-pgp-3.scm \ - trust-pgp-4.scm \ gpgtar.scm \ use-exact-key.scm \ default-key.scm \ @@ -277,6 +276,12 @@ CLEANFILES = prepared.stamp x y yy z out err $(data_files) \ gnupg-test.stop random_seed gpg-agent.log tofu.db \ passphrases sshcontrol S.gpg-agent.ssh report.xml +if DISABLE_REGEX +EXTRA_DIST += trust-pgp-4.scm +else +XTESTS += trust-pgp-4.scm +endif + clean-local: -rm -rf private-keys-v1.d openpgp-revocs.d tofu.d gpgtar.d diff --git a/tests/openpgp/all-tests.scm b/tests/openpgp/all-tests.scm index d687fe4..e12b175 100644 --- a/tests/openpgp/all-tests.scm +++ b/tests/openpgp/all-tests.scm @@ -48,7 +48,7 @@ (define setup-extended-key-format (setup* "extended-key-format")) (define all-tests - (parse-makefile-expand (in-srcdir "tests" "openpgp" "Makefile.am") + (parse-makefile-expand "Makefile" (lambda (filename port key) (parse-makefile port key)) "XTESTS")) ----------------------------------------------------------------------- Summary of changes: tests/openpgp/Makefile.am | 7 ++++++- tests/openpgp/all-tests.scm | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 13 12:04:27 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 13 Nov 2017 12:04:27 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-78-g5d83eb9 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 5d83eb9226c0ce608ec284d8c9bc22ce84a00c25 (commit) from 80b904543486a2f12087bc34a6049ede4eb75940 (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 5d83eb9226c0ce608ec284d8c9bc22ce84a00c25 Author: Werner Koch Date: Mon Nov 13 10:52:36 2017 +0100 gpg-agent: Avoid getting stuck in shutdown pending state. * agent/gpg-agent.c (handle_connections): Always check inotify fds. -- I noticed a gpg-agent processed, probably in shutdown_pending state, which was selecting on only these two inotify fds. The select returned immediately but because we did not handle the fds in shutdown_pending state they were not read and the next select call returned one of them immediately again. Actually that should not hanppen because the if (active_connections == 0) break; /* ready */ should have terminated the loop. For unknown reasons (maybe be just a connection thread terminated in a gdb session) that did not happen. By moving the check outside of the shutdown_pending condition and closing the fd after they have been triggered the code should be more robust. Signed-off-by: Werner Koch diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 2e19d19..0b2b982 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -3000,27 +3000,34 @@ handle_connections (gnupg_fd_t listen_fd, next timeout. */ continue; + /* The inotify fds are set even when a shutdown is pending (see + * above). So we must handle them in any case. To avoid that + * they trigger a second time we close them immediately. */ + if (sock_inotify_fd != -1 + && FD_ISSET (sock_inotify_fd, &read_fdset) + && gnupg_inotify_has_name (sock_inotify_fd, GPG_AGENT_SOCK_NAME)) + { + shutdown_pending = 1; + close (sock_inotify_fd); + sock_inotify_fd = -1; + log_info ("socket file has been removed - shutting down\n"); + } + + if (home_inotify_fd != -1 + && FD_ISSET (home_inotify_fd, &read_fdset)) + { + shutdown_pending = 1; + close (home_inotify_fd); + home_inotify_fd = -1; + log_info ("homedir has been removed - shutting down\n"); + } + if (!shutdown_pending) { int idx; ctrl_t ctrl; npth_t thread; - if (sock_inotify_fd != -1 - && FD_ISSET (sock_inotify_fd, &read_fdset) - && gnupg_inotify_has_name (sock_inotify_fd, GPG_AGENT_SOCK_NAME)) - { - shutdown_pending = 1; - log_info ("socket file has been removed - shutting down\n"); - } - - if (home_inotify_fd != -1 - && FD_ISSET (home_inotify_fd, &read_fdset)) - { - shutdown_pending = 1; - log_info ("homedir has been removed - shutting down\n"); - } - for (idx=0; idx < DIM(listentbl); idx++) { if (listentbl[idx].l_fd == GNUPG_INVALID_FD) ----------------------------------------------------------------------- Summary of changes: agent/gpg-agent.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 13 16:57:25 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 13 Nov 2017 16:57:25 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-79-g65038e6 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 65038e6852185c20413d8f6602218ee636413b77 (commit) from 5d83eb9226c0ce608ec284d8c9bc22ce84a00c25 (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 65038e6852185c20413d8f6602218ee636413b77 Author: Werner Koch Date: Mon Nov 13 16:09:32 2017 +0100 dirmngr: Keep track of domains used for WKD queries * dirmngr/domaininfo.c: New file. * dirmngr/Makefile.am (dirmngr_SOURCES): Add file. * dirmngr/server.c (cmd_wkd_get): Check whether the domain is already known and tell domaininfo about the results. -- This adds a registry for domain information to eventually avoid useless queries for domains which do not support WKD. The missing part is a background task to check whether a queried domain supports WKD at all and to expire old entries. Signed-off-by: Werner Koch diff --git a/dirmngr/Makefile.am b/dirmngr/Makefile.am index b404165..421a325 100644 --- a/dirmngr/Makefile.am +++ b/dirmngr/Makefile.am @@ -16,6 +16,8 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, see . +# +# SPDX-License-Identifier: GPL-3.0+ ## Process this file with automake to produce Makefile.in @@ -57,6 +59,7 @@ noinst_HEADERS = dirmngr.h crlcache.h crlfetch.h misc.h dirmngr_SOURCES = dirmngr.c dirmngr.h server.c crlcache.c crlfetch.c \ certcache.c certcache.h \ + domaininfo.c \ loadswdb.c \ cdb.h cdblib.c misc.c dirmngr-err.h \ ocsp.c ocsp.h validate.c validate.h \ diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 5317c21..2b64655 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -17,6 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, see . + * + * SPDX-License-Identifier: GPL-3.0+ */ #include @@ -1871,6 +1873,7 @@ handle_signal (int signo) case SIGUSR1: cert_cache_print_stats (); + domaininfo_print_stats (); break; case SIGUSR2: diff --git a/dirmngr/dirmngr.h b/dirmngr/dirmngr.h index 1f660de..b08e4fe 100644 --- a/dirmngr/dirmngr.h +++ b/dirmngr/dirmngr.h @@ -17,6 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, see . + * + * SPDX-License-Identifier: GPL-3.0+ */ #ifndef DIRMNGR_H @@ -248,4 +250,14 @@ gpg_error_t gnupg_http_tls_verify_cb (void *opaque, gpg_error_t dirmngr_load_swdb (ctrl_t ctrl, int force); +/*-- domaininfo.c --*/ +void domaininfo_print_stats (void); +int domaininfo_is_wkd_not_supported (const char *domain); +void domaininfo_set_no_name (const char *domain); +void domaininfo_set_wkd_supported (const char *domain); +void domaininfo_set_wkd_not_supported (const char *domain); +void domaininfo_set_wkd_not_found (const char *domain); + + + #endif /*DIRMNGR_H*/ diff --git a/dirmngr/domaininfo.c b/dirmngr/domaininfo.c new file mode 100644 index 0000000..393db8c --- /dev/null +++ b/dirmngr/domaininfo.c @@ -0,0 +1,244 @@ +/* domaininfo.c - Gather statistics about accessed domains + * Copyright (C) 2017 Werner Koch + * + * This file is part of GnuPG. + * + * GnuPG 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 3 of the License, or + * (at your option) any later version. + * + * GnuPG 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 . + * + * SPDX-License-Identifier: GPL-3.0+ + */ + +#include +#include +#include + +#include "dirmngr.h" + + +#define NO_OF_DOMAINBUCKETS 103 + +/* Object to keep track of a domain name. */ +struct domaininfo_s +{ + struct domaininfo_s *next; + unsigned int no_name:1; /* Domain name not found. */ + unsigned int wkd_not_found:1; /* A WKD query failed. */ + unsigned int wkd_supported:1; /* One WKD entry was found. */ + unsigned int wkd_not_supported:1; /* Definitely does not support WKD. */ + char name[1]; +}; +typedef struct domaininfo_s *domaininfo_t; + +/* And the hashed array. */ +static domaininfo_t domainbuckets[NO_OF_DOMAINBUCKETS]; + + +/* The hash function we use. Must not call a system function. */ +static inline u32 +hash_domain (const char *domain) +{ + const unsigned char *s = (const unsigned char*)domain; + u32 hashval = 0; + u32 carry; + + for (; *s; s++) + { + if (*s == '.') + continue; + hashval = (hashval << 4) + *s; + if ((carry = (hashval & 0xf0000000))) + { + hashval ^= (carry >> 24); + hashval ^= carry; + } + } + + return hashval % NO_OF_DOMAINBUCKETS; +} + + +void +domaininfo_print_stats (void) +{ + int bidx; + domaininfo_t di; + int count, no_name, wkd_not_found, wkd_supported, wkd_not_supported; + + for (bidx = 0; bidx < NO_OF_DOMAINBUCKETS; bidx++) + { + count = no_name = wkd_not_found = wkd_supported = wkd_not_supported = 0; + for (di = domainbuckets[bidx]; di; di = di->next) + { + count++; + if (di->no_name) + no_name++; + if (di->wkd_not_found) + wkd_not_found++; + if (di->wkd_supported) + wkd_supported++; + if (di->wkd_not_supported) + wkd_not_supported++; + } + if (count) + log_info ("domaininfo: chain %3d length=%d nn=%d nf=%d s=%d ns=%d\n", + bidx, count, no_name, + wkd_not_found, wkd_supported, wkd_not_supported); + } +} + + +/* Return true if DOMAIN definitely does not support WKD. Noet that + * DOMAIN is expected to be lowercase. */ +int +domaininfo_is_wkd_not_supported (const char *domain) +{ + domaininfo_t di; + + for (di = domainbuckets[hash_domain (domain)]; di; di = di->next) + if (!strcmp (di->name, domain)) + return !!di->wkd_not_supported; + + return 0; /* We don't know. */ +} + + +/* Core update function. DOMAIN is expected to be lowercase. + * CALLBACK is called to update the existing or the newly inserted + * item. */ +static void +insert_or_update (const char *domain, + void (*callback)(domaininfo_t di, int insert_mode)) +{ + domaininfo_t di; + domaininfo_t di_new; + u32 hash; + + hash = hash_domain (domain); + for (di = domainbuckets[hash]; di; di = di->next) + if (!strcmp (di->name, domain)) + { + callback (di, 0); /* Update */ + return; + } + + di_new = xtrycalloc (1, sizeof *di + strlen (domain)); + if (!di_new) + return; /* Out of core - we ignore this. */ + + /* Need to do another lookup because the malloc is a system call and + * thus the hash array may have been changed by another thread. */ + for (di = domainbuckets[hash]; di; di = di->next) + if (!strcmp (di->name, domain)) + { + callback (di, 0); /* Update */ + xfree (di_new); + return; + } + + callback (di_new, 1); /* Insert */ + di = di_new; + di->next = domainbuckets[hash]; + domainbuckets[hash] = di; +} + + +/* Helper for domaininfo_set_no_name. */ +static void +set_no_name_cb (domaininfo_t di, int insert_mode) +{ + (void)insert_mode; + + di->no_name = 1; + /* Obviously the domain is in this case also not supported. */ + di->wkd_not_supported = 1; + + /* The next should already be 0 but we clear it anyway in the case + * of a temporary DNS failure. */ + di->wkd_supported = 0; +} + + +/* Mark DOMAIN as not existent. */ +void +domaininfo_set_no_name (const char *domain) +{ + insert_or_update (domain, set_no_name_cb); +} + + +/* Helper for domaininfo_set_wkd_supported. */ +static void +set_wkd_supported_cb (domaininfo_t di, int insert_mode) +{ + (void)insert_mode; + + di->wkd_supported = 1; + /* The next will already be set unless the domain enabled WKD in the + * meantime. Thus we need to clear it. */ + di->wkd_not_supported = 0; +} + + +/* Mark DOMAIN as supporting WKD. */ +void +domaininfo_set_wkd_supported (const char *domain) +{ + insert_or_update (domain, set_wkd_supported_cb); +} + + +/* Helper for domaininfo_set_wkd_not_supported. */ +static void +set_wkd_not_supported_cb (domaininfo_t di, int insert_mode) +{ + (void)insert_mode; + + di->wkd_not_supported = 1; + di->wkd_supported = 0; +} + + +/* Mark DOMAIN as not supporting WKD queries (e.g. no policy file). */ +void +domaininfo_set_wkd_not_supported (const char *domain) +{ + insert_or_update (domain, set_wkd_not_supported_cb); +} + + + +/* Helper for domaininfo_set_wkd_not_found. */ +static void +set_wkd_not_found_cb (domaininfo_t di, int insert_mode) +{ + /* Set the not found flag but there is no need to do this if we + * already know that the domain either does not support WKD or we + * know that it supports WKD. */ + if (insert_mode) + di->wkd_not_found = 1; + else if (!di->wkd_not_supported && !di->wkd_supported) + di->wkd_not_found = 1; + + /* Better clear this flag in case we had a DNS failure in the + * past. */ + di->no_name = 0; +} + + +/* Update a counter for DOMAIN to keep track of failed WKD queries. */ +void +domaininfo_set_wkd_not_found (const char *domain) +{ + insert_or_update (domain, set_wkd_not_found_cb); +} diff --git a/dirmngr/server.c b/dirmngr/server.c index 7ed6cde..18a5f72 100644 --- a/dirmngr/server.c +++ b/dirmngr/server.c @@ -18,6 +18,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, see . + * + * SPDX-License-Identifier: GPL-3.0+ */ #include @@ -833,11 +835,13 @@ cmd_wkd_get (assuan_context_t ctx, char *line) char *mbox = NULL; char *domainbuf = NULL; char *domain; /* Points to mbox or domainbuf. */ + char *domain_orig;/* Points to mbox. */ char sha1buf[20]; char *uri = NULL; char *encodedhash = NULL; int opt_submission_addr; int opt_policy_flags; + int is_wkd_query; /* True if this is a real WKD query. */ int no_log = 0; char portstr[20] = { 0 }; @@ -846,6 +850,7 @@ cmd_wkd_get (assuan_context_t ctx, char *line) if (has_option (line, "--quick")) ctrl->timeout = opt.connect_quick_timeout; line = skip_options (line); + is_wkd_query = !(opt_policy_flags || opt_submission_addr); mbox = mailbox_from_userid (line); if (!mbox || !(domain = strchr (mbox, '@'))) @@ -854,6 +859,18 @@ cmd_wkd_get (assuan_context_t ctx, char *line) goto leave; } *domain++ = 0; + domain_orig = domain; + + /* First check whether we already know that the domain does not + * support WKD. */ + if (is_wkd_query) + { + if (domaininfo_is_wkd_not_supported (domain_orig)) + { + err = gpg_error (GPG_ERR_NO_DATA); + goto leave; + } + } /* Check for SRV records. */ if (1) @@ -962,6 +979,29 @@ cmd_wkd_get (assuan_context_t ctx, char *line) err = ks_action_fetch (ctrl, uri, outfp); es_fclose (outfp); ctrl->server_local->inhibit_data_logging = 0; + /* Register the result under the domain name of MBOX. */ + switch (gpg_err_code (err)) + { + case 0: + domaininfo_set_wkd_supported (domain_orig); + break; + + case GPG_ERR_NO_NAME: + /* There is no such domain. */ + domaininfo_set_no_name (domain_orig); + break; + + case GPG_ERR_NO_DATA: + if (is_wkd_query) /* Mark that - we will latter do a check. */ + domaininfo_set_wkd_not_found (domain_orig); + else if (opt_policy_flags) /* No policy file - no support. */ + domaininfo_set_wkd_not_supported (domain_orig); + break; + + default: + /* Don't register other errors. */ + break; + } } } ----------------------------------------------------------------------- Summary of changes: dirmngr/Makefile.am | 3 + dirmngr/dirmngr.c | 3 + dirmngr/dirmngr.h | 12 +++ dirmngr/domaininfo.c | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++ dirmngr/server.c | 40 +++++++++ 5 files changed, 302 insertions(+) create mode 100644 dirmngr/domaininfo.c hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Mon Nov 13 18:16:22 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Mon, 13 Nov 2017 18:16:22 +0100 Subject: [git] gnupg-doc - branch, master, updated. ba1fe42a6ba574a8201ab8788a574a862dac586f 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 ba1fe42a6ba574a8201ab8788a574a862dac586f (commit) from 2691758e1bf56e103f4b28587f17e99203069124 (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 ba1fe42a6ba574a8201ab8788a574a862dac586f Author: Werner Koch Date: Mon Nov 13 18:11:59 2017 +0100 verein: Add a new member diff --git a/web/verein/members.org b/web/verein/members.org index 91da777..93c34d7 100644 --- a/web/verein/members.org +++ b/web/verein/members.org @@ -18,6 +18,7 @@ active in development or in evangelizing end-to-end encryption. - Justus Winter - Kai Michaelis - Kristian Fiskerstrand + - Martin Gollowitzer - Maurice Kemmann - Neal Walfied - Phil Pennock ----------------------------------------------------------------------- Summary of changes: web/verein/members.org | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 14 01:03:17 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Tue, 14 Nov 2017 01:03:17 +0100 Subject: [git] GCRYPT - branch, master, updated. libgcrypt-1.8.1-22-gc594f18 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 c594f187bd457b757112adc551ffa4db92962dc1 (commit) from 621f5c4e837347308a6b06a8cfbfc47ca9fae69e (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 c594f187bd457b757112adc551ffa4db92962dc1 Author: NIIBE Yutaka Date: Tue Nov 14 09:01:50 2017 +0900 tests: Add HAVE_MMAP check for MinGW. * tests/t-secmem.c (main): Conditionalize with HAVE_MMAP. -- Thanks to: Andreas Metzler Signed-off-by: NIIBE Yutaka diff --git a/tests/t-secmem.c b/tests/t-secmem.c index ecbc55a..baf013d 100644 --- a/tests/t-secmem.c +++ b/tests/t-secmem.c @@ -120,11 +120,13 @@ main (int argc, char **argv) long int pgsize_val = -1; size_t pgsize; +#if HAVE_MMAP # if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE) pgsize_val = sysconf (_SC_PAGESIZE); # elif defined(HAVE_GETPAGESIZE) pgsize_val = getpagesize (); # endif +#endif pgsize = (pgsize_val > 0)? pgsize_val : DEFAULT_PAGE_SIZE; pool_size = (MINIMUM_POOL_SIZE + pgsize - 1) & ~(pgsize - 1); ----------------------------------------------------------------------- Summary of changes: tests/t-secmem.c | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 14 01:03:43 2017 From: cvs at cvs.gnupg.org (by NIIBE Yutaka) Date: Tue, 14 Nov 2017 01:03:43 +0100 Subject: [git] GCRYPT - branch, LIBGCRYPT-1.8-BRANCH, updated. libgcrypt-1.8.1-4-g334e1a1 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, LIBGCRYPT-1.8-BRANCH has been updated via 334e1a1cfc8f59db765a0bff0ca29090aa11b0f6 (commit) from da127f7505ff7681fc9dbfbf332121d2998e88aa (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 334e1a1cfc8f59db765a0bff0ca29090aa11b0f6 Author: NIIBE Yutaka Date: Tue Nov 14 09:01:50 2017 +0900 tests: Add HAVE_MMAP check for MinGW. * tests/t-secmem.c (main): Conditionalize with HAVE_MMAP. -- Thanks to: Andreas Metzler Signed-off-by: NIIBE Yutaka diff --git a/tests/t-secmem.c b/tests/t-secmem.c index ecbc55a..baf013d 100644 --- a/tests/t-secmem.c +++ b/tests/t-secmem.c @@ -120,11 +120,13 @@ main (int argc, char **argv) long int pgsize_val = -1; size_t pgsize; +#if HAVE_MMAP # if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE) pgsize_val = sysconf (_SC_PAGESIZE); # elif defined(HAVE_GETPAGESIZE) pgsize_val = getpagesize (); # endif +#endif pgsize = (pgsize_val > 0)? pgsize_val : DEFAULT_PAGE_SIZE; pool_size = (MINIMUM_POOL_SIZE + pgsize - 1) & ~(pgsize - 1); ----------------------------------------------------------------------- Summary of changes: tests/t-secmem.c | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 14 12:26:52 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Tue, 14 Nov 2017 12:26:52 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-3-g5ecef19 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 5ecef193bc2144e6d51a6bd5727bfd08a0d28b66 (commit) from 115a04f939de4d7f9322a01aa5500e475e98e61f (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 5ecef193bc2144e6d51a6bd5727bfd08a0d28b66 Author: Andre Heinecke Date: Tue Nov 14 12:24:52 2017 +0100 sm, w32: Fix initial keybox creation * sm/keydb.c (maybe_create_keybox): Open new keybox in bin mode. -- As the header contains a timestamp we will have the conversion problems if the keybox is not opened in binary mode. Signed-off-by: Andre Heinecke diff --git a/sm/keydb.c b/sm/keydb.c index 87fc12d..d85679a 100644 --- a/sm/keydb.c +++ b/sm/keydb.c @@ -205,7 +205,7 @@ maybe_create_keybox (char *filename, int force, int *r_created) /* The file does not yet exist, create it now. */ oldmask = umask (077); - fp = fopen (filename, "w"); + fp = fopen (filename, "wb"); if (!fp) { rc = gpg_error_from_syserror (); ----------------------------------------------------------------------- Summary of changes: sm/keydb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 14 14:30:27 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Tue, 14 Nov 2017 14:30:27 +0100 Subject: [git] GPGME - branch, master, updated. gpgme-1.9.0-80-g56b27b2 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 56b27b21d5f8dd95b9d6415c5e98b821774f3093 (commit) from 00daac15530eabed5e61d841b2df939c2242667c (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 56b27b21d5f8dd95b9d6415c5e98b821774f3093 Author: Andre Heinecke Date: Tue Nov 14 14:28:32 2017 +0100 qt: Fix IODeviceDataProvider with Process * lang/qt/src/dataprovider.cpp (blocking_read): Keep reading if process is not atEnd. -- This fixes a regression in Kleopatra that uses this dataprovider to chain the gpgtar process to the encryption / signing. diff --git a/lang/qt/src/dataprovider.cpp b/lang/qt/src/dataprovider.cpp index 0d527a0..a025a03 100644 --- a/lang/qt/src/dataprovider.cpp +++ b/lang/qt/src/dataprovider.cpp @@ -185,7 +185,11 @@ static qint64 blocking_read(const std::shared_ptr &io, char *buffer, if (p->error() == QProcess::UnknownError && p->exitStatus() == QProcess::NormalExit && p->exitCode() == 0) { - return 0; + if (io->atEnd()) { + // EOF + return 0; + } // continue reading even if process ended to ensure + // everything is read. } else { Error::setSystemError(GPG_ERR_EIO); return -1; ----------------------------------------------------------------------- Summary of changes: lang/qt/src/dataprovider.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) hooks/post-receive -- GnuPG Made Easy http://git.gnupg.org From cvs at cvs.gnupg.org Tue Nov 14 16:30:02 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Tue, 14 Nov 2017 16:30:02 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.1-82-gd4e2302 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 d4e2302d8f4a1ff52d56da4f8e3a5d1c6303822d (commit) via 96a4fbecd1acf946dcde20bef4752c539dae196b (commit) via 26f08343fbccdbaa177c3507a3c5e24a5cf94a2d (commit) from 65038e6852185c20413d8f6602218ee636413b77 (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 d4e2302d8f4a1ff52d56da4f8e3a5d1c6303822d Author: Werner Koch Date: Tue Nov 14 16:24:12 2017 +0100 dirmngr: Check for WKD support at session end * dirmngr/domaininfo.c (insert_or_update): Copy the name. * dirmngr/misc.c (copy_stream): Allow arg OUT to be NULL. * dirmngr/server.c (set_error): Protect CTX. (dirmngr_status): Protect against missing ASSUAN_CTX. (dirmngr_status_help): Ditto. (dirmngr_status_printf): Ditto. (cmd_wkd_get): Factor code out to ... (proc_wkd_get): new func. Support silent operation with no CTX. (task_check_wkd_support): New. -- This finalizes the feature to efficiently cache WKD checks. If a standard WKD query returns no data, we queue a test to be run after the end of the session (so that we do not delay the calling client). This check tests whether the server responsible for the queried address has WKD at all enabled. The test is done by checking whether the "policy" file exists. We do not check the "submission-address" file because that is not necessary for the web key operation. The policy file is now required. Signed-off-by: Werner Koch diff --git a/dirmngr/domaininfo.c b/dirmngr/domaininfo.c index 90cdb85..a2effff 100644 --- a/dirmngr/domaininfo.c +++ b/dirmngr/domaininfo.c @@ -158,6 +158,7 @@ insert_or_update (const char *domain, di_new = xtrycalloc (1, sizeof *di + strlen (domain)); if (!di_new) return; /* Out of core - we ignore this. */ + strcpy (di_new->name, domain); /* Need to do another lookup because the malloc is a system call and * thus the hash array may have been changed by another thread. */ diff --git a/dirmngr/ks-action.c b/dirmngr/ks-action.c index 857aab1..38cd02f 100644 --- a/dirmngr/ks-action.c +++ b/dirmngr/ks-action.c @@ -296,7 +296,8 @@ ks_action_get (ctrl_t ctrl, uri_item_t keyservers, /* Retrieve keys from URL and write the result to the provided output - stream OUTFP. */ + * stream OUTFP. If OUTFP is NULL the data is written to the bit + * bucket. */ gpg_error_t ks_action_fetch (ctrl_t ctrl, const char *url, estream_t outfp) { diff --git a/dirmngr/misc.c b/dirmngr/misc.c index 1716141..6291a9a 100644 --- a/dirmngr/misc.c +++ b/dirmngr/misc.c @@ -636,7 +636,9 @@ armor_data (char **r_string, const void *data, size_t datalen) return 0; } -/* Copy all data from IN to OUT. */ + +/* Copy all data from IN to OUT. OUT may be NULL to use this fucntion + * as a dummy reader. */ gpg_error_t copy_stream (estream_t in, estream_t out) { @@ -647,9 +649,8 @@ copy_stream (estream_t in, estream_t out) { if (!nread) return 0; /* EOF */ - if (es_write (out, buffer, nread, NULL)) + if (out && es_write (out, buffer, nread, NULL)) break; - } return gpg_error_from_syserror (); } diff --git a/dirmngr/server.c b/dirmngr/server.c index 1fbd007..3d0768b 100644 --- a/dirmngr/server.c +++ b/dirmngr/server.c @@ -80,7 +80,8 @@ #define PARM_ERROR(t) assuan_set_error (ctx, \ gpg_error (GPG_ERR_ASS_PARAMETER), (t)) -#define set_error(e,t) assuan_set_error (ctx, gpg_error (e), (t)) +#define set_error(e,t) (ctx ? assuan_set_error (ctx, gpg_error (e), (t)) \ + /**/: gpg_error (e)) @@ -828,15 +829,11 @@ cmd_dns_cert (assuan_context_t ctx, char *line) -static const char hlp_wkd_get[] = - "WKD_GET [--submission-address|--policy-flags] \n" - "\n" - "Return the key or other info for \n" - "from the Web Key Directory."; +/* Core of cmd_wkd_get and task_check_wkd_support. If CTX is NULL + * this function will not write anything to the assuan output. */ static gpg_error_t -cmd_wkd_get (assuan_context_t ctx, char *line) +proc_wkd_get (ctrl_t ctrl, assuan_context_t ctx, char *line) { - ctrl_t ctrl = assuan_get_pointer (ctx); gpg_error_t err = 0; char *mbox = NULL; char *domainbuf = NULL; @@ -895,7 +892,8 @@ cmd_wkd_get (assuan_context_t ctx, char *line) domainlen = strlen (domain); for (i = 0; i < srvscount; i++) { - log_debug ("srv: trying '%s:%hu'\n", srvs[i].target, srvs[i].port); + if (DBG_DNS) + log_debug ("srv: trying '%s:%hu'\n", srvs[i].target, srvs[i].port); targetlen = strlen (srvs[i].target); if ((targetlen > domainlen + 1 && srvs[i].target[targetlen - domainlen - 1] == '.' @@ -972,19 +970,24 @@ cmd_wkd_get (assuan_context_t ctx, char *line) { estream_t outfp; - outfp = es_fopencookie (ctx, "w", data_line_cookie_functions); - if (!outfp) + outfp = ctx? es_fopencookie (ctx, "w", data_line_cookie_functions) : NULL; + if (!outfp && ctx) err = set_error (GPG_ERR_ASS_GENERAL, "error setting up a data stream"); else { - if (no_log) - ctrl->server_local->inhibit_data_logging = 1; - ctrl->server_local->inhibit_data_logging_now = 0; - ctrl->server_local->inhibit_data_logging_count = 0; + if (ctrl->server_local) + { + if (no_log) + ctrl->server_local->inhibit_data_logging = 1; + ctrl->server_local->inhibit_data_logging_now = 0; + ctrl->server_local->inhibit_data_logging_count = 0; + } err = ks_action_fetch (ctrl, uri, outfp); es_fclose (outfp); - ctrl->server_local->inhibit_data_logging = 0; + if (ctrl->server_local) + ctrl->server_local->inhibit_data_logging = 0; + /* Register the result under the domain name of MBOX. */ switch (gpg_err_code (err)) { @@ -998,8 +1001,9 @@ cmd_wkd_get (assuan_context_t ctx, char *line) break; case GPG_ERR_NO_DATA: - if (is_wkd_query) /* Mark that and schedule a check. */ + if (is_wkd_query && ctrl->server_local) { + /* Mark that and schedule a check. */ domaininfo_set_wkd_not_found (domain_orig); workqueue_add_task (task_check_wkd_support, domain_orig, ctrl->server_local->session_id, 1); @@ -1020,6 +1024,23 @@ cmd_wkd_get (assuan_context_t ctx, char *line) xfree (encodedhash); xfree (mbox); xfree (domainbuf); + return err; +} + + +static const char hlp_wkd_get[] = + "WKD_GET [--submission-address|--policy-flags] \n" + "\n" + "Return the key or other info for \n" + "from the Web Key Directory."; +static gpg_error_t +cmd_wkd_get (assuan_context_t ctx, char *line) +{ + ctrl_t ctrl = assuan_get_pointer (ctx); + gpg_error_t err; + + err = proc_wkd_get (ctrl, ctx, line); + return leave_cmd (ctx, err); } @@ -1029,10 +1050,19 @@ cmd_wkd_get (assuan_context_t ctx, char *line) static const char * task_check_wkd_support (ctrl_t ctrl, const char *domain) { + char *string; + if (!ctrl || !domain) return "check_wkd_support"; - log_debug ("FIXME: Implement %s\n", __func__); + string = strconcat ("--policy-flags foo@", domain, NULL); + if (!string) + log_error ("%s: %s\n", __func__, gpg_strerror (gpg_error_from_syserror ())); + else + { + proc_wkd_get (ctrl, NULL, string); + xfree (string); + } return NULL; } @@ -2800,12 +2830,12 @@ dirmngr_status (ctrl_t ctrl, const char *keyword, ...) gpg_error_t err = 0; va_list arg_ptr; const char *text; + assuan_context_t ctx; va_start (arg_ptr, keyword); - if (ctrl->server_local) + if (ctrl->server_local && (ctx = ctrl->server_local->assuan_ctx)) { - assuan_context_t ctx = ctrl->server_local->assuan_ctx; char buf[950], *p; size_t n; @@ -2835,10 +2865,10 @@ gpg_error_t dirmngr_status_help (ctrl_t ctrl, const char *text) { gpg_error_t err = 0; + assuan_context_t ctx; - if (ctrl->server_local) + if (ctrl->server_local && (ctx = ctrl->server_local->assuan_ctx)) { - assuan_context_t ctx = ctrl->server_local->assuan_ctx; char buf[950], *p; size_t n; @@ -2888,7 +2918,10 @@ dirmngr_status_printf (ctrl_t ctrl, const char *keyword, { gpg_error_t err; va_list arg_ptr; - assuan_context_t ctx = ctrl->server_local->assuan_ctx; + assuan_context_t ctx; + + if (!ctrl->server_local || !(ctx = ctrl->server_local->assuan_ctx)) + return 0; va_start (arg_ptr, format); err = vprint_assuan_status (ctx, keyword, format, arg_ptr); commit 96a4fbecd1acf946dcde20bef4752c539dae196b Author: Werner Koch Date: Tue Nov 14 13:42:18 2017 +0100 dirmngr: Add a background task framework. * dirmngr/workqueue.c: New. * dirmngr/Makefile.am (dirmngr_SOURCES): Add new file. * dirmngr/server.c (server_local_s): New field session_id. (cmd_wkd_get): Add a task. (task_check_wkd_support): New stub function. (cmd_getinfo): New sub-commands "session_id" and "workqueue". (start_command_handler): Add arg session_id and store it in SERVER_LOCAL. (dirmngr_status_helpf): New. * dirmngr/dirmngr.h (wqtask_t): New type. * dirmngr/dirmngr.c (main): Pass 0 as session_id to start_command_handler. (start_connection_thread): Introduce a session_id and pass it to start_command_handler. Run post session tasks. (housekeeping_thread): Run global workqueue tasks. -- Signed-off-by: Werner Koch diff --git a/dirmngr/Makefile.am b/dirmngr/Makefile.am index 421a325..43f59bd 100644 --- a/dirmngr/Makefile.am +++ b/dirmngr/Makefile.am @@ -60,6 +60,7 @@ noinst_HEADERS = dirmngr.h crlcache.h crlfetch.h misc.h dirmngr_SOURCES = dirmngr.c dirmngr.h server.c crlcache.c crlfetch.c \ certcache.c certcache.h \ domaininfo.c \ + workqueue.c \ loadswdb.c \ cdb.h cdblib.c misc.c dirmngr-err.h \ ocsp.c ocsp.h validate.c validate.h \ diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 2b64655..9cb0203 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -1134,7 +1134,7 @@ main (int argc, char **argv) cert_cache_init (hkp_cacert_filenames); crl_cache_init (); http_register_netactivity_cb (netactivity_action); - start_command_handler (ASSUAN_INVALID_FD); + start_command_handler (ASSUAN_INVALID_FD, 0); shutdown_reaper (); } #ifndef HAVE_W32_SYSTEM @@ -1939,7 +1939,10 @@ housekeeping_thread (void *arg) network_activity_seen = 0; if (opt.allow_version_check) dirmngr_load_swdb (&ctrlbuf, 0); + workqueue_run_global_tasks (&ctrlbuf, 1); } + else + workqueue_run_global_tasks (&ctrlbuf, 0); dirmngr_deinit_default_ctrl (&ctrlbuf); @@ -2034,6 +2037,8 @@ check_nonce (assuan_fd_t fd, assuan_sock_nonce_t *nonce) static void * start_connection_thread (void *arg) { + static unsigned int last_session_id; + unsigned int session_id; union int_and_ptr_u argval; gnupg_fd_t fd; @@ -2055,12 +2060,17 @@ start_connection_thread (void *arg) if (opt.verbose) log_info (_("handler for fd %d started\n"), FD2INT (fd)); - start_command_handler (fd); + session_id = ++last_session_id; + if (!session_id) + session_id = ++last_session_id; + start_command_handler (fd, session_id); if (opt.verbose) log_info (_("handler for fd %d terminated\n"), FD2INT (fd)); active_connections--; + workqueue_run_post_session_tasks (session_id); + #ifndef HAVE_W32_SYSTEM argval.afd = ASSUAN_INVALID_FD; npth_setspecific (my_tlskey_current_fd, argval.aptr); diff --git a/dirmngr/dirmngr.h b/dirmngr/dirmngr.h index b08e4fe..5189f93 100644 --- a/dirmngr/dirmngr.h +++ b/dirmngr/dirmngr.h @@ -228,9 +228,11 @@ ksba_cert_t get_cert_local_ski (ctrl_t ctrl, gpg_error_t get_istrusted_from_client (ctrl_t ctrl, const char *hexfpr); int dirmngr_assuan_log_monitor (assuan_context_t ctx, unsigned int cat, const char *msg); -void start_command_handler (gnupg_fd_t fd); +void start_command_handler (gnupg_fd_t fd, unsigned int session_id); gpg_error_t dirmngr_status (ctrl_t ctrl, const char *keyword, ...); gpg_error_t dirmngr_status_help (ctrl_t ctrl, const char *text); +gpg_error_t dirmngr_status_helpf (ctrl_t ctrl, const char *format, + ...) GPGRT_ATTR_PRINTF(2,3); gpg_error_t dirmngr_status_printf (ctrl_t ctrl, const char *keyword, const char *format, ...) GPGRT_ATTR_PRINTF(3,4); @@ -258,6 +260,15 @@ void domaininfo_set_wkd_supported (const char *domain); void domaininfo_set_wkd_not_supported (const char *domain); void domaininfo_set_wkd_not_found (const char *domain); +/*-- workqueue.c --*/ +typedef const char *(*wqtask_t)(ctrl_t ctrl, const char *args); + +void workqueue_dump_queue (ctrl_t ctrl); +gpg_error_t workqueue_add_task (wqtask_t func, const char *args, + unsigned int session_id, int need_network); +void workqueue_run_global_tasks (ctrl_t ctrl, int with_network); +void workqueue_run_post_session_tasks (unsigned int session_id); + #endif /*DIRMNGR_H*/ diff --git a/dirmngr/server.c b/dirmngr/server.c index 18a5f72..1fbd007 100644 --- a/dirmngr/server.c +++ b/dirmngr/server.c @@ -90,6 +90,9 @@ struct server_local_s /* Data used to associate an Assuan context with local server data */ assuan_context_t assuan_ctx; + /* The session id (a counter). */ + unsigned int session_id; + /* Per-session LDAP servers. */ ldap_server_t ldapservers; @@ -125,6 +128,9 @@ static es_cookie_io_functions_t data_line_cookie_functions = }; +/* Local prototypes */ +static const char *task_check_wkd_support (ctrl_t ctrl, const char *domain); + @@ -992,8 +998,12 @@ cmd_wkd_get (assuan_context_t ctx, char *line) break; case GPG_ERR_NO_DATA: - if (is_wkd_query) /* Mark that - we will latter do a check. */ - domaininfo_set_wkd_not_found (domain_orig); + if (is_wkd_query) /* Mark that and schedule a check. */ + { + domaininfo_set_wkd_not_found (domain_orig); + workqueue_add_task (task_check_wkd_support, domain_orig, + ctrl->server_local->session_id, 1); + } else if (opt_policy_flags) /* No policy file - no support. */ domaininfo_set_wkd_not_supported (domain_orig); break; @@ -1014,6 +1024,20 @@ cmd_wkd_get (assuan_context_t ctx, char *line) } +/* A task to check whether DOMAIN supports WKD. This is done by + * checking whether the policy flags file can be read. */ +static const char * +task_check_wkd_support (ctrl_t ctrl, const char *domain) +{ + if (!ctrl || !domain) + return "check_wkd_support"; + + log_debug ("FIXME: Implement %s\n", __func__); + + return NULL; +} + + static const char hlp_ldapserver[] = "LDAPSERVER \n" @@ -2428,12 +2452,15 @@ static const char hlp_getinfo[] = "pid - Return the process id of the server.\n" "tor - Return OK if running in Tor mode\n" "dnsinfo - Return info about the DNS resolver\n" - "socket_name - Return the name of the socket.\n"; + "socket_name - Return the name of the socket.\n" + "session_id - Return the current session_id.\n" + "workqueue - Inspect the work queue\n"; static gpg_error_t cmd_getinfo (assuan_context_t ctx, char *line) { ctrl_t ctrl = assuan_get_pointer (ctx); gpg_error_t err; + char numbuf[50]; if (!strcmp (line, "version")) { @@ -2442,8 +2469,6 @@ cmd_getinfo (assuan_context_t ctx, char *line) } else if (!strcmp (line, "pid")) { - char numbuf[50]; - snprintf (numbuf, sizeof numbuf, "%lu", (unsigned long)getpid ()); err = assuan_send_data (ctx, numbuf, strlen (numbuf)); } @@ -2452,6 +2477,11 @@ cmd_getinfo (assuan_context_t ctx, char *line) const char *s = dirmngr_get_current_socket_name (); err = assuan_send_data (ctx, s, strlen (s)); } + else if (!strcmp (line, "session_id")) + { + snprintf (numbuf, sizeof numbuf, "%u", ctrl->server_local->session_id); + err = assuan_send_data (ctx, numbuf, strlen (numbuf)); + } else if (!strcmp (line, "tor")) { int use_tor; @@ -2487,6 +2517,11 @@ cmd_getinfo (assuan_context_t ctx, char *line) } err = 0; } + else if (!strcmp (line, "workqueue")) + { + workqueue_dump_queue (ctrl); + err = 0; + } else err = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT"); @@ -2614,9 +2649,10 @@ dirmngr_assuan_log_monitor (assuan_context_t ctx, unsigned int cat, /* Startup the server and run the main command loop. With FD = -1, - use stdin/stdout. */ + * use stdin/stdout. SESSION_ID is either 0 or a unique number + * identifying a session. */ void -start_command_handler (assuan_fd_t fd) +start_command_handler (assuan_fd_t fd, unsigned int session_id) { static const char hello[] = "Dirmngr " VERSION " at your service"; static char *hello_line; @@ -2693,6 +2729,8 @@ start_command_handler (assuan_fd_t fd) assuan_register_option_handler (ctx, option_handler); assuan_register_reset_notify (ctx, reset_notify); + ctrl->server_local->session_id = session_id; + for (;;) { rc = assuan_accept (ctx); @@ -2792,8 +2830,7 @@ dirmngr_status (ctrl_t ctrl, const char *keyword, ...) } -/* Print a help status line. TEXTLEN gives the length of the text - from TEXT to be printed. The function splits text at LFs. */ +/* Print a help status line. The function splits text at LFs. */ gpg_error_t dirmngr_status_help (ctrl_t ctrl, const char *text) { @@ -2823,6 +2860,26 @@ dirmngr_status_help (ctrl_t ctrl, const char *text) } +/* Print a help status line using a printf like format. The function + * splits text at LFs. */ +gpg_error_t +dirmngr_status_helpf (ctrl_t ctrl, const char *format, ...) +{ + va_list arg_ptr; + gpg_error_t err; + char *buf; + + va_start (arg_ptr, format); + buf = es_vbsprintf (format, arg_ptr); + err = buf? 0 : gpg_error_from_syserror (); + va_end (arg_ptr); + if (!err) + err = dirmngr_status_help (ctrl, buf); + es_free (buf); + return err; +} + + /* This function is similar to print_assuan_status but takes a CTRL * arg instead of an assuan context as first argument. */ gpg_error_t diff --git a/dirmngr/workqueue.c b/dirmngr/workqueue.c new file mode 100644 index 0000000..2cb8573 --- /dev/null +++ b/dirmngr/workqueue.c @@ -0,0 +1,214 @@ +/* workqueue.c - Maintain a queue of background tasks + * Copyright (C) 2017 Werner Koch + * + * This file is part of GnuPG. + * + * GnuPG 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 3 of the License, or + * (at your option) any later version. + * + * GnuPG 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 . + * + * SPDX-License-Identifier: GPL-3.0+ + */ + +#include +#include +#include + +#include "dirmngr.h" + + +/* An object for one item in the workqueue. */ +struct wqitem_s +{ + struct wqitem_s *next; + + /* This flag is set if the task requires network access. */ + unsigned int need_network:1; + + /* The id of the session which created this task. If this is 0 the + * task is not associated with a specific session. */ + unsigned int session_id; + + /* The function to perform the backgrount task. */ + wqtask_t func; + + /* A string with the string argument for that task. */ + char args[1]; +}; +typedef struct wqitem_s *wqitem_t; + + +/* The workque is a simple linked list. */ +static wqitem_t workqueue; + + +/* Dump the queue using Assuan status comments. */ +void +workqueue_dump_queue (ctrl_t ctrl) +{ + wqitem_t saved_workqueue; + wqitem_t item; + unsigned int count; + + /* Temporay detach the entiere workqueue so that other threads don't + * get into our way. */ + saved_workqueue = workqueue; + workqueue = NULL; + + for (count=0, item = saved_workqueue; item; item = item->next) + count++; + + dirmngr_status_helpf (ctrl, "wq: number of entries: %u", count); + for (item = saved_workqueue; item; item = item->next) + dirmngr_status_helpf (ctrl, "wq: sess=%u net=%d %s(\"%.100s%s\")", + item->session_id, item->need_network, + item->func? item->func (NULL, NULL): "nop", + item->args, strlen (item->args) > 100? "[...]":""); + + /* Restore then workqueue. Actually we append the saved queue do a + * possibly updated workqueue. */ + if (!(item=workqueue)) + workqueue = saved_workqueue; + else + { + while (item->next) + item = item->next; + item->next = saved_workqueue; + } +} + + +/* Append the task (FUNC,ARGS) to the work queue. FUNC shall return + * its name when called with (NULL, NULL). */ +gpg_error_t +workqueue_add_task (wqtask_t func, const char *args, unsigned int session_id, + int need_network) +{ + wqitem_t item, wi; + + item = xtrycalloc (1, sizeof *item + strlen (args)); + if (!item) + return gpg_error_from_syserror (); + strcpy (item->args, args); + item->func = func; + item->session_id = session_id; + item->need_network = !!need_network; + + if (!(wi=workqueue)) + workqueue = item; + else + { + while (wi->next) + wi = wi->next; + wi->next = item; + } + return 0; +} + + +/* Run the task described by ITEM. ITEM must have been detached from + * the workqueue; its ownership is transferred to this fucntion. */ +static void +run_a_task (ctrl_t ctrl, wqitem_t item) +{ + log_assert (!item->next); + + if (opt.verbose) + log_info ("session %u: running %s(\"%s%s\")\n", + item->session_id, + item->func? item->func (NULL, NULL): "nop", + item->args, strlen (item->args) > 100? "[...]":""); + if (item->func) + item->func (ctrl, item->args); + + xfree (item); +} + + +/* Run tasks not associated with a session. This is called from the + * ticker every few minutes. If WITH_NETWORK is not set tasks which + * require the network are not run. */ +void +workqueue_run_global_tasks (ctrl_t ctrl, int with_network) +{ + wqitem_t item, prev; + + with_network = !!with_network; + + if (opt.verbose) + log_info ("running scheduled tasks%s\n", with_network?" (with network)":""); + + for (;;) + { + prev = NULL; + for (item = workqueue; item; prev = item, item = item->next) + if (!item->session_id + && (!item->need_network || (item->need_network && with_network))) + break; + if (!item) + break; /* No more tasks to run. */ + + /* Detach that item from the workqueue. */ + if (!prev) + workqueue = item->next; + else + prev->next = item->next; + item->next = NULL; + + /* Run the task. */ + run_a_task (ctrl, item); + } +} + + +/* Run tasks scheduled for running after a session. Those tasks are + * identified by the SESSION_ID. */ +void +workqueue_run_post_session_tasks (unsigned int session_id) +{ + struct server_control_s ctrlbuf; + ctrl_t ctrl = NULL; + wqitem_t item, prev; + + if (!session_id) + return; + + for (;;) + { + prev = NULL; + for (item = workqueue; item; prev = item, item = item->next) + if (item->session_id == session_id) + break; + if (!item) + break; /* No more tasks for this session. */ + + /* Detach that item from the workqueue. */ + if (!prev) + workqueue = item->next; + else + prev->next = item->next; + item->next = NULL; + + /* Create a CTRL object the first time we need it. */ + if (!ctrl) + { + memset (&ctrlbuf, 0, sizeof ctrlbuf); + ctrl = &ctrlbuf; + dirmngr_init_default_ctrl (ctrl); + } + + /* Run the task. */ + run_a_task (ctrl, item); + } + + dirmngr_deinit_default_ctrl (ctrl); +} commit 26f08343fbccdbaa177c3507a3c5e24a5cf94a2d Author: Werner Koch Date: Tue Nov 14 08:37:27 2017 +0100 dirmngr: Limit the number of cached domains for WKD. * dirmngr/domaininfo.c (MAX_DOMAINBUCKET_LEN): New. (insert_or_update): Limit the length of a bucket chain. (domaininfo_print_stats): Print just one summary line. Signed-off-by: Werner Koch diff --git a/dirmngr/domaininfo.c b/dirmngr/domaininfo.c index 393db8c..90cdb85 100644 --- a/dirmngr/domaininfo.c +++ b/dirmngr/domaininfo.c @@ -26,7 +26,18 @@ #include "dirmngr.h" -#define NO_OF_DOMAINBUCKETS 103 +/* Number of bucket for the hash array and limit for the length of a + * bucket chain. For debugging values of 13 and 10 are more suitable + * and a command like + * for j in a b c d e f g h i j k l m n o p q r s t u v w z y z; do \ + * for i in a b c d e f g h i j k l m n o p q r s t u v w z y z; do \ + * gpg-connect-agent --dirmngr "wkd_get foo@$i.$j.gnupg.net" /bye \ + * >/dev/null ; done; done + * will quickly add a couple of domains. + */ +#define NO_OF_DOMAINBUCKETS 103 +#define MAX_DOMAINBUCKET_LEN 20 + /* Object to keep track of a domain name. */ struct domaininfo_s @@ -74,13 +85,18 @@ domaininfo_print_stats (void) int bidx; domaininfo_t di; int count, no_name, wkd_not_found, wkd_supported, wkd_not_supported; + int len, minlen, maxlen; + count = no_name = wkd_not_found = wkd_supported = wkd_not_supported = 0; + maxlen = 0; + minlen = -1; for (bidx = 0; bidx < NO_OF_DOMAINBUCKETS; bidx++) { - count = no_name = wkd_not_found = wkd_supported = wkd_not_supported = 0; + len = 0; for (di = domainbuckets[bidx]; di; di = di->next) { count++; + len++; if (di->no_name) no_name++; if (di->wkd_not_found) @@ -90,11 +106,16 @@ domaininfo_print_stats (void) if (di->wkd_not_supported) wkd_not_supported++; } - if (count) - log_info ("domaininfo: chain %3d length=%d nn=%d nf=%d s=%d ns=%d\n", - bidx, count, no_name, - wkd_not_found, wkd_supported, wkd_not_supported); + if (len > maxlen) + maxlen = len; + if (minlen == -1 || len < minlen) + minlen = len; } + log_info ("domaininfo: items=%d chainlen=%d..%d nn=%d nf=%d ns=%d s=%d\n", + count, + minlen > 0? minlen : 0, + maxlen, + no_name, wkd_not_found, wkd_not_supported, wkd_supported); } @@ -122,7 +143,9 @@ insert_or_update (const char *domain, { domaininfo_t di; domaininfo_t di_new; + domaininfo_t di_cut; u32 hash; + int count; hash = hash_domain (domain); for (di = domainbuckets[hash]; di; di = di->next) @@ -138,7 +161,8 @@ insert_or_update (const char *domain, /* Need to do another lookup because the malloc is a system call and * thus the hash array may have been changed by another thread. */ - for (di = domainbuckets[hash]; di; di = di->next) + di_cut = NULL; + for (count=0, di = domainbuckets[hash]; di; di = di->next, count++) if (!strcmp (di->name, domain)) { callback (di, 0); /* Update */ @@ -146,10 +170,32 @@ insert_or_update (const char *domain, return; } - callback (di_new, 1); /* Insert */ + /* Before we insert we need to check whether the chain gets too long. */ + di_cut = NULL; + if (count >= MAX_DOMAINBUCKET_LEN) + { + for (count=0, di = domainbuckets[hash]; di; di = di->next, count++) + if (count >= MAX_DOMAINBUCKET_LEN/2) + { + di_cut = di->next; + di->next = NULL; + break; + } + } + + /* Insert */ + callback (di_new, 1); di = di_new; di->next = domainbuckets[hash]; domainbuckets[hash] = di; + + /* Remove the rest of the cutted chain. */ + while (di_cut) + { + di = di_cut->next; + xfree (di_cut); + di_cut = di; + } } ----------------------------------------------------------------------- Summary of changes: dirmngr/Makefile.am | 1 + dirmngr/dirmngr.c | 14 +++- dirmngr/dirmngr.h | 13 +++- dirmngr/domaininfo.c | 63 +++++++++++++-- dirmngr/ks-action.c | 3 +- dirmngr/misc.c | 7 +- dirmngr/server.c | 150 ++++++++++++++++++++++++++++-------- dirmngr/workqueue.c | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 420 insertions(+), 45 deletions(-) create mode 100644 dirmngr/workqueue.c hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 08:52:07 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 08:52:07 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-4-gb062ea5 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 b062ea5bc25157c942047b3fe7f5182a06106340 (commit) from 5ecef193bc2144e6d51a6bd5727bfd08a0d28b66 (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 b062ea5bc25157c942047b3fe7f5182a06106340 Author: Werner Koch Date: Wed Nov 15 08:47:32 2017 +0100 gpg: Print AKL info only in verbose mode. * g10/getkey.c (get_pubkey_byname): Print info only in verbose mode. -- GnuPG-bug-id: 3504 Signed-off-by: Werner Koch diff --git a/g10/getkey.c b/g10/getkey.c index c58e8ff..f73e443 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1448,8 +1448,9 @@ get_pubkey_byname (ctrl_t ctrl, GETKEY_CTX * retctx, PKT_public_key * pk, if (!rc) { /* Key found. */ - log_info (_("automatically retrieved '%s' via %s\n"), - name, mechanism); + if (opt.verbose) + log_info (_("automatically retrieved '%s' via %s\n"), + name, mechanism); break; } if (gpg_err_code (rc) != GPG_ERR_NO_PUBKEY ----------------------------------------------------------------------- Summary of changes: g10/getkey.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 08:56:09 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 15 Nov 2017 08:56:09 +0100 Subject: [git] gnupg-doc - branch, master, updated. 851eacab6a48d1d5b642c2e4529ce76ec125bfe7 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 851eacab6a48d1d5b642c2e4529ce76ec125bfe7 (commit) from ba1fe42a6ba574a8201ab8788a574a862dac586f (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 851eacab6a48d1d5b642c2e4529ce76ec125bfe7 Author: Andre Heinecke Date: Wed Nov 15 08:11:16 2017 +0100 web: Remove GPGOE and update GpgOL * web/software/swlist.org (GPGOE): Removed as it is outdated and unmaintained plugin for a dead software. (GpgOL): Clarify it's for windows. Don't use a specific version. GnuPG-Bug-Id: T3502 diff --git a/web/software/swlist.org b/web/software/swlist.org index 26cb2b4..262474c 100644 --- a/web/software/swlist.org +++ b/web/software/swlist.org @@ -192,19 +192,13 @@ Is a mail program for MAC OS X. GnuPG Made Easy is the standard library for applications to access most GnuPG functions. -** [[http://wald.intevation.org/projects/gpgoe][GPGOE]] [Windows] MUA - :PROPERTIES: - :CUSTOM_ID: gpgoe - :END: - -Is a plugin for the Outlook Express MUA. - ** [[http://www.g10code.de/p-gpgol.html][GpgOL]] [Windows] MUA :PROPERTIES: :CUSTOM_ID: gpgol :END: -A plug-in for Microsoft Outlook 2003. It is part of [[http://www.gpg4win.org/][Gpg4win]]. +A plug-in for the Windows version of Microsoft Outlook. +It is part of [[http://www.gpg4win.org/][Gpg4win]]. ** [[http://sites.inka.de/tesla/gpgrelay.html][GPGrelay]] [Windows] MUA :PROPERTIES: ----------------------------------------------------------------------- Summary of changes: web/software/swlist.org | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 09:04:09 2017 From: cvs at cvs.gnupg.org (by Will Thompson) Date: Wed, 15 Nov 2017 09:04:09 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-6-g1faf818 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 1faf8187f9f178ca0c7232a473b41757b613d4db (commit) via 49635b454b010ec63a30b104af48a49504af7753 (commit) from b062ea5bc25157c942047b3fe7f5182a06106340 (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 1faf8187f9f178ca0c7232a473b41757b613d4db Author: Will Thompson Date: Tue Nov 14 15:34:34 2017 +0000 doc: fix NEWSIG documentation -- 08c82b1 introduced one optional argument for this status message. Due to an apparent editing error, the sentence fragment "arguments are currently defined." was left in the documentation. Signed-off-by: Will Thompson diff --git a/doc/DETAILS b/doc/DETAILS index e683e90..e54e8a0 100644 --- a/doc/DETAILS +++ b/doc/DETAILS @@ -394,9 +394,8 @@ pkd:0:1024:B665B1435F4C2 .... FF26ABB: *** NEWSIG [] Is issued right before a signature verification starts. This is useful to define a context for parsing ERROR status messages. - arguments are currently defined. If SIGNERS_UID is given and is - not "-" this is the percent escape value of the OpenPGP Signer's - User ID signature sub-packet. + If SIGNERS_UID is given and is not "-" this is the percent-escaped + value of the OpenPGP Signer's User ID signature sub-packet. *** GOODSIG The signature with the keyid is good. For each signature only one commit 49635b454b010ec63a30b104af48a49504af7753 Author: Will Thompson Date: Tue Nov 14 15:30:34 2017 +0000 doc: expand documentation of PROGRESS message -- This answers two questions that I was only able to answer by examining each site where PROGRESS messages are emitted, and fixes a typo. Signed-off-by: Will Thompson diff --git a/doc/DETAILS b/doc/DETAILS index 0be55f4..e683e90 100644 --- a/doc/DETAILS +++ b/doc/DETAILS @@ -1041,15 +1041,16 @@ pkd:0:1024:B665B1435F4C2 .... FF26ABB: - 4 :: Key is stored on a smartcard. *** PROGRESS [] - Used by the primegen and Public key functions to indicate + Used by the primegen and public key functions to indicate progress. is the character displayed with no --status-fd enabled, with the linefeed replaced by an 'X'. is the current amount done and is amount to be done; a of - 0 indicates that the total amount is not known. The condition + 0 indicates that the total amount is not known. Both are + non-negative integers. The condition : TOTAL && CUR == TOTAL may be used to detect the end of an operation. - Well known values for WHAT are: + Well known values for are: - pk_dsa :: DSA key generation - pk_elg :: Elgamal key generation @@ -1064,7 +1065,9 @@ pkd:0:1024:B665B1435F4C2 .... FF26ABB: the data of a smartcard. - card_busy :: A smartcard is still working - is sometines used to describe the units for and + When refers to a file path, it may be truncated. + + is sometimes used to describe the units for and . For example "B", "KiB", or "MiB". *** BACKUP_KEY_CREATED ----------------------------------------------------------------------- Summary of changes: doc/DETAILS | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 09:57:09 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 15 Nov 2017 09:57:09 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-7-g878b8bf 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 878b8bfdcc3a8becfc46b9287a2d14cd3c875f28 (commit) from 1faf8187f9f178ca0c7232a473b41757b613d4db (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 878b8bfdcc3a8becfc46b9287a2d14cd3c875f28 Author: Andre Heinecke Date: Wed Nov 15 09:54:05 2017 +0100 gpgtar: Prefer --set-filename over implicit name * tools/gpgtar-extract.c: Prefer opt.filename over filename for the directory prefix. -- If you would extract from stdin (filename -) and use set-filename to provide a real filename the "-" would be used for the directory name. With this change an explicit filename is prefered. GnuPG-Bug-Id: T3500 Signed-off-by: Andre Heinecke diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c index b0e17cb..8613d19 100644 --- a/tools/gpgtar-extract.c +++ b/tools/gpgtar-extract.c @@ -345,21 +345,21 @@ gpgtar_extract (const char *filename, int decrypt) dirname = xtrystrdup (opt.directory); else { - if (filename) + if (opt.filename) { - dirprefix = strrchr (filename, '/'); + dirprefix = strrchr (opt.filename, '/'); if (dirprefix) dirprefix++; else - dirprefix = filename; + dirprefix = opt.filename; } - else if (opt.filename) + else if (filename) { - dirprefix = strrchr (opt.filename, '/'); + dirprefix = strrchr (filename, '/'); if (dirprefix) dirprefix++; else - dirprefix = opt.filename; + dirprefix = filename; } if (!dirprefix || !*dirprefix) ----------------------------------------------------------------------- Summary of changes: tools/gpgtar-extract.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 10:21:46 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 10:21:46 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-8-g1b6d1ac 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 1b6d1ac97638ebc5b5ce7d863b166e9b7669bf2f (commit) from 878b8bfdcc3a8becfc46b9287a2d14cd3c875f28 (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 1b6d1ac97638ebc5b5ce7d863b166e9b7669bf2f Author: Werner Koch Date: Wed Nov 15 10:17:17 2017 +0100 doc: Add man page for gpgtar -- This also removes the documentation for gpg-zip which is not distributed anymore. Signed-off-by: Werner Koch diff --git a/doc/Makefile.am b/doc/Makefile.am index 89079b3..097a560 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -91,7 +91,7 @@ myman_sources = gnupg7.texi gpg.texi gpgsm.texi gpg-agent.texi \ dirmngr.texi scdaemon.texi tools.texi wks.texi myman_pages = gpgsm.1 gpg-agent.1 dirmngr.8 scdaemon.1 \ watchgnupg.1 gpgconf.1 addgnupghome.8 gpg-preset-passphrase.1 \ - gpg-connect-agent.1 gpgparsemail.1 symcryptrun.1 \ + gpg-connect-agent.1 gpgparsemail.1 symcryptrun.1 gpgtar.1 \ applygnupgdefaults.8 gpg-wks-client.1 gpg-wks-server.1 \ dirmngr-client.1 if USE_GPG2_HACK @@ -110,7 +110,7 @@ CLEANFILES = yat2m mkdefsinc defs.inc DISTCLEANFILES = gnupg.tmp gnupg.ops yat2m-stamp.tmp yat2m-stamp \ gnupg-card-architecture.eps \ gnupg-module-overview.eps \ - $(myman_pages) gpg-zip.1 gnupg.7 + $(myman_pages) gnupg.7 yat2m: yat2m.c $(CC_FOR_BUILD) -o $@ $(srcdir)/yat2m.c diff --git a/doc/tools.texi b/doc/tools.texi index 332fb01..5104bea 100644 --- a/doc/tools.texi +++ b/doc/tools.texi @@ -20,7 +20,7 @@ GnuPG comes with a couple of smaller tools: * dirmngr-client:: How to use the Dirmngr client tool. * gpgparsemail:: Parse a mail message into an annotated format * symcryptrun:: Call a simple symmetric encryption tool. -* gpg-zip:: Encrypt or sign files into an archive. +* gpgtar:: Encrypt or sign files into an archive. @end menu @c @@ -1894,23 +1894,19 @@ The possible exit status codes of @command{symcryptrun} are: @c - at c GPG-ZIP + at c GPGTAR @c - at c The original manpage on which this section is based was written - at c by Colin Tuckley and Daniel Leidert - at c for the Debian distribution (but may be used by - at c others). - at manpage gpg-zip.1 - at node gpg-zip + at manpage gpgtar.1 + at node gpgtar @section Encrypt or sign files into an archive @ifset manverb -.B gpg-zip +.B gpgtar \- Encrypt or sign files into an archive @end ifset @mansect synopsis @ifset manverb -.B gpg-zip +.B gpgtar .RI [ options ] .I filename1 .I [ filename2, ... ] @@ -1919,61 +1915,130 @@ The possible exit status codes of @command{symcryptrun} are: @end ifset @mansect description - at command{gpg-zip} encrypts or signs files into an archive. It is an + at command{gpgtar} encrypts or signs files into an archive. It is an gpg-ized tar using the same format as used by PGP's PGP Zip. @manpause @noindent - at command{gpg-zip} is invoked this way: + at command{gpgtar} is invoked this way: @example -gpg-zip [options] @var{filename1} [@var{filename2}, ...] @var{directory} [@var{directory2}, ...] +gpgtar [options] @var{filename1} [@var{filename2}, ...] @var{directory} [@var{directory2}, ...] @end example @mansect options @noindent - at command{gpg-zip} understands these options: + at command{gpgtar} understands these options: @table @gnupgtabopt + at item --create + at opindex create +Put given files and directories into a vanilla ``ustar'' archive. + + at item --extract + at opindex extract +Extract all files from a vanilla ``ustar'' archive. + @item --encrypt @itemx -e @opindex encrypt -Encrypt data. This option may be combined with @option{--symmetric} (for output that may be decrypted via a secret key or a passphrase). +Encrypt given files and directories into an archive. This option may +be combined with option @option{--symmetric} for an archive that may +be decrypted via a secret key or a passphrase. @item --decrypt @itemx -d @opindex decrypt -Decrypt data. +Extract all files from an encrypted archive. + + at item --sign + at itemx -s +Make a signed archive from the given files and directories. Thsi can +be combined with option @option{--encrypt} to create a signed and then +encrypted archive. + + at item --list-archive + at itemx -t + at opindex list-archive +List the contents of the specified archive. @item --symmetric @itemx -c Encrypt with a symmetric cipher using a passphrase. The default -symmetric cipher used is CAST5, but may be chosen with the +symmetric cipher used is @value{GPGSYMENCALGO}, but may be chosen with the @option{--cipher-algo} option to @command{gpg}. - at item --sign - at itemx -s -Make a signature. See @command{gpg}. - @item --recipient @var{user} @itemx -r @var{user} @opindex recipient -Encrypt for user id @var{user}. See @command{gpg}. +Encrypt for user id @var{user}. For details see @command{gpg}. @item --local-user @var{user} @itemx -u @var{user} @opindex local-user -Use @var{user} as the key to sign with. See @command{gpg}. - - at item --list-archive - at opindex list-archive -List the contents of the specified archive. +Use @var{user} as the key to sign with. For details see @command{gpg}. @item --output @var{file} @itemx -o @var{file} @opindex output -Write output to specified file @var{file}. +Write the archive to the specified file @var{file}. + + at item --verbose + at itemx -v + at opindex verbose +Enable extra informational output. + + at item --quiet + at itemx -q + at opindex quiet +Try to be as quiet as possible. + + at item --skip-crypto + at opindex skip-crypto +Skip all crypto operations and create or extract vanilla ``ustar'' +archives. + + at item --dry-run + at opindex dry-run +Do not actually output the extracted files. + + at item --directory @var{dir} + at itemx -C @var{dir} + at opindex directory +Extract the files into the directory @var{dir}. The +default is to take the directory name from +the input filename. If no input filename is known a directory named + at file{GPGARCH} is used. + + at item --files-from @var{file} + at itemx -T @var{file} +Take the file names to work from the file @var{file}; one file per +line. + + at item --null + at opindex null +Modify option @option{--files-from} to use a binary nul instead of a +linefeed to separate file names. + + at item --openpgp + at opindex openpgp +This option has no effect becuase OpenPGP encryption and signing is +the default. + + at item --cms + at opindex cms +This option is reserved and shall not be used. It will eventually be +used to encrypt or sign using the CMS protocol; but that is not yet +implemented. + + + at item --set-filename @var{file} + at opindex set-filename +Use the last component of @var{file} as the output directory. The +default is to take the directory name from the input filename. If no +input filename is known a directory named @file{GPGARCH} is used. +This option is deprecated in favor of option @option{--directory}. @item --gpg @var{gpgcmd} @opindex gpg @@ -1981,15 +2046,14 @@ Use the specified command @var{gpgcmd} instead of @command{gpg}. @item --gpg-args @var{args} @opindex gpg-args -Pass the specified options to @command{gpg}. - - at item --tar @var{tarcmd} - at opindex tar -Use the specified command @var{tarcmd} instead of @command{tar}. +Pass the specified extra options to @command{gpg}. @item --tar-args @var{args} @opindex tar-args -Pass the specified options to @command{tar}. +Assume @var{args} are standard options of the command @command{tar} +and parse them. The only supported tar options are "--directory", +"--files-from", and "--null" This is an obsolete options because those +supported tar options can also be given directly. @item --version @opindex version @@ -2017,14 +2081,14 @@ Encrypt the contents of directory @file{mydocs} for user Bob to file @file{test1}: @example -gpg-zip --encrypt --output test1 --gpg-args -r Bob mydocs +gpgtar --encrypt --output test1 -r Bob mydocs @end example @noindent List the contents of archive @file{test1}: @example -gpg-zip --list-archive test1 +gpgtar --list-archive test1 @end example ----------------------------------------------------------------------- Summary of changes: doc/Makefile.am | 4 +- doc/tools.texi | 136 +++++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 102 insertions(+), 38 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 11:22:56 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 11:22:56 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.2-67-g091c4af 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 091c4af64543cf95d92e09664b5eb1b729782064 (commit) via 1b6d1ac97638ebc5b5ce7d863b166e9b7669bf2f (commit) via 878b8bfdcc3a8becfc46b9287a2d14cd3c875f28 (commit) via 1faf8187f9f178ca0c7232a473b41757b613d4db (commit) via 49635b454b010ec63a30b104af48a49504af7753 (commit) via b062ea5bc25157c942047b3fe7f5182a06106340 (commit) via 5ecef193bc2144e6d51a6bd5727bfd08a0d28b66 (commit) via 115a04f939de4d7f9322a01aa5500e475e98e61f (commit) via 6530aff6923b118fad39f9e29c7357370cae650c (commit) via 5bd515005032f9340bd73e4346bbd0aef8518074 (commit) via 30f21f8b0fa6844a9bba3f24dc41b3ac32170109 (commit) via 23bfac6d1a8bd2d0af5a6fac3ba3a6e986d6c9e8 (commit) via 1941287c9d2c9e666bad1bd330db169f0e3d6b6c (commit) via 96d441b315ec5c9f329596cfda28ac13a8bfa21a (commit) via 3607ab2cf382296cb398a92d5ec792239960bf7b (commit) via 78a6d0ce88ae14d8324fbab3aee3286b17e49259 (commit) via 680161647ad56d1ca92988f80bcc4d6fcb20b1eb (commit) via f183b9768b42a6792c55a6129488bd8fbf5e8e6d (commit) via 6070f5a61d4d17ff437c69e1b708d49d107c22dc (commit) via 296783a3181afa605248e27c672cbce7aa88ac0d (commit) via a124907742ab9c2fa382caa4e52803565cb083a3 (commit) via acb300543422c660c87ac2f0211a42f792a65cc4 (commit) via de3a740c2e1156e58d2f94faa85c051740c8988e (commit) via 3da47d19df89d302c0ea25921f4bd8ce55705afe (commit) via 0e5bd473a07f188615c4fce26b73bb452d689d68 (commit) via 3924e1442c6625a2b57573a1a634a5ec56b09a29 (commit) via 4738256f2e0d22302377c9ec7b2ae3999338e6c6 (commit) from d4e2302d8f4a1ff52d56da4f8e3a5d1c6303822d (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 091c4af64543cf95d92e09664b5eb1b729782064 Merge: d4e2302 1b6d1ac Author: Werner Koch Date: Wed Nov 15 11:01:10 2017 +0100 Merge branch 'STABLE-BRANCH-2-2' -- Kept our AUTHORS and README ----------------------------------------------------------------------- Summary of changes: doc/DETAILS | 16 ++-- doc/Makefile.am | 4 +- doc/tools.texi | 136 +++++++++++++++++++++-------- g10/getkey.c | 5 +- po/ca.po | 25 ++++-- po/cs.po | 28 ++++-- po/da.po | 33 ++++--- po/de.po | 27 +++--- po/el.po | 25 ++++-- po/eo.po | 25 ++++-- po/es.po | 33 ++++--- po/et.po | 25 ++++-- po/fi.po | 25 ++++-- po/fr.po | 29 ++++-- po/gl.po | 33 ++++--- po/hu.po | 25 ++++-- po/id.po | 25 ++++-- po/it.po | 25 ++++-- po/ja.po | 28 +++--- po/nb.po | 28 ++++-- po/pl.po | 33 ++++--- po/pt.po | 25 ++++-- po/ro.po | 25 ++++-- po/ru.po | 233 +++++++++++++++++++++++++------------------------ po/sk.po | 25 ++++-- po/sv.po | 35 +++++--- po/tr.po | 25 ++++-- po/uk.po | 29 ++++-- po/zh_CN.po | 25 ++++-- po/zh_TW.po | 28 ++++-- sm/keydb.c | 2 +- tools/gpgtar-extract.c | 12 +-- 32 files changed, 692 insertions(+), 405 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 11:39:24 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 11:39:24 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.2-68-g166f3f9 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 166f3f9ec40888e10cb0c51017944bfc57503fc1 (commit) from 091c4af64543cf95d92e09664b5eb1b729782064 (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 166f3f9ec40888e10cb0c51017944bfc57503fc1 Author: Werner Koch Date: Wed Nov 15 11:34:30 2017 +0100 gpg: Repurpose the ISO defined DO "sex" to "salutation". * g10/card-util.c (current_card_status): String changes. (change_sex): Description change. (cmds): Add "salutation"; keep "sex" as an alias. -- Note that we can't change the used values or tags but at least the UI should show reflect the real purpose of the field. Signed-off-by: Werner Koch diff --git a/g10/card-util.c b/g10/card-util.c index 8a03a26..854b94f 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -531,9 +531,9 @@ current_card_status (ctrl_t ctrl, estream_t fp, print_isoname (fp, "Name of cardholder: ", "name", info.disp_name); print_name (fp, "Language prefs ...: ", info.disp_lang); - tty_fprintf (fp, "Sex ..............: %s\n", - info.disp_sex == 1? _("male"): - info.disp_sex == 2? _("female") : _("unspecified")); + tty_fprintf (fp, "Salutation .......: %s\n", + info.disp_sex == 1? _("Mr."): + info.disp_sex == 2? _("Mrs.") : ""); print_name (fp, "URL of public key : ", info.pubkey_url); print_name (fp, "Login data .......: ", info.login_data); if (info.private_do[0]) @@ -1088,7 +1088,7 @@ change_sex (void) int rc; data = cpr_get ("cardedit.change_sex", - _("Sex ((M)ale, (F)emale or space): ")); + _("Salutation (M = Mr., F = Mrs., or space): ")); if (!data) return -1; trim_spaces (data); @@ -1109,7 +1109,7 @@ change_sex (void) rc = agent_scd_setattr ("DISP-SEX", str, 1, NULL ); if (rc) - log_error ("error setting sex: %s\n", gpg_strerror (rc)); + log_error ("error setting salutation: %s\n", gpg_strerror (rc)); xfree (data); write_sc_op_status (rc); return rc; @@ -1891,7 +1891,8 @@ static struct { "fetch" , cmdFETCH , 0, N_("fetch the key specified in the card URL")}, { "login" , cmdLOGIN , 1, N_("change the login name")}, { "lang" , cmdLANG , 1, N_("change the language preferences")}, - { "sex" , cmdSEX , 1, N_("change card holder's sex")}, + { "salutation",cmdSEX , 1, N_("change card holder's salutation")}, + { "sex" ,cmdSEX , 1, NULL }, /* Backward compatibility. */ { "cafpr" , cmdCAFPR , 1, N_("change a CA fingerprint")}, { "forcesig", cmdFORCESIG, 1, N_("toggle the signature force PIN flag")}, { "generate", cmdGENERATE, 1, N_("generate new keys")}, diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 6fcec3e..e9eca49 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -98,7 +98,7 @@ static struct { { 0x0065, 1, 0, 1, 0, 0, 0, 0, "Cardholder Related Data"}, { 0x005B, 0, 0x65, 0, 0, 0, 0, 0, "Name" }, { 0x5F2D, 0, 0x65, 0, 0, 0, 0, 0, "Language preferences" }, - { 0x5F35, 0, 0x65, 0, 0, 0, 0, 0, "Sex" }, + { 0x5F35, 0, 0x65, 0, 0, 0, 0, 0, "Salutation" }, { 0x006E, 1, 0, 1, 0, 0, 0, 0, "Application Related Data" }, { 0x004F, 0, 0x6E, 1, 0, 0, 0, 0, "AID" }, { 0x0073, 1, 0, 1, 0, 0, 0, 0, "Discretionary Data Objects" }, ----------------------------------------------------------------------- Summary of changes: g10/card-util.c | 13 +++++++------ scd/app-openpgp.c | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 11:45:03 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 15 Nov 2017 11:45:03 +0100 Subject: [git] GnuPG - branch, STABLE-BRANCH-2-2, updated. gnupg-2.2.2-9-g4f5afaf 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 4f5afaf1fdb5cb13859aca390ccb5a1ba1dba00c (commit) from 1b6d1ac97638ebc5b5ce7d863b166e9b7669bf2f (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 4f5afaf1fdb5cb13859aca390ccb5a1ba1dba00c Author: Andre Heinecke Date: Wed Nov 15 11:41:54 2017 +0100 w32: Fix default registry path * configure.ac (GNUPG_REGISTRY_DIR): Remove leading backslash. -- Windows does not like the leading backslash and won't read the key. Problem reported in the Gpg4win Message boards. This bug was introduced by rev. 75ba215e Signed-off-by: Andre Heinecke diff --git a/configure.ac b/configure.ac index 227b57f..13f1ab6 100644 --- a/configure.ac +++ b/configure.ac @@ -1814,7 +1814,7 @@ AC_DEFINE_UNQUOTED(DIRMNGR_DEFAULT_KEYSERVER, AC_DEFINE_UNQUOTED(GPGEXT_GPG, "gpg", [The standard binary file suffix]) if test "$have_w32_system" = yes; then - AC_DEFINE_UNQUOTED(GNUPG_REGISTRY_DIR, "\\\\Software\\\\GNU\\\\GnuPG", + AC_DEFINE_UNQUOTED(GNUPG_REGISTRY_DIR, "Software\\\\GNU\\\\GnuPG", [The directory part of the W32 registry keys]) fi ----------------------------------------------------------------------- Summary of changes: configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 13:56:04 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 13:56:04 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.2-73-gd05e54a 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 d05e54ac4fadc66543ccca45bb90fea2bba49d14 (commit) via 4a7fe9a596b639a0edb08502f20cb293129e5a33 (commit) via 08a4b3bc41e50b14197177358fd054e6926753ef (commit) via 149041b0b917f4298239fe18b5ebd5ead71584a6 (commit) via 0471ff9d3bf8d6b9a359f3c426d70d0935066907 (commit) from 166f3f9ec40888e10cb0c51017944bfc57503fc1 (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 d05e54ac4fadc66543ccca45bb90fea2bba49d14 Author: Werner Koch Date: Wed Nov 15 13:46:40 2017 +0100 i18n: Add an article to "agent" and lowercase "dirmngr" in one file. -- Signed-off-by: Werner Koch diff --git a/common/asshelp.c b/common/asshelp.c index 7f5173d..542747a 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -356,7 +356,7 @@ wait_for_sock (int secs, int which, const char *sockname, { log_info (which == 1? _("connection to the dirmngr established\n"): - _("connection to agent established\n")); + _("connection to the agent established\n")); *did_success_msg = 1; } break; @@ -513,7 +513,7 @@ start_new_gpg_agent (assuan_context_t *r_ctx, } if (debug && !did_success_msg) - log_debug ("connection to agent established\n"); + log_debug ("connection to the agent established\n"); err = assuan_transact (ctx, "RESET", NULL, NULL, NULL, NULL, NULL, NULL); @@ -530,7 +530,7 @@ start_new_gpg_agent (assuan_context_t *r_ctx, NULL, NULL, NULL, NULL, NULL, NULL)) { if (verbose) - log_info (_("connection to agent is in restricted mode\n")); + log_info (_("connection to the agent is in restricted mode\n")); err = 0; } } @@ -587,7 +587,7 @@ start_new_dirmngr (assuan_context_t *r_ctx, dirmngr_program = gnupg_module_name (GNUPG_MODULE_NAME_DIRMNGR); if (verbose) - log_info (_("no running Dirmngr - starting '%s'\n"), + log_info (_("no running dirmngr - starting '%s'\n"), dirmngr_program); if (status_cb) commit 4a7fe9a596b639a0edb08502f20cb293129e5a33 Author: Werner Koch Date: Wed Nov 15 13:47:48 2017 +0100 common: Tweak new code to keep already translated strings. * common/asshelp.c (wait_for_sock): Replace NAME by WHICH and adjust caller. Revert to use the former strings. -- Note that the second of these strings "waiting for the agent to come up ... (%ds)\n" "connection to agent established\n" does not use a proper article. This should be fixed but would introduce a string change so that it is better done in a separate commit. Fixes-commit: 0471ff9d3bf8d6b9a359f3c426d70d0935066907 Signed-off-by: Werner Koch diff --git a/common/asshelp.c b/common/asshelp.c index 76f812d..7f5173d 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -307,8 +307,19 @@ unlock_spawning (lock_spawn_t *lock, const char *name) } } + +/* Helper for start_new_gpg_agent and start_new_dirmngr. + * Values for WHICH are: + * 0 - Start gpg-agent + * 1 - Start dirmngr + * SECS give the number of seconds to wait. SOCKNAME is the name of + * the socket to connect. VERBOSE is the usual verbose flag. CTX is + * the assuan context. DID_SUCCESS_MSG will be set to 1 if a success + * messages has been printed. + */ static gpg_error_t -wait_for_sock (int secs, const char *name, const char *sockname, int verbose, assuan_context_t ctx, int *did_success_msg) +wait_for_sock (int secs, int which, const char *sockname, + int verbose, assuan_context_t ctx, int *did_success_msg) { gpg_error_t err = 0; int target_us = secs * 1000000; @@ -329,8 +340,10 @@ wait_for_sock (int secs, const char *name, const char *sockname, int verbose, as secsleft = (target_us - elapsed_us)/1000000; if (secsleft < lastalert) { - log_info (_("waiting for the %s to come up ... (%ds)\n"), - name, secsleft); + log_info (which == 1? + _("waiting for the dirmngr to come up ... (%ds)\n"): + _("waiting for the agent to come up ... (%ds)\n"), + secsleft); lastalert = secsleft; } } @@ -341,8 +354,9 @@ wait_for_sock (int secs, const char *name, const char *sockname, int verbose, as { if (verbose) { - log_info (_("connection to %s established\n"), - name); + log_info (which == 1? + _("connection to the dirmngr established\n"): + _("connection to agent established\n")); *did_success_msg = 1; } break; @@ -354,6 +368,7 @@ wait_for_sock (int secs, const char *name, const char *sockname, int verbose, as return err; } + /* Try to connect to the agent via socket or start it if it is not running and AUTOSTART is set. Handle the server's initial greeting. Returns a new assuan context at R_CTX or an error @@ -480,7 +495,7 @@ start_new_gpg_agent (assuan_context_t *r_ctx, log_error ("failed to start agent '%s': %s\n", agent_program, gpg_strerror (err)); else - err = wait_for_sock (SECS_TO_WAIT_FOR_AGENT, "agent", + err = wait_for_sock (SECS_TO_WAIT_FOR_AGENT, 0, sockname, verbose, ctx, &did_success_msg); } @@ -614,7 +629,7 @@ start_new_dirmngr (assuan_context_t *r_ctx, log_error ("failed to start the dirmngr '%s': %s\n", dirmngr_program, gpg_strerror (err)); else - err = wait_for_sock (SECS_TO_WAIT_FOR_DIRMNGR, "dirmngr", + err = wait_for_sock (SECS_TO_WAIT_FOR_DIRMNGR, 1, sockname, verbose, ctx, &did_success_msg); } commit 08a4b3bc41e50b14197177358fd054e6926753ef Merge: 166f3f9 149041b Author: Werner Koch Date: Wed Nov 15 13:10:19 2017 +0100 Merge T3490-proposal1 into master -- ----------------------------------------------------------------------- Summary of changes: common/asshelp.c | 114 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 45 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 14:15:02 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 15 Nov 2017 14:15:02 +0100 Subject: [git] GpgOL - branch, master, updated. gpgol-2.0.1-9-g74cf5f1 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 MS Outlook". The branch, master has been updated via 74cf5f10861c8a6acc3abab4e5b0befc6a8ef791 (commit) from c499ce50aa9f1e9fe85549e82d0e799aa7de0134 (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 74cf5f10861c8a6acc3abab4e5b0befc6a8ef791 Author: Andre Heinecke Date: Wed Nov 15 14:05:28 2017 +0100 Return correct charset for html * src/parsecontroller.cpp (get_html_charset): Do it. -- No comment. GnuPG-Bug-Id: T3455 diff --git a/src/parsecontroller.cpp b/src/parsecontroller.cpp index c93c173..3754001 100644 --- a/src/parsecontroller.cpp +++ b/src/parsecontroller.cpp @@ -418,7 +418,7 @@ ParseController::get_html_charset() const { if (m_outputprovider) { - return m_outputprovider->get_body_charset(); + return m_outputprovider->get_html_charset(); } else { ----------------------------------------------------------------------- Summary of changes: src/parsecontroller.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- GnuPG extension for MS Outlook http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 14:37:39 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 15 Nov 2017 14:37:39 +0100 Subject: [git] GpgOL - branch, master, updated. gpgol-2.0.1-10-g8733e4d 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 MS Outlook". The branch, master has been updated via 8733e4d426bb9cdb8cce1db3e4ca67b656b27710 (commit) from 74cf5f10861c8a6acc3abab4e5b0befc6a8ef791 (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 8733e4d426bb9cdb8cce1db3e4ca67b656b27710 Author: Andre Heinecke Date: Wed Nov 15 14:34:25 2017 +0100 Workaround crash when accessing CurrentView * src/explorer-events.cpp (EVENT_SINK_INVOKE), src/ribbon-callbacks.cpp (get_mail_from_control): Use preview pane instead. -- Somehow latest Outlook 2016 crashes when accessing the current view of the Explorer. This is even reproducible with GpgOL disabled and only with Outlook Spy active. If you select the explorer of an Outlook.com resource and then access the CurrentView and close the CurrentView again in Outlook Spy outlook crashes. GnuPG-Bug-Id: T3484 diff --git a/src/explorer-events.cpp b/src/explorer-events.cpp index ed599ef..2e457ab 100644 --- a/src/explorer-events.cpp +++ b/src/explorer-events.cpp @@ -82,6 +82,13 @@ EVENT_SINK_INVOKE(ExplorerEvents) { log_oom_extra ("%s:%s: Selection change in explorer: %p", SRCNAME, __func__, this); +#if 0 + This is fragile. Somehow. Accessing the current view of the + Explorer might crash outlook. This is even reproducable with + GpgOL enabled and only with Outlook Spy. If you select + the explorer of an Outlook.com resource and then access + the CurrentView and close the CurrentView again outlook crashes. + LPDISPATCH tableView = get_oom_object (m_object, "CurrentView"); if (!tableView) { @@ -94,6 +101,14 @@ EVENT_SINK_INVOKE(ExplorerEvents) { break; } +#else + LPDISPATCH prevEdit = get_oom_object (m_object, "PreviewPane.WordEditor"); + gpgol_release (prevEdit); + if (!prevEdit) + { + break; + } +#endif HANDLE thread = CreateThread (NULL, 0, invalidate_ui, (LPVOID) this, 0, NULL); diff --git a/src/ribbon-callbacks.cpp b/src/ribbon-callbacks.cpp index 4e69d8e..c2a78d1 100644 --- a/src/ribbon-callbacks.cpp +++ b/src/ribbon-callbacks.cpp @@ -1468,26 +1468,14 @@ get_mail_from_control (LPDISPATCH ctrl, bool *none_selected) // Avoid showing wrong crypto state if we don't have a reading // pane. In that case the parser will finish for a mail which is gone // and the crypto state will not get updated. - LPDISPATCH tableView = get_oom_object (context, "CurrentView"); - if (!tableView) + LPDISPATCH prevEdit = get_oom_object (context, "PreviewPane.WordEditor"); + gpgol_release (prevEdit); + if (!prevEdit) { - // Woops, should not happen. - TRACEPOINT; *none_selected = true; gpgol_release (mailitem); mailitem = nullptr; } - else - { - int hasReadingPane = get_oom_bool (tableView, "ShowReadingPane"); - gpgol_release (tableView); - if (!hasReadingPane) - { - *none_selected = true; - gpgol_release (mailitem); - mailitem = nullptr; - } - } } } ----------------------------------------------------------------------- Summary of changes: src/explorer-events.cpp | 15 +++++++++++++++ src/ribbon-callbacks.cpp | 18 +++--------------- 2 files changed, 18 insertions(+), 15 deletions(-) hooks/post-receive -- GnuPG extension for MS Outlook http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 15:36:59 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 15:36:59 +0100 Subject: [git] GnuPG - branch, master, updated. gnupg-2.2.2-75-g0cfdd3b 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 0cfdd3b57d592fb6baa7dafe8fde124e8a6c7798 (commit) via 8704304699bcbc1c10d0315ec7d25a1ae05c9905 (commit) from d05e54ac4fadc66543ccca45bb90fea2bba49d14 (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 0cfdd3b57d592fb6baa7dafe8fde124e8a6c7798 Author: Werner Koch Date: Wed Nov 15 15:30:21 2017 +0100 assuan: Fix exponential decay for first second. * common/asshelp.c (wait_for_sock): Round SECSLEFT. * dirmngr/dirmngr.c (main): Take care of --debug-wait also in dameon mode. * common/sysutils.c (gnupg_usleep) [HAVE_NANOSLEEP]: Fix nanosleep use. -- Without the rounding we saw in verbose mose [...]to come up ... (5s) [...]to come up ... (4s) immediately without the expected one second delay. Waiting for the next seconds did not work if nanosleep was used due to improper passed parameters in gnupg_usleep. Adding --debug-wait for dirmngr in daemon mode is required to test this change. GnuPG-bug-id: 3490 Fixes-commit: 149041b0b917f4298239fe18b5ebd5ead71584a6 Signed-off-by: Werner Koch diff --git a/common/asshelp.c b/common/asshelp.c index 542747a..b9c0cf4 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -337,7 +337,10 @@ wait_for_sock (int secs, int which, const char *sockname, { if (verbose) { - secsleft = (target_us - elapsed_us)/1000000; + secsleft = (target_us - elapsed_us + 999999)/1000000; + /* log_clock ("left=%d last=%d targ=%d elap=%d next=%d\n", */ + /* secsleft, lastalert, target_us, elapsed_us, */ + /* next_sleep_us); */ if (secsleft < lastalert) { log_info (which == 1? diff --git a/common/sysutils.c b/common/sysutils.c index e90010c..55a7ee9 100644 --- a/common/sysutils.c +++ b/common/sysutils.c @@ -340,11 +340,10 @@ gnupg_usleep (unsigned int usecs) struct timespec req; struct timespec rem; - req.tv_sec = 0; - req.tv_nsec = usecs * 1000; - + req.tv_sec = usecs / 1000000; + req.tv_nsec = (usecs % 1000000) * 1000; while (nanosleep (&req, &rem) < 0 && errno == EINTR) - req = rem; + req = rem; } #else /*Standard Unix*/ diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 9cb0203..631256d 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -1193,6 +1193,14 @@ main (int argc, char **argv) current_logfile = xstrdup (logfile); } + if (debug_wait) + { + log_debug ("waiting for debugger - my pid is %u .....\n", + (unsigned int)getpid()); + gnupg_sleep (debug_wait); + log_debug ("... okay\n"); + } + #ifndef HAVE_W32_SYSTEM if (strchr (socket_name, ':')) { commit 8704304699bcbc1c10d0315ec7d25a1ae05c9905 Author: Werner Koch Date: Wed Nov 15 14:46:14 2017 +0100 common: Change log_clock to printf style. * common/logging.c (log_clock): Use do_logv. Signed-off-by: Werner Koch diff --git a/common/logging.c b/common/logging.c index 82b21e2..9f04a69 100644 --- a/common/logging.c +++ b/common/logging.c @@ -1039,14 +1039,16 @@ log_printsexp () {} is found in sexputils.c */ -/* Print a microsecond timestamp followed by STRING. */ +/* Print a microsecond timestamp followed by a FORMAT. */ void -log_clock (const char *string) +log_clock (const char *fmt, ...) { #if ENABLE_LOG_CLOCK static unsigned long long initial; struct timespec tv; unsigned long long now; + char clockbuf[50]; + va_list arg_ptr; if (clock_gettime (CLOCK_REALTIME, &tv)) { @@ -1059,10 +1061,20 @@ log_clock (const char *string) if (!initial) initial = now; - log_debug ("[%6llu] %s", (now - initial)/1000, string); + snprintf (clockbuf, sizeof clockbuf, "[%6llu] ", (now - initial)/1000); + va_start (arg_ptr, fmt); + do_logv (GPGRT_LOG_DEBUG, 0, NULL, clockbuf, fmt, arg_ptr); + va_end (arg_ptr); + #else /*!ENABLE_LOG_CLOCK*/ + /* You may need to link with -ltr to use the above code. */ - log_debug ("[not enabled by configure] %s", string); + va_list arg_ptr; + + va_start (arg_ptr, fmt); + do_logv (GPGRT_LOG_DEBUG, 0, NULL, "[no clock] ", fmt, arg_ptr); + va_end (arg_ptr); + #endif /*!ENABLE_LOG_CLOCK*/ } diff --git a/common/logging.h b/common/logging.h index e1bf56b..34843c7 100644 --- a/common/logging.h +++ b/common/logging.h @@ -109,7 +109,7 @@ void log_flush (void); by the hexdump and a final LF. */ void log_printhex (const char *text, const void *buffer, size_t length); -void log_clock (const char *string); +void log_clock (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); #endif /*GNUPG_COMMON_LOGGING_H*/ ----------------------------------------------------------------------- Summary of changes: common/asshelp.c | 5 ++++- common/logging.c | 20 ++++++++++++++++---- common/logging.h | 2 +- common/sysutils.c | 7 +++---- dirmngr/dirmngr.c | 8 ++++++++ 5 files changed, 32 insertions(+), 10 deletions(-) hooks/post-receive -- The GNU Privacy Guard http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 15:48:01 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 15:48:01 +0100 Subject: [git] Assuan - branch, master, updated. libassuan-2.4.3-8-g7b408d3 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 "IPC library used by GnuPG". The branch, master has been updated via 7b408d356094ab0ef0a07904a3ddf3832a8aa197 (commit) from 87c2bb5708ff202651fca81d91d5f1e0c898cb07 (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 7b408d356094ab0ef0a07904a3ddf3832a8aa197 Author: Werner Koch Date: Wed Nov 15 15:43:24 2017 +0100 Fix the nanosleep case of __assuan_usleep. * src/system-posix.c (__assuan_usleep): Handle full seconds. -- This function would have failed for any value >= 1000000 because the nsec field is limited to 999999999 and the function fails for larger values. Signed-off-by: Werner Koch diff --git a/src/assuan-socket.c b/src/assuan-socket.c index 6131e5b..147ec2a 100644 --- a/src/assuan-socket.c +++ b/src/assuan-socket.c @@ -745,6 +745,11 @@ socks5_connect (assuan_context_t ctx, assuan_fd_t sock, ret = _assuan_connect (ctx, HANDLE2SOCKET (sock), proxyaddr, proxyaddrlen); } + /* If we get an EINPROGRESS here the caller is trying to do a + * non-blocking connect (e.g. for custom time out handling) which + * fails here. The easiest fix would be to allow the client to tell + * us the timeout value and we do the timeout handling later on in the + * Socks protocol. */ if (ret) return ret; buffer[0] = 5; /* RFC-1928 VER field. */ diff --git a/src/system-posix.c b/src/system-posix.c index 52376da..65d2c8c 100644 --- a/src/system-posix.c +++ b/src/system-posix.c @@ -68,9 +68,8 @@ __assuan_usleep (assuan_context_t ctx, unsigned int usec) struct timespec req; struct timespec rem; - req.tv_sec = 0; - req.tv_nsec = usec * 1000; - + req.tv_sec = usecs / 1000000; + req.tv_nsec = (usecs % 1000000) * 1000; while (nanosleep (&req, &rem) < 0 && errno == EINTR) req = rem; } ----------------------------------------------------------------------- Summary of changes: src/assuan-socket.c | 5 +++++ src/system-posix.c | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) hooks/post-receive -- IPC library used by GnuPG http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 16:22:29 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Wed, 15 Nov 2017 16:22:29 +0100 Subject: [git] GpgOL - branch, master, updated. gpgol-2.0.1-14-gc5ed287 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 MS Outlook". The branch, master has been updated via c5ed287937bbcb894549fd4ec4ac696425189aea (commit) via af005db32d2fd79f846a91e4fa7a100ca6e767b8 (commit) via aebf5de38aab89136aff4e2c6cf49b7248eaa8ba (commit) via eb035a2e69944dfce39c62d96d51f8459bb3386b (commit) from 8733e4d426bb9cdb8cce1db3e4ca67b656b27710 (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 c5ed287937bbcb894549fd4ec4ac696425189aea Author: Andre Heinecke Date: Wed Nov 15 16:14:56 2017 +0100 Ugly fix for ugly crash when pasting recipients * src/mailitem-events.cpp (do_delayed_locate): Delay a RECIPIENT_ADDED Signal. (EVENT_SINK_INVOKE): Only trigger once per change. Invoke delayed thread. * src/windowmessages.cpp (gpgol_window_proc): Handle Recipient Added signal. -- This is a fix for crashes that happend if a resolved recipient is copied and pasted. If we then access the recipients object in the Property Change event Outlook says no (crash). Thus we do the delay dance. diff --git a/src/mailitem-events.cpp b/src/mailitem-events.cpp index 0772004..36b4542 100644 --- a/src/mailitem-events.cpp +++ b/src/mailitem-events.cpp @@ -102,6 +102,14 @@ MailItemEvents::~MailItemEvents() static bool propchangeWarnShown = false; +static DWORD WINAPI +do_delayed_locate (LPVOID arg) +{ + Sleep(100); + do_in_ui_thread (RECIPIENT_ADDED, arg); + return 0; +} + /* The main Invoke function. The return value of this function does not appear to have any effect on outlook although I have read in an example somewhere that you @@ -239,13 +247,22 @@ EVENT_SINK_INVOKE(MailItemEvents) { break; } - if (!wcscmp (prop_name, L"To") || + if (!wcscmp (prop_name, L"To") /* || !wcscmp (prop_name, L"BCC") || - !wcscmp (prop_name, L"CC")) + !wcscmp (prop_name, L"CC") + Testing shows that Outlook always sends these three in a row + */) { if ((m_mail->needs_crypto() & 1)) { - m_mail->locate_keys(); + /* XXX Racy race. This is a fix for crashes + that happend if a resolved recipient is copied an pasted. + If we then access the recipients object in the Property + Change event we crash. Thus we do the delay dance. */ + HANDLE thread = CreateThread (NULL, 0, do_delayed_locate, + (LPVOID) m_mail, 0, + NULL); + CloseHandle(thread); } } break; diff --git a/src/windowmessages.cpp b/src/windowmessages.cpp index 1741a33..316e00e 100644 --- a/src/windowmessages.cpp +++ b/src/windowmessages.cpp @@ -55,6 +55,18 @@ gpgol_window_proc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) mail->parsing_done(); break; } + case (RECIPIENT_ADDED): + { + auto mail = (Mail*) ctx->data; + if (!Mail::is_valid_ptr (mail)) + { + log_debug ("%s:%s: Recipient add for mail which is gone.", + SRCNAME, __func__); + break; + } + mail->locate_keys(); + break; + } case (INVALIDATE_UI): { log_debug ("%s:%s: Invalidating UI", diff --git a/src/windowmessages.h b/src/windowmessages.h index 281a3b8..6e875d7 100644 --- a/src/windowmessages.h +++ b/src/windowmessages.h @@ -40,6 +40,8 @@ typedef enum _gpgol_wmsg_type INVALIDATE_UI = 1, /* The UI should be invalidated. */ PARSING_DONE = 2, /* A mail was parsed. Data should be a pointer to the mail object. */ + RECIPIENT_ADDED = 3, /* A recipient was added. Data should be ptr + to mail */ } gpgol_wmsg_type; typedef struct commit af005db32d2fd79f846a91e4fa7a100ca6e767b8 Author: Andre Heinecke Date: Wed Nov 15 16:10:49 2017 +0100 Lock key lookup map * src/mail.cpp (do_locate): Comment out useless message. (Mail::locate_keys): Guard list access with lock. -- Does not really fix a bug but noticed a race there when codestaring. diff --git a/src/mail.cpp b/src/mail.cpp index 73e66a6..4862b38 100644 --- a/src/mail.cpp +++ b/src/mail.cpp @@ -2130,13 +2130,16 @@ do_locate (LPVOID arg) SRCNAME, __func__, recipient); } xfree (recipient); - do_in_ui_thread (UNKNOWN, NULL); + // do_in_ui_thread (UNKNOWN, NULL); return 0; } +GPGRT_LOCK_DEFINE(uids_searched_lock); + /** Try to locate the keys for all recipients */ void Mail::locate_keys() { + gpgrt_lock_lock (&uids_searched_lock); char ** recipients = get_recipients (); if (!recipients) @@ -2158,6 +2161,7 @@ void Mail::locate_keys() xfree (recipients[i]); } xfree (recipients); + gpgrt_lock_unlock (&uids_searched_lock); } bool commit aebf5de38aab89136aff4e2c6cf49b7248eaa8ba Author: Andre Heinecke Date: Wed Nov 15 16:10:01 2017 +0100 Fix ref leak of recipients obj * src/mail.cpp (get_recipients): Unref recipients obj. diff --git a/src/mail.cpp b/src/mail.cpp index 9db7c85..73e66a6 100644 --- a/src/mail.cpp +++ b/src/mail.cpp @@ -1256,7 +1256,9 @@ Mail::get_recipients() const TRACEPOINT; return nullptr; } - return get_oom_recipients (recipients); + auto ret = get_oom_recipients (recipients); + gpgol_release (recipients); + return ret; } int commit eb035a2e69944dfce39c62d96d51f8459bb3386b Author: Andre Heinecke Date: Wed Nov 15 14:34:25 2017 +0100 Typos and spelling in comment about last commit -- diff --git a/src/explorer-events.cpp b/src/explorer-events.cpp index 2e457ab..1529a88 100644 --- a/src/explorer-events.cpp +++ b/src/explorer-events.cpp @@ -83,11 +83,12 @@ EVENT_SINK_INVOKE(ExplorerEvents) log_oom_extra ("%s:%s: Selection change in explorer: %p", SRCNAME, __func__, this); #if 0 - This is fragile. Somehow. Accessing the current view of the - Explorer might crash outlook. This is even reproducable with - GpgOL enabled and only with Outlook Spy. If you select + Somehow latest Outlook 2016 crashes when accessing the current view + of the Explorer. This is even reproducible with + GpgOL disabled and only with Outlook Spy active. If you select the explorer of an Outlook.com resource and then access - the CurrentView and close the CurrentView again outlook crashes. + the CurrentView and close the CurrentView again in Outlook Spy + outlook crashes. LPDISPATCH tableView = get_oom_object (m_object, "CurrentView"); if (!tableView) ----------------------------------------------------------------------- Summary of changes: src/explorer-events.cpp | 9 +++++---- src/mail.cpp | 10 ++++++++-- src/mailitem-events.cpp | 23 ++++++++++++++++++++--- src/windowmessages.cpp | 12 ++++++++++++ src/windowmessages.h | 2 ++ 5 files changed, 47 insertions(+), 9 deletions(-) hooks/post-receive -- GnuPG extension for MS Outlook http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 17:11:44 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 17:11:44 +0100 Subject: [git] Assuan - branch, master, updated. libassuan-2.4.3-10-g1f9a635 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 "IPC library used by GnuPG". The branch, master has been updated via 1f9a635e3c4be157a4879fc15b59805abcef9a08 (commit) via 4d4c82ae2bbe7c0e08391ecf34e1aaadfdab435f (commit) from 7b408d356094ab0ef0a07904a3ddf3832a8aa197 (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 1f9a635e3c4be157a4879fc15b59805abcef9a08 Author: Werner Koch Date: Wed Nov 15 17:07:06 2017 +0100 Add an SPDX tag to all core files. -- diff --git a/Makefile.am b/Makefile.am index 4ffb113..ba01f60 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,6 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see . +# SPDX-License-Identifier: LGPL-2.1+ ## Process this file with automake to produce Makefile.in diff --git a/configure.ac b/configure.ac index 118e047..731449d 100644 --- a/configure.ac +++ b/configure.ac @@ -17,6 +17,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see . +# SPDX-License-Identifier: LGPL-2.1+ # Process this file with autoconf to produce a configure script. diff --git a/src/Makefile.am b/src/Makefile.am index 8feef3a..f353e29 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,6 +15,8 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see . +# +# SPDX-License-Identifier: LGPL-2.1+ ## Process this file with automake to produce Makefile.in EXTRA_DIST = libassuan-config.in libassuan.m4 libassuan.vers \ diff --git a/src/assuan-buffer.c b/src/assuan-buffer.c index ef9ba41..be87280 100644 --- a/src/assuan-buffer.c +++ b/src/assuan-buffer.c @@ -1,20 +1,22 @@ /* assuan-buffer.c - read and send data - Copyright (C) 2001-2004, 2006, 2009, 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2001-2004, 2006, 2009, 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * + * SPDX-License-Identifier: LGPL-2.1+ */ #include diff --git a/src/assuan-defs.h b/src/assuan-defs.h index 97b053d..6688198 100644 --- a/src/assuan-defs.h +++ b/src/assuan-defs.h @@ -1,21 +1,22 @@ /* assuan-defs.h - Internal definitions to Assuan - Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, - 2009, 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, + * 2009, 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifndef ASSUAN_DEFS_H diff --git a/src/assuan-error.c b/src/assuan-error.c index cc1ff5c..8799203 100644 --- a/src/assuan-error.c +++ b/src/assuan-error.c @@ -1,20 +1,21 @@ /* assuan-error.c - Copyright (C) 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan-handler.c b/src/assuan-handler.c index dec0f1b..2299fcd 100644 --- a/src/assuan-handler.c +++ b/src/assuan-handler.c @@ -1,21 +1,22 @@ /* assuan-handler.c - dispatch commands - Copyright (C) 2001, 2002, 2003, 2007, 2009, - 2011 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2001, 2002, 2003, 2007, 2009, + * 2011 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan-inquire.c b/src/assuan-inquire.c index f863935..fa227a6 100644 --- a/src/assuan-inquire.c +++ b/src/assuan-inquire.c @@ -1,20 +1,21 @@ /* assuan-inquire.c - handle inquire stuff - Copyright (C) 2001-2003, 2005, 2007, 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2001-2003, 2005, 2007, 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan-io.c b/src/assuan-io.c index 8bb8ed9..b3b22fd 100644 --- a/src/assuan-io.c +++ b/src/assuan-io.c @@ -1,20 +1,21 @@ /* assuan-io.c - Wraps the read and write functions. - Copyright (C) 2002, 2004, 2006-2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2002, 2004, 2006-2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H @@ -38,7 +39,7 @@ #ifdef HAVE_W32_SYSTEM # ifdef HAVE_WINSOCK2_H # include -# endif +# endif # include #else # include diff --git a/src/assuan-listen.c b/src/assuan-listen.c index 2c589ab..6755d59 100644 --- a/src/assuan-listen.c +++ b/src/assuan-listen.c @@ -1,20 +1,21 @@ -/* assuan-listen.c - Wait for a connection (server) - Copyright (C) 2001, 2002, 2004, 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . +/* assuan-listen.c - Wait for a connection (server) + * Copyright (C) 2001, 2002, 2004, 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H @@ -63,11 +64,11 @@ assuan_set_hello_line (assuan_context_t ctx, const char *line) /** * assuan_accept: * @ctx: context - * + * * Cancel any existing connection and wait for a connection from a * client. The initial handshake is performed which may include an * initial authentication or encryption negotiation. - * + * * Return value: 0 on success or an error if the connection could for * some reason not be established. **/ @@ -128,7 +129,7 @@ assuan_accept (assuan_context_t ctx) } if (rc) return rc; - + return 0; } diff --git a/src/assuan-logging.c b/src/assuan-logging.c index fd47582..8ee6aa2 100644 --- a/src/assuan-logging.c +++ b/src/assuan-logging.c @@ -1,21 +1,22 @@ /* assuan-logging.c - Default logging function. - Copyright (C) 2002, 2003, 2004, 2007, 2009, - 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2002, 2003, 2004, 2007, 2009, + * 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan-pipe-connect.c b/src/assuan-pipe-connect.c index a657c94..1589d79 100644 --- a/src/assuan-pipe-connect.c +++ b/src/assuan-pipe-connect.c @@ -1,21 +1,22 @@ /* assuan-pipe-connect.c - Establish a pipe connection (client) - Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2010, - 2011 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2010, + * 2011 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan-pipe-server.c b/src/assuan-pipe-server.c index 017dc7b..c78abcd 100644 --- a/src/assuan-pipe-server.c +++ b/src/assuan-pipe-server.c @@ -1,20 +1,21 @@ -/* assuan-pipe-server.c - Assuan server working over a pipe - Copyright (C) 2001, 2002, 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . +/* assuan-pipe-server.c - Assuan server working over a pipe + * Copyright (C) 2001, 2002, 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H @@ -35,7 +36,7 @@ #ifdef HAVE_W32_SYSTEM # ifdef HAVE_WINSOCK2_H # include -# endif +# endif # include #ifdef HAVE_FCNTL_H # include @@ -75,7 +76,7 @@ assuan_init_pipe_server (assuan_context_t ctx, assuan_fd_t filedes[2]) { TRACE_LOG2 ("fd[0]=0x%x, fd[1]=0x%x", filedes[0], filedes[1]); } - + rc = _assuan_register_std_commands (ctx); if (rc) return TRACE_ERR (rc); @@ -95,7 +96,7 @@ assuan_init_pipe_server (assuan_context_t ctx, assuan_fd_t filedes[2]) is_usd = 1; } - else if (filedes && filedes[0] != ASSUAN_INVALID_FD + else if (filedes && filedes[0] != ASSUAN_INVALID_FD && filedes[1] != ASSUAN_INVALID_FD ) { /* Standard pipe server. */ diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c index 3d3176e..c54c44d 100644 --- a/src/assuan-socket-connect.c +++ b/src/assuan-socket-connect.c @@ -1,20 +1,21 @@ /* assuan-socket-connect.c - Assuan socket based client - Copyright (C) 2002, 2003, 2004, 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2002, 2003, 2004, 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #include diff --git a/src/assuan-socket-server.c b/src/assuan-socket-server.c index 964720b..a5b7fd7 100644 --- a/src/assuan-socket-server.c +++ b/src/assuan-socket-server.c @@ -1,20 +1,21 @@ /* assuan-socket-server.c - Assuan socket based server - Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H @@ -36,7 +37,7 @@ #ifdef HAVE_W32_SYSTEM # ifdef HAVE_WINSOCK2_H # include -# endif +# endif # include # if HAVE_SYS_SOCKET_H # include @@ -122,7 +123,7 @@ accept_connection_bottom (assuan_context_t ctx) ctx->outbound.fd = fd; ctx->outbound.data.linelen = 0; ctx->outbound.data.error = 0; - + ctx->flags.confidential = 0; return 0; @@ -136,16 +137,16 @@ accept_connection (assuan_context_t ctx) struct sockaddr_un clnt_addr; socklen_t len = sizeof clnt_addr; - TRACE1 (ctx, ASSUAN_LOG_SYSIO, "accept_connection", ctx, + TRACE1 (ctx, ASSUAN_LOG_SYSIO, "accept_connection", ctx, "listen_fd=0x%x", ctx->listen_fd); - fd = SOCKET2HANDLE(accept (HANDLE2SOCKET(ctx->listen_fd), + fd = SOCKET2HANDLE(accept (HANDLE2SOCKET(ctx->listen_fd), (struct sockaddr*)&clnt_addr, &len )); if (fd == ASSUAN_INVALID_FD) { return _assuan_error (ctx, gpg_err_code_from_syserror ()); } - TRACE1 (ctx, ASSUAN_LOG_SYSIO, "accept_connection", ctx, + TRACE1 (ctx, ASSUAN_LOG_SYSIO, "accept_connection", ctx, "fd->0x%x", fd); if (_assuan_sock_check_nonce (ctx, fd, &ctx->listen_nonce)) { @@ -158,7 +159,7 @@ accept_connection (assuan_context_t ctx) } -/* +/* Flag bits: 0 - use sendmsg/recvmsg to allow descriptor passing 1 - FD has already been accepted. */ @@ -169,7 +170,7 @@ assuan_init_socket_server (assuan_context_t ctx, assuan_fd_t fd, gpg_error_t rc; TRACE_BEG2 (ctx, ASSUAN_LOG_CTX, "assuan_init_socket_server", ctx, "fd=0x%x, flags=0x%x", fd, flags); - + rc = _assuan_register_std_commands (ctx); if (rc) return TRACE_ERR (rc); @@ -202,7 +203,7 @@ assuan_init_socket_server (assuan_context_t ctx, assuan_fd_t fd, ctx->connected_fd = ASSUAN_INVALID_FD; } ctx->accept_handler = ((flags & ASSUAN_SOCKET_SERVER_ACCEPTED) - ? accept_connection_bottom + ? accept_connection_bottom : accept_connection); ctx->finish_handler = _assuan_server_finish; diff --git a/src/assuan-socket.c b/src/assuan-socket.c index 147ec2a..adcd40a 100644 --- a/src/assuan-socket.c +++ b/src/assuan-socket.c @@ -1,21 +1,22 @@ /* assuan-socket.c - Socket wrapper - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. - Copyright (C) 2001-2015 g10 Code GmbH - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. + * Copyright (C) 2001-2015 g10 Code GmbH + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan-uds.c b/src/assuan-uds.c index 59f3a6b..8712b02 100644 --- a/src/assuan-uds.c +++ b/src/assuan-uds.c @@ -1,20 +1,21 @@ /* assuan-uds.c - Assuan unix domain socket utilities - Copyright (C) 2006, 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2006, 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/assuan.c b/src/assuan.c index d4c4b56..e59df65 100644 --- a/src/assuan.c +++ b/src/assuan.c @@ -1,21 +1,22 @@ /* assuan.c - Global interface (not specific to context). - Copyright (C) 2009 Free Software Foundation, Inc. - Copyright (C) 2001, 2002, 2012, 2013 g10 Code GmbH - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009 Free Software Foundation, Inc. + * Copyright (C) 2001, 2002, 2012, 2013 g10 Code GmbH + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/assuan.h.in b/src/assuan.h.in index da1af25..acd4f45 100644 --- a/src/assuan.h.in +++ b/src/assuan.h.in @@ -1,23 +1,24 @@ /* assuan.h - Definitions for the Assuan IPC library -*- c -*- - Copyright (C) 2001-2013 Free Software Foundation, Inc. - Copyright (C) 2001-2015 g10 Code GmbH - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . - - @configure_input@ + * Copyright (C) 2001-2013 Free Software Foundation, Inc. + * Copyright (C) 2001-2015 g10 Code GmbH + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ + * + * @configure_input@ */ #ifndef ASSUAN_H diff --git a/src/client.c b/src/client.c index de0e88b..8b357e6 100644 --- a/src/client.c +++ b/src/client.c @@ -1,20 +1,21 @@ /* client.c - Functions common to all clients. - Copyright (C) 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/context.c b/src/context.c index 147edae..82166bb 100644 --- a/src/context.c +++ b/src/context.c @@ -1,20 +1,21 @@ /* context.c - Context specific interface. - Copyright (C) 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/conversion.c b/src/conversion.c index 88a7fd0..a86e5a9 100644 --- a/src/conversion.c +++ b/src/conversion.c @@ -1,23 +1,23 @@ /* conversion.c - String conversion helper functions. - Copyright (C) 2000 Werner Koch (dd9jn) - Copyright (C) 2001, 2002, 2003, 2004, 2007, 2009 g10 Code GmbH - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser 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. */ + * Copyright (C) 2000 Werner Koch (dd9jn) + * Copyright (C) 2001, 2002, 2003, 2004, 2007, 2009 g10 Code GmbH + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ + */ #if HAVE_CONFIG_H #include @@ -57,7 +57,7 @@ _assuan_encode_c_string (assuan_context_t ctx, const char *src) const unsigned char *istr; char *res; char *ostr; - + ostr = _assuan_malloc (ctx, 4 * strlen (src) + 1); if (! *ostr) return NULL; diff --git a/src/debug.h b/src/debug.h index 5ce0f07..78bbc23 100644 --- a/src/debug.h +++ b/src/debug.h @@ -1,22 +1,22 @@ /* debug.h - interface to debugging functions - Copyright (C) 2002, 2004, 2005, 2007 g10 Code GmbH - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser 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. */ + * Copyright (C) 2002, 2004, 2005, 2007 g10 Code GmbH + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ + */ #ifndef DEBUG_H #define DEBUG_H diff --git a/src/funopen.c b/src/funopen.c index e6d77e3..466d9aa 100644 --- a/src/funopen.c +++ b/src/funopen.c @@ -15,6 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/gpgcedev.c b/src/gpgcedev.c index bff4655..c841ec2 100644 --- a/src/gpgcedev.c +++ b/src/gpgcedev.c @@ -1,23 +1,23 @@ /* gpgcedrv.c - WindowsCE device driver to implement pipe and syslog. - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 3 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-3.0+ */ - #include #include #include @@ -48,7 +48,7 @@ #define GPGCEDEV_IOCTL_GET_RVID \ CTL_CODE (FILE_DEVICE_STREAMS, 2048, METHOD_BUFFERED, FILE_ANY_ACCESS) -/* The IOCTL used to create the pipe. +/* The IOCTL used to create the pipe. The caller sends this IOCTL to the read or the write handle. The required inbuf parameter is address of a variable holding the @@ -85,7 +85,7 @@ struct pipeimpl_s CRITICAL_SECTION critsect; /* Lock for all members. */ int refcnt; - char *buffer; + char *buffer; size_t buffer_size; size_t buffer_len; /* The valid length of the bufer. */ size_t buffer_pos; /* The actual read position. */ @@ -98,7 +98,7 @@ struct pipeimpl_s int flags; HANDLE space_available; /* Set if space is available. */ - HANDLE data_available; /* Set if data is available. */ + HANDLE data_available; /* Set if data is available. */ /* For the monitor thread started by ASSIGN_RVID. */ HANDLE monitor_proc; @@ -198,7 +198,7 @@ log_debug (const char *fmt, ...) { va_list arg_ptr; FILE *fp; - + fp = fopen (DBGFILENAME, "a+"); if (!fp) return; @@ -375,7 +375,7 @@ logimpl_flush (logimpl_t limpl) char buf[50]; DWORD nwritten; - snprintf (buf, sizeof buf, + snprintf (buf, sizeof buf, "%06lu/%lu//", limpl->dsec % 1000000, limpl->logid); if (!WriteFile (logcontrol.filehd, buf, strlen (buf), &nwritten, NULL)) log_debug ("error writing log file: rc=%d\n", (int)GetLastError ()); @@ -633,7 +633,7 @@ wchar_to_utf8 (const wchar_t *string) n = WideCharToMultiByte (CP_ACP, 0, string, length, result, n, NULL, NULL); if (n < 0) abort (); - + result[n] = 0; return result; } @@ -688,7 +688,7 @@ GPG_Init (LPCTSTR active_key, DWORD bus_context) if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, active_key, 0, KEY_READ, &handle)) { - log_debug ("GPG_Init: error reading registry: rc=%d\n", + log_debug ("GPG_Init: error reading registry: rc=%d\n", (int)GetLastError ()); return 0; } @@ -696,7 +696,7 @@ GPG_Init (LPCTSTR active_key, DWORD bus_context) buflen = sizeof buffer; if (RegQueryValueEx (handle, L"Name", 0, NULL, (PBYTE)buffer, &buflen)) { - log_debug ("GPG_Init: error reading registry value 'Name': rc=%d\n", + log_debug ("GPG_Init: error reading registry value 'Name': rc=%d\n", (int)GetLastError ()); result = 0; } @@ -757,7 +757,7 @@ GPG_Deinit (DWORD devctx) SetLastError (ERROR_INVALID_PARAMETER); return FALSE; /* Error. */ } - + return TRUE; /* Success. */ } @@ -939,7 +939,7 @@ GPG_Read (DWORD opnctx_arg, void *buffer, DWORD count) EnterCriticalSection (&pimpl->critsect); goto retry; } - + dst = buffer; src = pimpl->buffer + pimpl->buffer_pos; while (count > 0 && pimpl->buffer_pos < pimpl->buffer_len) @@ -951,7 +951,7 @@ GPG_Read (DWORD opnctx_arg, void *buffer, DWORD count) result = (dst - (char*)buffer); if (pimpl->buffer_pos == pimpl->buffer_len) pimpl->buffer_pos = pimpl->buffer_len = 0; - + /* Now there should be some space available. Signal the write end. Even if COUNT was passed as NULL and no space is available, signaling must be done. */ @@ -1029,7 +1029,7 @@ GPG_Write (DWORD opnctx_arg, const void *buffer, DWORD count) SetLastError (ERROR_BROKEN_PIPE); goto leave; } - + /* Check for request to unblock once. */ if (pimpl->flags & PIPE_FLAG_UNBLOCK_WRITER) { @@ -1040,7 +1040,7 @@ GPG_Write (DWORD opnctx_arg, const void *buffer, DWORD count) result = -1; goto leave; } - + /* Write to our buffer. */ if (pimpl->buffer_len == pimpl->buffer_size) { @@ -1055,7 +1055,7 @@ GPG_Write (DWORD opnctx_arg, const void *buffer, DWORD count) EnterCriticalSection (&pimpl->critsect); goto retry; } - + src = buffer; dst = pimpl->buffer + pimpl->buffer_len; while (count > 0 && pimpl->buffer_len < pimpl->buffer_size) @@ -1066,12 +1066,12 @@ GPG_Write (DWORD opnctx_arg, const void *buffer, DWORD count) nwritten++; } result = nwritten; - + if (!SetEvent (pimpl->data_available)) log_debug ("GPG_Write (ctx=%i): warning: SetEvent(data_available) " "failed: rc=%d\n", opnctx_arg, (int)GetLastError ()); } - + log_debug ("GPG_Write (ctx=%i): success: result=%d\n", opnctx_arg, result); leave: @@ -1162,7 +1162,7 @@ make_pipe (opnctx_t ctx, LONG rvid) SetLastError (ERROR_INVALID_ACCESS); return FALSE; } - + /* Make sure the peer has a pipe implementation to be shared. If not yet, create one. */ pimpl = assert_pipeimpl (peerctx); @@ -1175,7 +1175,7 @@ make_pipe (opnctx_t ctx, LONG rvid) monitor, and the pipe is already closed at the parent side. For example GPGME verify detached plain text, where GPG calls MAKE_PIPE very late. */ - + for (idx = 0; idx < monitor_table_size; idx++) if (monitor_table[idx].inuse && monitor_table[idx].pipeimpl->monitor_rvid == rvid) @@ -1278,7 +1278,7 @@ unblock_call (opnctx_t ctx) } -static DWORD CALLBACK +static DWORD CALLBACK monitor_main (void *arg) { pipeimpl_t pimpl = (pipeimpl_t) arg; @@ -1286,7 +1286,7 @@ monitor_main (void *arg) int idx; log_debug ("starting monitor (pimpl=0x%p)\n", pimpl); - + EnterCriticalSection (&pimpl->critsect); /* Putting proc first in the array is convenient, as this is a hard break-out condition (and thus takes precedence in WFMO). The @@ -1304,7 +1304,7 @@ monitor_main (void *arg) { log_debug ("monitor (pimpl=0x%p): done: monitored process taking over\n", pimpl); - } + } else { DWORD res; @@ -1324,7 +1324,7 @@ monitor_main (void *arg) { log_debug ("monitor (pimpl=0x%p): done: monitored process died\n", pimpl); - } + } else if (res == WAIT_OBJECT_0 + 1) goto retry; else @@ -1391,7 +1391,7 @@ assign_rvid (opnctx_t ctx, DWORD rvid, DWORD pid) SetLastError (ERROR_NOT_FOUND); return FALSE; } - + if (peerctx->pipeimpl && peerctx->pipeimpl->monitor_proc != INVALID_HANDLE_VALUE) { @@ -1479,7 +1479,7 @@ GPG_IOControl (DWORD opnctx_arg, DWORD code, void *inbuf, DWORD inbuflen, opnctx = verify_opnctx (opnctx_arg); if (!opnctx) { - log_debug ("GPG_IOControl (ctx=%i): error: could not access context\n", + log_debug ("GPG_IOControl (ctx=%i): error: could not access context\n", opnctx_arg); goto leave; } @@ -1497,13 +1497,13 @@ GPG_IOControl (DWORD opnctx_arg, DWORD code, void *inbuf, DWORD inbuflen, log_debug ("GPG_IOControl (ctx=%i): code: GET_RVID\n", opnctx_arg); if (inbuf || inbuflen || !outbuf || outbuflen < sizeof (LONG)) { - log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", + log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", opnctx_arg); SetLastError (ERROR_INVALID_PARAMETER); goto leave; } - if (! opnctx->rvid) + if (! opnctx->rvid) opnctx->rvid = create_rendezvous_id (); log_debug ("GPG_IOControl (ctx=%i): returning rvid: %08lx\n", opnctx_arg, opnctx->rvid); @@ -1516,16 +1516,16 @@ GPG_IOControl (DWORD opnctx_arg, DWORD code, void *inbuf, DWORD inbuflen, case GPGCEDEV_IOCTL_MAKE_PIPE: log_debug ("GPG_IOControl (ctx=%i): code: MAKE_PIPE\n", opnctx_arg); - if (!inbuf || inbuflen < sizeof (LONG) + if (!inbuf || inbuflen < sizeof (LONG) || outbuf || outbuflen || actualoutlen) { - log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", + log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", opnctx_arg); SetLastError (ERROR_INVALID_PARAMETER); goto leave; } memcpy (&rvid, inbuf, sizeof (LONG)); - log_debug ("GPG_IOControl (ctx=%i): make pipe for rvid: %08lx\n", + log_debug ("GPG_IOControl (ctx=%i): make pipe for rvid: %08lx\n", opnctx_arg, rvid); if (make_pipe (opnctx, rvid)) result = TRUE; @@ -1535,12 +1535,12 @@ GPG_IOControl (DWORD opnctx_arg, DWORD code, void *inbuf, DWORD inbuflen, log_debug ("GPG_IOControl (ctx=%i): code: UNBLOCK\n", opnctx_arg); if (inbuf || inbuflen || outbuf || outbuflen || actualoutlen) { - log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", + log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", opnctx_arg); SetLastError (ERROR_INVALID_PARAMETER); goto leave; } - + if (unblock_call (opnctx)) result = TRUE; break; @@ -1550,14 +1550,14 @@ GPG_IOControl (DWORD opnctx_arg, DWORD code, void *inbuf, DWORD inbuflen, if (!inbuf || inbuflen < 2 * sizeof (DWORD) || outbuf || outbuflen || actualoutlen) { - log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", + log_debug ("GPG_IOControl (ctx=%i): error: invalid parameter\n", opnctx_arg); SetLastError (ERROR_INVALID_PARAMETER); goto leave; } memcpy (&rvid, inbuf, sizeof (DWORD)); memcpy (&pid, ((char *) inbuf) + sizeof (DWORD), sizeof (DWORD)); - log_debug ("GPG_IOControl (ctx=%i): assign rvid %08lx to pid %08lx\n", + log_debug ("GPG_IOControl (ctx=%i): assign rvid %08lx to pid %08lx\n", opnctx_arg, rvid, pid); if (assign_rvid (opnctx, rvid, pid)) result = TRUE; @@ -1635,6 +1635,6 @@ DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserved) default: break; } - + return TRUE; } diff --git a/src/gpgcedev.def b/src/gpgcedev.def index 387e3a6..bc52d3a 100644 --- a/src/gpgcedev.def +++ b/src/gpgcedev.def @@ -15,6 +15,7 @@ ; ; You should have received a copy of the GNU Lesser General Public ; License along with this program; if not, see . +; SPDX-License-Identifier: LGPL-3.0+ EXPORTS diff --git a/src/gpgcemgr.c b/src/gpgcemgr.c index 9dafbc0..5b4f56e 100644 --- a/src/gpgcemgr.c +++ b/src/gpgcemgr.c @@ -1,20 +1,21 @@ /* gpgcempr.c - Manager for GPG CE devices - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 3 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-3.0+ */ #define _WIN32_WCE 0x0500 @@ -47,7 +48,7 @@ wchar_to_utf8 (const wchar_t *string) n = WideCharToMultiByte (CP_ACP, 0, string, length, result, n, NULL, NULL); if (n < 0) abort (); - + result[n] = 0; return result; } @@ -67,7 +68,7 @@ utf8_to_wchar (const char *string) if (n < 0) abort (); nbytes = (size_t)(n+1) * sizeof(*result); - if (nbytes / sizeof(*result) != (n+1)) + if (nbytes / sizeof(*result) != (n+1)) abort (); result = malloc (nbytes); if (!result) @@ -86,7 +87,7 @@ install (void) HKEY handle; DWORD disp, dw; int rc; - + if ((rc=RegCreateKeyEx (HKEY_LOCAL_MACHINE, GPGCEDEV_KEY_NAME, 0, NULL, 0, KEY_WRITE, NULL, &handle, &disp))) { @@ -94,14 +95,14 @@ install (void) return 1; } - RegSetValueEx (handle, L"dll", 0, REG_SZ, + RegSetValueEx (handle, L"dll", 0, REG_SZ, (void*)GPGCEDEV_DLL_NAME, sizeof (GPGCEDEV_DLL_NAME)); RegSetValueEx (handle, L"prefix", 0, REG_SZ, (void*)GPGCEDEV_PREFIX, sizeof (GPGCEDEV_PREFIX)); dw = 1; RegSetValueEx (handle, L"Index", 0, REG_DWORD, (void*)&dw, sizeof dw); - + RegCloseKey (handle); fprintf (stderr, PGM": registry key 1 created\n"); @@ -113,14 +114,14 @@ install (void) return 1; } - RegSetValueEx (handle, L"dll", 0, REG_SZ, + RegSetValueEx (handle, L"dll", 0, REG_SZ, (void*)GPGCEDEV_DLL_NAME, sizeof (GPGCEDEV_DLL_NAME)); RegSetValueEx (handle, L"prefix", 0, REG_SZ, (void*)GPGCEDEV_PREFIX, sizeof (GPGCEDEV_PREFIX)); dw = 2; RegSetValueEx (handle, L"Index", 0, REG_DWORD, (void*)&dw, sizeof dw); - + RegCloseKey (handle); fprintf (stderr, PGM": registry key 2 created\n"); @@ -146,7 +147,7 @@ deinstall (wchar_t *name) fprintf (stderr, PGM": device not found\n"); else { - fprintf (stderr, PGM": FindFirstDevice failed: rc=%d\n", + fprintf (stderr, PGM": FindFirstDevice failed: rc=%d\n", (int)GetLastError ()); result = 1; } @@ -178,15 +179,15 @@ enable_debug (int yes) HKEY handle; DWORD disp; int rc; - + if ((rc=RegCreateKeyEx (HKEY_LOCAL_MACHINE, GPGCEDEV_KEY_NAME, 0, NULL, 0, KEY_WRITE, NULL, &handle, &disp))) { fprintf (stderr, PGM": error creating debug registry key: rc=%d\n", rc); return 1; } - - RegSetValueEx (handle, L"debugDriver", 0, REG_SZ, + + RegSetValueEx (handle, L"debugDriver", 0, REG_SZ, (void*)(yes? L"1":L"0"), sizeof L"0"); RegCloseKey (handle); return 0; @@ -199,15 +200,15 @@ enable_log (int yes) HKEY handle; DWORD disp; int rc; - + if ((rc=RegCreateKeyEx (HKEY_LOCAL_MACHINE, GPGCEDEV_KEY_NAME2, 0, NULL, 0, KEY_WRITE, NULL, &handle, &disp))) { fprintf (stderr, PGM": error creating debug registry key: rc=%d\n", rc); return 1; } - - RegSetValueEx (handle, L"enableLog", 0, REG_SZ, + + RegSetValueEx (handle, L"enableLog", 0, REG_SZ, (void*)(yes? L"1":L"0"), sizeof L"0"); RegCloseKey (handle); return 0; @@ -266,7 +267,7 @@ load_sensor_api (void) } -static int +static int gravity (void) { int rc; @@ -391,7 +392,7 @@ set_show_registry (const wchar_t *key, const wchar_t *name, const char *value) HKEY handle; DWORD disp, nbytes, n1, type; int rc; - + if ((rc=RegCreateKeyEx (HKEY_LOCAL_MACHINE, key, 0, NULL, 0, KEY_WRITE, NULL, &handle, &disp))) { @@ -407,7 +408,7 @@ set_show_registry (const wchar_t *key, const wchar_t *name, const char *value) else if (value) { wchar_t *tmp = utf8_to_wchar (value); - if ((rc=RegSetValueEx (handle, name, 0, REG_SZ, + if ((rc=RegSetValueEx (handle, name, 0, REG_SZ, (void*)tmp, wcslen (tmp)*sizeof(wchar_t)))) fprintf (stderr, PGM": error setting registry value: rc=%d\n", rc); free (tmp); @@ -418,15 +419,15 @@ set_show_registry (const wchar_t *key, const wchar_t *name, const char *value) if ((rc=RegQueryValueEx (handle, name, 0, NULL, NULL, &nbytes))) { if (rc == ERROR_FILE_NOT_FOUND) - fprintf (stderr, PGM": registry value not set\n"); + fprintf (stderr, PGM": registry value not set\n"); else - fprintf (stderr, PGM": error reading registry value: rc=%d\n", rc); + fprintf (stderr, PGM": error reading registry value: rc=%d\n", rc); } else { char *result = malloc ((n1=nbytes+2)); if (!result) - fprintf (stderr, PGM": malloc failed: rc=%d\n", + fprintf (stderr, PGM": malloc failed: rc=%d\n", (int)GetLastError ()); else if ((rc=RegQueryValueEx (handle, name, 0, &type, (void*)result, &n1))) @@ -438,7 +439,7 @@ set_show_registry (const wchar_t *key, const wchar_t *name, const char *value) else { result[nbytes] = 0; /* Make sure it is a string. */ - result[nbytes+1] = 0; + result[nbytes+1] = 0; if (type == REG_SZ) { wchar_t *tmp = (void*)result; @@ -452,7 +453,7 @@ set_show_registry (const wchar_t *key, const wchar_t *name, const char *value) } } } - + RegCloseKey (handle); } @@ -522,7 +523,7 @@ main (int argc, char **argv) fprintf (stderr, PGM": device `GPG2:' seems to work\n"); CloseHandle (hd); } - + } } else if (argc > 1 && !strcmp (argv[1], "--gravity")) @@ -549,7 +550,7 @@ main (int argc, char **argv) DWORD nwritten; int i; - for (i=0; i < 3; i++) + for (i=0; i < 3; i++) { if (!WriteFile (hd, marktwain, strlen (marktwain), &nwritten, NULL)) @@ -572,10 +573,10 @@ main (int argc, char **argv) else if (argc > 1 && !strcmp (argv[1], "--disable-log")) result = enable_log (0); else if (argc > 1 && !strcmp (argv[1], "--gpgme-log")) - set_show_registry (L"Software\\GNU\\gpgme", L"debug", - argc > 2? argv[2] : NULL); + set_show_registry (L"Software\\GNU\\gpgme", L"debug", + argc > 2? argv[2] : NULL); else if (argc > 1 && !strcmp (argv[1], "--gnupg-log")) - set_show_registry (L"Software\\GNU\\GnuPG", L"DefaultLogFile", + set_show_registry (L"Software\\GNU\\GnuPG", L"DefaultLogFile", argc > 2? argv[2] : NULL); else { diff --git a/src/isascii.c b/src/isascii.c index 77ed970..3160390 100644 --- a/src/isascii.c +++ b/src/isascii.c @@ -15,6 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/libassuan-config.in b/src/libassuan-config.in index dd25a4c..04177f0 100644 --- a/src/libassuan-config.in +++ b/src/libassuan-config.in @@ -8,6 +8,7 @@ # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# SPDX-License-Identifier: FSFULLR # Configure libgpg-error. gpg_error_cflags="@GPG_ERROR_CFLAGS@" diff --git a/src/libassuan.def b/src/libassuan.def index c320151..7e32a3d 100644 --- a/src/libassuan.def +++ b/src/libassuan.def @@ -14,8 +14,8 @@ ; GNU Lesser General Public License for more details. ; ; You should have received a copy of the GNU Lesser 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 +; License along with this program; if not, see . +; SPDX-License-Identifier: LGPL-2.1+ EXPORTS diff --git a/src/libassuan.m4 b/src/libassuan.m4 index 4b196a5..fe45b06 100644 --- a/src/libassuan.m4 +++ b/src/libassuan.m4 @@ -8,6 +8,7 @@ dnl dnl This file is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dnl SPDX-License-Identifier: FSFULLR dnl dnl Common code used for libassuan detection [internal] @@ -58,7 +59,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], if test "$major" -gt "$req_major"; then ok=yes - else + else if test "$major" -eq "$req_major"; then if test "$minor" -gt "$req_minor"; then ok=yes diff --git a/src/libassuan.vers b/src/libassuan.vers index 37c0131..a178127 100644 --- a/src/libassuan.vers +++ b/src/libassuan.vers @@ -15,6 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see . +# SPDX-License-Identifier: LGPL-2.1+ #----------------------------------------------------------- # Please remember to add new functions also to libassuan.def diff --git a/src/memrchr.c b/src/memrchr.c index 258216c..adb68d7 100644 --- a/src/memrchr.c +++ b/src/memrchr.c @@ -15,6 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/mkheader.c b/src/mkheader.c index 44eb78e..0ee0944 100644 --- a/src/mkheader.c +++ b/src/mkheader.c @@ -8,6 +8,7 @@ * This file is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * SPDX-License-Identifier: FSFULLR */ diff --git a/src/posix-fd-t.inc.h b/src/posix-fd-t.inc.h index 80aa5f0..832c4fa 100644 --- a/src/posix-fd-t.inc.h +++ b/src/posix-fd-t.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/posix-includes.inc.h b/src/posix-includes.inc.h index c641f86..d95a403 100644 --- a/src/posix-includes.inc.h +++ b/src/posix-includes.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/posix-sock-nonce.inc.h b/src/posix-sock-nonce.inc.h index a62216d..edd5a57 100644 --- a/src/posix-sock-nonce.inc.h +++ b/src/posix-sock-nonce.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with @@ -23,7 +24,7 @@ based on a local TCP connections. To implement access permissions based on file permissions a nonce is used which is expected by the server as the first bytes received. On POSIX systems this is a - dummy structure. */ + dummy structure. */ struct assuan_sock_nonce_s { size_t length; diff --git a/src/posix-sys-pth-impl.h b/src/posix-sys-pth-impl.h index 77d38f0..6943359 100644 --- a/src/posix-sys-pth-impl.h +++ b/src/posix-sys-pth-impl.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with @@ -84,5 +85,3 @@ return ret; \ } \ ##EOF## Force end-of file. - - diff --git a/src/posix-types.inc.h b/src/posix-types.inc.h index c242b48..e3810b3 100644 --- a/src/posix-types.inc.h +++ b/src/posix-types.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/putc_unlocked.c b/src/putc_unlocked.c index 80b3aa1..6adcaec 100644 --- a/src/putc_unlocked.c +++ b/src/putc_unlocked.c @@ -15,6 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H diff --git a/src/server.c b/src/server.c index 6cc75ae..7c82f02 100644 --- a/src/server.c +++ b/src/server.c @@ -1,20 +1,21 @@ /* server.c - Interfaces for all assuan servers. - Copyright (C) 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/setenv.c b/src/setenv.c index 9f91124..3410b30 100644 --- a/src/setenv.c +++ b/src/setenv.c @@ -1,19 +1,20 @@ /* Copyright (C) 1992,1995-2001,2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, - see . + * This file is part of the GNU C Library. + * + * The GNU C Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * The GNU C Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the GNU C Library; if not, + * see . + * SPDX-License-Identifier: LGPL-2.1+ */ #if HAVE_CONFIG_H diff --git a/src/stpcpy.c b/src/stpcpy.c index 8c489b8..4820c7a 100644 --- a/src/stpcpy.c +++ b/src/stpcpy.c @@ -1,19 +1,21 @@ /* Copyright (C) 1992, 1995, 1997, 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, - see . */ + * This file is part of the GNU C Library. + * + * The GNU C Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * The GNU C Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the GNU C Library; if not, + * see . + * SPDX-License-Identifier: LGPL-2.1+ + */ #ifdef HAVE_CONFIG_H # include diff --git a/src/system-posix.c b/src/system-posix.c index d274994..b7da9e3 100644 --- a/src/system-posix.c +++ b/src/system-posix.c @@ -1,20 +1,21 @@ /* system-posix.c - System support functions. - Copyright (C) 2009, 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009, 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/system-w32.c b/src/system-w32.c index 7b95d5c..9547ce0 100644 --- a/src/system-w32.c +++ b/src/system-w32.c @@ -1,20 +1,21 @@ /* system-w32.c - System support functions for Windows. - Copyright (C) 2009, 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009, 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/system-w32ce.c b/src/system-w32ce.c index d3e3357..da5dcf2 100644 --- a/src/system-w32ce.c +++ b/src/system-w32ce.c @@ -1,20 +1,21 @@ /* system-w32ce.c - System support functions for WindowsCE. - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/system.c b/src/system.c index ddb99fb..00b76cb 100644 --- a/src/system.c +++ b/src/system.c @@ -1,20 +1,21 @@ /* system.c - System support functions. - Copyright (C) 2009 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ diff --git a/src/sysutils.c b/src/sysutils.c index 0eb5d1c..74031cd 100644 --- a/src/sysutils.c +++ b/src/sysutils.c @@ -1,20 +1,21 @@ /* sysutils.c - System utilities - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - Assuan 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see . + * Copyright (C) 2010 Free Software Foundation, Inc. + * + * This file is part of Assuan. + * + * Assuan is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * Assuan 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + * SPDX-License-Identifier: LGPL-2.1+ */ #ifdef HAVE_CONFIG_H @@ -47,6 +48,7 @@ _assuan_sysutils_blurb (void) "This is Libassuan " PACKAGE_VERSION " - The GnuPG IPC Library\n" "Copyright 2001-2013 Free Software Foundation, Inc.\n" "Copyright 2001-2014 g10 Code GmbH\n" + "SPDX-License-Identifier: LGPL-2.1+\n" "\n" "(" BUILD_REVISION " " BUILD_TIMESTAMP ")\n" "\n\n"; diff --git a/src/versioninfo.rc.in b/src/versioninfo.rc.in index 23db15e..9f0237f 100644 --- a/src/versioninfo.rc.in +++ b/src/versioninfo.rc.in @@ -8,6 +8,7 @@ * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * SPDX-License-Identifier: FSFULLR */ /* This file is processed by configure to create versioninfo.rc */ @@ -49,4 +50,3 @@ BEGIN END END END - diff --git a/src/w32-fd-t.inc.h b/src/w32-fd-t.inc.h index 37f20f4..ca63671 100644 --- a/src/w32-fd-t.inc.h +++ b/src/w32-fd-t.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/w32-includes.inc.h b/src/w32-includes.inc.h index 1945692..5f4ab9f 100644 --- a/src/w32-includes.inc.h +++ b/src/w32-includes.inc.h @@ -15,10 +15,11 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with ## a double hash mark are not copied to the destination file. #include -#include +#include ##EOF## diff --git a/src/w32-sock-nonce.inc.h b/src/w32-sock-nonce.inc.h index 4b099ff..b620b54 100644 --- a/src/w32-sock-nonce.inc.h +++ b/src/w32-sock-nonce.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/w32-sys-pth-impl.h b/src/w32-sys-pth-impl.h index ebd6ec6..0150e6e 100644 --- a/src/w32-sys-pth-impl.h +++ b/src/w32-sys-pth-impl.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/w32-types.inc.h b/src/w32-types.inc.h index 35aaec9..6cf9ad2 100644 --- a/src/w32-types.inc.h +++ b/src/w32-types.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/w32ce-add.h b/src/w32ce-add.h index 5306f9a..1f7d7db 100644 --- a/src/w32ce-add.h +++ b/src/w32ce-add.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with diff --git a/src/w32ce-fd-t.inc.h b/src/w32ce-fd-t.inc.h index 2de72e6..70c7997 100644 --- a/src/w32ce-fd-t.inc.h +++ b/src/w32ce-fd-t.inc.h @@ -15,6 +15,7 @@ ## ## You should have received a copy of the GNU Lesser General Public ## License along with this program; if not, see . +## SPDX-License-Identifier: LGPL-2.1+ ## ## ## This file is included by the mkheader tool. Lines starting with commit 4d4c82ae2bbe7c0e08391ecf34e1aaadfdab435f Author: Werner Koch Date: Wed Nov 15 17:05:46 2017 +0100 Fix last commit. * src/system-posix.c (__assuan_usleep): Its ysec and usecs -- Copy+Paste without even compiling was pretty dumb. Signed-off-by: Werner Koch diff --git a/src/system-posix.c b/src/system-posix.c index 65d2c8c..d274994 100644 --- a/src/system-posix.c +++ b/src/system-posix.c @@ -68,8 +68,8 @@ __assuan_usleep (assuan_context_t ctx, unsigned int usec) struct timespec req; struct timespec rem; - req.tv_sec = usecs / 1000000; - req.tv_nsec = (usecs % 1000000) * 1000; + req.tv_sec = usec / 1000000; + req.tv_nsec = (usec % 1000000) * 1000; while (nanosleep (&req, &rem) < 0 && errno == EINTR) req = rem; } ----------------------------------------------------------------------- Summary of changes: Makefile.am | 1 + configure.ac | 1 + src/Makefile.am | 2 + src/assuan-buffer.c | 34 ++++++++------- src/assuan-defs.h | 35 +++++++-------- src/assuan-error.c | 33 +++++++------- src/assuan-handler.c | 35 +++++++-------- src/assuan-inquire.c | 33 +++++++------- src/assuan-io.c | 35 +++++++-------- src/assuan-listen.c | 41 +++++++++--------- src/assuan-logging.c | 35 +++++++-------- src/assuan-pipe-connect.c | 35 +++++++-------- src/assuan-pipe-server.c | 41 +++++++++--------- src/assuan-socket-connect.c | 33 +++++++------- src/assuan-socket-server.c | 49 ++++++++++----------- src/assuan-socket.c | 35 +++++++-------- src/assuan-uds.c | 33 +++++++------- src/assuan.c | 35 +++++++-------- src/assuan.h.in | 39 ++++++++--------- src/client.c | 33 +++++++------- src/context.c | 33 +++++++------- src/conversion.c | 40 ++++++++--------- src/debug.h | 36 ++++++++-------- src/funopen.c | 1 + src/gpgcedev.c | 102 ++++++++++++++++++++++---------------------- src/gpgcedev.def | 1 + src/gpgcemgr.c | 87 ++++++++++++++++++------------------- src/isascii.c | 1 + src/libassuan-config.in | 1 + src/libassuan.def | 4 +- src/libassuan.m4 | 3 +- src/libassuan.vers | 1 + src/memrchr.c | 1 + src/mkheader.c | 1 + src/posix-fd-t.inc.h | 1 + src/posix-includes.inc.h | 1 + src/posix-sock-nonce.inc.h | 3 +- src/posix-sys-pth-impl.h | 3 +- src/posix-types.inc.h | 1 + src/putc_unlocked.c | 1 + src/server.c | 33 +++++++------- src/setenv.c | 31 +++++++------- src/stpcpy.c | 32 +++++++------- src/system-posix.c | 37 ++++++++-------- src/system-w32.c | 33 +++++++------- src/system-w32ce.c | 33 +++++++------- src/system.c | 33 +++++++------- src/sysutils.c | 34 ++++++++------- src/versioninfo.rc.in | 2 +- src/w32-fd-t.inc.h | 1 + src/w32-includes.inc.h | 3 +- src/w32-sock-nonce.inc.h | 1 + src/w32-sys-pth-impl.h | 1 + src/w32-types.inc.h | 1 + src/w32ce-add.h | 1 + src/w32ce-fd-t.inc.h | 1 + 56 files changed, 635 insertions(+), 582 deletions(-) hooks/post-receive -- IPC library used by GnuPG http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 18:50:52 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 18:50:52 +0100 Subject: [git] Assuan - branch, master, updated. libassuan-2.4.3-12-g4f5596c 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 "IPC library used by GnuPG". The branch, master has been updated via 4f5596cf09c9e3e7845aa703f68e49168797fd2a (commit) via dfb8654f66f8ddeeb048e195a4f98c0aeed9ffb7 (commit) from 1f9a635e3c4be157a4879fc15b59805abcef9a08 (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 4f5596cf09c9e3e7845aa703f68e49168797fd2a Author: Werner Koch Date: Wed Nov 15 18:44:09 2017 +0100 Add special check version request \001\001 * src/assuan.c (assuan_check_version): Handle version "\001\001" * tests/version.c (main): Print extended version info. Signed-off-by: Werner Koch diff --git a/src/assuan.c b/src/assuan.c index e59df65..b6dec93 100644 --- a/src/assuan.c +++ b/src/assuan.c @@ -281,5 +281,7 @@ compare_versions (const char *my_version, const char *req_version) const char * assuan_check_version (const char *req_version) { + if (req_version && req_version[0] == 1 && req_version[1] == 1) + return _assuan_sysutils_blurb (); return compare_versions (PACKAGE_VERSION, req_version); } diff --git a/src/sysutils.c b/src/sysutils.c index 74031cd..afa7aa1 100644 --- a/src/sysutils.c +++ b/src/sysutils.c @@ -48,8 +48,8 @@ _assuan_sysutils_blurb (void) "This is Libassuan " PACKAGE_VERSION " - The GnuPG IPC Library\n" "Copyright 2001-2013 Free Software Foundation, Inc.\n" "Copyright 2001-2014 g10 Code GmbH\n" - "SPDX-License-Identifier: LGPL-2.1+\n" "\n" + "SPDX-License-Identifier: LGPL-2.1+\n" "(" BUILD_REVISION " " BUILD_TIMESTAMP ")\n" "\n\n"; return blurb; diff --git a/tests/version.c b/tests/version.c index 96e43c0..4ff700e 100644 --- a/tests/version.c +++ b/tests/version.c @@ -84,6 +84,7 @@ main (int argc, char **argv) log_info ("Version from header: %s (0x%06x)\n", ASSUAN_VERSION, ASSUAN_VERSION_NUMBER); log_info ("Version from binary: %s \n", assuan_check_version (NULL)); + log_info ("Copyright blurb ...:%s\n", assuan_check_version ("\001\001")); } return errorcount ? 1 : 0; commit dfb8654f66f8ddeeb048e195a4f98c0aeed9ffb7 Author: Werner Koch Date: Wed Nov 15 18:29:52 2017 +0100 Let configure create the VERSION file. * autogen.sh: Update from Libgpg-error * configure.ac: Create file VERSION. * Makefile.am (dist-hook): Do not create VERSION. (EXTRA_DIST): Add VERSION. -- GnuPG-bug-id: 3283 diff --git a/.gitignore b/.gitignore index 933a5cb..3db5004 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ tests/Makefile.in tests/Makefile tests/fdpassing tests/pipeconnect +/VERSION diff --git a/Makefile.am b/Makefile.am index ba01f60..11e4696 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,7 +25,7 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-doc # (A suitable gitlog-to-changelog script can be found in GnuPG master.) GITLOG_TO_CHANGELOG=gitlog-to-changelog -EXTRA_DIST = autogen.sh autogen.rc README.GIT \ +EXTRA_DIST = autogen.sh autogen.rc README.GIT VERSION \ ChangeLog-2011 doc/ChangeLog-2011 src/ChangeLog-2011 \ tests/ChangeLog-2011 contrib/ChangeLog-2011 \ build-aux/git-log-footer build-aux/git-log-fix @@ -40,7 +40,7 @@ SUBDIRS = m4 src $(doc) tests dist-hook: gen-ChangeLog - echo "$(VERSION)" > $(distdir)/VERSION + distcheck-hook: set -e; ( \ diff --git a/autogen.sh b/autogen.sh index 90e7d7f..e5ba5bf 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,6 +1,6 @@ #! /bin/sh # autogen.sh -# Copyright (C) 2003, 2014 g10 Code GmbH +# Copyright (C) 2003, 2014, 2017 g10 Code GmbH # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without @@ -15,7 +15,7 @@ # configure it for the respective package. It is maintained as part of # GnuPG and source copied by other packages. # -# Version: 2014-06-06 +# Version: 2017-01-17 configure_ac="configure.ac" @@ -80,7 +80,17 @@ if [ -n "${AUTOGEN_SH_SILENT}" ]; then SILENT=" --silent" fi if test x"$1" = x"--help"; then - echo "usage: ./autogen.sh [--silent] [--force] [--build-TYPE] [ARGS]" + echo "usage: ./autogen.sh [OPTIONS] [ARGS]" + echo " Options:" + echo " --silent Silent operation" + echo " --force Pass --force to autoconf" + echo " --find-version Helper for configure.ac" + echo " --build-TYPE Configure to cross build for TYPE" + echo " --print-host Print only the host triplet" + echo " --print-build Print only the build platform triplet" + echo "" + echo " ARGS are passed to configure in --build-TYPE mode." + echo " Configuration for this script is expected in autogen.rc" exit 0 fi if test x"$1" = x"--silent"; then @@ -200,6 +210,11 @@ if [ "$myhost" = "find-version" ]; then minor="$3" micro="$4" + if [ -z "$package" -o -z "$major" -o -z "$minor" ]; then + echo "usage: ./autogen.sh --find-version PACKAGE MAJOR MINOR [MICRO]" >&2 + exit 1 + fi + case "$version_parts" in 2) matchstr1="$package-$major.[0-9]*" @@ -214,18 +229,20 @@ if [ "$myhost" = "find-version" ]; then esac beta=no - if [ -d .git ]; then + if [ -e .git ]; then ingit=yes tmp=$(git describe --match "${matchstr1}" --long 2>/dev/null) + tmp=$(echo "$tmp" | sed s/^"$package"//) if [ -n "$tmp" ]; then - tmp=$(echo "$tmp"|awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}') + tmp=$(echo "$tmp" | sed s/^"$package"// \ + | awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}') else tmp=$(git describe --match "${matchstr2}" --long 2>/dev/null \ | awk -F- '$4!=0{print"-beta"$4}') fi [ -n "$tmp" ] && beta=yes rev=$(git rev-parse --short HEAD | tr -d '\n\r') - rvd=$((0x$(echo ${rev} | head -c 4))) + rvd=$((0x$(echo ${rev} | dd bs=1 count=4 2>/dev/null))) else ingit=no beta=yes @@ -310,7 +327,8 @@ if [ "$myhost" = "w32" ]; then $tsdir/configure --enable-maintainer-mode ${SILENT} \ --prefix=${w32root} \ - --host=${host} --build=${build} \ + --host=${host} --build=${build} SYSROOT=${w32root} \ + PKG_CONFIG_LIBDIR=${w32root}/lib/pkgconfig \ ${configure_opts} ${extraoptions} "$@" rc=$? exit $rc @@ -416,13 +434,16 @@ fi # Check the git setup. if [ -d .git ]; then - CP="cp -a" - [ -z "${SILENT}" ] && CP="$CP -v" + CP="cp -p" + # If we have a GNU cp we can add -v + if cp --version >/dev/null 2>/dev/null; then + [ -z "${SILENT}" ] && CP="$CP -v" + fi if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then [ -z "${SILENT}" ] && cat <VERSION]) -AC_INIT([mym4_package],[mym4_version], [http://bugs.gnupg.org]) +AC_INIT([mym4_package],[mym4_version], [https://bugs.gnupg.org]) # LT Version numbers, remember to change them just *before* a release. # (Code changed: REVISION++) ----------------------------------------------------------------------- Summary of changes: .gitignore | 1 + Makefile.am | 4 ++-- autogen.sh | 41 +++++++++++++++++++++++++++++++---------- configure.ac | 3 ++- src/assuan.c | 2 ++ src/sysutils.c | 2 +- tests/version.c | 1 + 7 files changed, 40 insertions(+), 14 deletions(-) hooks/post-receive -- IPC library used by GnuPG http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 20:18:50 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 20:18:50 +0100 Subject: [git] gnupg-doc - branch, master, updated. ec64dfd9b1f61537c80945429defff26f6ef6e31 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 ec64dfd9b1f61537c80945429defff26f6ef6e31 (commit) from 851eacab6a48d1d5b642c2e4529ce76ec125bfe7 (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 ec64dfd9b1f61537c80945429defff26f6ef6e31 Author: Werner Koch Date: Wed Nov 15 20:12:25 2017 +0100 faq: Typo fix. diff --git a/web/faq/whats-new-in-2.1.org b/web/faq/whats-new-in-2.1.org index 2396398..4dd871e 100644 --- a/web/faq/whats-new-in-2.1.org +++ b/web/faq/whats-new-in-2.1.org @@ -739,7 +739,7 @@ a local keyring. :END: Since version 2.1.14 the export and import options have been enhanced -to allow the use of /gpg/ to modify a key without first stroing it in +to allow the use of /gpg/ to modify a key without first storing it in the keyring. For example: #+begin_example ----------------------------------------------------------------------- Summary of changes: web/faq/whats-new-in-2.1.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- The GnuPG website and other docs http://git.gnupg.org From cvs at cvs.gnupg.org Wed Nov 15 20:42:23 2017 From: cvs at cvs.gnupg.org (by Werner Koch) Date: Wed, 15 Nov 2017 20:42:23 +0100 Subject: [git] GCRYPT - branch, master, updated. libgcrypt-1.8.1-23-g0abd103 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 0abd1031bc0d889f21ddbf4ced8764d2191075fe (commit) from c594f187bd457b757112adc551ffa4db92962dc1 (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 0abd1031bc0d889f21ddbf4ced8764d2191075fe Author: Werner Koch Date: Wed Nov 15 20:35:16 2017 +0100 doc: Clarify gcry_mpi_div -- diff --git a/doc/gcrypt.texi b/doc/gcrypt.texi index a684134..dd24469 100644 --- a/doc/gcrypt.texi +++ b/doc/gcrypt.texi @@ -4759,7 +4759,9 @@ Basic arithmetic operations: @math{@var{q} = @var{dividend} / @var{divisor}}, @math{@var{r} = @var{dividend} \bmod @var{divisor}}. @var{q} and @var{r} may be passed -as @code{NULL}. @var{round} should be negative or 0. +as @code{NULL}. @var{round} is either negative for floored division +(rounds towards the next lower integer) or zero for truncated division +(rounds towards zero). @end deftypefun @deftypefun void gcry_mpi_mod (@w{gcry_mpi_t @var{r}}, @w{gcry_mpi_t @var{dividend}}, @w{gcry_mpi_t @var{divisor}}) ----------------------------------------------------------------------- Summary of changes: doc/gcrypt.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) hooks/post-receive -- The GNU crypto library http://git.gnupg.org From cvs at cvs.gnupg.org Thu Nov 16 09:45:42 2017 From: cvs at cvs.gnupg.org (by Andre Heinecke) Date: Thu, 16 Nov 2017 09:45:42 +0100 Subject: [git] GpgOL - branch, master, updated. gpgol-2.0.1-16-g75aae17 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 MS Outlook". The branch, master has been updated via 75aae1762f6a4e75f98475f26656e78bb101cc8a (commit) via 53754aad930c1f9944cebdb9d0e11b742687c25d (commit) from c5ed287937bbcb894549fd4ec4ac696425189aea (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 75aae1762f6a4e75f98475f26656e78bb101cc8a Author: Andre Heinecke Date: Thu Nov 16 09:42:59 2017 +0100 Fix Outlook 2010 TabComposeTools error * src/gpgoladdin.cpp (GetCustomUI_mime): Handle OL2010 differently. -- For OL2010 we don't have an inline editor so no TabComposeTools. GnuPG-Bug-ID: T3441 diff --git a/src/gpgoladdin.cpp b/src/gpgoladdin.cpp index 0f3d0d9..d8931de 100644 --- a/src/gpgoladdin.cpp +++ b/src/gpgoladdin.cpp @@ -911,7 +911,7 @@ GetCustomUI_MIME (BSTR RibbonID, BSTR * RibbonXml) } /* We don't use this code currently because calling the send event for Inline Response mailitems fails. */ - else if (!wcscmp (RibbonID, L"Microsoft.Outlook.Explorer")) + else if (!wcscmp (RibbonID, L"Microsoft.Outlook.Explorer") && g_ol_version_major > 14) { gpgrt_asprintf (&buffer, "" + " " + " " + " " + " " + "

    Files

    %s
    %s
    %s
    %s%s