Fixed card key generation of gpg2.
authorWerner Koch <wk@gnupg.org>
Thu, 5 Jul 2007 16:58:19 +0000 (16:58 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 5 Jul 2007 16:58:19 +0000 (16:58 +0000)
Reveal less information about timings while generating a key.

51 files changed:
ChangeLog
NEWS
agent/ChangeLog
agent/call-scd.c
common/ChangeLog
common/Makefile.am
common/gettime.c
common/t-gettime.c [new file with mode: 0644]
common/util.h
configure.ac
doc/DETAILS
doc/debugging.texi
g10/ChangeLog
g10/call-agent.c
g10/call-agent.h
g10/card-util.c
g10/keyedit.c
g10/keygen.c
g10/main.h
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/app-common.h
scd/app-openpgp.c
scd/app.c
scd/command.c

index e1ceb19..f1a31f6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-07-05  Werner Koch  <wk@g10code.com>
+
+       * configure.ac: Require libassuan 1.0.2.
+
 2007-07-05  Marcus Brinkmann  <marcus@g10code.de>
 
        * configure.ac: Invoke AM_LANGINFO_CODESET.
diff --git a/NEWS b/NEWS
index 097ce35..322bcd2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ Noteworthy changes in version 2.0.5
  * The command --gen-key may now be used instead of the
    gpgsm-gencert.sh script.
 
+ * Changed key generation to reveal less information about the
+   machine.  Bug fixes for gpg2's card key generation.
+
 
 Noteworthy changes in version 2.0.4 (2007-05-09)
 ------------------------------------------------
index adf6b70..e6f83ee 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-05  Werner Koch  <wk@g10code.com>
+
+       * call-scd.c (struct inq_needpin_s): New.
+       (inq_needpin): Pass unknown inquiries up.
+
 2007-07-04  Werner Koch  <wk@g10code.com>
 
        * gpg-agent.c (TIMERTICK_INTERVAL): New.
index 8c81812..f0dd3ad 100644 (file)
@@ -1,5 +1,5 @@
 /* call-scd.c - fork of the scdaemon to do SC operations
- *     Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ *     Copyright (C) 2001, 2002, 2005, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -79,6 +79,8 @@ struct inq_needpin_s
   assuan_context_t ctx;
   int (*getpin_cb)(void *, const char *, char*, size_t);
   void *getpin_cb_arg;
+  assuan_context_t passthru;  /* If not NULL, pass unknown inquiries
+                                 up to the caller.  */
 };
 
 
@@ -731,6 +733,36 @@ inq_needpin (void *opaque, const char *line)
     {
       rc = parm->getpin_cb (parm->getpin_cb_arg, "", NULL, 0);
     }
+  else if (parm->passthru)
+    {
+      unsigned char *value;
+      size_t valuelen;
+      int rest;
+      int needrest = !strncmp (line, "KEYDATA", 8);
+
+      /* Pass the inquiry up to our caller.  We limit the maximum
+         amount to an arbitrary value.  As we know that the KEYDATA
+         enquiry is pretty sensitive we disable logging then */
+      if ((rest = (needrest
+                   && !assuan_get_flag (parm->passthru, ASSUAN_CONFIDENTIAL))))
+        assuan_begin_confidential (parm->passthru);
+      rc = assuan_inquire (parm->passthru, line, &value, &valuelen, 8096);
+      if (rest)
+        assuan_end_confidential (parm->passthru);
+      if (!rc)
+        {
+          if ((rest = (needrest 
+                       && !assuan_get_flag (parm->ctx, ASSUAN_CONFIDENTIAL))))
+            assuan_begin_confidential (parm->ctx);
+          rc = assuan_send_data (parm->ctx, value, valuelen);
+          if (rest)
+            assuan_end_confidential (parm->ctx);
+          xfree (value);
+        }
+      else
+        log_error ("error forwarding inquiry `%s': %s\n", 
+                   line, gpg_strerror (rc));
+    }
   else
     {
       log_error ("unsupported inquiry `%s'\n", line);
@@ -780,6 +812,7 @@ agent_card_pksign (ctrl_t ctrl,
   inqparm.ctx = ctrl->scd_local->ctx;
   inqparm.getpin_cb = getpin_cb;
   inqparm.getpin_cb_arg = getpin_cb_arg;
+  inqparm.passthru = 0;
   snprintf (line, DIM(line)-1, 
             ctrl->use_auth_call? "PKAUTH %s":"PKSIGN %s", keyid);
   line[DIM(line)-1] = 0;
@@ -850,6 +883,7 @@ agent_card_pkdecrypt (ctrl_t ctrl,
   inqparm.ctx = ctrl->scd_local->ctx;
   inqparm.getpin_cb = getpin_cb;
   inqparm.getpin_cb_arg = getpin_cb_arg;
+  inqparm.passthru = 0;
   snprintf (line, DIM(line)-1, "PKDECRYPT %s", keyid);
   line[DIM(line)-1] = 0;
   rc = assuan_transact (ctrl->scd_local->ctx, line,
@@ -1065,8 +1099,8 @@ pass_data_thru (void *opaque, const void *buffer, size_t length)
 
 /* Send the line CMDLINE with command for the SCDdaemon to it and send
    all status messages back.  This command is used as a general quoting
-   mechanism to pass everything verbatim to SCDAEMOPN.  The PIN
-   inquirey is handled inside gpg-agent. */
+   mechanism to pass everything verbatim to SCDAEMON.  The PIN
+   inquiry is handled inside gpg-agent.  */
 int
 agent_card_scd (ctrl_t ctrl, const char *cmdline,
                 int (*getpin_cb)(void *, const char *, char*, size_t),
@@ -1082,6 +1116,7 @@ agent_card_scd (ctrl_t ctrl, const char *cmdline,
   inqparm.ctx = ctrl->scd_local->ctx;
   inqparm.getpin_cb = getpin_cb;
   inqparm.getpin_cb_arg = getpin_cb_arg;
+  inqparm.passthru = assuan_context;
   rc = assuan_transact (ctrl->scd_local->ctx, cmdline,
                         pass_data_thru, assuan_context,
                         inq_needpin, &inqparm,
index cbdf9ff..6328921 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-05  Werner Koch  <wk@g10code.com>
+
+       * t-gettime.c: New. 
+       * gettime.c (isotime2epoch, epoch2isotime): New.
+
 2007-07-04  Werner Koch  <wk@g10code.com>
 
        * estream.c (es_init_do): Do not throw an error if pth as already
index 3a064f3..08ead79 100644 (file)
@@ -81,13 +81,15 @@ libgpgrl_a_SOURCES = \
 #
 # Module tests
 #
-module_tests = t-convert
+module_tests = t-convert t-gettime
 
-t_common_ldadd = ../jnlib/libjnlib.a $(libcommon) ../gl/libgnu.a \
+t_common_ldadd = $(libcommon) ../jnlib/libjnlib.a ../gl/libgnu.a \
                  $(LIBGCRYPT_LIBS) $(GPG_ERROR_LIBS) $(LIBINTL) $(LIBICONV)
 
 t_convert_DEPENDENCIES = convert.c libcommon.a
 t_convert_LDADD = $(t_common_ldadd)
+t_gettime_DEPENDENCIES = gettime.c libcommon.a
+t_gettime_LDADD = $(t_common_ldadd)
 
 
 $(PROGRAMS): ../jnlib/libjnlib.a $(libcommon) ../gl/libgnu.a
index b33f8ab..56ff40e 100644 (file)
@@ -1,5 +1,5 @@
 /* gettime.c - Wrapper for time functions
- *     Copyright (C) 1998, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 2002, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -20,6 +20,7 @@
 #include <config.h>
 #include <stdlib.h>
 #include <time.h>
+#include <ctype.h>
 #ifdef HAVE_LANGINFO_H
 #include <langinfo.h>
 #endif
@@ -64,9 +65,9 @@ gnupg_get_isotime (gnupg_isotime_t timebuf)
 #else
       tp = gmtime (&atime);
 #endif
-      sprintf (timebuf,"%04d%02d%02dT%02d%02d%02d",
-               1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday,
-               tp->tm_hour, tp->tm_min, tp->tm_sec);
+      snprintf (timebuf, 16, "%04d%02d%02dT%02d%02d%02d",
+                1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday,
+                tp->tm_hour, tp->tm_min, tp->tm_sec);
     }
 }
 
@@ -164,6 +165,78 @@ scan_isodatestr( const char *string )
     return stamp;
 }
 
+/* Scan am ISO timestamp and return a epoch based timestamp.  The only
+   supported format is "yyyymmddThhmmss" delimited by white space, nul, a
+   colon or a comma.  Returns (time_t)(-1) for an invalid string.  */
+time_t
+isotime2epoch (const char *string)
+{
+  const char *s;
+  int year, month, day, hour, minu, sec;
+  struct tm tmbuf;
+  int i;
+
+  if (!*string)
+    return (time_t)(-1);
+  for (s=string, i=0; i < 8; i++, s++)
+    if (!digitp (s))
+      return (time_t)(-1);
+  if (*s != 'T')
+      return (time_t)(-1);
+  for (s++, i=9; i < 15; i++, s++)
+    if (!digitp (s))
+      return (time_t)(-1);
+  if ( !(!*s || (isascii (*s) && isspace(*s)) || *s == ':' || *s == ','))
+    return (time_t)(-1);  /* Wrong delimiter.  */
+
+  year  = atoi_4 (string);
+  month = atoi_2 (string + 4);
+  day   = atoi_2 (string + 6);
+  hour  = atoi_2 (string + 9);
+  minu  = atoi_2 (string + 11);
+  sec   = atoi_2 (string + 13);
+
+  /* Basic checks.  */
+  if (year < 1970 || month < 1 || month > 12 || day < 1 || day > 31
+      || hour > 23 || minu > 59 || sec > 61 )
+    return (time_t)(-1);
+
+  memset (&tmbuf, 0, sizeof tmbuf);
+  tmbuf.tm_sec  = sec;
+  tmbuf.tm_min  = minu;
+  tmbuf.tm_hour = hour;
+  tmbuf.tm_mday = day;
+  tmbuf.tm_mon  = month-1;
+  tmbuf.tm_year = year - 1900;
+  tmbuf.tm_isdst = -1;
+  return timegm (&tmbuf);
+}
+
+
+/* Convert an Epoch time to an iso time stamp. */
+void
+epoch2isotime (gnupg_isotime_t timebuf, time_t atime)
+{
+  if (atime < 0)
+    *timebuf = 0;
+  else 
+    {
+      struct tm *tp;
+#ifdef HAVE_GMTIME_R
+      struct tm tmbuf;
+      
+      tp = gmtime_r (&atime, &tmbuf);
+#else
+      tp = gmtime (&atime);
+#endif
+      snprintf (timebuf, 16, "%04d%02d%02dT%02d%02d%02d",
+                1900 + tp->tm_year, tp->tm_mon+1, tp->tm_mday,
+                tp->tm_hour, tp->tm_min, tp->tm_sec);
+    }
+}
+
+
+
 
 u32
 add_days_to_timestamp( u32 stamp, u16 days )
diff --git a/common/t-gettime.c b/common/t-gettime.c
new file mode 100644 (file)
index 0000000..495de37
--- /dev/null
@@ -0,0 +1,98 @@
+/* t-gettime.c - Module test for gettime.c
+ *     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 <stdio.h>
+#include <stdlib.h>
+
+#include "util.h"
+
+#define pass()  do { ; } while(0)
+#define fail(a)  do { fprintf (stderr, "%s:%d: test %d failed\n",\
+                               __FILE__,__LINE__, (a));          \
+                     errcount++;                                 \
+                   } while(0)
+
+static int verbose;
+static int errcount;
+#define INVALID ((time_t)(-1))
+
+
+static void
+test_isotime2epoch (void)
+{
+  struct { const char *string; time_t expected; } array [] = {
+    { "19700101T000001",  1 },
+    { "19700101T235959",  86399 },
+    { "19980815T143712",  903191832 },
+    { "19700101T000000",  0 },
+    { "19691231T235959",  INVALID },
+    { "19000101T000000",  INVALID },
+    { "",                 INVALID },
+    { "19000101T00000",   INVALID },
+    { "20010101t123456",  INVALID },
+    { "20010101T123456",  978352496 },
+    { "20070629T160000",  1183132800 },
+    { "20070629T160000:",  1183132800 },
+    { "20070629T160000,",  1183132800 },
+    { "20070629T160000 ",  1183132800 },
+    { "20070629T160000\n", 1183132800 },
+    { "20070629T160000.",  INVALID },
+    { NULL, 0 }
+  };
+  int idx;
+  u32 val;
+  gnupg_isotime_t tbuf;
+
+  for (idx=0; array[idx].string; idx++)
+    {
+      val = isotime2epoch (array[idx].string);
+      if (val != array[idx].expected )
+        {
+          fail (idx);
+          if (verbose)
+            fprintf (stderr, "string `%s' exp: %ld got: %ld\n",
+                     array[idx].string, (long)array[idx].expected, 
+                     (long)val);
+        }
+      if (array[idx].expected != INVALID)
+        {
+          epoch2isotime (tbuf, val);
+          if (strlen (tbuf) != 15)
+            fail (idx);
+          if (strncmp (array[idx].string, tbuf, 15))
+            fail (idx);
+        }
+    }
+}
+
+
+
+
+int
+main (int argc, char **argv)
+{
+  if (argc > 1 && !strcmp (argv[1], "--verbose"))
+    verbose = 1;
+
+  test_isotime2epoch ();
+
+  return !!errcount;
+}
+
index cdd0342..3ec5200 100644 (file)
@@ -103,6 +103,8 @@ void   gnupg_set_time (time_t newtime, int freeze);
 int    gnupg_faked_time_p (void);
 u32    make_timestamp (void);
 u32    scan_isodatestr (const char *string);
+time_t isotime2epoch (const char *string);
+void   epoch2isotime (gnupg_isotime_t timebuf, time_t atime);
 u32    add_days_to_timestamp (u32 stamp, u16 days);
 const char *strtimevalue (u32 stamp);
 const char *strtimestamp (u32 stamp); /* GMT */
index bb8fd69..9282560 100644 (file)
@@ -43,7 +43,7 @@ NEED_LIBGCRYPT_API=1
 NEED_LIBGCRYPT_VERSION=1.2.2
 
 NEED_LIBASSUAN_API=1
-NEED_LIBASSUAN_VERSION=0.9.3
+NEED_LIBASSUAN_VERSION=1.0.2
 
 NEED_KSBA_API=1
 NEED_KSBA_VERSION=1.0.2
index b947b47..ca5f346 100644 (file)
@@ -819,6 +819,13 @@ The format of this file is as follows:
        may either be entered in ISO date format (2000-08-15) or as
        number of days, weeks, month or years. Without a letter days
        are assumed.
+     Creation-Date: <iso-date>
+        Set the creation date of the key as stored in the key
+        information and which is also part of the fingerprint
+        calculation.  Either a date like "1986-04-26" or a full
+        timestamp like "19860426T042640" may be used.  The time is
+        considered to be UTC.  If it is not given the current time 
+        is used.
      Preferences: <string>
         Set the cipher, hash, and compression preference values for
        this key.  This expects the same type of string as "setpref"
index 63d0961..e1a62d7 100644 (file)
@@ -176,10 +176,10 @@ or other purposes and don't have a corresponding certificate.
 
 
 @menu
-* gpg 1.4 vs. 1.9::   Relationship between the two branches.
+* GnuPG-1 and GnuPG-2::   Relationship between the two branches.
 @end menu
 
-@node gpg 1.4 vs. 1.9
+@node GnuPG-1 and GnuPG-2
 @subsection  Relationship between the two branches.
 
 Here is a little picture showing how the components work together:
index 4778158..6c6e5af 100644 (file)
@@ -1,3 +1,27 @@
+2007-07-05  Werner Koch  <wk@g10code.com>
+
+       * card-util.c (card_generate_subkey, card_store_subkey): Enable
+       the code also for GnuPG-2.
+
+       * keygen.c (make_backsig): Add arg TIMESTAMP.
+       (write_keybinding): Add arg TIMESTAMP, pass it to make_backsig.
+       (write_direct_sig, write_selfsigs): Add arg TIMESTAMP.
+       (gen_elg, gen_dsa, gen_rsa): Add arg TIMESTAMP.
+       (do_create): Ditto.
+       (do_generate_keypair): Use the same timestamp for key creation
+       time and all key signatures. Return an error if write_direct_sig
+       for the secret key fails.
+       (generate_subkeypair): Ditto.
+       (gen_card_key): New arg TIMESTAMP.
+       (generate_card_subkeypair): Pass current time to gen_card_key.
+       (gen_card_key_with_backup): New arg TIMESTAMP.
+       (read_parameter_file): Add option Creation-Date.
+       (parse_creation_string): New.
+       (do_generate_keypair): Use the Creation-Date if available.
+       (save_unprotected_key_to_card): Use P for P and not D.
+       * call-agent.c (agent_scd_genkey): Add arg CREATETIME.
+       * keyedit.c (menu_backsign): Use the same timestamp for all backsigs.
+
 2007-06-26  Werner Koch  <wk@g10code.com>
 
        * openfile.c (try_make_homedir): Support W32; use standard_homedir.
index 55e7f24..34c1fde 100644 (file)
@@ -1,5 +1,5 @@
 /* call-agent.c - divert operations to the agent
- * Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -498,21 +498,32 @@ scd_genkey_cb (void *opaque, const char *line)
 }
 
 /* Send a GENKEY command to the SCdaemon.  SERIALNO is not used in
-   this implementation. */
+   this implementation.  If CREATEDATE has been given, it will be
+   passed to SCDAEMON so that the key can be created with this
+   timestamp; note the user needs to use the returned timestamp as old
+   versions of scddaemon don't support this option.  */
 int
 agent_scd_genkey (struct agent_card_genkey_s *info, int keyno, int force,
-                  const char *serialno)
+                  const char *serialno, u32 createtime)
 {
   int rc;
   char line[ASSUAN_LINELENGTH];
+  gnupg_isotime_t tbuf;
 
   rc = start_agent ();
   if (rc)
     return rc;
 
+  if (createtime)
+    epoch2isotime (tbuf, createtime);
+  else
+    *tbuf = 0;
+
   memset (info, 0, sizeof *info);
-  snprintf (line, DIM(line)-1, "SCD GENKEY %s%d",
-            force? "--force ":"", keyno);
+  snprintf (line, DIM(line)-1, "SCD GENKEY %s%s %s %d",
+            *tbuf? "--timestamp=":"", tbuf,
+            force? "--force":"", 
+            keyno);
   line[DIM(line)-1] = 0;
 
   memset (info, 0, sizeof *info);
index 2a561be..b3e8ae2 100644 (file)
@@ -82,7 +82,7 @@ int agent_scd_writekey (int keyno, const char *serialno,
 
 /* Send a GENKEY command to the SCdaemon. */
 int agent_scd_genkey (struct agent_card_genkey_s *info, int keyno, int force,
-                      const char *serialno);
+                      const char *serialno, u32 createtime);
 
 /* Send a PKSIGN command to the SCdaemon. */
 int agent_scd_pksign (const char *keyid, int hashalgo,
index 9d1405b..751f700 100644 (file)
@@ -999,7 +999,7 @@ restore_forced_chv1 (int *forced_chv1)
     }
 }
 
-#if GNUPG_MAJOR_VERSION == 1
+
 /* Helper for the key generation/edit functions.  */
 static void
 show_card_key_info (struct agent_card_info_s *info)
@@ -1012,9 +1012,8 @@ show_card_key_info (struct agent_card_info_s *info)
   print_sha1_fpr (NULL, info->fpr3valid? info->fpr3:NULL);
   tty_printf ("\n");
 }
-#endif
 
-#if GNUPG_MAJOR_VERSION == 1
+
 /* Helper for the key generation/edit functions.  */
 static int
 replace_existing_key_p (struct agent_card_info_s *info, int keyno)
@@ -1034,7 +1033,6 @@ replace_existing_key_p (struct agent_card_info_s *info, int keyno)
     }
   return 0;
 }
-#endif
 
 
 static void
@@ -1104,7 +1102,6 @@ generate_card_keys (const char *serialno)
 int
 card_generate_subkey (KBNODE pub_keyblock, KBNODE sec_keyblock)
 {
-#if GNUPG_MAJOR_VERSION == 1
   struct agent_card_info_s info;
   int okay = 0;
   int forced_chv1 = 0;
@@ -1151,9 +1148,6 @@ card_generate_subkey (KBNODE pub_keyblock, KBNODE sec_keyblock)
   agent_release_card_info (&info);
   restore_forced_chv1 (&forced_chv1);
   return okay;
-#else
-  return 0;
-#endif
 }
 
 
@@ -1164,7 +1158,6 @@ card_generate_subkey (KBNODE pub_keyblock, KBNODE sec_keyblock)
 int 
 card_store_subkey (KBNODE node, int use)
 {
-#if GNUPG_MAJOR_VERSION == 1
   struct agent_card_info_s info;
   int okay = 0;
   int rc;
@@ -1266,7 +1259,7 @@ card_store_subkey (KBNODE node, int use)
   n = pubkey_get_nskey (sk->pubkey_algo);
   for (i=pubkey_get_npkey (sk->pubkey_algo); i < n; i++)
     {
-      mpi_free (sk->skey[i]);
+      gcry_mpi_release (sk->skey[i]);
       sk->skey[i] = NULL;
     }
   i = pubkey_get_npkey (sk->pubkey_algo);
@@ -1285,9 +1278,6 @@ card_store_subkey (KBNODE node, int use)
     free_secret_key (copied_sk);
   agent_release_card_info (&info);
   return okay;
-#else
-  return 0;
-#endif
 }
 
 
index 68c21ee..77f4017 100644 (file)
@@ -3652,6 +3652,7 @@ menu_backsign(KBNODE pub_keyblock,KBNODE sec_keyblock)
   PKT_public_key *main_pk;
   PKT_secret_key *main_sk,*sub_sk=NULL;
   KBNODE node;
+  u32 timestamp;
 
   assert(pub_keyblock->pkt->pkttype==PKT_PUBLIC_KEY);
   assert(sec_keyblock->pkt->pkttype==PKT_SECRET_KEY);
@@ -3661,6 +3662,10 @@ menu_backsign(KBNODE pub_keyblock,KBNODE sec_keyblock)
   main_sk=copy_secret_key(NULL,sec_keyblock->pkt->pkt.secret_key);
   keyid_from_pk(main_pk,NULL);
 
+  /* We use the same timestamp for all backsigs so that we don't
+     reveal information about the used machine.  */
+  timestamp = make_timestamp ();
+
   for(node=pub_keyblock;node;node=node->next)
     {
       PKT_public_key *sub_pk=NULL;
@@ -3748,7 +3753,8 @@ menu_backsign(KBNODE pub_keyblock,KBNODE sec_keyblock)
       set_next_passphrase(passphrase);
       xfree(passphrase);
 
-      rc=make_backsig(sig_pk->pkt->pkt.signature,main_pk,sub_pk,sub_sk);
+      rc = make_backsig (sig_pk->pkt->pkt.signature, main_pk, sub_pk, sub_sk,
+                         timestamp);
       if(rc==0)
        {
          PKT_signature *newsig;
index c89cea7..20377a7 100644 (file)
@@ -1,6 +1,6 @@
 /* keygen.c - generate a key pair
  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- *               2006 Free Software Foundation, Inc.
+ *               2006, 2007 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -60,6 +60,8 @@ enum para_name {
   pPREFERENCES,
   pREVOKER,
   pUSERID,
+  pCREATIONDATE,
+  pKEYCREATIONDATE, /* Same in seconds since epoch.  */
   pEXPIREDATE,
   pKEYEXPIRE, /* in n seconds */
   pSUBKEYEXPIRE, /* in n seconds */
@@ -80,6 +82,7 @@ struct para_data_s {
         DEK *dek;
         STRING2KEY *s2k;
         u32 expire;
+        u32 creation;
         unsigned int usage;
         struct revocation_key revkey;
         char value[1];
@@ -126,9 +129,11 @@ static int  write_keyblock( IOBUF out, KBNODE node );
 static int gen_card_key (int algo, int keyno, int is_primary,
                          KBNODE pub_root, KBNODE sec_root,
                         PKT_secret_key **ret_sk,
+                         u32 *timestamp,
                          u32 expireval, struct para_data_s *para);
 static int gen_card_key_with_backup (int algo, int keyno, int is_primary,
                                      KBNODE pub_root, KBNODE sec_root,
+                                     u32 timestamp,
                                      u32 expireval, struct para_data_s *para,
                                      const char *backup_dir);
 
@@ -769,21 +774,27 @@ keygen_add_revkey(PKT_signature *sig, void *opaque)
   return 0;
 }
 
+
+
+/* Create a back-signature.  If TIMESTAMP is not NULL, use it for the
+   signature creation time.  */
 int
-make_backsig(PKT_signature *sig,PKT_public_key *pk,
-            PKT_public_key *sub_pk,PKT_secret_key *sub_sk)
+make_backsig (PKT_signature *sig,PKT_public_key *pk,
+              PKT_public_key *sub_pk,PKT_secret_key *sub_sk,
+              u32 timestamp)
 {
   PKT_signature *backsig;
   int rc;
 
   cache_public_key(sub_pk);
 
-  rc=make_keysig_packet(&backsig,pk,NULL,sub_pk,sub_sk,0x19,0,0,0,0,NULL,NULL);
+  rc = make_keysig_packet (&backsig, pk, NULL, sub_pk, sub_sk, 0x19,
+                           0, 0, timestamp, 0, NULL, NULL);
   if(rc)
     log_error("make_keysig_packet failed for backsig: %s\n",g10_errstr(rc));
   else
     {
-      /* get it into a binary packed form. */
+      /* Get it into a binary packed form. */
       IOBUF backsig_out=iobuf_temp();
       PACKET backsig_pkt;
  
@@ -848,7 +859,7 @@ make_backsig(PKT_signature *sig,PKT_public_key *pk,
              buf+=mark;
            }
  
-         /* now make the binary blob into a subpacket */
+         /* Now make the binary blob into a subpacket.  */
          build_sig_subpkt(sig,SIGSUBPKT_SIGNATURE,buf,pktlen);
 
          iobuf_close(backsig_out);
@@ -860,148 +871,162 @@ make_backsig(PKT_signature *sig,PKT_public_key *pk,
 
 
 static int
-write_direct_sigKBNODE root, KBNODE pub_root, PKT_secret_key *sk,
-                 struct revocation_key *revkey )
+write_direct_sig (KBNODE root, KBNODE pub_root, PKT_secret_key *sk,
+                 struct revocation_key *revkey, u32 timestamp)
 {
-    PACKET *pkt;
-    PKT_signature *sig;
-    int rc=0;
-    KBNODE node;
-    PKT_public_key *pk;
+  PACKET *pkt;
+  PKT_signature *sig;
+  int rc=0;
+  KBNODE node;
+  PKT_public_key *pk;
 
-    if( opt.verbose )
-       log_info(_("writing direct signature\n"));
+  if( opt.verbose )
+    log_info(_("writing direct signature\n"));
 
-    /* get the pk packet from the pub_tree */
-    node = find_kbnode( pub_root, PKT_PUBLIC_KEY );
-    if( !node )
-       BUG();
-    pk = node->pkt->pkt.public_key;
+  /* Get the pk packet from the pub_tree. */
+  node = find_kbnode( pub_root, PKT_PUBLIC_KEY );
+  if( !node )
+    BUG();
+  pk = node->pkt->pkt.public_key;
 
-    /* we have to cache the key, so that the verification of the signature
-     * creation is able to retrieve the public key */
-    cache_public_key (pk);
+  /* We have to cache the key, so that the verification of the
+     signature creation is able to retrieve the public key.  */
+  cache_public_key (pk);
 
-    /* and make the signature */
-    rc = make_keysig_packet(&sig,pk,NULL,NULL,sk,0x1F,0,0,0,0,
-                           keygen_add_revkey,revkey);
-    if( rc ) {
-       log_error("make_keysig_packet failed: %s\n", g10_errstr(rc) );
-       return rc;
+  /* Make the signature.  */
+  rc = make_keysig_packet (&sig,pk,NULL,NULL,sk,0x1F,
+                           0, 0, timestamp, 0,
+                           keygen_add_revkey, revkey);
+  if( rc )
+    {
+      log_error("make_keysig_packet failed: %s\n", g10_errstr(rc) );
+      return rc;
     }
-
-    pkt = xmalloc_clear( sizeof *pkt );
-    pkt->pkttype = PKT_SIGNATURE;
-    pkt->pkt.signature = sig;
-    add_kbnode( root, new_kbnode( pkt ) );
-    return rc;
+  
+  pkt = xmalloc_clear( sizeof *pkt );
+  pkt->pkttype = PKT_SIGNATURE;
+  pkt->pkt.signature = sig;
+  add_kbnode( root, new_kbnode( pkt ) );
+  return rc;
 }
 
+
 static int
 write_selfsigs( KBNODE sec_root, KBNODE pub_root, PKT_secret_key *sk,
-               unsigned int use )
+               unsigned int use, u32 timestamp )
 {
-    PACKET *pkt;
-    PKT_signature *sig;
-    PKT_user_id *uid;
-    int rc=0;
-    KBNODE node;
-    PKT_public_key *pk;
+  PACKET *pkt;
+  PKT_signature *sig;
+  PKT_user_id *uid;
+  int rc=0;
+  KBNODE node;
+  PKT_public_key *pk;
 
-    if( opt.verbose )
-       log_info(_("writing self signature\n"));
-
-    /* get the uid packet from the list */
-    node = find_kbnode( pub_root, PKT_USER_ID );
-    if( !node )
-       BUG(); /* no user id packet in tree */
-    uid = node->pkt->pkt.user_id;
-    /* get the pk packet from the pub_tree */
-    node = find_kbnode( pub_root, PKT_PUBLIC_KEY );
-    if( !node )
-       BUG();
-    pk = node->pkt->pkt.public_key;
-    pk->pubkey_usage = use;
-    /* we have to cache the key, so that the verification of the signature
-     * creation is able to retrieve the public key */
-    cache_public_key (pk);
-
-    /* and make the signature */
-    rc = make_keysig_packet( &sig, pk, uid, NULL, sk, 0x13, 0, 0, 0, 0,
-                            keygen_add_std_prefs, pk );
-    if( rc ) {
-       log_error("make_keysig_packet failed: %s\n", g10_errstr(rc) );
-       return rc;
-    }
-
-    pkt = xmalloc_clear( sizeof *pkt );
-    pkt->pkttype = PKT_SIGNATURE;
-    pkt->pkt.signature = sig;
-    add_kbnode( sec_root, new_kbnode( pkt ) );
-
-    pkt = xmalloc_clear( sizeof *pkt );
-    pkt->pkttype = PKT_SIGNATURE;
-    pkt->pkt.signature = copy_signature(NULL,sig);
-    add_kbnode( pub_root, new_kbnode( pkt ) );
-    return rc;
+  if( opt.verbose )
+    log_info(_("writing self signature\n"));
+
+  /* Get the uid packet from the list. */
+  node = find_kbnode( pub_root, PKT_USER_ID );
+  if( !node )
+    BUG(); /* No user id packet in tree.  */
+  uid = node->pkt->pkt.user_id;
+
+  /* Get the pk packet from the pub_tree. */
+  node = find_kbnode( pub_root, PKT_PUBLIC_KEY );
+  if( !node )
+    BUG();
+  pk = node->pkt->pkt.public_key;
+  pk->pubkey_usage = use;
+  /* We have to cache the key, so that the verification of the
+     signature creation is able to retrieve the public key.  */
+  cache_public_key (pk);
+
+  /* Make the signature.  */
+  rc = make_keysig_packet (&sig, pk, uid, NULL, sk, 0x13,
+                           0, 0, timestamp, 0,
+                           keygen_add_std_prefs, pk);
+  if( rc ) 
+    {
+      log_error("make_keysig_packet failed: %s\n", g10_errstr(rc) );
+      return rc;
+    }
+
+  pkt = xmalloc_clear( sizeof *pkt );
+  pkt->pkttype = PKT_SIGNATURE;
+  pkt->pkt.signature = sig;
+  add_kbnode( sec_root, new_kbnode( pkt ) );
+
+  pkt = xmalloc_clear( sizeof *pkt );
+  pkt->pkttype = PKT_SIGNATURE;
+  pkt->pkt.signature = copy_signature(NULL,sig);
+  add_kbnode( pub_root, new_kbnode( pkt ) );
+  return rc;
 }
 
+
+/* Write the key binding signature.  If TIMESTAMP is not NULL use the
+   signature creation times.  */
 static int
-write_keybindingKBNODE root, KBNODE pub_root,
+write_keybinding (KBNODE root, KBNODE pub_root,
                  PKT_secret_key *pri_sk, PKT_secret_key *sub_sk,
-                  unsigned int use )
+                  unsigned int use, u32 timestamp)
 {
-    PACKET *pkt;
-    PKT_signature *sig;
-    int rc=0;
-    KBNODE node;
-    PKT_public_key *pri_pk, *sub_pk;
-    struct opaque_data_usage_and_pk oduap;
-
-    if( opt.verbose )
-       log_info(_("writing key binding signature\n"));
-
-    /* get the pk packet from the pub_tree */
-    node = find_kbnode( pub_root, PKT_PUBLIC_KEY );
-    if( !node )
-       BUG();
-    pri_pk = node->pkt->pkt.public_key;
-    /* we have to cache the key, so that the verification of the signature
-     * creation is able to retrieve the public key */
-    cache_public_key (pri_pk);
+  PACKET *pkt;
+  PKT_signature *sig;
+  int rc=0;
+  KBNODE node;
+  PKT_public_key *pri_pk, *sub_pk;
+  struct opaque_data_usage_and_pk oduap;
+
+  if ( opt.verbose )
+    log_info(_("writing key binding signature\n"));
+
+  /* Get the pk packet from the pub_tree.  */
+  node = find_kbnode ( pub_root, PKT_PUBLIC_KEY );
+  if ( !node )
+    BUG();
+  pri_pk = node->pkt->pkt.public_key;
+
+  /* We have to cache the key, so that the verification of the
+   * signature creation is able to retrieve the public key.  */
+  cache_public_key (pri_pk);
  
-    /* find the last subkey */
-    sub_pk = NULL;
-    for(node=pub_root; node; node = node->next ) {
-       if( node->pkt->pkttype == PKT_PUBLIC_SUBKEY )
-           sub_pk = node->pkt->pkt.public_key;
+  /* Find the last subkey. */
+  sub_pk = NULL;
+  for (node=pub_root; node; node = node->next ) 
+    {
+      if ( node->pkt->pkttype == PKT_PUBLIC_SUBKEY )
+        sub_pk = node->pkt->pkt.public_key;
     }
-    if( !sub_pk )
-       BUG();
+  if (!sub_pk)
+    BUG();
 
-    /* and make the signature */
-    oduap.usage = use;
-    oduap.pk = sub_pk;
-    rc=make_keysig_packet(&sig, pri_pk, NULL, sub_pk, pri_sk, 0x18, 0, 0, 0, 0,
-                         keygen_add_key_flags_and_expire, &oduap );
-    if( rc ) {
-       log_error("make_keysig_packet failed: %s\n", g10_errstr(rc) );
-       return rc;
+  /* Make the signature.  */
+  oduap.usage = use;
+  oduap.pk = sub_pk;
+  rc = make_keysig_packet (&sig, pri_pk, NULL, sub_pk, pri_sk, 0x18, 
+                           0, 0, timestamp, 0,
+                           keygen_add_key_flags_and_expire, &oduap );
+  if (rc) 
+    {
+      log_error ("make_keysig_packet failed: %s\n", g10_errstr(rc) );
+      return rc;
     }
 
-    /* make a backsig */
-    if(use&PUBKEY_USAGE_SIG)
-      {
-       rc=make_backsig(sig,pri_pk,sub_pk,sub_sk);
-       if(rc)
-         return rc;
-      }
-
-    pkt = xmalloc_clear( sizeof *pkt );
-    pkt->pkttype = PKT_SIGNATURE;
-    pkt->pkt.signature = sig;
-    add_kbnode( root, new_kbnode( pkt ) );
-    return rc;
+  /* Make a backsig.  */
+  if (use&PUBKEY_USAGE_SIG)
+    {
+      rc = make_backsig (sig, pri_pk, sub_pk, sub_sk, timestamp);
+      if (rc)
+        return rc;
+    }
+  
+  pkt = xmalloc_clear ( sizeof *pkt );
+  pkt->pkttype = PKT_SIGNATURE;
+  pkt->pkt.signature = sig;
+  add_kbnode (root, new_kbnode (pkt) );
+  return rc;
 }
 
 
@@ -1103,116 +1128,115 @@ genhelp_factors (gcry_sexp_t misc_key_info, KBNODE sec_root)
 }
 
 
+/* Generate an Elgamal encryption key pair. TIMESTAMP is the creatuion
+   time to be put into the key structure.  */
 static int
-gen_elg(int algo, unsigned int nbits,
-        KBNODE pub_root, KBNODE sec_root, DEK *dek,
-       STRING2KEY *s2k, PKT_secret_key **ret_sk, u32 expireval,
-        int is_subkey)
+gen_elg (int algo, unsigned int nbits,
+         KBNODE pub_root, KBNODE sec_root, DEK *dek,
+         STRING2KEY *s2k, PKT_secret_key **ret_sk, 
+         u32 timestamp, u32 expireval, int is_subkey)
 {
-    int rc;
-    PACKET *pkt;
-    PKT_secret_key *sk;
-    PKT_public_key *pk;
-    gcry_sexp_t s_parms, s_key;
-    gcry_sexp_t misc_key_info;
-
-    assert( is_ELGAMAL(algo) );
+  int rc;
+  PACKET *pkt;
+  PKT_secret_key *sk;
+  PKT_public_key *pk;
+  gcry_sexp_t s_parms, s_key;
+  gcry_sexp_t misc_key_info;
+  
+  assert( is_ELGAMAL(algo) );
 
-    if( nbits < 512 ) {
-       nbits = 1024;
-       log_info(_("keysize invalid; using %u bits\n"), nbits );
+  if (nbits < 512)
+    {
+      nbits = 1024;
+      log_info (_("keysize invalid; using %u bits\n"), nbits );
     }
 
-    if( (nbits % 32) ) {
-       nbits = ((nbits + 31) / 32) * 32;
-       log_info(_("keysize rounded up to %u bits\n"), nbits );
+  if ((nbits % 32))
+    {
+      nbits = ((nbits + 31) / 32) * 32;
+      log_info (_("keysize rounded up to %u bits\n"), nbits );
     }
 
 
-    rc = gcry_sexp_build ( &s_parms, NULL,
-                           "(genkey(%s(nbits %d)))",
-                           algo == GCRY_PK_ELG_E ? "openpgp-elg" :
-                           algo == GCRY_PK_ELG  ? "elg" : "x-oops" ,
-                           (int)nbits);
-    if (rc)
-      log_bug ("gcry_sexp_build failed: %s\n", gpg_strerror (rc));
+  rc = gcry_sexp_build ( &s_parms, NULL,
+                         "(genkey(%s(nbits %d)))",
+                         algo == GCRY_PK_ELG_E ? "openpgp-elg" :
+                         algo == GCRY_PK_ELG    ? "elg" : "x-oops" ,
+                         (int)nbits);
+  if (rc)
+    log_bug ("gcry_sexp_build failed: %s\n", gpg_strerror (rc));
   
-    rc = gcry_pk_genkey (&s_key, s_parms);
-    gcry_sexp_release (s_parms);
-    if (rc)
-      {
-        log_error ("gcry_pk_genkey failed: %s\n", gpg_strerror (rc) );
-        return rc;
-      }
-
-    sk = xmalloc_clear( sizeof *sk );
-    pk = xmalloc_clear( sizeof *pk );
-    sk->timestamp = pk->timestamp = make_timestamp();
-    sk->version = pk->version = 4;
-    if( expireval ) {
-       sk->expiredate = pk->expiredate = sk->timestamp + expireval;
-    }
-    sk->pubkey_algo = pk->pubkey_algo = algo;
-/*                    pk->pkey[0] = mpi_copy( skey[0] ); */
-/*                    pk->pkey[1] = mpi_copy( skey[1] ); */
-/*                    pk->pkey[2] = mpi_copy( skey[2] ); */
-/*     sk->skey[0] = skey[0]; */
-/*     sk->skey[1] = skey[1]; */
-/*     sk->skey[2] = skey[2]; */
-/*     sk->skey[3] = skey[3]; */
-
-    rc = key_from_sexp (pk->pkey, s_key, "public-key", "pgy");
-    if (rc) 
-      {
-        log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc) );
-        gcry_sexp_release (s_key);
-        free_secret_key (sk);
-        free_public_key (pk);
-        return rc;
-      }
-    rc = key_from_sexp (sk->skey, s_key, "private-key", "pgyx");
-    if (rc)
-      {
-        log_error("key_from_sexp failed: %s\n", gpg_strerror (rc) );
-        gcry_sexp_release (s_key);
-        free_secret_key (sk);
-        free_public_key (pk);
-        return rc;
-      }
-    misc_key_info = gcry_sexp_find_token (s_key, "misc-key-info", 0);
-    gcry_sexp_release (s_key);
+  rc = gcry_pk_genkey (&s_key, s_parms);
+  gcry_sexp_release (s_parms);
+  if (rc)
+    {
+      log_error ("gcry_pk_genkey failed: %s\n", gpg_strerror (rc) );
+      return rc;
+    }
   
-    sk->is_protected = 0;
-    sk->protect.algo = 0;
-
-    sk->csum = checksum_mpi( sk->skey[3] );
-    if( ret_sk ) /* return an unprotected version of the sk */
-       *ret_sk = copy_secret_key( NULL, sk );
-
-    rc = genhelp_protect (dek, s2k, sk);
-    if (rc)
-      {
-        free_public_key (pk);
-        free_secret_key (sk);
-        gcry_sexp_release (misc_key_info);
-        return rc;
-      }
+  sk = xmalloc_clear( sizeof *sk );
+  pk = xmalloc_clear( sizeof *pk );
+  sk->timestamp = pk->timestamp = timestamp;
+  sk->version = pk->version = 4;
+  if (expireval) 
+    {
+      sk->expiredate = pk->expiredate = sk->timestamp + expireval;
+    }
+  sk->pubkey_algo = pk->pubkey_algo = algo;
 
-    pkt = xmalloc_clear (sizeof *pkt);
-    pkt->pkttype = is_subkey ? PKT_PUBLIC_SUBKEY : PKT_PUBLIC_KEY;
-    pkt->pkt.public_key = pk;
-    add_kbnode(pub_root, new_kbnode( pkt ));
+  rc = key_from_sexp (pk->pkey, s_key, "public-key", "pgy");
+  if (rc) 
+    {
+      log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc) );
+      gcry_sexp_release (s_key);
+      free_secret_key (sk);
+      free_public_key (pk);
+      return rc;
+    }
+  rc = key_from_sexp (sk->skey, s_key, "private-key", "pgyx");
+  if (rc)
+    {
+      log_error("key_from_sexp failed: %s\n", gpg_strerror (rc) );
+      gcry_sexp_release (s_key);
+      free_secret_key (sk);
+      free_public_key (pk);
+      return rc;
+    }
+  misc_key_info = gcry_sexp_find_token (s_key, "misc-key-info", 0);
+  gcry_sexp_release (s_key);
+  
+  sk->is_protected = 0;
+  sk->protect.algo = 0;
 
-    /* Don't know whether it makes sense to have the factors, so for now
-     * we store them in the secret keyring (but they are not secret). */
-    pkt = xmalloc_clear(sizeof *pkt);
-    pkt->pkttype = is_subkey ? PKT_SECRET_SUBKEY : PKT_SECRET_KEY;
-    pkt->pkt.secret_key = sk;
-    add_kbnode(sec_root, new_kbnode( pkt ));
+  sk->csum = checksum_mpi (sk->skey[3]);
+  if (ret_sk) /* Return an unprotected version of the sk.  */
+    *ret_sk = copy_secret_key ( NULL, sk );
 
-    genhelp_factors (misc_key_info, sec_root);
+  rc = genhelp_protect (dek, s2k, sk);
+  if (rc)
+    {
+      free_public_key (pk);
+      free_secret_key (sk);
+      gcry_sexp_release (misc_key_info);
+      return rc;
+    }
+  
+  pkt = xmalloc_clear (sizeof *pkt);
+  pkt->pkttype = is_subkey ? PKT_PUBLIC_SUBKEY : PKT_PUBLIC_KEY;
+  pkt->pkt.public_key = pk;
+  add_kbnode (pub_root, new_kbnode( pkt ));
 
-    return 0;
+  /* Don't know whether it makes sense to have access to the factors,
+     so for now we store them in the secret keyring (but they are not
+     secret).  */
+  pkt = xmalloc_clear (sizeof *pkt);
+  pkt->pkttype = is_subkey ? PKT_SECRET_SUBKEY : PKT_SECRET_KEY;
+  pkt->pkt.secret_key = sk;
+  add_kbnode (sec_root, new_kbnode( pkt ));
+  
+  genhelp_factors (misc_key_info, sec_root);
+  
+  return 0;
 }
 
 
@@ -1221,137 +1245,138 @@ gen_elg(int algo, unsigned int nbits,
  */
 static int
 gen_dsa (unsigned int nbits, KBNODE pub_root, KBNODE sec_root, DEK *dek,
-       STRING2KEY *s2k, PKT_secret_key **ret_sk, u32 expireval, int is_subkey)
+         STRING2KEY *s2k, PKT_secret_key **ret_sk, 
+         u32 timestamp, u32 expireval, int is_subkey)
 {
-    int rc;
-    PACKET *pkt;
-    PKT_secret_key *sk;
-    PKT_public_key *pk;
-    gcry_sexp_t s_parms, s_key;
-    gcry_sexp_t misc_key_info;
-    unsigned int qbits;
+  int rc;
+  PACKET *pkt;
+  PKT_secret_key *sk;
+  PKT_public_key *pk;
+  gcry_sexp_t s_parms, s_key;
+  gcry_sexp_t misc_key_info;
+  unsigned int qbits;
 
-    if ( nbits < 512 || (!opt.flags.dsa2 && nbits > 1024)) 
-      {
-       nbits = 1024;
-       log_info(_("keysize invalid; using %u bits\n"), nbits );
-      }
-    else if ( nbits > 3072 )
-      {
-       nbits = 3072;
-        log_info(_("keysize invalid; using %u bits\n"), nbits );
-      }
+  if ( nbits < 512 || (!opt.flags.dsa2 && nbits > 1024)) 
+    {
+      nbits = 1024;
+      log_info(_("keysize invalid; using %u bits\n"), nbits );
+    }
+  else if ( nbits > 3072 )
+    {
+      nbits = 3072;
+      log_info(_("keysize invalid; using %u bits\n"), nbits );
+    }
 
-    if( (nbits % 64) )
-      {
-       nbits = ((nbits + 63) / 64) * 64;
-       log_info(_("keysize rounded up to %u bits\n"), nbits );
-      }
+  if( (nbits % 64) )
+    {
+      nbits = ((nbits + 63) / 64) * 64;
+      log_info(_("keysize rounded up to %u bits\n"), nbits );
+    }
 
-    /*
-      Figure out a q size based on the key size.  FIPS 180-3 says:
+  /*
+    Figure out a q size based on the key size.  FIPS 180-3 says:
  
-      L = 1024, N = 160
-      L = 2048, N = 224
-      L = 2048, N = 256
-      L = 3072, N = 256
+    L = 1024, N = 160
+    L = 2048, N = 224
+    L = 2048, N = 256
+    L = 3072, N = 256
  
-      2048/256 is an odd pair since there is also a 2048/224 and
-      3072/256.  Matching sizes is not a very exact science.
+    2048/256 is an odd pair since there is also a 2048/224 and
+    3072/256.  Matching sizes is not a very exact science.
       
-      We'll do 256 qbits for nbits over 2048, 224 for nbits over 1024
-      but less than 2048, and 160 for 1024 (DSA1).
-    */
+    We'll do 256 qbits for nbits over 2048, 224 for nbits over 1024
+    but less than 2048, and 160 for 1024 (DSA1).
+  */
  
-    if (nbits > 2048)
-      qbits = 256;
-    else if ( nbits > 1024)
-      qbits = 224;
-    else
-      qbits = 160;
+  if (nbits > 2048)
+    qbits = 256;
+  else if ( nbits > 1024)
+    qbits = 224;
+  else
+    qbits = 160;
  
-    if (qbits != 160 )
-      log_info (_("WARNING: some OpenPGP programs can't"
-                  " handle a DSA key with this digest size\n"));
+  if (qbits != 160 )
+    log_info (_("WARNING: some OpenPGP programs can't"
+                " handle a DSA key with this digest size\n"));
 
-    rc = gcry_sexp_build (&s_parms, NULL,
-                            "(genkey(dsa(nbits %d)(qbits %d)))",
-                            (int)nbits, (int)qbits);
-    if (rc)
-      log_bug ("gcry_sexp_build failed: %s\n", gpg_strerror (rc));
+  rc = gcry_sexp_build (&s_parms, NULL,
+                        "(genkey(dsa(nbits %d)(qbits %d)))",
+                        (int)nbits, (int)qbits);
+  if (rc)
+    log_bug ("gcry_sexp_build failed: %s\n", gpg_strerror (rc));
   
-    rc = gcry_pk_genkey (&s_key, s_parms);
-    gcry_sexp_release (s_parms);
-    if (rc)
-      {
-        log_error ("gcry_pk_genkey failed: %s\n", gpg_strerror (rc) );
-        return rc;
-      }
+  rc = gcry_pk_genkey (&s_key, s_parms);
+  gcry_sexp_release (s_parms);
+  if (rc)
+    {
+      log_error ("gcry_pk_genkey failed: %s\n", gpg_strerror (rc) );
+      return rc;
+    }
 
-    sk = xmalloc_clear( sizeof *sk );
-    pk = xmalloc_clear( sizeof *pk );
-    sk->timestamp = pk->timestamp = make_timestamp();
-    sk->version = pk->version = 4;
-    if (expireval) 
-      sk->expiredate = pk->expiredate = sk->timestamp + expireval;
-    sk->pubkey_algo = pk->pubkey_algo = PUBKEY_ALGO_DSA;
+  sk = xmalloc_clear( sizeof *sk );
+  pk = xmalloc_clear( sizeof *pk );
+  sk->timestamp = pk->timestamp = timestamp;
+  sk->version = pk->version = 4;
+  if (expireval) 
+    sk->expiredate = pk->expiredate = sk->timestamp + expireval;
+  sk->pubkey_algo = pk->pubkey_algo = PUBKEY_ALGO_DSA;
 
-    rc = key_from_sexp (pk->pkey, s_key, "public-key", "pqgy");
-    if (rc) 
-      {
-        log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc));
-        gcry_sexp_release (s_key);
-        free_public_key(pk);
-        free_secret_key(sk);
-        return rc;
-      }
-    rc = key_from_sexp (sk->skey, s_key, "private-key", "pqgyx");
-    if (rc) 
-      {
-        log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc) );
-        gcry_sexp_release (s_key);
-        free_public_key(pk);
-        free_secret_key(sk);
-        return rc;
-      }
-    misc_key_info = gcry_sexp_find_token (s_key, "misc-key-info", 0);
-    gcry_sexp_release (s_key);
+  rc = key_from_sexp (pk->pkey, s_key, "public-key", "pqgy");
+  if (rc) 
+    {
+      log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc));
+      gcry_sexp_release (s_key);
+      free_public_key(pk);
+      free_secret_key(sk);
+      return rc;
+    }
+  rc = key_from_sexp (sk->skey, s_key, "private-key", "pqgyx");
+  if (rc) 
+    {
+      log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc) );
+      gcry_sexp_release (s_key);
+      free_public_key(pk);
+      free_secret_key(sk);
+      return rc;
+    }
+  misc_key_info = gcry_sexp_find_token (s_key, "misc-key-info", 0);
+  gcry_sexp_release (s_key);
   
-    sk->is_protected = 0;
-    sk->protect.algo = 0;
+  sk->is_protected = 0;
+  sk->protect.algo = 0;
 
-    sk->csum = checksum_mpi ( sk->skey[4] );
-    if( ret_sk ) /* return an unprotected version of the sk */
-       *ret_sk = copy_secret_key( NULL, sk );
+  sk->csum = checksum_mpi ( sk->skey[4] );
+  if( ret_sk ) /* return an unprotected version of the sk */
+    *ret_sk = copy_secret_key( NULL, sk );
 
-    rc = genhelp_protect (dek, s2k, sk);
-    if (rc)
-      {
-        free_public_key (pk);
-        free_secret_key (sk);
-        gcry_sexp_release (misc_key_info);
-        return rc;
-      }
+  rc = genhelp_protect (dek, s2k, sk);
+  if (rc)
+    {
+      free_public_key (pk);
+      free_secret_key (sk);
+      gcry_sexp_release (misc_key_info);
+      return rc;
+    }
 
-    pkt = xmalloc_clear(sizeof *pkt);
-    pkt->pkttype = is_subkey ? PKT_PUBLIC_SUBKEY : PKT_PUBLIC_KEY;
-    pkt->pkt.public_key = pk;
-    add_kbnode(pub_root, new_kbnode( pkt ));
+  pkt = xmalloc_clear(sizeof *pkt);
+  pkt->pkttype = is_subkey ? PKT_PUBLIC_SUBKEY : PKT_PUBLIC_KEY;
+  pkt->pkt.public_key = pk;
+  add_kbnode(pub_root, new_kbnode( pkt ));
 
-    /* Don't know whether it makes sense to have the factors, so for now
-     * we store them in the secret keyring (but they are not secret)
-     * p = 2 * q * f1 * f2 * ... * fn
-     * We store only f1 to f_n-1;  fn can be calculated because p and q
-     * are known.
-     */
-    pkt = xmalloc_clear(sizeof *pkt);
-    pkt->pkttype = is_subkey ? PKT_SECRET_SUBKEY : PKT_SECRET_KEY;
-    pkt->pkt.secret_key = sk;
-    add_kbnode(sec_root, new_kbnode( pkt ));
+  /* Don't know whether it makes sense to have the factors, so for now
+   * we store them in the secret keyring (but they are not secret)
+   * p = 2 * q * f1 * f2 * ... * fn
+   * We store only f1 to f_n-1;  fn can be calculated because p and q
+   * are known.
+   */
+  pkt = xmalloc_clear(sizeof *pkt);
+  pkt->pkttype = is_subkey ? PKT_SECRET_SUBKEY : PKT_SECRET_KEY;
+  pkt->pkt.secret_key = sk;
+  add_kbnode(sec_root, new_kbnode( pkt ));
 
-    genhelp_factors (misc_key_info, sec_root);
+  genhelp_factors (misc_key_info, sec_root);
 
-    return 0;
+  return 0;
 }
 
 
@@ -1359,99 +1384,103 @@ gen_dsa (unsigned int nbits, KBNODE pub_root, KBNODE sec_root, DEK *dek,
  * Generate an RSA key.
  */
 static int
-gen_rsa(int algo, unsigned nbits, KBNODE pub_root, KBNODE sec_root, DEK *dek,
-       STRING2KEY *s2k, PKT_secret_key **ret_sk, u32 expireval, int is_subkey)
+gen_rsa (int algo, unsigned nbits, KBNODE pub_root, KBNODE sec_root, DEK *dek,
+         STRING2KEY *s2k, PKT_secret_key **ret_sk,
+         u32 timestamp, u32 expireval, int is_subkey)
 {
-    int rc;
-    PACKET *pkt;
-    PKT_secret_key *sk;
-    PKT_public_key *pk;
-    gcry_sexp_t s_parms, s_key;
+  int rc;
+  PACKET *pkt;
+  PKT_secret_key *sk;
+  PKT_public_key *pk;
+  gcry_sexp_t s_parms, s_key;
 
-    assert( is_RSA(algo) );
+  assert (is_RSA(algo));
 
-    if( nbits < 1024 ) {
-       nbits = 1024;
-       log_info(_("keysize invalid; using %u bits\n"), nbits );
+  if (nbits < 1024) 
+    {
+      nbits = 1024;
+      log_info (_("keysize invalid; using %u bits\n"), nbits );
     }
-
-    if( (nbits % 32) ) {
-       nbits = ((nbits + 31) / 32) * 32;
-       log_info(_("keysize rounded up to %u bits\n"), nbits );
+  
+  if ((nbits % 32))
+    {
+      nbits = ((nbits + 31) / 32) * 32;
+      log_info (_("keysize rounded up to %u bits\n"), nbits );
     }
 
-    rc = gcry_sexp_build (&s_parms, NULL,
-                          "(genkey(rsa(nbits %d)))",
-                          (int)nbits);
-    if (rc)
-      log_bug ("gcry_sexp_build failed: %s\n", gpg_strerror (rc));
+  rc = gcry_sexp_build (&s_parms, NULL,
+                        "(genkey(rsa(nbits %d)))",
+                        (int)nbits);
+  if (rc)
+    log_bug ("gcry_sexp_build failed: %s\n", gpg_strerror (rc));
   
-    rc = gcry_pk_genkey (&s_key, s_parms);
-    gcry_sexp_release (s_parms);
-    if (rc)
-      {
-        log_error ("gcry_pk_genkey failed: %s\n", gpg_strerror (rc) );
-        return rc;
-      }
+  rc = gcry_pk_genkey (&s_key, s_parms);
+  gcry_sexp_release (s_parms);
+  if (rc)
+    {
+      log_error ("gcry_pk_genkey failed: %s\n", gpg_strerror (rc) );
+      return rc;
+    }
 
-    sk = xmalloc_clear( sizeof *sk );
-    pk = xmalloc_clear( sizeof *pk );
-    sk->timestamp = pk->timestamp = make_timestamp();
-    sk->version = pk->version = 4;
-    if( expireval ) {
-       sk->expiredate = pk->expiredate = sk->timestamp + expireval;
+  sk = xmalloc_clear( sizeof *sk );
+  pk = xmalloc_clear( sizeof *pk );
+  sk->timestamp = pk->timestamp = timestamp;
+  sk->version = pk->version = 4;
+  if (expireval)
+    {
+      sk->expiredate = pk->expiredate = sk->timestamp + expireval;
     }
-    sk->pubkey_algo = pk->pubkey_algo = algo;
+  sk->pubkey_algo = pk->pubkey_algo = algo;
 
-    rc = key_from_sexp (pk->pkey, s_key, "public-key", "ne");
-    if (rc) 
-      {
-        log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc));
-        gcry_sexp_release (s_key);
-        free_public_key(pk);
-        free_secret_key(sk);
-        return rc;
-      }
-    rc = key_from_sexp (sk->skey, s_key, "private-key", "nedpqu");
-    if (rc) 
-      {
-        log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc) );
-        gcry_sexp_release (s_key);
-        free_public_key(pk);
-        free_secret_key(sk);
-        return rc;
-      }
-    gcry_sexp_release (s_key);
+  rc = key_from_sexp (pk->pkey, s_key, "public-key", "ne");
+  if (rc) 
+    {
+      log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc));
+      gcry_sexp_release (s_key);
+      free_public_key(pk);
+      free_secret_key(sk);
+      return rc;
+    }
+  rc = key_from_sexp (sk->skey, s_key, "private-key", "nedpqu");
+  if (rc) 
+    {
+      log_error ("key_from_sexp failed: %s\n", gpg_strerror (rc) );
+      gcry_sexp_release (s_key);
+      free_public_key(pk);
+      free_secret_key(sk);
+      return rc;
+    }
+  gcry_sexp_release (s_key);
 
-    sk->is_protected = 0;
-    sk->protect.algo = 0;
+  sk->is_protected = 0;
+  sk->protect.algo = 0;
 
-    sk->csum  = checksum_mpi (sk->skey[2] );
-    sk->csum += checksum_mpi (sk->skey[3] );
-    sk->csum += checksum_mpi (sk->skey[4] );
-    sk->csum += checksum_mpi (sk->skey[5] );
-    if( ret_sk ) /* return an unprotected version of the sk */
-       *ret_sk = copy_secret_key( NULL, sk );
+  sk->csum  = checksum_mpi (sk->skey[2] );
+  sk->csum += checksum_mpi (sk->skey[3] );
+  sk->csum += checksum_mpi (sk->skey[4] );
+  sk->csum += checksum_mpi (sk->skey[5] );
+  if( ret_sk ) /* return an unprotected version of the sk */
+    *ret_sk = copy_secret_key( NULL, sk );
 
-    rc = genhelp_protect (dek, s2k, sk);
-    if (rc)
-      {
-        free_public_key (pk);
-        free_secret_key (sk);
-        return rc;
-      }
+  rc = genhelp_protect (dek, s2k, sk);
+  if (rc)
+    {
+      free_public_key (pk);
+      free_secret_key (sk);
+      return rc;
+    }
 
-    pkt = xmalloc_clear(sizeof *pkt);
-    pkt->pkttype = is_subkey ? PKT_PUBLIC_SUBKEY : PKT_PUBLIC_KEY;
-    pkt->pkt.public_key = pk;
-    add_kbnode(pub_root, new_kbnode( pkt ));
+  pkt = xmalloc_clear(sizeof *pkt);
+  pkt->pkttype = is_subkey ? PKT_PUBLIC_SUBKEY : PKT_PUBLIC_KEY;
+  pkt->pkt.public_key = pk;
+  add_kbnode(pub_root, new_kbnode( pkt ));
 
-    pkt = xmalloc_clear(sizeof *pkt);
-    pkt->pkttype = is_subkey ? PKT_SECRET_SUBKEY : PKT_SECRET_KEY;
-    pkt->pkt.secret_key = sk;
-    add_kbnode(sec_root, new_kbnode( pkt ));
+  pkt = xmalloc_clear(sizeof *pkt);
+  pkt->pkttype = is_subkey ? PKT_SECRET_SUBKEY : PKT_SECRET_KEY;
+  pkt->pkt.secret_key = sk;
+  add_kbnode(sec_root, new_kbnode( pkt ));
 
-    return 0;
+  return 0;
 }
 
 
@@ -1762,6 +1791,26 @@ parse_expire_string( const char *string )
     return seconds;
 }
 
+/* Parsean Creation-Date string which is either "1986-04-26" or
+   "19860426T042640".  Returns 0 on error. */
+static u32
+parse_creation_string (const char *string)
+{
+  u32 seconds;
+  
+  if (!*string)
+    seconds = 0;
+  else if ( !strncmp (string, "seconds=", 8) )
+    seconds = atoi (string+8);
+  else if ( !(seconds = scan_isodatestr (string)))
+    {
+      time_t tmp = isotime2epoch (string);
+      seconds = (tmp == (time_t)(-1))? 0 : tmp;
+    }
+  return seconds;
+}
+
+
 /* object == 0 for a key, and 1 for a sig */
 u32
 ask_expire_interval(int object,const char *def_expire)
@@ -2084,10 +2133,12 @@ do_ask_passphrase ( STRING2KEY **ret_s2k, int *r_canceled )
 }
 
 
+/* Basic key generation.  Here we divert to the actual generation
+   routines based on the requested algorithm.  */
 static int
-do_createint algo, unsigned int nbits, KBNODE pub_root, KBNODE sec_root,
-          DEK *dek, STRING2KEY *s2k, PKT_secret_key **sk, u32 expiredate,
-          int is_subkey )
+do_create (int algo, unsigned int nbits, KBNODE pub_root, KBNODE sec_root,
+          DEK *dek, STRING2KEY *s2k, PKT_secret_key **sk, 
+           u32 timestamp, u32 expiredate, int is_subkey )
 {
   int rc=0;
 
@@ -2099,14 +2150,14 @@ do_create( int algo, unsigned int nbits, KBNODE pub_root, KBNODE sec_root,
 "generator a better chance to gain enough entropy.\n") );
 
   if( algo == PUBKEY_ALGO_ELGAMAL_E )
-    rc = gen_elg(algo, nbits, pub_root, sec_root, dek, s2k, sk, expiredate,
-                is_subkey);
+    rc = gen_elg(algo, nbits, pub_root, sec_root, dek, s2k, sk,
+                 timestamp, expiredate, is_subkey);
   else if( algo == PUBKEY_ALGO_DSA )
-    rc = gen_dsa(nbits, pub_root, sec_root, dek, s2k, sk, expiredate,
-                is_subkey);
+    rc = gen_dsa(nbits, pub_root, sec_root, dek, s2k, sk,
+                 timestamp, expiredate, is_subkey);
   else if( algo == PUBKEY_ALGO_RSA )
-    rc = gen_rsa(algo, nbits, pub_root, sec_root, dek, s2k, sk, expiredate,
-                is_subkey);
+    rc = gen_rsa(algo, nbits, pub_root, sec_root, dek, s2k, sk,
+                 timestamp, expiredate, is_subkey);
   else
     BUG();
 
@@ -2279,16 +2330,18 @@ parse_revocation_key (const char *fname,
 static u32
 get_parameter_u32( struct para_data_s *para, enum para_name key )
 {
-    struct para_data_s *r = get_parameter( para, key );
-
-    if( !r )
-       return 0;
-    if( r->key == pKEYEXPIRE || r->key == pSUBKEYEXPIRE )
-       return r->u.expire;
-    if( r->key == pKEYUSAGE || r->key == pSUBKEYUSAGE )
-       return r->u.usage;
+  struct para_data_s *r = get_parameter( para, key );
 
-    return (unsigned int)strtoul( r->u.value, NULL, 10 );
+  if( !r )
+    return 0;
+  if( r->key == pKEYCREATIONDATE )
+    return r->u.creation;
+  if( r->key == pKEYEXPIRE || r->key == pSUBKEYEXPIRE )
+    return r->u.expire;
+  if( r->key == pKEYUSAGE || r->key == pSUBKEYUSAGE )
+    return r->u.usage;
+  
+  return (unsigned int)strtoul( r->u.value, NULL, 10 );
 }
 
 static unsigned int
@@ -2472,7 +2525,23 @@ proc_parameter_file( struct para_data_s *para, const char *fname,
     para = r;
   }
 
-  /* make KEYEXPIRE from Expire-Date */
+  /* Make KEYCREATIONDATE from Creation-Date.  */
+  r = get_parameter (para, pCREATIONDATE);
+  if (r && *r->u.value)
+    {
+      u32 seconds;
+
+      seconds = parse_creation_string (r->u.value);
+      if (!seconds)
+       {
+         log_error ("%s:%d: invalid creation date\n", fname, r->lnr );
+         return -1;
+       }
+      r->u.creation = seconds;
+      r->key = pKEYCREATIONDATE;  /* Change that entry. */
+    }
+
+  /* Make KEYEXPIRE from Expire-Date.  */
   r = get_parameter( para, pEXPIREDATE );
   if( r && *r->u.value )
     {
@@ -2525,6 +2594,7 @@ read_parameter_file( const char *fname )
        { "Name-Email",     pNAMEEMAIL },
        { "Name-Comment",   pNAMECOMMENT },
        { "Expire-Date",    pEXPIREDATE },
+       { "Creation-Date",  pCREATIONDATE },
        { "Passphrase",     pPASSPHRASE },
        { "Preferences",    pPREFERENCES },
        { "Revoker",        pREVOKER },
@@ -3027,439 +3097,490 @@ start_tree(KBNODE *tree)
   delete_kbnode(*tree);
 }
 
+
 static void
-do_generate_keypairstruct para_data_s *para,
-                    struct output_control_s *outctrl, int card )
+do_generate_keypair (struct para_data_s *para,
+                    struct output_control_s *outctrl, int card)
 {
-    KBNODE pub_root = NULL;
-    KBNODE sec_root = NULL;
-    PKT_secret_key *pri_sk = NULL, *sub_sk = NULL;
-    const char *s;
-    struct revocation_key *revkey;
-    int rc;
-    int did_sub = 0;
-
-    if( outctrl->dryrun )
-      {
-       log_info("dry-run mode - key generation skipped\n");
-       return;
-      }
+  KBNODE pub_root = NULL;
+  KBNODE sec_root = NULL;
+  PKT_secret_key *pri_sk = NULL, *sub_sk = NULL;
+  const char *s;
+  struct revocation_key *revkey;
+  int rc;
+  int did_sub = 0;
+  u32 timestamp;
 
-    if( outctrl->use_files ) {
-       if( outctrl->pub.newfname ) {
-           iobuf_close(outctrl->pub.stream);
-           outctrl->pub.stream = NULL;
-            if (outctrl->pub.fname)
-              iobuf_ioctl (NULL, 2, 0, (char*)outctrl->pub.fname);
-           xfree( outctrl->pub.fname );
-           outctrl->pub.fname =  outctrl->pub.newfname;
-           outctrl->pub.newfname = NULL;
-
-            if (is_secured_filename (outctrl->pub.fname) ) {
-                outctrl->pub.stream = NULL;
-                errno = EPERM;
+  if( outctrl->dryrun )
+    {
+      log_info("dry-run mode - key generation skipped\n");
+      return;
+    }
+  
+  if ( outctrl->use_files ) 
+    {
+      if ( outctrl->pub.newfname ) 
+        {
+          iobuf_close(outctrl->pub.stream);
+          outctrl->pub.stream = NULL;
+          if (outctrl->pub.fname)
+            iobuf_ioctl (NULL, 2, 0, (char*)outctrl->pub.fname);
+          xfree( outctrl->pub.fname );
+          outctrl->pub.fname =  outctrl->pub.newfname;
+          outctrl->pub.newfname = NULL;
+          
+          if (is_secured_filename (outctrl->pub.fname) ) 
+            {
+              outctrl->pub.stream = NULL;
+              errno = EPERM;
             }
-            else
-                outctrl->pub.stream = iobuf_create( outctrl->pub.fname );
-           if( !outctrl->pub.stream ) {
-               log_error(_("can't create `%s': %s\n"), outctrl->pub.newfname,
-                                                    strerror(errno) );
-               return;
-           }
-           if( opt.armor ) {
-               outctrl->pub.afx->what = 1;
-               push_armor_filter (outctrl->pub.afx, outctrl->pub.stream);
-           }
-       }
-       if( outctrl->sec.newfname ) {
-            mode_t oldmask;
-
-           iobuf_close(outctrl->sec.stream);
-           outctrl->sec.stream = NULL;
-            if (outctrl->sec.fname)
-              iobuf_ioctl (NULL, 2, 0, (char*)outctrl->sec.fname);
-           xfree( outctrl->sec.fname );
-           outctrl->sec.fname =  outctrl->sec.newfname;
-           outctrl->sec.newfname = NULL;
-
-           oldmask = umask (077);
-            if (is_secured_filename (outctrl->sec.fname) ) {
-                outctrl->sec.stream = NULL;
-                errno = EPERM;
+          else
+            outctrl->pub.stream = iobuf_create( outctrl->pub.fname );
+          if (!outctrl->pub.stream)
+            {
+              log_error(_("can't create `%s': %s\n"), outctrl->pub.newfname,
+                        strerror(errno) );
+              return;
             }
-            else
-                outctrl->sec.stream = iobuf_create( outctrl->sec.fname );
-            umask (oldmask);
-           if( !outctrl->sec.stream ) {
-               log_error(_("can't create `%s': %s\n"), outctrl->sec.newfname,
-                                                    strerror(errno) );
-               return;
-           }
-           if( opt.armor ) {
-               outctrl->sec.afx->what = 5;
-               push_armor_filter (outctrl->sec.afx, outctrl->sec.stream);
-           }
-       }
-       assert( outctrl->pub.stream );
-       assert( outctrl->sec.stream );
-        if( opt.verbose ) {
-            log_info(_("writing public key to `%s'\n"), outctrl->pub.fname );
-            if (card)
-              log_info (_("writing secret key stub to `%s'\n"),
-                        outctrl->sec.fname);
-            else
-              log_info(_("writing secret key to `%s'\n"), outctrl->sec.fname );
+          if (opt.armor)
+            {
+              outctrl->pub.afx->what = 1;
+              push_armor_filter (outctrl->pub.afx, outctrl->pub.stream);
+            }
+        }
+      if (outctrl->sec.newfname)
+        {
+          mode_t oldmask;
+          
+          iobuf_close(outctrl->sec.stream);
+          outctrl->sec.stream = NULL;
+          if (outctrl->sec.fname)
+            iobuf_ioctl (NULL, 2, 0, (char*)outctrl->sec.fname);
+          xfree( outctrl->sec.fname );
+          outctrl->sec.fname =  outctrl->sec.newfname;
+          outctrl->sec.newfname = NULL;
+
+          oldmask = umask (077);
+          if (is_secured_filename (outctrl->sec.fname) )
+            {
+              outctrl->sec.stream = NULL;
+              errno = EPERM;
+            }
+          else
+            outctrl->sec.stream = iobuf_create( outctrl->sec.fname );
+          umask (oldmask);
+          if (!outctrl->sec.stream)
+            {
+              log_error(_("can't create `%s': %s\n"), outctrl->sec.newfname,
+                        strerror(errno) );
+              return;
+            }
+          if (opt.armor)
+            {
+              outctrl->sec.afx->what = 5;
+              push_armor_filter (outctrl->sec.afx, outctrl->sec.stream);
+            }
+        }
+      assert( outctrl->pub.stream );
+      assert( outctrl->sec.stream );
+      if (opt.verbose)
+        {
+          log_info (_("writing public key to `%s'\n"), outctrl->pub.fname );
+          if (card)
+            log_info (_("writing secret key stub to `%s'\n"),
+                      outctrl->sec.fname);
+          else
+            log_info(_("writing secret key to `%s'\n"), outctrl->sec.fname );
         }
     }
 
 
-    /* we create the packets as a tree of kbnodes. Because the
-     * structure we create is known in advance we simply generate a
-     * linked list.  The first packet is a dummy packet which we flag
-     * as deleted.  The very first packet must always be a KEY packet.
-     */
+  /* We create the packets as a tree of kbnodes.  Because the
+     structure we create is known in advance we simply generate a
+     linked list.  The first packet is a dummy packet which we flag as
+     deleted.  The very first packet must always be a KEY packet.  */
     
-    start_tree(&pub_root);
-    start_tree(&sec_root);
+  start_tree (&pub_root);
+  start_tree (&sec_root);
 
-    if (!card)
-      {
-        rc = do_create( get_parameter_algo( para, pKEYTYPE ),
-                        get_parameter_uint( para, pKEYLENGTH ),
-                        pub_root, sec_root,
-                        get_parameter_dek( para, pPASSPHRASE_DEK ),
-                        get_parameter_s2k( para, pPASSPHRASE_S2K ),
-                        &pri_sk,
-                        get_parameter_u32( para, pKEYEXPIRE ), 0 );
-      }
-    else
-      {
-        rc = gen_card_key (PUBKEY_ALGO_RSA, 1, 1, pub_root, sec_root, NULL,
-                           get_parameter_u32 (para, pKEYEXPIRE), para);
-        if (!rc)
-          {
-            pri_sk = sec_root->next->pkt->pkt.secret_key;
-            assert (pri_sk);
-          }
-      }
+  timestamp = get_parameter_u32 (para, pKEYCREATIONDATE);
+  if (!timestamp)
+    timestamp = make_timestamp ();
 
-    if(!rc && (revkey=get_parameter_revkey(para,pREVOKER)))
-      {
-       rc=write_direct_sig(pub_root,pub_root,pri_sk,revkey);
-       if(!rc)
-         write_direct_sig(sec_root,pub_root,pri_sk,revkey);
-      }
+  if (!card)
+    {
+      rc = do_create (get_parameter_algo( para, pKEYTYPE ),
+                      get_parameter_uint( para, pKEYLENGTH ),
+                      pub_root, sec_root,
+                      get_parameter_dek( para, pPASSPHRASE_DEK ),
+                      get_parameter_s2k( para, pPASSPHRASE_S2K ),
+                      &pri_sk,
+                      timestamp,
+                      get_parameter_u32( para, pKEYEXPIRE ), 0 );
+    }
+  else
+    {
+      /* Note, that depending on the backend, the card key generation
+         may update TIMESTAMP.  */
+      rc = gen_card_key (PUBKEY_ALGO_RSA, 1, 1, pub_root, sec_root, NULL,
+                         &timestamp,
+                         get_parameter_u32 (para, pKEYEXPIRE), para);
+      if (!rc)
+        {
+          pri_sk = sec_root->next->pkt->pkt.secret_key;
+          assert (pri_sk);
+        }
+    }
 
-    if( !rc && (s=get_parameter_value(para, pUSERID)) )
-      {
-       write_uid(pub_root, s );
-       if( !rc )
-         write_uid(sec_root, s );
+  if(!rc && (revkey=get_parameter_revkey(para,pREVOKER)))
+    {
+      rc = write_direct_sig (pub_root, pub_root, pri_sk, revkey, timestamp);
+      if (!rc)
+        rc = write_direct_sig (sec_root, pub_root, pri_sk, revkey, timestamp);
+    }
 
-       if( !rc )
-         rc = write_selfsigs(sec_root, pub_root, pri_sk,
-                             get_parameter_uint (para, pKEYUSAGE));
-      }
+  if( !rc && (s=get_parameter_value(para, pUSERID)) )
+    {
+      write_uid (pub_root, s );
+      write_uid (sec_root, s );
 
-    /* Write the auth key to the card before the encryption key.  This
-       is a partial workaround for a PGP bug (as of this writing, all
-       versions including 8.1), that causes it to try and encrypt to
-       the most recent subkey regardless of whether that subkey is
-       actually an encryption type.  In this case, the auth key is an
-       RSA key so it succeeds. */
+      rc = write_selfsigs (sec_root, pub_root, pri_sk,
+                           get_parameter_uint (para, pKEYUSAGE), timestamp);
+    }
 
-    if (!rc && card && get_parameter (para, pAUTHKEYTYPE))
-      {
-        rc = gen_card_key (PUBKEY_ALGO_RSA, 3, 0, pub_root, sec_root, NULL,
-                           get_parameter_u32 (para, pKEYEXPIRE), para);
+  /* Write the auth key to the card before the encryption key.  This
+     is a partial workaround for a PGP bug (as of this writing, all
+     versions including 8.1), that causes it to try and encrypt to
+     the most recent subkey regardless of whether that subkey is
+     actually an encryption type.  In this case, the auth key is an
+     RSA key so it succeeds. */
+
+  if (!rc && card && get_parameter (para, pAUTHKEYTYPE))
+    {
+      /* Note, that depending on the backend, the card key generation
+         may update TIMESTAMP.  */
+      rc = gen_card_key (PUBKEY_ALGO_RSA, 3, 0, pub_root, sec_root, NULL,
+                         &timestamp,
+                         get_parameter_u32 (para, pKEYEXPIRE), para);
         
-        if (!rc)
-          rc = write_keybinding (pub_root, pub_root, pri_sk, sub_sk, PUBKEY_USAGE_AUTH);
-        if (!rc)
-          rc = write_keybinding (sec_root, pub_root, pri_sk, sub_sk, PUBKEY_USAGE_AUTH);
-      }
+      if (!rc)
+        rc = write_keybinding (pub_root, pub_root, pri_sk, sub_sk,
+                               PUBKEY_USAGE_AUTH, timestamp);
+      if (!rc)
+        rc = write_keybinding (sec_root, pub_root, pri_sk, sub_sk,
+                               PUBKEY_USAGE_AUTH, timestamp);
+    }
 
-    if( !rc && get_parameter( para, pSUBKEYTYPE ) )
-      {
-        if (!card)
-          {
-            rc = do_create( get_parameter_algo( para, pSUBKEYTYPE ),
-                            get_parameter_uint( para, pSUBKEYLENGTH ),
-                            pub_root, sec_root,
-                            get_parameter_dek( para, pPASSPHRASE_DEK ),
-                            get_parameter_s2k( para, pPASSPHRASE_S2K ),
-                            &sub_sk,
-                            get_parameter_u32( para, pSUBKEYEXPIRE ), 1 );
-          }
-        else
-          {
-            if ((s = get_parameter_value (para, pBACKUPENCDIR)))
-              {
-                /* A backup of the encryption key has been requested.
-                   Generate the key i software and import it then to
-                   the card.  Write a backup file. */
-                rc = gen_card_key_with_backup (PUBKEY_ALGO_RSA, 2, 0,
-                                               pub_root, sec_root,
-                                               get_parameter_u32 (para,
-                                                                  pKEYEXPIRE),
-                                               para, s);
-              }
-            else
+  if( !rc && get_parameter( para, pSUBKEYTYPE ) )
+    {
+      if (!card)
+        {
+          rc = do_create( get_parameter_algo( para, pSUBKEYTYPE ),
+                          get_parameter_uint( para, pSUBKEYLENGTH ),
+                          pub_root, sec_root,
+                          get_parameter_dek( para, pPASSPHRASE_DEK ),
+                          get_parameter_s2k( para, pPASSPHRASE_S2K ),
+                          &sub_sk,
+                          timestamp,
+                          get_parameter_u32( para, pSUBKEYEXPIRE ), 1 );
+        }
+      else
+        {
+          if ((s = get_parameter_value (para, pBACKUPENCDIR)))
+            {
+              /* A backup of the encryption key has been requested.
+                 Generate the key in software and import it then to
+                 the card.  Write a backup file. */
+              rc = gen_card_key_with_backup (PUBKEY_ALGO_RSA, 2, 0,
+                                             pub_root, sec_root,
+                                             timestamp,
+                                             get_parameter_u32 (para,
+                                                                pKEYEXPIRE),
+                                             para, s);
+            }
+          else
+            {
+              /* Note, that depending on the backend, the card key
+                 generation may update TIMESTAMP.  */
               rc = gen_card_key (PUBKEY_ALGO_RSA, 2, 0, pub_root, sec_root,
-                                NULL,
+                                 NULL,
+                                 &timestamp,
                                  get_parameter_u32 (para, pKEYEXPIRE), para);
-          }
-
-        if( !rc )
-          rc = write_keybinding(pub_root, pub_root, pri_sk, sub_sk,
-                                get_parameter_uint (para, pSUBKEYUSAGE));
-        if( !rc )
-          rc = write_keybinding(sec_root, pub_root, pri_sk, sub_sk,
-                                get_parameter_uint (para, pSUBKEYUSAGE));
-        did_sub = 1;
-      }
-
-    if( !rc && outctrl->use_files ) { /* direct write to specified files */
-       rc = write_keyblock( outctrl->pub.stream, pub_root );
-       if( rc )
-           log_error("can't write public key: %s\n", g10_errstr(rc) );
-       if( !rc ) {
-           rc = write_keyblock( outctrl->sec.stream, sec_root );
-           if( rc )
-               log_error("can't write secret key: %s\n", g10_errstr(rc) );
-       }
+            }
+        }
 
+      if( !rc )
+        rc = write_keybinding(pub_root, pub_root, pri_sk, sub_sk,
+                              get_parameter_uint (para, pSUBKEYUSAGE),
+                              timestamp);
+      if( !rc )
+        rc = write_keybinding(sec_root, pub_root, pri_sk, sub_sk,
+                              get_parameter_uint (para, pSUBKEYUSAGE),
+                              timestamp);
+      did_sub = 1;
     }
-    else if( !rc ) { /* write to the standard keyrings */
-       KEYDB_HANDLE pub_hd = keydb_new (0);
-       KEYDB_HANDLE sec_hd = keydb_new (1);
 
-        /* FIXME: we may have to create the keyring first */
-        rc = keydb_locate_writable (pub_hd, NULL);
-        if (rc) 
-           log_error (_("no writable public keyring found: %s\n"),
+  if (!rc && outctrl->use_files)  /* Direct write to specified files.  */
+    {
+      rc = write_keyblock( outctrl->pub.stream, pub_root );
+      if (rc)
+        log_error ("can't write public key: %s\n", g10_errstr(rc) );
+      if (!rc) 
+        {
+          rc = write_keyblock( outctrl->sec.stream, sec_root );
+          if(rc)
+            log_error ("can't write secret key: %s\n", g10_errstr(rc) );
+        }
+    }
+  else if (!rc) /* Write to the standard keyrings.  */
+    {
+      KEYDB_HANDLE pub_hd = keydb_new (0);
+      KEYDB_HANDLE sec_hd = keydb_new (1);
+
+      rc = keydb_locate_writable (pub_hd, NULL);
+      if (rc) 
+        log_error (_("no writable public keyring found: %s\n"),
+                   g10_errstr (rc));
+
+      if (!rc) 
+        {  
+          rc = keydb_locate_writable (sec_hd, NULL);
+          if (rc) 
+            log_error (_("no writable secret keyring found: %s\n"),
                        g10_errstr (rc));
-
-        if (!rc) {  
-            rc = keydb_locate_writable (sec_hd, NULL);
-            if (rc) 
-                log_error (_("no writable secret keyring found: %s\n"),
-                           g10_errstr (rc));
         }
-
-        if (!rc && opt.verbose) {
-            log_info(_("writing public key to `%s'\n"),
-                     keydb_get_resource_name (pub_hd));
-            if (card)
-              log_info (_("writing secret key stub to `%s'\n"),
-                        keydb_get_resource_name (sec_hd));
-            else
-              log_info(_("writing secret key to `%s'\n"),
-                       keydb_get_resource_name (sec_hd));
+      
+      if (!rc && opt.verbose)
+        {
+          log_info (_("writing public key to `%s'\n"),
+                    keydb_get_resource_name (pub_hd));
+          if (card)
+            log_info (_("writing secret key stub to `%s'\n"),
+                      keydb_get_resource_name (sec_hd));
+          else
+            log_info (_("writing secret key to `%s'\n"),
+                      keydb_get_resource_name (sec_hd));
         }
-
-        if (!rc) {
-           rc = keydb_insert_keyblock (pub_hd, pub_root);
-            if (rc)
-                log_error (_("error writing public keyring `%s': %s\n"),
-                           keydb_get_resource_name (pub_hd), g10_errstr(rc));
+      
+      if (!rc) 
+        {
+          rc = keydb_insert_keyblock (pub_hd, pub_root);
+          if (rc)
+            log_error (_("error writing public keyring `%s': %s\n"),
+                       keydb_get_resource_name (pub_hd), g10_errstr(rc));
         }
-
-        if (!rc) {
-           rc = keydb_insert_keyblock (sec_hd, sec_root);
-            if (rc)
-                log_error (_("error writing secret keyring `%s': %s\n"),
-                           keydb_get_resource_name (pub_hd), g10_errstr(rc));
+      
+      if (!rc)
+        {
+          rc = keydb_insert_keyblock (sec_hd, sec_root);
+          if (rc)
+            log_error (_("error writing secret keyring `%s': %s\n"),
+                       keydb_get_resource_name (pub_hd), g10_errstr(rc));
         }
 
-        keydb_release (pub_hd);
-        keydb_release (sec_hd);
+      keydb_release (pub_hd);
+      keydb_release (sec_hd);
+      
+      if (!rc)
+        {
+          int no_enc_rsa;
+          PKT_public_key *pk;
+
+          no_enc_rsa = (get_parameter_algo (para, pKEYTYPE) == PUBKEY_ALGO_RSA
+                        && get_parameter_uint (para, pKEYUSAGE)
+                        && !((get_parameter_uint (para, pKEYUSAGE)
+                              & PUBKEY_USAGE_ENC)) );
 
-       if (!rc) {
-            int no_enc_rsa =
-                get_parameter_algo(para, pKEYTYPE) == PUBKEY_ALGO_RSA
-                && get_parameter_uint( para, pKEYUSAGE )
-                && !(get_parameter_uint( para,pKEYUSAGE) & PUBKEY_USAGE_ENC);
-            PKT_public_key *pk = find_kbnode (pub_root, 
-                                    PKT_PUBLIC_KEY)->pkt->pkt.public_key;
+          pk = find_kbnode (pub_root, PKT_PUBLIC_KEY)->pkt->pkt.public_key;
 
-           keyid_from_pk(pk,pk->main_keyid);
-           register_trusted_keyid(pk->main_keyid);
+          keyid_from_pk(pk,pk->main_keyid);
+          register_trusted_keyid(pk->main_keyid);
 
-           update_ownertrust (pk,
-                              ((get_ownertrust (pk) & ~TRUST_MASK)
-                               | TRUST_ULTIMATE ));
+          update_ownertrust (pk, ((get_ownertrust (pk) & ~TRUST_MASK)
+                                  | TRUST_ULTIMATE ));
 
-           if (!opt.batch) {
-                tty_printf(_("public and secret key created and signed.\n") );
-               tty_printf("\n");
-               list_keyblock(pub_root,0,1,NULL);
+          if (!opt.batch) 
+            {
+              tty_printf (_("public and secret key created and signed.\n") );
+              tty_printf ("\n");
+              list_keyblock(pub_root,0,1,NULL);
             }
             
-
-           if( !opt.batch
-               && ( get_parameter_algo( para, pKEYTYPE ) == PUBKEY_ALGO_DSA
-                     || no_enc_rsa )
-               && !get_parameter( para, pSUBKEYTYPE ) )
-           {
-               tty_printf(_("Note that this key cannot be used for "
-                            "encryption.  You may want to use\n"
-                            "the command \"--edit-key\" to generate a "
-                            "subkey for this purpose.\n") );
-           }
-       }
+          
+          if (!opt.batch
+              && (get_parameter_algo (para, pKEYTYPE) == PUBKEY_ALGO_DSA
+                  || no_enc_rsa )
+              && !get_parameter (para, pSUBKEYTYPE) )
+            {
+              tty_printf(_("Note that this key cannot be used for "
+                           "encryption.  You may want to use\n"
+                           "the command \"--edit-key\" to generate a "
+                           "subkey for this purpose.\n") );
+            }
+        }
     }
 
-    if( rc ) {
-       if( opt.batch )
-           log_error("key generation failed: %s\n", g10_errstr(rc) );
-       else
-           tty_printf(_("Key generation failed: %s\n"), g10_errstr(rc) );
-        print_status_key_not_created ( get_parameter_value (para, pHANDLE) );
+  if (rc)
+    {
+      if (opt.batch)
+        log_error ("key generation failed: %s\n", g10_errstr(rc) );
+      else
+        tty_printf (_("Key generation failed: %s\n"), g10_errstr(rc) );
+      print_status_key_not_created ( get_parameter_value (para, pHANDLE) );
     }
-    else {
-        PKT_public_key *pk = find_kbnode (pub_root, 
-                                    PKT_PUBLIC_KEY)->pkt->pkt.public_key;
-        print_status_key_created (did_sub? 'B':'P', pk,
-                                  get_parameter_value (para, pHANDLE));
-    }
-    release_kbnode( pub_root );
-    release_kbnode( sec_root );
-
-    if( pri_sk && !card) /* the unprotected  secret key unless we have a */
-      free_secret_key(pri_sk); /* shallow copy in card mode. */
-    if( sub_sk )
-       free_secret_key(sub_sk);
+  else
+    {
+      PKT_public_key *pk = find_kbnode (pub_root, 
+                                        PKT_PUBLIC_KEY)->pkt->pkt.public_key;
+      print_status_key_created (did_sub? 'B':'P', pk,
+                                get_parameter_value (para, pHANDLE));
+    }
+  release_kbnode( pub_root );
+  release_kbnode( sec_root );
+  
+  if (pri_sk && !card)        /* The unprotected secret key unless we */
+    free_secret_key (pri_sk); /* have a shallow copy in card mode. */
+  if (sub_sk)
+    free_secret_key(sub_sk);
 }
 
 
-/****************
- * add a new subkey to an existing key.
- * Returns true if a new key has been generated and put into the keyblocks.
- */
+/* Add a new subkey to an existing key.  Returns true if a new key has
+   been generated and put into the keyblocks.  */
 int
-generate_subkeypair( KBNODE pub_keyblock, KBNODE sec_keyblock )
+generate_subkeypair (KBNODE pub_keyblock, KBNODE sec_keyblock)
 {
-    int okay=0, rc=0;
-    KBNODE node;
-    PKT_secret_key *pri_sk = NULL, *sub_sk = NULL;
-    int algo;
-    unsigned int use;
-    u32 expire;
-    unsigned nbits;
-    char *passphrase = NULL;
-    DEK *dek = NULL;
-    STRING2KEY *s2k = NULL;
-    u32 cur_time;
-    int ask_pass = 0;
-    int canceled;
-
-    /* break out the primary secret key */
-    node = find_kbnode( sec_keyblock, PKT_SECRET_KEY );
-    if( !node ) {
-       log_error("Oops; secret key not found anymore!\n");
-       goto leave;
-    }
-
-    /* make a copy of the sk to keep the protected one in the keyblock */
-    pri_sk = copy_secret_key( NULL, node->pkt->pkt.secret_key );
-
-    cur_time = make_timestamp();
-    if( pri_sk->timestamp > cur_time ) {
-       ulong d = pri_sk->timestamp - cur_time;
-       log_info( d==1 ? _("key has been created %lu second "
-                          "in future (time warp or clock problem)\n")
-                      : _("key has been created %lu seconds "
-                          "in future (time warp or clock problem)\n"), d );
-       if( !opt.ignore_time_conflict ) {
-           rc = G10ERR_TIME_CONFLICT;
-           goto leave;
-       }
+  int okay=0, rc=0;
+  KBNODE node;
+  PKT_secret_key *pri_sk = NULL, *sub_sk = NULL;
+  int algo;
+  unsigned int use;
+  u32 expire;
+  unsigned nbits;
+  char *passphrase = NULL;
+  DEK *dek = NULL;
+  STRING2KEY *s2k = NULL;
+  u32 cur_time;
+  int ask_pass = 0;
+  int canceled;
+
+  /* Break out the primary secret key.  */
+  node = find_kbnode( sec_keyblock, PKT_SECRET_KEY );
+  if( !node ) 
+    {
+      log_error ("Oops; secret key not found anymore!\n");
+      goto leave;
     }
+  
+  /* Make a copy of the sk to keep the protected one in the keyblock. */
+  pri_sk = copy_secret_key (NULL, node->pkt->pkt.secret_key);
+
+  cur_time = make_timestamp();
 
-    if (pri_sk->version < 4) {
-        log_info (_("NOTE: creating subkeys for v3 keys "
-                    "is not OpenPGP compliant\n"));
-       goto leave;
+  if (pri_sk->timestamp > cur_time)
+    {
+      ulong d = pri_sk->timestamp - cur_time;
+      log_info ( d==1 ? _("key has been created %lu second "
+                          "in future (time warp or clock problem)\n")
+                 : _("key has been created %lu seconds "
+                     "in future (time warp or clock problem)\n"), d );
+      if (!opt.ignore_time_conflict)
+        {
+          rc = G10ERR_TIME_CONFLICT;
+          goto leave;
+        }
     }
 
-    if (pri_sk->is_protected && pri_sk->protect.s2k.mode == 1001) {
-        tty_printf(_("Secret parts of primary key are not available.\n"));
-        rc = G10ERR_NO_SECKEY;
-        goto leave;
+  if (pri_sk->version < 4) 
+    {
+      log_info (_("NOTE: creating subkeys for v3 keys "
+                  "is not OpenPGP compliant\n"));
+      goto leave;
     }
 
+  if (pri_sk->is_protected && pri_sk->protect.s2k.mode == 1001)
+    {
+      tty_printf (_("Secret parts of primary key are not available.\n"));
+      rc = G10ERR_NO_SECKEY;
+      goto leave;
+    }
 
-    /* Unprotect to get the passphrase.  */
-    switch( is_secret_key_protected( pri_sk ) ) {
-      case -1:
-       rc = G10ERR_PUBKEY_ALGO;
-       break;
-      case 0:
-       tty_printf(_("This key is not protected.\n"));
-       break;
-      case -2:
-        tty_printf(_("Secret parts of primary key are stored on-card.\n"));
-        ask_pass = 1;
-        break;
-      default:
-        tty_printf(_("Key is protected.\n"));
-        rc = check_secret_key( pri_sk, 0 );
-        if( !rc )
-            passphrase = get_last_passphrase();
-        break;
-    }
-    if( rc )
-       goto leave;
-
-    algo = ask_algo( 1, &use );
-    assert(algo);
-    nbits = ask_keysize( algo );
-    expire = ask_expire_interval(0,NULL);
-    if( !cpr_enabled() && !cpr_get_answer_is_yes("keygen.sub.okay",
-                                                 _("Really create? (y/N) ")))
-       goto leave;
-
-    canceled = 0;
-    if (ask_pass)
-        dek = do_ask_passphrase (&s2k, &canceled);
-    else if (passphrase) {
-       s2k = xmalloc_secure( sizeof *s2k );
-       s2k->mode = opt.s2k_mode;
-       s2k->hash_algo = S2K_DIGEST_ALGO;
-       set_next_passphrase( passphrase );
-       dek = passphrase_to_dek( NULL, 0, opt.s2k_cipher_algo, s2k, 2,
-                                 NULL, NULL );
+
+  /* Unprotect to get the passphrase.  */
+  switch (is_secret_key_protected (pri_sk) )
+    {
+    case -1:
+      rc = G10ERR_PUBKEY_ALGO;
+      break;
+    case 0:
+      tty_printf (_("This key is not protected.\n"));
+      break;
+    case -2:
+      tty_printf (_("Secret parts of primary key are stored on-card.\n"));
+      ask_pass = 1;
+      break;
+    default:
+      tty_printf (_("Key is protected.\n"));
+      rc = check_secret_key ( pri_sk, 0 );
+      if (!rc)
+        passphrase = get_last_passphrase();
+      break;
     }
+  if (rc)
+    goto leave;
 
-    if (canceled)
-      rc = GPG_ERR_CANCELED;
-    
-    if (!rc)
-      rc = do_create (algo, nbits, pub_keyblock, sec_keyblock,
-                      dek, s2k, &sub_sk, expire, 1 );
-    if( !rc )
-       rc = write_keybinding(pub_keyblock, pub_keyblock, pri_sk, sub_sk, use);
-    if( !rc )
-       rc = write_keybinding(sec_keyblock, pub_keyblock, pri_sk, sub_sk, use);
-    if( !rc ) {
-       okay = 1;
-        write_status_text (STATUS_KEY_CREATED, "S");
-    }
-
-  leave:
-    if( rc )
-       log_error(_("Key generation failed: %s\n"), g10_errstr(rc) );
-    xfree( passphrase );
-    xfree( dek );
-    xfree( s2k );
-    /* release the copy of the (now unprotected) secret keys */
-    if( pri_sk )
-       free_secret_key(pri_sk);
-    if( sub_sk )
-       free_secret_key(sub_sk);
-    set_next_passphrase( NULL );
-    return okay;
+  algo = ask_algo (1, &use);
+  assert (algo);
+  nbits = ask_keysize (algo);
+  expire = ask_expire_interval (0, NULL);
+  if (!cpr_enabled() && !cpr_get_answer_is_yes("keygen.sub.okay",
+                                               _("Really create? (y/N) ")))
+    goto leave;
+  
+  canceled = 0;
+  if (ask_pass)
+    dek = do_ask_passphrase (&s2k, &canceled);
+  else if (passphrase)
+    {
+      s2k = xmalloc_secure ( sizeof *s2k );
+      s2k->mode = opt.s2k_mode;
+      s2k->hash_algo = S2K_DIGEST_ALGO;
+      set_next_passphrase ( passphrase );
+      dek = passphrase_to_dek (NULL, 0, opt.s2k_cipher_algo, s2k, 2,
+                               NULL, NULL );
+    }
+  
+  if (canceled)
+    rc = GPG_ERR_CANCELED;
+  
+  if (!rc)
+    rc = do_create (algo, nbits, pub_keyblock, sec_keyblock,
+                    dek, s2k, &sub_sk, cur_time, expire, 1 );
+  if (!rc)
+    rc = write_keybinding (pub_keyblock, pub_keyblock, pri_sk, sub_sk, 
+                          use, cur_time);
+  if (!rc)
+    rc = write_keybinding (sec_keyblock, pub_keyblock, pri_sk, sub_sk, 
+                           use, cur_time);
+  if (!rc) 
+    {
+      okay = 1;
+      write_status_text (STATUS_KEY_CREATED, "S");
+    }
+
+ leave:
+  if (rc)
+    log_error (_("Key generation failed: %s\n"), g10_errstr(rc) );
+  xfree (passphrase);
+  xfree (dek);
+  xfree (s2k);
+  /* Release the copy of the (now unprotected) secret keys.  */
+  if (pri_sk)
+    free_secret_key (pri_sk);
+  if (sub_sk)
+    free_secret_key (sub_sk);
+  set_next_passphrase (NULL);
+  return okay;
 }
 
 
@@ -3486,8 +3607,8 @@ generate_card_subkeypair (KBNODE pub_keyblock, KBNODE sec_keyblock,
   strcpy (para->u.value, serialno);
 
   /* Break out the primary secret key */
-  node = find_kbnode( sec_keyblock, PKT_SECRET_KEY );
-  if(!node)
+  node = find_kbnode (sec_keyblock, PKT_SECRET_KEY);
+  if (!node)
     {
       log_error("Oops; secret key not found anymore!\n");
       goto leave;
@@ -3551,12 +3672,17 @@ generate_card_subkeypair (KBNODE pub_keyblock, KBNODE sec_keyblock,
 
   if (passphrase)
     set_next_passphrase (passphrase);
+
+  /* Note, that depending on the backend, the card key generation may
+     update CUR_TIME.  */
   rc = gen_card_key (algo, keyno, 0, pub_keyblock, sec_keyblock,
-                    &sub_sk, expire, para);
+                    &sub_sk, &cur_time, expire, para);
   if (!rc)
-    rc = write_keybinding (pub_keyblock, pub_keyblock, pri_sk, sub_sk, use);
+    rc = write_keybinding (pub_keyblock, pub_keyblock, pri_sk, sub_sk, 
+                           use, cur_time);
   if (!rc)
-    rc = write_keybinding (sec_keyblock, pub_keyblock, pri_sk, sub_sk, use);
+    rc = write_keybinding (sec_keyblock, pub_keyblock, pri_sk, sub_sk, 
+                           use, cur_time);
   if (!rc)
     {
       okay = 1;
@@ -3577,7 +3703,7 @@ generate_card_subkeypair (KBNODE pub_keyblock, KBNODE sec_keyblock,
 #endif /* !ENABLE_CARD_SUPPORT */
 
 
-/****************
+/*
  * Write a keyblock to an output stream
  */
 static int
@@ -3601,10 +3727,11 @@ write_keyblock( IOBUF out, KBNODE node )
 }
 
 
+/* Note that timestamp is an in/out arg. */
 static int
 gen_card_key (int algo, int keyno, int is_primary,
               KBNODE pub_root, KBNODE sec_root, PKT_secret_key **ret_sk,
-              u32 expireval, struct para_data_s *para)
+              u32 *timestamp, u32 expireval, struct para_data_s *para)
 {
 #ifdef ENABLE_CARD_SUPPORT
   int rc;
@@ -3617,7 +3744,7 @@ gen_card_key (int algo, int keyno, int is_primary,
   assert (algo == PUBKEY_ALGO_RSA);
   
   /* Fixme: We don't have the serialnumber available, thus passing NULL. */
-  rc = agent_scd_genkey (&info, keyno, 1, NULL);
+  rc = agent_scd_genkey (&info, keyno, 1, NULL, *timestamp);
 /*    if (gpg_err_code (rc) == GPG_ERR_EEXIST) */
 /*      { */
 /*        tty_printf ("\n"); */
@@ -3641,6 +3768,9 @@ gen_card_key (int algo, int keyno, int is_primary,
       return gpg_error (GPG_ERR_GENERAL);
     }
   
+  if (*timestamp != info.created_at)
+    log_info ("Note that the key does not use the suggested creation date\n");
+  *timestamp = info.created_at;
 
   pk = xcalloc (1, sizeof *pk );
   sk = xcalloc (1, sizeof *sk );
@@ -3688,6 +3818,7 @@ gen_card_key (int algo, int keyno, int is_primary,
 static int
 gen_card_key_with_backup (int algo, int keyno, int is_primary,
                           KBNODE pub_root, KBNODE sec_root,
+                          u32 timestamp,
                           u32 expireval, struct para_data_s *para,
                           const char *backup_dir)
 {
@@ -3700,7 +3831,7 @@ gen_card_key_with_backup (int algo, int keyno, int is_primary,
   size_t n;
   int i;
 
-  rc = generate_raw_key (algo, 1024, make_timestamp (),
+  rc = generate_raw_key (algo, 1024, timestamp,
                          &sk_unprotected, &sk_protected);
   if (rc)
     return rc;
@@ -3857,15 +3988,15 @@ save_unprotected_key_to_card (PKT_secret_key *sk, int keyno)
   /* Copy the parameters into straight buffers. */
   gcry_mpi_aprint (GCRYMPI_FMT_USG, &rsa_n, &rsa_n_len, sk->skey[0]);
   gcry_mpi_aprint (GCRYMPI_FMT_USG, &rsa_e, &rsa_e_len, sk->skey[1]);
-  gcry_mpi_aprint (GCRYMPI_FMT_USG, &rsa_p, &rsa_p_len, sk->skey[2]);
-  gcry_mpi_aprint (GCRYMPI_FMT_USG, &rsa_q, &rsa_q_len, sk->skey[3]);
-   if (!rsa_n || !rsa_e || !rsa_p || !rsa_q)
+  gcry_mpi_aprint (GCRYMPI_FMT_USG, &rsa_p, &rsa_p_len, sk->skey[3]);
+  gcry_mpi_aprint (GCRYMPI_FMT_USG, &rsa_q, &rsa_q_len, sk->skey[4]);
+  if (!rsa_n || !rsa_e || !rsa_p || !rsa_q)
     {
       rc = G10ERR_INV_ARG;
       goto leave;
     }
 
-  /* Put the key into an S-expression. */
+   /* Put the key into an S-expression. */
   sexp = p = xmalloc_secure (30
                              + rsa_n_len + rsa_e_len + rsa_p_len + rsa_q_len
                              + 4*sizeof (numbuf) + 25 + sizeof(numbuf) + 20);
index fdbd93b..e782a45 100644 (file)
@@ -198,7 +198,8 @@ int keygen_add_keyserver_url(PKT_signature *sig, void *opaque);
 int keygen_add_notations(PKT_signature *sig,void *opaque);
 int keygen_add_revkey(PKT_signature *sig, void *opaque);
 int make_backsig(PKT_signature *sig,PKT_public_key *pk,
-                PKT_public_key *sub_pk,PKT_secret_key *sub_sk);
+                PKT_public_key *sub_pk,PKT_secret_key *sub_sk,
+                 u32 timestamp);
 int generate_subkeypair( KBNODE pub_keyblock, KBNODE sec_keyblock );
 #ifdef ENABLE_CARD_SUPPORT
 int generate_card_subkeypair (KBNODE pub_keyblock, KBNODE sec_keyblock,
index 4f0b576..1b24263 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-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\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"
@@ -75,8 +75,8 @@ 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:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, c-format
 msgid "can't create `%s': %s\n"
@@ -84,7 +84,7 @@ msgstr ""
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -854,14 +854,14 @@ msgstr "сакрэтны ключ недаступны"
 msgid "OpenPGP card no. %s detected\n"
 msgstr ""
 
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 msgid "can't do this in batch mode\n"
 msgstr ""
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr ""
 
@@ -995,19 +995,19 @@ msgstr ""
 msgid "error getting current key info: %s\n"
 msgstr ""
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 msgid "Replace existing key? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr ""
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 msgid "Replace existing keys? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1015,133 +1015,133 @@ msgid ""
 "You should change them using the command --change-pin\n"
 msgstr ""
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 #, fuzzy
 msgid "Please select the type of key to generate:\n"
 msgstr "Калі ласка, абярыце від ключа, які Вам патрэбны:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 #, fuzzy
 msgid "   (1) Signature key\n"
 msgstr "Подпіс створаны ў %.*s з выкарыстаньнем %s ID ключа %08lX\n"
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 msgid "   (2) Encryption key\n"
 msgstr ""
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr ""
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr ""
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 #, fuzzy
 msgid "Please select where to store the key:\n"
 msgstr "Калі ласка, абярыце від ключа, які Вам патрэбны:\n"
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 #, fuzzy
 msgid "unknown key protection algorithm\n"
 msgstr "невядомы альгарытм сьцісканьня"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 #, fuzzy
 msgid "secret parts of key are not available\n"
 msgstr "сакрэтны ключ недаступны"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 msgid "secret key already stored on a card\n"
 msgstr ""
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr ""
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 #, fuzzy
 msgid "show admin commands"
 msgstr "несумяшчальныя загады\n"
 
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "паказаць гэтую даведку"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 #, fuzzy
 msgid "list all available data"
 msgstr "Даведка адсутнічае"
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr ""
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr ""
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr ""
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 msgid "change the login name"
 msgstr ""
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 #, fuzzy
 msgid "change the language preferences"
 msgstr "за шмат пераваг для \"%c\"\n"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr ""
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 #, fuzzy
 msgid "change a CA fingerprint"
 msgstr "паказаць ключы й адбіткі пальцаў"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "toggle the signature force PIN flag"
 msgstr ""
 
-#: g10/card-util.c:1330
+#: g10/card-util.c:1320
 #, fuzzy
 msgid "generate new keys"
 msgstr "стварыць новую пару ключоў"
 
-#: g10/card-util.c:1331
+#: g10/card-util.c:1321
 msgid "menu to change or unblock the PIN"
 msgstr ""
 
-#: g10/card-util.c:1332
+#: g10/card-util.c:1322
 msgid "verify the PIN and list all data"
 msgstr ""
 
-#: g10/card-util.c:1452 g10/keyedit.c:1634
+#: g10/card-util.c:1442 g10/keyedit.c:1634
 msgid "Command> "
 msgstr "Загад> "
 
-#: g10/card-util.c:1490
+#: g10/card-util.c:1480
 #, fuzzy
 msgid "Admin-only command\n"
 msgstr "несумяшчальныя загады\n"
 
-#: g10/card-util.c:1521
+#: g10/card-util.c:1511
 #, fuzzy
 msgid "Admin commands are allowed\n"
 msgstr "несумяшчальныя загады\n"
 
-#: g10/card-util.c:1523
+#: g10/card-util.c:1513
 #, fuzzy
 msgid "Admin commands are not allowed\n"
 msgstr "сакрэтны ключ недаступны"
 
-#: g10/card-util.c:1597 g10/keyedit.c:2255
+#: g10/card-util.c:1587 g10/keyedit.c:2255
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Нерэчаісны загад (паспрабуйце \"help\")\n"
 
@@ -1425,7 +1425,7 @@ msgstr ""
 msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
 msgstr ""
 
-#: g10/getkey.c:2391 g10/keyedit.c:3721
+#: g10/getkey.c:2391 g10/keyedit.c:3726
 #, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
 msgstr ""
@@ -1843,7 +1843,7 @@ msgstr "%s - гэта недапушчальнае мноства знакаў\n
 msgid "`%s' is not a valid character set\n"
 msgstr "%s - гэта недапушчальнае мноства знакаў\n"
 
-#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4078
+#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4084
 msgid "could not parse keyserver URL\n"
 msgstr ""
 
@@ -3196,8 +3196,8 @@ msgstr ""
 msgid "Really sign? (y/N) "
 msgstr ""
 
-#: g10/keyedit.c:1066 g10/keyedit.c:4797 g10/keyedit.c:4888 g10/keyedit.c:4952
-#: g10/keyedit.c:5013 g10/sign.c:348
+#: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
+#: g10/keyedit.c:5019 g10/sign.c:348
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
@@ -3206,20 +3206,20 @@ msgstr "збой падпісаньня: %s\n"
 msgid "Key has only stub or on-card key items - no passphrase to change.\n"
 msgstr ""
 
-#: g10/keyedit.c:1142 g10/keygen.c:3399
+#: g10/keyedit.c:1142 g10/keygen.c:3516
 msgid "This key is not protected.\n"
 msgstr ""
 
-#: g10/keyedit.c:1146 g10/keygen.c:3387 g10/revoke.c:538
+#: g10/keyedit.c:1146 g10/keygen.c:3503 g10/revoke.c:538
 msgid "Secret parts of primary key are not available.\n"
 msgstr ""
 
-#: g10/keyedit.c:1150 g10/keygen.c:3402
+#: g10/keyedit.c:1150 g10/keygen.c:3519
 #, fuzzy
 msgid "Secret parts of primary key are stored on-card.\n"
 msgstr "сакрэтны ключ недаступны"
 
-#: g10/keyedit.c:1154 g10/keygen.c:3406
+#: g10/keyedit.c:1154 g10/keygen.c:3523
 msgid "Key is protected.\n"
 msgstr "Ключ абаронены.\n"
 
@@ -3236,7 +3236,7 @@ msgstr ""
 "Увядзіце новы пароль для гэтага сакрэтнага ключа.\n"
 "\n"
 
-#: g10/keyedit.c:1199 g10/keygen.c:2067
+#: g10/keyedit.c:1199 g10/keygen.c:2116
 msgid "passphrase not correctly repeated; try again"
 msgstr ""
 
@@ -3823,312 +3823,312 @@ msgstr ""
 msgid "No corresponding signature in secret ring\n"
 msgstr ""
 
-#: g10/keyedit.c:3682
+#: g10/keyedit.c:3687
 #, fuzzy, c-format
 msgid "signing subkey %s is already cross-certified\n"
 msgstr "выдаліць ключы са зьвязку сакрэтных ключоў"
 
-#: g10/keyedit.c:3688
+#: g10/keyedit.c:3693
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr ""
 
-#: g10/keyedit.c:3850
+#: g10/keyedit.c:3856
 msgid "Please select exactly one user ID.\n"
 msgstr ""
 
-#: g10/keyedit.c:3889 g10/keyedit.c:3999 g10/keyedit.c:4119 g10/keyedit.c:4260
+#: g10/keyedit.c:3895 g10/keyedit.c:4005 g10/keyedit.c:4125 g10/keyedit.c:4266
 #, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
 msgstr ""
 
-#: g10/keyedit.c:4060
+#: g10/keyedit.c:4066
 msgid "Enter your preferred keyserver URL: "
 msgstr ""
 
-#: g10/keyedit.c:4140
+#: g10/keyedit.c:4146
 msgid "Are you sure you want to replace it? (y/N) "
 msgstr ""
 
-#: g10/keyedit.c:4141
+#: g10/keyedit.c:4147
 msgid "Are you sure you want to delete it? (y/N) "
 msgstr ""
 
-#: g10/keyedit.c:4203
+#: g10/keyedit.c:4209
 msgid "Enter the notation: "
 msgstr ""
 
-#: g10/keyedit.c:4352
+#: g10/keyedit.c:4358
 #, fuzzy
 msgid "Proceed? (y/N) "
 msgstr "Перазапісаць (y/N)?"
 
-#: g10/keyedit.c:4416
+#: g10/keyedit.c:4422
 #, c-format
 msgid "No user ID with index %d\n"
 msgstr ""
 
-#: g10/keyedit.c:4474
+#: g10/keyedit.c:4480
 #, c-format
 msgid "No user ID with hash %s\n"
 msgstr ""
 
-#: g10/keyedit.c:4501
+#: g10/keyedit.c:4507
 #, c-format
 msgid "No subkey with index %d\n"
 msgstr ""
 
-#: g10/keyedit.c:4636
+#: g10/keyedit.c:4642
 #, fuzzy, c-format
 msgid "user ID: \"%s\"\n"
 msgstr "памылка чытаньня файла"
 
-#: g10/keyedit.c:4639 g10/keyedit.c:4703 g10/keyedit.c:4746
+#: g10/keyedit.c:4645 g10/keyedit.c:4709 g10/keyedit.c:4752
 #, c-format
 msgid "signed by your key %s on %s%s%s\n"
 msgstr ""
 
-#: g10/keyedit.c:4641 g10/keyedit.c:4705 g10/keyedit.c:4748
+#: g10/keyedit.c:4647 g10/keyedit.c:4711 g10/keyedit.c:4754
 msgid " (non-exportable)"
 msgstr ""
 
-#: g10/keyedit.c:4645
+#: g10/keyedit.c:4651
 #, c-format
 msgid "This signature expired on %s.\n"
 msgstr ""
 
-#: g10/keyedit.c:4649
+#: g10/keyedit.c:4655
 msgid "Are you sure you still want to revoke it? (y/N) "
 msgstr ""
 
-#: g10/keyedit.c:4653
+#: g10/keyedit.c:4659
 msgid "Create a revocation certificate for this signature? (y/N) "
 msgstr ""
 
-#: g10/keyedit.c:4680
+#: g10/keyedit.c:4686
 #, c-format
 msgid "You have signed these user IDs on key %s:\n"
 msgstr ""
 
-#: g10/keyedit.c:4706
+#: g10/keyedit.c:4712
 msgid " (non-revocable)"
 msgstr ""
 
-#: g10/keyedit.c:4713
+#: g10/keyedit.c:4719
 #, c-format
 msgid "revoked by your key %s on %s\n"
 msgstr ""
 
-#: g10/keyedit.c:4735
+#: g10/keyedit.c:4741
 msgid "You are about to revoke these signatures:\n"
 msgstr ""
 
-#: g10/keyedit.c:4755
+#: g10/keyedit.c:4761
 msgid "Really create the revocation certificates? (y/N) "
 msgstr ""
 
-#: g10/keyedit.c:4785
+#: g10/keyedit.c:4791
 msgid "no secret key\n"
 msgstr ""
 
-#: g10/keyedit.c:4855
+#: g10/keyedit.c:4861
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
 msgstr ""
 
-#: g10/keyedit.c:4872
+#: g10/keyedit.c:4878
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
 msgstr ""
 
-#: g10/keyedit.c:4936
+#: g10/keyedit.c:4942
 #, fuzzy, c-format
 msgid "Key %s is already revoked.\n"
 msgstr "выдаліць ключы са зьвязку сакрэтных ключоў"
 
-#: g10/keyedit.c:4998
+#: g10/keyedit.c:5004
 #, fuzzy, c-format
 msgid "Subkey %s is already revoked.\n"
 msgstr "выдаліць ключы са зьвязку сакрэтных ключоў"
 
-#: g10/keyedit.c:5093
+#: g10/keyedit.c:5099
 #, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
 msgstr ""
 
-#: g10/keygen.c:263
+#: g10/keygen.c:268
 #, c-format
 msgid "preference `%s' duplicated\n"
 msgstr ""
 
-#: g10/keygen.c:270
+#: g10/keygen.c:275
 #, fuzzy
 msgid "too many cipher preferences\n"
 msgstr "за шмат пераваг для \"%c\"\n"
 
-#: g10/keygen.c:272
+#: g10/keygen.c:277
 #, fuzzy
 msgid "too many digest preferences\n"
 msgstr "за шмат пераваг для \"%c\"\n"
 
-#: g10/keygen.c:274
+#: g10/keygen.c:279
 #, fuzzy
 msgid "too many compression preferences\n"
 msgstr "за шмат пераваг для \"%c\"\n"
 
-#: g10/keygen.c:399
+#: g10/keygen.c:404
 #, fuzzy, c-format
 msgid "invalid item `%s' in preference string\n"
 msgstr "недапушчальныя дапомныя перавагі\n"
 
-#: g10/keygen.c:873
+#: g10/keygen.c:884
 msgid "writing direct signature\n"
 msgstr ""
 
-#: g10/keygen.c:912
+#: g10/keygen.c:926
 msgid "writing self signature\n"
 msgstr ""
 
-#: g10/keygen.c:962
+#: g10/keygen.c:983
 msgid "writing key binding signature\n"
 msgstr ""
 
-#: g10/keygen.c:1123 g10/keygen.c:1237 g10/keygen.c:1242 g10/keygen.c:1375
-#: g10/keygen.c:2946
+#: g10/keygen.c:1151 g10/keygen.c:1262 g10/keygen.c:1267 g10/keygen.c:1402
+#: g10/keygen.c:3016
 #, c-format
 msgid "keysize invalid; using %u bits\n"
 msgstr ""
 
-#: g10/keygen.c:1128 g10/keygen.c:1248 g10/keygen.c:1380 g10/keygen.c:2952
+#: g10/keygen.c:1157 g10/keygen.c:1273 g10/keygen.c:1408 g10/keygen.c:3022
 #, c-format
 msgid "keysize rounded up to %u bits\n"
 msgstr ""
 
-#: g10/keygen.c:1274
+#: g10/keygen.c:1299
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
 
-#: g10/keygen.c:1490
+#: g10/keygen.c:1519
 msgid "Sign"
 msgstr ""
 
-#: g10/keygen.c:1493
+#: g10/keygen.c:1522
 msgid "Certify"
 msgstr ""
 
-#: g10/keygen.c:1496
+#: g10/keygen.c:1525
 #, fuzzy
 msgid "Encrypt"
 msgstr "зашыфраваць даньні"
 
-#: g10/keygen.c:1499
+#: g10/keygen.c:1528
 msgid "Authenticate"
 msgstr ""
 
-#: g10/keygen.c:1507
+#: g10/keygen.c:1536
 msgid "SsEeAaQq"
 msgstr ""
 
-#: g10/keygen.c:1526
+#: g10/keygen.c:1555
 #, c-format
 msgid "Possible actions for a %s key: "
 msgstr ""
 
-#: g10/keygen.c:1530
+#: g10/keygen.c:1559
 msgid "Current allowed actions: "
 msgstr ""
 
-#: g10/keygen.c:1535
+#: g10/keygen.c:1564
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
 msgstr ""
 
-#: g10/keygen.c:1538
+#: g10/keygen.c:1567
 #, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
 msgstr ""
 
-#: g10/keygen.c:1541
+#: g10/keygen.c:1570
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
 msgstr ""
 
-#: g10/keygen.c:1544
+#: g10/keygen.c:1573
 #, c-format
 msgid "   (%c) Finished\n"
 msgstr ""
 
-#: g10/keygen.c:1600
+#: g10/keygen.c:1629
 msgid "Please select what kind of key you want:\n"
 msgstr "Калі ласка, абярыце від ключа, які Вам патрэбны:\n"
 
-#: g10/keygen.c:1602
+#: g10/keygen.c:1631
 #, c-format
 msgid "   (%d) DSA and Elgamal (default)\n"
 msgstr ""
 
-#: g10/keygen.c:1603
+#: g10/keygen.c:1632
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr ""
 
-#: g10/keygen.c:1605
+#: g10/keygen.c:1634
 #, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
 msgstr ""
 
-#: g10/keygen.c:1607
+#: g10/keygen.c:1636
 #, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
 msgstr ""
 
-#: g10/keygen.c:1608
+#: g10/keygen.c:1637
 #, c-format
 msgid "   (%d) RSA (sign only)\n"
 msgstr ""
 
-#: g10/keygen.c:1610
+#: g10/keygen.c:1639
 #, c-format
 msgid "   (%d) RSA (encrypt only)\n"
 msgstr ""
 
-#: g10/keygen.c:1612
+#: g10/keygen.c:1641
 #, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
 msgstr ""
 
-#: g10/keygen.c:1681
+#: g10/keygen.c:1710
 #, c-format
 msgid "DSA keypair will have %u bits.\n"
 msgstr ""
 
-#: g10/keygen.c:1691
+#: g10/keygen.c:1720
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
 msgstr ""
 
-#: g10/keygen.c:1698
+#: g10/keygen.c:1727
 #, c-format
 msgid "What keysize do you want? (%u) "
 msgstr ""
 
-#: g10/keygen.c:1712
+#: g10/keygen.c:1741
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
 msgstr ""
 
-#: g10/keygen.c:1718
+#: g10/keygen.c:1747
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr ""
 
-#: g10/keygen.c:1723 g10/keygen.c:1728
+#: g10/keygen.c:1752 g10/keygen.c:1757
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr ""
 
-#: g10/keygen.c:1777
+#: g10/keygen.c:1826
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -4138,7 +4138,7 @@ msgid ""
 "      <n>y = key expires in n years\n"
 msgstr ""
 
-#: g10/keygen.c:1788
+#: g10/keygen.c:1837
 msgid ""
 "Please specify how long the signature should be valid.\n"
 "         0 = signature does not expire\n"
@@ -4148,48 +4148,48 @@ msgid ""
 "      <n>y = signature expires in n years\n"
 msgstr ""
 
-#: g10/keygen.c:1811
+#: g10/keygen.c:1860
 msgid "Key is valid for? (0) "
 msgstr ""
 
-#: g10/keygen.c:1816
+#: g10/keygen.c:1865
 #, fuzzy, c-format
 msgid "Signature is valid for? (%s) "
 msgstr "Подпіс створаны ў %.*s з выкарыстаньнем %s ID ключа %08lX\n"
 
-#: g10/keygen.c:1834
+#: g10/keygen.c:1883
 msgid "invalid value\n"
 msgstr ""
 
-#: g10/keygen.c:1841
+#: g10/keygen.c:1890
 msgid "Key does not expire at all\n"
 msgstr ""
 
-#: g10/keygen.c:1842
+#: g10/keygen.c:1891
 msgid "Signature does not expire at all\n"
 msgstr ""
 
-#: g10/keygen.c:1847
+#: g10/keygen.c:1896
 #, fuzzy, c-format
 msgid "Key expires at %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/keygen.c:1848
+#: g10/keygen.c:1897
 #, fuzzy, c-format
 msgid "Signature expires at %s\n"
 msgstr "Подпіс створаны ў %.*s з выкарыстаньнем %s ID ключа %08lX\n"
 
-#: g10/keygen.c:1852
+#: g10/keygen.c:1901
 msgid ""
 "Your system can't display dates beyond 2038.\n"
 "However, it will be correctly handled up to 2106.\n"
 msgstr ""
 
-#: g10/keygen.c:1859
+#: g10/keygen.c:1908
 msgid "Is this correct? (y/N) "
 msgstr ""
 
-#: g10/keygen.c:1882
+#: g10/keygen.c:1931
 msgid ""
 "\n"
 "You need a user ID to identify your key; the software constructs the user "
@@ -4199,44 +4199,44 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:1895
+#: g10/keygen.c:1944
 msgid "Real name: "
 msgstr ""
 
-#: g10/keygen.c:1903
+#: g10/keygen.c:1952
 msgid "Invalid character in name\n"
 msgstr ""
 
-#: g10/keygen.c:1905
+#: g10/keygen.c:1954
 msgid "Name may not start with a digit\n"
 msgstr ""
 
-#: g10/keygen.c:1907
+#: g10/keygen.c:1956
 msgid "Name must be at least 5 characters long\n"
 msgstr ""
 
-#: g10/keygen.c:1915
+#: g10/keygen.c:1964
 msgid "Email address: "
 msgstr ""
 
-#: g10/keygen.c:1921
+#: g10/keygen.c:1970
 msgid "Not a valid email address\n"
 msgstr ""
 
-#: g10/keygen.c:1929
+#: g10/keygen.c:1978
 msgid "Comment: "
 msgstr ""
 
-#: g10/keygen.c:1935
+#: g10/keygen.c:1984
 msgid "Invalid character in comment\n"
 msgstr ""
 
-#: g10/keygen.c:1957
+#: g10/keygen.c:2006
 #, c-format
 msgid "You are using the `%s' character set.\n"
 msgstr ""
 
-#: g10/keygen.c:1963
+#: g10/keygen.c:2012
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -4244,7 +4244,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:1968
+#: g10/keygen.c:2017
 msgid "Please don't put the email address into the real name or the comment\n"
 msgstr ""
 
@@ -4259,34 +4259,34 @@ msgstr ""
 #. o = Okay (ready, continue)
 #. q = Quit
 #.
-#: g10/keygen.c:1984
+#: g10/keygen.c:2033
 msgid "NnCcEeOoQq"
 msgstr ""
 
-#: g10/keygen.c:1994
+#: g10/keygen.c:2043
 msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
 msgstr ""
 
-#: g10/keygen.c:1995
+#: g10/keygen.c:2044
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr ""
 
-#: g10/keygen.c:2014
+#: g10/keygen.c:2063
 msgid "Please correct the error first\n"
 msgstr ""
 
-#: g10/keygen.c:2053
+#: g10/keygen.c:2102
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
 msgstr ""
 
-#: g10/keygen.c:2068
+#: g10/keygen.c:2117
 #, c-format
 msgid "%s.\n"
 msgstr ""
 
-#: g10/keygen.c:2074
+#: g10/keygen.c:2123
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "I will do it anyway.  You can change your passphrase at any time,\n"
@@ -4294,7 +4294,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:2096
+#: g10/keygen.c:2147
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
@@ -4302,91 +4302,91 @@ msgid ""
 "generator a better chance to gain enough entropy.\n"
 msgstr ""
 
-#: g10/keygen.c:2886 g10/keygen.c:2913
+#: g10/keygen.c:2956 g10/keygen.c:2983
 msgid "Key generation canceled.\n"
 msgstr ""
 
-#: g10/keygen.c:3106 g10/keygen.c:3251
+#: g10/keygen.c:3188 g10/keygen.c:3355
 #, c-format
 msgid "writing public key to `%s'\n"
 msgstr ""
 
-#: g10/keygen.c:3108 g10/keygen.c:3254
+#: g10/keygen.c:3190 g10/keygen.c:3358
 #, fuzzy, c-format
 msgid "writing secret key stub to `%s'\n"
 msgstr "запіс у stdout\n"
 
-#: g10/keygen.c:3111 g10/keygen.c:3257
+#: g10/keygen.c:3193 g10/keygen.c:3361
 #, c-format
 msgid "writing secret key to `%s'\n"
 msgstr ""
 
-#: g10/keygen.c:3240
+#: g10/keygen.c:3342
 #, c-format
 msgid "no writable public keyring found: %s\n"
 msgstr ""
 
-#: g10/keygen.c:3246
+#: g10/keygen.c:3349
 #, c-format
 msgid "no writable secret keyring found: %s\n"
 msgstr ""
 
-#: g10/keygen.c:3264
+#: g10/keygen.c:3369
 #, c-format
 msgid "error writing public keyring `%s': %s\n"
 msgstr ""
 
-#: g10/keygen.c:3271
+#: g10/keygen.c:3377
 #, c-format
 msgid "error writing secret keyring `%s': %s\n"
 msgstr ""
 
-#: g10/keygen.c:3294
+#: g10/keygen.c:3404
 msgid "public and secret key created and signed.\n"
 msgstr ""
 
-#: g10/keygen.c:3305
+#: g10/keygen.c:3415
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--edit-key\" to generate a subkey for this purpose.\n"
 msgstr ""
 
-#: g10/keygen.c:3317 g10/keygen.c:3452 g10/keygen.c:3568
+#: g10/keygen.c:3428 g10/keygen.c:3573 g10/keygen.c:3694
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr ""
 
-#: g10/keygen.c:3370 g10/keygen.c:3503 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
 msgstr ""
 
-#: g10/keygen.c:3372 g10/keygen.c:3505 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
 msgstr ""
 
-#: g10/keygen.c:3381 g10/keygen.c:3516
+#: g10/keygen.c:3496 g10/keygen.c:3637
 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
 msgstr ""
 
-#: g10/keygen.c:3420 g10/keygen.c:3549
+#: g10/keygen.c:3537 g10/keygen.c:3670
 msgid "Really create? (y/N) "
 msgstr ""
 
-#: g10/keygen.c:3712
+#: g10/keygen.c:3843
 #, fuzzy, c-format
 msgid "storing key onto card failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
 
-#: g10/keygen.c:3760
+#: g10/keygen.c:3891
 #, fuzzy, c-format
 msgid "can't create backup file `%s': %s\n"
 msgstr "%s: немагчыма стварыць тэчку: %s\n"
 
-#: g10/keygen.c:3786
+#: g10/keygen.c:3917
 #, c-format
 msgid "NOTE: backup of card key saved to `%s'\n"
 msgstr ""
@@ -6195,15 +6195,15 @@ msgstr "%s: немагчыма стварыць хэш-табліцу: %s\n"
 msgid "reading public key failed: %s\n"
 msgstr "грамадскі ключ ня знойдзены"
 
-#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2046
+#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2047
 msgid "response does not contain the public key data\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2054
+#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2055
 msgid "response does not contain the RSA modulus\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2064
+#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2065
 msgid "response does not contain the RSA public exponent\n"
 msgstr ""
 
@@ -6223,7 +6223,7 @@ msgid "PIN for CHV%d is too short; minimum length is %d\n"
 msgstr ""
 
 #: scd/app-openpgp.c:1384 scd/app-openpgp.c:1424 scd/app-openpgp.c:1499
-#: scd/app-openpgp.c:2317
+#: scd/app-openpgp.c:2318
 #, fuzzy, c-format
 msgid "verify CHV%d failed: %s\n"
 msgstr "збой падпісаньня: %s\n"
@@ -6232,11 +6232,11 @@ msgstr "збой падпісаньня: %s\n"
 msgid "access to admin commands is not configured\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2527
+#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2528
 msgid "error retrieving CHV status from card\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2536
+#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2537
 msgid "card is permanently locked!\n"
 msgstr ""
 
@@ -6268,11 +6268,11 @@ msgstr ""
 msgid "error getting new PIN: %s\n"
 msgstr "памылка стварэньня \"%s\": %s\n"
 
-#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2132
+#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2133
 msgid "error reading application data\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2139
+#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2140
 #, fuzzy
 msgid "error reading fingerprint DO\n"
 msgstr "паказаць ключы й адбіткі пальцаў"
@@ -6315,44 +6315,44 @@ msgstr ""
 msgid "failed to store the key: %s\n"
 msgstr "%s: немагчыма стварыць хэш-табліцу: %s\n"
 
-#: scd/app-openpgp.c:2023
+#: scd/app-openpgp.c:2024
 msgid "please wait while key is being generated ...\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2037
+#: scd/app-openpgp.c:2038
 #, fuzzy
 msgid "generating key failed\n"
 msgstr "стварыць новую пару ключоў"
 
-#: scd/app-openpgp.c:2040
+#: scd/app-openpgp.c:2041
 #, c-format
 msgid "key generation completed (%d seconds)\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2097
+#: scd/app-openpgp.c:2098
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2147
+#: scd/app-openpgp.c:2148
 msgid "fingerprint on card does not match requested one\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2235
+#: scd/app-openpgp.c:2236
 #, fuzzy, c-format
 msgid "card does not support digest algorithm %s\n"
 msgstr "нерэчаісны хэш-альгарытм \"%s\"\n"
 
-#: scd/app-openpgp.c:2296
+#: scd/app-openpgp.c:2297
 #, c-format
 msgid "signatures created so far: %lu\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2541
+#: scd/app-openpgp.c:2542
 msgid ""
 "verification of Admin PIN is currently prohibited through this command\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2614 scd/app-openpgp.c:2624
+#: scd/app-openpgp.c:2615 scd/app-openpgp.c:2625
 #, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr ""
index 104fa7b..49445d5 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-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\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"
@@ -97,8 +97,8 @@ 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:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, c-format
 msgid "can't create `%s': %s\n"
@@ -106,7 +106,7 @@ msgstr "no s'ha pogut crear «%s»: %s\n"
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -906,15 +906,15 @@ msgstr ""
 
 # Destès? ivb
 # Desatès, sí. jm
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 #, fuzzy
 msgid "can't do this in batch mode\n"
 msgstr "no es pot fet això en mode desatès\n"
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr "La vostra selecció? "
 
@@ -1053,19 +1053,19 @@ msgstr "no s'han trobat dades OpenPGP vàlides.\n"
 msgid "error getting current key info: %s\n"
 msgstr "s'ha produït un error mentre s'escrivia l'anell secret «%s»: %s\n"
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 msgid "Replace existing key? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr ""
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 msgid "Replace existing keys? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1073,135 +1073,135 @@ msgid ""
 "You should change them using the command --change-pin\n"
 msgstr ""
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 #, fuzzy
 msgid "Please select the type of key to generate:\n"
 msgstr "Seleccioneu quin tipus de clau voleu:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 msgid "   (1) Signature key\n"
 msgstr ""
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 #, fuzzy
 msgid "   (2) Encryption key\n"
 msgstr "   (%d) RSA (només xifrar)\n"
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr ""
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr "La selecció és invàlida.\n"
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 #, fuzzy
 msgid "Please select where to store the key:\n"
 msgstr "Seleccioneu la raó de la revocació:\n"
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 #, fuzzy
 msgid "unknown key protection algorithm\n"
 msgstr "l'algorisme de protecció és desconegut\n"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 #, fuzzy
 msgid "secret parts of key are not available\n"
 msgstr "Les parts secretes de la clau primària no estan disponibles.\n"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 #, fuzzy
 msgid "secret key already stored on a card\n"
 msgstr "es descarta: la clau secreta ja és present\n"
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr "ix del menú"
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 #, fuzzy
 msgid "show admin commands"
 msgstr "les ordres entren en conflicte\n"
 
 # «pantalla» o «ajuda»?  ivb
 # «ajuda», evidentment. jm
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "mostra aquesta ajuda"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 #, fuzzy
 msgid "list all available data"
 msgstr "La clau és disponible en: "
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr ""
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr ""
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr ""
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 #, fuzzy
 msgid "change the login name"
 msgstr "canvia la data de caducitat"
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 #, fuzzy
 msgid "change the language preferences"
 msgstr "canvia la confiança"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr ""
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 #, fuzzy
 msgid "change a CA fingerprint"
 msgstr "mostra empremta"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "toggle the signature force PIN flag"
 msgstr ""
 
-#: g10/card-util.c:1330
+#: g10/card-util.c:1320
 #, fuzzy
 msgid "generate new keys"
 msgstr "genera un nou parell de claus"
 
-#: g10/card-util.c:1331
+#: g10/card-util.c:1321
 msgid "menu to change or unblock the PIN"
 msgstr ""
 
-#: g10/card-util.c:1332
+#: g10/card-util.c:1322
 msgid "verify the PIN and list all data"
 msgstr ""
 
-#: g10/card-util.c:1452 g10/keyedit.c:1634
+#: g10/card-util.c:1442 g10/keyedit.c:1634
 msgid "Command> "
 msgstr "Ordre> "
 
-#: g10/card-util.c:1490
+#: g10/card-util.c:1480
 #, fuzzy
 msgid "Admin-only command\n"
 msgstr "les ordres entren en conflicte\n"
 
-#: g10/card-util.c:1521
+#: g10/card-util.c:1511
 msgid "Admin commands are allowed\n"
 msgstr ""
 
-#: g10/card-util.c:1523
+#: g10/card-util.c:1513
 msgid "Admin commands are not allowed\n"
 msgstr ""
 
-#: g10/card-util.c:1597 g10/keyedit.c:2255
+#: g10/card-util.c:1587 g10/keyedit.c:2255
 msgid "Invalid command  (try \"help\")\n"
 msgstr "L'ordre no és vàlida (proveu «help»)\n"
 
@@ -1514,7 +1514,7 @@ msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
 msgstr ""
 "La clau invàlida %08lX s'ha fet vàlida amb --allow-non-selfsigned-uid\n"
 
-#: g10/getkey.c:2391 g10/keyedit.c:3721
+#: g10/getkey.c:2391 g10/keyedit.c:3726
 #, fuzzy, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
 msgstr ""
@@ -1950,7 +1950,7 @@ msgstr "%s no és un joc de caràcters vàlid\n"
 msgid "`%s' is not a valid character set\n"
 msgstr "%s no és un joc de caràcters vàlid\n"
 
-#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4078
+#: g10/gpg.c:2518 g10/gpg.c:2713 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"
@@ -3485,8 +3485,8 @@ msgstr ""
 msgid "Really sign? (y/N) "
 msgstr "Signar realment? "
 
-#: g10/keyedit.c:1066 g10/keyedit.c:4797 g10/keyedit.c:4888 g10/keyedit.c:4952
-#: g10/keyedit.c:5013 g10/sign.c:348
+#: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
+#: g10/keyedit.c:5019 g10/sign.c:348
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "Ha fallat el procés de signatura: %s\n"
@@ -3495,20 +3495,20 @@ msgstr "Ha fallat el procés de signatura: %s\n"
 msgid "Key has only stub or on-card key items - no passphrase to change.\n"
 msgstr ""
 
-#: g10/keyedit.c:1142 g10/keygen.c:3399
+#: g10/keyedit.c:1142 g10/keygen.c:3516
 msgid "This key is not protected.\n"
 msgstr "Aquesta clau no està protegida.\n"
 
-#: g10/keyedit.c:1146 g10/keygen.c:3387 g10/revoke.c:538
+#: g10/keyedit.c:1146 g10/keygen.c:3503 g10/revoke.c:538
 msgid "Secret parts of primary key are not available.\n"
 msgstr "Les parts secretes de la clau primària no estan disponibles.\n"
 
-#: g10/keyedit.c:1150 g10/keygen.c:3402
+#: g10/keyedit.c:1150 g10/keygen.c:3519
 #, fuzzy
 msgid "Secret parts of primary key are stored on-card.\n"
 msgstr "Les parts secretes de la clau primària no estan disponibles.\n"
 
-#: g10/keyedit.c:1154 g10/keygen.c:3406
+#: g10/keyedit.c:1154 g10/keygen.c:3523
 msgid "Key is protected.\n"
 msgstr "La clau està protegida.\n"
 
@@ -3525,7 +3525,7 @@ msgstr ""
 "Introduïu la nova contrasenya per a la clau secreta.\n"
 "\n"
 
-#: g10/keyedit.c:1199 g10/keygen.c:2067
+#: g10/keyedit.c:1199 g10/keygen.c:2116
 msgid "passphrase not correctly repeated; try again"
 msgstr "la contrasenya no s'ha repetit correctament; torneu a intentar-ho"
 
@@ -4176,324 +4176,324 @@ msgstr "No podeu canviar la data de caducitat de les claus v3\n"
 msgid "No corresponding signature in secret ring\n"
 msgstr "No hi ha cap signatura corresponent en l'anell secret\n"
 
-#: g10/keyedit.c:3682
+#: g10/keyedit.c:3687
 #, fuzzy, c-format
 msgid "signing subkey %s is already cross-certified\n"
 msgstr ""
 "AVÍS: no es pot desfer la nominació d'una clau com a revocador designat!\n"
 
-#: g10/keyedit.c:3688
+#: g10/keyedit.c:3693
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr ""
 
-#: g10/keyedit.c:3850
+#: g10/keyedit.c:3856
 msgid "Please select exactly one user ID.\n"
 msgstr "Heu de seleccionar exactament un ID.\n"
 
-#: g10/keyedit.c:3889 g10/keyedit.c:3999 g10/keyedit.c:4119 g10/keyedit.c:4260
+#: g10/keyedit.c:3895 g10/keyedit.c:4005 g10/keyedit.c:4125 g10/keyedit.c:4266
 #, fuzzy, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
 msgstr "es descarta l'autosignatura v3 en l'id d'usuari «%s»\n"
 
-#: g10/keyedit.c:4060
+#: g10/keyedit.c:4066
 msgid "Enter your preferred keyserver URL: "
 msgstr ""
 
-#: g10/keyedit.c:4140
+#: g10/keyedit.c:4146
 #, fuzzy
 msgid "Are you sure you want to replace it? (y/N) "
 msgstr "Esteu segur que encara voleu utilitzarla (s/N)? "
 
-#: g10/keyedit.c:4141
+#: g10/keyedit.c:4147
 #, fuzzy
 msgid "Are you sure you want to delete it? (y/N) "
 msgstr "Esteu segur que encara voleu utilitzarla (s/N)? "
 
-#: g10/keyedit.c:4203
+#: g10/keyedit.c:4209
 #, fuzzy
 msgid "Enter the notation: "
 msgstr "Notació de signatura: "
 
-#: g10/keyedit.c:4352
+#: g10/keyedit.c:4358
 #, fuzzy
 msgid "Proceed? (y/N) "
 msgstr "Voleu sobreescriure? (s/N) "
 
-#: g10/keyedit.c:4416
+#: g10/keyedit.c:4422
 #, c-format
 msgid "No user ID with index %d\n"
 msgstr "No hi ha cap ID amb l'índex %d\n"
 
-#: g10/keyedit.c:4474
+#: g10/keyedit.c:4480
 #, fuzzy, c-format
 msgid "No user ID with hash %s\n"
 msgstr "No hi ha cap ID amb l'índex %d\n"
 
-#: g10/keyedit.c:4501
+#: g10/keyedit.c:4507
 #, fuzzy, c-format
 msgid "No subkey with index %d\n"
 msgstr "No hi ha cap ID amb l'índex %d\n"
 
-#: g10/keyedit.c:4636
+#: g10/keyedit.c:4642
 #, fuzzy, c-format
 msgid "user ID: \"%s\"\n"
 msgstr "ID d'usuari: «"
 
-#: g10/keyedit.c:4639 g10/keyedit.c:4703 g10/keyedit.c:4746
+#: g10/keyedit.c:4645 g10/keyedit.c:4709 g10/keyedit.c:4752
 #, fuzzy, c-format
 msgid "signed by your key %s on %s%s%s\n"
 msgstr ""
 "»\n"
 "signat amb la vostra clau %08lX el %s\n"
 
-#: g10/keyedit.c:4641 g10/keyedit.c:4705 g10/keyedit.c:4748
+#: g10/keyedit.c:4647 g10/keyedit.c:4711 g10/keyedit.c:4754
 msgid " (non-exportable)"
 msgstr " (no-exportable)"
 
-#: g10/keyedit.c:4645
+#: g10/keyedit.c:4651
 #, c-format
 msgid "This signature expired on %s.\n"
 msgstr "Aquesta signatura va caducar el %s.\n"
 
-#: g10/keyedit.c:4649
+#: g10/keyedit.c:4655
 msgid "Are you sure you still want to revoke it? (y/N) "
 msgstr "Esteu segur de que encara voleu revocarla? (s/N) "
 
 # (s/N) ivb
 # S! jm
-#: g10/keyedit.c:4653
+#: g10/keyedit.c:4659
 msgid "Create a revocation certificate for this signature? (y/N) "
 msgstr "Voleu crear un certificat de revocació per a aquesta signatura? (s/N) "
 
-#: g10/keyedit.c:4680
+#: g10/keyedit.c:4686
 #, fuzzy, c-format
 msgid "You have signed these user IDs on key %s:\n"
 msgstr "Heu signat els següents ID d'usuari:\n"
 
-#: g10/keyedit.c:4706
+#: g10/keyedit.c:4712
 #, fuzzy
 msgid " (non-revocable)"
 msgstr " (no-exportable)"
 
-#: g10/keyedit.c:4713
+#: g10/keyedit.c:4719
 #, fuzzy, c-format
 msgid "revoked by your key %s on %s\n"
 msgstr "   revocat per %08lX el %s\n"
 
-#: g10/keyedit.c:4735
+#: g10/keyedit.c:4741
 msgid "You are about to revoke these signatures:\n"
 msgstr "Esteu a punt de revocar aquestes signatures:\n"
 
 # (s/N)?  ivb
-#: g10/keyedit.c:4755
+#: g10/keyedit.c:4761
 msgid "Really create the revocation certificates? (y/N) "
 msgstr "Realment voleu crear els certificats de revocació? (s/N) "
 
-#: g10/keyedit.c:4785
+#: g10/keyedit.c:4791
 msgid "no secret key\n"
 msgstr "ho hi ha clau secreta\n"
 
-#: g10/keyedit.c:4855
+#: g10/keyedit.c:4861
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
 msgstr "l'ID d'usuari «%s» ja està revocat\n"
 
-#: g10/keyedit.c:4872
+#: g10/keyedit.c:4878
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
 msgstr "AVÍS: una signatura d'ID d'usuari està datada %d segons en el futur\n"
 
-#: g10/keyedit.c:4936
+#: g10/keyedit.c:4942
 #, fuzzy, c-format
 msgid "Key %s is already revoked.\n"
 msgstr "l'ID d'usuari «%s» ja està revocat\n"
 
-#: g10/keyedit.c:4998
+#: g10/keyedit.c:5004
 #, fuzzy, c-format
 msgid "Subkey %s is already revoked.\n"
 msgstr "l'ID d'usuari «%s» ja està revocat\n"
 
-#: g10/keyedit.c:5093
+#: g10/keyedit.c:5099
 #, fuzzy, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
 msgstr ""
 "S'està mostrant el photo ID %s de mida %ld per a la clau 0x%08lX (uid %d)\n"
 
-#: g10/keygen.c:263
+#: g10/keygen.c:268
 #, fuzzy, c-format
 msgid "preference `%s' duplicated\n"
 msgstr "la preferència %c%lu és duplicada\n"
 
-#: g10/keygen.c:270
+#: g10/keygen.c:275
 #, fuzzy
 msgid "too many cipher preferences\n"
 msgstr "hi ha massa preferències «%c»\n"
 
-#: g10/keygen.c:272
+#: g10/keygen.c:277
 #, fuzzy
 msgid "too many digest preferences\n"
 msgstr "hi ha massa preferències «%c»\n"
 
-#: g10/keygen.c:274
+#: g10/keygen.c:279
 #, fuzzy
 msgid "too many compression preferences\n"
 msgstr "hi ha massa preferències «%c»\n"
 
-#: g10/keygen.c:399
+#: g10/keygen.c:404
 #, fuzzy, c-format
 msgid "invalid item `%s' in preference string\n"
 msgstr "hi ha un caràcter invàlid en la cadena de preferència\n"
 
-#: g10/keygen.c:873
+#: g10/keygen.c:884
 msgid "writing direct signature\n"
 msgstr "s'està escrivint una signatura directa\n"
 
-#: g10/keygen.c:912
+#: g10/keygen.c:926
 msgid "writing self signature\n"
 msgstr "s'està escrivint l'autosignatura\n"
 
-#: g10/keygen.c:962
+#: g10/keygen.c:983
 msgid "writing key binding signature\n"
 msgstr "s'està escrivint la signatura de comprovació de la clau\n"
 
-#: g10/keygen.c:1123 g10/keygen.c:1237 g10/keygen.c:1242 g10/keygen.c:1375
-#: g10/keygen.c:2946
+#: g10/keygen.c:1151 g10/keygen.c:1262 g10/keygen.c:1267 g10/keygen.c:1402
+#: g10/keygen.c:3016
 #, c-format
 msgid "keysize invalid; using %u bits\n"
 msgstr "la mida de la clau és invàlida; s'hi usaran %u bits\n"
 
-#: g10/keygen.c:1128 g10/keygen.c:1248 g10/keygen.c:1380 g10/keygen.c:2952
+#: g10/keygen.c:1157 g10/keygen.c:1273 g10/keygen.c:1408 g10/keygen.c:3022
 #, c-format
 msgid "keysize rounded up to %u bits\n"
 msgstr "la mida de la clau ha estat arrodonida fins a %u bits\n"
 
-#: g10/keygen.c:1274
+#: g10/keygen.c:1299
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
 
-#: g10/keygen.c:1490
+#: g10/keygen.c:1519
 #, fuzzy
 msgid "Sign"
 msgstr "sign"
 
-#: g10/keygen.c:1493
+#: g10/keygen.c:1522
 msgid "Certify"
 msgstr ""
 
-#: g10/keygen.c:1496
+#: g10/keygen.c:1525
 #, fuzzy
 msgid "Encrypt"
 msgstr "xifra dades"
 
-#: g10/keygen.c:1499
+#: g10/keygen.c:1528
 msgid "Authenticate"
 msgstr ""
 
-#: g10/keygen.c:1507
+#: g10/keygen.c:1536
 msgid "SsEeAaQq"
 msgstr ""
 
-#: g10/keygen.c:1526
+#: g10/keygen.c:1555
 #, c-format
 msgid "Possible actions for a %s key: "
 msgstr ""
 
-#: g10/keygen.c:1530
+#: g10/keygen.c:1559
 msgid "Current allowed actions: "
 msgstr ""
 
-#: g10/keygen.c:1535
+#: g10/keygen.c:1564
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
 msgstr ""
 
-#: g10/keygen.c:1538
+#: g10/keygen.c:1567
 #, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
 msgstr ""
 
-#: g10/keygen.c:1541
+#: g10/keygen.c:1570
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
 msgstr ""
 
-#: g10/keygen.c:1544
+#: g10/keygen.c:1573
 #, c-format
 msgid "   (%c) Finished\n"
 msgstr ""
 
-#: g10/keygen.c:1600
+#: g10/keygen.c:1629
 msgid "Please select what kind of key you want:\n"
 msgstr "Seleccioneu quin tipus de clau voleu:\n"
 
-#: g10/keygen.c:1602
+#: g10/keygen.c:1631
 #, fuzzy, c-format
 msgid "   (%d) DSA and Elgamal (default)\n"
 msgstr "   (%d) DSA i ElGamal (predeterminat)\n"
 
-#: g10/keygen.c:1603
+#: g10/keygen.c:1632
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (només signar)\n"
 
-#: g10/keygen.c:1605
+#: g10/keygen.c:1634
 #, fuzzy, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
 msgstr "   (%d) DSA (només signar)\n"
 
-#: g10/keygen.c:1607
+#: g10/keygen.c:1636
 #, fuzzy, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (només xifrar)\n"
 
-#: g10/keygen.c:1608
+#: g10/keygen.c:1637
 #, c-format
 msgid "   (%d) RSA (sign only)\n"
 msgstr "   (%d) RSA (només signar)\n"
 
-#: g10/keygen.c:1610
+#: g10/keygen.c:1639
 #, c-format
 msgid "   (%d) RSA (encrypt only)\n"
 msgstr "   (%d) RSA (només xifrar)\n"
 
-#: g10/keygen.c:1612
+#: g10/keygen.c:1641
 #, fuzzy, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
 msgstr "   (%d) RSA (només xifrar)\n"
 
-#: g10/keygen.c:1681
+#: g10/keygen.c:1710
 #, fuzzy, c-format
 msgid "DSA keypair will have %u bits.\n"
 msgstr "La parella de claus DSA ha de tenir 1024 bits.\n"
 
-#: g10/keygen.c:1691
+#: g10/keygen.c:1720
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
 msgstr ""
 
-#: g10/keygen.c:1698
+#: g10/keygen.c:1727
 #, fuzzy, c-format
 msgid "What keysize do you want? (%u) "
 msgstr "Quina grandària voleu? (1024) "
 
-#: g10/keygen.c:1712
+#: g10/keygen.c:1741
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
 msgstr ""
 
-#: g10/keygen.c:1718
+#: g10/keygen.c:1747
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "La grandària sol·licitada és %u bits\n"
 
-#: g10/keygen.c:1723 g10/keygen.c:1728
+#: g10/keygen.c:1752 g10/keygen.c:1757
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "arrodonida fins a %u bits\n"
 
-#: g10/keygen.c:1777
+#: g10/keygen.c:1826
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -4509,7 +4509,7 @@ msgstr ""
 "      <n>m = la clau caduca als n mesos\n"
 "      <n>y = la clau caduca als n anys\n"
 
-#: g10/keygen.c:1788
+#: g10/keygen.c:1837
 msgid ""
 "Please specify how long the signature should be valid.\n"
 "         0 = signature does not expire\n"
@@ -4525,42 +4525,42 @@ msgstr ""
 "      <n>m = la signatura caduca als n mesos\n"
 "      <n>y = la signatura caduca als n anys\n"
 
-#: g10/keygen.c:1811
+#: g10/keygen.c:1860
 msgid "Key is valid for? (0) "
 msgstr "Indiqueu la validesa de la clau (0) "
 
-#: g10/keygen.c:1816
+#: g10/keygen.c:1865
 #, fuzzy, c-format
 msgid "Signature is valid for? (%s) "
 msgstr "Indiqueu la validesa de la signatura (0) "
 
-#: g10/keygen.c:1834
+#: g10/keygen.c:1883
 msgid "invalid value\n"
 msgstr "el valor no és vàlid\n"
 
-#: g10/keygen.c:1841
+#: g10/keygen.c:1890
 #, fuzzy
 msgid "Key does not expire at all\n"
 msgstr "%s no caduca en absolut\n"
 
-#: g10/keygen.c:1842
+#: g10/keygen.c:1891
 #, fuzzy
 msgid "Signature does not expire at all\n"
 msgstr "%s no caduca en absolut\n"
 
-#: g10/keygen.c:1847
+#: g10/keygen.c:1896
 #, fuzzy, c-format
 msgid "Key expires at %s\n"
 msgstr "%s caduca el %s\n"
 
-#: g10/keygen.c:1848
+#: g10/keygen.c:1897
 #, fuzzy, c-format
 msgid "Signature expires at %s\n"
 msgstr "Aquesta signatura caduca el %s\n"
 
 # Amb «it» es refereix a les dates?  ivb
 # Això vaig entendre jo. jm
-#: g10/keygen.c:1852
+#: g10/keygen.c:1901
 msgid ""
 "Your system can't display dates beyond 2038.\n"
 "However, it will be correctly handled up to 2106.\n"
@@ -4568,12 +4568,12 @@ msgstr ""
 "El vostre sistema no pot representar dates posteriors a l'any 2038.\n"
 "Tanmateix, les tractarà bé fins l'any 2106.\n"
 
-#: g10/keygen.c:1859
+#: g10/keygen.c:1908
 #, fuzzy
 msgid "Is this correct? (y/N) "
 msgstr "És correcte? (s/n)"
 
-#: g10/keygen.c:1882
+#: g10/keygen.c:1931
 #, fuzzy
 msgid ""
 "\n"
@@ -4590,44 +4590,44 @@ msgstr ""
 "    \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
 "\n"
 
-#: g10/keygen.c:1895
+#: g10/keygen.c:1944
 msgid "Real name: "
 msgstr "Nom i cognoms: "
 
-#: g10/keygen.c:1903
+#: g10/keygen.c:1952
 msgid "Invalid character in name\n"
 msgstr "Hi ha un caràcter invàlid en el camp *nom*\n"
 
-#: g10/keygen.c:1905
+#: g10/keygen.c:1954
 msgid "Name may not start with a digit\n"
 msgstr "El nom no pot començar amb un dígit\n"
 
-#: g10/keygen.c:1907
+#: g10/keygen.c:1956
 msgid "Name must be at least 5 characters long\n"
 msgstr "El nom ha de tenir, si més no, 5 caràcters\n"
 
-#: g10/keygen.c:1915
+#: g10/keygen.c:1964
 msgid "Email address: "
 msgstr "Adreça electrònica: "
 
-#: g10/keygen.c:1921
+#: g10/keygen.c:1970
 msgid "Not a valid email address\n"
 msgstr "No és una adreça vàlida\n"
 
-#: g10/keygen.c:1929
+#: g10/keygen.c:1978
 msgid "Comment: "
 msgstr "Comentari: "
 
-#: g10/keygen.c:1935
+#: g10/keygen.c:1984
 msgid "Invalid character in comment\n"
 msgstr "Hi ha un caràcter invàlid en el camp *comentari*\n"
 
-#: g10/keygen.c:1957
+#: g10/keygen.c:2006
 #, c-format
 msgid "You are using the `%s' character set.\n"
 msgstr "Esteu usant el joc de caràcters `%s'.\n"
 
-#: g10/keygen.c:1963
+#: g10/keygen.c:2012
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -4638,7 +4638,7 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:1968
+#: g10/keygen.c:2017
 msgid "Please don't put the email address into the real name or the comment\n"
 msgstr "No inclogueu l'adreça ni en el camp *nom* ni en el camp *comentari*\n"
 
@@ -4655,23 +4655,23 @@ msgstr "No inclogueu l'adreça ni en el camp *nom* ni en el camp *comentari*\n"
 #. o = Okay (ready, continue)
 #. q = Quit
 #.
-#: g10/keygen.c:1984
+#: g10/keygen.c:2033
 msgid "NnCcEeOoQq"
 msgstr "NnCcEeOoXx"
 
-#: g10/keygen.c:1994
+#: g10/keygen.c:2043
 msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
 msgstr "Canvia (N)om, (C)omentari, (E)mail o (X) ix "
 
-#: g10/keygen.c:1995
+#: g10/keygen.c:2044
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "Canvia (N)om, (C)omentari, (E)mail o (O) d'acord / (X) ix"
 
-#: g10/keygen.c:2014
+#: g10/keygen.c:2063
 msgid "Please correct the error first\n"
 msgstr "Corregiu l'error primer\n"
 
-#: g10/keygen.c:2053
+#: g10/keygen.c:2102
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -4679,12 +4679,12 @@ msgstr ""
 "Cal una contrasenya per a protegir la clau secreta.\n"
 "\n"
 
-#: g10/keygen.c:2068
+#: g10/keygen.c:2117
 #, c-format
 msgid "%s.\n"
 msgstr "%s.\n"
 
-#: g10/keygen.c:2074
+#: g10/keygen.c:2123
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "I will do it anyway.  You can change your passphrase at any time,\n"
@@ -4696,7 +4696,7 @@ msgstr ""
 "useu aquest programa amb l'opció \"--edit-key\".\n"
 "\n"
 
-#: g10/keygen.c:2096
+#: g10/keygen.c:2147
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
@@ -4708,53 +4708,53 @@ msgstr ""
 "nombres primers; açò dóna oportunitat al generador de nombres aleatoris\n"
 "d'aconseguir prou entropia.\n"
 
-#: g10/keygen.c:2886 g10/keygen.c:2913
+#: g10/keygen.c:2956 g10/keygen.c:2983
 msgid "Key generation canceled.\n"
 msgstr "La generació de claus ha estat cancel·lada.\n"
 
-#: g10/keygen.c:3106 g10/keygen.c:3251
+#: g10/keygen.c:3188 g10/keygen.c:3355
 #, c-format
 msgid "writing public key to `%s'\n"
 msgstr "s'està escrivint la clau pública a «%s»\n"
 
-#: g10/keygen.c:3108 g10/keygen.c:3254
+#: g10/keygen.c:3190 g10/keygen.c:3358
 #, fuzzy, c-format
 msgid "writing secret key stub to `%s'\n"
 msgstr "s'està escrivint la clau secreta a «%s»\n"
 
-#: g10/keygen.c:3111 g10/keygen.c:3257
+#: g10/keygen.c:3193 g10/keygen.c:3361
 #, c-format
 msgid "writing secret key to `%s'\n"
 msgstr "s'està escrivint la clau secreta a «%s»\n"
 
 # Potser no hi haja cap anell! ivb
-#: g10/keygen.c:3240
+#: g10/keygen.c:3342
 #, c-format
 msgid "no writable public keyring found: %s\n"
 msgstr "no s'ha trobat cap anell públic escrivible: %s\n"
 
-#: g10/keygen.c:3246
+#: g10/keygen.c:3349
 #, c-format
 msgid "no writable secret keyring found: %s\n"
 msgstr ""
 "no s'ha trobat cap anell secret de escrivible: %s\n"
 "\n"
 
-#: g10/keygen.c:3264
+#: g10/keygen.c:3369
 #, c-format
 msgid "error writing public keyring `%s': %s\n"
 msgstr "s'ha produït un error mentre s'escrivia l'anell públic «%s»: %s\n"
 
-#: g10/keygen.c:3271
+#: g10/keygen.c:3377
 #, c-format
 msgid "error writing secret keyring `%s': %s\n"
 msgstr "s'ha produït un error mentre s'escrivia l'anell secret «%s»: %s\n"
 
-#: g10/keygen.c:3294
+#: g10/keygen.c:3404
 msgid "public and secret key created and signed.\n"
 msgstr "s'han creat i signat les claus pública i secreta.\n"
 
-#: g10/keygen.c:3305
+#: g10/keygen.c:3415
 #, fuzzy
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
@@ -4763,13 +4763,13 @@ msgstr ""
 "Noteu que aquesta clau no serveix per a xifrar. Potser vulgueu usar l'ordre\n"
 "\"--edit-key\" per a generar una clau secundària per a tal propòsit.\n"
 
-#: g10/keygen.c:3317 g10/keygen.c:3452 g10/keygen.c:3568
+#: g10/keygen.c:3428 g10/keygen.c:3573 g10/keygen.c:3694
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "La generació de claus ha fallat: %s\n"
 
 # Werner FIXME: Use ngettext. jm
-#: g10/keygen.c:3370 g10/keygen.c:3503 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
@@ -4778,7 +4778,7 @@ msgstr ""
 "amb el rellotge)\n"
 
 # Werner FIXME: use ngettext. jm
-#: g10/keygen.c:3372 g10/keygen.c:3505 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
@@ -4786,26 +4786,26 @@ msgstr ""
 "la clau s'ha creat %lu segons en el futur (salt en el temps o problemes\n"
 "amb el rellotge)\n"
 
-#: g10/keygen.c:3381 g10/keygen.c:3516
+#: g10/keygen.c:3496 g10/keygen.c:3637
 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
 msgstr "NOTA: crear subclaus per a claus v3 no és conforme amb OpenPGP\n"
 
-#: g10/keygen.c:3420 g10/keygen.c:3549
+#: g10/keygen.c:3537 g10/keygen.c:3670
 #, fuzzy
 msgid "Really create? (y/N) "
 msgstr "Crear realment? "
 
-#: g10/keygen.c:3712
+#: g10/keygen.c:3843
 #, fuzzy, c-format
 msgid "storing key onto card failed: %s\n"
 msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
 
-#: g10/keygen.c:3760
+#: g10/keygen.c:3891
 #, fuzzy, c-format
 msgid "can't create backup file `%s': %s\n"
 msgstr "no s'ha pogut crear «%s»: %s\n"
 
-#: g10/keygen.c:3786
+#: g10/keygen.c:3917
 #, c-format
 msgid "NOTE: backup of card key saved to `%s'\n"
 msgstr ""
@@ -6754,15 +6754,15 @@ msgstr "no s'ha pogut reconstruir la memòria cau de l'anell: %s\n"
 msgid "reading public key failed: %s\n"
 msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
 
-#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2046
+#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2047
 msgid "response does not contain the public key data\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2054
+#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2055
 msgid "response does not contain the RSA modulus\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2064
+#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2065
 msgid "response does not contain the RSA public exponent\n"
 msgstr ""
 
@@ -6782,7 +6782,7 @@ msgid "PIN for CHV%d is too short; minimum length is %d\n"
 msgstr ""
 
 #: scd/app-openpgp.c:1384 scd/app-openpgp.c:1424 scd/app-openpgp.c:1499
-#: scd/app-openpgp.c:2317
+#: scd/app-openpgp.c:2318
 #, fuzzy, c-format
 msgid "verify CHV%d failed: %s\n"
 msgstr "l'enviament al servidor de claus ha fallat: %s\n"
@@ -6791,11 +6791,11 @@ msgstr "l'enviament al servidor de claus ha fallat: %s\n"
 msgid "access to admin commands is not configured\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2527
+#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2528
 msgid "error retrieving CHV status from card\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2536
+#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2537
 msgid "card is permanently locked!\n"
 msgstr ""
 
@@ -6827,12 +6827,12 @@ msgstr ""
 msgid "error getting new PIN: %s\n"
 msgstr "error en crear «%s»: %s\n"
 
-#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2132
+#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2133
 #, fuzzy
 msgid "error reading application data\n"
 msgstr "s'ha produït un error en llegir el bloc de claus: %s\n"
 
-#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2139
+#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2140
 #, fuzzy
 msgid "error reading fingerprint DO\n"
 msgstr "error: l'empremta digital és invàlida\n"
@@ -6875,44 +6875,44 @@ msgstr ""
 msgid "failed to store the key: %s\n"
 msgstr "no s'ha pogut inicialitzar la base de dades de confiança: %s\n"
 
-#: scd/app-openpgp.c:2023
+#: scd/app-openpgp.c:2024
 msgid "please wait while key is being generated ...\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2037
+#: scd/app-openpgp.c:2038
 #, fuzzy
 msgid "generating key failed\n"
 msgstr "La generació de claus ha fallat: %s\n"
 
-#: scd/app-openpgp.c:2040
+#: scd/app-openpgp.c:2041
 #, fuzzy, c-format
 msgid "key generation completed (%d seconds)\n"
 msgstr "La generació de claus ha fallat: %s\n"
 
-#: scd/app-openpgp.c:2097
+#: scd/app-openpgp.c:2098
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2147
+#: scd/app-openpgp.c:2148
 msgid "fingerprint on card does not match requested one\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2235
+#: scd/app-openpgp.c:2236
 #, fuzzy, c-format
 msgid "card does not support digest algorithm %s\n"
 msgstr "signatura %s, algorisme de resum %s\n"
 
-#: scd/app-openpgp.c:2296
+#: scd/app-openpgp.c:2297
 #, c-format
 msgid "signatures created so far: %lu\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2541
+#: scd/app-openpgp.c:2542
 msgid ""
 "verification of Admin PIN is currently prohibited through this command\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2614 scd/app-openpgp.c:2624
+#: scd/app-openpgp.c:2615 scd/app-openpgp.c:2625
 #, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr ""
index 677ab66..3c5dbb3 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-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\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"
@@ -77,8 +77,8 @@ 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:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, c-format
 msgid "can't create `%s': %s\n"
@@ -86,7 +86,7 @@ msgstr "nemohu vytvo
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -870,14 +870,14 @@ msgstr "OpenPGp karta nen
 msgid "OpenPGP card no. %s detected\n"
 msgstr "Nalezena OpenPGP karta èíslo %s\n"
 
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 msgid "can't do this in batch mode\n"
 msgstr "nelze provést v dávkovém módu\n"
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr "Vá¹ výbìr? "
 
@@ -1004,19 +1004,19 @@ msgstr "toto nen
 msgid "error getting current key info: %s\n"
 msgstr "chyba pøi získání informací o aktuálním klíèi: %s\n"
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 msgid "Replace existing key? (y/N) "
 msgstr "Pøepsat existující klíè? (a/N) "
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr "Vytvoøit zálohu ¹ifrovacího klíèe mimo kartu? (A/n) "
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 msgid "Replace existing keys? (y/N) "
 msgstr "Pøepsat existující klíèe? (a/N) "
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1027,120 +1027,120 @@ msgstr ""
 "   PIN = `%s'     PIN administrátora = `%s'\n"
 "Toto nastavení mù¾ete zmìnit pøíkazem --change-pin\n"
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 msgid "Please select the type of key to generate:\n"
 msgstr "Prosím, vyberte druh klíèe, který chcete generovat:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 msgid "   (1) Signature key\n"
 msgstr "   (1) Podepisovací klíè\n"
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 msgid "   (2) Encryption key\n"
 msgstr "   (2) ©ifrovací klíè\n"
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr "   (3) Autentizaèní klíè\n"
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr "Neplatný výbìr.\n"
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 msgid "Please select where to store the key:\n"
 msgstr "Prosím vyberte místo pro uchování klíèe:\n"
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 msgid "unknown key protection algorithm\n"
 msgstr "neznámý algoritmus pro ochranu klíèe\n"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 msgid "secret parts of key are not available\n"
 msgstr "tajné èásti klèe nejsou dostupné\n"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 msgid "secret key already stored on a card\n"
 msgstr "tajný klíè je na kartì ulo¾en\n"
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr "ukonèit toto menu"
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 msgid "show admin commands"
 msgstr "zobraz administrátorské pøíkazy"
 
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "ukázat tuto pomoc"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 msgid "list all available data"
 msgstr "vypi¹ v¹echna dostupná data"
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr "zmìní jméno majitele karty"
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr "zmìní URL pro záskání klíèe"
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr "získá klíè specifikovaný v URL karty"
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 msgid "change the login name"
 msgstr "zmìnit login name"
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 msgid "change the language preferences"
 msgstr "zmìnit jazykové pøedvolby"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr "zmìní pohlaví dr¾itele karty"
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 msgid "change a CA fingerprint"
 msgstr "vypsat fingerprint certifikaèní autority"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "toggle the signature force PIN flag"
 msgstr "zapnout/vypnout po¾adování PINu pøi ka¾dé self-sign operaci"
 
-#: g10/card-util.c:1330
+#: g10/card-util.c:1320
 msgid "generate new keys"
 msgstr "vytvoøit nový pár klíèù"
 
-#: g10/card-util.c:1331
+#: g10/card-util.c:1321
 msgid "menu to change or unblock the PIN"
 msgstr "nabídka pro zmìnu anebo odblokování PINu"
 
-#: g10/card-util.c:1332
+#: g10/card-util.c:1322
 msgid "verify the PIN and list all data"
 msgstr "ovìø PIN a vypi¹ v¹echna data"
 
-#: g10/card-util.c:1452 g10/keyedit.c:1634
+#: g10/card-util.c:1442 g10/keyedit.c:1634
 msgid "Command> "
 msgstr "Pøíkaz> "
 
-#: g10/card-util.c:1490
+#: g10/card-util.c:1480
 msgid "Admin-only command\n"
 msgstr "pouze administrátorské pøíkazy\n"
 
-#: g10/card-util.c:1521
+#: g10/card-util.c:1511
 msgid "Admin commands are allowed\n"
 msgstr "administrátorské pøíkazy jsou povoleny\n"
 
-#: g10/card-util.c:1523
+#: g10/card-util.c:1513
 msgid "Admin commands are not allowed\n"
 msgstr "administrátorské pøíkazy nejsou povoleny\n"
 
-#: g10/card-util.c:1597 g10/keyedit.c:2255
+#: g10/card-util.c:1587 g10/keyedit.c:2255
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Neplatný pøíkaz (zkuste \"help\")\n"
 
@@ -1433,7 +1433,7 @@ msgstr ""
 msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
 msgstr "Neplatný klíè %s zmìnìn na platný pomocí --always-non-selfsigned-uid\n"
 
-#: g10/getkey.c:2391 g10/keyedit.c:3721
+#: g10/getkey.c:2391 g10/keyedit.c:3726
 #, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
 msgstr "neexistuje tajný podklíè pro veøejný klíè %s - ignorováno\n"
@@ -1877,7 +1877,7 @@ msgstr "`%s' nen
 msgid "`%s' is not a valid character set\n"
 msgstr "`%s' není platná znaková sada\n"
 
-#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4078
+#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4084
 msgid "could not parse keyserver URL\n"
 msgstr "nelze zpracovat URL serveru klíèù\n"
 
@@ -3365,8 +3365,8 @@ msgstr "Velmi pe
 msgid "Really sign? (y/N) "
 msgstr "Skuteènì podepsat? (a/N) "
 
-#: g10/keyedit.c:1066 g10/keyedit.c:4797 g10/keyedit.c:4888 g10/keyedit.c:4952
-#: g10/keyedit.c:5013 g10/sign.c:348
+#: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
+#: g10/keyedit.c:5019 g10/sign.c:348
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "podepsání selhalo: %s\n"
@@ -3377,19 +3377,19 @@ msgstr ""
 "K dispozici je jen kontrolní souèet klíèe nebo je klíè na kartì - passphrase "
 "nelze zmìnit.\n"
 
-#: g10/keyedit.c:1142 g10/keygen.c:3399
+#: g10/keyedit.c:1142 g10/keygen.c:3516
 msgid "This key is not protected.\n"
 msgstr "Tento klíè není chránìný.\n"
 
-#: g10/keyedit.c:1146 g10/keygen.c:3387 g10/revoke.c:538
+#: g10/keyedit.c:1146 g10/keygen.c:3503 g10/revoke.c:538
 msgid "Secret parts of primary key are not available.\n"
 msgstr "Tajné èásti primárního klíèe nejsou dostupné.\n"
 
-#: g10/keyedit.c:1150 g10/keygen.c:3402
+#: g10/keyedit.c:1150 g10/keygen.c:3519
 msgid "Secret parts of primary key are stored on-card.\n"
 msgstr "Tajná èást primárního klíèe jsou ulo¾eny na kartì.\n"
 
-#: g10/keyedit.c:1154 g10/keygen.c:3406
+#: g10/keyedit.c:1154 g10/keygen.c:3523
 msgid "Key is protected.\n"
 msgstr "Klíè je chránìný.\n"
 
@@ -3406,7 +3406,7 @@ msgstr ""
 "Vlo¾te nové heslo (passphrase) pro tento tajný klíè.\n"
 "\n"
 
-#: g10/keyedit.c:1199 g10/keygen.c:2067
+#: g10/keyedit.c:1199 g10/keygen.c:2116
 msgid "passphrase not correctly repeated; try again"
 msgstr "heslo není zopakováno správnì; zkuste to znovu"
 
@@ -3995,309 +3995,309 @@ msgstr "Nem
 msgid "No corresponding signature in secret ring\n"
 msgstr "V souboru tajných klíèù chybí odpovídající podpis\n"
 
-#: g10/keyedit.c:3682
+#: g10/keyedit.c:3687
 #, fuzzy, c-format
 msgid "signing subkey %s is already cross-certified\n"
 msgstr "VAROVÁNÍ: podepisovací podklíè %s není køí¾ovì certifikován\n"
 
-#: g10/keyedit.c:3688
+#: g10/keyedit.c:3693
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr ""
 
-#: g10/keyedit.c:3850
+#: g10/keyedit.c:3856
 msgid "Please select exactly one user ID.\n"
 msgstr "Prosím, vyberte právì jeden id u¾ivatele .\n"
 
-#: g10/keyedit.c:3889 g10/keyedit.c:3999 g10/keyedit.c:4119 g10/keyedit.c:4260
+#: g10/keyedit.c:3895 g10/keyedit.c:4005 g10/keyedit.c:4125 g10/keyedit.c:4266
 #, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
 msgstr "pøeskoèen v3 podpis klíèe jím samým u u¾ivatelského id \"%s\"\n"
 
-#: g10/keyedit.c:4060
+#: g10/keyedit.c:4066
 msgid "Enter your preferred keyserver URL: "
 msgstr "Vlo¾te URL preferovaného keyserveru: "
 
-#: g10/keyedit.c:4140
+#: g10/keyedit.c:4146
 msgid "Are you sure you want to replace it? (y/N) "
 msgstr "Jste si jistý(á), ¾e jej chcete pøepsat? (a/N) "
 
-#: g10/keyedit.c:4141
+#: g10/keyedit.c:4147
 msgid "Are you sure you want to delete it? (y/N) "
 msgstr "Jste si jistý(á), ¾e jej chcete smazat? (a/N) "
 
-#: g10/keyedit.c:4203
+#: g10/keyedit.c:4209
 #, fuzzy
 msgid "Enter the notation: "
 msgstr "Podepisovací notace: "
 
-#: g10/keyedit.c:4352
+#: g10/keyedit.c:4358
 #, fuzzy
 msgid "Proceed? (y/N) "
 msgstr "Pøepsat (a/N)? "
 
-#: g10/keyedit.c:4416
+#: g10/keyedit.c:4422
 #, c-format
 msgid "No user ID with index %d\n"
 msgstr "Neexistuje identifikátor u¾ivatele s indexem %d\n"
 
-#: g10/keyedit.c:4474
+#: g10/keyedit.c:4480
 #, c-format
 msgid "No user ID with hash %s\n"
 msgstr "Neexistuje u¾ivatelské ID s hashem %s\n"
 
-#: g10/keyedit.c:4501
+#: g10/keyedit.c:4507
 #, c-format
 msgid "No subkey with index %d\n"
 msgstr "Neexistuje podklíè s indexem %d\n"
 
-#: g10/keyedit.c:4636
+#: g10/keyedit.c:4642
 #, c-format
 msgid "user ID: \"%s\"\n"
 msgstr "id u¾ivatele:\"%s\"\n"
 
-#: g10/keyedit.c:4639 g10/keyedit.c:4703 g10/keyedit.c:4746
+#: g10/keyedit.c:4645 g10/keyedit.c:4709 g10/keyedit.c:4752
 #, c-format
 msgid "signed by your key %s on %s%s%s\n"
 msgstr "podepsáno va¹ím klíèem %s v %s%s%s\n"
 
-#: g10/keyedit.c:4641 g10/keyedit.c:4705 g10/keyedit.c:4748
+#: g10/keyedit.c:4647 g10/keyedit.c:4711 g10/keyedit.c:4754
 msgid " (non-exportable)"
 msgstr " (neexportovatelné)"
 
-#: g10/keyedit.c:4645
+#: g10/keyedit.c:4651
 #, c-format
 msgid "This signature expired on %s.\n"
 msgstr "Platnost podpisu vypr¹í %s.\n"
 
-#: g10/keyedit.c:4649
+#: g10/keyedit.c:4655
 msgid "Are you sure you still want to revoke it? (y/N) "
 msgstr "Jste si jistý, ¾e jej chcete stále revokovat? (a/N) "
 
-#: g10/keyedit.c:4653
+#: g10/keyedit.c:4659
 msgid "Create a revocation certificate for this signature? (y/N) "
 msgstr "Vytvoøit pro tento podpis revokaèní certifikát? (a/N)"
 
-#: g10/keyedit.c:4680
+#: g10/keyedit.c:4686
 #, c-format
 msgid "You have signed these user IDs on key %s:\n"
 msgstr "Podepsal(a) jste následující identifikátory u¾ivatele: %s:\n"
 
-#: g10/keyedit.c:4706
+#: g10/keyedit.c:4712
 msgid " (non-revocable)"
 msgstr " (nerevokovatelné)"
 
-#: g10/keyedit.c:4713
+#: g10/keyedit.c:4719
 #, c-format
 msgid "revoked by your key %s on %s\n"
 msgstr "revokováno va¹ím klíèem %s v %s\n"
 
-#: g10/keyedit.c:4735
+#: g10/keyedit.c:4741
 msgid "You are about to revoke these signatures:\n"
 msgstr "Chystáte se revokovat tyto podpisy:\n"
 
-#: g10/keyedit.c:4755
+#: g10/keyedit.c:4761
 msgid "Really create the revocation certificates? (y/N) "
 msgstr "Opravdu vytvoøit revokaèní certifikáty? (a/N) "
 
-#: g10/keyedit.c:4785
+#: g10/keyedit.c:4791
 msgid "no secret key\n"
 msgstr "neexistuje tajný klíè\n"
 
-#: g10/keyedit.c:4855
+#: g10/keyedit.c:4861
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
 msgstr "U¾ivatelské ID \"%s\" je ji¾ revokováno.\n"
 
-#: g10/keyedit.c:4872
+#: g10/keyedit.c:4878
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
 msgstr "VAROVÁNÍ: podpis ID u¾ivatele je datován %d sekund v budoucnosti\n"
 
-#: g10/keyedit.c:4936
+#: g10/keyedit.c:4942
 #, c-format
 msgid "Key %s is already revoked.\n"
 msgstr "Klíè %s je ji¾ revokován.\n"
 
-#: g10/keyedit.c:4998
+#: g10/keyedit.c:5004
 #, c-format
 msgid "Subkey %s is already revoked.\n"
 msgstr "Podklíè %s je ji¾ revokován.\n"
 
-#: g10/keyedit.c:5093
+#: g10/keyedit.c:5099
 #, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
 msgstr "Zobrazuji %s fotografický ID o velikosti %ld pro klíè %s (uid %d)\n"
 
-#: g10/keygen.c:263
+#: g10/keygen.c:268
 #, c-format
 msgid "preference `%s' duplicated\n"
 msgstr "duplicita pøedvolby `%s'\n"
 
-#: g10/keygen.c:270
+#: g10/keygen.c:275
 msgid "too many cipher preferences\n"
 msgstr "pøíli¹ mnoho pøedvoleb pro ¹ifrování\n"
 
-#: g10/keygen.c:272
+#: g10/keygen.c:277
 msgid "too many digest preferences\n"
 msgstr "pøíli¹ mnoho pøedvoleb pro vzorkování\n"
 
-#: g10/keygen.c:274
+#: g10/keygen.c:279
 msgid "too many compression preferences\n"
 msgstr "pøíli¹ mnoho pøedvoleb pro komprimaci\n"
 
-#: g10/keygen.c:399
+#: g10/keygen.c:404
 #, c-format
 msgid "invalid item `%s' in preference string\n"
 msgstr "neplatná polo¾ka `%s' v øetìzci s pøedvolbami\n"
 
-#: g10/keygen.c:873
+#: g10/keygen.c:884
 msgid "writing direct signature\n"
 msgstr "zapisuji podpis klíèe jím samým (direct signature)\n"
 
-#: g10/keygen.c:912
+#: g10/keygen.c:926
 msgid "writing self signature\n"
 msgstr "zapisuji podpis klíèe sebou samým\n"
 
-#: g10/keygen.c:962
+#: g10/keygen.c:983
 msgid "writing key binding signature\n"
 msgstr "zapisuji \"key-binding\" podpis\n"
 
-#: g10/keygen.c:1123 g10/keygen.c:1237 g10/keygen.c:1242 g10/keygen.c:1375
-#: g10/keygen.c:2946
+#: g10/keygen.c:1151 g10/keygen.c:1262 g10/keygen.c:1267 g10/keygen.c:1402
+#: g10/keygen.c:3016
 #, c-format
 msgid "keysize invalid; using %u bits\n"
 msgstr "neplatná délka klíèe; pou¾iji %u bitù\n"
 
-#: g10/keygen.c:1128 g10/keygen.c:1248 g10/keygen.c:1380 g10/keygen.c:2952
+#: g10/keygen.c:1157 g10/keygen.c:1273 g10/keygen.c:1408 g10/keygen.c:3022
 #, c-format
 msgid "keysize rounded up to %u bits\n"
 msgstr "délka klíèe zaokrouhlena na %u bitù\n"
 
-#: g10/keygen.c:1274
+#: g10/keygen.c:1299
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
 
-#: g10/keygen.c:1490
+#: g10/keygen.c:1519
 msgid "Sign"
 msgstr "Podepisování"
 
-#: g10/keygen.c:1493
+#: g10/keygen.c:1522
 msgid "Certify"
 msgstr ""
 
-#: g10/keygen.c:1496
+#: g10/keygen.c:1525
 msgid "Encrypt"
 msgstr "©ifrování"
 
-#: g10/keygen.c:1499
+#: g10/keygen.c:1528
 msgid "Authenticate"
 msgstr "Autentizace"
 
-#: g10/keygen.c:1507
+#: g10/keygen.c:1536
 msgid "SsEeAaQq"
 msgstr "SsEeAaQq"
 
-#: g10/keygen.c:1526
+#: g10/keygen.c:1555
 #, c-format
 msgid "Possible actions for a %s key: "
 msgstr "Pro klíè %s lze provést: "
 
-#: g10/keygen.c:1530
+#: g10/keygen.c:1559
 msgid "Current allowed actions: "
 msgstr "Aktuálnì povolené akce: "
 
-#: g10/keygen.c:1535
+#: g10/keygen.c:1564
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
 msgstr "   (%c) Zapnout/vypnout schopnost podepisovat\n"
 
-#: g10/keygen.c:1538
+#: g10/keygen.c:1567
 #, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
 msgstr "   (%c) Zapnout/vypnout schopnost ¹ifrovat\n"
 
-#: g10/keygen.c:1541
+#: g10/keygen.c:1570
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
 msgstr "   (%c) Zapnout/vypnout schopnost autentizovat\n"
 
-#: g10/keygen.c:1544
+#: g10/keygen.c:1573
 #, c-format
 msgid "   (%c) Finished\n"
 msgstr "   (%c) Konec\n"
 
-#: g10/keygen.c:1600
+#: g10/keygen.c:1629
 msgid "Please select what kind of key you want:\n"
 msgstr "Prosím, vyberte druh klíèe, který chcete:\n"
 
-#: g10/keygen.c:1602
+#: g10/keygen.c:1631
 #, c-format
 msgid "   (%d) DSA and Elgamal (default)\n"
 msgstr "   (%d) DSA a ElGamal (implicitní)\n"
 
-#: g10/keygen.c:1603
+#: g10/keygen.c:1632
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (pouze pro podpis)\n"
 
-#: g10/keygen.c:1605
+#: g10/keygen.c:1634
 #, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
 msgstr "   (%d) DSA (nastavit si vlastní pou¾ití)\n"
 
-#: g10/keygen.c:1607
+#: g10/keygen.c:1636
 #, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (pouze pro ¹ifrování)\n"
 
-#: g10/keygen.c:1608
+#: g10/keygen.c:1637
 #, c-format
 msgid "   (%d) RSA (sign only)\n"
 msgstr "   (%d) RSA (pouze pro podpis)\n"
 
-#: g10/keygen.c:1610
+#: g10/keygen.c:1639
 #, c-format
 msgid "   (%d) RSA (encrypt only)\n"
 msgstr "   (%d) RSA (pouze pro ¹ifrování)\n"
 
-#: g10/keygen.c:1612
+#: g10/keygen.c:1641
 #, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
 msgstr "   (%d) RSA (nastavit si vlastní pou¾ití)\n"
 
-#: g10/keygen.c:1681
+#: g10/keygen.c:1710
 #, c-format
 msgid "DSA keypair will have %u bits.\n"
 msgstr "Pár DSA klíèù DSA dlouhý %u bitù.\n"
 
-#: g10/keygen.c:1691
+#: g10/keygen.c:1720
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
 msgstr "klíè %s mù¾e mít délku v intervalu %u a¾ %u bitù.\n"
 
-#: g10/keygen.c:1698
+#: g10/keygen.c:1727
 #, c-format
 msgid "What keysize do you want? (%u) "
 msgstr "Jakou délku klíèe si pøejete? (%u) "
 
-#: g10/keygen.c:1712
+#: g10/keygen.c:1741
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
 msgstr "velikost klíèe %s musí být v intervalu %u-%u\n"
 
-#: g10/keygen.c:1718
+#: g10/keygen.c:1747
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "Po¾adovaná délka klíèe je %u bitù.\n"
 
-#: g10/keygen.c:1723 g10/keygen.c:1728
+#: g10/keygen.c:1752 g10/keygen.c:1757
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "zaokrouhleno na %u bitù\n"
 
-#: g10/keygen.c:1777
+#: g10/keygen.c:1826
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -4313,7 +4313,7 @@ msgstr ""
 "      <n>m = doba platnosti klíèe skonèí za n mìsícù\n"
 "      <n>y = doba platnosti klíèe skonèí za n let\n"
 
-#: g10/keygen.c:1788
+#: g10/keygen.c:1837
 msgid ""
 "Please specify how long the signature should be valid.\n"
 "         0 = signature does not expire\n"
@@ -4329,38 +4329,38 @@ msgstr ""
 "      <n>m = doba platnosti podpisu skonèí za n mìsícù\n"
 "      <n>y = doba platnosti podpisu skonèí za n let\n"
 
-#: g10/keygen.c:1811
+#: g10/keygen.c:1860
 msgid "Key is valid for? (0) "
 msgstr "Klíè je platný pro? (0) "
 
-#: g10/keygen.c:1816
+#: g10/keygen.c:1865
 #, c-format
 msgid "Signature is valid for? (%s) "
 msgstr "Podpis je platný pro? (%s) "
 
-#: g10/keygen.c:1834
+#: g10/keygen.c:1883
 msgid "invalid value\n"
 msgstr "neplatná hodnota\n"
 
-#: g10/keygen.c:1841
+#: g10/keygen.c:1890
 msgid "Key does not expire at all\n"
 msgstr "Platnost klíèe nikdy neskonèí\n"
 
-#: g10/keygen.c:1842
+#: g10/keygen.c:1891
 msgid "Signature does not expire at all\n"
 msgstr "Platnost podpisu nikdy neskonèí\n"
 
-#: g10/keygen.c:1847
+#: g10/keygen.c:1896
 #, c-format
 msgid "Key expires at %s\n"
 msgstr "Platnost klíèe skonèí v %s\n"
 
-#: g10/keygen.c:1848
+#: g10/keygen.c:1897
 #, c-format
 msgid "Signature expires at %s\n"
 msgstr "Platnost podpisu skonèí v %s\n"
 
-#: g10/keygen.c:1852
+#: g10/keygen.c:1901
 msgid ""
 "Your system can't display dates beyond 2038.\n"
 "However, it will be correctly handled up to 2106.\n"
@@ -4368,11 +4368,11 @@ msgstr ""
 "Vá¹ systém neumí zobrazit data po roce 2038.\n"
 "V ka¾dém pøípadì budou data korektnì zpracovávána do roku 2106.\n"
 
-#: g10/keygen.c:1859
+#: g10/keygen.c:1908
 msgid "Is this correct? (y/N) "
 msgstr "Je to správnì (a/N)? "
 
-#: g10/keygen.c:1882
+#: g10/keygen.c:1931
 msgid ""
 "\n"
 "You need a user ID to identify your key; the software constructs the user "
@@ -4388,44 +4388,44 @@ msgstr ""
 "    \"Magda Prochazkova (student) <magda@domena.cz>\"\n"
 "\n"
 
-#: g10/keygen.c:1895
+#: g10/keygen.c:1944
 msgid "Real name: "
 msgstr "Jméno a pøíjmení: "
 
-#: g10/keygen.c:1903
+#: g10/keygen.c:1952
 msgid "Invalid character in name\n"
 msgstr "Neplatný znak ve jménì\n"
 
-#: g10/keygen.c:1905
+#: g10/keygen.c:1954
 msgid "Name may not start with a digit\n"
 msgstr "Jméno nemù¾e zaèínat èíslicí\n"
 
-#: g10/keygen.c:1907
+#: g10/keygen.c:1956
 msgid "Name must be at least 5 characters long\n"
 msgstr "Jméno musí být dlouhé alespoò 5 znakù\n"
 
-#: g10/keygen.c:1915
+#: g10/keygen.c:1964
 msgid "Email address: "
 msgstr "E-mailová adresa: "
 
-#: g10/keygen.c:1921
+#: g10/keygen.c:1970
 msgid "Not a valid email address\n"
 msgstr "Neplatná e-mailová adresa\n"
 
-#: g10/keygen.c:1929
+#: g10/keygen.c:1978
 msgid "Comment: "
 msgstr "Komentáø: "
 
-#: g10/keygen.c:1935
+#: g10/keygen.c:1984
 msgid "Invalid character in comment\n"
 msgstr "Neplatný znak v komentáøi\n"
 
-#: g10/keygen.c:1957
+#: g10/keygen.c:2006
 #, c-format
 msgid "You are using the `%s' character set.\n"
 msgstr "Pou¾íváte znakovou sadu `%s'.\n"
 
-#: g10/keygen.c:1963
+#: g10/keygen.c:2012
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -4436,7 +4436,7 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:1968
+#: g10/keygen.c:2017
 msgid "Please don't put the email address into the real name or the comment\n"
 msgstr "Do pole jméno nebo komentáø nepi¹te, prosím, e-mailovou adresu.\n"
 
@@ -4451,25 +4451,25 @@ msgstr "Do pole jm
 #. o = Okay (ready, continue)
 #. q = Quit
 #.
-#: g10/keygen.c:1984
+#: g10/keygen.c:2033
 msgid "NnCcEeOoQq"
 msgstr "jJkKeEPpUu"
 
-#: g10/keygen.c:1994
+#: g10/keygen.c:2043
 msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
 msgstr "Zmìnit (J)méno, (K)omentáø, (E)-mail nebo (U)konèit? "
 
-#: g10/keygen.c:1995
+#: g10/keygen.c:2044
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr ""
 "Zmìnit (J)méno, (K)omentáø, (E)-mail, (P)okraèovat dál nebo (U)konèit "
 "program? "
 
-#: g10/keygen.c:2014
+#: g10/keygen.c:2063
 msgid "Please correct the error first\n"
 msgstr "Nejdøív, prosím, opravte chybu\n"
 
-#: g10/keygen.c:2053
+#: g10/keygen.c:2102
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -4477,12 +4477,12 @@ msgstr ""
 "Pro ochranu Va¹eho tajného klíèe musíte zadat heslo.\n"
 "\n"
 
-#: g10/keygen.c:2068
+#: g10/keygen.c:2117
 #, c-format
 msgid "%s.\n"
 msgstr "%s.\n"
 
-#: g10/keygen.c:2074
+#: g10/keygen.c:2123
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "I will do it anyway.  You can change your passphrase at any time,\n"
@@ -4494,7 +4494,7 @@ msgstr ""
 "tohoto programu s parametrem \"--edit-key\".\n"
 "\n"
 
-#: g10/keygen.c:2096
+#: g10/keygen.c:2147
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
@@ -4507,50 +4507,50 @@ msgstr ""
 "pou¾ívat disky); díky tomu má generátor lep¹í ¹anci získat dostatek "
 "entropie.\n"
 
-#: g10/keygen.c:2886 g10/keygen.c:2913
+#: g10/keygen.c:2956 g10/keygen.c:2983
 msgid "Key generation canceled.\n"
 msgstr "Vytváøení klíèe bylo zru¹eno.\n"
 
-#: g10/keygen.c:3106 g10/keygen.c:3251
+#: g10/keygen.c:3188 g10/keygen.c:3355
 #, c-format
 msgid "writing public key to `%s'\n"
 msgstr "zapisuji veøejný klíè do `%s'\n"
 
-#: g10/keygen.c:3108 g10/keygen.c:3254
+#: g10/keygen.c:3190 g10/keygen.c:3358
 #, c-format
 msgid "writing secret key stub to `%s'\n"
 msgstr "zapisuji tajný klíè do `%s'\n"
 
-#: g10/keygen.c:3111 g10/keygen.c:3257
+#: g10/keygen.c:3193 g10/keygen.c:3361
 #, c-format
 msgid "writing secret key to `%s'\n"
 msgstr "zapisuji tajný klíè do `%s'\n"
 
-#: g10/keygen.c:3240
+#: g10/keygen.c:3342
 #, c-format
 msgid "no writable public keyring found: %s\n"
 msgstr "nenalezen zapisovatelný soubor veøejných klíèù (pubring): %s\n"
 
-#: g10/keygen.c:3246
+#: g10/keygen.c:3349
 #, c-format
 msgid "no writable secret keyring found: %s\n"
 msgstr "nenalezen zapisovatelný soubor tajných klíèù (secring): %s\n"
 
-#: g10/keygen.c:3264
+#: g10/keygen.c:3369
 #, c-format
 msgid "error writing public keyring `%s': %s\n"
 msgstr "chyba pøi zápisu do souboru veøejných klíèù `%s': %s\n"
 
-#: g10/keygen.c:3271
+#: g10/keygen.c:3377
 #, c-format
 msgid "error writing secret keyring `%s': %s\n"
 msgstr "chyba pøi zápisu do souboru tajných klíèù `%s': %s\n"
 
-#: g10/keygen.c:3294
+#: g10/keygen.c:3404
 msgid "public and secret key created and signed.\n"
 msgstr "veøejný a tajný klíè byly vytvoøeny a podepsány.\n"
 
-#: g10/keygen.c:3305
+#: g10/keygen.c:3415
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--edit-key\" to generate a subkey for this purpose.\n"
@@ -4558,12 +4558,12 @@ msgstr ""
 "Tento klíè nemù¾e být pou¾itý pro ¹ifrování. K vytvoøení\n"
 "sekundárního klíèe pro tento úèel mù¾ete pou¾ít pøíkaz \"--edit-key\".\n"
 
-#: g10/keygen.c:3317 g10/keygen.c:3452 g10/keygen.c:3568
+#: g10/keygen.c:3428 g10/keygen.c:3573 g10/keygen.c:3694
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "Vytvoøení klíèe se nepodaøilo: %s\n"
 
-#: g10/keygen.c:3370 g10/keygen.c:3503 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
@@ -4571,7 +4571,7 @@ msgstr ""
 "klíè byl vytvoøen %lu sekund v budoucnosti (do¹lo ke zmìnì èasu nebo\n"
 "je problém se systémovým èasem)\n"
 
-#: g10/keygen.c:3372 g10/keygen.c:3505 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
@@ -4579,25 +4579,25 @@ msgstr ""
 "klíè byl vytvoøen %lu sekund v budoucnosti (do¹lo ke zmìnì èasu nebo\n"
 "je problém se systémovým èasem)\n"
 
-#: g10/keygen.c:3381 g10/keygen.c:3516
+#: g10/keygen.c:3496 g10/keygen.c:3637
 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
 msgstr "POZNÁMKA: vytvoøení podklíèe pro klíèe v3 není v souladu s OpenPGP\n"
 
-#: g10/keygen.c:3420 g10/keygen.c:3549
+#: g10/keygen.c:3537 g10/keygen.c:3670
 msgid "Really create? (y/N) "
 msgstr "Opravdu vytvoøit? (a/N) "
 
-#: g10/keygen.c:3712
+#: g10/keygen.c:3843
 #, c-format
 msgid "storing key onto card failed: %s\n"
 msgstr "ulo¾ení klíèe na kartu se nezdaøilo: %s\n"
 
-#: g10/keygen.c:3760
+#: g10/keygen.c:3891
 #, c-format
 msgid "can't create backup file `%s': %s\n"
 msgstr "nemohu vytvoøit zálohu souboru `%s': %s\n"
 
-#: g10/keygen.c:3786
+#: g10/keygen.c:3917
 #, c-format
 msgid "NOTE: backup of card key saved to `%s'\n"
 msgstr "POZNÁMKA: záloha klíèe z karty ulo¾ena do `%s'\n"
@@ -6458,15 +6458,15 @@ msgstr "ulo
 msgid "reading public key failed: %s\n"
 msgstr "ètení veøejného klíèe se nezdaøilo: %s\n"
 
-#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2046
+#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2047
 msgid "response does not contain the public key data\n"
 msgstr "odpovìï neobsahuje veøejný klíè\n"
 
-#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2054
+#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2055
 msgid "response does not contain the RSA modulus\n"
 msgstr "odpovìï neobsahuje RSA modulus\n"
 
-#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2064
+#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2065
 msgid "response does not contain the RSA public exponent\n"
 msgstr "odpovìï neobsahuje veøejný RSA exponent\n"
 
@@ -6486,7 +6486,7 @@ msgid "PIN for CHV%d is too short; minimum length is %d\n"
 msgstr "PIN pro CHV%d je pøíli¹ krátký; minimální délka je %d\n"
 
 #: scd/app-openpgp.c:1384 scd/app-openpgp.c:1424 scd/app-openpgp.c:1499
-#: scd/app-openpgp.c:2317
+#: scd/app-openpgp.c:2318
 #, c-format
 msgid "verify CHV%d failed: %s\n"
 msgstr "verifikace CHV%d se nezdaøila: %s\n"
@@ -6495,11 +6495,11 @@ msgstr "verifikace CHV%d se nezda
 msgid "access to admin commands is not configured\n"
 msgstr "pøístup k administrátorským pøíkazùm není nakonfigurován\n"
 
-#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2527
+#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2528
 msgid "error retrieving CHV status from card\n"
 msgstr "chyba pøi získání CHV z karty\n"
 
-#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2536
+#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2537
 msgid "card is permanently locked!\n"
 msgstr "karta je trvale uzamèena!\n"
 
@@ -6532,11 +6532,11 @@ msgstr "|N|Nov
 msgid "error getting new PIN: %s\n"
 msgstr "chyba pøi získání nového PINu: %s\n"
 
-#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2132
+#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2133
 msgid "error reading application data\n"
 msgstr "chyba pøi ètení aplikaèních dat\n"
 
-#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2139
+#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2140
 msgid "error reading fingerprint DO\n"
 msgstr "chyba pøi ètení fingerpritnu DO\n"
 
@@ -6576,45 +6576,45 @@ msgstr "sch
 msgid "failed to store the key: %s\n"
 msgstr "nelze ulo¾it klíè: %s\n"
 
-#: scd/app-openpgp.c:2023
+#: scd/app-openpgp.c:2024
 msgid "please wait while key is being generated ...\n"
 msgstr "prosím poèkejte ne¾ bude klíè vygenerován ...\n"
 
-#: scd/app-openpgp.c:2037
+#: scd/app-openpgp.c:2038
 msgid "generating key failed\n"
 msgstr "henerování klíèe se nezdaøilo\n"
 
-#: scd/app-openpgp.c:2040
+#: scd/app-openpgp.c:2041
 #, c-format
 msgid "key generation completed (%d seconds)\n"
 msgstr "generování klíèe dokonèeno (%d sekund)\n"
 
-#: scd/app-openpgp.c:2097
+#: scd/app-openpgp.c:2098
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr "neplatná struktura OpenPGP kraty (DO 0x93)\n"
 
-#: scd/app-openpgp.c:2147
+#: scd/app-openpgp.c:2148
 msgid "fingerprint on card does not match requested one\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2235
+#: scd/app-openpgp.c:2236
 #, fuzzy, c-format
 msgid "card does not support digest algorithm %s\n"
 msgstr "podpis %s, hashovací algoritmus %s\n"
 
-#: scd/app-openpgp.c:2296
+#: scd/app-openpgp.c:2297
 #, c-format
 msgid "signatures created so far: %lu\n"
 msgstr "dosud vytvoøené podpisy: %lu\n"
 
-#: scd/app-openpgp.c:2541
+#: scd/app-openpgp.c:2542
 msgid ""
 "verification of Admin PIN is currently prohibited through this command\n"
 msgstr ""
 "ovìøení administrátorského PIN je nyní prostøednictvím tohoto pøíkazu "
 "zakázáno\n"
 
-#: scd/app-openpgp.c:2614 scd/app-openpgp.c:2624
+#: scd/app-openpgp.c:2615 scd/app-openpgp.c:2625
 #, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr "pøístup na %s se nezdaøil - vadná OpenPGP karta?\n"
index bba59be..bb6d660 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg 1.0.0h\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\n"
 "PO-Revision-Date: 2003-12-03 16:11+0100\n"
 "Last-Translator: Birger Langkjer <birger.langkjer@image.dk>\n"
 "Language-Team: Danish <dansk@klid.dk>\n"
@@ -76,8 +76,8 @@ msgstr "d
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr "valgte cifferalgoritme %d er ugyldig\n"
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, fuzzy, c-format
 msgid "can't create `%s': %s\n"
@@ -85,7 +85,7 @@ msgstr "kan ikke oprette %s: %s\n"
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -862,14 +862,14 @@ msgstr "hemmelig n
 msgid "OpenPGP card no. %s detected\n"
 msgstr ""
 
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 msgid "can't do this in batch mode\n"
 msgstr ""
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr "Dit valg? "
 
@@ -1007,21 +1007,21 @@ msgstr "ingen gyldig OpenPGP data fundet.\n"
 msgid "error getting current key info: %s\n"
 msgstr "fejl ved skrivning af nøglering `%s': %s\n"
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 #, fuzzy
 msgid "Replace existing key? (y/N) "
 msgstr "Vil du gerne signere? "
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr ""
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 #, fuzzy
 msgid "Replace existing keys? (y/N) "
 msgstr "Vil du gerne signere? "
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1029,136 +1029,136 @@ msgid ""
 "You should change them using the command --change-pin\n"
 msgstr ""
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 #, fuzzy
 msgid "Please select the type of key to generate:\n"
 msgstr "Vælg venligst hvilken slags nøgle du vil have:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 #, fuzzy
 msgid "   (1) Signature key\n"
 msgstr "Denne nøgle er ikke beskyttet.\n"
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 #, fuzzy
 msgid "   (2) Encryption key\n"
 msgstr "   (%d) ElGamal (kryptér kun)\n"
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr ""
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr "Ugyldigt valg.\n"
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 #, fuzzy
 msgid "Please select where to store the key:\n"
 msgstr "rev- forkert nøgletilbagekald\n"
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 #, fuzzy
 msgid "unknown key protection algorithm\n"
 msgstr "ukendt kompressionsalgoritme"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 #, fuzzy
 msgid "secret parts of key are not available\n"
 msgstr "hemmelig nøgle ikke tilgængelig"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 #, fuzzy
 msgid "secret key already stored on a card\n"
 msgstr "udelod: hemmelig nøgle er allerede tilstede\n"
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr "afslut denne menu"
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 #, fuzzy
 msgid "show admin commands"
 msgstr "konfliktende kommandoer\n"
 
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "vis denne hjælp"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 #, fuzzy
 msgid "list all available data"
 msgstr "Ingen hjælp tilgængelig"
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr ""
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr ""
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr ""
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 #, fuzzy
 msgid "change the login name"
 msgstr "ændr udløbsdatoen"
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 #, fuzzy
 msgid "change the language preferences"
 msgstr "vis præferencer"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr ""
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 #, fuzzy
 msgid "change a CA fingerprint"
 msgstr "vis fingeraftryk"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "toggle the signature force PIN flag"
 msgstr ""
 
-#: g10/card-util.c:1330
+#: g10/card-util.c:1320
 #, fuzzy
 msgid "generate new keys"
 msgstr "generér et nyt nøglepar"
 
-#: g10/card-util.c:1331
+#: g10/card-util.c:1321
 msgid "menu to change or unblock the PIN"
 msgstr ""
 
-#: g10/card-util.c:1332
+#: g10/card-util.c:1322
 msgid "verify the PIN and list all data"
 msgstr ""
 
-#: g10/card-util.c:1452 g10/keyedit.c:1634
+#: g10/card-util.c:1442 g10/keyedit.c:1634
 msgid "Command> "
 msgstr ""
 
-#: g10/card-util.c:1490
+#: g10/card-util.c:1480
 #, fuzzy
 msgid "Admin-only command\n"
 msgstr "konfliktende kommandoer\n"
 
-#: g10/card-util.c:1521
+#: g10/card-util.c:1511
 #, fuzzy
 msgid "Admin commands are allowed\n"
 msgstr "konfliktende kommandoer\n"
 
-#: g10/card-util.c:1523
+#: g10/card-util.c:1513
 #, fuzzy
 msgid "Admin commands are not allowed\n"
 msgstr "skriver hemmeligt certifikat til '%s'\n"
 
-#: g10/card-util.c:1597 g10/keyedit.c:2255
+#: g10/card-util.c:1587 g10/keyedit.c:2255
 msgid "Invalid command  (try \"help\")\n"
 msgstr ""
 
@@ -1443,7 +1443,7 @@ msgstr ""
 msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
 msgstr ""
 
-#: g10/getkey.c:2391 g10/keyedit.c:3721
+#: g10/getkey.c:2391 g10/keyedit.c:3726
 #, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
 msgstr ""
@@ -1867,7 +1867,7 @@ msgstr "%s er ikke et gyldigt tegns
 msgid "`%s' is not a valid character set\n"
 msgstr "%s er ikke et gyldigt tegnsæt\n"
 
-#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4078
+#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4084
 #, fuzzy
 msgid "could not parse keyserver URL\n"
 msgstr "importér nøgler fra en nøgleserver: %s\n"
@@ -3250,8 +3250,8 @@ msgstr ""
 msgid "Really sign? (y/N) "
 msgstr "Vil du gerne signere? "
 
-#: g10/keyedit.c:1066 g10/keyedit.c:4797 g10/keyedit.c:4888 g10/keyedit.c:4952
-#: g10/keyedit.c:5013 g10/sign.c:348
+#: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
+#: g10/keyedit.c:5019 g10/sign.c:348
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "signering fejlede: %s\n"
@@ -3260,21 +3260,21 @@ msgstr "signering fejlede: %s\n"
 msgid "Key has only stub or on-card key items - no passphrase to change.\n"
 msgstr ""
 
-#: g10/keyedit.c:1142 g10/keygen.c:3399
+#: g10/keyedit.c:1142 g10/keygen.c:3516
 msgid "This key is not protected.\n"
 msgstr "Denne nøgle er ikke beskyttet.\n"
 
-#: g10/keyedit.c:1146 g10/keygen.c:3387 g10/revoke.c:538
+#: g10/keyedit.c:1146 g10/keygen.c:3503 g10/revoke.c:538
 #, fuzzy
 msgid "Secret parts of primary key are not available.\n"
 msgstr "hemmelig nøgle ikke tilgængelig"
 
-#: g10/keyedit.c:1150 g10/keygen.c:3402
+#: g10/keyedit.c:1150 g10/keygen.c:3519
 #, fuzzy
 msgid "Secret parts of primary key are stored on-card.\n"
 msgstr "hemmelig nøgle ikke tilgængelig"
 
-#: g10/keyedit.c:1154 g10/keygen.c:3406
+#: g10/keyedit.c:1154 g10/keygen.c:3523
 msgid "Key is protected.\n"
 msgstr "Nøglen er beskyttet.\n"
 
@@ -3289,7 +3289,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keyedit.c:1199 g10/keygen.c:2067
+#: g10/keyedit.c:1199 g10/keygen.c:2116
 #, fuzzy
 msgid "passphrase not correctly repeated; try again"
 msgstr "kodesætningen blev ikke ordentlig gentaget; prøv igen.\n"
@@ -3907,321 +3907,321 @@ msgstr ""
 msgid "No corresponding signature in secret ring\n"
 msgstr ""
 
-#: g10/keyedit.c:3682
+#: g10/keyedit.c:3687
 #, fuzzy, c-format
 msgid "signing subkey %s is already cross-certified\n"
 msgstr "Nøglen er beskyttet.\n"
 
-#: g10/keyedit.c:3688
+#: g10/keyedit.c:3693
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr ""
 
-#: g10/keyedit.c:3850
+#: g10/keyedit.c:3856
 #, fuzzy
 msgid "Please select exactly one user ID.\n"
 msgstr "Vælg venligst hvilken slags nøgle du vil have:\n"
 
-#: g10/keyedit.c:3889 g10/keyedit.c:3999 g10/keyedit.c:4119 g10/keyedit.c:4260
+#: g10/keyedit.c:3895 g10/keyedit.c:4005 g10/keyedit.c:4125 g10/keyedit.c:4266
 #, fuzzy, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
 msgstr "nøgle %08lX: ingen gyldige bruger-id'er\n"
 
-#: g10/keyedit.c:4060
+#: g10/keyedit.c:4066
 msgid "Enter your preferred keyserver URL: "
 msgstr ""
 
-#: g10/keyedit.c:4140
+#: g10/keyedit.c:4146
 #, fuzzy
 msgid "Are you sure you want to replace it? (y/N) "
 msgstr "Er du sikker på at de vil benytte denne nøglestørrelse? "
 
-#: g10/keyedit.c:4141
+#: g10/keyedit.c:4147
 #, fuzzy
 msgid "Are you sure you want to delete it? (y/N) "
 msgstr "Er du sikker på at de vil benytte denne nøglestørrelse? "
 
-#: g10/keyedit.c:4203
+#: g10/keyedit.c:4209
 msgid "Enter the notation: "
 msgstr ""
 
-#: g10/keyedit.c:4352
+#: g10/keyedit.c:4358
 #, fuzzy
 msgid "Proceed? (y/N) "
 msgstr "Overskriv (j/N)? "
 
-#: g10/keyedit.c:4416
+#: g10/keyedit.c:4422
 #, c-format
 msgid "No user ID with index %d\n"
 msgstr "Ingen bruger-id med indeks %d\n"
 
-#: g10/keyedit.c:4474
+#: g10/keyedit.c:4480
 #, fuzzy, c-format
 msgid "No user ID with hash %s\n"
 msgstr "Ingen bruger-id med indeks %d\n"
 
-#: g10/keyedit.c:4501
+#: g10/keyedit.c:4507
 #, fuzzy, c-format
 msgid "No subkey with index %d\n"
 msgstr "Ingen bruger-id med indeks %d\n"
 
-#: g10/keyedit.c:4636
+#: g10/keyedit.c:4642
 #, fuzzy, c-format
 msgid "user ID: \"%s\"\n"
 msgstr "bruger-id: \""
 
-#: g10/keyedit.c:4639 g10/keyedit.c:4703 g10/keyedit.c:4746
+#: g10/keyedit.c:4645 g10/keyedit.c:4709 g10/keyedit.c:4752
 #, c-format
 msgid "signed by your key %s on %s%s%s\n"
 msgstr ""
 
-#: g10/keyedit.c:4641 g10/keyedit.c:4705 g10/keyedit.c:4748
+#: g10/keyedit.c:4647 g10/keyedit.c:4711 g10/keyedit.c:4754
 msgid " (non-exportable)"
 msgstr ""
 
-#: g10/keyedit.c:4645
+#: g10/keyedit.c:4651
 #, fuzzy, c-format
 msgid "This signature expired on %s.\n"
 msgstr "Denne nøgle er ikke beskyttet.\n"
 
-#: g10/keyedit.c:4649
+#: g10/keyedit.c:4655
 #, fuzzy
 msgid "Are you sure you still want to revoke it? (y/N) "
 msgstr "Er du sikker på at de vil benytte denne nøglestørrelse? "
 
-#: g10/keyedit.c:4653
+#: g10/keyedit.c:4659
 #, fuzzy
 msgid "Create a revocation certificate for this signature? (y/N) "
 msgstr "Generér en annullérbar certifikat"
 
-#: g10/keyedit.c:4680
+#: g10/keyedit.c:4686
 #, c-format
 msgid "You have signed these user IDs on key %s:\n"
 msgstr ""
 
-#: g10/keyedit.c:4706
+#: g10/keyedit.c:4712
 #, fuzzy
 msgid " (non-revocable)"
 msgstr "signér en nøgle lokalt"
 
-#: g10/keyedit.c:4713
+#: g10/keyedit.c:4719
 #, fuzzy, c-format
 msgid "revoked by your key %s on %s\n"
 msgstr "ADVARSEL: Denne nøgle er blevet annulleret af dets ejer!\n"
 
-#: g10/keyedit.c:4735
+#: g10/keyedit.c:4741
 msgid "You are about to revoke these signatures:\n"
 msgstr ""
 
-#: g10/keyedit.c:4755
+#: g10/keyedit.c:4761
 #, fuzzy
 msgid "Really create the revocation certificates? (y/N) "
 msgstr "Generér en annullérbar certifikat"
 
-#: g10/keyedit.c:4785
+#: g10/keyedit.c:4791
 msgid "no secret key\n"
 msgstr ""
 
-#: g10/keyedit.c:4855
+#: g10/keyedit.c:4861
 #, fuzzy, c-format
 msgid "user ID \"%s\" is already revoked\n"
 msgstr "Nøglen er beskyttet.\n"
 
-#: g10/keyedit.c:4872
+#: g10/keyedit.c:4878
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
 msgstr ""
 
-#: g10/keyedit.c:4936
+#: g10/keyedit.c:4942
 #, fuzzy, c-format
 msgid "Key %s is already revoked.\n"
 msgstr "Nøglen er beskyttet.\n"
 
-#: g10/keyedit.c:4998
+#: g10/keyedit.c:5004
 #, fuzzy, c-format
 msgid "Subkey %s is already revoked.\n"
 msgstr "Nøglen er beskyttet.\n"
 
-#: g10/keyedit.c:5093
+#: g10/keyedit.c:5099
 #, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
 msgstr ""
 
-#: g10/keygen.c:263
+#: g10/keygen.c:268
 #, fuzzy, c-format
 msgid "preference `%s' duplicated\n"
 msgstr "vis præferencer"
 
-#: g10/keygen.c:270
+#: g10/keygen.c:275
 #, fuzzy
 msgid "too many cipher preferences\n"
 msgstr "vis præferencer"
 
-#: g10/keygen.c:272
+#: g10/keygen.c:277
 #, fuzzy
 msgid "too many digest preferences\n"
 msgstr "vis præferencer"
 
-#: g10/keygen.c:274
+#: g10/keygen.c:279
 #, fuzzy
 msgid "too many compression preferences\n"
 msgstr "vis præferencer"
 
-#: g10/keygen.c:399
+#: g10/keygen.c:404
 #, fuzzy, c-format
 msgid "invalid item `%s' in preference string\n"
 msgstr "Ugyldige bogstaver i navn\n"
 
-#: g10/keygen.c:873
+#: g10/keygen.c:884
 #, fuzzy
 msgid "writing direct signature\n"
 msgstr "skriver selvsignatur\n"
 
-#: g10/keygen.c:912
+#: g10/keygen.c:926
 msgid "writing self signature\n"
 msgstr "skriver selvsignatur\n"
 
-#: g10/keygen.c:962
+#: g10/keygen.c:983
 msgid "writing key binding signature\n"
 msgstr ""
 
-#: g10/keygen.c:1123 g10/keygen.c:1237 g10/keygen.c:1242 g10/keygen.c:1375
-#: g10/keygen.c:2946
+#: g10/keygen.c:1151 g10/keygen.c:1262 g10/keygen.c:1267 g10/keygen.c:1402
+#: g10/keygen.c:3016
 #, fuzzy, c-format
 msgid "keysize invalid; using %u bits\n"
 msgstr "Ønsket nøglestørrelse er %u bit\n"
 
-#: g10/keygen.c:1128 g10/keygen.c:1248 g10/keygen.c:1380 g10/keygen.c:2952
+#: g10/keygen.c:1157 g10/keygen.c:1273 g10/keygen.c:1408 g10/keygen.c:3022
 #, fuzzy, c-format
 msgid "keysize rounded up to %u bits\n"
 msgstr "rundet op til %u bit\n"
 
-#: g10/keygen.c:1274
+#: g10/keygen.c:1299
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
 
-#: g10/keygen.c:1490
+#: g10/keygen.c:1519
 #, fuzzy
 msgid "Sign"
 msgstr "signér"
 
-#: g10/keygen.c:1493
+#: g10/keygen.c:1522
 msgid "Certify"
 msgstr ""
 
-#: g10/keygen.c:1496
+#: g10/keygen.c:1525
 #, fuzzy
 msgid "Encrypt"
 msgstr "kryptér data"
 
-#: g10/keygen.c:1499
+#: g10/keygen.c:1528
 msgid "Authenticate"
 msgstr ""
 
-#: g10/keygen.c:1507
+#: g10/keygen.c:1536
 msgid "SsEeAaQq"
 msgstr ""
 
-#: g10/keygen.c:1526
+#: g10/keygen.c:1555
 #, c-format
 msgid "Possible actions for a %s key: "
 msgstr ""
 
-#: g10/keygen.c:1530
+#: g10/keygen.c:1559
 msgid "Current allowed actions: "
 msgstr ""
 
-#: g10/keygen.c:1535
+#: g10/keygen.c:1564
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
 msgstr ""
 
-#: g10/keygen.c:1538
+#: g10/keygen.c:1567
 #, fuzzy, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
 msgstr "   (%d) ElGamal (kryptér kun)\n"
 
-#: g10/keygen.c:1541
+#: g10/keygen.c:1570
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
 msgstr ""
 
-#: g10/keygen.c:1544
+#: g10/keygen.c:1573
 #, c-format
 msgid "   (%c) Finished\n"
 msgstr ""
 
-#: g10/keygen.c:1600
+#: g10/keygen.c:1629
 msgid "Please select what kind of key you want:\n"
 msgstr "Vælg venligst hvilken slags nøgle du vil have:\n"
 
-#: g10/keygen.c:1602
+#: g10/keygen.c:1631
 #, fuzzy, c-format
 msgid "   (%d) DSA and Elgamal (default)\n"
 msgstr "   (%d) DSA og ElGamal (standard)\n"
 
-#: g10/keygen.c:1603
+#: g10/keygen.c:1632
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (signér kun)\n"
 
-#: g10/keygen.c:1605
+#: g10/keygen.c:1634
 #, fuzzy, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
 msgstr "   (%d) ElGamal (kryptér kun)\n"
 
-#: g10/keygen.c:1607
+#: g10/keygen.c:1636
 #, fuzzy, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (kryptér kun)\n"
 
-#: g10/keygen.c:1608
+#: g10/keygen.c:1637
 #, fuzzy, c-format
 msgid "   (%d) RSA (sign only)\n"
 msgstr "   (%d) DSA (signér kun)\n"
 
-#: g10/keygen.c:1610
+#: g10/keygen.c:1639
 #, fuzzy, c-format
 msgid "   (%d) RSA (encrypt only)\n"
 msgstr "   (%d) ElGamal (kryptér kun)\n"
 
-#: g10/keygen.c:1612
+#: g10/keygen.c:1641
 #, fuzzy, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
 msgstr "   (%d) ElGamal (kryptér kun)\n"
 
-#: g10/keygen.c:1681
+#: g10/keygen.c:1710
 #, fuzzy, c-format
 msgid "DSA keypair will have %u bits.\n"
 msgstr "DSA nøglepar vil have 1024 bit.\n"
 
-#: g10/keygen.c:1691
+#: g10/keygen.c:1720
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
 msgstr ""
 
-#: g10/keygen.c:1698
+#: g10/keygen.c:1727
 #, fuzzy, c-format
 msgid "What keysize do you want? (%u) "
 msgstr "Hvilken nøglestørrelse ønsker du? (1024) "
 
-#: g10/keygen.c:1712
+#: g10/keygen.c:1741
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
 msgstr ""
 
-#: g10/keygen.c:1718
+#: g10/keygen.c:1747
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "Ønsket nøglestørrelse er %u bit\n"
 
-#: g10/keygen.c:1723 g10/keygen.c:1728
+#: g10/keygen.c:1752 g10/keygen.c:1757
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "rundet op til %u bit\n"
 
-#: g10/keygen.c:1777
+#: g10/keygen.c:1826
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -4231,7 +4231,7 @@ msgid ""
 "      <n>y = key expires in n years\n"
 msgstr ""
 
-#: g10/keygen.c:1788
+#: g10/keygen.c:1837
 msgid ""
 "Please specify how long the signature should be valid.\n"
 "         0 = signature does not expire\n"
@@ -4241,52 +4241,52 @@ msgid ""
 "      <n>y = signature expires in n years\n"
 msgstr ""
 
-#: g10/keygen.c:1811
+#: g10/keygen.c:1860
 msgid "Key is valid for? (0) "
 msgstr "Nøgle er gyldig for? (0) "
 
-#: g10/keygen.c:1816
+#: g10/keygen.c:1865
 #, fuzzy, c-format
 msgid "Signature is valid for? (%s) "
 msgstr "Nøgle er gyldig for? (0) "
 
-#: g10/keygen.c:1834
+#: g10/keygen.c:1883
 msgid "invalid value\n"
 msgstr "ugyldig værdi\n"
 
-#: g10/keygen.c:1841
+#: g10/keygen.c:1890
 #, fuzzy
 msgid "Key does not expire at all\n"
 msgstr "Nøglen udløber aldrig\n"
 
-#: g10/keygen.c:1842
+#: g10/keygen.c:1891
 #, fuzzy
 msgid "Signature does not expire at all\n"
 msgstr "Nøglen udløber aldrig\n"
 
-#: g10/keygen.c:1847
+#: g10/keygen.c:1896
 #, fuzzy, c-format
 msgid "Key expires at %s\n"
 msgstr "Nøgle udløber d. %s\n"
 
-#: g10/keygen.c:1848
+#: g10/keygen.c:1897
 #, fuzzy, c-format
 msgid "Signature expires at %s\n"
 msgstr "Denne nøgle er ikke beskyttet.\n"
 
-#: g10/keygen.c:1852
+#: g10/keygen.c:1901
 msgid ""
 "Your system can't display dates beyond 2038.\n"
 "However, it will be correctly handled up to 2106.\n"
 msgstr ""
 
 # virker j automatisk istedetfor y?
-#: g10/keygen.c:1859
+#: g10/keygen.c:1908
 #, fuzzy
 msgid "Is this correct? (y/N) "
 msgstr "Er dette korrekt (j/n)? "
 
-#: g10/keygen.c:1882
+#: g10/keygen.c:1931
 msgid ""
 "\n"
 "You need a user ID to identify your key; the software constructs the user "
@@ -4296,44 +4296,44 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:1895
+#: g10/keygen.c:1944
 msgid "Real name: "
 msgstr "Rigtige navn: "
 
-#: g10/keygen.c:1903
+#: g10/keygen.c:1952
 msgid "Invalid character in name\n"
 msgstr "Ugyldige bogstaver i navn\n"
 
-#: g10/keygen.c:1905
+#: g10/keygen.c:1954
 msgid "Name may not start with a digit\n"
 msgstr "Navn må ikke starte med et tal\n"
 
-#: g10/keygen.c:1907
+#: g10/keygen.c:1956
 msgid "Name must be at least 5 characters long\n"
 msgstr "Navn skal være mindst 5 bogstaver langt\n"
 
-#: g10/keygen.c:1915
+#: g10/keygen.c:1964
 msgid "Email address: "
 msgstr "Epostadresse: "
 
-#: g10/keygen.c:1921
+#: g10/keygen.c:1970
 msgid "Not a valid email address\n"
 msgstr "Ikke en gyldig epostadresse\n"
 
-#: g10/keygen.c:1929
+#: g10/keygen.c:1978
 msgid "Comment: "
 msgstr "Kommentar: "
 
-#: g10/keygen.c:1935
+#: g10/keygen.c:1984
 msgid "Invalid character in comment\n"
 msgstr "Ugyldigt tegn i kommentar\n"
 
-#: g10/keygen.c:1957
+#: g10/keygen.c:2006
 #, c-format
 msgid "You are using the `%s' character set.\n"
 msgstr "Du bruger '%s' tegnsættet.\n"
 
-#: g10/keygen.c:1963
+#: g10/keygen.c:2012
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -4344,7 +4344,7 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:1968
+#: g10/keygen.c:2017
 msgid "Please don't put the email address into the real name or the comment\n"
 msgstr ""
 
@@ -4359,24 +4359,24 @@ msgstr ""
 #. o = Okay (ready, continue)
 #. q = Quit
 #.
-#: g10/keygen.c:1984
+#: g10/keygen.c:2033
 msgid "NnCcEeOoQq"
 msgstr "NnCcEeOoQq"
 
-#: g10/keygen.c:1994
+#: g10/keygen.c:2043
 #, fuzzy
 msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
 msgstr "Ændr (N)avn, (K)ommentar, (E)post eller (O)kay/(Q)vit? "
 
-#: g10/keygen.c:1995
+#: g10/keygen.c:2044
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "Ændr (N)avn, (K)ommentar, (E)post eller (O)kay/(Q)vit? "
 
-#: g10/keygen.c:2014
+#: g10/keygen.c:2063
 msgid "Please correct the error first\n"
 msgstr ""
 
-#: g10/keygen.c:2053
+#: g10/keygen.c:2102
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -4384,12 +4384,12 @@ msgstr ""
 "Du skal bruge en kodesætning til at beskytte din hemmelige nøgle.\n"
 "\n"
 
-#: g10/keygen.c:2068
+#: g10/keygen.c:2117
 #, c-format
 msgid "%s.\n"
 msgstr ""
 
-#: g10/keygen.c:2074
+#: g10/keygen.c:2123
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "I will do it anyway.  You can change your passphrase at any time,\n"
@@ -4397,7 +4397,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:2096
+#: g10/keygen.c:2147
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
@@ -4405,92 +4405,92 @@ msgid ""
 "generator a better chance to gain enough entropy.\n"
 msgstr ""
 
-#: g10/keygen.c:2886 g10/keygen.c:2913
+#: g10/keygen.c:2956 g10/keygen.c:2983
 msgid "Key generation canceled.\n"
 msgstr "Nøgleoprettelse annulleret.\n"
 
-#: g10/keygen.c:3106 g10/keygen.c:3251
+#: g10/keygen.c:3188 g10/keygen.c:3355
 #, fuzzy, c-format
 msgid "writing public key to `%s'\n"
 msgstr "skriver offentligt certifikat til '%s'\n"
 
-#: g10/keygen.c:3108 g10/keygen.c:3254
+#: g10/keygen.c:3190 g10/keygen.c:3358
 #, fuzzy, c-format
 msgid "writing secret key stub to `%s'\n"
 msgstr "skriver hemmeligt certifikat til '%s'\n"
 
-#: g10/keygen.c:3111 g10/keygen.c:3257
+#: g10/keygen.c:3193 g10/keygen.c:3361
 #, fuzzy, c-format
 msgid "writing secret key to `%s'\n"
 msgstr "skriver hemmeligt certifikat til '%s'\n"
 
-#: g10/keygen.c:3240
+#: g10/keygen.c:3342
 #, fuzzy, c-format
 msgid "no writable public keyring found: %s\n"
 msgstr "nøgle %08lX: offentlig nøgle ikke fundet: %s\n"
 
-#: g10/keygen.c:3246
+#: g10/keygen.c:3349
 #, fuzzy, c-format
 msgid "no writable secret keyring found: %s\n"
 msgstr "skriver hemmeligt certifikat til '%s'\n"
 
-#: g10/keygen.c:3264
+#: g10/keygen.c:3369
 #, fuzzy, c-format
 msgid "error writing public keyring `%s': %s\n"
 msgstr "fejl ved skrivning af nøglering `%s': %s\n"
 
-#: g10/keygen.c:3271
+#: g10/keygen.c:3377
 #, fuzzy, c-format
 msgid "error writing secret keyring `%s': %s\n"
 msgstr "fejl ved skrivning af nøglering `%s': %s\n"
 
-#: g10/keygen.c:3294
+#: g10/keygen.c:3404
 msgid "public and secret key created and signed.\n"
 msgstr "offentlig og hemmelig nøgle oprettet og signeret.\n"
 
-#: g10/keygen.c:3305
+#: g10/keygen.c:3415
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--edit-key\" to generate a subkey for this purpose.\n"
 msgstr ""
 
-#: g10/keygen.c:3317 g10/keygen.c:3452 g10/keygen.c:3568
+#: g10/keygen.c:3428 g10/keygen.c:3573 g10/keygen.c:3694
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr ""
 
-#: g10/keygen.c:3370 g10/keygen.c:3503 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
 msgstr ""
 
-#: g10/keygen.c:3372 g10/keygen.c:3505 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
 msgstr ""
 
-#: g10/keygen.c:3381 g10/keygen.c:3516
+#: g10/keygen.c:3496 g10/keygen.c:3637
 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
 msgstr ""
 
-#: g10/keygen.c:3420 g10/keygen.c:3549
+#: g10/keygen.c:3537 g10/keygen.c:3670
 #, fuzzy
 msgid "Really create? (y/N) "
 msgstr "Vil du virkelig oprette?"
 
-#: g10/keygen.c:3712
+#: g10/keygen.c:3843
 #, fuzzy, c-format
 msgid "storing key onto card failed: %s\n"
 msgstr "fjernelse af beskyttelse fejlede: %s\n"
 
-#: g10/keygen.c:3760
+#: g10/keygen.c:3891
 #, fuzzy, c-format
 msgid "can't create backup file `%s': %s\n"
 msgstr "kan ikke oprette %s: %s\n"
 
-#: g10/keygen.c:3786
+#: g10/keygen.c:3917
 #, fuzzy, c-format
 msgid "NOTE: backup of card key saved to `%s'\n"
 msgstr "hemmelige nøgler import: %lu\n"
@@ -6342,15 +6342,15 @@ msgstr "ingen standard offentlig n
 msgid "reading public key failed: %s\n"
 msgstr "fjernelse af beskyttelse fejlede: %s\n"
 
-#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2046
+#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2047
 msgid "response does not contain the public key data\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2054
+#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2055
 msgid "response does not contain the RSA modulus\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2064
+#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2065
 msgid "response does not contain the RSA public exponent\n"
 msgstr ""
 
@@ -6370,7 +6370,7 @@ msgid "PIN for CHV%d is too short; minimum length is %d\n"
 msgstr ""
 
 #: scd/app-openpgp.c:1384 scd/app-openpgp.c:1424 scd/app-openpgp.c:1499
-#: scd/app-openpgp.c:2317
+#: scd/app-openpgp.c:2318
 #, fuzzy, c-format
 msgid "verify CHV%d failed: %s\n"
 msgstr "påklædning af beskyttelse fejlede: %s\n"
@@ -6379,11 +6379,11 @@ msgstr "p
 msgid "access to admin commands is not configured\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2527
+#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2528
 msgid "error retrieving CHV status from card\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2536
+#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2537
 msgid "card is permanently locked!\n"
 msgstr ""
 
@@ -6415,12 +6415,12 @@ msgstr ""
 msgid "error getting new PIN: %s\n"
 msgstr "fejl ved oprettelse af kodesætning: %s\n"
 
-#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2132
+#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2133
 #, fuzzy
 msgid "error reading application data\n"
 msgstr "fejl ved læsning af '%s': %s\n"
 
-#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2139
+#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2140
 #, fuzzy
 msgid "error reading fingerprint DO\n"
 msgstr "fejl i trailerlinie\n"
@@ -6464,44 +6464,44 @@ msgstr ""
 msgid "failed to store the key: %s\n"
 msgstr "kunne ikke initialisere TillidsDB: %s\n"
 
-#: scd/app-openpgp.c:2023
+#: scd/app-openpgp.c:2024
 msgid "please wait while key is being generated ...\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2037
+#: scd/app-openpgp.c:2038
 #, fuzzy
 msgid "generating key failed\n"
 msgstr "fjernelse af beskyttelse fejlede: %s\n"
 
-#: scd/app-openpgp.c:2040
+#: scd/app-openpgp.c:2041
 #, fuzzy, c-format
 msgid "key generation completed (%d seconds)\n"
 msgstr "Nøgleoprettelse annulleret.\n"
 
-#: scd/app-openpgp.c:2097
+#: scd/app-openpgp.c:2098
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2147
+#: scd/app-openpgp.c:2148
 msgid "fingerprint on card does not match requested one\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2235
+#: scd/app-openpgp.c:2236
 #, fuzzy, c-format
 msgid "card does not support digest algorithm %s\n"
 msgstr "%s signatur fra: %s\n"
 
-#: scd/app-openpgp.c:2296
+#: scd/app-openpgp.c:2297
 #, c-format
 msgid "signatures created so far: %lu\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2541
+#: scd/app-openpgp.c:2542
 msgid ""
 "verification of Admin PIN is currently prohibited through this command\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2614 scd/app-openpgp.c:2624
+#: scd/app-openpgp.c:2615 scd/app-openpgp.c:2625
 #, fuzzy, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr "ingen gyldig OpenPGP data fundet.\n"
index b0dd648..4b597fb 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-1.9.90\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\n"
 "PO-Revision-Date: 2007-07-04 21:44+0200\n"
 "Last-Translator: Walter Koch <koch@u32.de>\n"
 "Language-Team: German <de@li.org>\n"
@@ -77,8 +77,8 @@ msgstr "Passphrase"
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr "SSH Schlüssel von mehr als %d Bits werden nicht unterstützt\n"
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, c-format
 msgid "can't create `%s': %s\n"
@@ -86,7 +86,7 @@ msgstr "'%s' kann nicht erzeugt werden: %s\n"
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -862,14 +862,14 @@ msgstr "OpenPGP Karte ist nicht vorhanden: %s\n"
 msgid "OpenPGP card no. %s detected\n"
 msgstr "OpenPGP Karte Nr. %s erkannt\n"
 
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 msgid "can't do this in batch mode\n"
 msgstr "Dies kann im Batchmodus nicht durchgeführt werden.\n"
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr "Ihre Auswahl? "
 
@@ -997,20 +997,20 @@ msgstr "Keine gültige OpenPGP-Karte"
 msgid "error getting current key info: %s\n"
 msgstr "Fehler beim Holen der aktuellen Schlüsselinfo: %s\n"
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 msgid "Replace existing key? (y/N) "
 msgstr "Vorhandenen Schlüssel ersetzen? (j/N) "
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr ""
 "Sicherung des Verschlüsselungsschlüssel außerhalb der Karte erstellen? (J/n) "
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 msgid "Replace existing keys? (y/N) "
 msgstr "Vorhandene Schlüssel ersetzen? (j/N) "
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1021,120 +1021,120 @@ msgstr ""
 "   PIN = `%s'     Admin-PIN = `%s'\n"
 "Sie sollten sie mittels des Befehls --change-pin ändern\n"
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 msgid "Please select the type of key to generate:\n"
 msgstr "Bitte wählen Sie die Art des Schlüssel, der erzeugt werden soll:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 msgid "   (1) Signature key\n"
 msgstr "   (1) Unterschriften-Schlüssel\n"
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 msgid "   (2) Encryption key\n"
 msgstr "   (2) Verschlüsselungs-Schlüssel\n"
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr "   (3) Authentisierungs-Schlüssel\n"
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr "Ungültige Auswahl.\n"
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 msgid "Please select where to store the key:\n"
 msgstr "Wählen Sie den Speicherort für den Schlüssel:\n"
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 msgid "unknown key protection algorithm\n"
 msgstr "Unbekanntes Schlüssel-Schutzverfahren\n"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 msgid "secret parts of key are not available\n"
 msgstr "Geheime Teile des Schlüssels sind nicht vorhanden\n"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 msgid "secret key already stored on a card\n"
 msgstr "geheimer Schlüssel ist bereits auf einer Karte gespeichert\n"
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr "Menü verlassen"
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 msgid "show admin commands"
 msgstr "Zeige Admin-Befehle"
 
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "Diese Hilfe zeigen"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 msgid "list all available data"
 msgstr "Alle vorhandenen Daten auflisten"
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr "Kartenbesitzernamen ändern"
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr "Schlüssel-holen-URL ändern"
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr "Holen des Schlüssels mittels der URL auf der Karte"
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 msgid "change the login name"
 msgstr "Ändern der Logindaten"
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 msgid "change the language preferences"
 msgstr "Ändern der Spracheinstellungen"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr "Ändern des Geschlechts des Kartenbesitzers"
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 msgid "change a CA fingerprint"
 msgstr "Ändern des CA-Fingerabdrucks"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "toggle the signature force PIN flag"
 msgstr "Umschalte des \"Signature-force-PIN\"-Schalters"
 
-#: g10/card-util.c:1330
+#: g10/card-util.c:1320
 msgid "generate new keys"
 msgstr "neue Schlüssel erzeugen"
 
-#: g10/card-util.c:1331
+#: g10/card-util.c:1321
 msgid "menu to change or unblock the PIN"
 msgstr "Menü für Ändern oder Entsperren der PIN"
 
-#: g10/card-util.c:1332
+#: g10/card-util.c:1322
 msgid "verify the PIN and list all data"
 msgstr "überprüfe die PIN und liste alle Daten auf"
 
-#: g10/card-util.c:1452 g10/keyedit.c:1634
+#: g10/card-util.c:1442 g10/keyedit.c:1634
 msgid "Command> "
 msgstr "Befehl> "
 
-#: g10/card-util.c:1490
+#: g10/card-util.c:1480
 msgid "Admin-only command\n"
 msgstr "nur-Admin Befehl\n"
 
-#: g10/card-util.c:1521
+#: g10/card-util.c:1511
 msgid "Admin commands are allowed\n"
 msgstr "Admin-Befehle sind erlaubt\n"
 
-#: g10/card-util.c:1523
+#: g10/card-util.c:1513
 msgid "Admin commands are not allowed\n"
 msgstr "Admin-Befehle sind nicht erlaubt\n"
 
-#: g10/card-util.c:1597 g10/keyedit.c:2255
+#: g10/card-util.c:1587 g10/keyedit.c:2255
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Ungültiger Befehl (versuchen Sie's mal mit \"help\")\n"
 
@@ -1436,7 +1436,7 @@ msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
 msgstr ""
 "Ungültiger Schlüssel %s, gültig gemacht per --allow-non-selfsigned-uid\n"
 
-#: g10/getkey.c:2391 g10/keyedit.c:3721
+#: g10/getkey.c:2391 g10/keyedit.c:3726
 #, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
 msgstr ""
@@ -1870,7 +1870,7 @@ msgstr "`%s' ist kein gültiges Unterschriftablaufdatum\n"
 msgid "`%s' is not a valid character set\n"
 msgstr "`%s' ist kein gültiger Zeichensatz\n"
 
-#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4078
+#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4084
 msgid "could not parse keyserver URL\n"
 msgstr "Schlüsselserver-URL konnte nicht analysiert werden\n"
 
@@ -3399,8 +3399,8 @@ msgstr "Ich habe diesen Schlüssel sehr sorgfältig überprüft.\n"
 msgid "Really sign? (y/N) "
 msgstr "Wirklich unterschreiben? (j/N) "
 
-#: g10/keyedit.c:1066 g10/keyedit.c:4797 g10/keyedit.c:4888 g10/keyedit.c:4952
-#: g10/keyedit.c:5013 g10/sign.c:348
+#: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
+#: g10/keyedit.c:5019 g10/sign.c:348
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "Beglaubigung fehlgeschlagen: %s\n"
@@ -3411,19 +3411,19 @@ msgstr ""
 "Der Schlüssel enthält nur \"stub\"- oder \"on-card\"-Schüsselelemente- keine "
 "Passphrase ist zu ändern.\n"
 
-#: g10/keyedit.c:1142 g10/keygen.c:3399
+#: g10/keyedit.c:1142 g10/keygen.c:3516
 msgid "This key is not protected.\n"
 msgstr "Dieser Schlüssel ist nicht geschützt.\n"
 
-#: g10/keyedit.c:1146 g10/keygen.c:3387 g10/revoke.c:538
+#: g10/keyedit.c:1146 g10/keygen.c:3503 g10/revoke.c:538
 msgid "Secret parts of primary key are not available.\n"
 msgstr "Geheime Teile des Haupschlüssels sind nicht vorhanden\n"
 
-#: g10/keyedit.c:1150 g10/keygen.c:3402
+#: g10/keyedit.c:1150 g10/keygen.c:3519
 msgid "Secret parts of primary key are stored on-card.\n"
 msgstr "Geheime Teile des Haupschlüssels sind auf der Karte gespeichert.\n"
 
-#: g10/keyedit.c:1154 g10/keygen.c:3406
+#: g10/keyedit.c:1154 g10/keygen.c:3523
 msgid "Key is protected.\n"
 msgstr "Schlüssel ist geschützt.\n"
 
@@ -3440,7 +3440,7 @@ msgstr ""
 "Geben Sie die neue Passphrase für diesen geheimen Schlüssel ein.\n"
 "\n"
 
-#: g10/keyedit.c:1199 g10/keygen.c:2067
+#: g10/keyedit.c:1199 g10/keygen.c:2116
 msgid "passphrase not correctly repeated; try again"
 msgstr "Passphrase wurde nicht richtig wiederholt; noch einmal versuchen"
 
@@ -4043,312 +4043,312 @@ msgstr "Sie können das Verfallsdatum eines v3-Schlüssels nicht ändern\n"
 msgid "No corresponding signature in secret ring\n"
 msgstr "Keine entsprechende Signatur im geheimen Schlüsselbund\n"
 
-#: g10/keyedit.c:3682
+#: g10/keyedit.c:3687
 #, c-format
 msgid "signing subkey %s is already cross-certified\n"
 msgstr "Signaturunterschlüssel %s ist bereits rücksigniert\n"
 
-#: g10/keyedit.c:3688
+#: g10/keyedit.c:3693
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr ""
 "Unterschlüssel %s ist des Unterschreibens nicht mächtig und braucht deshalb "
 "keine Rücksignatur\n"
 
-#: g10/keyedit.c:3850
+#: g10/keyedit.c:3856
 msgid "Please select exactly one user ID.\n"
 msgstr "Bitte genau eine User-ID auswählen.\n"
 
-#: g10/keyedit.c:3889 g10/keyedit.c:3999 g10/keyedit.c:4119 g10/keyedit.c:4260
+#: g10/keyedit.c:3895 g10/keyedit.c:4005 g10/keyedit.c:4125 g10/keyedit.c:4266
 #, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
 msgstr "Überspringen der v3 Eigenbeglaubigung von User-ID \"%s\"\n"
 
-#: g10/keyedit.c:4060
+#: g10/keyedit.c:4066
 msgid "Enter your preferred keyserver URL: "
 msgstr "Geben Sie die URL Ihres bevorzugten Schlüsselservers ein: "
 
-#: g10/keyedit.c:4140
+#: g10/keyedit.c:4146
 msgid "Are you sure you want to replace it? (y/N) "
 msgstr "Wollen Sie ihn wirklich ersetzen? (j/N) "
 
-#: g10/keyedit.c:4141
+#: g10/keyedit.c:4147
 msgid "Are you sure you want to delete it? (y/N) "
 msgstr "Wollen Sie ihn wirklich löschen? (j/N) "
 
-#: g10/keyedit.c:4203
+#: g10/keyedit.c:4209
 msgid "Enter the notation: "
 msgstr "Geben Sie die \"Notation\" ein: "
 
-#: g10/keyedit.c:4352
+#: g10/keyedit.c:4358
 msgid "Proceed? (y/N) "
 msgstr "Fortfahren (j/N)? "
 
-#: g10/keyedit.c:4416
+#: g10/keyedit.c:4422
 #, c-format
 msgid "No user ID with index %d\n"
 msgstr "Keine User-ID mit Index %d\n"
 
-#: g10/keyedit.c:4474
+#: g10/keyedit.c:4480
 #, c-format
 msgid "No user ID with hash %s\n"
 msgstr "Keine User-ID mit Hash %s\n"
 
-#: g10/keyedit.c:4501
+#: g10/keyedit.c:4507
 #, c-format
 msgid "No subkey with index %d\n"
 msgstr "Kein Unterschlüssel mit Index %d\n"
 
-#: g10/keyedit.c:4636
+#: g10/keyedit.c:4642
 #, c-format
 msgid "user ID: \"%s\"\n"
 msgstr "User-ID: \"%s\"\n"
 
-#: g10/keyedit.c:4639 g10/keyedit.c:4703 g10/keyedit.c:4746
+#: g10/keyedit.c:4645 g10/keyedit.c:4709 g10/keyedit.c:4752
 #, c-format
 msgid "signed by your key %s on %s%s%s\n"
 msgstr "   beglaubigt durch Ihren Schlüssel %s am %s%s%s\n"
 
-#: g10/keyedit.c:4641 g10/keyedit.c:4705 g10/keyedit.c:4748
+#: g10/keyedit.c:4647 g10/keyedit.c:4711 g10/keyedit.c:4754
 msgid " (non-exportable)"
 msgstr " (nicht-exportierbar)"
 
-#: g10/keyedit.c:4645
+#: g10/keyedit.c:4651
 #, c-format
 msgid "This signature expired on %s.\n"
 msgstr "Diese Unterschrift ist seit %s verfallen.\n"
 
-#: g10/keyedit.c:4649
+#: g10/keyedit.c:4655
 msgid "Are you sure you still want to revoke it? (y/N) "
 msgstr "Wollen Sie ihn immer noch widerrufen? (j/N) "
 
-#: g10/keyedit.c:4653
+#: g10/keyedit.c:4659
 msgid "Create a revocation certificate for this signature? (y/N) "
 msgstr "Ein Widerrufszertifikat für diese Unterschrift erzeugen (j/N)"
 
-#: g10/keyedit.c:4680
+#: g10/keyedit.c:4686
 #, c-format
 msgid "You have signed these user IDs on key %s:\n"
 msgstr "Sie haben folgende User-IDs des Schlüssels %s beglaubigt:\n"
 
-#: g10/keyedit.c:4706
+#: g10/keyedit.c:4712
 msgid " (non-revocable)"
 msgstr " (unwiderrufbar)"
 
-#: g10/keyedit.c:4713
+#: g10/keyedit.c:4719
 #, c-format
 msgid "revoked by your key %s on %s\n"
 msgstr "widerrufen durch Ihren Schlüssel %s um %s\n"
 
-#: g10/keyedit.c:4735
+#: g10/keyedit.c:4741
 msgid "You are about to revoke these signatures:\n"
 msgstr "Es werden nun folgende Beglaubigungen entfernt:\n"
 
-#: g10/keyedit.c:4755
+#: g10/keyedit.c:4761
 msgid "Really create the revocation certificates? (y/N) "
 msgstr "Wirklich ein Unterschrift-Widerrufszertifikat erzeugen? (j/N) "
 
-#: g10/keyedit.c:4785
+#: g10/keyedit.c:4791
 msgid "no secret key\n"
 msgstr "Kein geheimer Schlüssel\n"
 
-#: g10/keyedit.c:4855
+#: g10/keyedit.c:4861
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
 msgstr "User-ID \"%s\" ist bereits widerrufen\n"
 
-#: g10/keyedit.c:4872
+#: g10/keyedit.c:4878
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
 msgstr ""
 "WARNUNG: Eine User-ID-Unterschrift datiert mit %d Sekunden aus der Zukunft\n"
 
-#: g10/keyedit.c:4936
+#: g10/keyedit.c:4942
 #, c-format
 msgid "Key %s is already revoked.\n"
 msgstr "Schlüssel %s ist bereits widerrufen\n"
 
-#: g10/keyedit.c:4998
+#: g10/keyedit.c:5004
 #, c-format
 msgid "Subkey %s is already revoked.\n"
 msgstr "Unterschlüssel %s ist bereits widerrufen\n"
 
-#: g10/keyedit.c:5093
+#: g10/keyedit.c:5099
 #, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
 msgstr "Anzeigen einer %s Foto-ID (Größe %ld) für Schlüssel %s (User-ID %d)\n"
 
-#: g10/keygen.c:263
+#: g10/keygen.c:268
 #, c-format
 msgid "preference `%s' duplicated\n"
 msgstr "Voreinstellung `%s' ist doppelt\n"
 
-#: g10/keygen.c:270
+#: g10/keygen.c:275
 msgid "too many cipher preferences\n"
 msgstr "zu viele Verschlüsselungeinstellungen\n"
 
-#: g10/keygen.c:272
+#: g10/keygen.c:277
 msgid "too many digest preferences\n"
 msgstr "zu viele Hashvoreinstellungen\n"
 
-#: g10/keygen.c:274
+#: g10/keygen.c:279
 msgid "too many compression preferences\n"
 msgstr "zu viele Komprimierungsvoreinstellungen\n"
 
-#: g10/keygen.c:399
+#: g10/keygen.c:404
 #, c-format
 msgid "invalid item `%s' in preference string\n"
 msgstr "Ungültiges Feld `%s' in der Voreinstellungszeichenkette\n"
 
-#: g10/keygen.c:873
+#: g10/keygen.c:884
 msgid "writing direct signature\n"
 msgstr "Die \"Direct Key Signature\" wird geschrieben\n"
 
-#: g10/keygen.c:912
+#: g10/keygen.c:926
 msgid "writing self signature\n"
 msgstr "Die Eigenbeglaubigung wird geschrieben\n"
 
-#: g10/keygen.c:962
+#: g10/keygen.c:983
 msgid "writing key binding signature\n"
 msgstr "Schreiben der \"key-binding\" Signatur\n"
 
-#: g10/keygen.c:1123 g10/keygen.c:1237 g10/keygen.c:1242 g10/keygen.c:1375
-#: g10/keygen.c:2946
+#: g10/keygen.c:1151 g10/keygen.c:1262 g10/keygen.c:1267 g10/keygen.c:1402
+#: g10/keygen.c:3016
 #, c-format
 msgid "keysize invalid; using %u bits\n"
 msgstr "Ungültige Schlüssellänge; %u Bit werden verwendet\n"
 
-#: g10/keygen.c:1128 g10/keygen.c:1248 g10/keygen.c:1380 g10/keygen.c:2952
+#: g10/keygen.c:1157 g10/keygen.c:1273 g10/keygen.c:1408 g10/keygen.c:3022
 #, c-format
 msgid "keysize rounded up to %u bits\n"
 msgstr "Schlüssellänge auf %u Bit aufgerundet\n"
 
-#: g10/keygen.c:1274
+#: g10/keygen.c:1299
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
 "WARNUNG: Einige OpenPGP-Programme können einen DSA-Schlüssel dieser "
 "Digestlänge nicht verwenden\n"
 
-#: g10/keygen.c:1490
+#: g10/keygen.c:1519
 msgid "Sign"
 msgstr "Unterschr."
 
-#: g10/keygen.c:1493
+#: g10/keygen.c:1522
 msgid "Certify"
 msgstr "Zertif."
 
-#: g10/keygen.c:1496
+#: g10/keygen.c:1525
 msgid "Encrypt"
 msgstr "Verschl."
 
-#: g10/keygen.c:1499
+#: g10/keygen.c:1528
 msgid "Authenticate"
 msgstr "Authentisierung"
 
-#: g10/keygen.c:1507
+#: g10/keygen.c:1536
 msgid "SsEeAaQq"
 msgstr "UuVvAaQq"
 
-#: g10/keygen.c:1526
+#: g10/keygen.c:1555
 #, c-format
 msgid "Possible actions for a %s key: "
 msgstr "Mögliche Vorgänge eines %s-Schlüssels: "
 
-#: g10/keygen.c:1530
+#: g10/keygen.c:1559
 msgid "Current allowed actions: "
 msgstr "Derzeit erlaubte Vorgänge: "
 
-#: g10/keygen.c:1535
+#: g10/keygen.c:1564
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
 msgstr "   (%c) Umschalten der Unterschreibfähigkeit\n"
 
-#: g10/keygen.c:1538
+#: g10/keygen.c:1567
 #, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
 msgstr "   (%c) Umschalten der Verschlüsselungsfähigkeit\n"
 
-#: g10/keygen.c:1541
+#: g10/keygen.c:1570
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
 msgstr "   (%c) Umschalten der Authentisierungsfähigkeit\n"
 
-#: g10/keygen.c:1544
+#: g10/keygen.c:1573
 #, c-format
 msgid "   (%c) Finished\n"
 msgstr "   (%c) Beenden\n"
 
-#: g10/keygen.c:1600
+#: g10/keygen.c:1629
 msgid "Please select what kind of key you want:\n"
 msgstr "Bitte wählen Sie, welche Art von Schlüssel Sie möchten:\n"
 
-#: g10/keygen.c:1602
+#: g10/keygen.c:1631
 #, c-format
 msgid "   (%d) DSA and Elgamal (default)\n"
 msgstr "   (%d) DSA und Elgamal (voreingestellt)\n"
 
-#: g10/keygen.c:1603
+#: g10/keygen.c:1632
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (nur unterschreiben/beglaubigen)\n"
 
-#: g10/keygen.c:1605
+#: g10/keygen.c:1634
 #, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
 msgstr "   (%d) DSA (Leistungsfähigkeit selber einstellbar)\n"
 
-#: g10/keygen.c:1607
+#: g10/keygen.c:1636
 #, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
 msgstr "   (%d) Elgamal (nur verschlüsseln)\n"
 
-#: g10/keygen.c:1608
+#: g10/keygen.c:1637
 #, c-format
 msgid "   (%d) RSA (sign only)\n"
 msgstr "   (%d) RSA (nur signieren/beglaubigen)\n"
 
-#: g10/keygen.c:1610
+#: g10/keygen.c:1639
 #, c-format
 msgid "   (%d) RSA (encrypt only)\n"
 msgstr "   (%d) RSA (nur verschlüsseln)\n"
 
-#: g10/keygen.c:1612
+#: g10/keygen.c:1641
 #, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
 msgstr "   (%d) RSA (Leistungsfähigkeit selber einstellbar)\n"
 
-#: g10/keygen.c:1681
+#: g10/keygen.c:1710
 #, c-format
 msgid "DSA keypair will have %u bits.\n"
 msgstr "Das DSA-Schlüsselpaar wird %u Bit haben.\n"
 
-#: g10/keygen.c:1691
+#: g10/keygen.c:1720
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
 msgstr "%s-Schlüssel können zwischen %u und %u Bit lang sein.\n"
 
-#: g10/keygen.c:1698
+#: g10/keygen.c:1727
 #, c-format
 msgid "What keysize do you want? (%u) "
 msgstr "Welche Schlüssellänge wünschen Sie? (%u) "
 
-#: g10/keygen.c:1712
+#: g10/keygen.c:1741
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
 msgstr "%s-Schlüssellängen müssen im Bereich %u-%u sein\n"
 
-#: g10/keygen.c:1718
+#: g10/keygen.c:1747
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "Die verlangte Schlüssellänge beträgt %u Bit\n"
 
-#: g10/keygen.c:1723 g10/keygen.c:1728
+#: g10/keygen.c:1752 g10/keygen.c:1757
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "aufgerundet auf %u Bit\n"
 
-#: g10/keygen.c:1777
+#: g10/keygen.c:1826
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -4364,7 +4364,7 @@ msgstr ""
 "      <n>m = Schlüssel verfällt nach n Monaten\n"
 "      <n>y = Schlüssel verfällt nach n Jahren\n"
 
-#: g10/keygen.c:1788
+#: g10/keygen.c:1837
 msgid ""
 "Please specify how long the signature should be valid.\n"
 "         0 = signature does not expire\n"
@@ -4380,38 +4380,38 @@ msgstr ""
 "      <n>m = Schlüssel verfällt nach n Monaten\n"
 "      <n>y = Schlüssel verfällt nach n Jahren\n"
 
-#: g10/keygen.c:1811
+#: g10/keygen.c:1860
 msgid "Key is valid for? (0) "
 msgstr "Wie lange bleibt der Schlüssel gültig? (0) "
 
-#: g10/keygen.c:1816
+#: g10/keygen.c:1865
 #, c-format
 msgid "Signature is valid for? (%s) "
 msgstr "Wie lange bleibt die Beglaubigung gültig? (%s) "
 
-#: g10/keygen.c:1834
+#: g10/keygen.c:1883
 msgid "invalid value\n"
 msgstr "Ungültiger Wert.\n"
 
-#: g10/keygen.c:1841
+#: g10/keygen.c:1890
 msgid "Key does not expire at all\n"
 msgstr "Schlüssel verfällt nie\n"
 
-#: g10/keygen.c:1842
+#: g10/keygen.c:1891
 msgid "Signature does not expire at all\n"
 msgstr "Signature verfällt nie\n"
 
-#: g10/keygen.c:1847
+#: g10/keygen.c:1896
 #, c-format
 msgid "Key expires at %s\n"
 msgstr "Key verfällt am %s\n"
 
-#: g10/keygen.c:1848
+#: g10/keygen.c:1897
 #, c-format
 msgid "Signature expires at %s\n"
 msgstr "Unterschrift verfällt am %s\n"
 
-#: g10/keygen.c:1852
+#: g10/keygen.c:1901
 msgid ""
 "Your system can't display dates beyond 2038.\n"
 "However, it will be correctly handled up to 2106.\n"
@@ -4419,11 +4419,11 @@ msgstr ""
 "Ihr Rechner kann Daten jenseits des Jahres 2038 nicht anzeigen.\n"
 "Trotzdem werden Daten bis 2106 korrekt verarbeitet.\n"
 
-#: g10/keygen.c:1859
+#: g10/keygen.c:1908
 msgid "Is this correct? (y/N) "
 msgstr "Ist dies richtig? (j/N) "
 
-#: g10/keygen.c:1882
+#: g10/keygen.c:1931
 msgid ""
 "\n"
 "You need a user ID to identify your key; the software constructs the user "
@@ -4439,44 +4439,44 @@ msgstr ""
 "    \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
 "\n"
 
-#: g10/keygen.c:1895
+#: g10/keygen.c:1944
 msgid "Real name: "
 msgstr "Ihr Name (\"Vorname Nachname\"): "
 
-#: g10/keygen.c:1903
+#: g10/keygen.c:1952
 msgid "Invalid character in name\n"
 msgstr "Ungültiges Zeichen im Namen\n"
 
-#: g10/keygen.c:1905
+#: g10/keygen.c:1954
 msgid "Name may not start with a digit\n"
 msgstr "Der Name darf nicht mit einer Ziffer beginnen.\n"
 
-#: g10/keygen.c:1907
+#: g10/keygen.c:1956
 msgid "Name must be at least 5 characters long\n"
 msgstr "Der Name muß min. 5 Zeichen lang sein.\n"
 
-#: g10/keygen.c:1915
+#: g10/keygen.c:1964
 msgid "Email address: "
 msgstr "Email-Adresse: "
 
-#: g10/keygen.c:1921
+#: g10/keygen.c:1970
 msgid "Not a valid email address\n"
 msgstr "Diese Email-Adresse ist ungültig\n"
 
-#: g10/keygen.c:1929
+#: g10/keygen.c:1978
 msgid "Comment: "
 msgstr "Kommentar: "
 
-#: g10/keygen.c:1935
+#: g10/keygen.c:1984
 msgid "Invalid character in comment\n"
 msgstr "Ungültiges Zeichen im Kommentar.\n"
 
-#: g10/keygen.c:1957
+#: g10/keygen.c:2006
 #, c-format
 msgid "You are using the `%s' character set.\n"
 msgstr "Sie benutzen den Zeichensatz `%s'\n"
 
-#: g10/keygen.c:1963
+#: g10/keygen.c:2012
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -4487,7 +4487,7 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:1968
+#: g10/keygen.c:2017
 msgid "Please don't put the email address into the real name or the comment\n"
 msgstr "Bitte keine Emailadressen als Namen oder Kommentar verwenden\n"
 
@@ -4502,23 +4502,23 @@ msgstr "Bitte keine Emailadressen als Namen oder Kommentar verwenden\n"
 #. o = Okay (ready, continue)
 #. q = Quit
 #.
-#: g10/keygen.c:1984
+#: g10/keygen.c:2033
 msgid "NnCcEeOoQq"
 msgstr "NnKkEeFfBb"
 
-#: g10/keygen.c:1994
+#: g10/keygen.c:2043
 msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
 msgstr "Ändern: (N)ame, (K)ommentar, (E)-Mail oder (B)eenden? "
 
-#: g10/keygen.c:1995
+#: g10/keygen.c:2044
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? "
 
-#: g10/keygen.c:2014
+#: g10/keygen.c:2063
 msgid "Please correct the error first\n"
 msgstr "Bitte beseitigen Sie zuerst den Fehler\n"
 
-#: g10/keygen.c:2053
+#: g10/keygen.c:2102
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -4526,12 +4526,12 @@ msgstr ""
 "Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen.\n"
 "\n"
 
-#: g10/keygen.c:2068
+#: g10/keygen.c:2117
 #, c-format
 msgid "%s.\n"
 msgstr "%s.\n"
 
-#: g10/keygen.c:2074
+#: g10/keygen.c:2123
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "I will do it anyway.  You can change your passphrase at any time,\n"
@@ -4544,7 +4544,7 @@ msgstr ""
 "aufrufen.\n"
 "\n"
 
-#: g10/keygen.c:2096
+#: g10/keygen.c:2147
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
@@ -4555,50 +4555,50 @@ msgstr ""
 "unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n"
 "tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen.\n"
 
-#: g10/keygen.c:2886 g10/keygen.c:2913
+#: g10/keygen.c:2956 g10/keygen.c:2983
 msgid "Key generation canceled.\n"
 msgstr "Schlüsselerzeugung abgebrochen.\n"
 
-#: g10/keygen.c:3106 g10/keygen.c:3251
+#: g10/keygen.c:3188 g10/keygen.c:3355
 #, c-format
 msgid "writing public key to `%s'\n"
 msgstr "schreiben des öffentlichen Schlüssels nach '%s'\n"
 
-#: g10/keygen.c:3108 g10/keygen.c:3254
+#: g10/keygen.c:3190 g10/keygen.c:3358
 #, c-format
 msgid "writing secret key stub to `%s'\n"
 msgstr "schreiben des geheimen Schlüssel-\"stub\"s nach `%s'\n"
 
-#: g10/keygen.c:3111 g10/keygen.c:3257
+#: g10/keygen.c:3193 g10/keygen.c:3361
 #, c-format
 msgid "writing secret key to `%s'\n"
 msgstr "schreiben des geheimen Schlüssels nach '%s'\n"
 
-#: g10/keygen.c:3240
+#: g10/keygen.c:3342
 #, c-format
 msgid "no writable public keyring found: %s\n"
 msgstr "kein schreibbarer öffentlicher Schlüsselbund gefunden: %s\n"
 
-#: g10/keygen.c:3246
+#: g10/keygen.c:3349
 #, c-format
 msgid "no writable secret keyring found: %s\n"
 msgstr "kein schreibbarer geheimer Schlüsselbund gefunden: %s\n"
 
-#: g10/keygen.c:3264
+#: g10/keygen.c:3369
 #, c-format
 msgid "error writing public keyring `%s': %s\n"
 msgstr "Fehler beim Schreiben des öff. Schlüsselbundes `%s': %s\n"
 
-#: g10/keygen.c:3271
+#: g10/keygen.c:3377
 #, c-format
 msgid "error writing secret keyring `%s': %s\n"
 msgstr "Fehler beim Schreiben des geheimen Schlüsselbundes `%s': %s\n"
 
-#: g10/keygen.c:3294
+#: g10/keygen.c:3404
 msgid "public and secret key created and signed.\n"
 msgstr "Öffentlichen und geheimen Schlüssel erzeugt und signiert.\n"
 
-#: g10/keygen.c:3305
+#: g10/keygen.c:3415
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--edit-key\" to generate a subkey for this purpose.\n"
@@ -4607,12 +4607,12 @@ msgstr ""
 "werden kann.  Sie können aber mit dem Befehl \"--edit-key\" einen\n"
 "Unterschlüssel für diesem Zweck erzeugen.\n"
 
-#: g10/keygen.c:3317 g10/keygen.c:3452 g10/keygen.c:3568
+#: g10/keygen.c:3428 g10/keygen.c:3573 g10/keygen.c:3694
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "Schlüsselerzeugung fehlgeschlagen: %s\n"
 
-#: g10/keygen.c:3370 g10/keygen.c:3503 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
@@ -4620,7 +4620,7 @@ msgstr ""
 "Der Schlüssel wurde %lu Sekunde in der Zukunft erzeugt (Zeitreise oder Uhren "
 "stimmen nicht überein)\n"
 
-#: g10/keygen.c:3372 g10/keygen.c:3505 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
@@ -4628,25 +4628,25 @@ msgstr ""
 "Der Schlüssel wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
 "Uhren stimmen nicht überein)\n"
 
-#: g10/keygen.c:3381 g10/keygen.c:3516
+#: g10/keygen.c:3496 g10/keygen.c:3637
 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
 msgstr "HINWEIS: Unterschlüssel für v3-Schlüssen sind nicht OpenPGP-konform\n"
 
-#: g10/keygen.c:3420 g10/keygen.c:3549
+#: g10/keygen.c:3537 g10/keygen.c:3670
 msgid "Really create? (y/N) "
 msgstr "Wirklich erzeugen? (j/N) "
 
-#: g10/keygen.c:3712
+#: g10/keygen.c:3843
 #, c-format
 msgid "storing key onto card failed: %s\n"
 msgstr "Speicher des Schlüssels auf der Karte schlug fehl: %s\n"
 
-#: g10/keygen.c:3760
+#: g10/keygen.c:3891
 #, c-format
 msgid "can't create backup file `%s': %s\n"
 msgstr "Sicherungsdatei '%s' kann nicht erzeugt werden: %s\n"
 
-#: g10/keygen.c:3786
+#: g10/keygen.c:3917
 #, c-format
 msgid "NOTE: backup of card key saved to `%s'\n"
 msgstr "Hinweis: Sicherung des Kartenschlüssels wurde auf `%s' gespeichert\n"
@@ -6560,15 +6560,15 @@ msgstr "Das Erzeugungsdatum konnte nicht gespeichert werden: %s\n"
 msgid "reading public key failed: %s\n"
 msgstr "Lesen des öffentlichen Schlüssels fehlgeschlagen: %s\n"
 
-#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2046
+#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2047
 msgid "response does not contain the public key data\n"
 msgstr "Die Antwort enthält keine öffentliche Schlüssel-Daten\n"
 
-#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2054
+#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2055
 msgid "response does not contain the RSA modulus\n"
 msgstr "Die Antwort enthält das RSA-Modulus nicht\n"
 
-#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2064
+#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2065
 msgid "response does not contain the RSA public exponent\n"
 msgstr "Antwort enthält den öffentlichen RSA-Exponenten nicht\n"
 
@@ -6590,7 +6590,7 @@ msgid "PIN for CHV%d is too short; minimum length is %d\n"
 msgstr "PIN für CHV%d ist zu kurz; die Mindestlänge beträgt %d\n"
 
 #: scd/app-openpgp.c:1384 scd/app-openpgp.c:1424 scd/app-openpgp.c:1499
-#: scd/app-openpgp.c:2317
+#: scd/app-openpgp.c:2318
 #, c-format
 msgid "verify CHV%d failed: %s\n"
 msgstr "Prüfung des CHV%d fehlgeschlagen: %s\n"
@@ -6599,11 +6599,11 @@ msgstr "Prüfung des CHV%d fehlgeschlagen: %s\n"
 msgid "access to admin commands is not configured\n"
 msgstr "Zugriff auf Admin-Befehle ist nicht eingerichtet\n"
 
-#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2527
+#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2528
 msgid "error retrieving CHV status from card\n"
 msgstr "Fehler beim Holen des CHV-Status' von der Karte\n"
 
-#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2536
+#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2537
 msgid "card is permanently locked!\n"
 msgstr "Karte ist dauerhaft gesperrt!\n"
 
@@ -6635,11 +6635,11 @@ msgstr "|N|Neue PIN"
 msgid "error getting new PIN: %s\n"
 msgstr "Fehler beim Abfragen einer neuen PIN: %s\n"
 
-#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2132
+#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2133
 msgid "error reading application data\n"
 msgstr "Fehler beim Lesen der Anwendungsdaten\n"
 
-#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2139
+#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2140
 msgid "error reading fingerprint DO\n"
 msgstr "Fehler beim Lesen des Fingerabdrucks DO\n"
 
@@ -6679,45 +6679,45 @@ msgstr "Die RSA Primzahl %s fehlt oder ist nicht %d Bits lang\n"
 msgid "failed to store the key: %s\n"
 msgstr "Speichern des Schlüssels fehlgeschlagen: %s\n"
 
-#: scd/app-openpgp.c:2023
+#: scd/app-openpgp.c:2024
 msgid "please wait while key is being generated ...\n"
 msgstr "Bitte warten, der Schlüssel wird erzeugt ...\n"
 
-#: scd/app-openpgp.c:2037
+#: scd/app-openpgp.c:2038
 msgid "generating key failed\n"
 msgstr "Schlüsselerzeugung fehlgeschlagen\n"
 
-#: scd/app-openpgp.c:2040
+#: scd/app-openpgp.c:2041
 #, c-format
 msgid "key generation completed (%d seconds)\n"
 msgstr "Schlüsselerzeugung abgeschlossen (%d Sekunden)\n"
 
-#: scd/app-openpgp.c:2097
+#: scd/app-openpgp.c:2098
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr "Ungültige Struktur der OpenPGP-Karte (DO 0x93)}\n"
 
-#: scd/app-openpgp.c:2147
+#: scd/app-openpgp.c:2148
 msgid "fingerprint on card does not match requested one\n"
 msgstr "Der Fingerabdruck auf der Karte entspricht nicht dem angeforderten.\n"
 
-#: scd/app-openpgp.c:2235
+#: scd/app-openpgp.c:2236
 #, c-format
 msgid "card does not support digest algorithm %s\n"
 msgstr "Die Hashmethode %s wird von der Karte nicht unterstützt\n"
 
-#: scd/app-openpgp.c:2296
+#: scd/app-openpgp.c:2297
 #, c-format
 msgid "signatures created so far: %lu\n"
 msgstr "Anzahl bereits erzeugter Signaturen: %lu\n"
 
-#: scd/app-openpgp.c:2541
+#: scd/app-openpgp.c:2542
 msgid ""
 "verification of Admin PIN is currently prohibited through this command\n"
 msgstr ""
 "Die Überprüfung der Admin PIN is momentan durch einen Befehl verboten "
 "worden\n"
 
-#: scd/app-openpgp.c:2614 scd/app-openpgp.c:2624
+#: scd/app-openpgp.c:2615 scd/app-openpgp.c:2625
 #, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr "Kann auf %s nicht zugreifen - ungültige OpenPGP-Karte?\n"
index dbda7e3..1a344cf 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-1.1.92\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\n"
 "PO-Revision-Date: 2003-06-27 12:00+0200\n"
 "Last-Translator: Dokianakis Theofanis <madf@hellug.gr>\n"
 "Language-Team: Greek <nls@tux.hellug.gr>\n"
@@ -76,8 +76,8 @@ msgstr "
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr "äåí õðïóôçñßæåôáé ï áëãüñéèìïò ðñïóôáóßáò %d%s\n"
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, c-format
 msgid "can't create `%s': %s\n"
@@ -85,7 +85,7 @@ msgstr "
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -872,15 +872,15 @@ msgstr "
 msgid "OpenPGP card no. %s detected\n"
 msgstr ""
 
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 #, fuzzy
 msgid "can't do this in batch mode\n"
 msgstr "äåí ìðïñåß íá ãßíåé áõôü óå êáôÜóôáóç äÝóìçò (batchmode)\n"
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr "Ç åðéëïãÞ óáò; "
 
@@ -1019,19 +1019,19 @@ msgstr "
 msgid "error getting current key info: %s\n"
 msgstr "áäõíáìßá åããñáöÞò ìõóôéêÞò êëåéäïèÞêçò `%s': %s\n"
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 msgid "Replace existing key? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr ""
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 msgid "Replace existing keys? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1039,136 +1039,136 @@ msgid ""
 "You should change them using the command --change-pin\n"
 msgstr ""
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 #, fuzzy
 msgid "Please select the type of key to generate:\n"
 msgstr "Ðáñáêáëþ åðéëÝîôå ôïí ôýðï ôïõ êëåéäéïý ðïõ èÝëåôå:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 #, fuzzy
 msgid "   (1) Signature key\n"
 msgstr "ÕðïãñáöÞ Ýëçîå óôéò %s.\n"
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 #, fuzzy
 msgid "   (2) Encryption key\n"
 msgstr "   (%d) RSA (ãéá êñõðôïãñÜöçóç ìüíï)\n"
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr ""
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr "Ìç Ýãêõñç åðéëïãÞ.\n"
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 #, fuzzy
 msgid "Please select where to store the key:\n"
 msgstr "Ðáñáêáëþ åðéëÝîôå ôçí áéôßá ãéá ôçí áíÜêëçóç:\n"
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 #, fuzzy
 msgid "unknown key protection algorithm\n"
 msgstr "Üãíùóôïò áëãüñéèìïò ðñïóôáóßáò\n"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 #, fuzzy
 msgid "secret parts of key are not available\n"
 msgstr "ÌõóôéêÜ ôìÞìáôá ôïõ êýñéïõ êëåéäéïý äåí åßíáé äéáèÝóéìá.\n"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 #, fuzzy
 msgid "secret key already stored on a card\n"
 msgstr "ðáñáëåßöèçêå: ìõóôéêü êëåéäß Þäç ðáñþí\n"
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr "ôåñìáôéóìüò áõôïý ôïõ ìåíïý"
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 #, fuzzy
 msgid "show admin commands"
 msgstr "óõãêñïõüìåíåò åíôïëÝò\n"
 
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "áðåéêüíéóç áõôÞò ôçò âïÞèåéáò"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 #, fuzzy
 msgid "list all available data"
 msgstr "Êëåéäß äéáèÝóéìï óôï: "
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr ""
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr ""
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr ""
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 #, fuzzy
 msgid "change the login name"
 msgstr "áëëáãÞ ôçò çìåñïìçíßáò ëÞîçò"
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 #, fuzzy
 msgid "change the language preferences"
 msgstr "áëëáãÞ ôçò åìðéóôïóýíçò éäéïêôÞôç"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr ""
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 #, fuzzy
 msgid "change a CA fingerprint"
 msgstr "áðåéêüíéóç ôïõ fingerprint"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "toggle the signature force PIN flag"
 msgstr ""
 
-#: g10/card-util.c:1330
+#: g10/card-util.c:1320
 #, fuzzy
 msgid "generate new keys"
 msgstr "äçìéïõñãßá åíüò íÝïõ æåýãïõò êëåéäéþí"
 
-#: g10/card-util.c:1331
+#: g10/card-util.c:1321
 msgid "menu to change or unblock the PIN"
 msgstr ""
 
-#: g10/card-util.c:1332
+#: g10/card-util.c:1322
 msgid "verify the PIN and list all data"
 msgstr ""
 
-#: g10/card-util.c:1452 g10/keyedit.c:1634
+#: g10/card-util.c:1442 g10/keyedit.c:1634
 msgid "Command> "
 msgstr "ÅíôïëÞ> "
 
-#: g10/card-util.c:1490
+#: g10/card-util.c:1480
 #, fuzzy
 msgid "Admin-only command\n"
 msgstr "óõãêñïõüìåíåò åíôïëÝò\n"
 
-#: g10/card-util.c:1521
+#: g10/card-util.c:1511
 #, fuzzy
 msgid "Admin commands are allowed\n"
 msgstr "óõãêñïõüìåíåò åíôïëÝò\n"
 
-#: g10/card-util.c:1523
+#: g10/card-util.c:1513
 #, fuzzy
 msgid "Admin commands are not allowed\n"
 msgstr "åããñáöÞ ôïõ ìõóôéêïý êëåéäéïý óôï `%s'\n"
 
-#: g10/card-util.c:1597 g10/keyedit.c:2255
+#: g10/card-util.c:1587 g10/keyedit.c:2255
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Ìç Ýãêõñç åíôïëÞ  (äïêéìÜóôå \"help\")\n"
 
@@ -1478,7 +1478,7 @@ msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
 msgstr ""
 "Ìç Ýãêõñï êëåéäß %08lX Ýãéíå Ýãêõñï áðü ôï --allow-non-selfsigned-uid\n"
 
-#: g10/getkey.c:2391 g10/keyedit.c:3721
+#: g10/getkey.c:2391 g10/keyedit.c:3726
 #, fuzzy, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
 msgstr "êáíÝíá ìõóôéêü õðïêëåéäß ãéá ôï äçìüóéï õðïêëåéäß %08lX - áãíüçóç\n"
@@ -1903,7 +1903,7 @@ msgstr "
 msgid "`%s' is not a valid character set\n"
 msgstr "ôï %s äåí åßíáé Ýãêõñï óåô ÷áñáêôÞñùí\n"
 
-#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4078
+#: g10/gpg.c:2518 g10/gpg.c:2713 g10/keyedit.c:4084
 #, fuzzy
 msgid "could not parse keyserver URL\n"
 msgstr "áäõíáìßá åðåîåñãáóßáò ôïõ URI ôïõ äéáêïìéóç êëåéäéþí\n"
@@ -3431,8 +3431,8 @@ msgstr ""
 msgid "Really sign? (y/N) "
 msgstr "Óßãïõñá íá õðïãñáöåß; "
 
-#: g10/keyedit.c:1066 g10/keyedit.c:4797 g10/keyedit.c:4888 g10/keyedit.c:4952
-#: g10/keyedit.c:5013 g10/sign.c:348
+#: g10/keyedit.c:1066 g10/keyedit.c:4803 g10/keyedit.c:4894 g10/keyedit.c:4958
+#: g10/keyedit.c:5019 g10/sign.c:348
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "ç õðïãñáöÞ áðÝôõ÷å: %s\n"
@@ -3441,20 +3441,20 @@ msgstr "
 msgid "Key has only stub or on-card key items - no passphrase to change.\n"
 msgstr ""
 
-#: g10/keyedit.c:1142 g10/keygen.c:3399
+#: g10/keyedit.c:1142 g10/keygen.c:3516
 msgid "This key is not protected.\n"
 msgstr "Áõôü ôï êëåéäß äåí ðñïóôáôåýåôáé.\n"
 
-#: g10/keyedit.c:1146 g10/keygen.c:3387 g10/revoke.c:538
+#: g10/keyedit.c:1146 g10/keygen.c:3503 g10/revoke.c:538
 msgid "Secret parts of primary key are not available.\n"
 msgstr "ÌõóôéêÜ ôìÞìáôá ôïõ êýñéïõ êëåéäéïý äåí åßíáé äéáèÝóéìá.\n"
 
-#: g10/keyedit.c:1150 g10/keygen.c:3402
+#: g10/keyedit.c:1150 g10/keygen.c:3519
 #, fuzzy
 msgid "Secret parts of primary key are stored on-card.\n"
 msgstr "ÌõóôéêÜ ôìÞìáôá ôïõ êýñéïõ êëåéäéïý äåí åßíáé äéáèÝóéìá.\n"
 
-#: g10/keyedit.c:1154 g10/keygen.c:3406
+#: g10/keyedit.c:1154 g10/keygen.c:3523
 msgid "Key is protected.\n"
 msgstr "Ôï êëåéäß ðñïóôáôåýåôáé.\n"
 
@@ -3471,7 +3471,7 @@ msgstr ""
 "ÐëçêôñïëïãÞóôå ôçí íÝá öñÜóç êëåéäß ãéá áõôü ôï ìõóôéêü êëåéäß.\n"
 "\n"
 
-#: g10/keyedit.c:1199 g10/keygen.c:2067
+#: g10/keyedit.c:1199 g10/keygen.c:2116
 msgid "passphrase not correctly repeated; try again"
 msgstr "ç öñÜóç êëåéäß äåí åðáíáëÞöèçêå óùóôÜ. ÄïêéìÜóôå îáíÜ"
 
@@ -4106,320 +4106,320 @@ msgstr "
 msgid "No corresponding signature in secret ring\n"
 msgstr "Äåí âñÝèçêå áíôßóôïé÷ç õðïãñáöÞ óôç ìõóôéêÞ êëåéäïèÞêç\n"
 
-#: g10/keyedit.c:3682
+#: g10/keyedit.c:3687
 #, fuzzy, c-format
 msgid "signing subkey %s is already cross-certified\n"
 msgstr ""
 "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: ôï õðïãñÜöùí õðïêëåéäß %08lX äåí Ý÷åé êáô' áíôéðáñÜóôáóç "
 "ðéóôïðïéçèåß\n"
 
-#: g10/keyedit.c:3688
+#: g10/keyedit.c:3693
 #, c-format
 msgid "subkey %s does not sign and so does not need to be cross-certified\n"
 msgstr ""
 
-#: g10/keyedit.c:3850
+#: g10/keyedit.c:3856
 msgid "Please select exactly one user ID.\n"
 msgstr "ÐñÝðåé íá åðéëÝîåôå áêñéâþò Ýíá user ID.\n"
 
-#: g10/keyedit.c:3889 g10/keyedit.c:3999 g10/keyedit.c:4119 g10/keyedit.c:4260
+#: g10/keyedit.c:3895 g10/keyedit.c:4005 g10/keyedit.c:4125 g10/keyedit.c:4266
 #, fuzzy, c-format
 msgid "skipping v3 self-signature on user ID \"%s\"\n"
 msgstr "ðáñáëåßöèçêå ç v3 éäéï-õðïãñáöÞ óôï user id \"%s\"\n"
 
-#: g10/keyedit.c:4060
+#: g10/keyedit.c:4066
 msgid "Enter your preferred keyserver URL: "
 msgstr ""
 
-#: g10/keyedit.c:4140
+#: g10/keyedit.c:4146
 #, fuzzy
 msgid "Are you sure you want to replace it? (y/N) "
 msgstr "Óßãïõñá èÝëåôå áêüìá íá ôï ÷ñçóéìïðïéÞóåôå; (y/N) "
 
-#: g10/keyedit.c:4141
+#: g10/keyedit.c:4147
 #, fuzzy
 msgid "Are you sure you want to delete it? (y/N) "
 msgstr "Óßãïõñá èÝëåôå áêüìá íá ôï ÷ñçóéìïðïéÞóåôå; (y/N) "
 
-#: g10/keyedit.c:4203
+#: g10/keyedit.c:4209
 #, fuzzy
 msgid "Enter the notation: "
 msgstr "Óçìåßùóç õðïãñáöÞò: "
 
-#: g10/keyedit.c:4352
+#: g10/keyedit.c:4358
 #, fuzzy
 msgid "Proceed? (y/N) "
 msgstr "ÅðéêÜëõøç (y/N); "
 
-#: g10/keyedit.c:4416
+#: g10/keyedit.c:4422
 #, c-format
 msgid "No user ID with index %d\n"
 msgstr "Äåí õðÜñ÷åé user ID ìå äåßêôç %d\n"
 
-#: g10/keyedit.c:4474
+#: g10/keyedit.c:4480
 #, fuzzy, c-format
 msgid "No user ID with hash %s\n"
 msgstr "Äåí õðÜñ÷åé user ID ìå äåßêôç %d\n"
 
-#: g10/keyedit.c:4501
+#: g10/keyedit.c:4507
 #, fuzzy, c-format
 msgid "No subkey with index %d\n"
 msgstr "Äåí õðÜñ÷åé user ID ìå äåßêôç %d\n"
 
-#: g10/keyedit.c:4636
+#: g10/keyedit.c:4642
 #, fuzzy, c-format
 msgid "user ID: \"%s\"\n"
 msgstr "user ID: \""
 
-#: g10/keyedit.c:4639 g10/keyedit.c:4703 g10/keyedit.c:4746
+#: g10/keyedit.c:4645 g10/keyedit.c:4709 g10/keyedit.c:4752
 #, fuzzy, c-format
 msgid "signed by your key %s on %s%s%s\n"
 msgstr "   õðïãñÜöèçêå áðü %08lX óôéò %s%s%s\n"
 
-#: g10/keyedit.c:4641 g10/keyedit.c:4705 g10/keyedit.c:4748
+#: g10/keyedit.c:4647 g10/keyedit.c:4711 g10/keyedit.c:4754
 msgid " (non-exportable)"
 msgstr " (ìç-åîáãþãéìï)"
 
-#: g10/keyedit.c:4645
+#: g10/keyedit.c:4651
 #, c-format
 msgid "This signature expired on %s.\n"
 msgstr "ÁõôÞ ç õðïãñáöÞ Ýëçîå óôéò %s.\n"
 
-#: g10/keyedit.c:4649
+#: g10/keyedit.c:4655
 msgid "Are you sure you still want to revoke it? (y/N) "
 msgstr "Óßãïõñá èÝëåôå íá áíáêëçèåß áõôü ôï êëåéäß; "
 
-#: g10/keyedit.c:4653
+#: g10/keyedit.c:4659
 msgid "Create a revocation certificate for this signature? (y/N) "
 msgstr "Äçìéïõñãßá åíüò ðéóôïðïéçôéêïý áíÜêëçóçò ãéá áõôÞ ôçí õðïãñáöÞ; (y/N)"
 
-#: g10/keyedit.c:4680
+#: g10/keyedit.c:4686
 #, fuzzy, c-format
 msgid "You have signed these user IDs on key %s:\n"
 msgstr "¸÷åôå õðïãñÜøåé áõôÜ ôá user ID:\n"
 
-#: g10/keyedit.c:4706
+#: g10/keyedit.c:4712
 #, fuzzy
 msgid " (non-revocable)"
 msgstr " (ìç-åîáãþãéìï)"
 
-#: g10/keyedit.c:4713
+#: g10/keyedit.c:4719
 #, fuzzy, c-format
 msgid "revoked by your key %s on %s\n"
 msgstr "   áíáêëÞèçêå áðü %08lX óôéò %s\n"
 
-#: g10/keyedit.c:4735
+#: g10/keyedit.c:4741
 msgid "You are about to revoke these signatures:\n"
 msgstr "Óêïðåýåôå íá áíáêáëÝóåôå áõôÝò ôéò õðïãñáöÝò:\n"
 
-#: g10/keyedit.c:4755
+#: g10/keyedit.c:4761
 msgid "Really create the revocation certificates? (y/N) "
 msgstr "Óßãïõñá íá äçìéïõñãçèïýí ôá ðéóôïðïéçôéêÜ áíÜêëçóçò; (y/N)"
 
-#: g10/keyedit.c:4785
+#: g10/keyedit.c:4791
 msgid "no secret key\n"
 msgstr "êáíÝíá ìõóôéêü êëåéäß\n"
 
-#: g10/keyedit.c:4855
+#: g10/keyedit.c:4861
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
 msgstr "ôï user ID \"%s\" Ý÷åé Þäç áíáêëçèåß\n"
 
-#: g10/keyedit.c:4872
+#: g10/keyedit.c:4878
 #, c-format
 msgid "WARNING: a user ID signature is dated %d seconds in the future\n"
 msgstr ""
 "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: ìéá õðïãñáöÞ user ID Ý÷åé çìåñïìçíßá %d äåýôåñá óôï ìÝëëïí\n"
 
-#: g10/keyedit.c:4936
+#: g10/keyedit.c:4942
 #, fuzzy, c-format
 msgid "Key %s is already revoked.\n"
 msgstr "ôï user ID \"%s\" Ý÷åé Þäç áíáêëçèåß\n"
 
-#: g10/keyedit.c:4998
+#: g10/keyedit.c:5004
 #, fuzzy, c-format
 msgid "Subkey %s is already revoked.\n"
 msgstr "ôï user ID \"%s\" Ý÷åé Þäç áíáêëçèåß\n"
 
-#: g10/keyedit.c:5093
+#: g10/keyedit.c:5099
 #, fuzzy, c-format
 msgid "Displaying %s photo ID of size %ld for key %s (uid %d)\n"
 msgstr "Áðåéêüíéóç %s photo ID ìåãÝèïõò %ld ãéá ôï êëåéäß 0x%08lX (uid %d)\n"
 
-#: g10/keygen.c:263
+#: g10/keygen.c:268
 #, fuzzy, c-format
 msgid "preference `%s' duplicated\n"
 msgstr "ç ðñïåðéëïãÞ %c%lu áíôéãñÜöôçêå\n"
 
-#: g10/keygen.c:270
+#: g10/keygen.c:275
 #, fuzzy
 msgid "too many cipher preferences\n"
 msgstr "ðÜñá ðïëëÝò `%c' ðñïåðéëïãÝò\n"
 
-#: g10/keygen.c:272
+#: g10/keygen.c:277
 #, fuzzy
 msgid "too many digest preferences\n"
 msgstr "ðÜñá ðïëëÝò `%c' ðñïåðéëïãÝò\n"
 
-#: g10/keygen.c:274
+#: g10/keygen.c:279
 #, fuzzy
 msgid "too many compression preferences\n"
 msgstr "ðÜñá ðïëëÝò `%c' ðñïåðéëïãÝò\n"
 
-#: g10/keygen.c:399
+#: g10/keygen.c:404
 #, fuzzy, c-format
 msgid "invalid item `%s' in preference string\n"
 msgstr "ìç Ýãêõñïò ÷áñáêôÞñáò óôï \"êïñäüíé\" ôçò åðéëïãÞò\n"
 
-#: g10/keygen.c:873
+#: g10/keygen.c:884
 msgid "writing direct signature\n"
 msgstr "åããñáöÞ Üìåóçò õðïãñáöÞò\n"
 
-#: g10/keygen.c:912
+#: g10/keygen.c:926
 msgid "writing self signature\n"
 msgstr "åããñáöÞ éäéï-õðïãñáöÞò\n"
 
-#: g10/keygen.c:962
+#: g10/keygen.c:983
 msgid "writing key binding signature\n"
 msgstr "åããñáöÞ õðïãñáöÞò \"äÝóéìïõ\" êëåéäéïý\n"
 
-#: g10/keygen.c:1123 g10/keygen.c:1237 g10/keygen.c:1242 g10/keygen.c:1375
-#: g10/keygen.c:2946
+#: g10/keygen.c:1151 g10/keygen.c:1262 g10/keygen.c:1267 g10/keygen.c:1402
+#: g10/keygen.c:3016
 #, c-format
 msgid "keysize invalid; using %u bits\n"
 msgstr "ìç Ýãêõñï ìÝãåèïò êëåéäéïý, ÷ñÞóç %u bits\n"
 
-#: g10/keygen.c:1128 g10/keygen.c:1248 g10/keygen.c:1380 g10/keygen.c:2952
+#: g10/keygen.c:1157 g10/keygen.c:1273 g10/keygen.c:1408 g10/keygen.c:3022
 #, c-format
 msgid "keysize rounded up to %u bits\n"
 msgstr "óôñïããõëïðïßçóç ôïõ ìÝãåèïò êëåéäéïý Ýùò %u bits\n"
 
-#: g10/keygen.c:1274
+#: g10/keygen.c:1299
 msgid ""
 "WARNING: some OpenPGP programs can't handle a DSA key with this digest size\n"
 msgstr ""
 
-#: g10/keygen.c:1490
+#: g10/keygen.c:1519
 #, fuzzy
 msgid "Sign"
 msgstr "sign"
 
-#: g10/keygen.c:1493
+#: g10/keygen.c:1522
 msgid "Certify"
 msgstr ""
 
-#: g10/keygen.c:1496
+#: g10/keygen.c:1525
 #, fuzzy
 msgid "Encrypt"
 msgstr "êñõðôïãñÜöçóç äåäïìÝíùí"
 
-#: g10/keygen.c:1499
+#: g10/keygen.c:1528
 msgid "Authenticate"
 msgstr ""
 
-#: g10/keygen.c:1507
+#: g10/keygen.c:1536
 msgid "SsEeAaQq"
 msgstr ""
 
-#: g10/keygen.c:1526
+#: g10/keygen.c:1555
 #, c-format
 msgid "Possible actions for a %s key: "
 msgstr ""
 
-#: g10/keygen.c:1530
+#: g10/keygen.c:1559
 msgid "Current allowed actions: "
 msgstr ""
 
-#: g10/keygen.c:1535
+#: g10/keygen.c:1564
 #, c-format
 msgid "   (%c) Toggle the sign capability\n"
 msgstr ""
 
-#: g10/keygen.c:1538
+#: g10/keygen.c:1567
 #, fuzzy, c-format
 msgid "   (%c) Toggle the encrypt capability\n"
 msgstr "   (%d) ElGamal (ãéá êñõðôïãñÜöçóç ìüíï)\n"
 
-#: g10/keygen.c:1541
+#: g10/keygen.c:1570
 #, c-format
 msgid "   (%c) Toggle the authenticate capability\n"
 msgstr ""
 
-#: g10/keygen.c:1544
+#: g10/keygen.c:1573
 #, c-format
 msgid "   (%c) Finished\n"
 msgstr ""
 
-#: g10/keygen.c:1600
+#: g10/keygen.c:1629
 msgid "Please select what kind of key you want:\n"
 msgstr "Ðáñáêáëþ åðéëÝîôå ôïí ôýðï ôïõ êëåéäéïý ðïõ èÝëåôå:\n"
 
-#: g10/keygen.c:1602
+#: g10/keygen.c:1631
 #, fuzzy, c-format
 msgid "   (%d) DSA and Elgamal (default)\n"
 msgstr "   (%d) DSA êáé ElGamal (ðñïêáèïñéóìÝíï)\n"
 
-#: g10/keygen.c:1603
+#: g10/keygen.c:1632
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (ãéá õðïãñáöÞ ìüíï)\n"
 
-#: g10/keygen.c:1605
+#: g10/keygen.c:1634
 #, fuzzy, c-format
 msgid "   (%d) DSA (set your own capabilities)\n"
 msgstr "   (%d) RSA (ãéá êñõðôïãñÜöçóç ìüíï)\n"
 
-#: g10/keygen.c:1607
+#: g10/keygen.c:1636
 #, fuzzy, c-format
 msgid "   (%d) Elgamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (ãéá êñõðôïãñÜöçóç ìüíï)\n"
 
-#: g10/keygen.c:1608
+#: g10/keygen.c:1637
 #, c-format
 msgid "   (%d) RSA (sign only)\n"
 msgstr "   (%d) RSA (ãéá õðïãñáöÞ ìüíï)\n"
 
-#: g10/keygen.c:1610
+#: g10/keygen.c:1639
 #, c-format
 msgid "   (%d) RSA (encrypt only)\n"
 msgstr "   (%d) RSA (ãéá êñõðôïãñÜöçóç ìüíï)\n"
 
-#: g10/keygen.c:1612
+#: g10/keygen.c:1641
 #, fuzzy, c-format
 msgid "   (%d) RSA (set your own capabilities)\n"
 msgstr "   (%d) RSA (ãéá êñõðôïãñÜöçóç ìüíï)\n"
 
-#: g10/keygen.c:1681
+#: g10/keygen.c:1710
 #, fuzzy, c-format
 msgid "DSA keypair will have %u bits.\n"
 msgstr "Ôï æåýãïò êëåéäéþí DSA èá åßíáé 1024 bits.\n"
 
-#: g10/keygen.c:1691
+#: g10/keygen.c:1720
 #, c-format
 msgid "%s keys may be between %u and %u bits long.\n"
 msgstr ""
 
-#: g10/keygen.c:1698
+#: g10/keygen.c:1727
 #, fuzzy, c-format
 msgid "What keysize do you want? (%u) "
 msgstr "Ôé ìÝãåèïò êëåéäéïý èá èÝëáôå; (1024) "
 
-#: g10/keygen.c:1712
+#: g10/keygen.c:1741
 #, c-format
 msgid "%s keysizes must be in the range %u-%u\n"
 msgstr ""
 
-#: g10/keygen.c:1718
+#: g10/keygen.c:1747
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "Ôï ìÝãåèïò êëåéäéïý ðïõ æçôÞèçêå åßíáé %u bits\n"
 
-#: g10/keygen.c:1723 g10/keygen.c:1728
+#: g10/keygen.c:1752 g10/keygen.c:1757
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "óôñïããõëïðïéÞèçêå Ýùò ôá %u bits\n"
 
-#: g10/keygen.c:1777
+#: g10/keygen.c:1826
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -4435,7 +4435,7 @@ msgstr ""
 "      <n>m = ôï êëåéäß ëÞãåé óå n ìÞíåò\n"
 "      <n>y = ôï êëåéäß ëÞãåé óå n Ýôç\n"
 
-#: g10/keygen.c:1788
+#: g10/keygen.c:1837
 msgid ""
 "Please specify how long the signature should be valid.\n"
 "         0 = signature does not expire\n"
@@ -4451,40 +4451,40 @@ msgstr ""
 "      <n>m = ôï êëåéäß ëÞãåé óå n ìÞíåò\n"
 "      <n>y = ôï êëåéäß ëÞãåé óå n Ýôç\n"
 
-#: g10/keygen.c:1811
+#: g10/keygen.c:1860
 msgid "Key is valid for? (0) "
 msgstr "Ôï êëåéäß åßíáé Ýãêõñï ãéá; (0) "
 
-#: g10/keygen.c:1816
+#: g10/keygen.c:1865
 #, fuzzy, c-format
 msgid "Signature is valid for? (%s) "
 msgstr "Ç õðïãñáöÞ Ýéíáé Ýãêõñç ãéá; (0) "
 
-#: g10/keygen.c:1834
+#: g10/keygen.c:1883
 msgid "invalid value\n"
 msgstr "ìç Ýãêõñç ôéìÞ\n"
 
-#: g10/keygen.c:1841
+#: g10/keygen.c:1890
 #, fuzzy
 msgid "Key does not expire at all\n"
 msgstr "ôï %s äåí ëÞãåé ðïôÝ\n"
 
-#: g10/keygen.c:1842
+#: g10/keygen.c:1891
 #, fuzzy
 msgid "Signature does not expire at all\n"
 msgstr "ôï %s äåí ëÞãåé ðïôÝ\n"
 
-#: g10/keygen.c:1847
+#: g10/keygen.c:1896
 #, fuzzy, c-format
 msgid "Key expires at %s\n"
 msgstr "ôï %s ëÞãåé óôéò %s\n"
 
-#: g10/keygen.c:1848
+#: g10/keygen.c:1897
 #, fuzzy, c-format
 msgid "Signature expires at %s\n"
 msgstr "ÕðïãñáöÞ ëÞãåé óôéò %s.\n"
 
-#: g10/keygen.c:1852
+#: g10/keygen.c:1901
 msgid ""
 "Your system can't display dates beyond 2038.\n"
 "However, it will be correctly handled up to 2106.\n"
@@ -4492,12 +4492,12 @@ msgstr ""
 "Ôï óýóôçìá óáò äåí ìðïñåß íá áðåéêïíßóåé çìåñïìçíßåò ðÝñá ôïõ 2038.\n"
 "¼ìùò, èá ÷åéñßæïíôáé óùóôÜ Ýùò ôï 2106.\n"
 
-#: g10/keygen.c:1859
+#: g10/keygen.c:1908
 #, fuzzy
 msgid "Is this correct? (y/N) "
 msgstr "Åßíáé áõôü óùóôü (y/n); "
 
-#: g10/keygen.c:1882
+#: g10/keygen.c:1931
 #, fuzzy
 msgid ""
 "\n"
@@ -4514,44 +4514,44 @@ msgstr ""
 "    \"Nikolaoy Nikos (toy Ioanni) <nikoln@athens.gr>\"\n"
 "\n"
 
-#: g10/keygen.c:1895
+#: g10/keygen.c:1944
 msgid "Real name: "
 msgstr "Áëçèéíü ¼íïìá: "
 
-#: g10/keygen.c:1903
+#: g10/keygen.c:1952
 msgid "Invalid character in name\n"
 msgstr "Ìç Ýãêõñïò ÷áñáêôÞñáò óôï üíïìá\n"
 
-#: g10/keygen.c:1905
+#: g10/keygen.c:1954
 msgid "Name may not start with a digit\n"
 msgstr "Ôï üíïìá äåí åðéôñÝðåôáé íá îåêéíÜ ìå áñéèìçôéêü øçößï\n"
 
-#: g10/keygen.c:1907
+#: g10/keygen.c:1956
 msgid "Name must be at least 5 characters long\n"
 msgstr "Ôï üíïìá ðñÝðåé íá Ý÷åé ôïõëÜ÷éóôïí 5 ÷áñáêôÞñåò\n"
 
-#: g10/keygen.c:1915
+#: g10/keygen.c:1964
 msgid "Email address: "
 msgstr "Äéåýèõíóç Email: "
 
-#: g10/keygen.c:1921
+#: g10/keygen.c:1970
 msgid "Not a valid email address\n"
 msgstr "Ìç Ýãêõñç äéåýèõíóç Email\n"
 
-#: g10/keygen.c:1929
+#: g10/keygen.c:1978
 msgid "Comment: "
 msgstr "Ó÷üëéï: "
 
-#: g10/keygen.c:1935
+#: g10/keygen.c:1984
 msgid "Invalid character in comment\n"
 msgstr "Ìç Ýãêõñïò ÷áñáêôÞñáò óôï ó÷üëéï\n"
 
-#: g10/keygen.c:1957
+#: g10/keygen.c:2006
 #, c-format
 msgid "You are using the `%s' character set.\n"
 msgstr "×ñçóéìïðïéåßôå ôï `%s' óåô ÷áñáêôÞñùí.\n"
 
-#: g10/keygen.c:1963
+#: g10/keygen.c:2012
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -4562,7 +4562,7 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:1968
+#: g10/keygen.c:2017
 msgid "Please don't put the email address into the real name or the comment\n"
 msgstr "Ðáñáêáëþ ìçí ôïðïèåôåßôå ôçí äéåýèõíóç email óôï üíïìá Þ óôï ó÷üëéï\n"
 
@@ -4577,23 +4577,23 @@ msgstr "
 #. o = Okay (ready, continue)
 #. q = Quit
 #.
-#: g10/keygen.c:1984
+#: g10/keygen.c:2033
 msgid "NnCcEeOoQq"
 msgstr "NnCcEeOoQq"
 
-#: g10/keygen.c:1994
+#: g10/keygen.c:2043
 msgid "Change (N)ame, (C)omment, (E)mail or (Q)uit? "
 msgstr "ÁëëáãÞ (N)üíïìá, (C)ó÷üëéï, (E)mail Þ (Q)ôåñìáôéóìüò; "
 
-#: g10/keygen.c:1995
+#: g10/keygen.c:2044
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "ÁëëáãÞ (N)üíïìá, (C)ó÷üëéï, (E)mail Þ (O)åíôÜîåé/(Q)ôåñìáôéóìüò; "
 
-#: g10/keygen.c:2014
+#: g10/keygen.c:2063
 msgid "Please correct the error first\n"
 msgstr "Ðáñáêáëþ, äéïñèþóôå ðñþôá ôï óöÜëìá\n"
 
-#: g10/keygen.c:2053
+#: g10/keygen.c:2102
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -4601,12 +4601,12 @@ msgstr ""
 "×ñåéÜæåóôå ìéá ÖñÜóç êëåéäß ãéá íá ðñïóôáôåýóåôå ôï ìõóôéêü êëåéäß.\n"
 "\n"
 
-#: g10/keygen.c:2068
+#: g10/keygen.c:2117
 #, c-format
 msgid "%s.\n"
 msgstr "%s.\n"
 
-#: g10/keygen.c:2074
+#: g10/keygen.c:2123
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "I will do it anyway.  You can change your passphrase at any time,\n"
@@ -4618,7 +4618,7 @@ msgstr ""
 "üðïôå èÝëåôå, ìå ôçí åðéëïãÞ \"--edit-key\".\n"
 "\n"
 
-#: g10/keygen.c:2096
+#: g10/keygen.c:2147
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
@@ -4630,50 +4630,50 @@ msgstr ""
 "ôïõò äßóêïõò) êáôá ôç äéÜñêåéá õðïëïãéóìïý ðñþôùí áñéèìþí. Áõôü äßíåé\n"
 "óôç ãåííÞôñéá ôõ÷áßùí áñéèìþí ìéá åõêáéñßá íá ìáæÝøåé áñêåôÞ åíôñïðßá.\n"
 
-#: g10/keygen.c:2886 g10/keygen.c:2913
+#: g10/keygen.c:2956 g10/keygen.c:2983
 msgid "Key generation canceled.\n"
 msgstr "Ç äçìéïõñãßá êëåéäéïý áíáâëÞèçêå.\n"
 
-#: g10/keygen.c:3106 g10/keygen.c:3251
+#: g10/keygen.c:3188 g10/keygen.c:3355
 #, c-format
 msgid "writing public key to `%s'\n"
 msgstr "åããñáöÞ ôïõ äçìïóßïõ êëåéäéïý óôï `%s'\n"
 
-#: g10/keygen.c:3108 g10/keygen.c:3254
+#: g10/keygen.c:3190 g10/keygen.c:3358
 #, fuzzy, c-format
 msgid "writing secret key stub to `%s'\n"
 msgstr "åããñáöÞ ôïõ ìõóôéêïý êëåéäéïý óôï `%s'\n"
 
-#: g10/keygen.c:3111 g10/keygen.c:3257
+#: g10/keygen.c:3193 g10/keygen.c:3361
 #, c-format
 msgid "writing secret key to `%s'\n"
 msgstr "åããñáöÞ ôïõ ìõóôéêïý êëåéäéïý óôï `%s'\n"
 
-#: g10/keygen.c:3240
+#: g10/keygen.c:3342
 #, c-format
 msgid "no writable public keyring found: %s\n"
 msgstr "äå âñÝèçêå åããñÜøéìç äçìüóéá êëåéäïèÞêç: %s\n"
 
-#: g10/keygen.c:3246
+#: g10/keygen.c:3349
 #, c-format
 msgid "no writable secret keyring found: %s\n"
 msgstr "äå âñÝèçêå åããñÜøéìç ìõóôéêÞ êëåéäïèÞêç: %s\n"
 
-#: g10/keygen.c:3264
+#: g10/keygen.c:3369
 #, c-format
 msgid "error writing public keyring `%s': %s\n"
 msgstr "áäõíáìßá åããñáöÞò äçìüóéáò êëåéäïèÞêçò `%s': %s\n"
 
-#: g10/keygen.c:3271
+#: g10/keygen.c:3377
 #, c-format
 msgid "error writing secret keyring `%s': %s\n"
 msgstr "áäõíáìßá åããñáöÞò ìõóôéêÞò êëåéäïèÞêçò `%s': %s\n"
 
-#: g10/keygen.c:3294
+#: g10/keygen.c:3404
 msgid "public and secret key created and signed.\n"
 msgstr "ôï äçìüóéï êáé ôï ìõóôéêü êëåéäß äçìéïõñãÞèçêáí êáé õðïãñÜöçêáí.\n"
 
-#: g10/keygen.c:3305
+#: g10/keygen.c:3415
 #, fuzzy
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
@@ -4684,12 +4684,12 @@ msgstr ""
 "Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ \"--edit-key\" ãéá íá äçìéïõñãçèåß\n"
 "Ýíá äåõôåñåýïí êëåéäß ãéá áõôü ôï ëüãï.\n"
 
-#: g10/keygen.c:3317 g10/keygen.c:3452 g10/keygen.c:3568
+#: g10/keygen.c:3428 g10/keygen.c:3573 g10/keygen.c:3694
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "Ç äçìéïõñãßá êëåéäéïý áðÝôõ÷å: %s\n"
 
-#: g10/keygen.c:3370 g10/keygen.c:3503 g10/sign.c:273
+#: g10/keygen.c:3483 g10/keygen.c:3624 g10/sign.c:273
 #, c-format
 msgid ""
 "key has been created %lu second in future (time warp or clock problem)\n"
@@ -4697,7 +4697,7 @@ msgstr ""
 "ôï êëåéäß äçìéïõñãÞèçêå %lu äåõôåñüëåðôï óôï ìÝëëïí (÷ñïíïäßíç Þ\n"
 "áðëþò ðñüâëçìá óôï ñïëüé)\n"
 
-#: g10/keygen.c:3372 g10/keygen.c:3505 g10/sign.c:275
+#: g10/keygen.c:3485 g10/keygen.c:3626 g10/sign.c:275
 #, c-format
 msgid ""
 "key has been created %lu seconds in future (time warp or clock problem)\n"
@@ -4705,28 +4705,28 @@ msgstr ""
 "ôï êëåéäß äçìéïõñãÞèçêå %lu äåõôåñüëåðôá óôï ìÝëëïí (÷ñïíïäßíç Þ\n"
 "áðëþò ðñüâëçìá óôï ñïëüé)\n"
 
-#: g10/keygen.c:3381 g10/keygen.c:3516
+#: g10/keygen.c:3496 g10/keygen.c:3637
 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n"
 msgstr ""
 "ÓÇÌÅÉÙÓÇ: ç äçìéïõñãßá õðïêëåéäéþí ãéá êëåéäéÜ v3 äåí åßíáé óýìöùíï\n"
 "ìå ôï OpenPGP\n"
 
-#: g10/keygen.c:3420 g10/keygen.c:3549
+#: g10/keygen.c:3537 g10/keygen.c:3670
 #, fuzzy
 msgid "Really create? (y/N) "
 msgstr "Óßãïõñá íá äçìéïõñãçèåß; "
 
-#: g10/keygen.c:3712
+#: g10/keygen.c:3843
 #, fuzzy, c-format
 msgid "storing key onto card failed: %s\n"
 msgstr "äéáãñáöÞ block êëåéäéþí áðÝôõ÷å: %s\n"
 
-#: g10/keygen.c:3760
+#: g10/keygen.c:3891
 #, fuzzy, c-format
 msgid "can't create backup file `%s': %s\n"
 msgstr "áäõíáìßá äçìéïõñãßáò ôïõ `%s': %s\n"
 
-#: g10/keygen.c:3786
+#: g10/keygen.c:3917
 #, fuzzy, c-format
 msgid "NOTE: backup of card key saved to `%s'\n"
 msgstr "ÓÇÌÅÉÙÓÇ: ôï ìõóôéêü êëåéäß %08lX Ýëçîå óôéò %s\n"
@@ -6631,15 +6631,15 @@ msgstr "
 msgid "reading public key failed: %s\n"
 msgstr "äéáãñáöÞ block êëåéäéþí áðÝôõ÷å: %s\n"
 
-#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2046
+#: scd/app-openpgp.c:1015 scd/app-openpgp.c:2047
 msgid "response does not contain the public key data\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2054
+#: scd/app-openpgp.c:1023 scd/app-openpgp.c:2055
 msgid "response does not contain the RSA modulus\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2064
+#: scd/app-openpgp.c:1032 scd/app-openpgp.c:2065
 msgid "response does not contain the RSA public exponent\n"
 msgstr ""
 
@@ -6659,7 +6659,7 @@ msgid "PIN for CHV%d is too short; minimum length is %d\n"
 msgstr ""
 
 #: scd/app-openpgp.c:1384 scd/app-openpgp.c:1424 scd/app-openpgp.c:1499
-#: scd/app-openpgp.c:2317
+#: scd/app-openpgp.c:2318
 #, fuzzy, c-format
 msgid "verify CHV%d failed: %s\n"
 msgstr "keyserver áðïóôïëÞ áðÝôõ÷å: %s\n"
@@ -6668,11 +6668,11 @@ msgstr "keyserver 
 msgid "access to admin commands is not configured\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2527
+#: scd/app-openpgp.c:1462 scd/app-openpgp.c:2528
 msgid "error retrieving CHV status from card\n"
 msgstr ""
 
-#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2536
+#: scd/app-openpgp.c:1468 scd/app-openpgp.c:2537
 msgid "card is permanently locked!\n"
 msgstr ""
 
@@ -6704,12 +6704,12 @@ msgstr ""
 msgid "error getting new PIN: %s\n"
 msgstr "óöÜëìá óôç äçìéïõñãßá ôçò öñÜóçò êëåéäß: %s\n"
 
-#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2132
+#: scd/app-openpgp.c:1683 scd/app-openpgp.c:2133
 #, fuzzy
 msgid "error reading application data\n"
 msgstr "óöÜëìá êáôÜ ôçí áíÜãíùóç ôïõ ìðëïê êëåéäéþí: %s\n"
 
-#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2139
+#: scd/app-openpgp.c:1689 scd/app-openpgp.c:2140
 #, fuzzy
 msgid "error reading fingerprint DO\n"
 msgstr "%s: óöÜëìá óôçí áíÜãíùóç ôçò åããñáöÞò free : %s\n"
@@ -6752,44 +6752,44 @@ msgstr ""
 msgid "failed to store the key: %s\n"
 msgstr "áðïôõ÷ßá áñ÷éêïðïßçóçò ôçò TrustDB: %s\n"
 
-#: scd/app-openpgp.c:2023
+#: scd/app-openpgp.c:2024
 msgid "please wait while key is being generated ...\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2037
+#: scd/app-openpgp.c:2038
 #, fuzzy
 msgid "generating key failed\n"
 msgstr "äéáãñáöÞ block êëåéäéþí áðÝôõ÷å: %s\n"
 
-#: scd/app-openpgp.c:2040
+#: scd/app-openpgp.c:2041
 #, fuzzy, c-format
 msgid "key generation completed (%d seconds)\n"
 msgstr "Ç äçìéïõñãßá êëåéäéïý áðÝôõ÷å: %s\n"
 
-#: scd/app-openpgp.c:2097
+#: scd/app-openpgp.c:2098
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2147
+#: scd/app-openpgp.c:2148
 msgid "fingerprint on card does not match requested one\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2235
+#: scd/app-openpgp.c:2236
 #, fuzzy, c-format
 msgid "card does not support digest algorithm %s\n"
 msgstr "%s õðïãñáöÞ, áëãüñéèìïò ðåñßëçøçò %s\n"
 
-#: scd/app-openpgp.c:2296
+#: scd/app-openpgp.c:2297
 #, c-format
 msgid "signatures created so far: %lu\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2541
+#: scd/app-openpgp.c:2542
 msgid ""
 "verification of Admin PIN is currently prohibited through this command\n"
 msgstr ""
 
-#: scd/app-openpgp.c:2614 scd/app-openpgp.c:2624
+#: scd/app-openpgp.c:2615 scd/app-openpgp.c:2625
 #, fuzzy, c-format
 msgid "can't access %s - invalid OpenPGP card?\n"
 msgstr "äå âñÝèçêáí Ýãêõñá OpenPGP äåäïìÝíá.\n"
index 66f926f..0ebf1d2 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg 1.0.6d\n"
 "Report-Msgid-Bugs-To: translations@gnupg.org\n"
-"POT-Creation-Date: 2007-07-04 21:46+0200\n"
+"POT-Creation-Date: 2007-07-05 18:01+0200\n"
 "PO-Revision-Date: 2002-04-14 14:33+0100\n"
 "Last-Translator: Edmund GRIMLEY EVANS <edmundo@rano.org>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -76,8 +76,8 @@ msgstr "malbona pasfrazo"
 msgid "ssh keys greater than %d bits are not supported\n"
 msgstr "protekto-metodo %d%s ne estas realigita\n"
 
-#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 g10/keygen.c:3065
-#: g10/keygen.c:3094 g10/keyring.c:1202 g10/keyring.c:1506 g10/openfile.c:275
+#: agent/command-ssh.c:688 g10/exec.c:478 g10/gpg.c:1009 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
 #, c-format
 msgid "can't create `%s': %s\n"
@@ -85,7 +85,7 @@ msgstr "ne povas krei '%s': %s\n"
 
 #: agent/command-ssh.c:700 g10/card-util.c:677 g10/card-util.c:746
 #: 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:2560
+#: g10/encode.c:504 g10/gpg.c:1010 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
@@ -875,15 +875,15 @@ msgstr "sekreta 
 msgid "OpenPGP card no. %s detected\n"
 msgstr ""
 
-#: g10/card-util.c:75 g10/card-util.c:1401 g10/delkey.c:126 g10/keyedit.c:1529
-#: g10/keygen.c:2747 g10/revoke.c:216 g10/revoke.c:455
+#: g10/card-util.c:75 g10/card-util.c:1391 g10/delkey.c:126 g10/keyedit.c:1529
+#: g10/keygen.c:2817 g10/revoke.c:216 g10/revoke.c:455
 #, fuzzy
 msgid "can't do this in batch mode\n"
 msgstr "ne povas fari tion en neinteraga reøimo\n"
 
-#: g10/card-util.c:102 g10/card-util.c:1127 g10/card-util.c:1210
-#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1548
-#: g10/keygen.c:1615
+#: g10/card-util.c:102 g10/card-util.c:1124 g10/card-util.c:1203
+#: g10/keyedit.c:424 g10/keyedit.c:445 g10/keyedit.c:459 g10/keygen.c:1577
+#: g10/keygen.c:1644
 msgid "Your selection? "
 msgstr "Via elekto? "
 
@@ -1022,19 +1022,19 @@ msgstr "validaj OpenPGP-datenoj ne trovitaj.\n"
 msgid "error getting current key info: %s\n"
 msgstr "eraro dum skribado de sekreta þlosilaro '%s': %s\n"
 
-#: g10/card-util.c:1032
+#: g10/card-util.c:1031
 msgid "Replace existing key? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1053 g10/card-util.c:1062
+#: g10/card-util.c:1051 g10/card-util.c:1060
 msgid "Make off-card backup of encryption key? (Y/n) "
 msgstr ""
 
-#: g10/card-util.c:1074
+#: g10/card-util.c:1072
 msgid "Replace existing keys? (y/N) "
 msgstr ""
 
-#: g10/card-util.c:1083
+#: g10/card-util.c:1081
 #, c-format
 msgid ""
 "Please note that the factory settings of the PINs are\n"
@@ -1042,136 +1042,136 @@ msgid ""
 "You should change them using the command --change-pin\n"
 msgstr ""
 
-#: g10/card-util.c:1118
+#: g10/card-util.c:1115
 #, fuzzy
 msgid "Please select the type of key to generate:\n"
 msgstr "Bonvolu elekti, kian þlosilon vi deziras:\n"
 
-#: g10/card-util.c:1120 g10/card-util.c:1201
+#: g10/card-util.c:1117 g10/card-util.c:1194
 #, fuzzy
 msgid "   (1) Signature key\n"
 msgstr "Æi tiu þlosilo eksvalidiøos je %s.\n"
 
-#: g10/card-util.c:1121 g10/card-util.c:1203
+#: g10/card-util.c:1118 g10/card-util.c:1196
 #, fuzzy
 msgid "   (2) Encryption key\n"
 msgstr "   (%d) RSA (nur æifri)\n"
 
-#: g10/card-util.c:1122 g10/card-util.c:1205
+#: g10/card-util.c:1119 g10/card-util.c:1198
 msgid "   (3) Authentication key\n"
 msgstr ""
 
-#: g10/card-util.c:1138 g10/card-util.c:1221 g10/keyedit.c:945
-#: g10/keygen.c:1552 g10/keygen.c:1580 g10/keygen.c:1654 g10/revoke.c:685
+#: g10/card-util.c:1135 g10/card-util.c:1214 g10/keyedit.c:945
+#: g10/keygen.c:1581 g10/keygen.c:1609 g10/keygen.c:1683 g10/revoke.c:685
 msgid "Invalid selection.\n"
 msgstr "Nevalida elekto.\n"
 
-#: g10/card-util.c:1198
+#: g10/card-util.c:1191
 #, fuzzy
 msgid "Please select where to store the key:\n"
 msgstr "Kialo por revoko: "
 
-#: g10/card-util.c:1233
+#: g10/card-util.c:1226
 #, fuzzy
 msgid "unknown key protection algorithm\n"
 msgstr "nekonata densig-metodo"
 
-#: g10/card-util.c:1238
+#: g10/card-util.c:1231
 #, fuzzy
 msgid "secret parts of key are not available\n"
 msgstr "Sekretaj partoj de æefa þlosilo ne estas disponataj.\n"
 
-#: g10/card-util.c:1243
+#: g10/card-util.c:1236
 #, fuzzy
 msgid "secret key already stored on a card\n"
 msgstr "ignorita: sekreta þlosilo jam æeestas\n"
 
-#: g10/card-util.c:1314 g10/keyedit.c:1362
+#: g10/card-util.c:1304 g10/keyedit.c:1362
 msgid "quit this menu"
 msgstr "forlasi æi tiun menuon"
 
-#: g10/card-util.c:1316
+#: g10/card-util.c:1306
 #, fuzzy
 msgid "show admin commands"
 msgstr "malkongruaj komandoj\n"
 
-#: g10/card-util.c:1317 g10/keyedit.c:1365
+#: g10/card-util.c:1307 g10/keyedit.c:1365
 msgid "show this help"
 msgstr "montri æi tiun helpon"
 
-#: g10/card-util.c:1319
+#: g10/card-util.c:1309
 #, fuzzy
 msgid "list all available data"
 msgstr "Nenia helpo disponata"
 
-#: g10/card-util.c:1322
+#: g10/card-util.c:1312
 msgid "change card holder's name"
 msgstr ""
 
-#: g10/card-util.c:1323
+#: g10/card-util.c:1313
 msgid "change URL to retrieve key"
 msgstr ""
 
-#: g10/card-util.c:1324
+#: g10/card-util.c:1314
 msgid "fetch the key specified in the card URL"
 msgstr ""
 
-#: g10/card-util.c:1325
+#: g10/card-util.c:1315
 #, fuzzy
 msgid "change the login name"
 msgstr "þanøi la daton de eksvalidiøo"
 
-#: g10/card-util.c:1326
+#: g10/card-util.c:1316
 #, fuzzy
 msgid "change the language preferences"
 msgstr "þanøi la posedantofidon"
 
-#: g10/card-util.c:1327
+#: g10/card-util.c:1317
 msgid "change card holder's sex"
 msgstr ""
 
-#: g10/card-util.c:1328
+#: g10/card-util.c:1318
 #, fuzzy
 msgid "change a CA fingerprint"
 msgstr "montri fingrospuron"
 
-#: g10/card-util.c:1329
+#: g10/card-util.c:1319
 msgid "togg