Started to implement the audit log feature.
authorWerner Koch <wk@gnupg.org>
Mon, 19 Nov 2007 16:03:50 +0000 (16:03 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 19 Nov 2007 16:03:50 +0000 (16:03 +0000)
Pass PINENTRY_USER_DATA and XAUTHORITY to Pinentry.
Improved support for the quality bar.
Minor internal restructuring.
Translation fixes.

103 files changed:
NEWS
agent/ChangeLog
agent/agent.h
agent/call-pinentry.c
agent/call-scd.c
agent/command-ssh.c
agent/command.c
agent/genkey.c
agent/gpg-agent.c
common/ChangeLog
common/Makefile.am
common/asshelp.c
common/asshelp.h
common/audit.c [new file with mode: 0644]
common/audit.h [new file with mode: 0644]
common/errors.h [deleted file]
common/exaudit.awk [new file with mode: 0644]
common/exstatus.awk [new file with mode: 0644]
common/maperror.c [deleted file]
common/mkstrtable.awk [new file with mode: 0644]
common/status.c [new file with mode: 0644]
common/status.h [new file with mode: 0644]
doc/ChangeLog
doc/gpg-agent.texi
doc/gpg.texi
g10/ChangeLog
g10/Makefile.am
g10/armor.c
g10/build-packet.c
g10/call-agent.c
g10/cipher.c
g10/comment.c
g10/cpr.c [moved from g10/status.c with 65% similarity]
g10/dearmor.c
g10/decrypt.c
g10/delkey.c
g10/encode.c
g10/export.c
g10/gpg.c
g10/import.c
g10/keyedit.c
g10/keylist.c
g10/main.h
g10/mdfilter.c
g10/misc.c
g10/options.h
g10/pkclist.c
g10/revoke.c
g10/server.c
g10/sign.c
g10/signal.c
g10/skclist.c
g10/status.h [deleted file]
g10/tdbdump.c
g10/tdbio.c
g10/textfilter.c
g10/trustdb.c
g10/verify.c
jnlib/ChangeLog
jnlib/stringhelp.c
jnlib/stringhelp.h
po/ChangeLog
po/be.po
po/ca.po
po/cs.po
po/da.po
po/de.po
po/el.po
po/eo.po
po/es.po
po/et.po
po/fi.po
po/fr.po
po/gl.po
po/hu.po
po/id.po
po/it.po
po/ja.po
po/nb.po
po/pl.po
po/pt.po
po/pt_BR.po
po/ro.po
po/ru.po
po/sk.po
po/sv.po
po/tr.po
po/zh_CN.po
po/zh_TW.po
scd/ChangeLog
scd/scdaemon.c
scd/scdaemon.h
sm/ChangeLog
sm/call-agent.c
sm/certchain.c
sm/certdump.c
sm/gpgsm.c
sm/gpgsm.h
sm/misc.c
sm/server.c
sm/verify.c
tools/ChangeLog
tools/gpg-connect-agent.c

diff --git a/NEWS b/NEWS
index ce06549..2a5b0ac 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ Noteworthy changes in version 2.0.8
 
  * New option --list-config for gpgconf.
 
+ * The envvars XAUTHORITY and PINENTRY_USER_DATA are now passed to the
+   pinentry.
+
 
 Noteworthy changes in version 2.0.7 (2007-09-10)
 ------------------------------------------------
index e4a7f68..7a4716c 100644 (file)
@@ -1,3 +1,28 @@
+2007-11-19  Werner Koch  <wk@g10code.com>
+
+       * call-pinentry.c (agent_askpin): Set the tooltip for the quality
+       bar.
+
+2007-11-15  Werner Koch  <wk@g10code.com>
+
+       * agent.h (struct server_control_s): Add XAUTHORITY and
+       PINENTRY_USER_DATA.
+       * gpg-agent.c: New option --xauthority.
+       (main, agent_init_default_ctrl) 
+       (agent_deinit_default_ctrl): Implemented
+       * command.c (cmd_updatestartuptty): Ditto.
+       * command-ssh.c (start_command_handler_ssh): Ditto.
+       * call-pinentry.c (atfork_cb): Set the environment.
+       (start_pinentry): Pass CTRL as arg to atfork_cb.
+
+2007-11-14  Werner Koch  <wk@g10code.com>
+
+       * call-scd.c (start_scd) [W32]: Take care of fflush peculiarities.
+
+2007-11-07  Werner Koch  <wk@g10code.com>
+
+       * agent.h: Remove errors.h.
+
 2007-10-24  Werner Koch  <wk@g10code.com>
 
        * genkey.c (check_passphrase_constraints): Changed the wording of
index 9648ac4..beb7011 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <gcrypt.h>
 #include "../common/util.h"
-#include "../common/errors.h"
 #include "../common/membuf.h"
 #include "../common/sysutils.h" /* (gnupg_fd_t) */
 
@@ -62,6 +61,8 @@ struct
   char *startup_ttytype;
   char *startup_lc_ctype;
   char *startup_lc_messages;
+  char *startup_xauthority;   
+  char *startup_pinentry_user_data; 
 
 
   const char *pinentry_program; /* Filename of the program to start as
@@ -146,6 +147,8 @@ struct server_control_s
   char *ttytype;
   char *lc_ctype;
   char *lc_messages;
+  char *xauthority;   
+  char *pinentry_user_data; 
   struct {
     int algo;
     unsigned char value[MAX_DIGEST_LEN];
index 2afe9f1..6be9bfb 100644 (file)
@@ -1,5 +1,5 @@
 /* call-pinentry.c - fork of the pinentry to query stuff from the user
- * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2004, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -33,6 +33,7 @@
 #include <assuan.h>
 
 #include "agent.h"
+#include "setenv.h"
 #include "i18n.h"
 
 #ifdef _POSIX_OPEN_MAX
@@ -164,8 +165,16 @@ unlock_pinentry (int rc)
 static void
 atfork_cb (void *opaque, int where)
 {
+  ctrl_t ctrl = opaque;
+
   if (!where)
-    gcry_control (GCRYCTL_TERM_SECMEM);
+    {
+      gcry_control (GCRYCTL_TERM_SECMEM);
+      if (ctrl->xauthority)
+        setenv ("XAUTHORITY", ctrl->xauthority, 1);
+      if (ctrl->pinentry_user_data)
+        setenv ("PINENTRY_USER_DATA", ctrl->pinentry_user_data, 1 );
+    }
 }
 
 
@@ -261,9 +270,10 @@ start_pinentry (ctrl_t ctrl)
     }
   no_close_list[i] = -1;
 
-  /* Connect to the pinentry and perform initial handshaking */
+  /* Connect to the pinentry and perform initial handshaking.  Note
+     that atfork is used to change the environment for pinentry. */
   rc = assuan_pipe_connect_ext (&ctx, opt.pinentry_program, argv,
-                                no_close_list, atfork_cb, NULL, 0);
+                                no_close_list, atfork_cb, ctrl, 0);
   if (rc)
     {
       log_error ("can't connect to the PIN entry module: %s\n",
@@ -568,9 +578,47 @@ agent_askpin (ctrl_t ctrl,
      to the pinentry.  */
   if (pininfo->with_qualitybar && opt.min_passphrase_len )
     {
-      rc = assuan_transact (entry_ctx, "SETQUALITYBAR",
+      char *tmpstr;
+      const char *tooltip;
+
+      /* TRANSLATORS: This string is displayed by pinentry as the
+         label for the quality bar.  */
+      tmpstr = try_percent_escape (_("Quality:"), "\t\r\n\f\v");
+      snprintf (line, DIM(line)-1, "SETQUALITYBAR %s", tmpstr? tmpstr:"");
+      line[DIM(line)-1] = 0;
+      xfree (tmpstr);
+      rc = assuan_transact (entry_ctx, line,
                             NULL, NULL, NULL, NULL, NULL, NULL);
-      if (rc)
+      if (rc == 103 /*(Old assuan error code)*/
+          || gpg_err_code (rc) == GPG_ERR_ASS_UNKNOWN_CMD)
+        ; /* Ignore Unknown Command from old pinentry versions.  */
+      else if (rc)
+        return unlock_pinentry (rc);
+
+      /* TRANSLATORS: This string is a tooltip, shown by pinentry when
+         hovering over the quality bar.  Please use an appropriate
+         string to describe what this is about.  The length of the
+         tooltip is limited to about 900 characters.  If you do not
+         translate this entry, a default english text (see source)
+         will be used. */
+      tooltip =  _("pinentry.qualitybar.tooltip");
+      if (!strcmp ("pinentry.qualitybar.tooltip", tooltip))
+        tooltip = ("The quality of the text entered above.\n"
+                   "Please ask your administrator for "
+                   "details about the criteria.");
+      /* Fixme: As soon as we have the extended error reporting
+         facility (audit log), we can use a user specified helptext if
+         that has been configured. */
+      tmpstr = try_percent_escape (tooltip, "\t\r\n\f\v");
+      snprintf (line, DIM(line)-1, "SETQUALITYBAR_TT %s", tmpstr? tmpstr:"");
+      line[DIM(line)-1] = 0;
+      xfree (tmpstr);
+      rc = assuan_transact (entry_ctx, line,
+                            NULL, NULL, NULL, NULL, NULL, NULL);
+      if (rc == 103 /*(Old assuan error code)*/
+          || gpg_err_code (rc) == GPG_ERR_ASS_UNKNOWN_CMD)
+        ; /* Ignore Unknown Command from old pinentry versions.  */
+      else if (rc)
         return unlock_pinentry (rc);
     }
 
index f0dd3ad..42f3f8e 100644 (file)
@@ -294,9 +294,17 @@ start_scd (ctrl_t ctrl)
       
   if (fflush (NULL))
     {
-      err = gpg_error (gpg_err_code_from_errno (errno));
+#ifndef HAVE_W32_SYSTEM
+      err = gpg_error_from_syserror ();
+#endif
       log_error ("error flushing pending output: %s\n", strerror (errno));
+      /* At least Windows XP fails here with EBADF.  According to docs
+         and Wine an fflush(NULL) is the same as _flushall.  However
+         the Wime implementaion does not flush stdin,stdout and stderr
+         - see above.  Lets try to ignore the error. */
+#ifndef HAVE_W32_SYSTEM
       goto leave;
+#endif
     }
 
   if (!opt.scdaemon_program || !*opt.scdaemon_program)
@@ -319,9 +327,11 @@ start_scd (ctrl_t ctrl)
     }
   no_close_list[i] = -1;
 
-  /* Connect to the pinentry and perform initial handshaking */
+  /* Connect to the pinentry and perform initial handshaking.  Use
+     detached flag (128) so that under W32 SCDAEMON does not show up a
+     new window.  */
   rc = assuan_pipe_connect_ext (&ctx, opt.scdaemon_program, argv,
-                                no_close_list, atfork_cb, NULL, 0);
+                                no_close_list, atfork_cb, NULL, 128);
   if (rc)
     {
       log_error ("can't connect to the SCdaemon: %s\n",
index 48bf832..9e2a57d 100644 (file)
@@ -2871,6 +2871,10 @@ start_command_handler_ssh (ctrl_t ctrl, gnupg_fd_t sock_client)
     ctrl->lc_ctype = strdup (opt.startup_lc_ctype);
   if (!ctrl->lc_messages && opt.startup_lc_messages)
     ctrl->lc_messages = strdup (opt.startup_lc_messages);
+  if (!ctrl->xauthority && opt.startup_xauthority)
+    ctrl->xauthority = strdup (opt.startup_xauthority);
+  if (!ctrl->pinentry_user_data && opt.startup_pinentry_user_data)
+    ctrl->pinentry_user_data = strdup (opt.startup_pinentry_user_data);
 
 
   /* Create stream from socket.  */
index 9be8148..c0c21bf 100644 (file)
@@ -1294,6 +1294,7 @@ cmd_updatestartuptty (assuan_context_t ctx, char *line)
   xfree (opt.startup_ttytype); opt.startup_ttytype = NULL;
   xfree (opt.startup_lc_ctype); opt.startup_lc_ctype = NULL;
   xfree (opt.startup_lc_messages); opt.startup_lc_messages = NULL;
+  xfree (opt.startup_xauthority); opt.startup_xauthority = NULL;
 
   if (ctrl->display)
     opt.startup_display = xtrystrdup (ctrl->display);
@@ -1305,6 +1306,10 @@ cmd_updatestartuptty (assuan_context_t ctx, char *line)
     opt.startup_lc_ctype = xtrystrdup (ctrl->lc_ctype);
   if (ctrl->lc_messages)
     opt.startup_lc_messages = xtrystrdup (ctrl->lc_messages);
+  if (ctrl->xauthority)
+    opt.startup_xauthority = xtrystrdup (ctrl->xauthority);
+  if (ctrl->pinentry_user_data)
+    opt.startup_pinentry_user_data = xtrystrdup (ctrl->pinentry_user_data);
 
   return 0;
 }
@@ -1442,6 +1447,22 @@ option_handler (assuan_context_t ctx, const char *key, const char *value)
       if (!ctrl->lc_messages)
         return out_of_core ();
     }
+  else if (!strcmp (key, "xauthority"))
+    {
+      if (ctrl->xauthority)
+        free (ctrl->xauthority);
+      ctrl->xauthority = strdup (value);
+      if (!ctrl->xauthority)
+        return out_of_core ();
+    }
+  else if (!strcmp (key, "pinentry-user-data"))
+    {
+      if (ctrl->pinentry_user_data)
+        free (ctrl->pinentry_user_data);
+      ctrl->pinentry_user_data = strdup (value);
+      if (!ctrl->pinentry_user_data)
+        return out_of_core ();
+    }
   else if (!strcmp (key, "use-cache-for-signing"))
     ctrl->server_local->use_cache_for_signing = *value? atoi (value) : 0;
   else
index 8df555d..efebbfa 100644 (file)
@@ -232,7 +232,7 @@ check_passphrase_constraints (ctrl_t ctrl, const char *pw, int silent)
       check_passphrase_pattern (ctrl, pw))
     {
       const char *desc =
-        /* */     _("Warning: You have entered an insecure passphrase.%0A"
+        /* */     _("Warning: You have entered an insecure passphrase.%%0A"
                     "A passphrase may not be a known term or match%%0A"
                     "certain pattern.");
 
index ba98b38..e4d8f3e 100644 (file)
@@ -81,6 +81,7 @@ enum cmd_and_opt_values
   oTTYtype,
   oLCctype,
   oLCmessages,
+  oXauthority,
   oScdaemonProgram,
   oDefCacheTTL,
   oDefCacheTTLSSH,
@@ -145,7 +146,8 @@ static ARGPARSE_OPTS opts[] = {
   { oTTYtype,    "ttytype",     2, "@" },
   { oLCctype,    "lc-ctype",    2, "@" },
   { oLCmessages, "lc-messages", 2, "@" },
-  { oKeepTTY, "keep-tty", 0,  N_("ignore requests to change the TTY")},
+  { oXauthority, "xauthority",  2, "@" },
+  { oKeepTTY,    "keep-tty",    0,  N_("ignore requests to change the TTY")},
   { oKeepDISPLAY, "keep-display",
                           0, N_("ignore requests to change the X display")},
 
@@ -217,6 +219,7 @@ static char *default_ttyname;
 static char *default_ttytype;
 static char *default_lc_ctype;
 static char *default_lc_messages;
+static char *default_xauthority;
 
 /* Name of a config file, which will be reread on a HUP if it is not NULL. */
 static char *config_filename;
@@ -559,6 +562,12 @@ main (int argc, char **argv )
   opt.startup_lc_messages = getenv ("LC_MESSAGES");
   if (opt.startup_lc_messages)
     opt.startup_lc_messages = xstrdup (opt.startup_lc_messages);
+  opt.startup_xauthority = getenv ("XAUTHORITY");
+  if (opt.startup_xauthority)
+    opt.startup_xauthority = xstrdup (opt.startup_xauthority);
+  opt.startup_pinentry_user_data = getenv ("PINENTRY_USER_DATA");
+  if (opt.startup_pinentry_user_data)
+    opt.startup_pinentry_user_data = xstrdup (opt.startup_pinentry_user_data);
 
   /* Check whether we have a config file on the commandline */
   orig_argc = argc;
@@ -662,6 +671,7 @@ main (int argc, char **argv )
         case oTTYtype: default_ttytype = xstrdup (pargs.r.ret_str); break;
         case oLCctype: default_lc_ctype = xstrdup (pargs.r.ret_str); break;
         case oLCmessages: default_lc_messages = xstrdup (pargs.r.ret_str);
+        case oXauthority: default_xauthority = xstrdup (pargs.r.ret_str);
           break;
 
         case oUseStandardSocket: standard_socket = 1; break;
@@ -1139,6 +1149,14 @@ agent_init_default_ctrl (ctrl_t ctrl)
   if (ctrl->lc_messages)
     free (ctrl->lc_messages);
   ctrl->lc_messages = default_lc_messages? strdup (default_lc_messages) : NULL;
+
+  if (ctrl->xauthority)
+    free (ctrl->xauthority);
+  ctrl->xauthority = default_xauthority? strdup (default_xauthority) : NULL;
+
+  if (ctrl->pinentry_user_data)
+    free (ctrl->pinentry_user_data);
+  ctrl->pinentry_user_data = NULL;
 }
 
 
@@ -1155,6 +1173,10 @@ agent_deinit_default_ctrl (ctrl_t ctrl)
     free (ctrl->lc_ctype);
   if (ctrl->lc_messages)
     free (ctrl->lc_messages);
+  if (ctrl->xauthority)
+    free (ctrl->xauthority);
+  if (ctrl->pinentry_user_data)
+    free (ctrl->pinentry_user_data);
 }
 
 /* Reread parts of the configuration.  Note, that this function is
index b7c5837..9db29d9 100644 (file)
@@ -1,3 +1,21 @@
+2007-11-15  Werner Koch  <wk@g10code.com>
+
+       * asshelp.c (send_pinentry_environment): Add args XAUTHORITY and
+       PINENTRY_USER_DATA.
+       (start_new_gpg_agent): Ditto.
+
+2007-11-07  Werner Koch  <wk@g10code.com>
+
+       * status.h: New.
+       * errors.h: Remove.
+
+2007-11-05  Werner Koch  <wk@g10code.com>
+
+       * audit.c, audit.h: New. 
+       * Makefile.am: Add rules to build audit-events.h.
+       * exaudit.awk: New.
+       * mkstrtable.awk: New.  Taken from libgpg-error.
+
 2007-10-19  Werner Koch  <wk@g10code.com>
 
        * i18n.c (i18n_switchto_utf8, i18n_switchback): New.
index e5f7562..d475fae 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile for common gnupg modules
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2007 Free Software Foundation, Inc.
 #
 # This file is part of GnuPG.
 #
 
 ## Process this file with automake to produce Makefile.in
 
+EXTRA_DIST = mkstrtable.awk exaudit.awk exstatus.awk \
+             audit-events.h status-codes.h
+
 noinst_LIBRARIES = libcommon.a libcommonpth.a libsimple-pwquery.a libgpgrl.a
 noinst_PROGRAMS = $(module_tests)
 TESTS = $(module_tests)
 
+BUILT_SOURCES = audit-events.h status-codes.h
+
 AM_CPPFLAGS = -I$(top_srcdir)/gl -I$(top_srcdir)/intl
 
 AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(KSBA_CFLAGS)
@@ -31,7 +36,7 @@ include $(top_srcdir)/am/cmacros.am
 common_sources = \
        common-defs.h \
        util.h i18n.c i18n.h \
-       errors.h \
+       status.c status.h\
        openpgpdefs.h \
        gc-opt-flags.h \
        keyserver.h \
@@ -55,12 +60,14 @@ common_sources = \
        exechelp.c exechelp.h \
        signal.c \
        estream.c estream.h estream-printf.c estream-printf.h \
+       audit.c audit.h \
        srv.h \
        dns-cert.c dns-cert.h \
        pka.c pka.h \
        http.c http.h 
 
 
+
 libcommon_a_SOURCES = $(common_sources)
 if USE_DNS_SRV
 libcommon_a_SOURCES += srv.c
@@ -80,6 +87,19 @@ libsimple_pwquery_a_CFLAGS = $(AM_CFLAGS) $(LIBASSUAN_CFLAGS)
 libgpgrl_a_SOURCES = \
         gpgrlhelp.c
 
+# Create the audit-events.h include file from audit.h
+audit-events.h: Makefile mkstrtable.awk exaudit.awk audit.h
+       $(AWK) -f $(srcdir)/exaudit.awk $(srcdir)/audit.h \
+         | $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=3 -v nogettext=1 \
+                  -v namespace=eventstr_  >$@
+
+# Create the status-codes.h include file from status.h
+status-codes.h: Makefile mkstrtable.awk exstatus.awk status.h
+       $(AWK) -f $(srcdir)/exstatus.awk $(srcdir)/status.h \
+         | $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=3 -v nogettext=1 \
+                  -v namespace=statusstr_  >$@
+
+
 #
 # Module tests
 #
@@ -92,3 +112,5 @@ t_convert_LDADD = $(t_common_ldadd)
 t_gettime_LDADD = $(t_common_ldadd)
 t_sysutils_LDADD = $(t_common_ldadd)
 
+
+
index 269e897..5aa61c7 100644 (file)
@@ -1,5 +1,5 @@
 /* asshelp.c - Helper functions for Assuan
- * Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ * Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -31,7 +31,7 @@
 #include "util.h"
 #include "exechelp.h"
 #include "sysutils.h"
-#include "errors.h"  /* FIXME: This one conatisn only status code - rename it*/
+#include "status.h" 
 #include "asshelp.h"
 
 
@@ -56,7 +56,7 @@ send_one_option (assuan_context_t ctx, gpg_err_source_t errsource,
 }
 
 
-/* Send the assuan commands pertaining to the pinenry environment.  The
+/* Send the assuan commands pertaining to the pinentry environment.  The
    OPT_* arguments are optional and may be used to override the
    defaults taken from the current locale. */
 gpg_error_t
@@ -66,7 +66,9 @@ send_pinentry_environment (assuan_context_t ctx,
                            const char *opt_ttyname,
                            const char *opt_ttytype,
                            const char *opt_lc_ctype,
-                           const char *opt_lc_messages)
+                           const char *opt_lc_messages,
+                           const char *opt_xauthority,
+                           const char *opt_pinentry_user_data)
 {
   gpg_error_t err = 0;
   char *dft_display = NULL;
@@ -74,6 +76,8 @@ send_pinentry_environment (assuan_context_t ctx,
   char *dft_ttytype = NULL;
   char *old_lc = NULL; 
   char *dft_lc = NULL;
+  char *dft_xauthority = NULL;
+  char *dft_pinentry_user_data = NULL;
 
   /* Send the DISPLAY variable.  */
   dft_display = getenv ("DISPLAY");
@@ -162,6 +166,27 @@ send_pinentry_environment (assuan_context_t ctx,
   if (err)
     return err;
 
+  /* Send the XAUTHORITY variable.  */
+  dft_xauthority = getenv ("XAUTHORITY");
+  if (opt_xauthority || dft_xauthority)
+    {
+      err = send_one_option (ctx, errsource, "xauthority", 
+                             opt_xauthority ? opt_xauthority : dft_xauthority);
+      if (err)
+        return err;
+    }
+
+  /* Send the PINENTRY_USER_DATA variable.  */
+  dft_pinentry_user_data = getenv ("PINENTRY_USER_DATA");
+  if (opt_pinentry_user_data || dft_pinentry_user_data)
+    {
+      err = send_one_option (ctx, errsource, "pinentry-user-data", 
+                             opt_pinentry_user_data ?
+                             opt_pinentry_user_data : dft_pinentry_user_data);
+      if (err)
+        return err;
+    }
+
   return 0;
 }
 
@@ -179,6 +204,8 @@ start_new_gpg_agent (assuan_context_t *r_ctx,
                      const char *opt_ttytype,
                      const char *opt_lc_ctype,
                      const char *opt_lc_messages,
+                     const char *opt_xauthority,
+                     const char *opt_pinentry_user_data,
                      int verbose, int debug,
                      gpg_error_t (*status_cb)(ctrl_t, int, ...),
                      ctrl_t status_cb_arg)
@@ -333,7 +360,9 @@ start_new_gpg_agent (assuan_context_t *r_ctx,
   if (!rc)
     rc = send_pinentry_environment (ctx, errsource,
                                     opt_display, opt_ttyname, opt_ttytype,
-                                    opt_lc_ctype, opt_lc_messages);
+                                    opt_lc_ctype, opt_lc_messages,
+                                    opt_xauthority,
+                                    opt_pinentry_user_data);
   if (rc)
     {
       assuan_disconnect (ctx);
index eb5a41c..dfed3ac 100644 (file)
@@ -1,5 +1,5 @@
 /* asshelp.h - Helper functions for Assuan
- *     Copyright (C) 2004 Free Software Foundation, Inc.
+ *     Copyright (C) 2004, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -30,7 +30,9 @@ send_pinentry_environment (assuan_context_t ctx,
                            const char *opt_ttyname,
                            const char *opt_ttytype,
                            const char *opt_lc_ctype,
-                           const char *opt_lc_messages);
+                           const char *opt_lc_messages,
+                           const char *opt_xauthority,
+                           const char *opt_pinentry_user_data);
 
 /* This fucntion is used by the call-agent.c modules to fire up a new
    agent.  What a parameter list ;-).  */
@@ -44,6 +46,8 @@ start_new_gpg_agent (assuan_context_t *r_ctx,
                      const char *opt_ttytype,
                      const char *opt_lc_ctype,
                      const char *opt_lc_messages,
+                     const char *opt_xauthority,
+                     const char *opt_pinentry_user_data,
                      int verbose, int debug,
                      gpg_error_t (*status_cb)(ctrl_t, int, ...),
                      ctrl_t status_cb_arg);
diff --git a/common/audit.c b/common/audit.c
new file mode 100644 (file)
index 0000000..baa7d8d
--- /dev/null
@@ -0,0 +1,336 @@
+/* audit.c - GnuPG's audit subsystem
+ *     Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+
+
+#include "util.h"
+#include "audit.h"
+#include "audit-events.h"
+
+/* One log entry.  */
+struct log_item_s
+{
+  audit_event_t event; /* The event.  */
+  gpg_error_t err;     /* The logged error code.  */
+  int intvalue;        /* A logged interger value.  */
+  char *string;        /* A malloced string or NULL.  */
+  ksba_cert_t cert;    /* A certifciate or NULL. */
+  int have_err:1;
+  int have_intvalue:1;
+};
+typedef struct log_item_s *log_item_t;
+
+
+
+/* The main audit object.  */
+struct audit_ctx_s
+{
+  const char *failure;  /* If set a description of the internal failure.  */
+  audit_type_t type;
+  
+  log_item_t log;       /* The table with the log entries.  */
+  size_t logsize;       /* The allocated size for LOG.  */
+  size_t logused;       /* The used size of LOG.  */
+
+};
+
+
+
+
+static const char *
+event2str (audit_event_t event)
+{
+  int idx = eventstr_msgidxof (event);
+  if (idx == -1)
+    return "Unknown event";
+  else
+    return eventstr_msgstr + eventstr_msgidx[idx];
+}
+
+
+
+/* Create a new audit context.  In case of an error NULL is returned
+   and errno set appropriately. */ 
+audit_ctx_t
+audit_new (void)
+{
+  audit_ctx_t ctx;
+
+  ctx = xtrycalloc (1, sizeof *ctx);
+
+  return ctx;
+}
+
+
+/* Release an audit context.  Passing NULL for CTX is allowed and does
+   nothing.  */
+void
+audit_release (audit_ctx_t ctx)
+{
+  int idx;
+  if (!ctx)
+    return;
+  if (ctx->log)
+    {
+      for (idx=0; idx < ctx->logused; idx++)
+        {
+          if (ctx->log[idx].string)
+            xfree (ctx->log[idx].string);
+          if (ctx->log[idx].cert)
+            ksba_cert_release (ctx->log[idx].cert);
+        }
+      xfree (ctx->log);
+    }
+  xfree (ctx);
+}
+
+
+/* Set the type for the audit operation.  If CTX is NULL, this is a
+   dummy fucntion.  */
+void
+audit_set_type (audit_ctx_t ctx, audit_type_t type)
+{
+  if (!ctx || ctx->failure)
+    return;  /* Audit not enabled or an internal error has occurred. */
+
+  if (ctx->type && ctx->type != type)
+    {
+      ctx->failure = "conflict in type initialization";
+      return;
+    }
+  ctx->type = type;
+}
+
+
+/* Create a new log item and put it into the table.  Return that log
+   item on success; return NULL on memory failure and mark that in
+   CTX. */
+static log_item_t
+create_log_item (audit_ctx_t ctx)
+{
+  log_item_t item, table;
+  size_t size;
+
+  if (!ctx->log)
+    {
+      size = 10;
+      table = xtrymalloc (size * sizeof *table);
+      if (!table)
+        {
+          ctx->failure = "Out of memory in create_log_item";
+          return NULL;
+        }
+      ctx->log = table;
+      ctx->logsize = size;
+      item = ctx->log + 0;
+      ctx->logused = 1;
+    }
+  else if (ctx->logused >= ctx->logsize)
+    {
+      size = ctx->logsize + 10;
+      table = xtryrealloc (ctx->log, size * sizeof *table);
+      if (!table)
+        {
+          ctx->failure = "Out of memory while reallocating in create_log_item";
+          return NULL;
+        }
+      ctx->log = table;
+      ctx->logsize = size;
+      item = ctx->log + ctx->logused++;
+    }
+  else
+    item = ctx->log + ctx->logused++;
+
+  item->event = AUDIT_NULL_EVENT;
+  item->err = 0;
+  item->have_err = 0;
+  item->intvalue = 0;
+  item->have_intvalue = 0;
+  item->string = NULL;
+  item->cert = NULL;
+
+  return item;
+}
+
+/* Add a new event to the audit log.  If CTX is NULL, this function
+   does nothing.  */
+void
+audit_log (audit_ctx_t ctx, audit_event_t event)
+{
+  log_item_t item;
+
+  if (!ctx || ctx->failure)
+    return;  /* Audit not enabled or an internal error has occurred. */
+  if (!event)
+    {
+      ctx->failure = "Invalid event passed to audit_log";
+      return;
+    }
+  if (!(item = create_log_item (ctx)))
+    return;
+  item->event = event;
+}
+
+/* Add a new event to the audit log.  If CTX is NULL, this function
+   does nothing.  This version also adds the result of the oepration
+   to the log.. */
+void
+audit_log_ok (audit_ctx_t ctx, audit_event_t event, gpg_error_t err)
+{
+  log_item_t item;
+
+  if (!ctx || ctx->failure)
+    return;  /* Audit not enabled or an internal error has occurred. */
+  if (!event)
+    {
+      ctx->failure = "Invalid event passed to audit_log_ok";
+      return;
+    }
+  if (!(item = create_log_item (ctx)))
+    return;
+  item->event = event;
+  item->err = err;
+  item->have_err = 1;
+}
+
+
+/* Add a new event to the audit log.  If CTX is NULL, this function
+   does nothing.  This version also add the integer VALUE to the log.  */
+void
+audit_log_i (audit_ctx_t ctx, audit_event_t event, int value)
+{
+  log_item_t item;
+
+  if (!ctx || ctx->failure)
+    return;  /* Audit not enabled or an internal error has occurred. */
+  if (!event)
+    {
+      ctx->failure = "Invalid event passed to audit_log_i";
+      return;
+    }
+  if (!(item = create_log_item (ctx)))
+    return;
+  item->event = event;
+  item->intvalue = value;
+  item->have_intvalue = 1;
+}
+
+
+/* Add a new event to the audit log.  If CTX is NULL, this function
+   does nothing.  This version also add the integer VALUE to the log.  */
+void
+audit_log_s (audit_ctx_t ctx, audit_event_t event, const char *value)
+{
+  log_item_t item;
+  char *tmp;
+
+  if (!ctx || ctx->failure)
+    return;  /* Audit not enabled or an internal error has occurred. */
+  if (!event)
+    {
+      ctx->failure = "Invalid event passed to audit_log_s";
+      return;
+    }
+  tmp = xtrystrdup (value? value : "");
+  if (!tmp)
+    {
+      ctx->failure = "Out of memory in audit_event";
+      return;
+    }
+  if (!(item = create_log_item (ctx)))
+    {
+      xfree (tmp);
+      return;
+    }
+  item->event = event;
+  item->string = tmp;
+}
+
+/* Add a new event to the audit log.  If CTX is NULL, this function
+   does nothing.  This version also adds the certificate CERT and the
+   result of an operation to the log.  */
+void
+audit_log_cert (audit_ctx_t ctx, audit_event_t event, 
+                ksba_cert_t cert, gpg_error_t err)
+{
+  log_item_t item;
+
+  if (!ctx || ctx->failure)
+    return;  /* Audit not enabled or an internal error has occurred. */
+  if (!event)
+    {
+      ctx->failure = "Invalid event passed to audit_log_cert";
+      return;
+    }
+  if (!(item = create_log_item (ctx)))
+    return;
+  item->event = event;
+  item->err = err;
+  item->have_err = 1;
+  if (cert)
+    {
+      ksba_cert_ref (cert); 
+      item->cert = cert;
+    }
+}
+
+
+
+/* Print the formatted audit result.    THIS IS WORK IN PROGRESS.  */
+void
+audit_print_result (audit_ctx_t ctx, FILE *fp)
+{
+  int idx;
+  int maxlen;
+  size_t n;
+
+  if (!ctx)
+    return;
+  if (!ctx->log || !ctx->logused)
+    {
+      fprintf (fp, "AUDIT-LOG: No entries\n");
+      return;
+    }
+
+  for (idx=0,maxlen=0; idx < DIM (eventstr_msgidx); idx++)
+    {
+      n = strlen (eventstr_msgstr + eventstr_msgidx[idx]);    
+      if (n > maxlen)
+        maxlen = n;
+    }
+
+  for (idx=0; idx < ctx->logused; idx++)
+    {
+      fprintf (fp, "AUDIT-LOG[%d]: %-*s", 
+               idx, maxlen, event2str (ctx->log[idx].event));
+      if (ctx->log[idx].have_intvalue)
+        fprintf (fp, " i=%d", ctx->log[idx].intvalue); 
+      if (ctx->log[idx].string)
+        fprintf (fp, " s=`%s'", ctx->log[idx].string); 
+      if (ctx->log[idx].cert)
+        fprintf (fp, " has_cert"); 
+      if (ctx->log[idx].have_err)
+        fprintf (fp, " err=\"%s\"", gpg_strerror (ctx->log[idx].err)); 
+      putc ('\n', fp);
+    }
+}
+
diff --git a/common/audit.h b/common/audit.h
new file mode 100644 (file)
index 0000000..ca7b704
--- /dev/null
@@ -0,0 +1,139 @@
+/* audit.h - Definitions for the audit subsystem
+ *     Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GNUPG_COMMON_AUDIT_H
+#define GNUPG_COMMON_AUDIT_H
+
+#include <ksba.h>
+
+
+struct audit_ctx_s;
+typedef struct audit_ctx_s *audit_ctx_t;
+
+/* Constants for the audit type.  */
+typedef enum
+  {
+    AUDIT_TYPE_NONE  = 0,  /* No type set.  */
+    AUDIT_TYPE_VERIFY      /* Signature verification.  */
+  }
+audit_type_t;
+
+/* The events we support.  */
+typedef enum
+  {
+    AUDIT_NULL_EVENT = 0,
+    /* No such event.  Its value shall be 0 and no other values shall
+       be assigned to the other enum symbols.  This is required so
+       that the exaudit.awk script comes up with correct values
+       without running cc.  */
+
+    AUDIT_SETUP_READY,
+    /* All preparations done so that the actual processing can start
+       now.  This indicates that all parameters are okay and we can
+       start to process the actual data.  */
+
+    AUDIT_DETACHED_SIGNATURE,
+    /* The signature is a detached one. */
+
+    AUDIT_CERT_ONLY_SIG,
+    /* A certifciate only signature has been detected.  */
+
+    AUDIT_DATA_HASH_ALGO,  /* int */
+    /* The hash algo given as argument is used for this signature.
+       This event will be repeated for all hash algorithms used with
+       the data.  */
+
+    AUDIT_BAD_DATA_HASH_ALGO,  /* string */
+    /* The hash algo as specified by the signature can't be used.
+       STRING is the description of this algorithm which usually is an
+       OID string.  STRING may be NULL. */
+
+    AUDIT_DATA_HASHING,    /* ok_err */
+    /* Logs the result of the data hashing. */
+
+    AUDIT_READ_ERROR,     /* ok_err */
+    /* A generic read error occurred.  */
+
+    AUDIT_WRITE_ERROR,     /* ok_err */
+    /* A generic write error occurred.  */
+
+    AUDIT_USAGE_ERROR,
+    /* The program was used in an inappropriate way; For example by
+       passing a data object while the signature does not expect one
+       or vice versa.  */
+    
+    AUDIT_SAVE_CERT,       /* cert, ok_err */
+    /* Save the certificate received in a message. */
+
+    AUDIT_NEW_SIG,         /* int */
+    /* Start the verification of a new signature for the last data
+       object.  The argument is the signature number as used
+       internally by the program.  */
+    
+    AUDIT_SIG_NAME,        /* string */
+    /* The name of a signer.  This is the name or other identification
+       data as known from the signature and not the name from the
+       certificate used for verification.  An example for STRING when
+       using CMS is:b "#1234/CN=Prostetnic Vogon Jeltz".  */
+
+    AUDIT_SIG_STATUS,     /* string */
+    /* The signature status of the current signer.  This is the last
+       audit information for one signature.  STRING gives the status:
+
+         "error"       - there was a problem checking this or any signature.
+         "unsupported" - the signature type is not supported. 
+         "no-cert"     - The certificate of the signer was not found (the
+                         S/N+issuer of the signer is already in the log).
+         "bad"         - bad signature
+         "good"        - good signature
+    */
+
+    AUDIT_VALIDATE_CHAIN,
+    /* Start the validation of a certificate chain. */
+
+    AUDIT_CHAIN_BEGIN,
+    AUDIT_CHAIN_CERT,    /* cert */
+    AUDIT_CHAIN_ROOTCERT,/* cert */
+    AUDIT_CHAIN_END,
+    /* These 4 events are used to log the certificates making up a
+       certificate chain.  ROOTCERT is used for the trustanchor and
+       CERT for all other certificates.  */ 
+
+
+
+    AUDIT_LAST_EVENT  /* Marker for parsing this list.  */
+  }
+audit_event_t;
+
+
+audit_ctx_t audit_new (void);
+void audit_release (audit_ctx_t ctx);
+void audit_set_type (audit_ctx_t ctx, audit_type_t type);
+void audit_log (audit_ctx_t ctx, audit_event_t event);
+void audit_log_ok (audit_ctx_t ctx, audit_event_t event, gpg_error_t err);
+void audit_log_i (audit_ctx_t ctx, audit_event_t event, int value);
+void audit_log_s (audit_ctx_t ctx, audit_event_t event, const char *value);
+void audit_log_cert (audit_ctx_t ctx, audit_event_t event, 
+                     ksba_cert_t cert, gpg_error_t err);
+
+void audit_print_result (audit_ctx_t ctx, FILE *fp);
+
+
+
+#endif /*GNUPG_COMMON_AUDIT_H*/
diff --git a/common/errors.h b/common/errors.h
deleted file mode 100644 (file)
index 7ce1996..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* errors.h - Globally used error codes
- *     Copyright (C) 2001 Free Software Foundation, Inc.
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GNUPG_COMMON_ERRORS_H
-#define GNUPG_COMMON_ERRORS_H
-
-#include "util.h"
-
-/* Status codes - fixme: should go into another file */
-enum {
-  STATUS_ENTER,
-  STATUS_LEAVE,
-  STATUS_ABORT,
-  STATUS_GOODSIG,
-  STATUS_BADSIG,
-  STATUS_ERRSIG,
-  STATUS_BADARMOR,
-  STATUS_RSA_OR_IDEA,
-  STATUS_SIGEXPIRED,
-  STATUS_KEYREVOKED,
-  STATUS_TRUST_UNDEFINED,
-  STATUS_TRUST_NEVER,
-  STATUS_TRUST_MARGINAL,
-  STATUS_TRUST_FULLY,
-  STATUS_TRUST_ULTIMATE,
-  
-  STATUS_SHM_INFO,
-  STATUS_SHM_GET,
-  STATUS_SHM_GET_BOOL,
-  STATUS_SHM_GET_HIDDEN,
-  
-  STATUS_NEED_PASSPHRASE,
-  STATUS_VALIDSIG,
-  STATUS_SIG_ID,
-  STATUS_ENC_TO,
-  STATUS_NODATA,
-  STATUS_BAD_PASSPHRASE,
-  STATUS_NO_PUBKEY,
-  STATUS_NO_SECKEY,
-  STATUS_NEED_PASSPHRASE_SYM,
-  STATUS_DECRYPTION_FAILED,
-  STATUS_DECRYPTION_OKAY,
-  STATUS_MISSING_PASSPHRASE,
-  STATUS_GOOD_PASSPHRASE,
-  STATUS_GOODMDC,
-  STATUS_BADMDC,
-  STATUS_ERRMDC,
-  STATUS_IMPORTED,
-  STATUS_IMPORT_OK,
-  STATUS_IMPORT_PROBLEM,
-  STATUS_IMPORT_RES,
-  STATUS_FILE_START,
-  STATUS_FILE_DONE,
-  STATUS_FILE_ERROR,
-  
-  STATUS_BEGIN_DECRYPTION,
-  STATUS_END_DECRYPTION,
-  STATUS_BEGIN_ENCRYPTION,
-  STATUS_END_ENCRYPTION,
-  
-  STATUS_DELETE_PROBLEM,
-  STATUS_GET_BOOL,
-  STATUS_GET_LINE,
-  STATUS_GET_HIDDEN,
-  STATUS_GOT_IT,
-  STATUS_PROGRESS,
-  STATUS_SIG_CREATED,
-  STATUS_SESSION_KEY,
-  STATUS_NOTATION_NAME,
-  STATUS_NOTATION_DATA,
-  STATUS_POLICY_URL,
-  STATUS_BEGIN_STREAM,
-  STATUS_END_STREAM,
-  STATUS_KEY_CREATED,
-  STATUS_USERID_HIN,
-  STATUS_UNEXPECTED,
-  STATUS_INV_RECP,
-  STATUS_NO_RECP,
-  STATUS_ALREADY_SIGNED,
-
-  STATUS_EXPSIG,
-  STATUS_EXPKEYSIG,
-
-  STATUS_TRUNCATED,
-  STATUS_ERROR,
-  STATUS_NEWSIG
-};
-
-
-/*-- errors.c (build by mkerror and mkerrtok) --*/
-const char *gnupg_strerror (int err);
-const char *gnupg_error_token (int err);
-
-
-#endif /*GNUPG_COMMON_ERRORS_H*/
diff --git a/common/exaudit.awk b/common/exaudit.awk
new file mode 100644 (file)
index 0000000..270e148
--- /dev/null
@@ -0,0 +1,43 @@
+# exaudit.awk - Extract audit event codes from audit.h
+#      Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+BEGIN {
+  print "# Output of exaudit.awk - DO NOT EDIT."
+  topheader = 0;
+  okay = 0;
+  code = 0;
+}
+
+topheader == 0 && /^\/\*/  { topheader = 1 }
+topheader == 1             { print $0 }
+topheader == 1 && /\*\//   { topheader = 2; print "" }
+
+/AUDIT_NULL_EVENT/   { okay = 1 }
+!okay                { next }
+/AUDIT_LAST_EVENT/   { exit }
+/AUDIT_[A-Za-z_]+/  { 
+  sub (/[,\/\*]+/, "", $1);
+  desc = tolower (substr($1,7));
+  gsub (/_/," ",desc);
+  printf "%d\t%s\t%s\n", code, $1, desc;
+  code++;
+}
+
+END {
+  print "# end of audit codes."
+}
diff --git a/common/exstatus.awk b/common/exstatus.awk
new file mode 100644 (file)
index 0000000..ea48e81
--- /dev/null
@@ -0,0 +1,40 @@
+# exstatus.awk - Extract status codes from status.h
+#      Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+BEGIN {
+  print "# Created by exstatus.awk - DO NOT EDIT."
+  topheader = 0;
+  code = 0;
+}
+
+topheader == 0 && /^\/\*/  { topheader = 1 }
+topheader == 1             { print $0 }
+topheader == 1 && /\*\//   { topheader = 2; print "" }
+
+/^[ \t]+STATUS_[A-Za-z_]+/  { 
+  sub (/[,\/\*]+/, "", $1);
+  desc = substr($1,8);
+  printf "%d\t%s\t%s\n", code, $1, desc;
+  code++;
+}
+
+
+END {
+  print "# end of status codes."
+}
+
diff --git a/common/maperror.c b/common/maperror.c
deleted file mode 100644 (file)
index 1369a97..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* maperror.c - Error mapping
- *     Copyright (C) 2001, 2002 Free Software Foundation, Inc.
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#error This file is not anymore used.
-
-#include <config.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-
-#include <assuan.h>
-
-#include "util.h"
-#include "errors.h"
-
-
-
-/* Map Assuan error code ERR to an GPG_ERR_ code.  We need to
-   distinguish between genuine (and legacy) Assuan error codes and
-   application error codes shared with all GnuPG modules.  The rule is
-   simple: All errors with a gpg_err_source of UNKNOWN are genuine
-   Assuan codes all others are passed verbatim through. */
-gpg_error_t
-map_assuan_err_with_source (int source, int err)
-{
-  gpg_err_code_t ec;
-
-  if (gpg_err_source (err))
-    return err;
-
-  switch (err)
-    {
-    case -1:                     ec = GPG_ERR_EOF; break;
-    case 0:                      ec = 0; break;
-
-    case ASSUAN_Canceled:        ec = GPG_ERR_CANCELED; break;
-    case ASSUAN_Invalid_Index:   ec = GPG_ERR_INV_INDEX; break;
-
-    case ASSUAN_Not_Implemented: ec = GPG_ERR_NOT_IMPLEMENTED; break;
-    case ASSUAN_Server_Fault:    ec = GPG_ERR_ASSUAN_SERVER_FAULT; break;
-    case ASSUAN_No_Public_Key:   ec = GPG_ERR_NO_PUBKEY; break;
-    case ASSUAN_No_Secret_Key:   ec = GPG_ERR_NO_SECKEY; break;
-
-    case ASSUAN_Cert_Revoked:    ec = GPG_ERR_CERT_REVOKED; break;
-    case ASSUAN_No_CRL_For_Cert: ec = GPG_ERR_NO_CRL_KNOWN; break;       
-    case ASSUAN_CRL_Too_Old:     ec = GPG_ERR_CRL_TOO_OLD; break;        
-
-    case ASSUAN_Not_Trusted:     ec = GPG_ERR_NOT_TRUSTED; break;
-
-    case ASSUAN_Card_Error:      ec = GPG_ERR_CARD; break;
-    case ASSUAN_Invalid_Card:    ec = GPG_ERR_INV_CARD; break;
-    case ASSUAN_No_PKCS15_App:   ec = GPG_ERR_NO_PKCS15_APP; break;
-    case ASSUAN_Card_Not_Present: ec= GPG_ERR_CARD_NOT_PRESENT; break;
-    case ASSUAN_Not_Confirmed:   ec = GPG_ERR_NOT_CONFIRMED; break;
-    case ASSUAN_Invalid_Id:      ec = GPG_ERR_INV_ID; break;
-
-    case ASSUAN_Locale_Problem:  ec = GPG_ERR_LOCALE_PROBLEM; break;
-
-    default:
-      ec = err < 100? GPG_ERR_ASSUAN_SERVER_FAULT : GPG_ERR_ASSUAN;
-      break;
-    }
-  return gpg_err_make (source, ec);
-}
-
-/* Map GPG_xERR_xx error codes to Assuan status codes */
-int
-map_to_assuan_status (int rc)
-{
-  gpg_err_code_t   ec = gpg_err_code (rc);
-  gpg_err_source_t es = gpg_err_source (rc);
-
-  if (!rc)
-    return 0;
-  if (!es)
-    {
-      es = GPG_ERR_SOURCE_USER_4; /*  This should not happen, but we
-                                      need to make sure to pass a new
-                                      Assuan errorcode along. */
-      log_debug ("map_to_assuan_status called with no error source\n");
-    }
-
-  if (ec == -1)
-    ec = GPG_ERR_NO_DATA;  /* That used to be ASSUAN_No_Data_Available. */
-
-  return gpg_err_make (es, ec);
-}
diff --git a/common/mkstrtable.awk b/common/mkstrtable.awk
new file mode 100644 (file)
index 0000000..56e9bb8
--- /dev/null
@@ -0,0 +1,185 @@
+# mkstrtable.awk
+# Copyright (C) 2003, 2004 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 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkstrtable.awk.  You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkstrtable.awk appear in them.  The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkstrtable.awk program.
+#
+# Certain portions of the mkstrtable.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkstrtable.awk.  We call these the "data" portions.  The rest of the
+# mkstrtable.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkstrtable.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkstrtable.awk
+# released by g10 Code GmbH.  When you make and distribute a modified version
+# of mkstrtable.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with.  (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.)  If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script outputs a source file that does define the following
+# symbols:
+#
+# static const char msgstr[];
+# A string containing all messages in the list.
+#
+# static const int msgidx[];
+# A list of index numbers, one for each message, that points to the
+# beginning of the string in msgstr.
+#
+# msgidxof (code);
+# A macro that maps code numbers to idx numbers.  If a DEFAULT MESSAGE
+# is provided (see below), its index will be returned for unknown codes.
+# Otherwise -1 is returned for codes that do not appear in the list.
+# You can lookup the message with code CODE with:
+# msgstr + msgidx[msgidxof (code)].
+#
+# The input file has the following format:
+# CODE1        ...     MESSAGE1        (code nr, <tab>, something, <tab>, msg)
+# CODE2        ...     MESSAGE2        (code nr, <tab>, something, <tab>, msg)
+# ...
+# CODEn        ...     MESSAGEn        (code nr, <tab>, something, <tab>, msg)
+#      ...     DEFAULT-MESSAGE (<tab>, something, <tab>, fall-back msg)
+#
+# Comments (starting with # and ending at the end of the line) are removed,
+# as is trailing whitespace.  The last line is optional; if no DEFAULT
+# MESSAGE is given, msgidxof will return the number -1 for unknown
+# index numbers.
+#
+# The field to be used is specified with the variable "textidx" on
+# the command line.  It defaults to 2.
+#
+# The variable nogettext can be set to 1 to suppress gettext markers.
+#
+# The variable prefix can be used to prepend a string to each message.
+#
+# The variable namespace can be used to prepend a string to each
+# variable and macro name.
+
+BEGIN {
+  FS = "[\t]+";
+# cpos holds the current position in the message string.
+  cpos = 0;
+# msg holds the number of messages.
+  msg = 0;
+  print "/* Output of mkstrtable.awk.  DO NOT EDIT.  */";
+  print "";
+  header = 1;
+  if (textidx == 0)
+    textidx = 2;
+# nogettext can be set to 1 to suppress gettext noop markers.
+}
+
+/^#/ { next; }
+
+header {
+  if ($1 ~ /^[0123456789]+$/)
+    {
+      print "/* The purpose of this complex string table is to produce";
+      print "   optimal code with a minimum of relocations.  */";
+      print "";
+      print "static const char " namespace "msgstr[] = ";
+      header = 0;
+    }
+  else
+    print;
+}
+
+!header {
+  sub (/\#.+/, "");
+  sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
+
+  if (/^$/)
+    next;
+
+# Print the string msgstr line by line.  We delay output by one line to be able
+# to treat the last line differently (see END).
+  if (last_msgstr)
+    {
+      if (nogettext)
+       print "  \"" last_msgstr "\" \"\\0\"";
+      else
+       print "  gettext_noop (\"" last_msgstr "\") \"\\0\"";
+    }
+  last_msgstr = prefix $textidx;
+
+# Remember the error code and msgidx of each error message.
+  code[msg] = $1;
+  pos[msg] = cpos;
+  cpos += length (last_msgstr) + 1;
+  msg++;
+
+  if ($1 == "")
+    {
+      has_default = 1;
+      exit;
+    }
+}
+END {
+  if (has_default)
+    coded_msgs = msg - 1;
+  else
+    coded_msgs = msg;
+
+  if (nogettext)
+    print "  \"" prefix last_msgstr "\";";
+  else
+    print "  gettext_noop (\"" prefix last_msgstr "\");";
+  print "";
+  print "static const int " namespace "msgidx[] =";
+  print "  {";
+  for (i = 0; i < coded_msgs; i++)
+    print "    " pos[i] ",";
+  print "    " pos[coded_msgs];
+  print "  };";
+  print "";
+  print "#define " namespace "msgidxof(code) (0 ? -1 \\";
+
+# Gather the ranges.
+  skip = code[0];
+  start = code[0];
+  stop = code[0];
+  for (i = 1; i < coded_msgs; i++)
+    {
+      if (code[i] == stop + 1)
+       stop++;
+      else
+       {
+         print "  : ((code >= " start ") && (code <= " stop ")) ? (code - " \
+            skip ") \\";
+         skip += code[i] - stop - 1;
+         start = code[i];
+         stop = code[i];
+       }
+    }
+  print "  : ((code >= " start ") && (code <= " stop ")) ? (code - " \
+    skip ") \\";
+  if (has_default)
+    print "  : " stop + 1 " - " skip ")";
+  else
+    print "  : -1)";
+    
+ }
diff --git a/common/status.c b/common/status.c
new file mode 100644 (file)
index 0000000..7012edf
--- /dev/null
@@ -0,0 +1,38 @@
+/* status.c - status code helper functions
+ *     Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+
+#include "util.h"
+#include "status.h"
+#include "status-codes.h"
+
+
+/* Return the status string for code NO. */
+const char *
+get_status_string ( int no ) 
+{
+  int idx = statusstr_msgidxof (no);
+  if (idx == -1)
+    return "?";
+  else
+    return statusstr_msgstr + statusstr_msgidx[idx];
+}
+
diff --git a/common/status.h b/common/status.h
new file mode 100644 (file)
index 0000000..50a1191
--- /dev/null
@@ -0,0 +1,132 @@
+/* status.h - Status codes
+ *     Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GNUPG_COMMON_STATUS_H
+#define GNUPG_COMMON_STATUS_H
+
+enum 
+  {
+    STATUS_ENTER,
+    STATUS_LEAVE,
+    STATUS_ABORT,
+
+    STATUS_GOODSIG,
+    STATUS_BADSIG,
+    STATUS_ERRSIG,
+
+    STATUS_BADARMOR,
+
+    STATUS_RSA_OR_IDEA,
+
+    STATUS_TRUST_UNDEFINED,
+    STATUS_TRUST_NEVER,
+    STATUS_TRUST_MARGINAL,
+    STATUS_TRUST_FULLY,
+    STATUS_TRUST_ULTIMATE,
+  
+    STATUS_NEED_PASSPHRASE,
+    STATUS_VALIDSIG,
+    STATUS_SIG_ID,
+    STATUS_ENC_TO,
+    STATUS_NODATA,
+    STATUS_BAD_PASSPHRASE,
+    STATUS_NO_PUBKEY,
+    STATUS_NO_SECKEY,
+    STATUS_NEED_PASSPHRASE_SYM,
+    STATUS_DECRYPTION_FAILED,
+    STATUS_DECRYPTION_OKAY,
+    STATUS_MISSING_PASSPHRASE,
+    STATUS_GOOD_PASSPHRASE,
+    STATUS_GOODMDC,
+    STATUS_BADMDC,
+    STATUS_ERRMDC,
+    STATUS_IMPORTED,
+    STATUS_IMPORT_OK,
+    STATUS_IMPORT_PROBLEM, 
+    STATUS_IMPORT_RES,
+    STATUS_IMPORT_CHECK,
+
+    STATUS_FILE_START,
+    STATUS_FILE_DONE,
+    STATUS_FILE_ERROR,
+  
+    STATUS_BEGIN_DECRYPTION,
+    STATUS_END_DECRYPTION,
+    STATUS_BEGIN_ENCRYPTION,
+    STATUS_END_ENCRYPTION,
+    STATUS_BEGIN_SIGNING,
+  
+    STATUS_DELETE_PROBLEM,
+
+    STATUS_GET_BOOL,
+    STATUS_GET_LINE,
+    STATUS_GET_HIDDEN,
+    STATUS_GOT_IT,
+
+    STATUS_PROGRESS,
+    STATUS_SIG_CREATED,
+    STATUS_SESSION_KEY,
+    STATUS_NOTATION_NAME,
+    STATUS_NOTATION_DATA,
+    STATUS_POLICY_URL,
+    STATUS_BEGIN_STREAM,
+    STATUS_END_STREAM,
+    STATUS_KEY_CREATED,
+    STATUS_USERID_HINT,
+    STATUS_UNEXPECTED,
+    STATUS_INV_RECP,
+    STATUS_NO_RECP,
+
+    STATUS_ALREADY_SIGNED,
+    STATUS_KEYEXPIRED,
+    STATUS_KEYREVOKED,
+    STATUS_SIGEXPIRED,
+    STATUS_EXPSIG,
+    STATUS_EXPKEYSIG,
+
+    STATUS_ATTRIBUTE,
+
+    STATUS_REVKEYSIG,
+
+    STATUS_NEWSIG,
+    STATUS_SIG_SUBPACKET,
+
+    STATUS_PLAINTEXT,
+    STATUS_PLAINTEXT_LENGTH,
+    STATUS_KEY_NOT_CREATED,
+    STATUS_NEED_PASSPHRASE_PIN,
+
+    STATUS_CARDCTRL,
+    STATUS_SC_OP_FAILURE,
+    STATUS_SC_OP_SUCCESS,
+
+    STATUS_BACKUP_KEY_CREATED,
+
+    STATUS_PKA_TRUST_BAD,
+    STATUS_PKA_TRUST_GOOD,
+
+    STATUS_TRUNCATED,
+    STATUS_ERROR
+};
+
+
+const char *get_status_string (int code);
+
+
+#endif /*GNUPG_COMMON_STATUS_H*/
index 714f22d..7a455df 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-15  Werner Koch  <wk@g10code.com>
+
+       * gpg.texi (GPG Configuration): Add PINENTRY_USER_DATA.
+
+       * gpg-agent.texi (Agent Options): Add xauthority.
+
 2007-10-31  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpg-agent.texi (Agent Options): Fix typos, by Bernhard Reiter.
index a882aab..3acb17a 100644 (file)
@@ -94,10 +94,10 @@ required.
 
 Please make sure that a proper pinentry program has been installed
 under the default filename (which is system dependant) or use the
-option @code{pinentry-program} to specify the full name of that
-program.  It is often useful to install a symbolic link from the
-actual used pinentry (e.g. @file{/usr/bin/pinentry-gtk}) to the
-expected one (e.g. @file{/usr/bin/pinentry}).
+option @option{pinentry-program} to specify the full name of that program.
+It is often useful to install a symbolic link from the actual used
+pinentry (e.g. @file{/usr/bin/pinentry-gtk}) to the expected
+one (e.g. @file{/usr/bin/pinentry}).
 
 @manpause
 @noindent
@@ -291,7 +291,7 @@ eval `cut -d= -f 1 < @var{file} | xargs echo export`
 
 @item --no-grab
 @opindex no-grab
-Tell the pinentryo not to grab the keyboard and mouse.  This option
+Tell the pinentry not to grab the keyboard and mouse.  This option
 should in general not be used to avoid X-sniffing attacks.
 
 @item --log-file @var{file}
@@ -422,11 +422,13 @@ default on Windows systems.
 @itemx --ttytype @var{string}
 @itemx --lc-type @var{string}
 @itemx --lc-messages @var{string}
+@itemx --xauthority @var{string}
 @opindex display 
 @opindex ttyname 
 @opindex ttytype 
 @opindex lc-type 
 @opindex lc-messages
+@opindex xauthority
 These options are used with the server mode to pass localization
 information.
 
index 9667417..0a1b92a 100644 (file)
@@ -2617,6 +2617,10 @@ protocol version which should be set to 1. When starting the gpg-agent
 as described in its documentation, this variable is set to the correct
 value. The option @option{--gpg-agent-info} can be used to override it.
 
+@item PINENTRY_USER_DATA
+This value is passed via gpg-agent to pinentry.  It is useful to convey
+extra information to a custom pinentry
+
 @item COLUMNS
 @itemx LINES
 Used to size some displays to the full size of the screen.
index e4702b0..decbc8c 100644 (file)
@@ -1,3 +1,27 @@
+2007-11-19  Werner Koch  <wk@g10code.com>
+
+       * keyedit.c (keyedit_menu): String grammar fix.
+
+2007-11-15  Werner Koch  <wk@g10code.com>
+
+       * gpg.c (main): New option --xauthority.
+       * call-agent.c (start_agent): Adjust changed start_new_gpg_agent.
+
+2007-11-12  Werner Koch  <wk@g10code.com>
+
+       * cpr.c (do_get_from_fd): s/bool/getbool/ to overcome problems
+       with Mac OS 10.5 which seems to include stdbool.h silently.
+
+2007-11-07  Werner Koch  <wk@g10code.com>
+
+       Replace all includes of errors.h by status.h (found in common/).
+
+       * status.h: Remove.
+       * status.h: Move prototypes to main.h.
+       * status.c:  Rename to ..
+       * cpr.c: .. this.
+       (get_status_string): Remove.  We take this now from common/.
+
 2007-10-25  David Shaw  <dshaw@jabberwocky.com>  (wk)
 
        From 1.4 (October):
index 056ff9a..ff50812 100644 (file)
@@ -62,8 +62,7 @@ common_source =  \
              keyid.c           \
              packet.h          \
              parse-packet.c    \
-             status.c          \
-             status.h          \
+             cpr.c             \
              plaintext.c       \
              sig-check.c       \
              keylist.c         \
index 76a2bdf..2dde9fe 100644 (file)
@@ -27,7 +27,7 @@
 #include <ctype.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "filter.h"
index 4c27823..88f196a 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "gpg.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "cipher.h"
index 03c3a74..8800f93 100644 (file)
@@ -82,6 +82,7 @@ start_agent (void)
                               opt.agent_program,
                               opt.display, opt.ttyname, opt.ttytype,
                               opt.lc_ctype, opt.lc_messages,
+                              opt.xauthority, opt.pinentry_user_data,
                               opt.verbose, DBG_ASSUAN,
                               NULL, NULL);
 }
index fcd3965..dc248e3 100644 (file)
@@ -26,7 +26,7 @@
 #include <assert.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "filter.h"
index d3dab2a..7f9295e 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "main.h"
similarity index 65%
rename from g10/status.c
rename to g10/cpr.c
index e786524..83f0ccb 100644 (file)
+++ b/g10/cpr.c
@@ -56,102 +56,6 @@ progress_cb (void *ctx, const char *what, int printchar,
   write_status_text (STATUS_PROGRESS, buf);
 }
 
-static const char *
-get_status_string ( int no ) 
-{
-  const char *s;
-
-  switch( no )
-    {
-    case STATUS_ENTER  : s = "ENTER"; break;
-    case STATUS_LEAVE  : s = "LEAVE"; break;
-    case STATUS_ABORT  : s = "ABORT"; break;
-    case STATUS_NEWSIG : s = "NEWSIG"; break;
-    case STATUS_GOODSIG: s = "GOODSIG"; break;
-    case STATUS_KEYEXPIRED: s = "KEYEXPIRED"; break;
-    case STATUS_KEYREVOKED: s = "KEYREVOKED"; break;
-    case STATUS_BADSIG : s = "BADSIG"; break;
-    case STATUS_ERRSIG : s = "ERRSIG"; break;
-    case STATUS_BADARMOR : s = "BADARMOR"; break;
-    case STATUS_RSA_OR_IDEA : s= "RSA_OR_IDEA"; break;
-    case STATUS_TRUST_UNDEFINED: s = "TRUST_UNDEFINED"; break;
-    case STATUS_TRUST_NEVER     : s = "TRUST_NEVER"; break;
-    case STATUS_TRUST_MARGINAL : s = "TRUST_MARGINAL"; break;
-    case STATUS_TRUST_FULLY     : s = "TRUST_FULLY"; break;
-    case STATUS_TRUST_ULTIMATE : s = "TRUST_ULTIMATE"; break;
-    case STATUS_GET_BOOL        : s = "GET_BOOL"; break;
-    case STATUS_GET_LINE        : s = "GET_LINE"; break;
-    case STATUS_GET_HIDDEN      : s = "GET_HIDDEN"; break;
-    case STATUS_GOT_IT  : s = "GOT_IT"; break;
-    case STATUS_SHM_INFO        : s = "SHM_INFO"; break;
-    case STATUS_SHM_GET         : s = "SHM_GET"; break;
-    case STATUS_SHM_GET_BOOL    : s = "SHM_GET_BOOL"; break;
-    case STATUS_SHM_GET_HIDDEN : s = "SHM_GET_HIDDEN"; break;
-    case STATUS_NEED_PASSPHRASE: s = "NEED_PASSPHRASE"; break;
-    case STATUS_VALIDSIG        : s = "VALIDSIG"; break;
-    case STATUS_SIG_ID  : s = "SIG_ID"; break;
-    case STATUS_ENC_TO  : s = "ENC_TO"; break;
-    case STATUS_NODATA  : s = "NODATA"; break;
-    case STATUS_BAD_PASSPHRASE : s = "BAD_PASSPHRASE"; break;
-    case STATUS_NO_PUBKEY       : s = "NO_PUBKEY"; break;
-    case STATUS_NO_SECKEY       : s = "NO_SECKEY"; break;
-    case STATUS_NEED_PASSPHRASE_SYM: s = "NEED_PASSPHRASE_SYM"; break;
-    case STATUS_NEED_PASSPHRASE_PIN: s = "NEED_PASSPHRASE_PIN"; break;
-    case STATUS_DECRYPTION_FAILED: s = "DECRYPTION_FAILED"; break;
-    case STATUS_DECRYPTION_OKAY: s = "DECRYPTION_OKAY"; break;
-    case STATUS_MISSING_PASSPHRASE: s = "MISSING_PASSPHRASE"; break;
-    case STATUS_GOOD_PASSPHRASE : s = "GOOD_PASSPHRASE"; break;
-    case STATUS_GOODMDC         : s = "GOODMDC"; break;
-    case STATUS_BADMDC  : s = "BADMDC"; break;
-    case STATUS_ERRMDC  : s = "ERRMDC"; break;
-    case STATUS_IMPORTED        : s = "IMPORTED"; break;
-    case STATUS_IMPORT_OK       : s = "IMPORT_OK"; break;
-    case STATUS_IMPORT_CHECK   : s = "IMPORT_CHECK"; break;
-    case STATUS_IMPORT_RES      : s = "IMPORT_RES"; break;
-    case STATUS_FILE_START      : s = "FILE_START"; break;
-    case STATUS_FILE_DONE       : s = "FILE_DONE"; break;
-    case STATUS_FILE_ERROR      : s = "FILE_ERROR"; break;
-    case STATUS_BEGIN_DECRYPTION:s = "BEGIN_DECRYPTION"; break;
-    case STATUS_END_DECRYPTION : s = "END_DECRYPTION"; break;
-    case STATUS_BEGIN_ENCRYPTION:s = "BEGIN_ENCRYPTION"; break;
-    case STATUS_END_ENCRYPTION : s = "END_ENCRYPTION"; break;
-    case STATUS_DELETE_PROBLEM : s = "DELETE_PROBLEM"; break;
-    case STATUS_PROGRESS       : s = "PROGRESS"; break;
-    case STATUS_SIG_CREATED    : s = "SIG_CREATED"; break;
-    case STATUS_SESSION_KEY    : s = "SESSION_KEY"; break;
-    case STATUS_NOTATION_NAME  : s = "NOTATION_NAME" ; break;
-    case STATUS_NOTATION_DATA  : s = "NOTATION_DATA" ; break;
-    case STATUS_POLICY_URL     : s = "POLICY_URL" ; break;
-    case STATUS_BEGIN_STREAM   : s = "BEGIN_STREAM"; break;
-    case STATUS_END_STREAM     : s = "END_STREAM"; break;
-    case STATUS_KEY_CREATED    : s = "KEY_CREATED"; break;
-    case STATUS_KEY_NOT_CREATED: s = "KEY_NOT_CREATED"; break;
-    case STATUS_USERID_HINT    : s = "USERID_HINT"; break;
-    case STATUS_UNEXPECTED     : s = "UNEXPECTED"; break;
-    case STATUS_INV_RECP       : s = "INV_RECP"; break;
-    case STATUS_NO_RECP        : s = "NO_RECP"; break;
-    case STATUS_ALREADY_SIGNED : s = "ALREADY_SIGNED"; break;
-    case STATUS_SIGEXPIRED     : s = "SIGEXPIRED deprecated-use-keyexpired-instead"; break;
-    case STATUS_EXPSIG         : s = "EXPSIG"; break;
-    case STATUS_EXPKEYSIG      : s = "EXPKEYSIG"; break;
-    case STATUS_REVKEYSIG      : s = "REVKEYSIG"; break;
-    case STATUS_ATTRIBUTE      : s = "ATTRIBUTE"; break;
-    case STATUS_CARDCTRL       : s = "CARDCTRL"; break;
-    case STATUS_PLAINTEXT      : s = "PLAINTEXT"; break;
-    case STATUS_PLAINTEXT_LENGTH:s = "PLAINTEXT_LENGTH"; break;
-    case STATUS_SIG_SUBPACKET  : s = "SIG_SUBPACKET"; break;
-    case STATUS_SC_OP_SUCCESS  : s = "SC_OP_SUCCESS"; break;
-    case STATUS_SC_OP_FAILURE  : s = "SC_OP_FAILURE"; break;
-    case STATUS_BACKUP_KEY_CREATED:s="BACKUP_KEY_CREATED"; break;
-    case STATUS_PKA_TRUST_BAD  : s = "PKA_TRUST_BAD"; break;
-    case STATUS_PKA_TRUST_GOOD : s = "PKA_TRUST_GOOD"; break;
-    case STATUS_BEGIN_SIGNING  : s = "BEGIN_SIGNING"; break;
-    case STATUS_ERROR          : s = "ERROR"; break;
-    default: s = "?"; break;
-    }
-  return s;
-}
-
 
 /* Return true if the status message NO may currently be issued.  We
    need this to avoid syncronisation problem while auto retrieving a
@@ -383,50 +287,52 @@ myread(int fd, void *buf, size_t count)
 
 
 
-/****************
- * Request a string from the client over the command-fd
- * If bool, returns static string on true (do not free) or NULL for false
- */
+/* Request a string from the client over the command-fd.  If GETBOOL
+   is set the function returns a static string (do not free) if the
+   netered value was true or NULL if the entered value was false.  */
 static char *
-do_get_from_fd( const char *keyword, int hidden, int bool )
+do_get_from_fd ( const char *keyword, int hidden, int getbool )
 {
-    int i, len;
-    char *string;
-
-    if(statusfp!=stdout)
-      fflush(stdout);
-
-    write_status_text( bool? STATUS_GET_BOOL :
-                      hidden? STATUS_GET_HIDDEN : STATUS_GET_LINE, keyword );
-
-    for( string = NULL, i = len = 200; ; i++ ) {
-       if( i >= len-1 ) {
-           char *save = string;
-           len += 100;
-           string = hidden? xmalloc_secure ( len ) : xmalloc ( len );
-           if( save )
-               memcpy(string, save, i );
-           else
-               i=0;
+  int i, len;
+  char *string;
+  
+  if (statusfp != stdout)
+    fflush (stdout);
+  
+  write_status_text (getbool? STATUS_GET_BOOL :
+                     hidden? STATUS_GET_HIDDEN : STATUS_GET_LINE, keyword);
+
+  for (string = NULL, i = len = 200; ; i++ ) 
+    {
+      if (i >= len-1 ) 
+        {
+          char *save = string;
+          len += 100;
+          string = hidden? xmalloc_secure ( len ) : xmalloc ( len );
+          if (save)
+            memcpy (string, save, i );
+          else
+            i = 0;
        }
-       /* Hmmm: why not use our read_line function here */
-       if( myread( opt.command_fd, string+i, 1) != 1 || string[i] == '\n'  )
-            break;
-        else if ( string[i] == CONTROL_D ) {
-            /* found ETX - cancel the line and return a sole ETX */
-            string[0] = CONTROL_D;
-            i=1;
-            break;
+      /* Fixme: why not use our read_line function here? */
+      if ( myread( opt.command_fd, string+i, 1) != 1 || string[i] == '\n'  )
+        break;
+      else if ( string[i] == CONTROL_D ) 
+        {
+          /* Found ETX - Cancel the line and return a sole ETX.  */
+          string[0] = CONTROL_D;
+          i = 1;
+          break;
         }
     }
-    string[i] = 0;
+  string[i] = 0;
 
-    write_status( STATUS_GOT_IT );
+  write_status (STATUS_GOT_IT);
 
-    if( bool )  /* Fixme: is this correct??? */
-       return (string[0] == 'Y' || string[0] == 'y') ? "" : NULL;
+  if (getbool)  /* Fixme: is this correct??? */
+    return (string[0] == 'Y' || string[0] == 'y') ? "" : NULL;
 
-    return string;
+  return string;
 }
 
 
index 6f42949..da888ad 100644 (file)
@@ -25,7 +25,7 @@
 #include <assert.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "filter.h"
index 2c0f25f..ce400b0 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index 5eb57e5..fe29d52 100644 (file)
@@ -29,7 +29,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index 4a57332..ee2ce97 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index 931f7ce..09faa03 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "keydb.h"
 #include "util.h"
 #include "main.h"
index e1b1efb..b548cdf 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -338,6 +338,7 @@ enum cmd_and_opt_values
     oTTYtype,
     oLCctype,
     oLCmessages,
+    oXauthority,
     oGroup,
     oUnGroup,
     oNoGroups,
@@ -465,7 +466,7 @@ static ARGPARSE_OPTS opts[] = {
     { oMinCertLevel, "min-cert-level", 1, "@"},
     { oAskCertLevel, "ask-cert-level",   0, "@"},
     { oNoAskCertLevel, "no-ask-cert-level",   0, "@"},
-    { oOutput, "output",    2, N_("use as output file")},
+    { oOutput, "output",    2, N_("|FILE|write output to FILE")},
     { oMaxOutput, "max-output", 16|4, "@" },
     { oVerbose, "verbose",   0, N_("verbose") },
     { oQuiet,  "quiet",   0, "@"},
@@ -679,6 +680,7 @@ static ARGPARSE_OPTS opts[] = {
     { oTTYtype,    "ttytype",     2, "@" },
     { oLCctype,    "lc-ctype",    2, "@" },
     { oLCmessages, "lc-messages", 2, "@" },
+    { oXauthority, "xauthority",  2, "@" },
     { oGroup,      "group",       2, "@" },
     { oUnGroup,    "ungroup",     2, "@" },
     { oNoGroups,   "no-groups",    0, "@" },
@@ -2800,6 +2802,7 @@ main (int argc, char **argv )
           case oTTYtype: opt.ttytype = pargs.r.ret_str; break;
           case oLCctype: opt.lc_ctype = pargs.r.ret_str; break;
           case oLCmessages: opt.lc_messages = pargs.r.ret_str; break;
+          case oXauthority: opt.xauthority = pargs.r.ret_str; break;
          case oGroup: add_group(pargs.r.ret_str); break;
          case oUnGroup: rm_group(pargs.r.ret_str); break;
          case oNoGroups:
index fbfb18d..a58637c 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "keydb.h"
 #include "util.h"
 #include "trustdb.h"
index 1078758..8efe824 100644 (file)
@@ -33,7 +33,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "photoid.h"
@@ -2095,8 +2095,8 @@ keyedit_menu( const char *username, strlist_t locusr,
          case cmdTRUST:
            if(opt.trust_model==TM_EXTERNAL)
              {
-               tty_printf(_("Owner trust may not be set while "
-                            "using an user provided trust database\n"));
+               tty_printf (_("Owner trust may not be set while "
+                             "using a user provided trust database\n"));
                break;
              }
 
index adb32e7..db4ef50 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "keydb.h"
 #include "photoid.h"
 #include "util.h"
index e782a45..9633870 100644 (file)
@@ -145,6 +145,30 @@ int pubkey_get_nenc( int algo );
 unsigned int pubkey_nbits( int algo, gcry_mpi_t *pkey );
 int mpi_print( FILE *fp, gcry_mpi_t a, int mode );
 
+/*-- status.c --*/
+void set_status_fd ( int fd );
+int  is_status_enabled ( void );
+void write_status ( int no );
+void write_status_text ( int no, const char *text );
+void write_status_buffer ( int no,
+                           const char *buffer, size_t len, int wrap );
+void write_status_text_and_buffer ( int no, const char *text,
+                                    const char *buffer, size_t len, int wrap );
+
+void write_status_begin_signing (gcry_md_hd_t md);
+
+
+int cpr_enabled(void);
+char *cpr_get( const char *keyword, const char *prompt );
+char *cpr_get_no_help( const char *keyword, const char *prompt );
+char *cpr_get_utf8( const char *keyword, const char *prompt );
+char *cpr_get_hidden( const char *keyword, const char *prompt );
+void cpr_kill_prompt(void);
+int  cpr_get_answer_is_yes( const char *keyword, const char *prompt );
+int  cpr_get_answer_yes_no_quit( const char *keyword, const char *prompt );
+int  cpr_get_answer_okay_cancel (const char *keyword,
+                                 const char *prompt,
+                                 int def_answer);
 
 /*-- helptext.c --*/
 void display_online_help( const char *keyword );
index 7a12269..a005164 100644 (file)
@@ -25,7 +25,7 @@
 #include <assert.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "filter.h"
index 96bb6c5..f02601f 100644 (file)
@@ -55,7 +55,7 @@
 
 #include "gpg.h"
 #ifdef HAVE_W32_SYSTEM
-# include "errors.h"
+# include "status.h"
 #endif /*HAVE_W32_SYSTEM*/
 #include "util.h"
 #include "main.h"
index be7394e..fac05b6 100644 (file)
@@ -90,6 +90,8 @@ struct
   char *ttytype;
   char *lc_ctype;
   char *lc_messages;
+  char *xauthority;
+  char *pinentry_user_data;
 
   int skip_verify;
   int compress_keys;
index c94c0b2..6b74018 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "keydb.h"
 #include "util.h"
 #include "main.h"
index 3a532b1..cc66dfc 100644 (file)
@@ -29,7 +29,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "keydb.h"
 #include "util.h"
 #include "main.h"
index 1c17b9f..7e783e5 100644 (file)
@@ -85,6 +85,12 @@ option_handler (assuan_context_t ctx, const char *key, const char *value)
   else if (!strcmp (key, "lc-messages"))
     {
     }
+  else if (!strcmp (key, "xauthority"))
+    {
+    }
+  else if (!strcmp (key, "pinentry_user_data"))
+    {
+    }
   else if (!strcmp (key, "list-mode"))
     {
       /* This is for now a dummy option. */
index 6e3671d..6bb30f0 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index 3a0b438..2cabd19 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "gpg.h"
 #include "options.h"
-#include "errors.h"
+#include "status.h"
 #include "util.h"
 #include "main.h"
 #include "ttyio.h"
index e0e1256..405f3f5 100644 (file)
@@ -27,7 +27,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "keydb.h"
 #include "util.h"
 #include "i18n.h"
diff --git a/g10/status.h b/g10/status.h
deleted file mode 100644 (file)
index 0a2a9e0..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/* status.h
- * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003,
- *               2004 Free Software Foundation, Inc.
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-#ifndef G10_STATUS_H
-#define G10_STATUS_H
-
-#define STATUS_ENTER    1
-#define STATUS_LEAVE    2
-#define STATUS_ABORT    3
-
-#define STATUS_GOODSIG  4
-#define STATUS_BADSIG   5
-#define STATUS_ERRSIG   6
-
-#define STATUS_BADARMOR  7
-
-#define STATUS_RSA_OR_IDEA 8
-#define STATUS_KEYEXPIRED  9
-#define STATUS_KEYREVOKED  10
-
-#define STATUS_TRUST_UNDEFINED 11
-#define STATUS_TRUST_NEVER     12
-#define STATUS_TRUST_MARGINAL  13
-#define STATUS_TRUST_FULLY     14
-#define STATUS_TRUST_ULTIMATE  15
-
-#define STATUS_SHM_INFO        16
-#define STATUS_SHM_GET        17
-#define STATUS_SHM_GET_BOOL    18
-#define STATUS_SHM_GET_HIDDEN  19
-
-#define STATUS_NEED_PASSPHRASE 20
-#define STATUS_VALIDSIG        21
-#define STATUS_SIG_ID         22
-#define STATUS_ENC_TO         23
-#define STATUS_NODATA         24
-#define STATUS_BAD_PASSPHRASE  25
-#define STATUS_NO_PUBKEY       26
-#define STATUS_NO_SECKEY       27
-#define STATUS_NEED_PASSPHRASE_SYM 28
-#define STATUS_DECRYPTION_FAILED 29
-#define STATUS_DECRYPTION_OKAY  30
-#define STATUS_MISSING_PASSPHRASE 31
-#define STATUS_GOOD_PASSPHRASE 32
-#define STATUS_GOODMDC         33
-#define STATUS_BADMDC          34
-#define STATUS_ERRMDC          35
-#define STATUS_IMPORTED        36
-#define STATUS_IMPORT_RES      37
-#define STATUS_FILE_START      38
-#define STATUS_FILE_DONE       39
-#define STATUS_FILE_ERROR      40
-
-#define STATUS_BEGIN_DECRYPTION 41
-#define STATUS_END_DECRYPTION  42
-#define STATUS_BEGIN_ENCRYPTION 43
-#define STATUS_END_ENCRYPTION  44
-
-#define STATUS_DELETE_PROBLEM  45
-#define STATUS_GET_BOOL        46
-#define STATUS_GET_LINE        47
-#define STATUS_GET_HIDDEN      48
-#define STATUS_GOT_IT          49
-#define STATUS_PROGRESS        50
-#define STATUS_SIG_CREATED     51
-#define STATUS_SESSION_KEY     52
-#define STATUS_NOTATION_NAME    53
-#define STATUS_NOTATION_DATA    54
-#define STATUS_POLICY_URL       55
-#define STATUS_BEGIN_STREAM     56
-#define STATUS_END_STREAM       57
-#define STATUS_KEY_CREATED      58
-#define STATUS_USERID_HINT      59
-#define STATUS_UNEXPECTED       60
-#define STATUS_INV_RECP         61
-#define STATUS_NO_RECP          62
-#define STATUS_ALREADY_SIGNED   63
-#define STATUS_SIGEXPIRED       64
-#define STATUS_EXPSIG           65
-#define STATUS_EXPKEYSIG        66
-#define STATUS_ATTRIBUTE        67
-#define STATUS_IMPORT_OK       68
-#define STATUS_IMPORT_CHECK     69
-#define STATUS_REVKEYSIG        70
-#define STATUS_CARDCTRL         71
-#define STATUS_NEWSIG           72
-#define STATUS_PLAINTEXT        73
-#define STATUS_PLAINTEXT_LENGTH 74
-#define STATUS_KEY_NOT_CREATED  75
-#define STATUS_NEED_PASSPHRASE_PIN 76
-#define STATUS_SIG_SUBPACKET    77
-
-/* Extra status codes for certain smartcard operations.  Primary
-   useful to double check that change PIN worked as expected.  */
-#define STATUS_SC_OP_FAILURE    79
-#define STATUS_SC_OP_SUCCESS    80
-
-#define STATUS_BACKUP_KEY_CREATED 81
-
-#define STATUS_PKA_TRUST_BAD    82
-#define STATUS_PKA_TRUST_GOOD   83
-
-#define STATUS_BEGIN_SIGNING    84
-
-#define STATUS_ERROR  85
-
-
-/*-- status.c --*/
-void set_status_fd ( int fd );
-int  is_status_enabled ( void );
-void write_status ( int no );
-void write_status_text ( int no, const char *text );
-void write_status_buffer ( int no,
-                           const char *buffer, size_t len, int wrap );
-void write_status_text_and_buffer ( int no, const char *text,
-                                    const char *buffer, size_t len, int wrap );
-
-void write_status_begin_signing (gcry_md_hd_t md);
-
-
-int cpr_enabled(void);
-char *cpr_get( const char *keyword, const char *prompt );
-char *cpr_get_no_help( const char *keyword, const char *prompt );
-char *cpr_get_utf8( const char *keyword, const char *prompt );
-char *cpr_get_hidden( const char *keyword, const char *prompt );
-void cpr_kill_prompt(void);
-int  cpr_get_answer_is_yes( const char *keyword, const char *prompt );
-int  cpr_get_answer_yes_no_quit( const char *keyword, const char *prompt );
-int  cpr_get_answer_okay_cancel (const char *keyword,
-                                 const char *prompt,
-                                 int def_answer);
-
-#endif /*G10_STATUS_H*/
index 2d69d9f..5e7b685 100644 (file)
@@ -30,7 +30,7 @@
 #include <unistd.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index 563178f..d763d2a 100644 (file)
@@ -29,7 +29,7 @@
 #include <unistd.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "options.h"
index 34b1279..14bf699 100644 (file)
@@ -25,7 +25,7 @@
 #include <assert.h>
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "util.h"
 #include "filter.h"
index c5caf28..62eafba 100644 (file)
@@ -30,7 +30,7 @@
 #endif /* !DISABLE_REGEX */
 
 #include "gpg.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index edaefcd..702547e 100644 (file)
@@ -28,7 +28,7 @@
 #include "gpg.h"
 #include "options.h"
 #include "packet.h"
-#include "errors.h"
+#include "status.h"
 #include "iobuf.h"
 #include "keydb.h"
 #include "util.h"
index 452a99b..0dc15da 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-19  Werner Koch  <wk@g10code.com>
+
+       * stringhelp.c (percent_escape): Factor code out to
+       (do_percent_escape): .. new.
+       (try_percent_escape): New.
+
 2007-10-01  Werner Koch  <wk@g10code.com>
 
        * w32-afunix.c: Only keep the client related code.
index 2f52043..0287505 100644 (file)
@@ -856,9 +856,9 @@ memrchr (const void *buffer, int c, size_t n)
 
 \f
 /* Percent-escape the string STR by replacing colons with '%3a'.  If
-   EXTRA is not NULL all characters in it are also escaped. */
-char *
-percent_escape (const char *str, const char *extra)
+   EXTRA is not NULL all characters in EXTRA are also escaped.  */
+static char *
+do_percent_escape (const char *str, const char *extra, int die)
 {
   int i, j;
   char *ptr;
@@ -869,7 +869,14 @@ percent_escape (const char *str, const char *extra)
   for (i=j=0; str[i]; i++)
     if (str[i] == ':' || str[i] == '%' || (extra && strchr (extra, str[i])))
       j++;
-  ptr = jnlib_xmalloc (i + 2 * j + 1);
+  if (die)
+    ptr = jnlib_xmalloc (i + 2 * j + 1);
+  else
+    {
+      ptr = jnlib_malloc (i + 2 * j + 1);
+      if (!ptr)
+        return NULL;
+    }
   i = 0;
   while (*str)
     {
@@ -899,3 +906,19 @@ percent_escape (const char *str, const char *extra)
 
   return ptr;
 }
+
+/* Percent-escape the string STR by replacing colons with '%3a'.  If
+   EXTRA is not NULL all characters in EXTRA are also escaped.  */
+char *
+percent_escape (const char *str, const char *extra)
+{
+  return do_percent_escape (str, extra, 1);
+}
+
+/* Same as percent_escape but return NULL instead of exiting on memory
+   error. */
+char *
+try_percent_escape (const char *str, const char *extra)
+{
+  return do_percent_escape (str, extra, 0);
+}
index 6dee2e4..cb70519 100644 (file)
@@ -116,8 +116,11 @@ isascii (int c)
 #define STR2(v) STR(v)
 
 /* Percent-escape the string STR by replacing colons with '%3a'.  If
-   EXTRA is not NULL, also replace all characters given in EXTRA. */
+   EXTRA is not NULL, also replace all characters given in EXTRA.  The
+   "try_" variant fails with NULL if not enough memory can be
+   allocated.  */
 char *percent_escape (const char *str, const char *extra);
+char *try_percent_escape (const char *str, const char *extra);
 
 
 #endif /*LIBJNLIB_STRINGHELP_H*/
index 50ade67..43b0ea9 100644 (file)
@@ -1,6 +1,14 @@
+2007-11-15  Werner Koch  <wk@g10code.com>
+
+       * de.po: Type fix.
+
+2007-11-12  Daniel Nylander <po@danielnylander.se>  (wk)
+
+       * sv.po: Updated.
+
 2007-09-14  Werner Koch  <wk@g10code.com>
 
-       * de.po: Chnaged translation of --honor-http-proxy.
+       * de.po: Changed translation of --honor-http-proxy.
 
 2007-08-29  Werner Koch  <wk@g10code.com>
 
index 13a61e9..97b185b 100644 (file)
--- a/po/be.po
+++ b/po/be.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg 1.2.2\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-09-14 13:27+0200\n"
+"POT-Creation-Date: 2007-11-19 16:02+0100\n"
 "PO-Revision-Date: 2003-10-30 16:35+0200\n"
 "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
 "Language-Team: Belarusian <i18n@mova.org>\n"
@@ -15,57 +15,73 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.0.2\n"
 
-#: agent/call-pinentry.c:196
+#: agent/call-pinentry.c:205
 #, fuzzy, c-format
 msgid "failed to acquire the pinentry lock: %s\n"
 msgstr "%s: немагчыма стварыць хэш-табліцу: %s\n"
 
-#: agent/call-pinentry.c:438
+#: agent/call-pinentry.c:548
 msgid ""
 "Please enter your PIN, so that the secret key can be unlocked for this "
 "session"
 msgstr ""
 
-#: agent/call-pinentry.c:441
+#: agent/call-pinentry.c:551
 msgid ""
 "Please enter your passphrase, so that the secret key can be unlocked for "
 "this session"
 msgstr ""
 
-#: agent/call-pinentry.c:489
+#. TRANSLATORS: This string is displayed pinentry as the label
+#. for the quality bar.
+#: agent/call-pinentry.c:586
+msgid "Quality:"
+msgstr ""
+
+#. TRANSLATORS: This string is a tooltip, shown by pinentry when
+#. hovering over the quality bar.  Please use an appropriate
+#. sting to describe what this is about.  The length of the
+#. tooltip is limited to about 900 characters.  If you do not
+#. translate this a default english string (see source) will be
+#. used.
+#: agent/call-pinentry.c:604
+msgid "pinentry.qualitybar.tooltip"
+msgstr ""
+
+#: agent/call-pinentry.c:647
 #, c-format
 msgid "SETERROR %s (try %d of %d)"
 msgstr ""
 
-#: agent/call-pinentry.c:509 agent/call-pinentry.c:521
+#: agent/call-pinentry.c:667 agent/call-pinentry.c:679
 #, fuzzy
 msgid "PIN too long"
 msgstr "пароль занадта доўгі\n"
 
-#: agent/call-pinentry.c:510
+#: agent/call-pinentry.c:668
 #, fuzzy
 msgid "Passphrase too long"
 msgstr "пароль занадта доўгі\n"
 
-#: agent/call-pinentry.c:518
+#: agent/call-pinentry.c:676
 msgid "Invalid characters in PIN"
 msgstr ""
 
-#: agent/call-pinentry.c:523
+#: agent/call-pinentry.c:681
 msgid "PIN too short"
 msgstr ""
 
-#: agent/call-pinentry.c:535
+#: agent/call-pinentry.c:693
 #, fuzzy
 msgid "Bad PIN"
 msgstr "дрэнны MPI"
 
-#: agent/call-pinentry.c:536
+#: agent/call-pinentry.c:694
 #, fuzzy
 msgid "Bad Passphrase"
 msgstr "дрэнны пароль"
 
-#: agent/call-pinentry.c:572
+#: agent/call-pinentry.c:730
 #, fuzzy
 msgid "Passphrase"
 msgstr "дрэнны пароль"
@@ -75,21 +91,21 @@ msgstr "дрэнны пароль"
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr ""
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3141
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1059 g10/keygen.c:3141
 #: g10/keygen.c:3174 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
-#: g10/openfile.c:368 g10/sign.c:828 g10/sign.c:1137 g10/tdbio.c:536
+#: g10/openfile.c:368 g10/sign.c:798 g10/sign.c:1107 g10/tdbio.c:536
 #, c-format
 msgid "can't create `%s': %s\n"
 msgstr ""
 
 #: agent/command-ssh.c:700 g10/card-util.c:680 g10/card-util.c:749
 #: g10/dearmor.c:60 g10/dearmor.c:107 g10/decrypt.c:70 g10/encode.c:194
-#: g10/encode.c:504 g10/gpg.c:1010 g10/import.c:193 g10/keygen.c:2630
+#: g10/encode.c:504 g10/gpg.c:1060 g10/import.c:193 g10/keygen.c:2630
 #: g10/keyring.c:1532 g10/openfile.c:192 g10/openfile.c:353
-#: g10/plaintext.c:503 g10/sign.c:810 g10/sign.c:1005 g10/sign.c:1121
-#: g10/sign.c:1277 g10/tdbdump.c:139 g10/tdbdump.c:147 g10/tdbio.c:540
-#: g10/tdbio.c:603 g10/verify.c:99 g10/verify.c:162 sm/gpgsm.c:1865
-#: sm/gpgsm.c:1902 sm/gpgsm.c:1940 sm/qualified.c:72
+#: g10/plaintext.c:503 g10/sign.c:780 g10/sign.c:975 g10/sign.c:1091
+#: g10/sign.c:1247 g10/tdbdump.c:139 g10/tdbdump.c:147 g10/tdbio.c:540
+#: g10/tdbio.c:603 g10/verify.c:99 g10/verify.c:162 sm/gpgsm.c:1939
+#: sm/gpgsm.c:1976 sm/gpgsm.c:2014 sm/qualified.c:66
 #, c-format
 msgid "can't open `%s': %s\n"
 msgstr ""
@@ -131,14 +147,25 @@ msgstr ""
 "Увядзіце новы пароль для гэтага сакрэтнага ключа.\n"
 "\n"
 
-#: agent/command-ssh.c:2349
+#: agent/command-ssh.c:2342 agent/genkey.c:308 agent/genkey.c:430
+#: agent/protect-tool.c:1197
+#, fuzzy
+msgid "Please re-enter this passphrase"
+msgstr "Увядзіце пароль\n"
+
+#: agent/command-ssh.c:2363
 #, c-format
 msgid ""
 "Please enter a passphrase to protect the received secret key%%0A   %s%%"
 "0Awithin gpg-agent's key storage"
 msgstr ""
 
-#: agent/command-ssh.c:2850
+#: agent/command-ssh.c:2401 agent/genkey.c:338 agent/genkey.c:461
+#: agent/protect-tool.c:1203 tools/symcryptrun.c:434
+msgid "does not match - try again"
+msgstr ""
+
+#: agent/command-ssh.c:2885
 #, fuzzy, c-format
 msgid "failed to create stream from socket: %s\n"
 msgstr "%s: немагчыма стварыць хэш-табліцу: %s\n"
@@ -181,76 +208,66 @@ msgstr "Увядзіце пароль\n"
 msgid "Take this one anyway"
 msgstr ""
 
-#: agent/genkey.c:185
+#: agent/genkey.c:191
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Abe at least %u character long."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
+"at least %u character long."
 msgid_plural ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Abe at least %u characters long."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
+"at least %u characters long."
 msgstr[0] ""
 msgstr[1] ""
 
-#: agent/genkey.c:202
+#: agent/genkey.c:212
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Acontain at least %u digit or special character."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
+"contain at least %u digit or%%0Aspecial character."
 msgid_plural ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Acontain at least %u digits or special characters."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
+"contain at least %u digits or%%0Aspecial characters."
 msgstr[0] ""
 msgstr[1] ""
 
-#: agent/genkey.c:225
+#: agent/genkey.c:235
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%0Ais obviously not secure.  A "
-"passphrase may not%0Abe a known term or match certain pattern."
+"Warning: You have entered an insecure passphrase.%0AA passphrase may not be "
+"a known term or match%%0Acertain pattern."
 msgstr ""
 
-#: agent/genkey.c:238
+#: agent/genkey.c:251
 #, c-format
 msgid ""
 "You have not entered a passphrase!%0AAn empty passphrase is not allowed."
 msgstr ""
 
-#: agent/genkey.c:240
+#: agent/genkey.c:253
 #, c-format
 msgid ""
 "You have not entered a passphrase - this is in general a bad idea!%0APlease "
 "confirm that you do not want to have any protection on your key."
 msgstr ""
 
-#: agent/genkey.c:246
+#: agent/genkey.c:262
 msgid "Yes, protection is not needed"
 msgstr ""
 
-#: agent/genkey.c:290
+#: agent/genkey.c:306
 #, fuzzy, c-format
 msgid "Please enter the passphrase to%0Ato protect your new key"
 msgstr ""
 "Увядзіце новы пароль для гэтага сакрэтнага ключа.\n"
 "\n"
 
-#: agent/genkey.c:292 agent/genkey.c:413 agent/protect-tool.c:1219
-#, fuzzy
-msgid "Please re-enter this passphrase"
-msgstr "Увядзіце пароль\n"
-
-#: agent/genkey.c:321 agent/genkey.c:443 agent/protect-tool.c:1225
-#: tools/symcryptrun.c:456
-msgid "does not match - try again"
-msgstr ""
-
-#: agent/genkey.c:412
+#: agent/genkey.c:429
 #, fuzzy
 msgid "Please enter the new passphrase"
 msgstr "Паўтарыце пароль\n"
 
-#: agent/gpg-agent.c:118 agent/preset-passphrase.c:72 agent/protect-tool.c:109
-#: scd/scdaemon.c:104
+#: agent/gpg-agent.c:117 agent/preset-passphrase.c:72 agent/protect-tool.c:109
+#: scd/scdaemon.c:101
 #, fuzzy
 msgid ""
 "@Options:\n"
@@ -260,64 +277,63 @@ msgstr ""
 "Выбары:\n"
 " "
 
-#: agent/gpg-agent.c:120 scd/scdaemon.c:106
+#: agent/gpg-agent.c:119 scd/scdaemon.c:103
 msgid "run in server mode (foreground)"
 msgstr ""
 
-#: agent/gpg-agent.c:121 scd/scdaemon.c:109
+#: agent/gpg-agent.c:120 scd/scdaemon.c:106
 msgid "run in daemon mode (background)"
 msgstr ""
 
-#: agent/gpg-agent.c:122 g10/gpg.c:469 g10/gpgv.c:70 kbx/kbxutil.c:88
-#: scd/scdaemon.c:110 sm/gpgsm.c:340 tools/gpg-connect-agent.c:58
-#: tools/gpgconf.c:69 tools/symcryptrun.c:164
+#: agent/gpg-agent.c:121 g10/gpg.c:471 g10/gpgv.c:70 kbx/kbxutil.c:88
+#: scd/scdaemon.c:107 sm/gpgsm.c:342 tools/gpg-connect-agent.c:66
+#: tools/gpgconf.c:72 tools/symcryptrun.c:164
 msgid "verbose"
 msgstr "шматслоўнасьць"
 
-#: agent/gpg-agent.c:123 g10/gpgv.c:71 kbx/kbxutil.c:89 scd/scdaemon.c:111
-#: sm/gpgsm.c:341
+#: agent/gpg-agent.c:122 g10/gpgv.c:71 kbx/kbxutil.c:89 scd/scdaemon.c:108
+#: sm/gpgsm.c:343
 msgid "be somewhat more quiet"
 msgstr "працаваць менш шматслоўна"
 
-#: agent/gpg-agent.c:124 scd/scdaemon.c:112
+#: agent/gpg-agent.c:123 scd/scdaemon.c:109
 msgid "sh-style command output"
 msgstr ""
 
-#: agent/gpg-agent.c:125 scd/scdaemon.c:113
+#: agent/gpg-agent.c:124 scd/scdaemon.c:110
 msgid "csh-style command output"
 msgstr ""
 
-#: agent/gpg-agent.c:126 tools/symcryptrun.c:167
+#: agent/gpg-agent.c:125 tools/symcryptrun.c:167
 msgid "|FILE|read options from FILE"
 msgstr ""
 
-#: agent/gpg-agent.c:131 scd/scdaemon.c:122
+#: agent/gpg-agent.c:130 scd/scdaemon.c:119
 msgid "do not detach from the console"
 msgstr ""
 
-#: agent/gpg-agent.c:132
+#: agent/gpg-agent.c:131
 msgid "do not grab keyboard and mouse"
 msgstr ""
 
-#: agent/gpg-agent.c:133 scd/scdaemon.c:123 sm/gpgsm.c:343
-#: tools/symcryptrun.c:166
+#: agent/gpg-agent.c:132 scd/scdaemon.c:120 tools/symcryptrun.c:166
 msgid "use a log file for the server"
 msgstr ""
 
-#: agent/gpg-agent.c:135
+#: agent/gpg-agent.c:134
 #, fuzzy
 msgid "use a standard location for the socket"
 msgstr "паказаць сьпіс ключоў і ID карыстальнікаў"
 
-#: agent/gpg-agent.c:138
+#: agent/gpg-agent.c:137
 msgid "|PGM|use PGM as the PIN-Entry program"
 msgstr ""
 
-#: agent/gpg-agent.c:141
+#: agent/gpg-agent.c:140
 msgid "|PGM|use PGM as the SCdaemon program"
 msgstr ""
 
-#: agent/gpg-agent.c:142
+#: agent/gpg-agent.c:141
 msgid "do not use the SCdaemon"
 msgstr ""
 
@@ -354,148 +370,163 @@ msgstr ""
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
-#: agent/gpg-agent.c:273 agent/preset-passphrase.c:94 agent/protect-tool.c:146
-#: scd/scdaemon.c:206 sm/gpgsm.c:565 tools/gpg-connect-agent.c:124
-#: tools/gpgconf.c:91 tools/symcryptrun.c:204
+#: agent/gpg-agent.c:282 agent/preset-passphrase.c:94 agent/protect-tool.c:146
+#: scd/scdaemon.c:207 sm/gpgsm.c:570 tools/gpg-connect-agent.c:171
+#: tools/gpgconf.c:94 tools/symcryptrun.c:204
 #, fuzzy
 msgid "Please report bugs to <"
 msgstr "Калі ласка, паведамляйце пра памылкі на <gnupg-bugs@gnu.org>.\n"
 
-#: agent/gpg-agent.c:276
+#: agent/gpg-agent.c:285
 #, fuzzy
 msgid "Usage: gpg-agent [options] (-h for help)"
 msgstr "Выкарыстаньне: gpg [выбары] [файлы] (-h для даведкі)"
 
-#: agent/gpg-agent.c:278
+#: agent/gpg-agent.c:287
 msgid ""
 "Syntax: gpg-agent [options] [command [args]]\n"
 "Secret key management for GnuPG\n"
 msgstr ""
 
-#: agent/gpg-agent.c:313 g10/gpg.c:916 scd/scdaemon.c:246 sm/gpgsm.c:679
+#: agent/gpg-agent.c:322 g10/gpg.c:966 scd/scdaemon.c:247 sm/gpgsm.c:732
 #, c-format
 msgid "invalid debug-level `%s' given\n"
 msgstr ""
 
-#: agent/gpg-agent.c:512 agent/protect-tool.c:1066 kbx/kbxutil.c:428
-#: scd/scdaemon.c:340 sm/gpgsm.c:819 sm/gpgsm.c:822 tools/symcryptrun.c:1026
+#: agent/gpg-agent.c:521 agent/protect-tool.c:1066 kbx/kbxutil.c:428
+#: scd/scdaemon.c:342 sm/gpgsm.c:873 sm/gpgsm.c:876 tools/symcryptrun.c:997
 #, c-format
 msgid "%s is too old (need %s, have %s)\n"
 msgstr ""
 
-#: agent/gpg-agent.c:605 g10/gpg.c:2023 scd/scdaemon.c:416 sm/gpgsm.c:910
+#: agent/gpg-agent.c:620 g10/gpg.c:2072 scd/scdaemon.c:423 sm/gpgsm.c:964
 #, c-format
 msgid "NOTE: no default option file `%s'\n"
 msgstr ""
 
-#: agent/gpg-agent.c:610 agent/gpg-agent.c:1177 g10/gpg.c:2027
-#: scd/scdaemon.c:421 sm/gpgsm.c:914 tools/symcryptrun.c:959
+#: agent/gpg-agent.c:625 agent/gpg-agent.c:1205 g10/gpg.c:2076
+#: scd/scdaemon.c:428 sm/gpgsm.c:968 tools/symcryptrun.c:930
 #, c-format
 msgid "option file `%s': %s\n"
 msgstr ""
 
-#: agent/gpg-agent.c:618 g10/gpg.c:2034 scd/scdaemon.c:429 sm/gpgsm.c:921
+#: agent/gpg-agent.c:633 g10/gpg.c:2083 scd/scdaemon.c:436 sm/gpgsm.c:975
 #, c-format
 msgid "reading options from `%s'\n"
 msgstr ""
 
-#: agent/gpg-agent.c:947 g10/plaintext.c:140 g10/plaintext.c:145
+#: agent/gpg-agent.c:965 g10/plaintext.c:140 g10/plaintext.c:145
 #: g10/plaintext.c:162
 #, c-format
 msgid "error creating `%s': %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: agent/gpg-agent.c:1247 agent/gpg-agent.c:1373 agent/gpg-agent.c:1377
-#: agent/gpg-agent.c:1418 agent/gpg-agent.c:1422 g10/exec.c:172
-#: g10/openfile.c:429 scd/scdaemon.c:908
+#: agent/gpg-agent.c:1275 agent/gpg-agent.c:1387 agent/gpg-agent.c:1391
+#: agent/gpg-agent.c:1432 agent/gpg-agent.c:1436 g10/exec.c:172
+#: g10/openfile.c:429 scd/scdaemon.c:921
 #, fuzzy, c-format
 msgid "can't create directory `%s': %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: agent/gpg-agent.c:1261 scd/scdaemon.c:922
+#: agent/gpg-agent.c:1289 scd/scdaemon.c:935
 msgid "name of socket too long\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1287 scd/scdaemon.c:948
+#: agent/gpg-agent.c:1312 scd/scdaemon.c:958
 #, fuzzy, c-format
 msgid "can't create socket: %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: agent/gpg-agent.c:1305 agent/gpg-agent.c:1321
+#: agent/gpg-agent.c:1321
+#, c-format
+msgid "socket name `%s' is too long\n"
+msgstr ""
+
+#: agent/gpg-agent.c:1333
 msgid "a gpg-agent is already running - not starting a new one\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1335 scd/scdaemon.c:977
+#: agent/gpg-agent.c:1344 scd/scdaemon.c:978
+#, fuzzy
+msgid "error getting nonce for the socket\n"
+msgstr "памылка стварэньня \"%s\": %s\n"
+
+#: agent/gpg-agent.c:1349 scd/scdaemon.c:981
 #, fuzzy, c-format
 msgid "error binding socket to `%s': %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: agent/gpg-agent.c:1347 scd/scdaemon.c:985
+#: agent/gpg-agent.c:1361 scd/scdaemon.c:990
 #, fuzzy, c-format
 msgid "listen() failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: agent/gpg-agent.c:1353 scd/scdaemon.c:991
+#: agent/gpg-agent.c:1367 scd/scdaemon.c:997
 #, fuzzy, c-format
 msgid "listening on socket `%s'\n"
 msgstr "запіс у stdout\n"
 
-#: agent/gpg-agent.c:1381 agent/gpg-agent.c:1428 g10/openfile.c:432
+#: agent/gpg-agent.c:1395 agent/gpg-agent.c:1442 g10/openfile.c:432
 #, fuzzy, c-format
 msgid "directory `%s' created\n"
 msgstr "%s: тэчка створана\n"
 
-#: agent/gpg-agent.c:1434
+#: agent/gpg-agent.c:1448
 #, fuzzy, c-format
 msgid "stat() failed for `%s': %s\n"
 msgstr "немагчыма адкрыць %s: %s\n"
 
-#: agent/gpg-agent.c:1438
+#: agent/gpg-agent.c:1452
 #, fuzzy, c-format
 msgid "can't use `%s' as home directory\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: agent/gpg-agent.c:1549
+#: agent/gpg-agent.c:1562 scd/scdaemon.c:1013
+#, fuzzy, c-format
+msgid "error reading nonce on fd %d: %s\n"
+msgstr "памылка стварэньня \"%s\": %s\n"
+
+#: agent/gpg-agent.c:1584
 #, c-format
 msgid "handler 0x%lx for fd %d started\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1554
+#: agent/gpg-agent.c:1589
 #, c-format
 msgid "handler 0x%lx for fd %d terminated\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1571
+#: agent/gpg-agent.c:1609
 #, c-format
 msgid "ssh handler 0x%lx for fd %d started\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1576
+#: agent/gpg-agent.c:1614
 #, c-format
 msgid "ssh handler 0x%lx for fd %d terminated\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1680 scd/scdaemon.c:1117
+#: agent/gpg-agent.c:1718 scd/scdaemon.c:1135
 #, c-format
 msgid "pth_select failed: %s - waiting 1s\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1786 scd/scdaemon.c:1184
+#: agent/gpg-agent.c:1827 scd/scdaemon.c:1202
 #, c-format
 msgid "%s %s stopped\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1809
+#: agent/gpg-agent.c:1850
 msgid "no gpg-agent running in this session\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1820 common/simple-pwquery.c:329
-#: tools/gpg-connect-agent.c:756
+#: agent/gpg-agent.c:1861 common/simple-pwquery.c:329
+#: tools/gpg-connect-agent.c:1953
 msgid "malformed GPG_AGENT_INFO environment variable\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1833 common/simple-pwquery.c:341
-#: tools/gpg-connect-agent.c:767
+#: agent/gpg-agent.c:1874 common/simple-pwquery.c:341
+#: tools/gpg-connect-agent.c:1964
 #, c-format
 msgid "gpg-agent protocol version %d is not supported\n"
 msgstr ""
@@ -522,37 +553,37 @@ msgid ""
 "Secret key maintenance tool\n"
 msgstr ""
 
-#: agent/protect-tool.c:1210
+#: agent/protect-tool.c:1188
 msgid "Please enter the passphrase to unprotect the PKCS#12 object."
 msgstr ""
 
-#: agent/protect-tool.c:1213
+#: agent/protect-tool.c:1191
 msgid "Please enter the passphrase to protect the new PKCS#12 object."
 msgstr ""
 
-#: agent/protect-tool.c:1216
+#: agent/protect-tool.c:1194
 msgid ""
 "Please enter the passphrase to protect the imported object within the GnuPG "
 "system."
 msgstr ""
 
-#: agent/protect-tool.c:1221
+#: agent/protect-tool.c:1199
 msgid ""
 "Please enter the passphrase or the PIN\n"
 "needed to complete this operation."
 msgstr ""
 
-#: agent/protect-tool.c:1226 tools/symcryptrun.c:457
+#: agent/protect-tool.c:1204 tools/symcryptrun.c:435
 #, fuzzy
 msgid "Passphrase:"
 msgstr "дрэнны пароль"
 
-#: agent/protect-tool.c:1240 tools/symcryptrun.c:471
+#: agent/protect-tool.c:1212 tools/symcryptrun.c:442
 #, c-format
 msgid "error while asking for the passphrase: %s\n"
 msgstr ""
 
-#: agent/protect-tool.c:1243 tools/symcryptrun.c:475
+#: agent/protect-tool.c:1215 tools/symcryptrun.c:446
 #, fuzzy
 msgid "cancelled\n"
 msgstr "скасавана карыстальнікам\n"
@@ -664,7 +695,8 @@ msgstr "дрэнны пароль"
 msgid "I'll change it later"
 msgstr ""
 
-#: common/exechelp.c:371 common/exechelp.c:459 tools/gpgconf-comp.c:1340
+#: common/exechelp.c:371 common/exechelp.c:459 tools/gpgconf-comp.c:1338
+#: tools/gpgconf-comp.c:1641
 #, fuzzy, c-format
 msgid "error creating a pipe: %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
@@ -811,76 +843,80 @@ msgstr ""
 msgid "out of core while allocating %lu bytes"
 msgstr ""
 
-#: g10/armor.c:366
+#: g10/armor.c:379
 #, c-format
 msgid "armor: %s\n"
 msgstr ""
 
-#: g10/armor.c:405
+#: g10/armor.c:418
 msgid "invalid armor header: "
 msgstr ""
 
-#: g10/armor.c:416
+#: g10/armor.c:429
 msgid "armor header: "
 msgstr ""
 
-#: g10/armor.c:427
+#: g10/armor.c:442
 msgid "invalid clearsig header\n"
 msgstr ""
 
-#: g10/armor.c:479
+#: g10/armor.c:455
+msgid "unknown armor header: "
+msgstr ""
+
+#: g10/armor.c:508
 msgid "nested clear text signatures\n"
 msgstr ""
 
-#: g10/armor.c:614
+#: g10/armor.c:643
 #, fuzzy
 msgid "unexpected armor: "
 msgstr "нечаканыя даньні"
 
-#: g10/armor.c:626
+#: g10/armor.c:655
 msgid "invalid dash escaped line: "
 msgstr ""
 
-#: g10/armor.c:780 g10/armor.c:1390
+#: g10/armor.c:809 g10/armor.c:1419
 #, c-format
 msgid "invalid radix64 character %02X skipped\n"
 msgstr ""
 
-#: g10/armor.c:823
+#: g10/armor.c:852
 msgid "premature eof (no CRC)\n"
 msgstr ""
 
-#: g10/armor.c:857
+#: g10/armor.c:886
 msgid "premature eof (in CRC)\n"
 msgstr ""
 
-#: g10/armor.c:865
+#: g10/armor.c:894
 msgid "malformed CRC\n"
 msgstr ""
 
-#: g10/armor.c:869 g10/armor.c:1427
+#: g10/armor.c:898 g10/armor.c:1456
 #, fuzzy, c-format
 msgid "CRC error; %06lX - %06lX\n"
 msgstr "памылка CRC; %06lx - %06lx\n"
 
-#: g10/armor.c:889
+#: g10/armor.c:918
 msgid "premature eof (in trailer)\n"
 msgstr ""
 
-#: g10/armor.c:893
+#: g10/armor.c:922
 msgid "error in trailer line\n"
 msgstr ""
 
-#: g10/armor.c:1204
+#: g10/armor.c:1233
 msgid "no valid OpenPGP data found.\n"
 msgstr ""
 
-#: g10/armor.c:1209
+#: g10/armor.c:1238
 #, c-format
 msgid "invalid armor: line longer than %d characters\n"
 msgstr ""
 
-#: g10/armor.c:1213
+#: g10/armor.c:1242
 msgid ""
 "quoted printable character in armor - probably a buggy MTA has been used\n"
 msgstr ""
@@ -1212,11 +1248,11 @@ msgstr "сакрэтны ключ недаступны"
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Нерэчаісны загад (паспрабуйце \"help\")\n"
 
-#: g10/decrypt.c:110 g10/encode.c:890
+#: g10/decrypt.c:110 g10/encode.c:876
 msgid "--output doesn't work for this command\n"
 msgstr ""
 
-#: g10/decrypt.c:166 g10/gpg.c:3858 g10/keyring.c:376 g10/keyring.c:663
+#: g10/decrypt.c:166 g10/gpg.c:3931 g10/keyring.c:376 g10/keyring.c:663
 #, c-format
 msgid "can't open `%s'\n"
 msgstr "немагчыма адкрыць \"%s\"\n"
@@ -1227,7 +1263,7 @@ msgstr "немагчыма адкрыць \"%s\"\n"
 msgid "key \"%s\" not found: %s\n"
 msgstr "грамадскі ключ ня знойдзены"
 
-#: g10/delkey.c:81 g10/export.c:354 g10/import.c:2355 g10/keyserver.c:1733
+#: g10/delkey.c:81 g10/export.c:354 g10/import.c:2367 g10/keyserver.c:1733
 #: g10/revoke.c:232 g10/revoke.c:477
 #, c-format
 msgid "error reading keyblock: %s\n"
@@ -1268,7 +1304,7 @@ msgstr ""
 msgid "use option \"--delete-secret-keys\" to delete it first.\n"
 msgstr ""
 
-#: g10/encode.c:226 g10/sign.c:1296
+#: g10/encode.c:226 g10/sign.c:1266
 #, c-format
 msgid "error creating passphrase: %s\n"
 msgstr ""
@@ -1287,7 +1323,7 @@ msgstr "збой падпісаньня: %s\n"
 msgid "`%s' already compressed\n"
 msgstr ""
 
-#: g10/encode.c:311 g10/encode.c:625 g10/sign.c:593
+#: g10/encode.c:311 g10/encode.c:611 g10/sign.c:561
 #, c-format
 msgid "WARNING: `%s' is an empty file\n"
 msgstr ""
@@ -1312,24 +1348,24 @@ msgid ""
 "WARNING: forcing symmetric cipher %s (%d) violates recipient preferences\n"
 msgstr ""
 
-#: g10/encode.c:669 g10/sign.c:966
+#: g10/encode.c:655 g10/sign.c:936
 #, c-format
 msgid ""
 "WARNING: forcing compression algorithm %s (%d) violates recipient "
 "preferences\n"
 msgstr ""
 
-#: g10/encode.c:765
+#: g10/encode.c:751
 #, c-format
 msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
 msgstr ""
 
-#: g10/encode.c:835 g10/pkclist.c:813 g10/pkclist.c:861
+#: g10/encode.c:821 g10/pkclist.c:813 g10/pkclist.c:861
 #, c-format
 msgid "you may not use %s while in %s mode\n"
 msgstr ""
 
-#: g10/encode.c:862
+#: g10/encode.c:848
 #, c-format
 msgid "%s/%s encrypted for: \"%s\"\n"
 msgstr ""
@@ -1507,7 +1543,7 @@ msgstr "%s: немагчыма стварыць тэчку: %s\n"
 msgid "key %s: secret key without public key - skipped\n"
 msgstr ""
 
-#: g10/gpg.c:368 kbx/kbxutil.c:71 sm/gpgsm.c:242 tools/gpgconf.c:55
+#: g10/gpg.c:370 kbx/kbxutil.c:71 sm/gpgsm.c:244 tools/gpgconf.c:56
 msgid ""
 "@Commands:\n"
 " "
@@ -1515,133 +1551,133 @@ msgstr ""
 "@Загады:\n"
 " "
 
-#: g10/gpg.c:370
+#: g10/gpg.c:372
 msgid "|[file]|make a signature"
 msgstr "|[файл]|зрабіць подпіс"
 
-#: g10/gpg.c:371
+#: g10/gpg.c:373
 msgid "|[file]|make a clear text signature"
 msgstr "|[файл]|зрабіць чысты тэкставы подпіс"
 
-#: g10/gpg.c:372 sm/gpgsm.c:246
+#: g10/gpg.c:374 sm/gpgsm.c:248
 msgid "make a detached signature"
 msgstr "зрабіць адчэплены подпіс"
 
-#: g10/gpg.c:373 sm/gpgsm.c:247
+#: g10/gpg.c:375 sm/gpgsm.c:249
 msgid "encrypt data"
 msgstr "зашыфраваць даньні"
 
-#: g10/gpg.c:375 sm/gpgsm.c:248
+#: g10/gpg.c:377 sm/gpgsm.c:250
 msgid "encryption only with symmetric cipher"
 msgstr "шыфраваньне толькі сымэтрычнымі шыфрамі"
 
-#: g10/gpg.c:377 sm/gpgsm.c:249
+#: g10/gpg.c:379 sm/gpgsm.c:251
 msgid "decrypt data (default)"
 msgstr "разшыфраваць даньні (дапомна)"
 
-#: g10/gpg.c:379 sm/gpgsm.c:250
+#: g10/gpg.c:381 sm/gpgsm.c:252
 msgid "verify a signature"
 msgstr "праверыць подпіс"
 
-#: g10/gpg.c:381 sm/gpgsm.c:252
+#: g10/gpg.c:383 sm/gpgsm.c:254
 msgid "list keys"
 msgstr "паказаць сьпіс ключоў"
 
-#: g10/gpg.c:383
+#: g10/gpg.c:385
 msgid "list keys and signatures"
 msgstr "паказаць сьпіс ключоў і подпісаў"
 
-#: g10/gpg.c:384
+#: g10/gpg.c:386
 #, fuzzy
 msgid "list and check key signatures"
 msgstr "праверыць подпісы ключа"
 
-#: g10/gpg.c:385 sm/gpgsm.c:256
+#: g10/gpg.c:387 sm/gpgsm.c:258
 msgid "list keys and fingerprints"
 msgstr "паказаць ключы й адбіткі пальцаў"
 
-#: g10/gpg.c:386 sm/gpgsm.c:254
+#: g10/gpg.c:388 sm/gpgsm.c:256
 msgid "list secret keys"
 msgstr "паказаць сакрэтныя ключы"
 
-#: g10/gpg.c:387
+#: g10/gpg.c:389
 msgid "generate a new key pair"
 msgstr "стварыць новую пару ключоў"
 
-#: g10/gpg.c:388
+#: g10/gpg.c:390
 msgid "remove keys from the public keyring"
 msgstr "выдаліць ключы са зьвязку грамадскіх ключоў"
 
-#: g10/gpg.c:390
+#: g10/gpg.c:392
 msgid "remove keys from the secret keyring"
 msgstr "выдаліць ключы са зьвязку сакрэтных ключоў"
 
-#: g10/gpg.c:391
+#: g10/gpg.c:393
 msgid "sign a key"
 msgstr "падпісаць ключ"
 
-#: g10/gpg.c:392
+#: g10/gpg.c:394
 msgid "sign a key locally"
 msgstr "падпісаць ключ толькі мясцова"
 
-#: g10/gpg.c:393
+#: g10/gpg.c:395
 msgid "sign or edit a key"
 msgstr "падпісаць ці рэдагаваць ключ"
 
-#: g10/gpg.c:394
+#: g10/gpg.c:396
 msgid "generate a revocation certificate"
 msgstr ""
 
-#: g10/gpg.c:396
+#: g10/gpg.c:398
 msgid "export keys"
 msgstr "экспарт ключоў"
 
-#: g10/gpg.c:397 sm/gpgsm.c:259
+#: g10/gpg.c:399 sm/gpgsm.c:261
 msgid "export keys to a key server"
 msgstr "экспартаваць ключы на паслужнік ключоў"
 
-#: g10/gpg.c:398 sm/gpgsm.c:260
+#: g10/gpg.c:400 sm/gpgsm.c:262
 msgid "import keys from a key server"
 msgstr "імпартаваць ключы з паслужніка ключоў"
 
-#: g10/gpg.c:400
+#: g10/gpg.c:402
 msgid "search for keys on a key server"
 msgstr ""
 
-#: g10/gpg.c:402
+#: g10/gpg.c:404
 msgid "update all keys from a keyserver"
 msgstr "абнавіць усе ключы з паслужніка ключоў"
 
-#: g10/gpg.c:406
+#: g10/gpg.c:408
 msgid "import/merge keys"
 msgstr "імпартаваць/аб'яднаць ключы"
 
-#: g10/gpg.c:409
+#: g10/gpg.c:411
 msgid "print the card status"
 msgstr ""
 
-#: g10/gpg.c:410
+#: g10/gpg.c:412
 msgid "change data on a card"
 msgstr ""
 
-#: g10/gpg.c:411
+#: g10/gpg.c:413
 msgid "change a card's PIN"
 msgstr ""
 
-#: g10/gpg.c:420
+#: g10/gpg.c:422
 msgid "update the trust database"
 msgstr ""
 
-#: g10/gpg.c:427
+#: g10/gpg.c:429
 msgid "|algo [files]|print message digests"
 msgstr ""
 
-#: g10/gpg.c:430 sm/gpgsm.c:264
+#: g10/gpg.c:432 sm/gpgsm.c:266
 msgid "run in server mode"
 msgstr ""
 
-#: g10/gpg.c:432 g10/gpgv.c:68 kbx/kbxutil.c:81 sm/gpgsm.c:279
-#: tools/gpg-connect-agent.c:56 tools/gpgconf.c:66 tools/symcryptrun.c:157
+#: g10/gpg.c:434 g10/gpgv.c:68 kbx/kbxutil.c:81 sm/gpgsm.c:281
+#: tools/gpg-connect-agent.c:64 tools/gpgconf.c:69 tools/symcryptrun.c:157
 msgid ""
 "@\n"
 "Options:\n"
@@ -1651,47 +1687,47 @@ msgstr ""
 "Выбары:\n"
 " "
 
-#: g10/gpg.c:434 sm/gpgsm.c:281
+#: g10/gpg.c:436 sm/gpgsm.c:283
 msgid "create ascii armored output"
 msgstr ""
 
-#: g10/gpg.c:436 sm/gpgsm.c:293
+#: g10/gpg.c:438 sm/gpgsm.c:295
 msgid "|NAME|encrypt for NAME"
 msgstr "|ІМЯ|   зашыфраваць для вылучанай асобы"
 
-#: g10/gpg.c:447 sm/gpgsm.c:331
+#: g10/gpg.c:449 sm/gpgsm.c:333
 msgid "use this user-id to sign or decrypt"
 msgstr ""
 
-#: g10/gpg.c:448 sm/gpgsm.c:334
+#: g10/gpg.c:450 sm/gpgsm.c:336
 msgid "|N|set compress level N (0 disables)"
 msgstr ""
 
-#: g10/gpg.c:453 sm/gpgsm.c:336
+#: g10/gpg.c:455 sm/gpgsm.c:338
 msgid "use canonical text mode"
 msgstr ""
 
-#: g10/gpg.c:467 sm/gpgsm.c:339 tools/gpgconf.c:68
-msgid "use as output file"
-msgstr "выкарыстоўваць у якасьці файла вываду"
+#: g10/gpg.c:469 sm/gpgsm.c:341
+msgid "|FILE|write output to FILE"
+msgstr ""
 
-#: g10/gpg.c:480 kbx/kbxutil.c:90 sm/gpgsm.c:349 tools/gpgconf.c:71
+#: g10/gpg.c:482 kbx/kbxutil.c:90 sm/gpgsm.c:352 tools/gpgconf.c:74
 msgid "do not make any changes"
 msgstr "не рабіць ніякіх зьменаў"
 
-#: g10/gpg.c:481
+#: g10/gpg.c:483
 msgid "prompt before overwriting"
 msgstr "пытацца перад перазапісам"
 
-#: g10/gpg.c:523
+#: g10/gpg.c:526
 msgid "use strict OpenPGP behavior"
 msgstr ""
 
-#: g10/gpg.c:524
+#: g10/gpg.c:527
 msgid "generate PGP 2.x compatible messages"
 msgstr ""
 
-#: g10/gpg.c:553 sm/gpgsm.c:397
+#: g10/gpg.c:556 sm/gpgsm.c:400
 msgid ""
 "@\n"
 "(See the man page for a complete listing of all commands and options)\n"
@@ -1699,7 +1735,7 @@ msgstr ""
 "@\n"
 "(Глядзіце man старонку, для больш поўнага апісаньня ўсіх загадаў і выбараў)\n"
 
-#: g10/gpg.c:556 sm/gpgsm.c:400
+#: g10/gpg.c:559 sm/gpgsm.c:403
 msgid ""
 "@\n"
 "Examples:\n"
@@ -1719,15 +1755,15 @@ msgstr ""
 " --list-keys [назвы]        паказаць ключы\n"
 " --fingerprint [назвы]      паказаць адбіткі пальцаў\n"
 
-#: g10/gpg.c:750 g10/gpgv.c:95
+#: g10/gpg.c:755 g10/gpgv.c:95
 msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
 msgstr "Калі ласка, паведамляйце пра памылкі на <gnupg-bugs@gnu.org>.\n"
 
-#: g10/gpg.c:767
+#: g10/gpg.c:772
 msgid "Usage: gpg [options] [files] (-h for help)"
 msgstr "Выкарыстаньне: gpg [выбары] [файлы] (-h для даведкі)"
 
-#: g10/gpg.c:770
+#: g10/gpg.c:775
 msgid ""
 "Syntax: gpg [options] [files]\n"
 "sign, check, encrypt or decrypt\n"
@@ -1737,7 +1773,7 @@ msgstr ""
 "sign, check, encrypt ці decrypt\n"
 "Дапомнае дзеяньне залежыць ад уваходных даньняў\n"
 
-#: g10/gpg.c:781 sm/gpgsm.c:578
+#: g10/gpg.c:786 sm/gpgsm.c:583
 msgid ""
 "\n"
 "Supported algorithms:\n"
@@ -1745,547 +1781,551 @@ msgstr ""
 "\n"
 "Альгарытмы, якія падтрымліваюцца:\n"
 
-#: g10/gpg.c:784
+#: g10/gpg.c:789
 msgid "Pubkey: "
 msgstr ""
 
-#: g10/gpg.c:791 g10/keyedit.c:2321
+#: g10/gpg.c:796 g10/keyedit.c:2321
 msgid "Cipher: "
 msgstr ""
 
-#: g10/gpg.c:798
+#: g10/gpg.c:803
 msgid "Hash: "
 msgstr ""
 
-#: g10/gpg.c:805 g10/keyedit.c:2365
+#: g10/gpg.c:810 g10/keyedit.c:2365
 msgid "Compression: "
 msgstr ""
 
-#: g10/gpg.c:875
+#: g10/gpg.c:817 sm/gpgsm.c:603
+msgid "Used libraries:"
+msgstr ""
+
+#: g10/gpg.c:925
 msgid "usage: gpg [options] "
 msgstr "Выкарыстаньне: gpg [выбары] "
 
-#: g10/gpg.c:1045 sm/gpgsm.c:715
+#: g10/gpg.c:1095 sm/gpgsm.c:768
 msgid "conflicting commands\n"
 msgstr "несумяшчальныя загады\n"
 
-#: g10/gpg.c:1063
+#: g10/gpg.c:1113
 #, c-format
 msgid "no = sign found in group definition `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1260
+#: g10/gpg.c:1310
 #, c-format
 msgid "WARNING: unsafe ownership on homedir `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1263
+#: g10/gpg.c:1313
 #, c-format
 msgid "WARNING: unsafe ownership on configuration file `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1266
+#: g10/gpg.c:1316
 #, c-format
 msgid "WARNING: unsafe ownership on extension `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1272
+#: g10/gpg.c:1322
 #, c-format
 msgid "WARNING: unsafe permissions on homedir `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1275
+#: g10/gpg.c:1325
 #, c-format
 msgid "WARNING: unsafe permissions on configuration file `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1278
+#: g10/gpg.c:1328
 #, c-format
 msgid "WARNING: unsafe permissions on extension `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1284
+#: g10/gpg.c:1334
 #, c-format
 msgid "WARNING: unsafe enclosing directory ownership on homedir `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1287
+#: g10/gpg.c:1337
 #, c-format
 msgid ""
 "WARNING: unsafe enclosing directory ownership on configuration file `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1290
+#: g10/gpg.c:1340
 #, c-format
 msgid "WARNING: unsafe enclosing directory ownership on extension `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1296
+#: g10/gpg.c:1346
 #, c-format
 msgid "WARNING: unsafe enclosing directory permissions on homedir `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1299
+#: g10/gpg.c:1349
 #, c-format
 msgid ""
 "WARNING: unsafe enclosing directory permissions on configuration file `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1302
+#: g10/gpg.c:1352
 #, c-format
 msgid "WARNING: unsafe enclosing directory permissions on extension `%s'\n"
 msgstr ""
 
-#: g10/gpg.c:1445
+#: g10/gpg.c:1495
 #, fuzzy, c-format
 msgid "unknown configuration item `%s'\n"
 msgstr "невядомая вэрсыя"
 
-#: g10/gpg.c:1540
+#: g10/gpg.c:1590
 msgid "display photo IDs during key listings"
 msgstr ""
 
-#: g10/gpg.c:1542
+#: g10/gpg.c:1592
 msgid "show policy URLs during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1544
+#: g10/gpg.c:1594
 msgid "show all notations during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1546
+#: g10/gpg.c:1596
 msgid "show IETF standard notations during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1550
+#: g10/gpg.c:1600
 msgid "show user-supplied notations during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1552
+#: g10/gpg.c:1602
 msgid "show preferred keyserver URLs during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1554
+#: g10/gpg.c:1604
 msgid "show user ID validity during key listings"
 msgstr ""
 
-#: g10/gpg.c:1556
+#: g10/gpg.c:1606
 msgid "show revoked and expired user IDs in key listings"
 msgstr ""
 
-#: g10/gpg.c:1558
+#: g10/gpg.c:1608
 msgid "show revoked and expired subkeys in key listings"
 msgstr ""
 
-#: g10/gpg.c:1560
+#: g10/gpg.c:1610
 msgid "show the keyring name in key listings"
 msgstr ""
 
-#: g10/gpg.c:1562
+#: g10/gpg.c:1612
 msgid "show expiration dates during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1825
+#: g10/gpg.c:1875
 #, c-format
 msgid "libgcrypt is too old (need %s, have %s)\n"
 msgstr ""
 
-#: g10/gpg.c:1981
+#: g10/gpg.c:2030
 #, c-format
 msgid "NOTE: old default options file `%s' ignored\n"
 msgstr ""
 
-#: g10/gpg.c:2241 g10/gpg.c:2882 g10/gpg.c:2894
+#: g10/gpg.c:2290 g10/gpg.c:2955 g10/gpg.c:2967
 #, c-format
 msgid "NOTE: %s is not for normal use!\n"
 msgstr ""
 
-#: g10/gpg.c:2399 g10/gpg.c:2411
+#: g10/gpg.c:2471 g10/gpg.c:2483
 #, fuzzy, c-format
 msgid "`%s' is not a valid signature expiration\n"
 msgstr "%s - гэта недапушчальнае мноства знакаў\n"
 
-#: g10/gpg.c:2493
+#: g10/gpg.c:2565
 #, fuzzy, c-format
 msgid "`%s' is not a valid character set\n"
 msgstr "%s - гэта недапушчальнае мноства знакаў\n"
 
-#: g10/gpg.c:2516 g10/gpg.c:2711 g10/keyedit.c:4084
+#: g10/gpg.c:2588 g10/gpg.c:2783 g10/keyedit.c:4084
 msgid "could not parse keyserver URL\n"
 msgstr ""
 
-#: g10/gpg.c:2528
+#: g10/gpg.c:2600
 #, fuzzy, c-format
 msgid "%s:%d: invalid keyserver options\n"
 msgstr "%s:%d: недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2531
+#: g10/gpg.c:2603
 #, fuzzy
 msgid "invalid keyserver options\n"
 msgstr "недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2538
+#: g10/gpg.c:2610
 #, c-format
 msgid "%s:%d: invalid import options\n"
 msgstr "%s:%d: недапушчальныя выбары імпартаваньня\n"
 
-#: g10/gpg.c:2541
+#: g10/gpg.c:2613
 msgid "invalid import options\n"
 msgstr "недапушчальныя выбары імпартаваньня\n"
 
-#: g10/gpg.c:2548
+#: g10/gpg.c:2620
 #, c-format
 msgid "%s:%d: invalid export options\n"
 msgstr "%s:%d: недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2551
+#: g10/gpg.c:2623
 msgid "invalid export options\n"
 msgstr "недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2558
+#: g10/gpg.c:2630
 #, fuzzy, c-format
 msgid "%s:%d: invalid list options\n"
 msgstr "%s:%d: недапушчальныя выбары імпартаваньня\n"
 
-#: g10/gpg.c:2561
+#: g10/gpg.c:2633
 #, fuzzy
 msgid "invalid list options\n"
 msgstr "недапушчальныя выбары імпартаваньня\n"
 
-#: g10/gpg.c:2569
+#: g10/gpg.c:2641
 msgid "display photo IDs during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2571
+#: g10/gpg.c:2643
 msgid "show policy URLs during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2573
+#: g10/gpg.c:2645
 #, fuzzy
 msgid "show all notations during signature verification"
 msgstr "%s - гэта недапушчальнае мноства знакаў\n"
 
-#: g10/gpg.c:2575
+#: g10/gpg.c:2647
 msgid "show IETF standard notations during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2579
+#: g10/gpg.c:2651
 msgid "show user-supplied notations during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2581
+#: g10/gpg.c:2653
 msgid "show preferred keyserver URLs during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2583
+#: g10/gpg.c:2655
 #, fuzzy
 msgid "show user ID validity during signature verification"
 msgstr "%s - гэта недапушчальнае мноства знакаў\n"
 
-#: g10/gpg.c:2585
+#: g10/gpg.c:2657
 msgid "show revoked and expired user IDs in signature verification"
 msgstr ""
 
-#: g10/gpg.c:2587
+#: g10/gpg.c:2659
 #, fuzzy
 msgid "show only the primary user ID in signature verification"
 msgstr "%s - гэта недапушчальнае мноства знакаў\n"
 
-#: g10/gpg.c:2589
+#: g10/gpg.c:2661
 msgid "validate signatures with PKA data"
 msgstr ""
 
-#: g10/gpg.c:2591
+#: g10/gpg.c:2663
 msgid "elevate the trust of signatures with valid PKA data"
 msgstr ""
 
-#: g10/gpg.c:2598
+#: g10/gpg.c:2670
 #, fuzzy, c-format
 msgid "%s:%d: invalid verify options\n"
 msgstr "%s:%d: недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2601
+#: g10/gpg.c:2673
 #, fuzzy
 msgid "invalid verify options\n"
 msgstr "недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2608
+#: g10/gpg.c:2680
 #, c-format
 msgid "unable to set exec-path to %s\n"
 msgstr ""
 
-#: g10/gpg.c:2782
+#: g10/gpg.c:2855
 #, fuzzy, c-format
 msgid "%s:%d: invalid auto-key-locate list\n"
 msgstr "%s:%d: недапушчальныя выбары экспартаваньня\n"
 
-#: g10/gpg.c:2785
+#: g10/gpg.c:2858
 msgid "invalid auto-key-locate list\n"
 msgstr ""
 
-#: g10/gpg.c:2871 sm/gpgsm.c:1298
+#: g10/gpg.c:2944 sm/gpgsm.c:1355
 msgid "WARNING: program may create a core file!\n"
 msgstr ""
 
-#: g10/gpg.c:2875
+#: g10/gpg.c:2948
 #, c-format
 msgid "WARNING: %s overrides %s\n"
 msgstr ""
 
-#: g10/gpg.c:2884
+#: g10/gpg.c:2957
 #, c-format
 msgid "%s not allowed with %s!\n"
 msgstr "%s не дазваляецца разам з %s!\n"
 
-#: g10/gpg.c:2887
+#: g10/gpg.c:2960
 #, c-format
 msgid "%s makes no sense with %s!\n"
 msgstr "%s ня мае сэнсу разам з %s!\n"
 
-#: g10/gpg.c:2902
+#: g10/gpg.c:2975
 #, fuzzy, c-format
 msgid "will not run with insecure memory due to %s\n"
 msgstr "запіс у stdout\n"
 
-#: g10/gpg.c:2916
+#: g10/gpg.c:2989
 msgid "you can only make detached or clear signatures while in --pgp2 mode\n"
 msgstr ""
 
-#: g10/gpg.c:2922
+#: g10/gpg.c:2995
 msgid "you can't sign and encrypt at the same time while in --pgp2 mode\n"
 msgstr ""
 
-#: g10/gpg.c:2928
+#: g10/gpg.c:3001
 msgid "you must use files (and not a pipe) when working with --pgp2 enabled.\n"
 msgstr ""
 
-#: g10/gpg.c:2941
+#: g10/gpg.c:3014
 msgid "encrypting a message in --pgp2 mode requires the IDEA cipher\n"
 msgstr ""
 
-#: g10/gpg.c:3007 g10/gpg.c:3031 sm/gpgsm.c:1370
+#: g10/gpg.c:3080 g10/gpg.c:3104 sm/gpgsm.c:1427
 msgid "selected cipher algorithm is invalid\n"
 msgstr ""
 
-#: g10/gpg.c:3013 g10/gpg.c:3037 sm/gpgsm.c:1378
+#: g10/gpg.c:3086 g10/gpg.c:3110 sm/gpgsm.c:1435
 msgid "selected digest algorithm is invalid\n"
 msgstr ""
 
-#: g10/gpg.c:3019
+#: g10/gpg.c:3092
 msgid "selected compression algorithm is invalid\n"
 msgstr ""
 
-#: g10/gpg.c:3025
+#: g10/gpg.c:3098
 msgid "selected certification digest algorithm is invalid\n"
 msgstr ""
 
-#: g10/gpg.c:3040
+#: g10/gpg.c:3113
 msgid "completes-needed must be greater than 0\n"
 msgstr ""
 
-#: g10/gpg.c:3042
+#: g10/gpg.c:3115
 msgid "marginals-needed must be greater than 1\n"
 msgstr ""
 
-#: g10/gpg.c:3044
+#: g10/gpg.c:3117
 msgid "max-cert-depth must be in the range from 1 to 255\n"
 msgstr ""
 
-#: g10/gpg.c:3046
+#: g10/gpg.c:3119
 msgid "invalid default-cert-level; must be 0, 1, 2, or 3\n"
 msgstr ""
 
-#: g10/gpg.c:3048
+#: g10/gpg.c:3121
 msgid "invalid min-cert-level; must be 1, 2, or 3\n"
 msgstr ""
 
-#: g10/gpg.c:3051
+#: g10/gpg.c:3124
 msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
 msgstr ""
 
-#: g10/gpg.c:3055
+#: g10/gpg.c:3128
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
 msgstr ""
 
-#: g10/gpg.c:3062
+#: g10/gpg.c:3135
 msgid "invalid default preferences\n"
 msgstr "недапушчальныя дапомныя перавагі\n"
 
-#: g10/gpg.c:3071
+#: g10/gpg.c:3144
 msgid "invalid personal cipher preferences\n"
 msgstr ""
 
-#: g10/gpg.c:3075
+#: g10/gpg.c:3148
 msgid "invalid personal digest preferences\n"
 msgstr ""
 
-#: g10/gpg.c:3079
+#: g10/gpg.c:3152
 msgid "invalid personal compress preferences\n"
 msgstr ""
 
-#: g10/gpg.c:3112
+#: g10/gpg.c:3185
 #, fuzzy, c-format
 msgid "%s does not yet work with %s\n"
 msgstr "%s ня мае сэнсу разам з %s!\n"
 
-#: g10/gpg.c:3159
+#: g10/gpg.c:3232
 #, c-format
 msgid "you may not use cipher algorithm `%s' while in %s mode\n"
 msgstr ""
 
-#: g10/gpg.c:3164
+#: g10/gpg.c:3237
 #, c-format
 msgid "you may not use digest algorithm `%s' while in %s mode\n"
 msgstr ""
 
-#: g10/gpg.c:3169
+#: g10/gpg.c:3242
 #, c-format
 msgid "you may not use compression algorithm `%s' while in %s mode\n"
 msgstr ""
 
-#: g10/gpg.c:3261
+#: g10/gpg.c:3334
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
 msgstr ""
 
-#: g10/gpg.c:3272
+#: g10/gpg.c:3345
 msgid "WARNING: recipients (-r) given without using public key encryption\n"
 msgstr ""
 
-#: g10/gpg.c:3293
+#: g10/gpg.c:3366
 msgid "--store [filename]"
 msgstr "--store [назва_файла]"
 
-#: g10/gpg.c:3300
+#: g10/gpg.c:3373
 msgid "--symmetric [filename]"
 msgstr "--symmetric [назва_файла]"
 
-#: g10/gpg.c:3302
+#: g10/gpg.c:3375
 #, fuzzy, c-format
 msgid "symmetric encryption of `%s' failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/gpg.c:3312
+#: g10/gpg.c:3385
 msgid "--encrypt [filename]"
 msgstr "--encrypt [назва_файла]"
 
-#: g10/gpg.c:3325
+#: g10/gpg.c:3398
 #, fuzzy
 msgid "--symmetric --encrypt [filename]"
 msgstr "--sign --encrypt [назва_файла]"
 
-#: g10/gpg.c:3327
+#: g10/gpg.c:3400
 msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n"
 msgstr ""
 
-#: g10/gpg.c:3330
+#: g10/gpg.c:3403
 #, c-format
 msgid "you cannot use --symmetric --encrypt while in %s mode\n"
 msgstr ""
 
-#: g10/gpg.c:3348
+#: g10/gpg.c:3421
 msgid "--sign [filename]"
 msgstr "--sign [назва_файла]"
 
-#: g10/gpg.c:3361
+#: g10/gpg.c:3434
 msgid "--sign --encrypt [filename]"
 msgstr "--sign --encrypt [назва_файла]"
 
-#: g10/gpg.c:3376
+#: g10/gpg.c:3449
 #, fuzzy
 msgid "--symmetric --sign --encrypt [filename]"
 msgstr "--sign --encrypt [назва_файла]"
 
-#: g10/gpg.c:3378
+#: g10/gpg.c:3451
 msgid "you cannot use --symmetric --sign --encrypt with --s2k-mode 0\n"
 msgstr ""
 
-#: g10/gpg.c:3381
+#: g10/gpg.c:3454
 #, c-format
 msgid "you cannot use --symmetric --sign --encrypt while in %s mode\n"
 msgstr ""
 
-#: g10/gpg.c:3401
+#: g10/gpg.c:3474
 msgid "--sign --symmetric [filename]"
 msgstr "--sign --symmetric [назва_файла]"
 
-#: g10/gpg.c:3410
+#: g10/gpg.c:3483
 msgid "--clearsign [filename]"
 msgstr "--clearsign [назва_файла]"
 
-#: g10/gpg.c:3435
+#: g10/gpg.c:3508
 msgid "--decrypt [filename]"
 msgstr "--decrypt [назва_файла]"
 
-#: g10/gpg.c:3443
+#: g10/gpg.c:3516
 msgid "--sign-key user-id"
 msgstr "--sign-key user-id"
 
-#: g10/gpg.c:3447
+#: g10/gpg.c:3520
 msgid "--lsign-key user-id"
 msgstr "--lsign-key user-id"
 
-#: g10/gpg.c:3468
+#: g10/gpg.c:3541
 msgid "--edit-key user-id [commands]"
 msgstr "--edit-key user-id [загады]"
 
-#: g10/gpg.c:3553
+#: g10/gpg.c:3626
 #, fuzzy, c-format
 msgid "keyserver send failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/gpg.c:3555
+#: g10/gpg.c:3628
 #, fuzzy, c-format
 msgid "keyserver receive failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/gpg.c:3557
+#: g10/gpg.c:3630
 #, fuzzy, c-format
 msgid "key export failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/gpg.c:3568
+#: g10/gpg.c:3641
 #, fuzzy, c-format
 msgid "keyserver search failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/gpg.c:3578
+#: g10/gpg.c:3651
 #, c-format
 msgid "keyserver refresh failed: %s\n"
 msgstr ""
 
-#: g10/gpg.c:3629
+#: g10/gpg.c:3702
 #, c-format
 msgid "dearmoring failed: %s\n"
 msgstr ""
 
-#: g10/gpg.c:3637
+#: g10/gpg.c:3710
 #, c-format
 msgid "enarmoring failed: %s\n"
 msgstr ""
 
-#: g10/gpg.c:3727
+#: g10/gpg.c:3800
 #, c-format
 msgid "invalid hash algorithm `%s'\n"
 msgstr "нерэчаісны хэш-альгарытм \"%s\"\n"
 
-#: g10/gpg.c:3844
+#: g10/gpg.c:3917
 msgid "[filename]"
 msgstr "[назва_файла]"
 
-#: g10/gpg.c:3848
+#: g10/gpg.c:3921
 msgid "Go ahead and type your message ...\n"
 msgstr ""
 
-#: g10/gpg.c:4160
+#: g10/gpg.c:4233
 msgid "the given certification policy URL is invalid\n"
 msgstr ""
 
-#: g10/gpg.c:4162
+#: g10/gpg.c:4235
 msgid "the given signature policy URL is invalid\n"
 msgstr ""
 
-#: g10/gpg.c:4195
+#: g10/gpg.c:4268
 msgid "the given preferred keyserver URL is invalid\n"
 msgstr ""
 
@@ -2298,7 +2338,7 @@ msgstr "выдаліць ключы са зьвязку грамадскіх к
 msgid "make timestamp conflicts only a warning"
 msgstr ""
 
-#: g10/gpgv.c:75 sm/gpgsm.c:372
+#: g10/gpgv.c:75 sm/gpgsm.c:375
 msgid "|FD|write status info to this FD"
 msgstr ""
 
@@ -2733,13 +2773,13 @@ msgstr ""
 msgid "no writable keyring found: %s\n"
 msgstr ""
 
-#: g10/import.c:808 g10/openfile.c:278 g10/sign.c:832 g10/sign.c:1141
+#: g10/import.c:808 g10/openfile.c:278 g10/sign.c:802 g10/sign.c:1111
 #, c-format
 msgid "writing to `%s'\n"
 msgstr ""
 
 #: g10/import.c:812 g10/import.c:907 g10/import.c:1164 g10/import.c:1307
-#: g10/import.c:2369 g10/import.c:2391
+#: g10/import.c:2381 g10/import.c:2403
 #, c-format
 msgid "error writing keyring `%s': %s\n"
 msgstr ""
@@ -2829,7 +2869,7 @@ msgstr ""
 msgid "importing secret keys not allowed\n"
 msgstr "сакрэтны ключ недаступны"
 
-#: g10/import.c:1158 g10/import.c:2384
+#: g10/import.c:1158 g10/import.c:2396
 #, c-format
 msgid "no default secret keyring: %s\n"
 msgstr ""
@@ -2949,40 +2989,40 @@ msgstr ""
 msgid "key %s: unexpected signature class (0x%02X) - skipped\n"
 msgstr ""
 
-#: g10/import.c:1732
+#: g10/import.c:1744
 #, c-format
 msgid "key %s: duplicated user ID detected - merged\n"
 msgstr ""
 
-#: g10/import.c:1794
+#: g10/import.c:1806
 #, c-format
 msgid "WARNING: key %s may be revoked: fetching revocation key %s\n"
 msgstr ""
 
-#: g10/import.c:1808
+#: g10/import.c:1820
 #, c-format
 msgid "WARNING: key %s may be revoked: revocation key %s not present.\n"
 msgstr ""
 
-#: g10/import.c:1867
+#: g10/import.c:1879
 #, c-format
 msgid "key %s: \"%s\" revocation certificate added\n"
 msgstr ""
 
-#: g10/import.c:1901
+#: g10/import.c:1913
 #, fuzzy, c-format
 msgid "key %s: direct key signature added\n"
 msgstr "%s: тэчка створана\n"
 
-#: g10/import.c:2290
+#: g10/import.c:2302
 msgid "NOTE: a key's S/N does not match the card's one\n"
 msgstr ""
 
-#: g10/import.c:2298
+#: g10/import.c:2310
 msgid "NOTE: primary key is online and stored on card\n"
 msgstr ""
 
-#: g10/import.c:2300
+#: g10/import.c:2312
 msgid "NOTE: secondary key is online and stored on card\n"
 msgstr ""
 
@@ -3264,7 +3304,7 @@ msgid "Really sign? (y/N) "
 msgstr ""
 
 #: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
-#: g10/keyedit.c:5019 g10/sign.c:348
+#: g10/keyedit.c:5019 g10/sign.c:316
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
@@ -3605,8 +3645,7 @@ msgid "Do you really want to revoke this subkey? (y/N) "
 msgstr "паказаць сьпіс ключоў і ID карыстальнікаў"
 
 #: g10/keyedit.c:2098
-msgid ""
-"Owner trust may not be set while using an user provided trust database\n"
+msgid "Owner trust may not be set while using a user provided trust database\n"
 msgstr ""
 
 #: g10/keyedit.c:2140
@@ -4423,13 +4462,13 @@ msgstr ""
 msgid "Key generation failed: %s\n"
 msgstr ""
 
-#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:241
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
 msgstr ""
 
-#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:243
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
@@ -5023,17 +5062,17 @@ msgstr ""
 msgid "uncompressed|none"
 msgstr ""
 
-#: g10/misc.c:874
+#: g10/misc.c:891
 #, c-format
 msgid "this message may not be usable by %s\n"
 msgstr ""
 
-#: g10/misc.c:1049
+#: g10/misc.c:1066
 #, c-format
 msgid "ambiguous option `%s'\n"
 msgstr ""
 
-#: g10/misc.c:1074
+#: g10/misc.c:1091
 #, fuzzy, c-format
 msgid "unknown option `%s'\n"
 msgstr "невядомая вэрсыя"
@@ -5090,12 +5129,12 @@ msgstr ""
 msgid "subpacket of type %d has critical bit set\n"
 msgstr ""
 
-#: g10/passphrase.c:313 g10/passphrase.c:603
+#: g10/passphrase.c:295 g10/passphrase.c:581
 #, c-format
 msgid " (main key ID %s)"
 msgstr ""
 
-#: g10/passphrase.c:327
+#: g10/passphrase.c:309
 #, fuzzy, c-format
 msgid ""
 "You need a passphrase to unlock the secret key for user:\n"
@@ -5106,24 +5145,24 @@ msgstr ""
 "\"%.*s\"\n"
 "%u-бітавы %s ключ, ID %08lX, створаны %s%s\n"
 
-#: g10/passphrase.c:352
+#: g10/passphrase.c:334
 msgid "Repeat passphrase\n"
 msgstr "Паўтарыце пароль\n"
 
-#: g10/passphrase.c:354
+#: g10/passphrase.c:336
 msgid "Enter passphrase\n"
 msgstr "Увядзіце пароль\n"
 
-#: g10/passphrase.c:378
+#: g10/passphrase.c:363
 msgid "cancelled by user\n"
 msgstr "скасавана карыстальнікам\n"
 
-#: g10/passphrase.c:384 g10/passphrase.c:450
+#: g10/passphrase.c:369 g10/passphrase.c:428
 #, c-format
 msgid "problem with the agent: %s\n"
 msgstr ""
 
-#: g10/passphrase.c:582
+#: g10/passphrase.c:560
 #, fuzzy, c-format
 msgid ""
 "You need a passphrase to unlock the secret key for\n"
@@ -5133,12 +5172,12 @@ msgstr ""
 "Вам неабходна ўвесьці пароль, каб адчыніць сакрэтны ключ для\n"
 "карыстальніка: \""
 
-#: g10/passphrase.c:590
+#: g10/passphrase.c:568
 #, fuzzy, c-format
 msgid "%u-bit %s key, ID %s, created %s"
 msgstr "%u-бітавы %s ключ, ID %08lX, створаны %s"
 
-#: g10/passphrase.c:599
+#: g10/passphrase.c:577
 #, c-format
 msgid "         (subkey on main key ID %s)"
 msgstr ""
@@ -5728,69 +5767,53 @@ msgstr ""
 msgid "key %s: no subkey for subkey binding signature\n"
 msgstr ""
 
-#: g10/sign.c:82
-msgid "can't put notation data into v3 (PGP 2.x style) signatures\n"
-msgstr ""
-
-#: g10/sign.c:90
-msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n"
-msgstr ""
-
-#: g10/sign.c:104
+#: g10/sign.c:89
 #, c-format
 msgid "WARNING: unable to %%-expand notation (too large).  Using unexpanded.\n"
 msgstr ""
 
-#: g10/sign.c:121
-msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n"
-msgstr ""
-
-#: g10/sign.c:129
-msgid "can't put a policy URL into v3 key (PGP 2.x style) signatures\n"
-msgstr ""
-
-#: g10/sign.c:142
+#: g10/sign.c:115
 #, c-format
 msgid ""
 "WARNING: unable to %%-expand policy URL (too large).  Using unexpanded.\n"
 msgstr ""
 
-#: g10/sign.c:170
+#: g10/sign.c:138
 #, c-format
 msgid ""
 "WARNING: unable to %%-expand preferred keyserver URL (too large).  Using "
 "unexpanded.\n"
 msgstr ""
 
-#: g10/sign.c:343
+#: g10/sign.c:311
 #, c-format
 msgid "checking created signature failed: %s\n"
 msgstr ""
 
-#: g10/sign.c:352
+#: g10/sign.c:320
 #, fuzzy, c-format
 msgid "%s/%s signature from: \"%s\"\n"
 msgstr "нерэчаісны хэш-альгарытм \"%s\"\n"
 
-#: g10/sign.c:788
+#: g10/sign.c:758
 msgid "you can only detach-sign with PGP 2.x style keys while in --pgp2 mode\n"
 msgstr ""
 
-#: g10/sign.c:864
+#: g10/sign.c:834
 #, c-format
 msgid ""
 "WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n"
 msgstr ""
 
-#: g10/sign.c:991
+#: g10/sign.c:961
 msgid "signing:"
 msgstr ""
 
-#: g10/sign.c:1106
+#: g10/sign.c:1076
 msgid "you can only clearsign with PGP 2.x style keys while in --pgp2 mode\n"
 msgstr ""
 
-#: g10/sign.c:1290
+#: g10/sign.c:1260
 #, c-format
 msgid "%s encryption will be used\n"
 msgstr ""
@@ -6488,62 +6511,62 @@ msgstr ""
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr ""
 
-#: scd/scdaemon.c:108
+#: scd/scdaemon.c:105
 msgid "run in multi server mode (foreground)"
 msgstr ""
 
-#: scd/scdaemon.c:114 sm/gpgsm.c:361
+#: scd/scdaemon.c:111 sm/gpgsm.c:364
 msgid "read options from file"
 msgstr ""
 
-#: scd/scdaemon.c:124
+#: scd/scdaemon.c:121
 msgid "|N|connect to reader at port N"
 msgstr ""
 
-#: scd/scdaemon.c:125
+#: scd/scdaemon.c:122
 #, fuzzy
 msgid "|NAME|use NAME as ct-API driver"
 msgstr "|НАЗВА|     задаць назву дапомнага сакрэтнага ключа"
 
-#: scd/scdaemon.c:126
+#: scd/scdaemon.c:123
 #, fuzzy
 msgid "|NAME|use NAME as PC/SC driver"
 msgstr "|НАЗВА|     задаць назву дапомнага сакрэтнага ключа"
 
-#: scd/scdaemon.c:129
+#: scd/scdaemon.c:126
 msgid "do not use the internal CCID driver"
 msgstr ""
 
-#: scd/scdaemon.c:134
+#: scd/scdaemon.c:131
 msgid "do not use a reader's keypad"
 msgstr ""
 
-#: scd/scdaemon.c:135
+#: scd/scdaemon.c:132
 #, fuzzy
 msgid "allow the use of admin card commands"
 msgstr "несумяшчальныя загады\n"
 
-#: scd/scdaemon.c:209
+#: scd/scdaemon.c:210
 #, fuzzy
 msgid "Usage: scdaemon [options] (-h for help)"
 msgstr "Выкарыстаньне: gpg [выбары] [файлы] (-h для даведкі)"
 
-#: scd/scdaemon.c:211
+#: scd/scdaemon.c:212
 msgid ""
 "Syntax: scdaemon [options] [command [args]]\n"
 "Smartcard daemon for GnuPG\n"
 msgstr ""
 
-#: scd/scdaemon.c:658
+#: scd/scdaemon.c:668
 msgid "please use the option `--daemon' to run the program in the background\n"
 msgstr ""
 
-#: scd/scdaemon.c:1006
+#: scd/scdaemon.c:1022
 #, c-format
 msgid "handler for fd %d started\n"
 msgstr ""
 
-#: scd/scdaemon.c:1011
+#: scd/scdaemon.c:1028
 #, c-format
 msgid "handler for fd %d terminated\n"
 msgstr ""
@@ -6576,11 +6599,11 @@ msgstr ""
 msgid "validation model requested by certificate: %s"
 msgstr ""
 
-#: sm/certchain.c:195 sm/certchain.c:1631
+#: sm/certchain.c:195 sm/certchain.c:1646
 msgid "chain"
 msgstr ""
 
-#: sm/certchain.c:196 sm/certchain.c:1631
+#: sm/certchain.c:196 sm/certchain.c:1646
 #, fuzzy
 msgid "shell"
 msgstr "даведка (help)"
@@ -6621,8 +6644,8 @@ msgstr ""
 msgid "number of issuers matching: %d\n"
 msgstr ""
 
-#: sm/certchain.c:651 sm/certchain.c:1069 sm/certchain.c:1659 sm/decrypt.c:259
-#: sm/encrypt.c:341 sm/sign.c:327 sm/verify.c:105
+#: sm/certchain.c:651 sm/certchain.c:1069 sm/certchain.c:1674 sm/decrypt.c:259
+#: sm/encrypt.c:341 sm/sign.c:327 sm/verify.c:113
 #, fuzzy
 msgid "failed to allocated keyDB handle\n"
 msgstr "%s: немагчыма стварыць хэш-табліцу: %s\n"
@@ -6788,7 +6811,7 @@ msgstr ""
 msgid "certificate chain longer than allowed by CA (%d)"
 msgstr ""
 
-#: sm/certchain.c:1462 sm/certchain.c:1730
+#: sm/certchain.c:1462 sm/certchain.c:1745
 #, fuzzy
 msgid "certificate is good\n"
 msgstr "грамадскі ключ ня знойдзены"
@@ -6803,11 +6826,11 @@ msgstr "дрэнны сэртыфікат"
 msgid "root certificate is good\n"
 msgstr "дрэнны сэртыфікат"
 
-#: sm/certchain.c:1620
+#: sm/certchain.c:1635
 msgid "switching to chain model"
 msgstr ""
 
-#: sm/certchain.c:1629
+#: sm/certchain.c:1644
 #, c-format
 msgid "validation model used: %s"
 msgstr ""
@@ -6822,7 +6845,7 @@ msgstr ""
 msgid "a %u bit hash is not valid for a %u bit %s key\n"
 msgstr ""
 
-#: sm/certcheck.c:248 sm/sign.c:480 sm/verify.c:187
+#: sm/certcheck.c:248 sm/sign.c:480 sm/verify.c:198
 msgid "(this is the MD2 algorithm)\n"
 msgstr ""
 
@@ -6836,25 +6859,25 @@ msgstr "no [не]"
 msgid "[none]"
 msgstr "невядомая вэрсыя"
 
-#: sm/certdump.c:550 sm/certdump.c:595 sm/certdump.c:660 sm/certdump.c:713
+#: sm/certdump.c:583 sm/certdump.c:628 sm/certdump.c:693 sm/certdump.c:746
 #, fuzzy
 msgid "[Error - invalid encoding]"
 msgstr "паказаць ключы й адбіткі пальцаў"
 
-#: sm/certdump.c:558 sm/certdump.c:603
+#: sm/certdump.c:591 sm/certdump.c:636
 msgid "[Error - out of core]"
 msgstr ""
 
-#: sm/certdump.c:640 sm/certdump.c:696
+#: sm/certdump.c:673 sm/certdump.c:729
 msgid "[Error - No name]"
 msgstr ""
 
-#: sm/certdump.c:665 sm/certdump.c:719
+#: sm/certdump.c:698 sm/certdump.c:752
 #, fuzzy
 msgid "[Error - invalid DN]"
 msgstr "паказаць ключы й адбіткі пальцаў"
 
-#: sm/certdump.c:936
+#: sm/certdump.c:946
 #, fuzzy, c-format
 msgid ""
 "Please enter the passphrase to unlock the secret key for:\n"
@@ -6980,186 +7003,194 @@ msgstr "збой падпісаньня: %s\n"
 msgid "no valid recipients given\n"
 msgstr ""
 
-#: sm/gpgsm.c:244
+#: sm/gpgsm.c:246
 #, fuzzy
 msgid "|[FILE]|make a signature"
 msgstr "|[файл]|зрабіць подпіс"
 
-#: sm/gpgsm.c:245
+#: sm/gpgsm.c:247
 #, fuzzy
 msgid "|[FILE]|make a clear text signature"
 msgstr "|[файл]|зрабіць чысты тэкставы подпіс"
 
-#: sm/gpgsm.c:253
+#: sm/gpgsm.c:255
 #, fuzzy
 msgid "list external keys"
 msgstr "паказаць сакрэтныя ключы"
 
-#: sm/gpgsm.c:255
+#: sm/gpgsm.c:257
 #, fuzzy
 msgid "list certificate chain"
 msgstr "дрэнны сэртыфікат"
 
-#: sm/gpgsm.c:258
+#: sm/gpgsm.c:260
 #, fuzzy
 msgid "remove key from the public keyring"
 msgstr "выдаліць ключы са зьвязку грамадскіх ключоў"
 
-#: sm/gpgsm.c:261
+#: sm/gpgsm.c:263
 #, fuzzy
 msgid "import certificates"
 msgstr "дрэнны сэртыфікат"
 
-#: sm/gpgsm.c:262
+#: sm/gpgsm.c:264
 #, fuzzy
 msgid "export certificates"
 msgstr "дрэнны сэртыфікат"
 
-#: sm/gpgsm.c:263
+#: sm/gpgsm.c:265
 msgid "register a smartcard"
 msgstr ""
 
-#: sm/gpgsm.c:265
+#: sm/gpgsm.c:267
 msgid "pass a command to the dirmngr"
 msgstr ""
 
-#: sm/gpgsm.c:267
+#: sm/gpgsm.c:269
 msgid "invoke gpg-protect-tool"
 msgstr ""
 
-#: sm/gpgsm.c:268
+#: sm/gpgsm.c:270
 #, fuzzy
 msgid "change a passphrase"
 msgstr "дрэнны пароль"
 
-#: sm/gpgsm.c:283
+#: sm/gpgsm.c:285
 msgid "create base-64 encoded output"
 msgstr ""
 
-#: sm/gpgsm.c:287
+#: sm/gpgsm.c:289
 msgid "assume input is in PEM format"
 msgstr ""
 
-#: sm/gpgsm.c:289
+#: sm/gpgsm.c:291
 msgid "assume input is in base-64 format"
 msgstr ""
 
-#: sm/gpgsm.c:291
+#: sm/gpgsm.c:293
 msgid "assume input is in binary format"
 msgstr ""
 
-#: sm/gpgsm.c:296
+#: sm/gpgsm.c:298
 msgid "use system's dirmngr if available"
 msgstr ""
 
-#: sm/gpgsm.c:297
+#: sm/gpgsm.c:299
 msgid "never consult a CRL"
 msgstr ""
 
-#: sm/gpgsm.c:304
+#: sm/gpgsm.c:306
 msgid "check validity using OCSP"
 msgstr ""
 
-#: sm/gpgsm.c:309
+#: sm/gpgsm.c:311
 msgid "|N|number of certificates to include"
 msgstr ""
 
-#: sm/gpgsm.c:312
+#: sm/gpgsm.c:314
 msgid "|FILE|take policy information from FILE"
 msgstr ""
 
-#: sm/gpgsm.c:315
+#: sm/gpgsm.c:317
 msgid "do not check certificate policies"
 msgstr ""
 
-#: sm/gpgsm.c:319
+#: sm/gpgsm.c:321
 msgid "fetch missing issuer certificates"
 msgstr ""
 
-#: sm/gpgsm.c:323
+#: sm/gpgsm.c:325
 #, fuzzy
 msgid "|NAME|use NAME as default recipient"
 msgstr "|НАЗВА|     задаць назву дапомнага сакрэтнага ключа"
 
-#: sm/gpgsm.c:325
+#: sm/gpgsm.c:327
 msgid "use the default key as default recipient"
 msgstr ""
 
-#: sm/gpgsm.c:342
+#: sm/gpgsm.c:344
 msgid "don't use the terminal at all"
 msgstr ""
 
-#: sm/gpgsm.c:346
+#: sm/gpgsm.c:345
+msgid "|FILE|write a server mode log to FILE"
+msgstr ""
+
+#: sm/gpgsm.c:347
+msgid "|FILE|write an audit log to FILE"
+msgstr ""
+
+#: sm/gpgsm.c:349
 #, fuzzy
 msgid "force v3 signatures"
 msgstr "праверыць подпісы ключа"
 
-#: sm/gpgsm.c:347
+#: sm/gpgsm.c:350
 msgid "always use a MDC for encryption"
 msgstr "заўсёдвы выкарыстоўваць MDC для шыфраваньня"
 
-#: sm/gpgsm.c:352
+#: sm/gpgsm.c:355
 msgid "batch mode: never ask"
 msgstr ""
 
-#: sm/gpgsm.c:353
+#: sm/gpgsm.c:356
 msgid "assume yes on most questions"
 msgstr ""
 
-#: sm/gpgsm.c:354
+#: sm/gpgsm.c:357
 msgid "assume no on most questions"
 msgstr ""
 
-#: sm/gpgsm.c:356
+#: sm/gpgsm.c:359
 #, fuzzy
 msgid "add this keyring to the list of keyrings"
 msgstr "выдаліць ключы са зьвязку грамадскіх ключоў"
 
-#: sm/gpgsm.c:357
+#: sm/gpgsm.c:360
 msgid "add this secret keyring to the list"
 msgstr ""
 
-#: sm/gpgsm.c:358 tools/gpgconf-comp.c:647 tools/gpgconf-comp.c:709
+#: sm/gpgsm.c:361 tools/gpgconf-comp.c:645 tools/gpgconf-comp.c:707
 msgid "|NAME|use NAME as default secret key"
 msgstr "|НАЗВА|     задаць назву дапомнага сакрэтнага ключа"
 
-#: sm/gpgsm.c:359
+#: sm/gpgsm.c:362
 msgid "|HOST|use this keyserver to lookup keys"
 msgstr "|ВУЗЕЛ|     выкарыстоўваць гэты паслужнік для пошуку ключоў"
 
-#: sm/gpgsm.c:360
+#: sm/gpgsm.c:363
 msgid "|NAME|set terminal charset to NAME"
 msgstr "|НАЗВА|     усталяваць мноства знакаў тэрмінала"
 
-#: sm/gpgsm.c:364
+#: sm/gpgsm.c:367
 msgid "|LEVEL|set the debugging level to LEVEL"
 msgstr ""
 
-#: sm/gpgsm.c:379
+#: sm/gpgsm.c:382
 msgid "|FILE|load extension module FILE"
 msgstr ""
 
-#: sm/gpgsm.c:385
+#: sm/gpgsm.c:388
 #, fuzzy
 msgid "|NAME|use cipher algorithm NAME"
 msgstr "|ІМЯ|   зашыфраваць для вылучанай асобы"
 
-#: sm/gpgsm.c:387
+#: sm/gpgsm.c:390
 #, fuzzy
 msgid "|NAME|use message digest algorithm NAME"
 msgstr "нерэчаісны хэш-альгарытм \"%s\"\n"
 
-#: sm/gpgsm.c:389
+#: sm/gpgsm.c:392
 #, fuzzy
 msgid "|N|use compress algorithm N"
 msgstr "невядомы альгарытм сьцісканьня"
 
-#: sm/gpgsm.c:568
+#: sm/gpgsm.c:573
 #, fuzzy
 msgid "Usage: gpgsm [options] [files] (-h for help)"
 msgstr "Выкарыстаньне: gpg [выбары] [файлы] (-h для даведкі)"
 
-#: sm/gpgsm.c:571
+#: sm/gpgsm.c:576
 #, fuzzy
 msgid ""
 "Syntax: gpgsm [options] [files]\n"
@@ -7170,36 +7201,36 @@ msgstr ""
 "sign, check, encrypt ці decrypt\n"
 "Дапомнае дзеяньне залежыць ад уваходных даньняў\n"
 
-#: sm/gpgsm.c:650
+#: sm/gpgsm.c:703
 #, fuzzy
 msgid "usage: gpgsm [options] "
 msgstr "Выкарыстаньне: gpg [выбары] "
 
-#: sm/gpgsm.c:748
+#: sm/gpgsm.c:801
 #, fuzzy, c-format
 msgid "NOTE: won't be able to encrypt to `%s': %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: sm/gpgsm.c:759
+#: sm/gpgsm.c:812
 #, fuzzy, c-format
 msgid "unknown validation model `%s'\n"
 msgstr "невядомая вэрсыя"
 
-#: sm/gpgsm.c:1315
+#: sm/gpgsm.c:1372
 msgid "WARNING: running with faked system time: "
 msgstr ""
 
-#: sm/gpgsm.c:1411
+#: sm/gpgsm.c:1468
 #, c-format
 msgid "importing common certificates `%s'\n"
 msgstr ""
 
-#: sm/gpgsm.c:1429
+#: sm/gpgsm.c:1486
 #, fuzzy, c-format
 msgid "can't sign using `%s': %s\n"
 msgstr "немагчыма адкрыць %s: %s\n"
 
-#: sm/gpgsm.c:1612
+#: sm/gpgsm.c:1686
 msgid "this command has not yet been implemented\n"
 msgstr ""
 
@@ -7221,7 +7252,7 @@ msgstr ""
 msgid "error importing certificate: %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: sm/import.c:542 tools/gpg-connect-agent.c:374
+#: sm/import.c:542 tools/gpg-connect-agent.c:1274
 #, fuzzy, c-format
 msgid "error reading input: %s\n"
 msgstr "паказаць ключы й адбіткі пальцаў"
@@ -7284,17 +7315,17 @@ msgstr "памылка стварэньня \"%s\": %s\n"
 msgid "GPG_TTY has not been set - using maybe bogus default\n"
 msgstr ""
 
-#: sm/qualified.c:111
+#: sm/qualified.c:105
 #, fuzzy, c-format
 msgid "invalid formatted fingerprint in `%s', line %d\n"
 msgstr "паказаць ключы й адбіткі пальцаў"
 
-#: sm/qualified.c:129
+#: sm/qualified.c:123
 #, c-format
 msgid "invalid country code in `%s', line %d\n"
 msgstr ""
 
-#: sm/qualified.c:225
+#: sm/qualified.c:200
 #, c-format
 msgid ""
 "You are about to create a signature using your certificate:\n"
@@ -7305,13 +7336,13 @@ msgid ""
 "%s%sAre you really sure that you want to do this?"
 msgstr ""
 
-#: sm/qualified.c:234 sm/verify.c:536
+#: sm/qualified.c:209 sm/verify.c:580
 msgid ""
 "Note, that this software is not officially approved to create or verify such "
 "signatures.\n"
 msgstr ""
 
-#: sm/qualified.c:327
+#: sm/qualified.c:277
 #, c-format
 msgid ""
 "You are about to create a signature using your certificate:\n"
@@ -7324,290 +7355,307 @@ msgstr ""
 msgid "checking for qualified certificate failed: %s\n"
 msgstr ""
 
-#: sm/verify.c:388
+#: sm/verify.c:424
 #, fuzzy
 msgid "Signature made "
 msgstr "Подпіс створаны ў %.*s з выкарыстаньнем %s ID ключа %08lX\n"
 
-#: sm/verify.c:392
+#: sm/verify.c:428
 msgid "[date not given]"
 msgstr ""
 
-#: sm/verify.c:393
+#: sm/verify.c:429
 #, fuzzy, c-format
 msgid " using certificate ID 0x%08lX\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: sm/verify.c:514
+#: sm/verify.c:558
 #, fuzzy
 msgid "Good signature from"
 msgstr "нерэчаісны хэш-альгарытм \"%s\"\n"
 
-#: sm/verify.c:515
+#: sm/verify.c:559
 msgid "                aka"
 msgstr ""
 
-#: sm/verify.c:533
+#: sm/verify.c:577
 #, fuzzy
 msgid "This is a qualified signature\n"
 msgstr "паказаць сьпіс ключоў і подпісаў"
 
-#: tools/gpg-connect-agent.c:59 tools/gpgconf.c:70 tools/symcryptrun.c:165
+#: tools/gpg-connect-agent.c:67 tools/gpgconf.c:73 tools/symcryptrun.c:165
 #, fuzzy
 msgid "quiet"
 msgstr "quit [выйсьці]"
 
-#: tools/gpg-connect-agent.c:60
+#: tools/gpg-connect-agent.c:68
 msgid "print data out hex encoded"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:61
+#: tools/gpg-connect-agent.c:69
 msgid "decode received data lines"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:62
+#: tools/gpg-connect-agent.c:70
 msgid "|NAME|connect to Assuan socket NAME"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:63
+#: tools/gpg-connect-agent.c:71
 msgid "run the Assuan server given on the command line"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:65
+#: tools/gpg-connect-agent.c:73
 msgid "do not use extended connect mode"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:127
+#: tools/gpg-connect-agent.c:74
+msgid "|FILE|run commands from FILE on startup"
+msgstr ""
+
+#: tools/gpg-connect-agent.c:75
+msgid "run /subst on startup"
+msgstr ""
+
+#: tools/gpg-connect-agent.c:174
 #, fuzzy
 msgid "Usage: gpg-connect-agent [options] (-h for help)"
 msgstr "Выкарыстаньне: gpg [выбары] [файлы] (-h для даведкі)"
 
-#: tools/gpg-connect-agent.c:130
+#: tools/gpg-connect-agent.c:177
 msgid ""
 "Syntax: gpg-connect-agent [options]\n"
 "Connect to a running agent and send commands\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:314
+#: tools/gpg-connect-agent.c:1155
 #, c-format
 msgid "option \"%s\" requires a program and optional arguments\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:323
+#: tools/gpg-connect-agent.c:1164
 #, c-format
 msgid "option \"%s\" ignored due to \"%s\"\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:381
+#: tools/gpg-connect-agent.c:1219 tools/gpg-connect-agent.c:1645
+#, fuzzy, c-format
+msgid "receiving line failed: %s\n"
+msgstr "грамадскі ключ ня знойдзены"
+
+#: tools/gpg-connect-agent.c:1299
 #, fuzzy
 msgid "line too long - skipped\n"
 msgstr "пароль занадта доўгі\n"
 
-#: tools/gpg-connect-agent.c:385
+#: tools/gpg-connect-agent.c:1303
 msgid "line shortened due to embedded Nul character\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:457
+#: tools/gpg-connect-agent.c:1619
 #, fuzzy, c-format
 msgid "unknown command `%s'\n"
 msgstr "невядомая вэрсыя"
 
-#: tools/gpg-connect-agent.c:465
+#: tools/gpg-connect-agent.c:1637
 #, fuzzy, c-format
 msgid "sending line failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: tools/gpg-connect-agent.c:473
-#, fuzzy, c-format
-msgid "receiving line failed: %s\n"
-msgstr "грамадскі ключ ня знойдзены"
-
-#: tools/gpg-connect-agent.c:789
+#: tools/gpg-connect-agent.c:1986
 #, fuzzy, c-format
 msgid "error sending %s command: %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: tools/gpg-connect-agent.c:798
+#: tools/gpg-connect-agent.c:1995
 #, fuzzy, c-format
 msgid "error sending standard options: %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: tools/gpgconf-comp.c:461 tools/gpgconf-comp.c:565 tools/gpgconf-comp.c:632
-#: tools/gpgconf-comp.c:694 tools/gpgconf-comp.c:775
+#: tools/gpgconf-comp.c:459 tools/gpgconf-comp.c:563 tools/gpgconf-comp.c:630
+#: tools/gpgconf-comp.c:692 tools/gpgconf-comp.c:773
 msgid "Options controlling the diagnostic output"
 msgstr ""
 
-#: tools/gpgconf-comp.c:474 tools/gpgconf-comp.c:578 tools/gpgconf-comp.c:645
-#: tools/gpgconf-comp.c:707 tools/gpgconf-comp.c:798
+#: tools/gpgconf-comp.c:472 tools/gpgconf-comp.c:576 tools/gpgconf-comp.c:643
+#: tools/gpgconf-comp.c:705 tools/gpgconf-comp.c:796
 msgid "Options controlling the configuration"
 msgstr ""
 
-#: tools/gpgconf-comp.c:484 tools/gpgconf-comp.c:603 tools/gpgconf-comp.c:658
-#: tools/gpgconf-comp.c:726 tools/gpgconf-comp.c:805
+#: tools/gpgconf-comp.c:482 tools/gpgconf-comp.c:601 tools/gpgconf-comp.c:656
+#: tools/gpgconf-comp.c:724 tools/gpgconf-comp.c:803
 msgid "Options useful for debugging"
 msgstr ""
 
-#: tools/gpgconf-comp.c:489 tools/gpgconf-comp.c:608 tools/gpgconf-comp.c:663
-#: tools/gpgconf-comp.c:731 tools/gpgconf-comp.c:813
+#: tools/gpgconf-comp.c:487 tools/gpgconf-comp.c:606 tools/gpgconf-comp.c:661
+#: tools/gpgconf-comp.c:729 tools/gpgconf-comp.c:811
 msgid "|FILE|write server mode logs to FILE"
 msgstr ""
 
-#: tools/gpgconf-comp.c:497 tools/gpgconf-comp.c:613 tools/gpgconf-comp.c:739
+#: tools/gpgconf-comp.c:495 tools/gpgconf-comp.c:611 tools/gpgconf-comp.c:737
 msgid "Options controlling the security"
 msgstr ""
 
-#: tools/gpgconf-comp.c:504
+#: tools/gpgconf-comp.c:502
 msgid "|N|expire SSH keys after N seconds"
 msgstr ""
 
-#: tools/gpgconf-comp.c:508
+#: tools/gpgconf-comp.c:506
 msgid "|N|set maximum PIN cache lifetime to N seconds"
 msgstr ""
 
-#: tools/gpgconf-comp.c:512
+#: tools/gpgconf-comp.c:510
 msgid "|N|set maximum SSH key lifetime to N seconds"
 msgstr ""
 
-#: tools/gpgconf-comp.c:526
+#: tools/gpgconf-comp.c:524
 msgid "Options enforcing a passphrase policy"
 msgstr ""
 
-#: tools/gpgconf-comp.c:529
+#: tools/gpgconf-comp.c:527
 msgid "do not allow to bypass the passphrase policy"
 msgstr ""
 
-#: tools/gpgconf-comp.c:533
+#: tools/gpgconf-comp.c:531
 msgid "|N|set minimal required length for new passphrases to N"
 msgstr ""
 
-#: tools/gpgconf-comp.c:537
+#: tools/gpgconf-comp.c:535
 msgid "|N|require at least N non-alpha characters for a new passphrase"
 msgstr ""
 
-#: tools/gpgconf-comp.c:541
+#: tools/gpgconf-comp.c:539
 msgid "|FILE|check new passphrases against pattern in FILE"
 msgstr ""
 
-#: tools/gpgconf-comp.c:545
+#: tools/gpgconf-comp.c:543
 #, fuzzy
 msgid "|N|expire the passphrase after N days"
 msgstr ""
 "Увядзіце новы пароль для гэтага сакрэтнага ключа.\n"
 "\n"
 
-#: tools/gpgconf-comp.c:549
+#: tools/gpgconf-comp.c:547
 #, fuzzy
 msgid "do not allow the reuse of old passphrases"
 msgstr "Паўтарыце пароль\n"
 
-#: tools/gpgconf-comp.c:650 tools/gpgconf-comp.c:712
+#: tools/gpgconf-comp.c:648 tools/gpgconf-comp.c:710
 #, fuzzy
 msgid "|NAME|encrypt to user ID NAME as well"
 msgstr "|ІМЯ|   зашыфраваць для вылучанай асобы"
 
-#: tools/gpgconf-comp.c:671
+#: tools/gpgconf-comp.c:669
 msgid "Configuration for Keyservers"
 msgstr ""
 
-#: tools/gpgconf-comp.c:673
+#: tools/gpgconf-comp.c:671
 msgid "|URL|use keyserver at URL"
 msgstr ""
 
-#: tools/gpgconf-comp.c:676
+#: tools/gpgconf-comp.c:674
 msgid "allow PKA lookups (DNS requests)"
 msgstr ""
 
-#: tools/gpgconf-comp.c:721
+#: tools/gpgconf-comp.c:719
 msgid "|NAME|use encoding NAME for PKCS#12 passphrases"
 msgstr ""
 
-#: tools/gpgconf-comp.c:744
+#: tools/gpgconf-comp.c:742
 msgid "do not check CRLs for root certificates"
 msgstr ""
 
-#: tools/gpgconf-comp.c:788
+#: tools/gpgconf-comp.c:786
 msgid "Options controlling the format of the output"
 msgstr ""
 
-#: tools/gpgconf-comp.c:824
+#: tools/gpgconf-comp.c:822
 msgid "Options controlling the interactivity and enforcement"
 msgstr ""
 
-#: tools/gpgconf-comp.c:834
+#: tools/gpgconf-comp.c:832
 msgid "Configuration for HTTP servers"
 msgstr ""
 
-#: tools/gpgconf-comp.c:845
+#: tools/gpgconf-comp.c:843
 msgid "use system's HTTP proxy setting"
 msgstr ""
 
-#: tools/gpgconf-comp.c:850
+#: tools/gpgconf-comp.c:848
 msgid "Configuration of LDAP servers to use"
 msgstr ""
 
-#: tools/gpgconf-comp.c:887
+#: tools/gpgconf-comp.c:885
 msgid "Configuration for OCSP"
 msgstr ""
 
-#: tools/gpgconf-comp.c:2982
+#: tools/gpgconf-comp.c:3006
 msgid "Note that group specifications are ignored\n"
 msgstr ""
 
-#: tools/gpgconf.c:57
+#: tools/gpgconf.c:58
 msgid "list all components"
 msgstr ""
 
-#: tools/gpgconf.c:58
+#: tools/gpgconf.c:59
 msgid "check all programs"
 msgstr ""
 
-#: tools/gpgconf.c:59
+#: tools/gpgconf.c:60
 msgid "|COMPONENT|list options"
 msgstr ""
 
-#: tools/gpgconf.c:60
+#: tools/gpgconf.c:61
 msgid "|COMPONENT|change options"
 msgstr ""
 
-#: tools/gpgconf.c:62
+#: tools/gpgconf.c:63
 msgid "apply global default values"
 msgstr ""
 
-#: tools/gpgconf.c:64
+#: tools/gpgconf.c:65
+#, fuzzy
+msgid "list global configuration file"
+msgstr "невядомая вэрсыя"
+
+#: tools/gpgconf.c:67
 #, fuzzy
 msgid "check global configuration file"
 msgstr "невядомая вэрсыя"
 
-#: tools/gpgconf.c:72
+#: tools/gpgconf.c:71
+msgid "use as output file"
+msgstr "выкарыстоўваць у якасьці файла вываду"
+
+#: tools/gpgconf.c:75
 msgid "activate changes at runtime, if possible"
 msgstr ""
 
-#: tools/gpgconf.c:94
+#: tools/gpgconf.c:97
 #, fuzzy
 msgid "Usage: gpgconf [options] (-h for help)"
 msgstr "Выкарыстаньне: gpg [выбары] [файлы] (-h для даведкі)"
 
-#: tools/gpgconf.c:97
+#: tools/gpgconf.c:100
 msgid ""
 "Syntax: gpgconf [options]\n"
 "Manage configuration options for tools of the GnuPG system\n"
 msgstr ""
 
-#: tools/gpgconf.c:176 tools/gpgconf.c:209
+#: tools/gpgconf.c:202 tools/gpgconf.c:240
 #, fuzzy
 msgid "usage: gpgconf [options] "
 msgstr "Выкарыстаньне: gpg [выбары] "
 
-#: tools/gpgconf.c:178
+#: tools/gpgconf.c:204
 msgid "Need one component argument"
 msgstr ""
 
-#: tools/gpgconf.c:187
+#: tools/gpgconf.c:213
 #, fuzzy
 msgid "Component not found"
 msgstr "грамадскі ключ ня знойдзены"
 
-#: tools/gpgconf.c:211
+#: tools/gpgconf.c:242
 #, fuzzy
 msgid "No argument allowed"
 msgstr "сакрэтны ключ недаступны"
@@ -7700,87 +7748,87 @@ msgstr "памылка стварэньня \"%s\": %s\n"
 msgid "error closing %s: %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: tools/symcryptrun.c:515
+#: tools/symcryptrun.c:486
 msgid "no --program option provided\n"
 msgstr ""
 
-#: tools/symcryptrun.c:521
+#: tools/symcryptrun.c:492
 msgid "only --decrypt and --encrypt are supported\n"
 msgstr ""
 
-#: tools/symcryptrun.c:527
+#: tools/symcryptrun.c:498
 msgid "no --keyfile option provided\n"
 msgstr ""
 
-#: tools/symcryptrun.c:538
+#: tools/symcryptrun.c:509
 msgid "cannot allocate args vector\n"
 msgstr ""
 
-#: tools/symcryptrun.c:556
+#: tools/symcryptrun.c:527
 #, fuzzy, c-format
 msgid "could not create pipe: %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: tools/symcryptrun.c:563
+#: tools/symcryptrun.c:534
 #, fuzzy, c-format
 msgid "could not create pty: %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: tools/symcryptrun.c:579
+#: tools/symcryptrun.c:550
 #, c-format
 msgid "could not fork: %s\n"
 msgstr ""
 
-#: tools/symcryptrun.c:607
+#: tools/symcryptrun.c:578
 #, fuzzy, c-format
 msgid "execv failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: tools/symcryptrun.c:636
+#: tools/symcryptrun.c:607
 #, fuzzy, c-format
 msgid "select failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: tools/symcryptrun.c:653
+#: tools/symcryptrun.c:624
 #, fuzzy, c-format
 msgid "read failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: tools/symcryptrun.c:705
+#: tools/symcryptrun.c:676
 #, fuzzy, c-format
 msgid "pty read failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: tools/symcryptrun.c:757
+#: tools/symcryptrun.c:728
 #, fuzzy, c-format
 msgid "waitpid failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: tools/symcryptrun.c:771
+#: tools/symcryptrun.c:742
 #, c-format
 msgid "child aborted with status %i\n"
 msgstr ""
 
-#: tools/symcryptrun.c:826
+#: tools/symcryptrun.c:797
 #, fuzzy, c-format
 msgid "cannot allocate infile string: %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: tools/symcryptrun.c:839
+#: tools/symcryptrun.c:810
 #, fuzzy, c-format
 msgid "cannot allocate outfile string: %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: tools/symcryptrun.c:1014
+#: tools/symcryptrun.c:985
 #, c-format
 msgid "either %s or %s must be given\n"
 msgstr ""
 
-#: tools/symcryptrun.c:1041
+#: tools/symcryptrun.c:1012
 msgid "no class provided\n"
 msgstr ""
 
-#: tools/symcryptrun.c:1050
+#: tools/symcryptrun.c:1021
 #, fuzzy, c-format
 msgid "class %s is not supported\n"
 msgstr "непадтрымліваецца"
index 2636d4c..d40fadc 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -27,7 +27,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg 1.4.0\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-09-14 13:27+0200\n"
+"POT-Creation-Date: 2007-11-19 16:02+0100\n"
 "PO-Revision-Date: 2005-02-04 02:04+0100\n"
 "Last-Translator: Jordi Mallach <jordi@gnu.org>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -35,59 +35,75 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: agent/call-pinentry.c:196
+#: agent/call-pinentry.c:205
 #, fuzzy, c-format
 msgid "failed to acquire the pinentry lock: %s\n"
 msgstr "no s'ha pogut emmagatzemar l'empremta digital: %s\n"
 
-#: agent/call-pinentry.c:438
+#: agent/call-pinentry.c:548
 msgid ""
 "Please enter your PIN, so that the secret key can be unlocked for this "
 "session"
 msgstr ""
 
-#: agent/call-pinentry.c:441
+#: agent/call-pinentry.c:551
 #, fuzzy
 msgid ""
 "Please enter your passphrase, so that the secret key can be unlocked for "
 "this session"
 msgstr "Introduïu la contrasenya; aquesta ha de ser una frase secreta \n"
 
-#: agent/call-pinentry.c:489
+#. TRANSLATORS: This string is displayed pinentry as the label
+#. for the quality bar.
+#: agent/call-pinentry.c:586
+msgid "Quality:"
+msgstr ""
+
+#. TRANSLATORS: This string is a tooltip, shown by pinentry when
+#. hovering over the quality bar.  Please use an appropriate
+#. sting to describe what this is about.  The length of the
+#. tooltip is limited to about 900 characters.  If you do not
+#. translate this a default english string (see source) will be
+#. used.
+#: agent/call-pinentry.c:604
+msgid "pinentry.qualitybar.tooltip"
+msgstr ""
+
+#: agent/call-pinentry.c:647
 #, c-format
 msgid "SETERROR %s (try %d of %d)"
 msgstr ""
 
-#: agent/call-pinentry.c:509 agent/call-pinentry.c:521
+#: agent/call-pinentry.c:667 agent/call-pinentry.c:679
 #, fuzzy
 msgid "PIN too long"
 msgstr "la línia és massa llarga\n"
 
-#: agent/call-pinentry.c:510
+#: agent/call-pinentry.c:668
 #, fuzzy
 msgid "Passphrase too long"
 msgstr "la contrasenya és massa llarga\n"
 
-#: agent/call-pinentry.c:518
+#: agent/call-pinentry.c:676
 #, fuzzy
 msgid "Invalid characters in PIN"
 msgstr "Hi ha un caràcter invàlid en el camp *nom*\n"
 
-#: agent/call-pinentry.c:523
+#: agent/call-pinentry.c:681
 msgid "PIN too short"
 msgstr ""
 
-#: agent/call-pinentry.c:535
+#: agent/call-pinentry.c:693
 #, fuzzy
 msgid "Bad PIN"
 msgstr "l'MPI és erroni"
 
-#: agent/call-pinentry.c:536
+#: agent/call-pinentry.c:694
 #, fuzzy
 msgid "Bad Passphrase"
 msgstr "la contrasenya és errònia"
 
-#: agent/call-pinentry.c:572
+#: agent/call-pinentry.c:730
 #, fuzzy
 msgid "Passphrase"
 msgstr "la contrasenya és errònia"
@@ -97,21 +113,21 @@ msgstr "la contrasenya és errònia"
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr "l'algoritme de protecció %d%s no està suportat\n"
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3141
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1059 g10/keygen.c:3141
 #: g10/keygen.c:3174 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
-#: g10/openfile.c:368 g10/sign.c:828 g10/sign.c:1137 g10/tdbio.c:536
+#: g10/openfile.c:368 g10/sign.c:798 g10/sign.c:1107 g10/tdbio.c:536
 #, c-format
 msgid "can't create `%s': %s\n"
 msgstr "no s'ha pogut crear «%s»: %s\n"
 
 #: agent/command-ssh.c:700 g10/card-util.c:680 g10/card-util.c:749
 #: g10/dearmor.c:60 g10/dearmor.c:107 g10/decrypt.c:70 g10/encode.c:194
-#: g10/encode.c:504 g10/gpg.c:1010 g10/import.c:193 g10/keygen.c:2630
+#: g10/encode.c:504 g10/gpg.c:1060 g10/import.c:193 g10/keygen.c:2630
 #: g10/keyring.c:1532 g10/openfile.c:192 g10/openfile.c:353
-#: g10/plaintext.c:503 g10/sign.c:810 g10/sign.c:1005 g10/sign.c:1121
-#: g10/sign.c:1277 g10/tdbdump.c:139 g10/tdbdump.c:147 g10/tdbio.c:540
-#: g10/tdbio.c:603 g10/verify.c:99 g10/verify.c:162 sm/gpgsm.c:1865
-#: sm/gpgsm.c:1902 sm/gpgsm.c:1940 sm/qualified.c:72
+#: g10/plaintext.c:503 g10/sign.c:780 g10/sign.c:975 g10/sign.c:1091
+#: g10/sign.c:1247 g10/tdbdump.c:139 g10/tdbdump.c:147 g10/tdbio.c:540
+#: g10/tdbio.c:603 g10/verify.c:99 g10/verify.c:162 sm/gpgsm.c:1939
+#: sm/gpgsm.c:1976 sm/gpgsm.c:2014 sm/qualified.c:66
 #, c-format
 msgid "can't open `%s': %s\n"
 msgstr "no s'ha pogut obrir «%s»: %s\n"
@@ -153,14 +169,25 @@ msgstr "error mentre s'escrivia l'anell «%s»: %s\n"
 msgid "Please enter the passphrase for the ssh key%0A  %c"
 msgstr "Introduïu la contrasenya; aquesta ha de ser una frase secreta \n"
 
-#: agent/command-ssh.c:2349
+#: agent/command-ssh.c:2342 agent/genkey.c:308 agent/genkey.c:430
+#: agent/protect-tool.c:1197
+#, fuzzy
+msgid "Please re-enter this passphrase"
+msgstr "canvia la contrasenya"
+
+#: agent/command-ssh.c:2363
 #, c-format
 msgid ""
 "Please enter a passphrase to protect the received secret key%%0A   %s%%"
 "0Awithin gpg-agent's key storage"
 msgstr ""
 
-#: agent/command-ssh.c:2850
+#: agent/command-ssh.c:2401 agent/genkey.c:338 agent/genkey.c:461
+#: agent/protect-tool.c:1203 tools/symcryptrun.c:434
+msgid "does not match - try again"
+msgstr ""
+
+#: agent/command-ssh.c:2885
 #, fuzzy, c-format
 msgid "failed to create stream from socket: %s\n"
 msgstr "%s: no s'ha pogut crear la taula de dispersió: %s\n"
@@ -206,76 +233,66 @@ msgstr "Introduïu la contrasenya\n"
 msgid "Take this one anyway"
 msgstr "Voleu usar de tota manera aquesta clau?"
 
-#: agent/genkey.c:185
+#: agent/genkey.c:191
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Abe at least %u character long."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
+"at least %u character long."
 msgid_plural ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Abe at least %u characters long."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
+"at least %u characters long."
 msgstr[0] ""
 msgstr[1] ""
 
-#: agent/genkey.c:202
+#: agent/genkey.c:212
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Acontain at least %u digit or special character."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
+"contain at least %u digit or%%0Aspecial character."
 msgid_plural ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Acontain at least %u digits or special characters."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
+"contain at least %u digits or%%0Aspecial characters."
 msgstr[0] ""
 msgstr[1] ""
 
-#: agent/genkey.c:225
+#: agent/genkey.c:235
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%0Ais obviously not secure.  A "
-"passphrase may not%0Abe a known term or match certain pattern."
+"Warning: You have entered an insecure passphrase.%0AA passphrase may not be "
+"a known term or match%%0Acertain pattern."
 msgstr ""
 
-#: agent/genkey.c:238
+#: agent/genkey.c:251
 #, c-format
 msgid ""
 "You have not entered a passphrase!%0AAn empty passphrase is not allowed."
 msgstr ""
 
-#: agent/genkey.c:240
+#: agent/genkey.c:253
 #, c-format
 msgid ""
 "You have not entered a passphrase - this is in general a bad idea!%0APlease "
 "confirm that you do not want to have any protection on your key."
 msgstr ""
 
-#: agent/genkey.c:246
+#: agent/genkey.c:262
 msgid "Yes, protection is not needed"
 msgstr ""
 
-#: agent/genkey.c:290
+#: agent/genkey.c:306
 #, fuzzy, c-format
 msgid "Please enter the passphrase to%0Ato protect your new key"
 msgstr ""
 "Cal una contrasenya per a protegir la clau secreta.\n"
 "\n"
 
-#: agent/genkey.c:292 agent/genkey.c:413 agent/protect-tool.c:1219
-#, fuzzy
-msgid "Please re-enter this passphrase"
-msgstr "canvia la contrasenya"
-
-#: agent/genkey.c:321 agent/genkey.c:443 agent/protect-tool.c:1225
-#: tools/symcryptrun.c:456
-msgid "does not match - try again"
-msgstr ""
-
-#: agent/genkey.c:412
+#: agent/genkey.c:429
 #, fuzzy
 msgid "Please enter the new passphrase"
 msgstr "canvia la contrasenya"
 
-#: agent/gpg-agent.c:118 agent/preset-passphrase.c:72 agent/protect-tool.c:109
-#: scd/scdaemon.c:104
+#: agent/gpg-agent.c:117 agent/preset-passphrase.c:72 agent/protect-tool.c:109
+#: scd/scdaemon.c:101
 #, fuzzy
 msgid ""
 "@Options:\n"
@@ -285,68 +302,67 @@ msgstr ""
 "Opcions:\n"
 " "
 
-#: agent/gpg-agent.c:120 scd/scdaemon.c:106
+#: agent/gpg-agent.c:119 scd/scdaemon.c:103
 msgid "run in server mode (foreground)"
 msgstr ""
 
-#: agent/gpg-agent.c:121 scd/scdaemon.c:109
+#: agent/gpg-agent.c:120 scd/scdaemon.c:106
 msgid "run in daemon mode (background)"
 msgstr ""
 
 # Un dels dos és en la llista d'opcions amb --help. Urgh. jm
-#: agent/gpg-agent.c:122 g10/gpg.c:469 g10/gpgv.c:70 kbx/kbxutil.c:88
-#: scd/scdaemon.c:110 sm/gpgsm.c:340 tools/gpg-connect-agent.c:58
-#: tools/gpgconf.c:69 tools/symcryptrun.c:164
+#: agent/gpg-agent.c:121 g10/gpg.c:471 g10/gpgv.c:70 kbx/kbxutil.c:88
+#: scd/scdaemon.c:107 sm/gpgsm.c:342 tools/gpg-connect-agent.c:66
+#: tools/gpgconf.c:72 tools/symcryptrun.c:164
 msgid "verbose"
 msgstr "detall"
 
-#: agent/gpg-agent.c:123 g10/gpgv.c:71 kbx/kbxutil.c:89 scd/scdaemon.c:111
-#: sm/gpgsm.c:341
+#: agent/gpg-agent.c:122 g10/gpgv.c:71 kbx/kbxutil.c:89 scd/scdaemon.c:108
+#: sm/gpgsm.c:343
 msgid "be somewhat more quiet"
 msgstr "una mica més silenciós"
 
-#: agent/gpg-agent.c:124 scd/scdaemon.c:112
+#: agent/gpg-agent.c:123 scd/scdaemon.c:109
 msgid "sh-style command output"
 msgstr ""
 
-#: agent/gpg-agent.c:125 scd/scdaemon.c:113
+#: agent/gpg-agent.c:124 scd/scdaemon.c:110
 msgid "csh-style command output"
 msgstr ""
 
-#: agent/gpg-agent.c:126 tools/symcryptrun.c:167
+#: agent/gpg-agent.c:125 tools/symcryptrun.c:167
 #, fuzzy
 msgid "|FILE|read options from FILE"
 msgstr "|FITXER|carrega el mòdul d'extensió especificat"
 
-#: agent/gpg-agent.c:131 scd/scdaemon.c:122
+#: agent/gpg-agent.c:130 scd/scdaemon.c:119
 msgid "do not detach from the console"
 msgstr ""
 
-#: agent/gpg-agent.c:132
+#: agent/gpg-agent.c:131
 msgid "do not grab keyboard and mouse"
 msgstr ""
 
-#: agent/gpg-agent.c:133 scd/scdaemon.c:123 sm/gpgsm.c:343
-#: tools/symcryptrun.c:166
+#: agent/gpg-agent.c:132 scd/scdaemon.c:120 tools/symcryptrun.c:166
 #, fuzzy
 msgid "use a log file for the server"
 msgstr "cerca claus en un servidor de claus"
 
-#: agent/gpg-agent.c:135
+#: agent/gpg-agent.c:134
 #, fuzzy
 msgid "use a standard location for the socket"
 msgstr ""
 "Voleu actualitzar les preferències per a les ID d'usuaris seleccionades?"
 
-#: agent/gpg-agent.c:138
+#: agent/gpg-agent.c:137
 msgid "|PGM|use PGM as the PIN-Entry program"
 msgstr ""
 
-#: agent/gpg-agent.c:141
+#: agent/gpg-agent.c:140
 msgid "|PGM|use PGM as the SCdaemon program"
 msgstr ""
 
-#: agent/gpg-agent.c:142
+#: agent/gpg-agent.c:141
 #, fuzzy
 msgid "do not use the SCdaemon"
 msgstr "actualitza la base de dades de confiança"
@@ -384,150 +400,165 @@ msgstr ""
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
-#: agent/gpg-agent.c:273 agent/preset-passphrase.c:94 agent/protect-tool.c:146
-#: scd/scdaemon.c:206 sm/gpgsm.c:565 tools/gpg-connect-agent.c:124
-#: tools/gpgconf.c:91 tools/symcryptrun.c:204
+#: agent/gpg-agent.c:282 agent/preset-passphrase.c:94 agent/protect-tool.c:146
+#: scd/scdaemon.c:207 sm/gpgsm.c:570 tools/gpg-connect-agent.c:171
+#: tools/gpgconf.c:94 tools/symcryptrun.c:204
 #, fuzzy
 msgid "Please report bugs to <"
 msgstr "Si us plau, informeu sobre els errors a <gnupg-bugs@gnu.org>.\n"
 
-#: agent/gpg-agent.c:276
+#: agent/gpg-agent.c:285
 #, fuzzy
 msgid "Usage: gpg-agent [options] (-h for help)"
 msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
 
-#: agent/gpg-agent.c:278
+#: agent/gpg-agent.c:287
 msgid ""
 "Syntax: gpg-agent [options] [command [args]]\n"
 "Secret key management for GnuPG\n"
 msgstr ""
 
-#: agent/gpg-agent.c:313 g10/gpg.c:916 scd/scdaemon.c:246 sm/gpgsm.c:679
+#: agent/gpg-agent.c:322 g10/gpg.c:966 scd/scdaemon.c:247 sm/gpgsm.c:732
 #, c-format
 msgid "invalid debug-level `%s' given\n"
 msgstr ""
 
-#: agent/gpg-agent.c:512 agent/protect-tool.c:1066 kbx/kbxutil.c:428
-#: scd/scdaemon.c:340 sm/gpgsm.c:819 sm/gpgsm.c:822 tools/symcryptrun.c:1026
+#: agent/gpg-agent.c:521 agent/protect-tool.c:1066 kbx/kbxutil.c:428
+#: scd/scdaemon.c:342 sm/gpgsm.c:873 sm/gpgsm.c:876 tools/symcryptrun.c:997
 #, c-format
 msgid "%s is too old (need %s, have %s)\n"
 msgstr ""
 
-#: agent/gpg-agent.c:605 g10/gpg.c:2023 scd/scdaemon.c:416 sm/gpgsm.c:910
+#: agent/gpg-agent.c:620 g10/gpg.c:2072 scd/scdaemon.c:423 sm/gpgsm.c:964
 #, c-format
 msgid "NOTE: no default option file `%s'\n"
 msgstr "NOTA: no existeix el fitxer d'opcions predeterminades «%s»\n"
 
-#: agent/gpg-agent.c:610 agent/gpg-agent.c:1177 g10/gpg.c:2027
-#: scd/scdaemon.c:421 sm/gpgsm.c:914 tools/symcryptrun.c:959
+#: agent/gpg-agent.c:625 agent/gpg-agent.c:1205 g10/gpg.c:2076
+#: scd/scdaemon.c:428 sm/gpgsm.c:968 tools/symcryptrun.c:930
 #, c-format
 msgid "option file `%s': %s\n"
 msgstr "fitxer d'opcions «%s»: %s\n"
 
-#: agent/gpg-agent.c:618 g10/gpg.c:2034 scd/scdaemon.c:429 sm/gpgsm.c:921
+#: agent/gpg-agent.c:633 g10/gpg.c:2083 scd/scdaemon.c:436 sm/gpgsm.c:975
 #, c-format
 msgid "reading options from `%s'\n"
 msgstr "s'estan llegint opcions de «%s»\n"
 
-#: agent/gpg-agent.c:947 g10/plaintext.c:140 g10/plaintext.c:145
+#: agent/gpg-agent.c:965 g10/plaintext.c:140 g10/plaintext.c:145
 #: g10/plaintext.c:162
 #, c-format
 msgid "error creating `%s': %s\n"
 msgstr "error en crear «%s»: %s\n"
 
-#: agent/gpg-agent.c:1247 agent/gpg-agent.c:1373 agent/gpg-agent.c:1377
-#: agent/gpg-agent.c:1418 agent/gpg-agent.c:1422 g10/exec.c:172
-#: g10/openfile.c:429 scd/scdaemon.c:908
+#: agent/gpg-agent.c:1275 agent/gpg-agent.c:1387 agent/gpg-agent.c:1391
+#: agent/gpg-agent.c:1432 agent/gpg-agent.c:1436 g10/exec.c:172
+#: g10/openfile.c:429 scd/scdaemon.c:921
 #, c-format
 msgid "can't create directory `%s': %s\n"
 msgstr "no es pot crear el directori «%s»: %s\n"
 
-#: agent/gpg-agent.c:1261 scd/scdaemon.c:922
+#: agent/gpg-agent.c:1289 scd/scdaemon.c:935
 msgid "name of socket too long\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1287 scd/scdaemon.c:948
+#: agent/gpg-agent.c:1312 scd/scdaemon.c:958
 #, fuzzy, c-format
 msgid "can't create socket: %s\n"
 msgstr "no s'ha pogut crear «%s»: %s\n"
 
-#: agent/gpg-agent.c:1305 agent/gpg-agent.c:1321
+#: agent/gpg-agent.c:1321
+#, fuzzy, c-format
+msgid "socket name `%s' is too long\n"
+msgstr "Certificat de revocació vàlid"
+
+#: agent/gpg-agent.c:1333
 #, fuzzy
 msgid "a gpg-agent is already running - not starting a new one\n"
 msgstr "gpg-agent no està disponible en aquesta sessió\n"
 
-#: agent/gpg-agent.c:1335 scd/scdaemon.c:977
+#: agent/gpg-agent.c:1344 scd/scdaemon.c:978
+#, fuzzy
+msgid "error getting nonce for the socket\n"
+msgstr "error en crear «%s»: %s\n"
+
+#: agent/gpg-agent.c:1349 scd/scdaemon.c:981
 #, fuzzy, c-format
 msgid "error binding socket to `%s': %s\n"
 msgstr "error mentre s'enviava a «%s»: %s\n"
 
-#: agent/gpg-agent.c:1347 scd/scdaemon.c:985
+#: agent/gpg-agent.c:1361 scd/scdaemon.c:990
 #, fuzzy, c-format
 msgid "listen() failed: %s\n"
 msgstr "ha fallat l'actualització: %s\n"
 
-#: agent/gpg-agent.c:1353 scd/scdaemon.c:991
+#: agent/gpg-agent.c:1367 scd/scdaemon.c:997
 #, fuzzy, c-format
 msgid "listening on socket `%s'\n"
 msgstr "s'està escrivint la clau secreta a «%s»\n"
 
-#: agent/gpg-agent.c:1381 agent/gpg-agent.c:1428 g10/openfile.c:432
+#: agent/gpg-agent.c:1395 agent/gpg-agent.c:1442 g10/openfile.c:432
 #, fuzzy, c-format
 msgid "directory `%s' created\n"
 msgstr "%s: s'ha creat el directori\n"
 
-#: agent/gpg-agent.c:1434
+#: agent/gpg-agent.c:1448
 #, fuzzy, c-format
 msgid "stat() failed for `%s': %s\n"
 msgstr "base de dades de confiança: ha fallat la lectura (n=%d): %s\n"
 
-#: agent/gpg-agent.c:1438
+#: agent/gpg-agent.c:1452
 #, fuzzy, c-format
 msgid "can't use `%s' as home directory\n"
 msgstr "%s: no s'ha pogut crear el directori: %s\n"
 
-#: agent/gpg-agent.c:1549
+#: agent/gpg-agent.c:1562 scd/scdaemon.c:1013
+#, fuzzy, c-format
+msgid "error reading nonce on fd %d: %s\n"
+msgstr "error en la lectura de «%s»: %s\n"
+
+#: agent/gpg-agent.c:1584
 #, c-format
 msgid "handler 0x%lx for fd %d started\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1554
+#: agent/gpg-agent.c:1589
 #, c-format
 msgid "handler 0x%lx for fd %d terminated\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1571
+#: agent/gpg-agent.c:1609
 #, c-format
 msgid "ssh handler 0x%lx for fd %d started\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1576
+#: agent/gpg-agent.c:1614
 #, c-format
 msgid "ssh handler 0x%lx for fd %d terminated\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1680 scd/scdaemon.c:1117
+#: agent/gpg-agent.c:1718 scd/scdaemon.c:1135
 #, fuzzy, c-format
 msgid "pth_select failed: %s - waiting 1s\n"
 msgstr "ha fallat l'actualització de la clau secreta: %s\n"
 
-#: agent/gpg-agent.c:1786 scd/scdaemon.c:1184
+#: agent/gpg-agent.c:1827 scd/scdaemon.c:1202
 #, fuzzy, c-format
 msgid "%s %s stopped\n"
 msgstr "\t%lu claus es descarta\n"
 
-#: agent/gpg-agent.c:1809
+#: agent/gpg-agent.c:1850
 #, fuzzy
 msgid "no gpg-agent running in this session\n"
 msgstr "gpg-agent no està disponible en aquesta sessió\n"
 
-#: agent/gpg-agent.c:1820 common/simple-pwquery.c:329
-#: tools/gpg-connect-agent.c:756
+#: agent/gpg-agent.c:1861 common/simple-pwquery.c:329
+#: tools/gpg-connect-agent.c:1953
 msgid "malformed GPG_AGENT_INFO environment variable\n"
 msgstr "la variable d'entorn GPG_AGENT_INFO és malformada\n"
 
-#: agent/gpg-agent.c:1833 common/simple-pwquery.c:341
-#: tools/gpg-connect-agent.c:767
+#: agent/gpg-agent.c:1874 common/simple-pwquery.c:341
+#: tools/gpg-connect-agent.c:1964
 #, c-format
 msgid "gpg-agent protocol version %d is not supported\n"
 msgstr "la versió %d del protocol de gpg-agent no està suportada\n"
@@ -554,40 +585,40 @@ msgid ""
 "Secret key maintenance tool\n"
 msgstr ""
 
-#: agent/protect-tool.c:1210
+#: agent/protect-tool.c:1188
 #, fuzzy
 msgid "Please enter the passphrase to unprotect the PKCS#12 object."
 msgstr "Introduïu la contrasenya; aquesta ha de ser una frase secreta \n"
 
-#: agent/protect-tool.c:1213
+#: agent/protect-tool.c:1191
 #, fuzzy
 msgid "Please enter the passphrase to protect the new PKCS#12 object."
 msgstr "Introduïu la contrasenya; aquesta ha de ser una frase secreta \n"
 
-#: agent/protect-tool.c:1216
+#: agent/protect-tool.c:1194
 msgid ""
 "Please enter the passphrase to protect the imported object within the GnuPG "
 "system."
 msgstr ""
 
-#: agent/protect-tool.c:1221
+#: agent/protect-tool.c:1199
 #, fuzzy
 msgid ""
 "Please enter the passphrase or the PIN\n"
 "needed to complete this operation."
 msgstr "Introduïu la contrasenya; aquesta ha de ser una frase secreta \n"
 
-#: agent/protect-tool.c:1226 tools/symcryptrun.c:457
+#: agent/protect-tool.c:1204 tools/symcryptrun.c:435
 #, fuzzy
 msgid "Passphrase:"
 msgstr "la contrasenya és errònia"
 
-#: agent/protect-tool.c:1240 tools/symcryptrun.c:471
+#: agent/protect-tool.c:1212 tools/symcryptrun.c:442
 #, fuzzy, c-format
 msgid "error while asking for the passphrase: %s\n"
 msgstr "error en la creació de la contrasenya: %s\n"
 
-#: agent/protect-tool.c:1243 tools/symcryptrun.c:475
+#: agent/protect-tool.c:1215 tools/symcryptrun.c:446
 #, fuzzy
 msgid "cancelled\n"
 msgstr "Cancel·la"
@@ -700,7 +731,8 @@ msgstr "canvia la contrasenya"
 msgid "I'll change it later"
 msgstr ""
 
-#: common/exechelp.c:371 common/exechelp.c:459 tools/gpgconf-comp.c:1340
+#: common/exechelp.c:371 common/exechelp.c:459 tools/gpgconf-comp.c:1338
+#: tools/gpgconf-comp.c:1641
 #, fuzzy, c-format
 msgid "error creating a pipe: %s\n"
 msgstr "error en la creació de la contrasenya: %s\n"
@@ -852,80 +884,85 @@ msgstr ""
 msgid "out of core while allocating %lu bytes"
 msgstr ""
 
-#: g10/armor.c:366
+#: g10/armor.c:379
 #, c-format
 msgid "armor: %s\n"
 msgstr "armadura: %s\n"
 
-#: g10/armor.c:405
+#: g10/armor.c:418
 msgid "invalid armor header: "
 msgstr "la capçalera d'armadura és invàlida: "
 
-#: g10/armor.c:416
+#: g10/armor.c:429
 msgid "armor header: "
 msgstr "capçalera d'armadura: "
 
-#: g10/armor.c:427
+#: g10/armor.c:442
 msgid "invalid clearsig header\n"
 msgstr "la capçalera de signatura clara és invàlida\n"
 
+#: g10/armor.c:455
+#, fuzzy
+msgid "unknown armor header: "
+msgstr "capçalera d'armadura: "
+
 # És un missatge d'error?  ivb
 # «Anidada» és un castellanisme.  Niuades?  Imbricades (SC)??  ivb
-#: g10/armor.c:479
+#: g10/armor.c:508
 msgid "nested clear text signatures\n"
 msgstr "signatures en text pla imbricades\n"
 
 # FIXME: un-indiar. jm
-#: g10/armor.c:614
+#: g10/armor.c:643
 #, fuzzy
 msgid "unexpected armor: "
 msgstr "armadura inesperada:"
 
-#: g10/armor.c:626
+#: g10/armor.c:655
 msgid "invalid dash escaped line: "
 msgstr "la línia escapada amb guió és invàlida: "
 
-#: g10/armor.c:780 g10/armor.c:1390
+#: g10/armor.c:809 g10/armor.c:1419
 #, fuzzy, c-format
 msgid "invalid radix64 character %02X skipped\n"
 msgstr "el caràcter radix64 %02x invàlid s'ha omés\n"
 
-#: g10/armor.c:823
+#: g10/armor.c:852
 msgid "premature eof (no CRC)\n"
 msgstr "fi de fitxer prematur (no CRC)\n"
 
-#: g10/armor.c:857
+#: g10/armor.c:886
 msgid "premature eof (in CRC)\n"
 msgstr "fi de fitxer prematur (en CRC)\n"
 
-#: g10/armor.c:865
+#: g10/armor.c:894
 msgid "malformed CRC\n"
 msgstr "CRC malformat\n"
 
-#: g10/armor.c:869 g10/armor.c:1427
+#: g10/armor.c:898 g10/armor.c:1456
 #, fuzzy, c-format
 msgid "CRC error; %06lX - %06lX\n"
 msgstr "error de CRC; %06lx - %06lx\n"
 
-#: g10/armor.c:889
+#: g10/armor.c:918
 #, fuzzy
 msgid "premature eof (in trailer)\n"
 msgstr "fí de fitxer prematur (al final)\n"
 
-#: g10/armor.c:893
+#: g10/armor.c:922
 msgid "error in trailer line\n"
 msgstr "error en l'última línia\n"
 
-#: g10/armor.c:1204
+#: g10/armor.c:1233
 msgid "no valid OpenPGP data found.\n"
 msgstr "no s'han trobat dades OpenPGP vàlides.\n"
 
-#: g10/armor.c:1209
+#: g10/armor.c:1238
 #, c-format
 msgid "invalid armor: line longer than %d characters\n"
 msgstr "l'armadura és invàlida: la línia és més llarga que %d caràcters\n"
 
-#: g10/armor.c:1213
+#: g10/armor.c:1242
 msgid ""
 "quoted printable character in armor - probably a buggy MTA has been used\n"
 msgstr ""
@@ -1272,11 +1309,11 @@ msgstr ""
 msgid "Invalid command  (try \"help\")\n"
 msgstr "L'ordre no és vàlida (proveu «help»)\n"
 
-#: g10/decrypt.c:110 g10/encode.c:890
+#: g10/decrypt.c:110 g10/encode.c:876
 msgid "--output doesn't work for this command\n"
 msgstr "--output no funciona per a aquesta ordre\n"
 
-#: g10/decrypt.c:166 g10/gpg.c:3858 g10/keyring.c:376 g10/keyring.c:663
+#: g10/decrypt.c:166 g10/gpg.c:3931 g10/keyring.c:376 g10/keyring.c:663
 #, c-format
 msgid "can't open `%s'\n"
 msgstr "no s'ha pogut obrir «%s»\n"
@@ -1287,7 +1324,7 @@ msgstr "no s'ha pogut obrir «%s»\n"
 msgid "key \"%s\" not found: %s\n"
 msgstr "no s'ha trobat la clau «%s»: %s\n"
 
-#: g10/delkey.c:81 g10/export.c:354 g10/import.c:2355 g10/keyserver.c:1733
+#: g10/delkey.c:81 g10/export.c:354 g10/import.c:2367 g10/keyserver.c:1733
 #: g10/revoke.c:232 g10/revoke.c:477
 #, c-format
 msgid "error reading keyblock: %s\n"
@@ -1332,7 +1369,7 @@ msgstr "hi ha una clau secreta per a la clau pública «%s»!\n"
 msgid "use option \"--delete-secret-keys\" to delete it first.\n"
 msgstr "utilitzeu l'opció «--delete-secret-keys» per a eliminar-la primer.\n"
 
-#: g10/encode.c:226 g10/sign.c:1296
+#: g10/encode.c:226 g10/sign.c:1266
 #, c-format
 msgid "error creating passphrase: %s\n"
 msgstr "error en la creació de la contrasenya: %s\n"
@@ -1351,7 +1388,7 @@ msgstr "Ha fallat el procés de signatura: %s\n"
 msgid "`%s' already compressed\n"
 msgstr "«%s» ja està comprimida\n"
 
-#: g10/encode.c:311 g10/encode.c:625 g10/sign.c:593
+#: g10/encode.c:311 g10/encode.c:611 g10/sign.c:561
 #, c-format
 msgid "WARNING: `%s' is an empty file\n"
 msgstr "AVÍS: «%s» és un fitxer buit\n"
@@ -1380,7 +1417,7 @@ msgid ""
 msgstr ""
 "forçar el xifrat asimètric %s (%d) viola les preferències del destinatari\n"
 
-#: g10/encode.c:669 g10/sign.c:966
+#: g10/encode.c:655 g10/sign.c:936
 #, fuzzy, c-format
 msgid ""
 "WARNING: forcing compression algorithm %s (%d) violates recipient "
@@ -1389,18 +1426,18 @@ msgstr ""
 "forçar l'algoritme de compressió %s (%d) viola les preferències del "
 "destinatari\n"
 
-#: g10/encode.c:765
+#: g10/encode.c:751
 #, c-format
 msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
 msgstr ""
 "forçar el xifrat asimètric %s (%d) viola les preferències del destinatari\n"
 
-#: g10/encode.c:835 g10/pkclist.c:813 g10/pkclist.c:861
+#: g10/encode.c:821 g10/pkclist.c:813 g10/pkclist.c:861
 #, c-format
 msgid "you may not use %s while in %s mode\n"
 msgstr "no podeu usar %s mentre esteu en mode %s\n"
 
-#: g10/encode.c:862
+#: g10/encode.c:848
 #, c-format
 msgid "%s/%s encrypted for: \"%s\"\n"
 msgstr "%s/%s xifrat per a: «%s»\n"
@@ -1597,7 +1634,7 @@ msgstr "s'usarà la clau secundària %08lX en lloc de la primària %08lX\n"
 msgid "key %s: secret key without public key - skipped\n"
 msgstr "clau %08lX: clau secreta sense clau pública - es descarta\n"
 
-#: g10/gpg.c:368 kbx/kbxutil.c:71 sm/gpgsm.c:242 tools/gpgconf.c:55
+#: g10/gpg.c:370 kbx/kbxutil.c:71 sm/gpgsm.c:244 tools/gpgconf.c:56
 msgid ""
 "@Commands:\n"
 " "
@@ -1605,135 +1642,135 @@ msgstr ""
 "@Ordres:\n"
 " "
 
-#: g10/gpg.c:370
+#: g10/gpg.c:372
 msgid "|[file]|make a signature"
 msgstr "|[fitxer]|crea una signatura"
 
-#: g10/gpg.c:371
+#: g10/gpg.c:373
 msgid "|[file]|make a clear text signature"
 msgstr "|[fitxer]|crea una signatura en text clar"
 
-#: g10/gpg.c:372 sm/gpgsm.c:246
+#: g10/gpg.c:374 sm/gpgsm.c:248
 msgid "make a detached signature"
 msgstr "crea una signatura separada"
 
-#: g10/gpg.c:373 sm/gpgsm.c:247
+#: g10/gpg.c:375 sm/gpgsm.c:249
 msgid "encrypt data"
 msgstr "xifra dades"
 
-#: g10/gpg.c:375 sm/gpgsm.c:248
+#: g10/gpg.c:377 sm/gpgsm.c:250
 msgid "encryption only with symmetric cipher"
 msgstr "xifra només amb xifratge simètric"
 
-#: g10/gpg.c:377 sm/gpgsm.c:249
+#: g10/gpg.c:379 sm/gpgsm.c:251
 msgid "decrypt data (default)"
 msgstr "desxifra dades (predeterminat)"
 
-#: g10/gpg.c:379 sm/gpgsm.c:250
+#: g10/gpg.c:381 sm/gpgsm.c:252
 msgid "verify a signature"
 msgstr "verifica una signatura"
 
-#: g10/gpg.c:381 sm/gpgsm.c:252
+#: g10/gpg.c:383 sm/gpgsm.c:254
 msgid "list keys"
 msgstr "llista claus"
 
-#: g10/gpg.c:383
+#: g10/gpg.c:385
 msgid "list keys and signatures"
 msgstr "llista claus i signatures"
 
 # «de les claus» o «de la clau»?  ivb
-#: g10/gpg.c:384
+#: g10/gpg.c:386
 #, fuzzy
 msgid "list and check key signatures"
 msgstr "comprova les signatures de la claus"
 
 # «dactilars» o «digitals»?  ivb
-#: g10/gpg.c:385 sm/gpgsm.c:256
+#: g10/gpg.c:387 sm/gpgsm.c:258
 msgid "list keys and fingerprints"
 msgstr "llista claus i empremtes digitals"
 
-#: g10/gpg.c:386 sm/gpgsm.c:254
+#: g10/gpg.c:388 sm/gpgsm.c:256
 msgid "list secret keys"
 msgstr "llista claus secretes"
 
-#: g10/gpg.c:387
+#: g10/gpg.c:389
 msgid "generate a new key pair"
 msgstr "genera un nou parell de claus"
 
-#: g10/gpg.c:388
+#: g10/gpg.c:390
 msgid "remove keys from the public keyring"
 msgstr "elimina claus de l'anell públic"
 
-#: g10/gpg.c:390
+#: g10/gpg.c:392
 msgid "remove keys from the secret keyring"
 msgstr "elimina claus de l'anell secret"
 
-#: g10/gpg.c:391
+#: g10/gpg.c:393
 msgid "sign a key"
 msgstr "signa una clau"
 
-#: g10/gpg.c:392
+#: g10/gpg.c:394
 msgid "sign a key locally"
 msgstr "signa una clau localment"
 
-#: g10/gpg.c:393
+#: g10/gpg.c:395
 msgid "sign or edit a key"
 msgstr "signa o edita una clau"
 
-#: g10/gpg.c:394
+#: g10/gpg.c:396
 msgid "generate a revocation certificate"
 msgstr "genera un certificat de revocació"
 
-#: g10/gpg.c:396
+#: g10/gpg.c:398
 msgid "export keys"
 msgstr "exporta claus"
 
-#: g10/gpg.c:397 sm/gpgsm.c:259
+#: g10/gpg.c:399 sm/gpgsm.c:261
 msgid "export keys to a key server"
 msgstr "exporta claus a un servidor de claus"
 
-#: g10/gpg.c:398 sm/gpgsm.c:260
+#: g10/gpg.c:400 sm/gpgsm.c:262
 msgid "import keys from a key server"
 msgstr "importa claus d'un servidor de claus"
 
-#: g10/gpg.c:400
+#: g10/gpg.c:402
 msgid "search for keys on a key server"
 msgstr "cerca claus en un servidor de claus"
 
-#: g10/gpg.c:402
+#: g10/gpg.c:404
 msgid "update all keys from a keyserver"
 msgstr "actualitza totes les claus des d'un servidor de claus"
 
-#: g10/gpg.c:406
+#: g10/gpg.c:408
 msgid "import/merge keys"
 msgstr "importa/fon claus"
 
-#: g10/gpg.c:409
+#: g10/gpg.c:411
 msgid "print the card status"
 msgstr ""
 
-#: g10/gpg.c:410
+#: g10/gpg.c:412
 msgid "change data on a card"
 msgstr ""
 
-#: g10/gpg.c:411
+#: g10/gpg.c:413
 msgid "change a card's PIN"
 msgstr ""
 
-#: g10/gpg.c:420
+#: g10/gpg.c:422
 msgid "update the trust database"
 msgstr "actualitza la base de dades de confiança"
 
-#: g10/gpg.c:427
+#: g10/gpg.c:429
 msgid "|algo [files]|print message digests"
 msgstr "|algo [fitxers]|imprimeix resums de missatges"
 
-#: g10/gpg.c:430 sm/gpgsm.c:264
+#: g10/gpg.c:432 sm/gpgsm.c:266
 msgid "run in server mode"
 msgstr ""
 
-#: g10/gpg.c:432 g10/gpgv.c:68 kbx/kbxutil.c:81 sm/gpgsm.c:279
-#: tools/gpg-connect-agent.c:56 tools/gpgconf.c:66 tools/symcryptrun.c:157
+#: g10/gpg.c:434 g10/gpgv.c:68 kbx/kbxutil.c:81 sm/gpgsm.c:281
+#: tools/gpg-connect-agent.c:64 tools/gpgconf.c:69 tools/symcryptrun.c:157
 msgid ""
 "@\n"
 "Options:\n"
@@ -1743,47 +1780,48 @@ msgstr ""
 "Opcions:\n"
 " "
 
-#: g10/gpg.c:434 sm/gpgsm.c:281
+#: g10/gpg.c:436 sm/gpgsm.c:283
 msgid "create ascii armored output"
 msgstr "crea eixida amb armadura ascii"
 
-#: g10/gpg.c:436 sm/gpgsm.c:293
+#: g10/gpg.c:438 sm/gpgsm.c:295
 msgid "|NAME|encrypt for NAME"
 msgstr "|NOM|xifra per a NOM"
 
-#: g10/gpg.c:447 sm/gpgsm.c:331
+#: g10/gpg.c:449 sm/gpgsm.c:333
 msgid "use this user-id to sign or decrypt"
 msgstr "usa aquest id per a signar o desxifrar"
 
-#: g10/gpg.c:448 sm/gpgsm.c:334
+#: g10/gpg.c:450 sm/gpgsm.c:336
 msgid "|N|set compress level N (0 disables)"
 msgstr "|N|nivell de compressió N (0 no comprimeix)"
 
-#: g10/gpg.c:453 sm/gpgsm.c:336
+#: g10/gpg.c:455 sm/gpgsm.c:338
 msgid "use canonical text mode"
 msgstr "usa el mode de text canònic"
 
-#: g10/gpg.c:467 sm/gpgsm.c:339 tools/gpgconf.c:68
-msgid "use as output file"
-msgstr "fitxer d'eixida"
+#: g10/gpg.c:469 sm/gpgsm.c:341
+#, fuzzy
+msgid "|FILE|write output to FILE"
+msgstr "|FITXER|carrega el mòdul d'extensió especificat"
 
-#: g10/gpg.c:480 kbx/kbxutil.c:90 sm/gpgsm.c:349 tools/gpgconf.c:71
+#: g10/gpg.c:482 kbx/kbxutil.c:90 sm/gpgsm.c:352 tools/gpgconf.c:74
 msgid "do not make any changes"
 msgstr "no fa cap canvi"
 
-#: g10/gpg.c:481
+#: g10/gpg.c:483
 msgid "prompt before overwriting"
 msgstr "pregunta abans de sobreescriure"
 
-#: g10/gpg.c:523
+#: g10/gpg.c:526
 msgid "use strict OpenPGP behavior"
 msgstr ""
 
-#: g10/gpg.c:524
+#: g10/gpg.c:527
 msgid "generate PGP 2.x compatible messages"
 msgstr ""
 
-#: g10/gpg.c:553 sm/gpgsm.c:397
+#: g10/gpg.c:556 sm/gpgsm.c:400
 msgid ""
 "@\n"
 "(See the man page for a complete listing of all commands and options)\n"
@@ -1794,7 +1832,7 @@ msgstr ""
 # Crec q (A)lice (orig.), (B)ob (dest.), etc. són noms usats pel Zimmerman
 # en el manual original de PGP.  A, B, C...  ivb
 # En efecte. Idem per a Mallory més endavant. Els deixe com a l'original. jm
-#: g10/gpg.c:556 sm/gpgsm.c:400
+#: g10/gpg.c:559 sm/gpgsm.c:403
 msgid ""
 "@\n"
 "Examples:\n"
@@ -1814,15 +1852,15 @@ msgstr ""
 " --list-keys [noms]         mostra claus\n"
 " --fingerprint [noms]       mostra empremtes digitals\n"
 
-#: g10/gpg.c:750 g10/gpgv.c:95
+#: g10/gpg.c:755 g10/gpgv.c:95
 msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
 msgstr "Si us plau, informeu sobre els errors a <gnupg-bugs@gnu.org>.\n"
 
-#: g10/gpg.c:767
+#: g10/gpg.c:772
 msgid "Usage: gpg [options] [files] (-h for help)"
 msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
 
-#: g10/gpg.c:770
+#: g10/gpg.c:775
 msgid ""
 "Syntax: gpg [options] [files]\n"
 "sign, check, encrypt or decrypt\n"
@@ -1837,7 +1875,7 @@ msgstr ""
 # Precissament acabem de parlar d'«implementat a la llista del GNOME
 # i s'ha dit que és erroni, igual que «suportat» :) Les alternatives
 # encara no m'agraden massa... jm
-#: g10/gpg.c:781 sm/gpgsm.c:578
+#: g10/gpg.c:786 sm/gpgsm.c:583
 msgid ""
 "\n"
 "Supported algorithms:\n"
@@ -1845,566 +1883,570 @@ msgstr ""
 "\n"
 "Algoritmes suportats:\n"
 
-#: g10/gpg.c:784
+#: g10/gpg.c:789
 msgid "Pubkey: "
 msgstr "Clau pública: "
 
-#: g10/gpg.c:791 g10/keyedit.c:2321
+#: g10/gpg.c:796 g10/keyedit.c:2321
 msgid "Cipher: "
 msgstr "Xifratge: "
 
-#: g10/gpg.c:798
+#: g10/gpg.c:803
 msgid "Hash: "
 msgstr "Dispersió: "
 
-#: g10/gpg.c:805 g10/keyedit.c:2365
+#: g10/gpg.c:810 g10/keyedit.c:2365
 msgid "Compression: "
 msgstr "Compressió: "
 
-#: g10/gpg.c:875
+#: g10/gpg.c:817 sm/gpgsm.c:603
+msgid "Used libraries:"
+msgstr ""
+
+#: g10/gpg.c:925
 msgid "usage: gpg [options] "
 msgstr "forma d'ús: gpg [opcions] "
 
-#: g10/gpg.c:1045 sm/gpgsm.c:715
+#: g10/gpg.c:1095 sm/gpgsm.c:768
 msgid "conflicting commands\n"
 msgstr "les ordres entren en conflicte\n"
 
-#: g10/gpg.c:1063
+#: g10/gpg.c:1113
 #, c-format
 msgid "no = sign found in group definition `%s'\n"
 msgstr "no s'ha trobat cap signe = a la definició de grup «%s»\n"
 
 # Indi. ivb
-#: g10/gpg.c:1260
+#: g10/gpg.c:1310
 #, fuzzy, c-format
 msgid "WARNING: unsafe ownership on homedir `%s'\n"
 msgstr "AVÍS: el propietari és insegur en %s «%s»\n"
 
 # Indi. ivb
-#: g10/gpg.c:1263
+#: g10/gpg.c:1313
 #, fuzzy, c-format
 msgid "WARNING: unsafe ownership on configuration file `%s'\n"
 msgstr "AVÍS: el propietari és insegur en %s «%s»\n"
 
 # Indi. ivb
-#: g10/gpg.c:1266
+#: g10/gpg.c:1316
 #, fuzzy, c-format
 msgid "WARNING: unsafe ownership on extension `%s'\n"
 msgstr "AVÍS: el propietari és insegur en %s «%s»\n"
 
-#: g10/gpg.c:1272
+#: g10/gpg.c:1322
 #, fuzzy, c-format
 msgid "WARNING: unsafe permissions on homedir `%s'\n"
 msgstr "AVÍS: els permissos són insegurs en %s «%s»\n"
 
-#: g10/gpg.c:1275
+#: g10/gpg.c:1325
 #, fuzzy, c-format
 msgid "WARNING: unsafe permissions on configuration file `%s'\n"
 msgstr "AVÍS: els permissos són insegurs en %s «%s»\n"
 
-#: g10/gpg.c:1278
+#: g10/gpg.c:1328
 #, fuzzy, c-format
 msgid "WARNING: unsafe permissions on extension `%s'\n"
 msgstr "AVÍS: els permissos són insegurs en %s «%s»\n"
 
-#: g10/gpg.c:1284
+#: g10/gpg.c:1334
 #, fuzzy, c-format
 msgid "WARNING: unsafe enclosing directory ownership on homedir `%s'\n"
 msgstr "AVÍS: el propietari del directori envoltant és insegur en %s «%s»\n"
 
-#: g10/gpg.c:1287
+#: g10/gpg.c:1337
 #, fuzzy, c-format
 msgid ""
 "WARNING: unsafe enclosing directory ownership on configuration file `%s'\n"
 msgstr "AVÍS: el propietari del directori envoltant és insegur en %s «%s»\n"
 
-#: g10/gpg.c:1290
+#: g10/gpg.c:1340
 #, fuzzy, c-format
 msgid "WARNING: unsafe enclosing directory ownership on extension `%s'\n"
 msgstr "AVÍS: el propietari del directori envoltant és insegur en %s «%s»\n"
 
-#: g10/gpg.c:1296
+#: g10/gpg.c:1346
 #, fuzzy, c-format
 msgid "WARNING: unsafe enclosing directory permissions on homedir `%s'\n"
 msgstr "AVÍS: els permissos del directori envoltant són insegurs en %s «%s»\n"
 
-#: g10/gpg.c:1299
+#: g10/gpg.c:1349
 #, fuzzy, c-format
 msgid ""
 "WARNING: unsafe enclosing directory permissions on configuration file `%s'\n"
 msgstr "AVÍS: els permissos del directori envoltant són insegurs en %s «%s»\n"
 
-#: g10/gpg.c:1302
+#: g10/gpg.c:1352
 #, fuzzy, c-format
 msgid "WARNING: unsafe enclosing directory permissions on extension `%s'\n"
 msgstr "AVÍS: els permissos del directori envoltant són insegurs en %s «%s»\n"
 
-#: g10/gpg.c:1445
+#: g10/gpg.c:1495
 #, fuzzy, c-format
 msgid "unknown configuration item `%s'\n"
 msgstr "s'ha creat el nou fitxer d'opcions «%s»\n"
 
-#: g10/gpg.c:1540
+#: g10/gpg.c:1590
 msgid "display photo IDs during key listings"
 msgstr ""
 
-#: g10/gpg.c:1542
+#: g10/gpg.c:1592
 msgid "show policy URLs during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1544
+#: g10/gpg.c:1594
 #, fuzzy
 msgid "show all notations during signature listings"
 msgstr "No hi ha cap signatura corresponent en l'anell secret\n"
 
-#: g10/gpg.c:1546
+#: g10/gpg.c:1596
 msgid "show IETF standard notations during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1550
+#: g10/gpg.c:1600
 msgid "show user-supplied notations during signature listings"
 msgstr ""
 
-#: g10/gpg.c:1552
+#: g10/gpg.c:1602
 #, fuzzy
 msgid "show preferred keyserver URLs during signature listings"
 msgstr "la URL de política de signatura donada no és vàlida\n"
 
-#: g10/gpg.c:1554
+#: g10/gpg.c:1604
 msgid "show user ID validity during key listings"
 msgstr ""
 
-#: g10/gpg.c:1556
+#: g10/gpg.c:1606
 msgid "show revoked and expired user IDs in key listings"
 msgstr ""
 
-#: g10/gpg.c:1558
+#: g10/gpg.c:1608
 msgid "show revoked and expired subkeys in key listings"
 msgstr ""
 
-#: g10/gpg.c:1560
+#: g10/gpg.c:1610
 #, fuzzy
 msgid "show the keyring name in key listings"
 msgstr "mostra en quin anell de claus està una clau llistada"
 
-#: g10/gpg.c:1562
+#: g10/gpg.c:1612
 #, fuzzy
 msgid "show expiration dates during signature listings"
 msgstr "No hi ha cap signatura corresponent en l'anell secret\n"
 
-#: g10/gpg.c:1825
+#: g10/gpg.c:1875
 #, c-format
 msgid "libgcrypt is too old (need %s, have %s)\n"
 msgstr ""
 
-#: g10/gpg.c:1981
+#: g10/gpg.c:2030
 #, c-format
 msgid "NOTE: old default options file `%s' ignored\n"
 msgstr "NOTA: es descarta el fitxer d'opcions predeterminades antic «%s»\n"
 
-#: g10/gpg.c:2241 g10/gpg.c:2882 g10/gpg.c:2894
+#: g10/gpg.c:2290 g10/gpg.c:2955 g10/gpg.c:2967
 #, c-format
 msgid "NOTE: %s is not for normal use!\n"
 msgstr "NOTA: %s no és per a ús normal!\n"
 
-#: g10/gpg.c:2399 g10/gpg.c:2411
+#: g10/gpg.c:2471 g10/gpg.c:2483
 #, fuzzy, c-format
 msgid "`%s' is not a valid signature expiration\n"
 msgstr "%s no és un joc de caràcters vàlid\n"
 
-#: g10/gpg.c:2493
+#: g10/gpg.c:2565
 #, fuzzy, c-format
 msgid "`%s' is not a valid character set\n"
 msgstr "%s no és un joc de caràcters vàlid\n"
 
-#: g10/gpg.c:2516 g10/gpg.c:2711 g10/keyedit.c:4084
+#: g10/gpg.c:2588 g10/gpg.c:2783 g10/keyedit.c:4084
 #, fuzzy
 msgid "could not parse keyserver URL\n"
 msgstr "no s'ha pogut analitzar sintàcticament la URI del servidor de claus\n"
 
-#: g10/gpg.c:2528
+#: g10/gpg.c:2600
 #, fuzzy, c-format
 msgid "%s:%d: invalid keyserver options\n"
 msgstr "%s:%d opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2531
+#: g10/gpg.c:2603
 #, fuzzy
 msgid "invalid keyserver options\n"
 msgstr "opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2538
+#: g10/gpg.c:2610
 #, c-format
 msgid "%s:%d: invalid import options\n"
 msgstr "%s:%d: opcions d'importanció no vàlides\n"
 
-#: g10/gpg.c:2541
+#: g10/gpg.c:2613
 msgid "invalid import options\n"
 msgstr "opcions d'importació no vàlides\n"
 
-#: g10/gpg.c:2548
+#: g10/gpg.c:2620
 #, c-format
 msgid "%s:%d: invalid export options\n"
 msgstr "%s:%d opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2551
+#: g10/gpg.c:2623
 msgid "invalid export options\n"
 msgstr "opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2558
+#: g10/gpg.c:2630
 #, fuzzy, c-format
 msgid "%s:%d: invalid list options\n"
 msgstr "%s:%d: opcions d'importanció no vàlides\n"
 
-#: g10/gpg.c:2561
+#: g10/gpg.c:2633
 #, fuzzy
 msgid "invalid list options\n"
 msgstr "opcions d'importació no vàlides\n"
 
-#: g10/gpg.c:2569
+#: g10/gpg.c:2641
 msgid "display photo IDs during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2571
+#: g10/gpg.c:2643
 msgid "show policy URLs during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2573
+#: g10/gpg.c:2645
 #, fuzzy
 msgid "show all notations during signature verification"
 msgstr "%s no és un joc de caràcters vàlid\n"
 
-#: g10/gpg.c:2575
+#: g10/gpg.c:2647
 msgid "show IETF standard notations during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2579
+#: g10/gpg.c:2651
 msgid "show user-supplied notations during signature verification"
 msgstr ""
 
-#: g10/gpg.c:2581
+#: g10/gpg.c:2653
 #, fuzzy
 msgid "show preferred keyserver URLs during signature verification"
 msgstr "la URL de política de signatura donada no és vàlida\n"
 
-#: g10/gpg.c:2583
+#: g10/gpg.c:2655
 #, fuzzy
 msgid "show user ID validity during signature verification"
 msgstr "%s no és un joc de caràcters vàlid\n"
 
-#: g10/gpg.c:2585
+#: g10/gpg.c:2657
 msgid "show revoked and expired user IDs in signature verification"
 msgstr ""
 
-#: g10/gpg.c:2587
+#: g10/gpg.c:2659
 #, fuzzy
 msgid "show only the primary user ID in signature verification"
 msgstr "%s no és un joc de caràcters vàlid\n"
 
-#: g10/gpg.c:2589
+#: g10/gpg.c:2661
 msgid "validate signatures with PKA data"
 msgstr ""
 
-#: g10/gpg.c:2591
+#: g10/gpg.c:2663
 msgid "elevate the trust of signatures with valid PKA data"
 msgstr ""
 
-#: g10/gpg.c:2598
+#: g10/gpg.c:2670
 #, fuzzy, c-format
 msgid "%s:%d: invalid verify options\n"
 msgstr "%s:%d opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2601
+#: g10/gpg.c:2673
 #, fuzzy
 msgid "invalid verify options\n"
 msgstr "opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2608
+#: g10/gpg.c:2680
 #, c-format
 msgid "unable to set exec-path to %s\n"
 msgstr "no s'ha pogut fixar l'exec-path a %s\n"
 
-#: g10/gpg.c:2782
+#: g10/gpg.c:2855
 #, fuzzy, c-format
 msgid "%s:%d: invalid auto-key-locate list\n"
 msgstr "%s:%d opcions d'exportació no vàlides\n"
 
-#: g10/gpg.c:2785
+#: g10/gpg.c:2858
 msgid "invalid auto-key-locate list\n"
 msgstr ""
 
-#: g10/gpg.c:2871 sm/gpgsm.c:1298
+#: g10/gpg.c:2944 sm/gpgsm.c:1355
 msgid "WARNING: program may create a core file!\n"
 msgstr "AVÍS: el programa podria crear un fitxer core!\n"
 
 # FIXME: preferència? jm
 # Ho discutírem en la llista, segur.  Deu ser als arxius.  ivb
-#: g10/gpg.c:2875
+#: g10/gpg.c:2948
 #, c-format
 msgid "WARNING: %s overrides %s\n"
 msgstr "AVÍS: %s té preferència sobre %s\n"
 
-#: g10/gpg.c:2884
+#: g10/gpg.c:2957
 #, c-format
 msgid "%s not allowed with %s!\n"
 msgstr "%s no és permés amb %s!\n"
 
-#: g10/gpg.c:2887
+#: g10/gpg.c:2960
 #, c-format
 msgid "%s makes no sense with %s!\n"
 msgstr "%s no té sentit amb %s!\n"
 
-#: g10/gpg.c:2902
+#: g10/gpg.c:2975
 #, fuzzy, c-format
 msgid "will not run with insecure memory due to %s\n"
 msgstr "s'està escrivint la clau secreta a «%s»\n"
 
 # clares -> en clar?  ivb
-#: g10/gpg.c:2916
+#: g10/gpg.c:2989
 msgid "you can only make detached or clear signatures while in --pgp2 mode\n"
 msgstr "només podeu fer signatures separades o en clar en el mode --pgp2\n"
 
-#: g10/gpg.c:2922
+#: g10/gpg.c:2995
 msgid "you can't sign and encrypt at the same time while in --pgp2 mode\n"
 msgstr "no podeu signar i xifrar al mateix temps en el mode --pgp2\n"
 
-#: g10/gpg.c:2928
+#: g10/gpg.c:3001
 msgid "you must use files (and not a pipe) when working with --pgp2 enabled.\n"
 msgstr ""
 "heu d'utilitzar fitxers (i no un conducte) mentre treballeu amb --pgp2 "
 "habilitat.\n"
 
-#: g10/gpg.c:2941
+#: g10/gpg.c:3014
 msgid "encrypting a message in --pgp2 mode requires the IDEA cipher\n"
 msgstr "xifrar un missatge en mode --pgp2 requereix el xifratge IDEA\n"
 
-#: g10/gpg.c:3007 g10/gpg.c:3031 sm/gpgsm.c:1370
+#: g10/gpg.c:3080 g10/gpg.c:3104 sm/gpgsm.c:1427
 msgid "selected cipher algorithm is invalid\n"
 msgstr "l'algorisme de xifratge triat no és vàlid\n"
 
-#: g10/gpg.c:3013 g10/gpg.c:3037 sm/gpgsm.c:1378
+#: g10/gpg.c:3086 g10/gpg.c:3110 sm/gpgsm.c:1435
 msgid "selected digest algorithm is invalid\n"
 msgstr "l'algorisme de resum seleccionat no és vàlid\n"
 
-#: g10/gpg.c:3019
+#: g10/gpg.c:3092
 #, fuzzy
 msgid "selected compression algorithm is invalid\n"
 msgstr "l'algorisme de xifratge triat no és vàlid\n"
 
-#: g10/gpg.c:3025
+#: g10/gpg.c:3098
 msgid "selected certification digest algorithm is invalid\n"
 msgstr "l'algorisme de resum de certificació seleccionat no és vàlid\n"
 
-#: g10/gpg.c:3040
+#: g10/gpg.c:3113
 msgid "completes-needed must be greater than 0\n"
 msgstr "completes-needed ha de ser major que 0\n"
 
-#: g10/gpg.c:3042
+#: g10/gpg.c:3115
 msgid "marginals-needed must be greater than 1\n"
 msgstr "marginals-needed ha de ser major que 1\n"
 
-#: g10/gpg.c:3044
+#: g10/gpg.c:3117
 #, fuzzy
 msgid "max-cert-depth must be in the range from 1 to 255\n"
 msgstr "max-cert-depth ha d'estar en el rang 1 a 255\n"
 
-#: g10/gpg.c:3046
+#: g10/gpg.c:3119
 #, fuzzy
 msgid "invalid default-cert-level; must be 0, 1, 2, or 3\n"
 msgstr "default-check-level és invàlid; ha de ser 0, 1, 2 o 3\n"
 
-#: g10/gpg.c:3048
+#: g10/gpg.c:3121
 #, fuzzy
 msgid "invalid min-cert-level; must be 1, 2, or 3\n"
 msgstr "default-check-level és invàlid; ha de ser 0, 1, 2 o 3\n"
 
-#: g10/gpg.c:3051
+#: g10/gpg.c:3124
 msgid "NOTE: simple S2K mode (0) is strongly discouraged\n"
 msgstr "NOTA: el mode S2K simple (0) no és gens recomanable\n"
 
-#: g10/gpg.c:3055
+#: g10/gpg.c:3128
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
 msgstr "el mode S2K és invàlid; ha de ser 0, 1 o 3\n"
 
-#: g10/gpg.c:3062
+#: g10/gpg.c:3135
 msgid "invalid default preferences\n"
 msgstr "les preferències per defecte són invàlides\n"
 
-#: g10/gpg.c:3071
+#: g10/gpg.c:3144
 msgid "invalid personal cipher preferences\n"
 msgstr "les preferències personals de xifrat són invàlides\n"
 
-#: g10/gpg.c:3075
+#: g10/gpg.c:3148
 msgid "invalid personal digest preferences\n"
 msgstr "les preferències personals de digest són invàlides\n"
 
-#: g10/gpg.c:3079
+#: g10/gpg.c:3152
 msgid "invalid personal compress preferences\n"
 msgstr "les preferències personals de compressió són invàlides\n"
 
-#: g10/gpg.c:3112
+#: g10/gpg.c:3185
 #, c-format
 msgid "%s does not yet work with %s\n"
 msgstr "%s encara no funciona amb %s\n"
 
-#: g10/gpg.c:3159
+#: g10/gpg.c:3232
 #, fuzzy, c-format
 msgid "you may not use cipher algorithm `%s' while in %s mode\n"
 msgstr "no podeu usar l'algorisme de xifratge «%s» mentre esteu en mode %s\n"
 
-#: g10/gpg.c:3164
+#: g10/gpg.c:3237
 #, fuzzy, c-format
 msgid "you may not use digest algorithm `%s' while in %s mode\n"
 msgstr "no podeu usar l'algorisme de resum %s mentre esteu en mode %s\n"
 
-#: g10/gpg.c:3169
+#: g10/gpg.c:3242
 #, fuzzy, c-format
 msgid "you may not use compression algorithm `%s' while in %s mode\n"
 msgstr "no podeu usar l'algorisme de compressió %s mentre esteu en mode %s\n"
 
-#: g10/gpg.c:3261
+#: g10/gpg.c:3334
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
 msgstr "no s'ha pogut inicialitzar la base de dades de confiança: %s\n"
 
-#: g10/gpg.c:3272
+#: g10/gpg.c:3345
 msgid "WARNING: recipients (-r) given without using public key encryption\n"
 msgstr ""
 "AVÍS: s'han donat destinataris (-r) sense usar xifratge de clau pública\n"
 
-#: g10/gpg.c:3293
+#: g10/gpg.c:3366
 msgid "--store [filename]"
 msgstr "--store [nom_del_fitxer]"
 
-#: g10/gpg.c:3300
+#: g10/gpg.c:3373
 msgid "--symmetric [filename]"
 msgstr "--symmetric [nom_del_fitxer]"
 
-#: g10/gpg.c:3302
+#: g10/gpg.c:3375
 #, fuzzy, c-format
 msgid "symmetric encryption of `%s' failed: %s\n"
 msgstr "ha fallat el desxifratge: %s\n"
 
-#: g10/gpg.c:3312
+#: g10/gpg.c:3385
 msgid "--encrypt [filename]"
 msgstr "--encrypt [nom_del_fitxer]"
 
-#: g10/gpg.c:3325
+#: g10/gpg.c:3398
 #, fuzzy
 msgid "--symmetric --encrypt [filename]"
 msgstr "--sign --encrypt [nom_del_fitxer]"
 
-#: g10/gpg.c:3327
+#: g10/gpg.c:3400
 msgid "you cannot use --symmetric --encrypt with --s2k-mode 0\n"
 msgstr ""
 
-#: g10/gpg.c:3330
+#: g10/gpg.c:3403
 #, fuzzy, c-format
 msgid "you cannot use --symmetric --encrypt while in %s mode\n"
 msgstr "no podeu usar %s mentre esteu en mode %s\n"
 
-#: g10/gpg.c:3348
+#: g10/gpg.c:3421
 msgid "--sign [filename]"
 msgstr "--sign [nom_del_fitxer]"
 
-#: g10/gpg.c:3361
+#: g10/gpg.c:3434
 msgid "--sign --encrypt [filename]"
 msgstr "--sign --encrypt [nom_del_fitxer]"
 
-#: g10/gpg.c:3376
+#: g10/gpg.c:3449
 #, fuzzy
 msgid "--symmetric --sign --encrypt [filename]"
 msgstr "--sign --encrypt [nom_del_fitxer]"
 
-#: g10/gpg.c:3378
+#: g10/gpg.c:3451
 msgid "you cannot use --symmetric --sign --encrypt with --s2k-mode 0\n"
 msgstr ""
 
-#: g10/gpg.c:3381
+#: g10/gpg.c:3454
 #, fuzzy, c-format
 msgid "you cannot use --symmetric --sign --encrypt while in %s mode\n"
 msgstr "no podeu usar %s mentre esteu en mode %s\n"
 
-#: g10/gpg.c:3401
+#: g10/gpg.c:3474
 msgid "--sign --symmetric [filename]"
 msgstr "--sign --symmetric [nom_del_fitxer]"
 
-#: g10/gpg.c:3410
+#: g10/gpg.c:3483
 msgid "--clearsign [filename]"
 msgstr "--clearsign [nom_del_fitxer]"
 
-#: g10/gpg.c:3435
+#: g10/gpg.c:3508
 msgid "--decrypt [filename]"
 msgstr "--decrypt [nom_del_fitxer]"
 
-#: g10/gpg.c:3443
+#: g10/gpg.c:3516
 msgid "--sign-key user-id"
 msgstr "--sign-key user-id"
 
-#: g10/gpg.c:3447
+#: g10/gpg.c:3520
 msgid "--lsign-key user-id"
 msgstr "--lsign-key user-id"
 
-#: g10/gpg.c:3468
+#: g10/gpg.c:3541
 msgid "--edit-key user-id [commands]"
 msgstr "--edit-key user-id [ordres]"
 
-#: g10/gpg.c:3553
+#: g10/gpg.c:3626
 #, c-format
 msgid "keyserver send failed: %s\n"
 msgstr "l'enviament al servidor de claus ha fallat: %s\n"
 
-#: g10/gpg.c:3555
+#: g10/gpg.c:3628
 #, c-format
 msgid "keyserver receive failed: %s\n"
 msgstr "la recepció des del servidor de claus ha fallat: %s\n"
 
-#: g10/gpg.c:3557
+#: g10/gpg.c:3630
 #, c-format
 msgid "key export failed: %s\n"
 msgstr "l'exportació de la clau ha fallat: %s\n"
 
-#: g10/gpg.c:3568
+#: g10/gpg.c:3641
 #, c-format
 msgid "keyserver search failed: %s\n"
 msgstr "ha fallat la cerca al servidor de claus: %s\n"
 
-#: g10/gpg.c:3578
+#: g10/gpg.c:3651
 #, c-format
 msgid "keyserver refresh failed: %s\n"
 msgstr "ha fallat el refresc des del servidor de claus: %s\n"
 
-#: g10/gpg.c:3629
+#: g10/gpg.c:3702
 #, c-format
 msgid "dearmoring failed: %s\n"
 msgstr "no s'ha pogut llevar l'armadura: %s\n"
 
-#: g10/gpg.c:3637
+#: g10/gpg.c:3710
 #, c-format
 msgid "enarmoring failed: %s\n"
 msgstr "no s'ha pogut crear l'armadura: %s\n"
 
-#: g10/gpg.c:3727
+#: g10/gpg.c:3800
 #, c-format
 msgid "invalid hash algorithm `%s'\n"
 msgstr "l'algoritme de dispersió és invàlid «%s»\n"
 
-#: g10/gpg.c:3844
+#: g10/gpg.c:3917
 msgid "[filename]"
 msgstr "[nom_del_fitxer]"
 
-#: g10/gpg.c:3848
+#: g10/gpg.c:3921
 msgid "Go ahead and type your message ...\n"
 msgstr "Endavant, escriviu el missatge...\n"
 
-#: g10/gpg.c:4160
+#: g10/gpg.c:4233
 msgid "the given certification policy URL is invalid\n"
 msgstr "la URL de política de certificació donada no és vàlida\n"
 
-#: g10/gpg.c:4162
+#: g10/gpg.c:4235
 msgid "the given signature policy URL is invalid\n"
 msgstr "la URL de política de signatura donada no és vàlida\n"
 
-#: g10/gpg.c:4195
+#: g10/gpg.c:4268
 #, fuzzy
 msgid "the given preferred keyserver URL is invalid\n"
 msgstr "la URL de política de signatura donada no és vàlida\n"
@@ -2417,7 +2459,7 @@ msgstr "pren les claus d'aquest anell"
 msgid "make timestamp conflicts only a warning"
 msgstr "fes els conflictes de marques de temps només un avís"
 
-#: g10/gpgv.c:75 sm/gpgsm.c:372
+#: g10/gpgv.c:75 sm/gpgsm.c:375
 msgid "|FD|write status info to this FD"
 msgstr "|FD|escriu informació d'estat en aquest FD"
 
@@ -2958,13 +3000,13 @@ msgstr "clau %08lX: clau nova - es descarta \n"
 msgid "no writable keyring found: %s\n"
 msgstr "no s'ha trobat cap anell escrivible: %s\n"
 
-#: g10/import.c:808 g10/openfile.c:278 g10/sign.c:832 g10/sign.c:1141
+#: g10/import.c:808 g10/openfile.c:278 g10/sign.c:802 g10/sign.c:1111
 #, c-format
 msgid "writing to `%s'\n"
 msgstr "s'està escrivint en «%s»\n"
 
 #: g10/import.c:812 g10/import.c:907 g10/import.c:1164 g10/import.c:1307
-#: g10/import.c:2369 g10/import.c:2391
+#: g10/import.c:2381 g10/import.c:2403
 #, c-format
 msgid "error writing keyring `%s': %s\n"
 msgstr "error mentre s'escrivia l'anell «%s»: %s\n"
@@ -3054,7 +3096,7 @@ msgstr "clau %08lX: clau secreta amb xifrat %d no vàlid - es descarta\n"
 msgid "importing secret keys not allowed\n"
 msgstr "s'està escrivint la clau secreta a «%s»\n"
 
-#: g10/import.c:1158 g10/import.c:2384
+#: g10/import.c:1158 g10/import.c:2396
 #, c-format
 msgid "no default secret keyring: %s\n"
 msgstr "no hi ha anell secret predeterminat: %s\n"
@@ -3187,46 +3229,46 @@ msgid "key %s: unexpected signature class (0x%02X) - skipped\n"
 msgstr ""
 "clau %08lX: la classe de signatura és inesperada (0x%02x) - es descarta\n"
 
-#: g10/import.c:1732
+#: g10/import.c:1744
 #, fuzzy, c-format
 msgid "key %s: duplicated user ID detected - merged\n"
 msgstr "clau %08lX: s'ha detectat un ID d'usuari duplicat - es fusiona\n"
 
-#: g10/import.c:1794
+#: g10/import.c:1806
 #, fuzzy, c-format
 msgid "WARNING: key %s may be revoked: fetching revocation key %s\n"
 msgstr ""
 "AVÍS: la clau %08lX pot estar revocada: s'adquireix la clau de revocació %"
 "08lX\n"
 
-#: g10/import.c:1808
+#: g10/import.c:1820
 #, fuzzy, c-format
 msgid "WARNING: key %s may be revoked: revocation key %s not present.\n"
 msgstr ""
 "AVÍS: la clau %08lX pot estar revocada: la clau de revocació %08lX no està "
 "present.\n"
 
-#: g10/import.c:1867
+#: g10/import.c:1879
 #, fuzzy, c-format
 msgid "key %s: \"%s\" revocation certificate added\n"
 msgstr "clau %08lX: s'hi ha afegit el certificat de revocació «%s»\n"
 
-#: g10/import.c:1901
+#: g10/import.c:1913
 #, fuzzy, c-format
 msgid "key %s: direct key signature added\n"
 msgstr "clau %08lX: s'ha afegit la signatura de clau directa\n"
 
-#: g10/import.c:2290
+#: g10/import.c:2302
 #, fuzzy
 msgid "NOTE: a key's S/N does not match the card's one\n"
 msgstr "la clau pública no coincideix amb la clau secreta!\n"
 
-#: g10/import.c:2298
+#: g10/import.c:2310
 #, fuzzy
 msgid "NOTE: primary key is online and stored on card\n"
 msgstr "es descarta: la clau secreta ja és present\n"
 
-#: g10/import.c:2300
+#: g10/import.c:2312
 #, fuzzy
 msgid "NOTE: secondary key is online and stored on card\n"
 msgstr "es descarta: la clau secreta ja és present\n"
@@ -3553,7 +3595,7 @@ msgid "Really sign? (y/N) "
 msgstr "Signar realment? "
 
 #: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
-#: g10/keyedit.c:5019 g10/sign.c:348
+#: g10/keyedit.c:5019 g10/sign.c:316
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "Ha fallat el procés de signatura: %s\n"
@@ -3930,8 +3972,7 @@ msgid "Do you really want to revoke this subkey? (y/N) "
 msgstr "Realment voleu revocar aquesta clau? "
 
 #: g10/keyedit.c:2098
-msgid ""
-"Owner trust may not be set while using an user provided trust database\n"
+msgid "Owner trust may not be set while using a user provided trust database\n"
 msgstr ""
 
 #: g10/keyedit.c:2140
@@ -4836,7 +4877,7 @@ msgid "Key generation failed: %s\n"
 msgstr "La generació de claus ha fallat: %s\n"
 
 # Werner FIXME: Use ngettext. jm
-#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:241
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
@@ -4845,7 +4886,7 @@ msgstr ""
 "amb el rellotge)\n"
 
 # Werner FIXME: use ngettext. jm
-#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:243
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
@@ -5462,17 +5503,17 @@ msgstr "No comprimit"
 msgid "uncompressed|none"
 msgstr "No comprimit"
 
-#: g10/misc.c:874
+#: g10/misc.c:891
 #, c-format
 msgid "this message may not be usable by %s\n"
 msgstr "aquest missatge pot no ser usable per %s\n"
 
-#: g10/misc.c:1049
+#: g10/misc.c:1066
 #, fuzzy, c-format
 msgid "ambiguous option `%s'\n"
 msgstr "s'estan llegint opcions de «%s»\n"
 
-#: g10/misc.c:1074
+#: g10/misc.c:1091
 #, fuzzy, c-format
 msgid "unknown option `%s'\n"
 msgstr "el destinatari predeterminat és desconegut «%s»\n"
@@ -5532,7 +5573,7 @@ msgstr ""
 msgid "subpacket of type %d has critical bit set\n"
 msgstr "el subpaquet de tipus %d té el bit crític activat\n"
 
-#: g10/passphrase.c:313 g10/passphrase.c:603
+#: g10/passphrase.c:295 g10/passphrase.c:581
 #, fuzzy, c-format
 msgid " (main key ID %s)"
 msgstr " (ID de la clau principal %08lX)"
@@ -5548,7 +5589,7 @@ msgstr " (ID de la clau principal %08lX)"
 # Se't passava l'argument «*».  printf(3), hieroglyph(7).  ivb
 # Ah!  Prova-ho, no casque alguna cosa :P  ivb
 # Ah, ja veig! Moltes gràcies! Aquest msgstr ha quedat curiós :) jm
-#: g10/passphrase.c:327
+#: g10/passphrase.c:309
 #, fuzzy, c-format
 msgid ""
 "You need a passphrase to unlock the secret key for user:\n"
@@ -5559,24 +5600,24 @@ msgstr ""
 "«%2$.*1$s»\n"
 "clau %4$s de %3$u bits, ID %5$08lX, creada en %6$s%7$s\n"
 
-#: g10/passphrase.c:352
+#: g10/passphrase.c:334
 msgid "Repeat passphrase\n"
 msgstr "Repetiu la contrasenya\n"
 
-#: g10/passphrase.c:354
+#: g10/passphrase.c:336
 msgid "Enter passphrase\n"
 msgstr "Introduïu la contrasenya\n"
 
-#: g10/passphrase.c:378
+#: g10/passphrase.c:363
 msgid "cancelled by user\n"
 msgstr "s'ha cancel·lat per l'usuari\n"
 
-#: g10/passphrase.c:384 g10/passphrase.c:450
+#: g10/passphrase.c:369 g10/passphrase.c:428
 #, fuzzy, c-format
 msgid "problem with the agent: %s\n"
 msgstr "hi ha un problema amb l'agent: l'agent ha tornat 0x%lx\n"
 
-#: g10/passphrase.c:582
+#: g10/passphrase.c:560
 #, fuzzy, c-format
 msgid ""
 "You need a passphrase to unlock the secret key for\n"
@@ -5586,12 +5627,12 @@ msgstr ""
 "Necessiteu la contrasenya per desblocar la clau secreta de\n"
 "l'usuari: \""
 
-#: g10/passphrase.c:590
+#: g10/passphrase.c:568
 #, fuzzy, c-format
 msgid "%u-bit %s key, ID %s, created %s"
 msgstr "clau %2$s de %1$u bits, ID %3$08lX, creada en %4$s"
 
-#: g10/passphrase.c:599
+#: g10/passphrase.c:577
 #, c-format
 msgid "         (subkey on main key ID %s)"
 msgstr ""
@@ -6244,36 +6285,14 @@ msgstr ""
 "clau %08lX: no hi ha una subclau per a la signatura de l'enllaç de la "
 "subclau\n"
 
-#: g10/sign.c:82
-msgid "can't put notation data into v3 (PGP 2.x style) signatures\n"
-msgstr ""
-"no es poden ficar dades de notació dins de signatures v3 (estil PGP 2.x)\n"
-
-#: g10/sign.c:90
-msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n"
-msgstr ""
-"no es poden ficar dades de notació dins de signatures de clau v3 (estil PGP "
-"2.x)\n"
-
-#: g10/sign.c:104
+#: g10/sign.c:89
 #, c-format
 msgid "WARNING: unable to %%-expand notation (too large).  Using unexpanded.\n"
 msgstr ""
 "AVÍS: no s'ha pogut %%-expandir la notació (massa gran). S'utilitza no "
 "expandida.\n"
 
-#: g10/sign.c:121
-msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n"
-msgstr ""
-"no es pot ficar una URL de política dins de signatures v3 (estil PGP 2.x)\n"
-
-#: g10/sign.c:129
-msgid "can't put a policy URL into v3 key (PGP 2.x style) signatures\n"
-msgstr ""
-"no es pot ficar una URL de política dins de signatures de clau v3 (estil PGP "
-"2.x)\n"
-
-#: g10/sign.c:142
+#: g10/sign.c:115
 #, fuzzy, c-format
 msgid ""
 "WARNING: unable to %%-expand policy URL (too large).  Using unexpanded.\n"
@@ -6281,7 +6300,7 @@ msgstr ""
 "AVÍS: no s'ha pogut %%-expandir l'url de política (massa gran). S'utilitza "
 "no expandida.\n"
 
-#: g10/sign.c:170
+#: g10/sign.c:138
 #, fuzzy, c-format
 msgid ""
 "WARNING: unable to %%-expand preferred keyserver URL (too large).  Using "
@@ -6290,39 +6309,39 @@ msgstr ""
 "AVÍS: no s'ha pogut %%-expandir l'url de política (massa gran). S'utilitza "
 "no expandida.\n"
 
-#: g10/sign.c:343
+#: g10/sign.c:311
 #, c-format
 msgid "checking created signature failed: %s\n"
 msgstr "no s'ha pogut comprovar la signatura creada: %s\n"
 
-#: g10/sign.c:352
+#: g10/sign.c:320
 #, fuzzy, c-format
 msgid "%s/%s signature from: \"%s\"\n"
 msgstr "%s signatura de: «%s»\n"
 
-#: g10/sign.c:788
+#: g10/sign.c:758
 msgid "you can only detach-sign with PGP 2.x style keys while in --pgp2 mode\n"
 msgstr ""
 "només podeu fer signatures separades amb claus d'estil PGP 2.x mentre esteu "
 "en mode --pgp2\n"
 
-#: g10/sign.c:864
+#: g10/sign.c:834
 #, fuzzy, c-format
 msgid ""
 "WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n"
 msgstr ""
 "forçar l'algoritme de digest %s (%d) viola les preferències del destinatari\n"
 
-#: g10/sign.c:991
+#: g10/sign.c:961
 msgid "signing:"
 msgstr "signatura:"
 
-#: g10/sign.c:1106
+#: g10/sign.c:1076
 msgid "you can only clearsign with PGP 2.x style keys while in --pgp2 mode\n"
 msgstr ""
 "només podeu signar en clar amb claus d'estil PGP 2.x en el mode --pgp2\n"
 
-#: g10/sign.c:1290
+#: g10/sign.c:1260
 #, c-format
 msgid "%s encryption will be used\n"
 msgstr "s'utilitzarà xifratge %s\n"
@@ -7048,64 +7067,64 @@ msgstr ""
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr ""
 
-#: scd/scdaemon.c:108
+#: scd/scdaemon.c:105
 msgid "run in multi server mode (foreground)"
 msgstr ""
 
-#: scd/scdaemon.c:114 sm/gpgsm.c:361
+#: scd/scdaemon.c:111 sm/gpgsm.c:364
 #, fuzzy
 msgid "read options from file"
 msgstr "s'estan llegint opcions de «%s»\n"
 
-#: scd/scdaemon.c:124
+#: scd/scdaemon.c:121
 msgid "|N|connect to reader at port N"
 msgstr ""
 
-#: scd/scdaemon.c:125
+#: scd/scdaemon.c:122
 #, fuzzy
 msgid "|NAME|use NAME as ct-API driver"
 msgstr "|NOM|usa NOM com a destinatari predeterminat"
 
-#: scd/scdaemon.c:126
+#: scd/scdaemon.c:123
 #, fuzzy
 msgid "|NAME|use NAME as PC/SC driver"
 msgstr "|NOM|usa NOM com a destinatari predeterminat"
 
-#: scd/scdaemon.c:129
+#: scd/scdaemon.c:126
 #, fuzzy
 msgid "do not use the internal CCID driver"
 msgstr "no usa el terminal en absolut"
 
-#: scd/scdaemon.c:134
+#: scd/scdaemon.c:131
 msgid "do not use a reader's keypad"
 msgstr ""
 
-#: scd/scdaemon.c:135
+#: scd/scdaemon.c:132
 #, fuzzy
 msgid "allow the use of admin card commands"
 msgstr "les ordres entren en conflicte\n"
 
-#: scd/scdaemon.c:209
+#: scd/scdaemon.c:210
 #, fuzzy
 msgid "Usage: scdaemon [options] (-h for help)"
 msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
 
-#: scd/scdaemon.c:211
+#: scd/scdaemon.c:212
 msgid ""
 "Syntax: scdaemon [options] [command [args]]\n"
 "Smartcard daemon for GnuPG\n"
 msgstr ""
 
-#: scd/scdaemon.c:658
+#: scd/scdaemon.c:668
 msgid "please use the option `--daemon' to run the program in the background\n"
 msgstr ""
 
-#: scd/scdaemon.c:1006
+#: scd/scdaemon.c:1022
 #, c-format
 msgid "handler for fd %d started\n"
 msgstr ""
 
-#: scd/scdaemon.c:1011
+#: scd/scdaemon.c:1028
 #, c-format
 msgid "handler for fd %d terminated\n"
 msgstr ""
@@ -7139,11 +7158,11 @@ msgstr ""
 msgid "validation model requested by certificate: %s"
 msgstr ""
 
-#: sm/certchain.c:195 sm/certchain.c:1631
+#: sm/certchain.c:195 sm/certchain.c:1646
 msgid "chain"
 msgstr ""
 
-#: sm/certchain.c:196 sm/certchain.c:1631
+#: sm/certchain.c:196 sm/certchain.c:1646
 #, fuzzy
 msgid "shell"
 msgstr "ajuda"
@@ -7184,8 +7203,8 @@ msgstr ""
 msgid "number of issuers matching: %d\n"
 msgstr ""
 
-#: sm/certchain.c:651 sm/certchain.c:1069 sm/certchain.c:1659 sm/decrypt.c:259
-#: sm/encrypt.c:341 sm/sign.c:327 sm/verify.c:105
+#: sm/certchain.c:651 sm/certchain.c:1069 sm/certchain.c:1674 sm/decrypt.c:259
+#: sm/encrypt.c:341 sm/sign.c:327 sm/verify.c:113
 #, fuzzy
 msgid "failed to allocated keyDB handle\n"
 msgstr "no s'ha pogut inicialitzar la base de dades de confiança: %s\n"
@@ -7363,7 +7382,7 @@ msgstr ""
 msgid "certificate chain longer than allowed by CA (%d)"
 msgstr ""
 
-#: sm/certchain.c:1462 sm/certchain.c:1730
+#: sm/certchain.c:1462 sm/certchain.c:1745
 #, fuzzy
 msgid "certificate is good\n"
 msgstr "Certificat de revocació vàlid"
@@ -7380,11 +7399,11 @@ msgstr ""
 "No s'han trobat certificats amb confiança no definida.\n"
 "\n"
 
-#: sm/certchain.c:1620
+#: sm/certchain.c:1635
 msgid "switching to chain model"
 msgstr ""
 
-#: sm/certchain.c:1629
+#: sm/certchain.c:1644
 #, c-format
 msgid "validation model used: %s"
 msgstr ""
@@ -7399,7 +7418,7 @@ msgstr ""
 msgid "a %u bit hash is not valid for a %u bit %s key\n"
 msgstr ""
 
-#: sm/certcheck.c:248 sm/sign.c:480 sm/verify.c:187
+#: sm/certcheck.c:248 sm/sign.c:480 sm/verify.c:198
 msgid "(this is the MD2 algorithm)\n"
 msgstr ""
 
@@ -7413,20 +7432,20 @@ msgstr "no"
 msgid "[none]"
 msgstr "[no establert]"
 
-#: sm/certdump.c:550 sm/certdump.c:595 sm/certdump.c:660 sm/certdump.c:713
+#: sm/certdump.c:583 sm/certdump.c:628 sm/certdump.c:693 sm/certdump.c:746
 #, fuzzy
 msgid "[Error - invalid encoding]"
 msgstr "error: l'empremta digital és invàlida\n"
 
-#: sm/certdump.c:558 sm/certdump.c:603
+#: sm/certdump.c:591 sm/certdump.c:636
 msgid "[Error - out of core]"
 msgstr ""
 
-#: sm/certdump.c:640 sm/certdump.c:696
+#: sm/certdump.c:673 sm/certdump.c:729
 msgid "[Error - No name]"
 msgstr ""
 
-#: sm/certdump.c:665 sm/certdump.c:719
+#: sm/certdump.c:698 sm/certdump.c:752
 #, fuzzy
 msgid "[Error - invalid DN]"
 msgstr "error: l'empremta digital és invàlida\n"
@@ -7442,7 +7461,7 @@ msgstr "error: l'empremta digital és invàlida\n"
 # Se't passava l'argument «*».  printf(3), hieroglyph(7).  ivb
 # Ah!  Prova-ho, no casque alguna cosa :P  ivb
 # Ah, ja veig! Moltes gràcies! Aquest msgstr ha quedat curiós :) jm
-#: sm/certdump.c:936
+#: sm/certdump.c:946
 #, fuzzy, c-format
 msgid ""
 "Please enter the passphrase to unlock the secret key for:\n"
@@ -7569,182 +7588,191 @@ msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
 msgid "no valid recipients given\n"
 msgstr "(No es va donar una descripció)\n"
 
-#: sm/gpgsm.c:244
+#: sm/gpgsm.c:246
 #, fuzzy
 msgid "|[FILE]|make a signature"
 msgstr "|[fitxer]|crea una signatura"
 
-#: sm/gpgsm.c:245
+#: sm/gpgsm.c:247
 #, fuzzy
 msgid "|[FILE]|make a clear text signature"
 msgstr "|[fitxer]|crea una signatura en text clar"
 
-#: sm/gpgsm.c:253
+#: sm/gpgsm.c:255
 #, fuzzy
 msgid "list external keys"
 msgstr "llista claus secretes"
 
-#: sm/gpgsm.c:255
+#: sm/gpgsm.c:257
 #, fuzzy
 msgid "list certificate chain"
 msgstr "Certificat de revocació vàlid"
 
-#: sm/gpgsm.c:258
+#: sm/gpgsm.c:260
 #, fuzzy
 msgid "remove key from the public keyring"
 msgstr "elimina claus de l'anell públic"
 
-#: sm/gpgsm.c:261
+#: sm/gpgsm.c:263
 #, fuzzy
 msgid "import certificates"
 msgstr "Certificat correcte"
 
-#: sm/gpgsm.c:262
+#: sm/gpgsm.c:264
 #, fuzzy
 msgid "export certificates"
 msgstr "Certificat correcte"
 
-#: sm/gpgsm.c:263
+#: sm/gpgsm.c:265
 msgid "register a smartcard"
 msgstr ""
 
-#: sm/gpgsm.c:265
+#: sm/gpgsm.c:267
 msgid "pass a command to the dirmngr"
 msgstr ""
 
-#: sm/gpgsm.c:267
+#: sm/gpgsm.c:269
 msgid "invoke gpg-protect-tool"
 msgstr ""
 
-#: sm/gpgsm.c:268
+#: sm/gpgsm.c:270
 #, fuzzy
 msgid "change a passphrase"
 msgstr "canvia la contrasenya"
 
-#: sm/gpgsm.c:283
+#: sm/gpgsm.c:285
 #, fuzzy
 msgid "create base-64 encoded output"
 msgstr "crea eixida amb armadura ascii"
 
-#: sm/gpgsm.c:287
+#: sm/gpgsm.c:289
 msgid "assume input is in PEM format"
 msgstr ""
 
-#: sm/gpgsm.c:289
+#: sm/gpgsm.c:291
 msgid "assume input is in base-64 format"
 msgstr ""
 
-#: sm/gpgsm.c:291
+#: sm/gpgsm.c:293
 msgid "assume input is in binary format"
 msgstr ""
 
-#: sm/gpgsm.c:296
+#: sm/gpgsm.c:298
 msgid "use system's dirmngr if available"
 msgstr ""
 
-#: sm/gpgsm.c:297
+#: sm/gpgsm.c:299
 msgid "never consult a CRL"
 msgstr ""
 
-#: sm/gpgsm.c:304
+#: sm/gpgsm.c:306
 msgid "check validity using OCSP"
 msgstr ""
 
-#: sm/gpgsm.c:309
+#: sm/gpgsm.c:311
 msgid "|N|number of certificates to include"
 msgstr ""
 
-#: sm/gpgsm.c:312
+#: sm/gpgsm.c:314
 msgid "|FILE|take policy information from FILE"
 msgstr ""
 
-#: sm/gpgsm.c:315
+#: sm/gpgsm.c:317
 msgid "do not check certificate policies"
 msgstr ""
 
-#: sm/gpgsm.c:319
+#: sm/gpgsm.c:321
 msgid "fetch missing issuer certificates"
 msgstr ""
 
-#: sm/gpgsm.c:323
+#: sm/gpgsm.c:325
 msgid "|NAME|use NAME as default recipient"
 msgstr "|NOM|usa NOM com a destinatari predeterminat"
 
-#: sm/gpgsm.c:325
+#: sm/gpgsm.c:327
 msgid "use the default key as default recipient"
 msgstr "usa la clau predeterminada com a destinatari predeterminat"
 
-#: sm/gpgsm.c:342
+#: sm/gpgsm.c:344
 msgid "don't use the terminal at all"
 msgstr "no usa el terminal en absolut"
 
-#: sm/gpgsm.c:346
+#: sm/gpgsm.c:345
+msgid "|FILE|write a server mode log to FILE"
+msgstr ""
+
+#: sm/gpgsm.c:347
+#, fuzzy
+msgid "|FILE|write an audit log to FILE"
+msgstr "|FITXER|carrega el mòdul d'extensió especificat"
+
+#: sm/gpgsm.c:349
 msgid "force v3 signatures"
 msgstr "força signatures v3"
 
-#: sm/gpgsm.c:347
+#: sm/gpgsm.c:350
 msgid "always use a MDC for encryption"
 msgstr "sempre utilitza un MDC per a xifrar"
 
 # Mode desatès (SC)  ivb
-#: sm/gpgsm.c:352
+#: sm/gpgsm.c:355
 msgid "batch mode: never ask"
 msgstr "mode desatès: no pregunta mai"
 
-#: sm/gpgsm.c:353
+#: sm/gpgsm.c:356
 msgid "assume yes on most questions"
 msgstr "suposa «sí» en la majoria de les preguntes"
 
-#: sm/gpgsm.c:354
+#: sm/gpgsm.c:357
 msgid "assume no on most questions"
 msgstr "suposa «no» en la majoria de les preguntes"
 
-#: sm/gpgsm.c:356
+#: sm/gpgsm.c:359
 msgid "add this keyring to the list of keyrings"
 msgstr "afegeix aquest anell a la llista"
 
-#: sm/gpgsm.c:357
+#: sm/gpgsm.c:360
 msgid "add this secret keyring to the list"
 msgstr "afegeix aquest anell secret a la llista"
 
-#: sm/gpgsm.c:358 tools/gpgconf-comp.c:647 tools/gpgconf-comp.c:709
+#: sm/gpgsm.c:361 tools/gpgconf-comp.c:645 tools/gpgconf-comp.c:707
 msgid "|NAME|use NAME as default secret key"
 msgstr "|NOM|usa NOM com a clau secreta predeterminada"
 
-#: sm/gpgsm.c:359
+#: sm/gpgsm.c:362
 msgid "|HOST|use this keyserver to lookup keys"
 msgstr "|HOST|usa aquest servidor per a cercar claus"
 
-#: sm/gpgsm.c:360
+#: sm/gpgsm.c:363
 msgid "|NAME|set terminal charset to NAME"
 msgstr "|NOM|el joc de caràcters serà NOM"
 
-#: sm/gpgsm.c:364
+#: sm/gpgsm.c:367
 msgid "|LEVEL|set the debugging level to LEVEL"
 msgstr ""
 
-#: sm/gpgsm.c:379
+#: sm/gpgsm.c:382
 msgid "|FILE|load extension module FILE"
 msgstr "|FITXER|carrega el mòdul d'extensió especificat"
 
-#: sm/gpgsm.c:385
+#: sm/gpgsm.c:388
 msgid "|NAME|use cipher algorithm NAME"
 msgstr "|NOM|usa l'algoritme de xifratge NOM"
 
-#: sm/gpgsm.c:387
+#: sm/gpgsm.c:390
 msgid "|NAME|use message digest algorithm NAME"
 msgstr "|NOM|usa l'algoritme de resum de missatges NOM"
 
-#: sm/gpgsm.c:389
+#: sm/gpgsm.c:392
 msgid "|N|use compress algorithm N"
 msgstr "|N|usa l'algoritme de compressió N"
 
-#: sm/gpgsm.c:568
+#: sm/gpgsm.c:573
 #, fuzzy
 msgid "Usage: gpgsm [options] [files] (-h for help)"
 msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
 
-#: sm/gpgsm.c:571
+#: sm/gpgsm.c:576
 #, fuzzy
 msgid ""
 "Syntax: gpgsm [options] [files]\n"
@@ -7755,37 +7783,37 @@ msgstr ""
 "signa, comprova, xifra o desxifra\n"
 "l'operació predeterminada depén de les dades introduïdes\n"
 
-#: sm/gpgsm.c:650
+#: sm/gpgsm.c:703
 #, fuzzy
 msgid "usage: gpgsm [options] "
 msgstr "forma d'ús: gpg [opcions] "
 
-#: sm/gpgsm.c:748
+#: sm/gpgsm.c:801
 #, fuzzy, c-format
 msgid "NOTE: won't be able to encrypt to `%s': %s\n"
 msgstr "no s'ha pogut connectar amb «%s»: %s\n"
 
-#: sm/gpgsm.c:759
+#: sm/gpgsm.c:812
 #, fuzzy, c-format
 msgid "unknown validation model `%s'\n"
 msgstr "el destinatari predeterminat és desconegut «%s»\n"
 
-#: sm/gpgsm.c:1315
+#: sm/gpgsm.c:1372
 msgid "WARNING: running with faked system time: "
 msgstr ""
 
-#: sm/gpgsm.c:1411
+#: sm/gpgsm.c:1468
 #, c-format
 msgid "importing common certificates `%s'\n"
 msgstr ""
 
 # No em passe! ;)  ivb
-#: sm/gpgsm.c:1429
+#: sm/gpgsm.c:1486
 #, fuzzy, c-format
 msgid "can't sign using `%s': %s\n"
 msgstr "no s'ha pogut tancar «%s»: %s\n"
 
-#: sm/gpgsm.c:1612
+#: sm/gpgsm.c:1686
 msgid "this command has not yet been implemented\n"
 msgstr ""
 
@@ -7808,7 +7836,7 @@ msgstr ""
 msgid "error importing certificate: %s\n"
 msgstr "error en la creació de la contrasenya: %s\n"
 
-#: sm/import.c:542 tools/gpg-connect-agent.c:374
+#: sm/import.c:542 tools/gpg-connect-agent.c:1274
 #, fuzzy, c-format
 msgid "error reading input: %s\n"
 msgstr "error en la lectura de «%s»: %s\n"
@@ -7871,17 +7899,17 @@ msgstr "error en la lectura de «%s»: %s\n"
 msgid "GPG_TTY has not been set - using maybe bogus default\n"
 msgstr ""
 
-#: sm/qualified.c:111
+#: sm/qualified.c:105
 #, fuzzy, c-format
 msgid "invalid formatted fingerprint in `%s', line %d\n"
 msgstr "error: l'empremta digital és invàlida\n"
 
-#: sm/qualified.c:129
+#: sm/qualified.c:123
 #, c-format
 msgid "invalid country code in `%s', line %d\n"
 msgstr ""
 
-#: sm/qualified.c:225
+#: sm/qualified.c:200
 #, c-format
 msgid ""
 "You are about to create a signature using your certificate:\n"
@@ -7892,13 +7920,13 @@ msgid ""
 "%s%sAre you really sure that you want to do this?"
 msgstr ""
 
-#: sm/qualified.c:234 sm/verify.c:536
+#: sm/qualified.c:209 sm/verify.c:580
 msgid ""
 "Note, that this software is not officially approved to create or verify such "
 "signatures.\n"
 msgstr ""
 
-#: sm/qualified.c:327
+#: sm/qualified.c:277
 #, c-format
 msgid ""
 "You are about to create a signature using your certificate:\n"
@@ -7911,293 +7939,311 @@ msgstr ""
 msgid "checking for qualified certificate failed: %s\n"
 msgstr "no s'ha pogut comprovar la signatura creada: %s\n"
 
-#: sm/verify.c:388
+#: sm/verify.c:424
 #, fuzzy
 msgid "Signature made "
 msgstr "Aquesta signatura va caducar el %s\n"
 
-#: sm/verify.c:392
+#: sm/verify.c:428
 msgid "[date not given]"
 msgstr ""
 
-#: sm/verify.c:393
+#: sm/verify.c:429
 #, fuzzy, c-format
 msgid " using certificate ID 0x%08lX\n"
 msgstr "error en la creació de la contrasenya: %s\n"
 
-#: sm/verify.c:514
+#: sm/verify.c:558
 #, fuzzy
 msgid "Good signature from"
 msgstr "Signatura correcta de \""
 
-#: sm/verify.c:515
+#: sm/verify.c:559
 #, fuzzy
 msgid "                aka"
 msgstr "              alias \""
 
-#: sm/verify.c:533
+#: sm/verify.c:577
 #, fuzzy
 msgid "This is a qualified signature\n"
 msgstr ""
 "\n"
 "Açò serà una autosignatura.\n"
 
-#: tools/gpg-connect-agent.c:59 tools/gpgconf.c:70 tools/symcryptrun.c:165
+#: tools/gpg-connect-agent.c:67 tools/gpgconf.c:73 tools/symcryptrun.c:165
 #, fuzzy
 msgid "quiet"
 msgstr "ix"
 
-#: tools/gpg-connect-agent.c:60
+#: tools/gpg-connect-agent.c:68
 msgid "print data out hex encoded"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:61
+#: tools/gpg-connect-agent.c:69
 msgid "decode received data lines"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:62
+#: tools/gpg-connect-agent.c:70
 msgid "|NAME|connect to Assuan socket NAME"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:63
+#: tools/gpg-connect-agent.c:71
 msgid "run the Assuan server given on the command line"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:65
+#: tools/gpg-connect-agent.c:73
 msgid "do not use extended connect mode"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:127
+#: tools/gpg-connect-agent.c:74
+#, fuzzy
+msgid "|FILE|run commands from FILE on startup"
+msgstr "|FITXER|carrega el mòdul d'extensió especificat"
+
+#: tools/gpg-connect-agent.c:75
+msgid "run /subst on startup"
+msgstr ""
+
+#: tools/gpg-connect-agent.c:174
 #, fuzzy
 msgid "Usage: gpg-connect-agent [options] (-h for help)"
 msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
 
-#: tools/gpg-connect-agent.c:130
+#: tools/gpg-connect-agent.c:177
 msgid ""
 "Syntax: gpg-connect-agent [options]\n"
 "Connect to a running agent and send commands\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:314
+#: tools/gpg-connect-agent.c:1155
 #, c-format
 msgid "option \"%s\" requires a program and optional arguments\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:323
+#: tools/gpg-connect-agent.c:1164
 #, c-format
 msgid "option \"%s\" ignored due to \"%s\"\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:381
+#: tools/gpg-connect-agent.c:1219 tools/gpg-connect-agent.c:1645
+#, fuzzy, c-format
+msgid "receiving line failed: %s\n"
+msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
+
+#: tools/gpg-connect-agent.c:1299
 #, fuzzy
 msgid "line too long - skipped\n"
 msgstr "la línia és massa llarga\n"
 
-#: tools/gpg-connect-agent.c:385
+#: tools/gpg-connect-agent.c:1303
 msgid "line shortened due to embedded Nul character\n"
 msgstr ""
 
-#: tools/gpg-connect-agent.c:457
+#: tools/gpg-connect-agent.c:1619
 #, fuzzy, c-format
 msgid "unknown command `%s'\n"
 msgstr "el destinatari predeterminat és desconegut «%s»\n"
 
-#: tools/gpg-connect-agent.c:465
+#: tools/gpg-connect-agent.c:1637
 #, fuzzy, c-format
 msgid "sending line failed: %s\n"
 msgstr "Ha fallat el procés de signatura: %s\n"
 
-#: tools/gpg-connect-agent.c:473
-#, fuzzy, c-format
-msgid "receiving line failed: %s\n"
-msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
-
-#: tools/gpg-connect-agent.c:789
+#: tools/gpg-connect-agent.c:1986
 #, fuzzy, c-format
 msgid "error sending %s command: %s\n"
 msgstr "error mentre s'enviava a «%s»: %s\n"
 
-#: tools/gpg-connect-agent.c:798
+#: tools/gpg-connect-agent.c:1995
 #, fuzzy, c-format
 msgid "error sending standard options: %s\n"
 msgstr "error mentre s'enviava a «%s»: %s\n"
 
-#: tools/gpgconf-comp.c:461 tools/gpgconf-comp.c:565 tools/gpgconf-comp.c:632
-#: tools/gpgconf-comp.c:694 tools/gpgconf-comp.c:775
+#: tools/gpgconf-comp.c:459 tools/gpgconf-comp.c:563 tools/gpgconf-comp.c:630
+#: tools/gpgconf-comp.c:692 tools/gpgconf-comp.c:773
 msgid "Options controlling the diagnostic output"
 msgstr ""
 
-#: tools/gpgconf-comp.c:474 tools/gpgconf-comp.c:578 tools/gpgconf-comp.c:645
-#: tools/gpgconf-comp.c:707 tools/gpgconf-comp.c:798
+#: tools/gpgconf-comp.c:472 tools/gpgconf-comp.c:576 tools/gpgconf-comp.c:643
+#: tools/gpgconf-comp.c:705 tools/gpgconf-comp.c:796
 msgid "Options controlling the configuration"
 msgstr ""
 
-#: tools/gpgconf-comp.c:484 tools/gpgconf-comp.c:603 tools/gpgconf-comp.c:658
-#: tools/gpgconf-comp.c:726 tools/gpgconf-comp.c:805
+#: tools/gpgconf-comp.c:482 tools/gpgconf-comp.c:601 tools/gpgconf-comp.c:656
+#: tools/gpgconf-comp.c:724 tools/gpgconf-comp.c:803
 msgid "Options useful for debugging"
 msgstr ""
 
-#: tools/gpgconf-comp.c:489 tools/gpgconf-comp.c:608 tools/gpgconf-comp.c:663
-#: tools/gpgconf-comp.c:731 tools/gpgconf-comp.c:813
+#: tools/gpgconf-comp.c:487 tools/gpgconf-comp.c:606 tools/gpgconf-comp.c:661
+#: tools/gpgconf-comp.c:729 tools/gpgconf-comp.c:811
 msgid "|FILE|write server mode logs to FILE"
 msgstr ""
 
-#: tools/gpgconf-comp.c:497 tools/gpgconf-comp.c:613 tools/gpgconf-comp.c:739
+#: tools/gpgconf-comp.c:495 tools/gpgconf-comp.c:611 tools/gpgconf-comp.c:737
 msgid "Options controlling the security"
 msgstr ""
 
-#: tools/gpgconf-comp.c:504
+#: tools/gpgconf-comp.c:502
 msgid "|N|expire SSH keys after N seconds"
 msgstr ""
 
-#: tools/gpgconf-comp.c:508
+#: tools/gpgconf-comp.c:506
 msgid "|N|set maximum PIN cache lifetime to N seconds"
 msgstr ""
 
-#: tools/gpgconf-comp.c:512
+#: tools/gpgconf-comp.c:510
 msgid "|N|set maximum SSH key lifetime to N seconds"
 msgstr ""
 
-#: tools/gpgconf-comp.c:526
+#: tools/gpgconf-comp.c:524
 msgid "Options enforcing a passphrase policy"
 msgstr ""
 
-#: tools/gpgconf-comp.c:529
+#: tools/gpgconf-comp.c:527
 msgid "do not allow to bypass the passphrase policy"
 msgstr ""
 
-#: tools/gpgconf-comp.c:533
+#: tools/gpgconf-comp.c:531
 msgid "|N|set minimal required length for new passphrases to N"
 msgstr ""
 
-#: tools/gpgconf-comp.c:537
+#: tools/gpgconf-comp.c:535
 msgid "|N|require at least N non-alpha characters for a new passphrase"
 msgstr ""
 
-#: tools/gpgconf-comp.c:541
+#: tools/gpgconf-comp.c:539
 msgid "|FILE|check new passphrases against pattern in FILE"
 msgstr ""
 
-#: tools/gpgconf-comp.c:545
+#: tools/gpgconf-comp.c:543
 #, fuzzy
 msgid "|N|expire the passphrase after N days"
 msgstr "|N|usa el mode de contrasenya especificat"
 
-#: tools/gpgconf-comp.c:549
+#: tools/gpgconf-comp.c:547
 #, fuzzy
 msgid "do not allow the reuse of old passphrases"
 msgstr "error en la creació de la contrasenya: %s\n"
 
-#: tools/gpgconf-comp.c:650 tools/gpgconf-comp.c:712
+#: tools/gpgconf-comp.c:648 tools/gpgconf-comp.c:710
 #, fuzzy
 msgid "|NAME|encrypt to user ID NAME as well"
 msgstr "|NOM|xifra per a NOM"
 
-#: tools/gpgconf-comp.c:671
+#: tools/gpgconf-comp.c:669
 msgid "Configuration for Keyservers"
 msgstr ""
 
-#: tools/gpgconf-comp.c:673
+#: tools/gpgconf-comp.c:671
 #, fuzzy
 msgid "|URL|use keyserver at URL"
 msgstr "no s'ha pogut analitzar sintàcticament la URI del servidor de claus\n"
 
-#: tools/gpgconf-comp.c:676
+#: tools/gpgconf-comp.c:674
 msgid "allow PKA lookups (DNS requests)"
 msgstr ""
 
-#: tools/gpgconf-comp.c:721
+#: tools/gpgconf-comp.c:719
 #, fuzzy
 msgid "|NAME|use encoding NAME for PKCS#12 passphrases"
 msgstr "|NOM|usa l'algoritme de xifratge NOM per a les contrasenyes"
 
-#: tools/gpgconf-comp.c:744
+#: tools/gpgconf-comp.c:742
 msgid "do not check CRLs for root certificates"
 msgstr ""
 
-#: tools/gpgconf-comp.c:788
+#: tools/gpgconf-comp.c:786
 msgid "Options controlling the format of the output"
 msgstr ""
 
-#: tools/gpgconf-comp.c:824
+#: tools/gpgconf-comp.c:822
 msgid "Options controlling the interactivity and enforcement"
 msgstr ""
 
-#: tools/gpgconf-comp.c:834
+#: tools/gpgconf-comp.c:832
 msgid "Configuration for HTTP servers"
 msgstr ""
 
-#: tools/gpgconf-comp.c:845
+#: tools/gpgconf-comp.c:843
 msgid "use system's HTTP proxy setting"
 msgstr ""
 
-#: tools/gpgconf-comp.c:850
+#: tools/gpgconf-comp.c:848
 msgid "Configuration of LDAP servers to use"
 msgstr ""
 
-#: tools/gpgconf-comp.c:887
+#: tools/gpgconf-comp.c:885
 msgid "Configuration for OCSP"
 msgstr ""
 
-#: tools/gpgconf-comp.c:2982
+#: tools/gpgconf-comp.c:3006
 msgid "Note that group specifications are ignored\n"
 msgstr ""
 
-#: tools/gpgconf.c:57
+#: tools/gpgconf.c:58
 msgid "list all components"
 msgstr ""
 
-#: tools/gpgconf.c:58
+#: tools/gpgconf.c:59
 msgid "check all programs"
 msgstr ""
 
-#: tools/gpgconf.c:59
+#: tools/gpgconf.c:60
 msgid "|COMPONENT|list options"
 msgstr ""
 
-#: tools/gpgconf.c:60
+#: tools/gpgconf.c:61
 msgid "|COMPONENT|change options"
 msgstr ""
 
-#: tools/gpgconf.c:62
+#: tools/gpgconf.c:63
 msgid "apply global default values"
 msgstr ""
 
-#: tools/gpgconf.c:64
+#: tools/gpgconf.c:65
+#, fuzzy
+msgid "list global configuration file"
+msgstr "s'ha creat el nou fitxer d'opcions «%s»\n"
+
+#: tools/gpgconf.c:67
 #, fuzzy
 msgid "check global configuration file"
 msgstr "s'ha creat el nou fitxer d'opcions «%s»\n"
 
-#: tools/gpgconf.c:72
+#: tools/gpgconf.c:71
+msgid "use as output file"
+msgstr "fitxer d'eixida"
+
+#: tools/gpgconf.c:75
 msgid "activate changes at runtime, if possible"
 msgstr ""
 
-#: tools/gpgconf.c:94
+#: tools/gpgconf.c:97
 #, fuzzy
 msgid "Usage: gpgconf [options] (-h for help)"
 msgstr "Forma d'ús: gpg [opcions] [fitxers] (-h per a veure l'ajuda)"
 
-#: tools/gpgconf.c:97
+#: tools/gpgconf.c:100
 msgid ""
 "Syntax: gpgconf [options]\n"
 "Manage configuration options for tools of the GnuPG system\n"
 msgstr ""
 
-#: tools/gpgconf.c:176 tools/gpgconf.c:209
+#: tools/gpgconf.c:202 tools/gpgconf.c:240
 #, fuzzy
 msgid "usage: gpgconf [options] "
 msgstr "forma d'ús: gpg [opcions] "
 
-#: tools/gpgconf.c:178
+#: tools/gpgconf.c:204
 msgid "Need one component argument"
 msgstr ""
 
-#: tools/gpgconf.c:187
+#: tools/gpgconf.c:213
 #, fuzzy
 msgid "Component not found"
 msgstr "no s'ha trobat la clau pública"
 
-#: tools/gpgconf.c:211
+#: tools/gpgconf.c:242
 msgid "No argument allowed"
 msgstr ""
 
@@ -8291,92 +8337,111 @@ msgid "error closing %s: %s\n"
 msgstr "error en la lectura de «%s»: %s\n"
 
 # Execució de programes remots, o execució remota de programes? jm
-#: tools/symcryptrun.c:515
+#: tools/symcryptrun.c:486
 #, fuzzy
 msgid "no --program option provided\n"
 msgstr "no hi ha suport per a l'execució remota de programes\n"
 
-#: tools/symcryptrun.c:521
+#: tools/symcryptrun.c:492
 msgid "only --decrypt and --encrypt are supported\n"
 msgstr ""
 
-#: tools/symcryptrun.c:527
+#: tools/symcryptrun.c:498
 msgid "no --keyfile option provided\n"
 msgstr ""
 
-#: tools/symcryptrun.c:538
+#: tools/symcryptrun.c:509
 msgid "cannot allocate args vector\n"
 msgstr ""
 
-#: tools/symcryptrun.c:556
+#: tools/symcryptrun.c:527
 #, fuzzy, c-format
 msgid "could not create pipe: %s\n"
 msgstr "no s'ha pogut crear «%s»: %s\n"
 
-#: tools/symcryptrun.c:563
+#: tools/symcryptrun.c:534
 #, fuzzy, c-format
 msgid "could not create pty: %s\n"
 msgstr "no s'ha pogut crear «%s»: %s\n"
 
-#: tools/symcryptrun.c:579
+#: tools/symcryptrun.c:550
 #, fuzzy, c-format
 msgid "could not fork: %s\n"
 msgstr "%s: no s'ha trobat l'usuari: %s\n"
 
-#: tools/symcryptrun.c:607
+#: tools/symcryptrun.c:578
 #, fuzzy, c-format
 msgid "execv failed: %s\n"
 msgstr "ha fallat l'actualització: %s\n"
 
-#: tools/symcryptrun.c:636
+#: tools/symcryptrun.c:607
 #, fuzzy, c-format
 msgid "select failed: %s\n"
 msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
 
-#: tools/symcryptrun.c:653
+#: tools/symcryptrun.c:624
 #, fuzzy, c-format
 msgid "read failed: %s\n"
 msgstr "ha fallat l'actualització: %s\n"
 
-#: tools/symcryptrun.c:705
+#: tools/symcryptrun.c:676
 #, fuzzy, c-format
 msgid "pty read failed: %s\n"
 msgstr "ha fallat l'actualització: %s\n"
 
-#: tools/symcryptrun.c:757
+#: tools/symcryptrun.c:728
 #, fuzzy, c-format
 msgid "waitpid failed: %s\n"
 msgstr "ha fallat l'actualització: %s\n"
 
-#: tools/symcryptrun.c:771
+#: tools/symcryptrun.c:742
 #, c-format
 msgid "child aborted with status %i\n"
 msgstr ""
 
-#: tools/symcryptrun.c:826
+#: tools/symcryptrun.c:797
 #, fuzzy, c-format
 msgid "cannot allocate infile string: %s\n"
 msgstr "%s: no s'ha creat l'anell: %s\n"
 
-#: tools/symcryptrun.c:839
+#: tools/symcryptrun.c:810
 #, fuzzy, c-format
 msgid "cannot allocate outfile string: %s\n"
 msgstr "no s'ha pogut crear «%s»: %s\n"
 
-#: tools/symcryptrun.c:1014
+#: tools/symcryptrun.c:985
 #, c-format
 msgid "either %s or %s must be given\n"
 msgstr ""
 
-#: tools/symcryptrun.c:1041
+#: tools/symcryptrun.c:1012
 msgid "no class provided\n"
 msgstr ""
 
-#: tools/symcryptrun.c:1050
+#: tools/symcryptrun.c:1021
 #, fuzzy, c-format
 msgid "class %s is not supported\n"
 msgstr "l'algoritme de protecció %d%s no està suportat\n"
 
+#~ msgid "can't put notation data into v3 (PGP 2.x style) signatures\n"
+#~ msgstr ""
+#~ "no es poden ficar dades de notació dins de signatures v3 (estil PGP 2.x)\n"
+
+#~ msgid "can't put notation data into v3 (PGP 2.x style) key signatures\n"
+#~ msgstr ""
+#~ "no es poden ficar dades de notació dins de signatures de clau v3 (estil "
+#~ "PGP 2.x)\n"
+
+#~ msgid "can't put a policy URL into v3 (PGP 2.x style) signatures\n"
+#~ msgstr ""
+#~ "no es pot ficar una URL de política dins de signatures v3 (estil PGP 2."
+#~ "x)\n"
+
+#~ msgid "can't put a policy URL into v3 key (PGP 2.x style) signatures\n"
+#~ msgstr ""
+#~ "no es pot ficar una URL de política dins de signatures de clau v3 (estil "
+#~ "PGP 2.x)\n"
+
 #, fuzzy
 #~ msgid "shelll"
 #~ msgstr "ajuda"
index 7512274..977bdb2 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-1.3.92\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-09-14 13:27+0200\n"
+"POT-Creation-Date: 2007-11-19 16:02+0100\n"
 "PO-Revision-Date: 2004-11-26 09:12+0200\n"
 "Last-Translator: Roman Pavlik <rp@tns.cz>\n"
 "Language-Team: Czech <translations.cs@gnupg.cz>\n"
@@ -15,59 +15,76 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: agent/call-pinentry.c:196
+#: agent/call-pinentry.c:205
 #, fuzzy, c-format
 msgid "failed to acquire the pinentry lock: %s\n"
 msgstr "ulo¾ení fingerprintu se nezdaøilo: %s\n"
 
-#: agent/call-pinentry.c:438
+#: agent/call-pinentry.c:548
 msgid ""
 "Please enter your PIN, so that the secret key can be unlocked for this "
 "session"
 msgstr ""
 
-#: agent/call-pinentry.c:441
+#: agent/call-pinentry.c:551
 #, fuzzy
 msgid ""
 "Please enter your passphrase, so that the secret key can be unlocked for "
 "this session"
 msgstr "Prosím, vlo¾te heslo; toto je tajná vìta \n"
 
-#: agent/call-pinentry.c:489
+#. TRANSLATORS: This string is displayed pinentry as the label
+#. for the quality bar.
+#: agent/call-pinentry.c:586
+#, fuzzy
+msgid "Quality:"
+msgstr "platnost: %s"
+
+#. TRANSLATORS: This string is a tooltip, shown by pinentry when
+#. hovering over the quality bar.  Please use an appropriate
+#. sting to describe what this is about.  The length of the
+#. tooltip is limited to about 900 characters.  If you do not
+#. translate this a default english string (see source) will be
+#. used.
+#: agent/call-pinentry.c:604
+msgid "pinentry.qualitybar.tooltip"
+msgstr ""
+
+#: agent/call-pinentry.c:647
 #, c-format
 msgid "SETERROR %s (try %d of %d)"
 msgstr ""
 
-#: agent/call-pinentry.c:509 agent/call-pinentry.c:521
+#: agent/call-pinentry.c:667 agent/call-pinentry.c:679
 #, fuzzy
 msgid "PIN too long"
 msgstr "øádek je pøíli¹ dlouhý"
 
-#: agent/call-pinentry.c:510
+#: agent/call-pinentry.c:668
 #, fuzzy
 msgid "Passphrase too long"
 msgstr "øádek je pøíli¹ dlouhý"
 
-#: agent/call-pinentry.c:518
+#: agent/call-pinentry.c:676
 #, fuzzy
 msgid "Invalid characters in PIN"
 msgstr "Neplatný znak ve jménì\n"
 
-#: agent/call-pinentry.c:523
+#: agent/call-pinentry.c:681
 msgid "PIN too short"
 msgstr ""
 
-#: agent/call-pinentry.c:535
+#: agent/call-pinentry.c:693
 #, fuzzy
 msgid "Bad PIN"
 msgstr "¹patné MPI"
 
-#: agent/call-pinentry.c:536
+#: agent/call-pinentry.c:694
 #, fuzzy
 msgid "Bad Passphrase"
 msgstr "¹patné heslo"
 
-#: agent/call-pinentry.c:572
+#: agent/call-pinentry.c:730
 #, fuzzy
 msgid "Passphrase"
 msgstr "¹patné heslo"
@@ -77,21 +94,21 @@ msgstr "
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr "ochranný algoritmus %d není podporován\n"
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3141
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1059 g10/keygen.c:3141
 #: g10/keygen.c:3174 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
-#: g10/openfile.c:368 g10/sign.c:828 g10/sign.c:1137 g10/tdbio.c:536
+#: g10/openfile.c:368 g10/sign.c:798 g10/sign.c:1107 g10/tdbio.c:536
 #, c-format
 msgid "can't create `%s': %s\n"
 msgstr "nemohu vytvoøit `%s': %s\n"
 
 #: agent/command-ssh.c:700 g10/card-util.c:680 g10/card-util.c:749
 #: g10/dearmor.c:60 g10/dearmor.c:107 g10/decrypt.c:70 g10/encode.c:194
-#: g10/encode.c:504 g10/gpg.c:1010 g10/import.c:193 g10/keygen.c:2630
+#: g10/encode.c:504 g10/gpg.c:1060 g10/import.c:193 g10/keygen.c:2630
 #: g10/keyring.c:1532 g10/openfile.c:192 g10/openfile.c:353
-#: g10/plaintext.c:503 g10/sign.c:810 g10/sign.c:1005 g10/sign.c:1121
-#: g10/sign.c:1277 g10/tdbdump.c:139 g10/tdbdump.c:147 g10/tdbio.c:540
-#: g10/tdbio.c:603 g10/verify.c:99 g10/verify.c:162 sm/gpgsm.c:1865
-#: sm/gpgsm.c:1902 sm/gpgsm.c:1940 sm/qualified.c:72
+#: g10/plaintext.c:503 g10/sign.c:780 g10/sign.c:975 g10/sign.c:1091
+#: g10/sign.c:1247 g10/tdbdump.c:139 g10/tdbdump.c:147 g10/tdbio.c:540
+#: g10/tdbio.c:603 g10/verify.c:99 g10/verify.c:162 sm/gpgsm.c:1939
+#: sm/gpgsm.c:1976 sm/gpgsm.c:2014 sm/qualified.c:66
 #, c-format
 msgid "can't open `%s': %s\n"
 msgstr "nemohu otevøít `%s': %s\n"
@@ -131,14 +148,25 @@ msgstr "chyba p
 msgid "Please enter the passphrase for the ssh key%0A  %c"
 msgstr "Prosím, vlo¾te heslo; toto je tajná vìta \n"
 
-#: agent/command-ssh.c:2349
+#: agent/command-ssh.c:2342 agent/genkey.c:308 agent/genkey.c:430
+#: agent/protect-tool.c:1197
+#, fuzzy
+msgid "Please re-enter this passphrase"
+msgstr "zmìnit heslo"
+
+#: agent/command-ssh.c:2363
 #, c-format
 msgid ""
 "Please enter a passphrase to protect the received secret key%%0A   %s%%"
 "0Awithin gpg-agent's key storage"
 msgstr ""
 
-#: agent/command-ssh.c:2850
+#: agent/command-ssh.c:2401 agent/genkey.c:338 agent/genkey.c:461
+#: agent/protect-tool.c:1203 tools/symcryptrun.c:434
+msgid "does not match - try again"
+msgstr ""
+
+#: agent/command-ssh.c:2885
 #, fuzzy, c-format
 msgid "failed to create stream from socket: %s\n"
 msgstr "%s: nepodaøilo se vytvoøit hashovací tabulku: %s\n"
@@ -183,76 +211,66 @@ msgstr "Vlo
 msgid "Take this one anyway"
 msgstr "Pou¾ít pøesto tento klíè? (a/N) "
 
-#: agent/genkey.c:185
+#: agent/genkey.c:191
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Abe at least %u character long."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
+"at least %u character long."
 msgid_plural ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Abe at least %u characters long."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should be "
+"at least %u characters long."
 msgstr[0] ""
 msgstr[1] ""
 
-#: agent/genkey.c:202
+#: agent/genkey.c:212
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Acontain at least %u digit or special character."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
+"contain at least %u digit or%%0Aspecial character."
 msgid_plural ""
-"Warning:  You have entered a passphrase that%%0Ais obviously not secure.  A "
-"passphrase should%%0Acontain at least %u digits or special characters."
+"Warning: You have entered an insecure passphrase.%%0AA passphrase should "
+"contain at least %u digits or%%0Aspecial characters."
 msgstr[0] ""
 msgstr[1] ""
 
-#: agent/genkey.c:225
+#: agent/genkey.c:235
 #, c-format
 msgid ""
-"Warning:  You have entered a passphrase that%0Ais obviously not secure.  A "
-"passphrase may not%0Abe a known term or match certain pattern."
+"Warning: You have entered an insecure passphrase.%0AA passphrase may not be "
+"a known term or match%%0Acertain pattern."
 msgstr ""
 
-#: agent/genkey.c:238
+#: agent/genkey.c:251
 #, c-format
 msgid ""
 "You have not entered a passphrase!%0AAn empty passphrase is not allowed."
 msgstr ""
 
-#: agent/genkey.c:240
+#: agent/genkey.c:253
 #, c-format
 msgid ""
 "You have not entered a passphrase - this is in general a bad idea!%0APlease "
 "confirm that you do not want to have any protection on your key."
 msgstr ""
 
-#: agent/genkey.c:246
+#: agent/genkey.c:262
 msgid "Yes, protection is not needed"
 msgstr ""
 
-#: agent/genkey.c:290
+#: agent/genkey.c:306
 #, fuzzy, c-format
 msgid "Please enter the passphrase to%0Ato protect your new key"
 msgstr ""
 "Pro ochranu Va¹eho tajného klíèe musíte zadat heslo.\n"
 "\n"
 
-#: agent/genkey.c:292 agent/genkey.c:413 agent/protect-tool.c:1219
-#, fuzzy
-msgid "Please re-enter this passphrase"
-msgstr "zmìnit heslo"
-
-#: agent/genkey.c:321 agent/genkey.c:443 agent/protect-tool.c:1225
-#: tools/symcryptrun.c:456
-msgid "does not match - try again"
-msgstr ""
-
-#: agent/genkey.c:412
+#: agent/genkey.c:429
 #, fuzzy
 msgid "Please enter the new passphrase"
 msgstr "zmìnit heslo"
 
-#: agent/gpg-agent.c:118 agent/preset-passphrase.c:72 agent/protect-tool.c:109
-#: scd/scdaemon.c:104
+#: agent/gpg-agent.c:117 agent/preset-passphrase.c:72 agent/protect-tool.c:109
+#: scd/scdaemon.c:101
 #, fuzzy
 msgid ""
 "@Options:\n"
@@ -262,66 +280,65 @@ msgstr ""
 "Mo¾nosti:\n"
 " "
 
-#: agent/gpg-agent.c:120 scd/scdaemon.c:106
+#: agent/gpg-agent.c:119 scd/scdaemon.c:103
 msgid "run in server mode (foreground)"
 msgstr ""
 
-#: agent/gpg-agent.c:121 scd/scdaemon.c:109
+#: agent/gpg-agent.c:120 scd/scdaemon.c:106
 msgid "run in daemon mode (background)"
 msgstr ""
 
-#: agent/gpg-agent.c:122 g10/gpg.c:469 g10/gpgv.c:70 kbx/kbxutil.c:88
-#: scd/scdaemon.c:110 sm/gpgsm.c:340 tools/gpg-connect-agent.c:58
-#: tools/gpgconf.c:69 tools/symcryptrun.c:164
+#: agent/gpg-agent.c:121 g10/gpg.c:471 g10/gpgv.c:70 kbx/kbxutil.c:88
+#: scd/scdaemon.c:107 sm/gpgsm.c:342 tools/gpg-connect-agent.c:66
+#: tools/gpgconf.c:72 tools/symcryptrun.c:164
 msgid "verbose"
 msgstr "s dodateènými informacemi"
 
-#: agent/gpg-agent.c:123 g10/gpgv.c:71 kbx/kbxutil.c:89 scd/scdaemon.c:111
-#: sm/gpgsm.c:341
+#: agent/gpg-agent.c:122 g10/gpgv.c:71 kbx/kbxutil.c:89 scd/scdaemon.c:108
+#: sm/gpgsm.c:343
 msgid "be somewhat more quiet"
 msgstr "být o trochu víc tichý"
 
-#: agent/gpg-agent.c:124 scd/scdaemon.c:112
+#: agent/gpg-agent.c:123 scd/scdaemon.c:109
 msgid "sh-style command output"
 msgstr ""
 
-#: agent/gpg-agent.c:125 scd/scdaemon.c:113
+#: agent/gpg-agent.c:124 scd/scdaemon.c:110
 msgid "csh-style command output"
 msgstr ""
 
-#: agent/gpg-agent.c:126 tools/symcryptrun.c:167
+#: agent/gpg-agent.c:125 tools/symcryptrun.c:167
 #, fuzzy
 msgid "|FILE|read options from FILE"
 msgstr "ètu mo¾nosti z `%s'\n"
 
-#: agent/gpg-agent.c:131 scd/scdaemon.c:122
+#: agent/gpg-agent.c:130 scd/scdaemon.c:119
 msgid "do not detach from the console"
 msgstr ""
 
-#: agent/gpg-agent.c:132
+#: agent/gpg-agent.c:131
 msgid "do not grab keyboard and mouse"
 msgstr ""
 
-#: agent/gpg-agent.c:133 scd/scdaemon.c:123 sm/gpgsm.c:343
-#: tools/symcryptrun.c:166
+#: agent/gpg-agent.c:132 scd/scdaemon.c:120 tools/symcryptrun.c:166
 #, fuzzy
 msgid "use a log file for the server"
 msgstr "vyhledat klíèe na serveru klíèù"
 
-#: agent/gpg-agent.c:135
+#: agent/gpg-agent.c:134
 #, fuzzy
 msgid "use a standard location for the socket"
 msgstr "nastavit sadu preferencí pro vybrané u¾ivatelské ID"
 
-#: agent/gpg-agent.c:138
+#: agent/gpg-agent.c:137
 msgid "|PGM|use PGM as the PIN-Entry program"
 msgstr ""
 
-#: agent/gpg-agent.c:141
+#: agent/gpg-agent.c:140
 msgid "|PGM|use PGM as the SCdaemon program"
 msgstr ""
 
-#: agent/gpg-agent.c:142
+#: agent/gpg-agent.c:141
 #, fuzzy
 msgid "do not use the SCdaemon"
 msgstr "aktualizovat databázi dùvìry"
@@ -359,152 +376,167 @@ msgstr ""
 msgid "|FILE|write environment settings also to FILE"
 msgstr ""
 
-#: agent/gpg-agent.c:273 agent/preset-passphrase.c:94 agent/protect-tool.c:146
-#: scd/scdaemon.c:206 sm/gpgsm.c:565 tools/gpg-connect-agent.c:124
-#: tools/gpgconf.c:91 tools/symcryptrun.c:204
+#: agent/gpg-agent.c:282 agent/preset-passphrase.c:94 agent/protect-tool.c:146
+#: scd/scdaemon.c:207 sm/gpgsm.c:570 tools/gpg-connect-agent.c:171
+#: tools/gpgconf.c:94 tools/symcryptrun.c:204
 #, fuzzy
 msgid "Please report bugs to <"
 msgstr ""
 "Chyby oznamte, prosím, na adresu <gnupg-bugs@gnu.org>.\n"
 "Pøipomínky k pøekladu <rp@tns.cz>.\n"
 
-#: agent/gpg-agent.c:276
+#: agent/gpg-agent.c:285
 #, fuzzy
 msgid "Usage: gpg-agent [options] (-h for help)"
 msgstr "Pou¾ití: gpg [mo¾nosti] [soubory] (-h pro pomoc)"
 
-#: agent/gpg-agent.c:278
+#: agent/gpg-agent.c:287
 msgid ""
 "Syntax: gpg-agent [options] [command [args]]\n"
 "Secret key management for GnuPG\n"
 msgstr ""
 
-#: agent/gpg-agent.c:313 g10/gpg.c:916 scd/scdaemon.c:246 sm/gpgsm.c:679
+#: agent/gpg-agent.c:322 g10/gpg.c:966 scd/scdaemon.c:247 sm/gpgsm.c:732
 #, c-format
 msgid "invalid debug-level `%s' given\n"
 msgstr ""
 
-#: agent/gpg-agent.c:512 agent/protect-tool.c:1066 kbx/kbxutil.c:428
-#: scd/scdaemon.c:340 sm/gpgsm.c:819 sm/gpgsm.c:822 tools/symcryptrun.c:1026
+#: agent/gpg-agent.c:521 agent/protect-tool.c:1066 kbx/kbxutil.c:428
+#: scd/scdaemon.c:342 sm/gpgsm.c:873 sm/gpgsm.c:876 tools/symcryptrun.c:997
 #, c-format
 msgid "%s is too old (need %s, have %s)\n"
 msgstr ""
 
-#: agent/gpg-agent.c:605 g10/gpg.c:2023 scd/scdaemon.c:416 sm/gpgsm.c:910
+#: agent/gpg-agent.c:620 g10/gpg.c:2072 scd/scdaemon.c:423 sm/gpgsm.c:964
 #, c-format
 msgid "NOTE: no default option file `%s'\n"
 msgstr "POZNÁMKA: neexistuje implicitní soubor s mo¾nostmi `%s'\n"
 
-#: agent/gpg-agent.c:610 agent/gpg-agent.c:1177 g10/gpg.c:2027
-#: scd/scdaemon.c:421 sm/gpgsm.c:914 tools/symcryptrun.c:959
+#: agent/gpg-agent.c:625 agent/gpg-agent.c:1205 g10/gpg.c:2076
+#: scd/scdaemon.c:428 sm/gpgsm.c:968 tools/symcryptrun.c:930
 #, c-format
 msgid "option file `%s': %s\n"
 msgstr "soubor s mo¾nostmi `%s': %s\n"
 
-#: agent/gpg-agent.c:618 g10/gpg.c:2034 scd/scdaemon.c:429 sm/gpgsm.c:921
+#: agent/gpg-agent.c:633 g10/gpg.c:2083 scd/scdaemon.c:436 sm/gpgsm.c:975
 #, c-format
 msgid "reading options from `%s'\n"
 msgstr "ètu mo¾nosti z `%s'\n"
 
-#: agent/gpg-agent.c:947 g10/plaintext.c:140 g10/plaintext.c:145
+#: agent/gpg-agent.c:965 g10/plaintext.c:140 g10/plaintext.c:145
 #: g10/plaintext.c:162
 #, c-format
 msgid "error creating `%s': %s\n"
 msgstr "chyba pøi vytváøení `%s': %s\n"
 
-#: agent/gpg-agent.c:1247 agent/gpg-agent.c:1373 agent/gpg-agent.c:1377
-#: agent/gpg-agent.c:1418 agent/gpg-agent.c:1422 g10/exec.c:172
-#: g10/openfile.c:429 scd/scdaemon.c:908
+#: agent/gpg-agent.c:1275 agent/gpg-agent.c:1387 agent/gpg-agent.c:1391
+#: agent/gpg-agent.c:1432 agent/gpg-agent.c:1436 g10/exec.c:172
+#: g10/openfile.c:429 scd/scdaemon.c:921
 #, c-format
 msgid "can't create directory `%s': %s\n"
 msgstr "nemohu vytvoøit adresáø `%s': %s\n"
 
-#: agent/gpg-agent.c:1261 scd/scdaemon.c:922
+#: agent/gpg-agent.c:1289 scd/scdaemon.c:935
 msgid "name of socket too long\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1287 scd/scdaemon.c:948
+#: agent/gpg-agent.c:1312 scd/scdaemon.c:958
 #, fuzzy, c-format
 msgid "can't create socket: %s\n"
 msgstr "nemohu vytvoøit `%s': %s\n"
 
-#: agent/gpg-agent.c:1305 agent/gpg-agent.c:1321
+#: agent/gpg-agent.c:1321
+#, c-format
+msgid "socket name `%s' is too long\n"
+msgstr ""
+
+#: agent/gpg-agent.c:1333
 #, fuzzy
 msgid "a gpg-agent is already running - not starting a new one\n"
 msgstr "gpg-agent není v tomto sezení dostupný\n"
 
-#: agent/gpg-agent.c:1335 scd/scdaemon.c:977
+#: agent/gpg-agent.c:1344 scd/scdaemon.c:978
+#, fuzzy
+msgid "error getting nonce for the socket\n"
+msgstr "chyba pøi získání nového PINu: %s\n"
+
+#: agent/gpg-agent.c:1349 scd/scdaemon.c:981
 #, fuzzy, c-format
 msgid "error binding socket to `%s': %s\n"
 msgstr "chyba pøi hledání záznamu dùvìryhodnosti v `%s': %s\n"
 
-#: agent/gpg-agent.c:1347 scd/scdaemon.c:985
+#: agent/gpg-agent.c:1361 scd/scdaemon.c:990
 #, fuzzy, c-format
 msgid "listen() failed: %s\n"
 msgstr "aktualizace selhala: %s\n"
 
-#: agent/gpg-agent.c:1353 scd/scdaemon.c:991
+#: agent/gpg-agent.c:1367 scd/scdaemon.c:997
 #, fuzzy, c-format
 msgid "listening on socket `%s'\n"
 msgstr "zapisuji tajný klíè do `%s'\n"
 
-#: agent/gpg-agent.c:1381 agent/gpg-agent.c:1428 g10/openfile.c:432
+#: agent/gpg-agent.c:1395 agent/gpg-agent.c:1442 g10/openfile.c:432
 #, c-format
 msgid "directory `%s' created\n"
 msgstr "adresáø `%s' vytvoøen\n"
 
-#: agent/gpg-agent.c:1434
+#: agent/gpg-agent.c:1448
 #, fuzzy, c-format
 msgid "stat() failed for `%s': %s\n"
 msgstr "fstat(%d) selhal v %s: %s\n"
 
-#: agent/gpg-agent.c:1438
+#: agent/gpg-agent.c:1452
 #, fuzzy, c-format
 msgid "can't use `%s' as home directory\n"
 msgstr "nemohu vytvoøit adresáø `%s': %s\n"
 
-#: agent/gpg-agent.c:1549
+#: agent/gpg-agent.c:1562 scd/scdaemon.c:1013
+#, fuzzy, c-format
+msgid "error reading nonce on fd %d: %s\n"
+msgstr "chyba pøi ètení `%s': %s\n"
+
+#: agent/gpg-agent.c:1584
 #, c-format
 msgid "handler 0x%lx for fd %d started\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1554
+#: agent/gpg-agent.c:1589
 #, c-format
 msgid "handler 0x%lx for fd %d terminated\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1571
+#: agent/gpg-agent.c:1609
 #, c-format
 msgid "ssh handler 0x%lx for fd %d started\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1576
+#: agent/gpg-agent.c:1614
 #, c-format
 msgid "ssh handler 0x%lx for fd %d terminated\n"
 msgstr ""
 
-#: agent/gpg-agent.c:1680 scd/scdaemon.c:1117
+#: agent/gpg-agent.c:1718 scd/scdaemon.c:1135
 #, fuzzy, c-format
 msgid "pth_select failed: %s - waiting 1s\n"
 msgstr "aktualizace tajného klíèe selhala: %s\n"
 
-#: agent/gpg-agent.c:1786 scd/scdaemon.c:1184
+#: agent/gpg-agent.c:1827 scd/scdaemon.c:1202
 #, fuzzy, c-format
 msgid "%s %s stopped\n"
 msgstr "%s: pøeskoèeno: %s\n"
 
-#: agent/gpg-agent.c:1809
+#: agent/gpg-agent.c:1850
 #, fuzzy
 msgid "no gpg-agent running in this session\n"
 msgstr "gpg-agent není v tomto sezení dostupný\n"
 
-#: agent/gpg-agent.c:1820 common/simple-pwquery.c:329
-#: tools/gpg-connect-agent.c:756
+#: agent/gpg-agent.c:1861 common/simple-pwquery.c:329
+#: tools/gpg-connect-agent.c:1953
 msgid "malformed GPG_AGENT_INFO environment variable\n"
 msgstr "¹patný formát promìnné prostøedí GPG_AGENT_INFO\n"
 
-#: agent/gpg-agent.c:1833 common/simple-pwquery.c:341
-#: tools/gpg-connect-agent.c:767
+#: agent/gpg-agent.c:1874 common/simple-pwquery.c:341
+#: tools/gpg-connect-agent.c:1964
 #, c-format
 msgid "gpg-agent protocol version %d is not supported\n"
 msgstr "gpg-agent protokol verze %d není podporován\n"
@@ -531,40 +563,40 @@ msgid ""
 "Secret key maintenance tool\n"
 msgstr ""
 
-#: agent/protect-tool.c:1210
+#: agent/protect-tool.c:1188
 #, fuzzy
 msgid "Please enter the passphrase to unprotect the PKCS#12 object."
 msgstr "Prosím, vlo¾te heslo; toto je tajná vìta \n"
 
-#: agent/protect-tool.c:1213
+#: agent/protect-tool.c:1191
 #, fuzzy
 msgid "Please enter the passphrase to protect the new PKCS#12 object."
 msgstr "Prosím, vlo¾te heslo; toto je tajná vìta \n"
 
-#: agent/protect-tool.c:1216
+#: agent/protect-tool.c:1194
 msgid ""
 "Please enter the passphrase to protect the imported object within the GnuPG "
 "system."
 msgstr ""
 
-#: agent/protect-tool.c:1221
+#: agent/protect-tool.c:1199
 #, fuzzy
 msgid ""
 "Please enter the passphrase or the PIN\n"
 "needed to complete this operation."
 msgstr "Prosím, vlo¾te heslo; toto je tajná vìta \n"
 
-#: agent/protect-tool.c:1226 tools/symcryptrun.c:457
+#: agent/protect-tool.c:1204 tools/symcryptrun.c:435
 #, fuzzy
 msgid "Passphrase:"
 msgstr "¹patné heslo"
 
-#: agent/protect-tool.c:1240 tools/symcryptrun.c:471
+#: agent/protect-tool.c:1212 tools/symcryptrun.c:442
 #, fuzzy, c-format
 msgid "error while asking for the passphrase: %s\n"
 msgstr "chyba pøi vytváøení hesla: %s\n"
 
-#: agent/protect-tool.c:1243 tools/symcryptrun.c:475
+#: agent/protect-tool.c:1215 tools/symcryptrun.c:446
 #, fuzzy
 msgid "cancelled\n"
 msgstr "zru¹eno"
@@ -676,7 +708,8 @@ msgstr "zm
 msgid "I'll change it later"
 msgstr ""
 
-#: common/exechelp.c:371 common/exechelp.c:459 tools/gpgconf-comp.c:1340
+#: common/exechelp.c:371 common/exechelp.c:459 tools/gpgconf-comp.c:1338
+#: tools/gpgconf-comp.c:1641
 #, fuzzy, c-format
 msgid "error creating a pipe: %s\n"
 msgstr "chyba pøi vytváøení hesla: %s\n"
@@ -824,75 +857,80 @@ msgstr ""
 msgid "out of core while allocating %lu bytes"
 msgstr ""
 
-#: g10/armor.c:366
+#: g10/armor.c:379
 #, c-format
 msgid "armor: %s\n"
 msgstr "ASCII kódování: %s\n"
 
-#: g10/armor.c:405
+#: g10/armor.c:418
 msgid "invalid armor header: "
 msgstr "neplatná hlavièka ASCII kódování: "
 
-#: g10/armor.c:416
+#: g10/armor.c:429
 msgid "armor header: "
 msgstr "ASCII hlavièka: "
 
-#: g10/armor.c:427
+#: g10/armor.c:442
 msgid "invalid clearsig header\n"
 msgstr "neplatná hlavièka podpisu v èitelném formátu\n"
 
-#: g10/armor.c:479
+#: g10/armor.c:455
+#, fuzzy
+msgid "unknown armor header: "
+msgstr "ASCII hlavièka: "
+
+#: g10/armor.c:508
 msgid "nested clear text signatures\n"
 msgstr "vnoøené podpisy v èitelném formátu\n"
 
-#: g10/armor.c:614
+#: g10/armor.c:643
 msgid "unexpected armor: "
 msgstr "neoèekávaný ASCII armor: "
 
-#: g10/armor.c:626
+#: g10/armor.c:655
 msgid "invalid dash escaped line: "
 msgstr "nesprávné oznaèení øádku mínusy: "
 
-#: g10/armor.c:780 g10/armor.c:1390
+#: g10/armor.c:809 g10/armor.c:1419
 #, c-format
 msgid "invalid radix64 character %02X skipped\n"
 msgstr "neplatný radix64 znak %02X byl pøeskoèen\n"
 
-#: g10/armor.c:823
+#: g10/armor.c:852
 msgid "premature eof (no CRC)\n"
 msgstr "pøedèasný konec souboru (¾ádné CRC)\n"
 
-#: g10/armor.c:857
+#: g10/armor.c:886
 msgid "premature eof (in CRC)\n"
 msgstr "pøedèasný konec souboru (¾ádné CRC)\n"
 
-#: g10/armor.c:865
+#: g10/armor.c:894
 msgid "malformed CRC\n"
 msgstr "¹patný formát CRC\n"
 
-#: g10/armor.c:869 g10/armor.c:1427
+#: g10/armor.c:898 g10/armor.c:1456
 #, c-format
 msgid "CRC error; %06lX - %06lX\n"
 msgstr "Chyba CRC; %06lX - %06lX\n"
 
-#: g10/armor.c:889
+#: g10/armor.c:918
 msgid "premature eof (in trailer)\n"
 msgstr "pøedèasný konec souboru (v patièce)\n"
 
-#: g10/armor.c:893
+#: g10/armor.c:922
 msgid "error in trailer line\n"
 msgstr "chyba v patièce\n"
 
-#: g10/armor.c:1204
+#: g10/armor.c:1233
 msgid "no valid OpenPGP data found.\n"
 msgstr "nenalezena ¾ádná platná data ve formátu OpenPGP.\n"
 
-#: g10/armor.c:1209
+#: g10/armor.c:1238
 #, c-format
 msgid "invalid armor: line longer than %d characters\n"
 msgstr "neplatné kódování ASCII: øádek je del¹í ne¾ %d znakù\n"
 
-#: g10/armor.c:1213
+#: g10/armor.c:1242
 msgid ""
 "quoted printable character in armor - probably a buggy MTA has been used\n"
 msgstr ""
@@ -1211,11 +1249,11 @@ msgstr "administr
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Neplatný pøíkaz (zkuste \"help\")\n"
 
-#: g10/decrypt.c:110 g10/encode.c:890
+#: g10/decrypt.c:110 g10/encode.c:876
 msgid "--output doesn't work for this command\n"
 msgstr "--output pro tento pøíkaz není platný\n"
 
-#: g10/decrypt.c:166 g10/gpg.c:3858 g10/keyring.c:376 g10/keyring.c:663
+#: g10/decrypt.c:166 g10/gpg.c:3931 g10/keyring.c:376 g10/keyring.c:663
 #, c-format
 msgid "can't open `%s'\n"
 msgstr "nelze otevøít `%s'\n"
@@ -1226,7 +1264,7 @@ msgstr "nelze otev
 msgid "key \"%s\" not found: %s\n"
 msgstr "klíè \"%s\" nenalezen: %s\n"
 
-#: g10/delkey.c:81 g10/export.c:354 g10/import.c:2355 g10/keyserver.c:1733
+#: g10/delkey.c:81 g10/export.c:354 g10/import.c:2367 g10/keyserver.c:1733
 #: g10/revoke.c:232 g10/revoke.c:477
 #, c-format
 msgid "error reading keyblock: %s\n"
@@ -1267,7 +1305,7 @@ msgid "use option \"--delete-secret-keys\" to delete it first.\n"
 msgstr ""
 "abyste ho smazal(a), pou¾ijte nejprve parametr \"--delete-secret-key\".\n"
 
-#: g10/encode.c:226 g10/sign.c:1296
+#: g10/encode.c:226 g10/sign.c:1266
 #, c-format
 msgid "error creating passphrase: %s\n"
 msgstr "chyba pøi vytváøení hesla: %s\n"
@@ -1286,7 +1324,7 @@ msgstr "pou
 msgid "`%s' already compressed\n"
 msgstr "`%s' je ji¾ zkomprimován\n"
 
-#: g10/encode.c:311 g10/encode.c:625 g10/sign.c:593
+#: g10/encode.c:311 g10/encode.c:611 g10/sign.c:561
 #, c-format
 msgid "WARNING: `%s' is an empty file\n"
 msgstr "VAROVÁNÍ: soubor `%s' je prázdný\n"
@@ -1313,7 +1351,7 @@ msgid ""
 msgstr ""
 "VAROVÁNÍ: vy¾ádaná symetrická ¹ifra %s (%d) nevyhovuje pøedvolbám pøíjemce\n"
 
-#: g10/encode.c:669 g10/sign.c:966
+#: g10/encode.c:655 g10/sign.c:936
 #, c-format
 msgid ""
 "WARNING: forcing compression algorithm %s (%d) violates recipient "
@@ -1322,17 +1360,17 @@ msgstr ""
 "VAROVÁNÍ: vy¾ádaný komprimaèní algoritmus %s (%d) nevyhovuje pøedvolbám "
 "pøíjemce\n"
 
-#: g10/encode.c:765
+#: g10/encode.c:751
 #, c-format
 msgid "forcing symmetric cipher %s (%d) violates recipient preferences\n"
 msgstr "vy¾ádaná symetrická ¹ifra %s (%d) nevyhovuje pøedvolbám pøíjemce\n"
 
-#: g10/encode.c:835 g10/pkclist.c:813 g10/pkclist.c:861
+#: g10/encode.c:821 g10/pkclist.c:813 g10/pkclist.c:861
 #, c-format
 msgid "you may not use %s while in %s mode\n"
 msgstr "pou¾ití %s není v módu %s dovoleno\n"
 
-#: g10/encode.c:862
+#: g10/encode.c:848
 #, c-format
 msgid "%s/%s encrypted for: \"%s\"\n"
 msgstr "%s/%s za¹ifrovaný pro: %s\n"
@@ -1515,7 +1553,7 @@ msgstr "pou
 msgid "key %s: secret key without public key - skipped\n"
 msgstr "klíè %s: tajný klíè bez klíèe veøejného - pøeskoèeno\n"
 
-#: g10/gpg.c:368 kbx/kbxutil.c:71 sm/gpgsm.c:242 tools/gpgconf.c:55
+#: g10/gpg.c:370 kbx/kbxutil.c:71 sm/gpgsm.c:244 tools/gpgconf.c:56
 msgid ""
 "@Commands:\n"
 " "
@@ -1523,132 +1561,132 @@ msgstr ""
 "@Pøíkazy:\n"
 " "
 
-#: g10/gpg.c:370
+#: g10/gpg.c:372
 msgid "|[file]|make a signature"
 msgstr "|[soubor]|vytvoøit podpis"
 
-#: g10/gpg.c:371
+#: g10/gpg.c:373
 msgid "|[file]|make a clear text signature"
 msgstr "|[soubor]|vytvoøit podpis v èitelném dokumentu"
 
-#: g10/gpg.c:372 sm/gpgsm.c:246
+#: g10/gpg.c:374 sm/gpgsm.c:248
 msgid "make a detached signature"
 msgstr "vytvoøit podpis oddìlený od dokumentu"
 
-#: g10/gpg.c:373 sm/gpgsm.c:247
+#: g10/gpg.c:375 sm/gpgsm.c:249
 msgid "encrypt data"
 msgstr "¹ifrovat data"
 
-#: g10/gpg.c:375 sm/gpgsm.c:248
+#: g10/gpg.c:377 sm/gpgsm.c:250
 msgid "encryption only with symmetric cipher"
 msgstr "¹ifrování pouze se symetrickou ¹ifrou"
 
-#: g10/gpg.c:377 sm/gpgsm.c:249
+#: g10/gpg.c:379 sm/gpgsm.c:251
 msgid "decrypt data (default)"
 msgstr "de¹ifrovat data (implicitnì)"
 
-#: g10/gpg.c:379 sm/gpgsm.c:250
+#: g10/gpg.c:381 sm/gpgsm.c:252
 msgid "verify a signature"
 msgstr "verifikovat podpis"
 
-#: g10/gpg.c:381 sm/gpgsm.c:252
+#: g10/gpg.c:383 sm/gpgsm.c:254
 msgid "list keys"
 msgstr "vypsat seznam klíèù"
 
-#: g10/gpg.c:383
+#: g10/gpg.c:385
 msgid "list keys and signatures"
 msgstr "vypsat seznam klíèù a podpisù"
 
-#: g10/gpg.c:384
+#: g10/gpg.c:386
 msgid "list and check key signatures"
 msgstr "vypsat a zkontrolovat podpisy klíèù"
 
-#: g10/gpg.c:385 sm/gpgsm.c:256
+#: g10/gpg.c:387 sm/gpgsm.c:258
 msgid "list keys and fingerprints"
 msgstr "vypsat seznam klíèù a fingerprintù"
 
-#: g10/gpg.c:386 sm/gpgsm.c:254
+#: g10/gpg.c:388 sm/gpgsm.c:256
 msgid "list secret keys"
 msgstr "vypsat seznam tajných klíèù"
 
-#: g10/gpg.c:387
+#: g10/gpg.c:389
 msgid "generate a new key pair"
 msgstr "vytvoøit&n