a new release V0-4-1
authorWerner Koch <wk@gnupg.org>
Wed, 7 Oct 1998 13:30:43 +0000 (13:30 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 7 Oct 1998 13:30:43 +0000 (13:30 +0000)
22 files changed:
Makefile.am
NEWS
README
TODO
VERSION
checks/genkey1024.test
checks/run-gpg
doc/DETAILS
g10/ChangeLog
g10/g10.c
g10/keyedit.c
g10/pkclist.c
g10/tdbio.c
g10/tdbio.h
g10/trustdb.c
g10/trustdb.h
po/ChangeLog
po/Makefile.in.in
po/de.po
po/en.po
po/fr.po
po/it.po

index 43e2a28..138f0d3 100644 (file)
@@ -6,15 +6,15 @@ EXTRA_DIST = VERSION  PROJECTS
 
 dist-hook:
        @set -e; \
-        for file in `find $(srcdir) -type f -name distfiles`; do \
+        for file in `cd $(top_srcdir); find . -type f -name distfiles`; do \
            dir=`dirname $$file` ; $(mkinstalldirs) $(distdir)/$$dir ; \
-           for i in distfiles `cat $$file` ; do \
-               ln $(srcdir)/$$dir/$$i $(distdir)/$$dir/$$i 2> /dev/null \
-               || cp -p $(srcdir)/$$dir/$$i $(distdir)/$$dir/$$i; \
+           for i in distfiles `cat $(top_srcdir)/$$file` ; do \
+               ln $(top_srcdir)/$$dir/$$i $(distdir)/$$dir/$$i 2> /dev/null \
+               || cp -p $(top_srcdir)/$$dir/$$i $(distdir)/$$dir/$$i; \
            done ; \
        done
        @set -e; \
-       sed -e 's/@pkg_version@/$(VERSION)/g' $(srcdir)/scripts/gnupg.spec \
+       sed -e 's/@pkg_version@/$(VERSION)/g' $(top_srcdir)/scripts/gnupg.spec \
            > $(distdir)/scripts/gnupg-$(VERSION).spec
 
 
diff --git a/NEWS b/NEWS
index 02fc4d8..52691f8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -17,7 +17,9 @@ Noteworthy changes in version 0.4.1
     * Checked gnupg against the August 1998 draft (07) and I believe
       it is in compliance with this document (except for one point).
 
-    * Fixed some bugs in the import merging code.
+    * Fixed some bugs in the import merging code and rewrote some
+      code for the trustdb.
+
 
 Noteworthy changes in version 0.4.0
 -----------------------------------
diff --git a/README b/README
index 216d84f..ad836c3 100644 (file)
--- a/README
+++ b/README
@@ -1,3 +1,5 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+
                  GNUPG - The GNU Privacy Guard
                 -------------------------------
                          Version 0.4
@@ -55,7 +57,7 @@
     Installation
     ------------
 
-    Please read the file INSTALL.
+    Please read the file INSTALL!
 
     Here is a quick summary:
 
 
     Please direct bug reports to <gnupg-bugs@gnu.org> or better
     post them to the mailing list <g10@net.lut.ac.uk> (this is a closed list,
-    please subscribe before posting).
+    please subscribe before posting, see above (~line 33)).
+
+-----BEGIN PGP SIGNATURE-----
+Version: GNUPG v0.4.0a (GNU/Linux)
+Comment: For info finger gcrypt@ftp.guug.de
 
+iQB1AwUBNhtSpB0Z9MEMmFelAQHWNQMAuPaj71rzjjtVNlYDV0MYljPFZqAK7tvmbH3i9Lti
+UuvGPCpx1/ej7jwZ2LSQ61O8c/xRwV07chHa5MGmSGT4KZg5g5MejUOliMQJIJwjY5PoZAVb
+6F7+hZf5Bt5Jl2J7
+=6Mbb
+-----END PGP SIGNATURE-----
diff --git a/TODO b/TODO
index 7b6366c..c1da628 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,12 +1,9 @@
 
-    * check for working mmap()
-
-    * after creating a new uid, the preferences in the trustdb are not updated.
-      We should always sync the trustdb in such cases.
-
     * The critical bit of signature subpackets is not yet supported; i.e.
       it is ignored.
 
+    * Read more records at once in tdbio.c and provide a lazy write cache.
+
     * Exportable Certification Flag is ignored
 
     * Why does OpenPGP say: The algorithm byte is included in the
@@ -59,7 +56,7 @@
 
     * change the fake_data stuff to mpi_set_opaque
 
-    * Is it okay to use gettext for the help system???
+    * Is it okay to use gettext for the help system?
 
     * Add some stuff for DU cc
 
diff --git a/VERSION b/VERSION
index 8d427d3..267577d 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.4.0a
+0.4.1
index e419088..2235549 100755 (executable)
@@ -21,7 +21,6 @@ expect {
     -exact "Please select what kind of key you want:\r
    (1) DSA and ElGamal (default)\r
    (2) ElGamal (sign and encrypt)\r
-   (3) ElGamal (encrypt only)\r
    (4) DSA (sign only)\r
    (5) ElGamal in a v3 packet\r
 Your selection? "  { send -- "1\r" }
index 518721a..a9e0e31 100755 (executable)
@@ -10,6 +10,6 @@ else
     rm err.tmp.$$
     exit 1
 fi
-fgrep -v -f run-gpg.patterns err.tmp.$$
+fgrep -v -f $srcdir/run-gpg.patterns err.tmp.$$
 rm err.tmp.$$
 
index d52527c..efd412c 100644 (file)
@@ -65,7 +65,8 @@ Record type 1:
            (Used to keep track of the time, when this TrustDB was checked
             against the pubring)
      1 u32  record number of keyhashtable
-     12 bytes reserved
+     1 u32  first free record
+     8 bytes reserved
 
 
 Record type 2: (directory record)
@@ -222,6 +223,11 @@ Record type 11 (hash list)
 
     For the current record length of 40, n is 7
 
+Record type 254: (free record)
+     1 byte  value 254
+     1 byte  reserved (0)
+     1 u32   next_free
+
 
 
 Packet Headers
index 911554a..6e420e5 100644 (file)
@@ -1,3 +1,20 @@
+Wed Oct  7 11:15:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
+
+       * keyedit.c (sign_uids): Fixed a problem with SK which could caused
+       a save of an unprotected key.
+       (menu_adduid): Ditto.
+
+       * keyedit.c (keyedit_menu): Prefs are now correctly listed for
+       new user ids.
+
+       * trustdb.c (update_trust_record): New.
+       (insert_trust_record): Now makes use of update_trust_record.
+
+Tue Oct  6 16:18:03 1998  Werner Koch  (wk@isil.d.shuttle.de)
+
+       * trustdb.c (read_record): replaces most of the tdbio_read_records.
+       (write_record): Ditto.
+
 Sat Oct  3 11:01:21 1998  Werner Koch  (wk@isil.d.shuttle.de)
 
        * keygen.c (ask_alogo): enable ElGamal enc-only only for addmode.
index c0e77b8..ca9b44d 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -87,6 +87,7 @@ enum cmd_and_opt_values { aNull = 0,
     aPrintMD,
     aPrintMDs,
     aCheckTrustDB,
+    aFixTrustDB,
     aListTrustDB,
     aListTrustPath,
     aExportOwnerTrust,
@@ -177,6 +178,7 @@ static ARGPARSE_OPTS opts[] = {
     { aExportOwnerTrust, "export-ownertrust", 256, N_("export the ownertrust values")},
     { aImportOwnerTrust, "import-ownertrust", 256 , N_("import ownertrust values")},
     { aCheckTrustDB, "check-trustdb",0 , N_("|[NAMES]|check the trust database")},
+    { aFixTrustDB, "fix-trustdb",0 , N_("fix a corrupted trust database")},
     { aDeArmor, "dearmor", 256, N_("De-Armor a file or stdin") },
     { aEnArmor, "enarmor", 256, N_("En-Armor a file or stdin") },
     { aPrintMD,  "print-md" , 256, N_("|algo [files]|print message digests")},
@@ -636,6 +638,7 @@ main( int argc, char **argv )
          case aPrintMDs: set_cmd( &cmd, aPrintMDs); break;
          case aListTrustDB: set_cmd( &cmd, aListTrustDB); break;
          case aCheckTrustDB: set_cmd( &cmd, aCheckTrustDB); break;
+         case aFixTrustDB: set_cmd( &cmd, aFixTrustDB); break;
          case aListTrustPath: set_cmd( &cmd, aListTrustPath); break;
          case aDeArmor: set_cmd( &cmd, aDeArmor); break;
          case aEnArmor: set_cmd( &cmd, aEnArmor); break;
@@ -856,6 +859,7 @@ main( int argc, char **argv )
       case aGenRandom:
       case aDeArmor:
       case aEnArmor:
+      case aFixTrustDB:
        break;
       case aKMode:
       case aListKeys:
@@ -1165,6 +1169,12 @@ main( int argc, char **argv )
        }
        break;
 
+      case aFixTrustDB:
+       log_error("this command ist not yet implemented.\"\n");
+       log_error("A workaround is to use \"--export-ownertrust\", remove\n");
+       log_error("the trustdb file and do an \"--import-ownertrust\".\n" );
+       break;
+
       case aListTrustPath:
        if( argc != 2 )
            wrong_args("--list-trust-path [-- -]<maxdepth> <username>");
index 9387a76..6f9c1c7 100644 (file)
@@ -212,6 +212,7 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified )
     int rc = 0;
     SK_LIST sk_list = NULL;
     SK_LIST sk_rover = NULL;
+    PKT_secret_key *sk = NULL;
     KBNODE node, uidnode;
     PKT_public_key *primary_pk;
     int select_all = !count_selected_uids(keyblock);
@@ -228,7 +229,14 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified )
        size_t n;
        char *p;
 
-       keyid_from_sk( sk_rover->sk, sk_keyid );
+       /* we have to use a copy of the sk, because make_keysig_packet
+        * may remove the protection from sk and if we did other
+        * changes to the secret key, we would save the unprotected
+        * version */
+       if( sk )
+           free_secret_key(sk);
+       sk = copy_secret_key( NULL, sk_rover->sk );
+       keyid_from_sk( sk, sk_keyid );
        /* set mark A for all selected user ids */
        for( node=keyblock; node; node = node->next ) {
            if( select_all || (node->flag & NODFLG_SELUID) )
@@ -261,6 +269,7 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified )
        /* Ask whether we really should sign these user id(s) */
        tty_printf("\n");
        show_key_with_all_names( keyblock, 1, 1, 0, 0 );
+       tty_printf("\n");
        tty_printf(_(
             "Are you really sure that you want to sign this key\n"
             "with your key: \""));
@@ -287,7 +296,7 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified )
                rc = make_keysig_packet( &sig, primary_pk,
                                               node->pkt->pkt.user_id,
                                               NULL,
-                                              sk_rover->sk,
+                                              sk,
                                               0x10, 0, NULL, NULL );
                if( rc ) {
                    log_error(_("signing failed: %s\n"), g10_errstr(rc));
@@ -311,6 +320,8 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified )
 
   leave:
     release_sk_list( sk_list );
+    if( sk )
+       free_secret_key(sk);
     return rc;
 }
 
@@ -587,10 +598,13 @@ keyedit_menu( const char *username, STRLIST locusr )
                        break;
                    }
                }
-               /* FIXME: UPDATE/INVALIDATE trustdb !! */
            }
            else
                tty_printf(_("Key not changed so no update needed.\n"));
+           rc = update_trust_record( keyblock );
+           if( rc )
+               log_error(_("update of trust db failed: %s\n"),
+                           g10_errstr(rc) );
            goto leave;
 
          case cmdLIST:
@@ -643,6 +657,14 @@ keyedit_menu( const char *username, STRLIST locusr )
            if( menu_adduid( keyblock, sec_keyblock ) ) {
                redisplay = 1;
                sec_modified = modified = 1;
+               /* must update the trustdb already here, so that preferences
+                * get listed correctly */
+               rc = update_trust_record( keyblock );
+               if( rc ) {
+                   log_error(_("update of trust db failed: %s\n"),
+                               g10_errstr(rc) );
+                   rc = 0;
+               }
            }
            break;
 
@@ -808,8 +830,10 @@ show_key_with_all_names( KBNODE keyblock, int only_marked,
                          expirestr_from_pk(pk) );
            if( node->pkt->pkttype == PKT_PUBLIC_KEY ) {
                tty_printf(" trust: %c/%c", otrust, trust );
-               if( with_fpr  )
+               if( with_fpr  ) {
+                   tty_printf("\n");
                    show_fingerprint( pk );
+               }
            }
            tty_printf("\n");
        }
@@ -933,7 +957,7 @@ menu_adduid( KBNODE pub_keyblock, KBNODE sec_keyblock )
        pub_where = NULL;
     for( node = sec_keyblock; node; sec_where = node, node = node->next ) {
        if( node->pkt->pkttype == PKT_SECRET_KEY )
-           sk = node->pkt->pkt.secret_key;
+           sk = copy_secret_key( NULL, node->pkt->pkt.secret_key);
        else if( node->pkt->pkttype == PKT_SECRET_SUBKEY )
            break;
     }
@@ -943,6 +967,7 @@ menu_adduid( KBNODE pub_keyblock, KBNODE sec_keyblock )
 
     rc = make_keysig_packet( &sig, pk, uid, NULL, sk, 0x13, 0,
                             keygen_add_std_prefs, sk );
+    free_secret_key( sk );
     if( rc ) {
        log_error("signing failed: %s\n", g10_errstr(rc) );
        free_user_id(uid);
index 272a861..0cccd28 100644 (file)
@@ -153,9 +153,7 @@ _("Could not find a valid trust path to the key.  Let's see whether we\n"
 
     lid = pk->local_id;
     while( !(rc=enum_trust_web( &context, &lid )) ) {
-       rc = get_ownertrust( lid, &trust );
-       if( rc )
-           log_fatal("Ooops: couldn't get owner trust for %lu\n", lid);
+       trust = get_ownertrust( lid );
        if( trust == TRUST_UNDEFINED || trust == TRUST_EXPIRED ||
            trust == TRUST_UNKNOWN ) {
            if( edit_ownertrust( lid, 0 ) )
index ef29742..70cf4a1 100644 (file)
@@ -369,10 +369,12 @@ tdbio_dump_record( TRUSTREC *rec, FILE *fp  )
     fprintf(fp, "rec %5lu, ", rnum );
 
     switch( rec->rectype ) {
-      case 0: fprintf(fp, "free\n");
+      case 0: fprintf(fp, "blank\n");
        break;
-      case RECTYPE_VER: fprintf(fp, "version, keyhashtbl=%lu\n",
-           rec->r.ver.keyhashtbl );
+      case RECTYPE_VER: fprintf(fp, "version, keyhashtbl=%lu, firstfree=%lu\n",
+           rec->r.ver.keyhashtbl, rec->r.ver.firstfree );
+       break;
+      case RECTYPE_FREE: fprintf(fp, "free, next=%lu\n", rec->r.free.next );
        break;
       case RECTYPE_DIR:
        fprintf(fp, "dir %lu, keys=%lu, uids=%lu, cach=%lu, ot=%02x",
@@ -505,6 +507,7 @@ tdbio_read_record( ulong recnum, TRUSTREC *rec, int expected )
        rec->r.ver.modified = buftoulong(p); p += 4;
        rec->r.ver.validated= buftoulong(p); p += 4;
        rec->r.ver.keyhashtbl=buftoulong(p); p += 4;
+       rec->r.ver.firstfree =buftoulong(p); p += 4;
        if( recnum ) {
            log_error_f( db_name, "version record with recnum %lu\n",
                                                             (ulong)recnum );
@@ -516,6 +519,9 @@ tdbio_read_record( ulong recnum, TRUSTREC *rec, int expected )
            rc = G10ERR_TRUSTDB;
        }
        break;
+      case RECTYPE_FREE:
+       rec->r.free.next  = buftoulong(p); p += 4;
+       break;
       case RECTYPE_DIR:   /*directory record */
        rec->r.dir.lid      = buftoulong(p); p += 4;
        rec->r.dir.keylist  = buftoulong(p); p += 4;
@@ -619,6 +625,11 @@ tdbio_write_record( TRUSTREC *rec )
        ulongtobuf(p, rec->r.ver.modified); p += 4;
        ulongtobuf(p, rec->r.ver.validated); p += 4;
        ulongtobuf(p, rec->r.ver.keyhashtbl); p += 4;
+       ulongtobuf(p, rec->r.ver.firstfree ); p += 4;
+       break;
+
+      case RECTYPE_FREE:
+       ulongtobuf(p, rec->r.free.next); p += 4;
        break;
 
       case RECTYPE_DIR:   /*directory record */
@@ -707,11 +718,22 @@ tdbio_write_record( TRUSTREC *rec )
 int
 tdbio_delete_record( ulong recnum )
 {
-    TRUSTREC rec;
+    TRUSTREC vr, rec;
+    int rc;
+
+    rc = tdbio_read_record( 0, &vr, RECTYPE_VER );
+    if( rc )
+       log_fatal_f( db_name, _("error reading version record: %s\n"),
+                                                       g10_errstr(rc) );
 
     rec.recnum = recnum;
-    rec.rectype = 0;
-    return tdbio_write_record( &rec );
+    rec.rectype = RECTYPE_FREE;
+    rec.r.free.next = vr.r.ver.firstfree;
+    vr.r.ver.firstfree = recnum;
+    rc = tdbio_write_record( &rec );
+    if( !rc )
+       rc = tdbio_write_record( &vr );
+    return rc;
 }
 
 /****************
@@ -722,25 +744,55 @@ tdbio_new_recnum()
 {
     off_t offset;
     ulong recnum;
-    TRUSTREC rec;
+    TRUSTREC vr, rec;
     int rc;
 
-    /* fixme: look for unused records */
-    offset = lseek( db_fd, 0, SEEK_END );
-    if( offset == -1 )
-       log_fatal("trustdb: lseek to end failed: %s\n", strerror(errno) );
-    recnum = offset / TRUST_RECORD_LEN;
-    assert(recnum); /* this is will never be the first record */
-
-    /* we must write a record, so that the next call to this function
-     * returns another recnum */
-    memset( &rec, 0, sizeof rec );
-    rec.rectype = 0; /* free record */
-    rec.recnum = recnum;
-    rc = tdbio_write_record( &rec );
+    /* look for unused records */
+    rc = tdbio_read_record( 0, &vr, RECTYPE_VER );
     if( rc )
-       log_fatal_f(db_name,_("failed to append a record: %s\n"),
-                                           g10_errstr(rc));
+       log_fatal_f( db_name, _("error reading version record: %s\n"),
+                                                       g10_errstr(rc) );
+    if( vr.r.ver.firstfree ) {
+       recnum = vr.r.ver.firstfree;
+       rc = tdbio_read_record( recnum, &rec, RECTYPE_FREE );
+       if( rc ) {
+           log_error_f( db_name, _("error reading free record: %s\n"),
+                                                           g10_errstr(rc) );
+           return rc;
+       }
+       /* update dir record */
+       vr.r.ver.firstfree = rec.r.free.next;
+       rc = tdbio_write_record( &vr );
+       if( rc ) {
+           log_error_f( db_name, _("error writing dir record: %s\n"),
+                                                           g10_errstr(rc) );
+           return rc;
+       }
+       /*zero out the new record */
+       memset( &rec, 0, sizeof rec );
+       rec.rectype = 0; /* unused record */
+       rec.recnum = recnum;
+       rc = tdbio_write_record( &rec );
+       if( rc )
+           log_fatal_f(db_name,_("failed to zero a record: %s\n"),
+                                               g10_errstr(rc));
+    }
+    else { /* not found, append a new record */
+       offset = lseek( db_fd, 0, SEEK_END );
+       if( offset == -1 )
+           log_fatal("trustdb: lseek to end failed: %s\n", strerror(errno) );
+       recnum = offset / TRUST_RECORD_LEN;
+       assert(recnum); /* this is will never be the first record */
+       /* we must write a record, so that the next call to this function
+        * returns another recnum */
+       memset( &rec, 0, sizeof rec );
+       rec.rectype = 0; /* unused record */
+       rec.recnum = recnum;
+       rc = tdbio_write_record( &rec );
+       if( rc )
+           log_fatal_f(db_name,_("failed to append a record: %s\n"),
+                                               g10_errstr(rc));
+    }
     return recnum ;
 }
 
index 0cbb851..b59b4e4 100644 (file)
@@ -42,6 +42,7 @@
 #define RECTYPE_CACH 9
 #define RECTYPE_HTBL 10
 #define RECTYPE_HLST 11
+#define RECTYPE_FREE 254
 
 
 #define DIRF_CHECKED  1 /* everything has been checked, the other bits are
@@ -58,9 +59,8 @@
 
 struct trust_record {
     int  rectype;
-    struct trust_record *next; /* help pointer to build lists in memory */
-    struct trust_record *help_pref;
     int  mark;
+    struct trust_record *next; /* help pointer to build lists in memory */
     ulong recnum;
     union {
        struct {             /* version record: */
@@ -69,7 +69,11 @@ struct trust_record {
            ulong modified;  /* timestamp of last modification */
            ulong validated; /* timestamp of last validation   */
            ulong keyhashtbl;
+           ulong firstfree;
        } ver;
+       struct {            /* free record */
+           ulong next;
+       } free;
        struct {            /* directory record */
            ulong lid;
            ulong keylist;  /* List of keys (the first is the primary key)*/
index 702ce8e..78b7b0a 100644 (file)
@@ -77,6 +77,14 @@ typedef struct {
 } ENUM_TRUST_WEB_CONTEXT;
 
 
+struct recno_list_struct {
+    struct recno_list_struct *next;
+    ulong recno;
+    int type;
+};
+typedef struct recno_list_struct *RECNO_LIST;
+
+
 static int walk_sigrecs( SIGREC_CONTEXT *c, int create );
 
 static LOCAL_ID_INFO *new_lid_table(void);
@@ -105,11 +113,107 @@ static TRUST_SEG_LIST last_trust_web_tslist;
 
 #define HEXTOBIN(a) ( (a) >= '0' && (a) <= '9' ? ((a)-'0') : \
                      (a) >= 'A' && (a) <= 'F' ? ((a)-'A'+10) : ((a)-'a'+10))
+
+
+\f
+/**********************************************
+ ***********  record read write  **************
+ **********************************************/
+
+static void
+die_invalid_db()
+{
+    log_error(_(
+       "The trust DB is corrupted; please run \"gpgm --fix-trust-db\".\n") );
+    g10_exit(2);
+}
+
+/****************
+ * Read a record but die if it does not exist
+ */
+static void
+read_record( ulong recno, TRUSTREC *rec, int rectype )
+{
+    int rc = tdbio_read_record( recno, rec, rectype );
+    if( !rc )
+       return;
+    log_error("trust record %lu, req type %d: read failed: %s\n",
+                                   recno, rectype,  g10_errstr(rc) );
+    die_invalid_db();
+}
+
+
+/****************
+ * Wirte a record but die on error
+ */
+static void
+write_record( TRUSTREC *rec )
+{
+    int rc = tdbio_write_record( rec );
+    if( !rc )
+       return;
+    log_error("trust record %lu, type %d: write failed: %s\n",
+                           rec->recnum, rec->rectype, g10_errstr(rc) );
+    die_invalid_db();
+}
+
+/****************
+ * Delete a record but die on error
+ */
+static void
+delete_record( ulong recno )
+{
+    int rc = tdbio_delete_record( recno );
+    if( !rc )
+       return;
+    log_error("trust record %lu: delete failed: %s\n",
+                                             recno, g10_errstr(rc) );
+    die_invalid_db();
+}
+
+
 \f
 /**********************************************
  ************* list helpers *******************
  **********************************************/
 
+/****************
+ * Insert a new item into a recno list
+ */
+static void
+ins_recno_list( RECNO_LIST *head, ulong recno, int type )
+{
+    RECNO_LIST item = m_alloc( sizeof *item );
+
+    item->recno = recno;
+    item->type = type;
+    item->next = *head;
+    *head = item;
+}
+
+static RECNO_LIST
+qry_recno_list( RECNO_LIST list, ulong recno, int type )
+{
+    for( ; list; list = list->next ) {
+       if( list->recno == recno && (!type || list->type == type) )
+           return list;
+    }
+    return NULL;
+}
+
+
+static void
+rel_recno_list( RECNO_LIST *head )
+{
+    RECNO_LIST r, r2;
+
+    for(r = *head; r; r = r2 ) {
+       r2 = r->next;
+       m_free(r);
+    }
+    *head = NULL;
+}
+
 static LOCAL_ID_INFO *
 new_lid_table(void)
 {
@@ -263,12 +367,7 @@ walk_sigrecs( SIGREC_CONTEXT *c, int create )
     r = &c->ctl.rec;
     if( !c->ctl.init_done ) {
        c->ctl.init_done = 1;
-       rc = tdbio_read_record( c->lid, r, RECTYPE_DIR );
-       if( rc ) {
-           log_error("LID %lu: error reading dir record: %s\n",
-                                   c->lid, g10_errstr(rc));
-           return rc;
-       }
+       read_record( c->lid, r, RECTYPE_DIR );
        c->ctl.nextuid = r->r.dir.uidlist;
        /* force a read (what a bad bad hack) */
        c->ctl.index = SIGS_PER_RECORD;
@@ -280,13 +379,7 @@ walk_sigrecs( SIGREC_CONTEXT *c, int create )
        if( c->ctl.index >= SIGS_PER_RECORD ) { /* read the record */
            rnum = r->r.sig.next;
            if( !rnum && c->ctl.nextuid ) { /* read next uid record */
-               rc = tdbio_read_record( c->ctl.nextuid, r, RECTYPE_UID );
-               if( rc ) {
-                   log_error("error reading next uidrec: %s\n",
-                                                   g10_errstr(rc));
-                   c->ctl.eof = 1;
-                   return rc;
-               }
+               read_record( c->ctl.nextuid, r, RECTYPE_UID );
                if( !r->r.uid.siglist && create ) {
                    rc = update_sigs_by_lid( c->lid );
                    if( rc ) {
@@ -299,12 +392,7 @@ walk_sigrecs( SIGREC_CONTEXT *c, int create )
                        c->ctl.eof = 1;
                        return rc;
                    }
-                   rc = tdbio_read_record( c->ctl.nextuid, r, RECTYPE_UID );
-                   if( rc ) {
-                       log_error("LID %lu: error re-reading uid record: %s\n",
-                                               c->lid, g10_errstr(rc));
-                       return rc;
-                   }
+                   read_record( c->ctl.nextuid, r, RECTYPE_UID );
                }
                c->ctl.nextuid = r->r.uid.next;
                rnum = r->r.uid.siglist;
@@ -313,16 +401,11 @@ walk_sigrecs( SIGREC_CONTEXT *c, int create )
                c->ctl.eof = 1;
                return -1;  /* return eof */
            }
-           rc = tdbio_read_record( rnum, r, RECTYPE_SIG );
-           if( rc ) {
-               log_error(_("error reading sigrec: %s\n"), g10_errstr(rc));
-               c->ctl.eof = 1;
-               return rc;
-           }
+           read_record( rnum, r, RECTYPE_SIG );
            if( r->r.sig.lid != c->lid ) {
                log_error(_("chained sigrec %lu has a wrong owner\n"), rnum );
                c->ctl.eof = 1;
-               return G10ERR_TRUSTDB;
+               die_invalid_db();
            }
            c->ctl.index = 0;
        }
@@ -694,14 +777,11 @@ find_urec( TRUSTREC *dir, PKT_user_id *uid, TRUSTREC *urec )
 {
     byte nhash[20];
     ulong recno;
-    int rc;
 
     assert(dir->rectype == RECTYPE_DIR );
     rmd160_hash_buffer( nhash, uid->name, uid->len );
     for( recno=dir->r.dir.uidlist; recno; recno = urec->r.uid.next ) {
-       rc = tdbio_read_record( recno, urec, RECTYPE_UID );
-       if( rc )
-           return rc == -1 ? G10ERR_READ_FILE : rc;
+       read_record( recno, urec, RECTYPE_UID );
        if( !memcmp( nhash, urec->r.uid.namehash, 20 ) )
            return 0;
     }
@@ -770,7 +850,6 @@ no_selfsig_del( ulong lid, u32 *keyid, TRUSTREC *urec )
 static int
 write_sigs_from_urec( ulong lid, u32 *keyid, TRUSTREC *urec )
 {
-    int rc;
     TRUSTREC *rec, srec;
     ulong nextrecno;
     ulong recno;
@@ -780,12 +859,7 @@ write_sigs_from_urec( ulong lid, u32 *keyid, TRUSTREC *urec )
     for( rec = urec->next; rec; rec = rec->next ) {
        assert( rec->rectype == RECTYPE_SIG );
        if( nextrecno ) { /* read the sig record, so it can be reused */
-           rc = tdbio_read_record( nextrecno, &srec, RECTYPE_SIG );
-           if( rc ) {
-               log_error("write_sig_from_urec: read sigrecno %lu failed: %s\n",
-                                                 nextrecno, g10_errstr(rc) );
-               return rc;
-           }
+           read_record( nextrecno, &srec, RECTYPE_SIG );
            recno = nextrecno;
            nextrecno = srec.r.sig.next;
        }
@@ -798,41 +872,20 @@ write_sigs_from_urec( ulong lid, u32 *keyid, TRUSTREC *urec )
        rec->r.sig.lid = lid;
        /* and write */
        rec->recnum = recno;
-       rc = tdbio_write_record( rec );
-       if( rc ) {
-           log_error("write_sig_from_urec: write sigrecno %lu failed: %s\n",
-                                                 recno, g10_errstr(rc) );
-           return rc;
-       }
+       write_record( rec );
     }
 
     /* write the urec back */
-    rc = tdbio_write_record( urec );
-    if( rc ) {
-       log_error("write_sig_from_urec: write urec %lu failed: %s\n",
-                                           urec->recnum, g10_errstr(rc) );
-       return rc;
-    }
+    write_record( urec );
 
     /* delete remaining old sigrecords */
     while( nextrecno ) {
-       rc = tdbio_read_record( nextrecno, &srec, RECTYPE_SIG );
-       if( rc ) {
-           log_error("write_sig_from_urec: read sigrecno %lu failed: %s\n",
-                                             nextrecno, g10_errstr(rc) );
-           return rc;
-       }
-       rc = tdbio_delete_record( nextrecno );
-       if( rc ) {
-           log_error("write_sig_from_urec: delete old %lu failed: %s\n",
-                                             nextrecno, g10_errstr(rc) );
-           return rc;
-
-       }
+       read_record( nextrecno, &srec, RECTYPE_SIG );
+       delete_record( nextrecno );
        nextrecno = srec.r.sig.next;
     }
 
-    return rc;
+    return 0;
 }
 
 /****************
@@ -856,10 +909,7 @@ update_sigs( TRUSTREC *dir )
     if( DBG_TRUST )
        log_debug("update_sigs for %lu\n", lid );
 
-    if( (rc=tdbio_read_record( dir->r.dir.keylist, &krec, RECTYPE_KEY )) ) {
-       log_error("update_sigs: can't read primary key for %lu\n", lid);
-       goto leave;
-    }
+    read_record( dir->r.dir.keylist, &krec, RECTYPE_KEY );
     rc = get_keyblock_byfprint( &keyblock, krec.r.key.fingerprint,
                                           krec.r.key.fingerprint_len );
     if( rc ) {
@@ -978,11 +1028,7 @@ update_sigs( TRUSTREC *dir )
        dir->r.dir.dirflags |= DIRF_MISKEY;
     else
        dir->r.dir.dirflags &= ~DIRF_MISKEY;
-    rc = tdbio_write_record( dir );
-    if( rc ) {
-       log_error("update_sigs: write dir record failed: %s\n", g10_errstr(rc));
-       return rc;
-    }
+    write_record( dir );
 
   leave:
     /* fixme: need more cleanup in case of an error */
@@ -999,12 +1045,7 @@ update_sigs_by_lid( ulong lid )
     int rc;
     TRUSTREC rec;
 
-    rc = tdbio_read_record( lid, &rec, RECTYPE_DIR );
-    if( rc ) {
-       log_error("LID %lu: error reading dir record: %s\n",
-                               lid, g10_errstr(rc));
-       return rc;
-    }
+    read_record( lid, &rec, RECTYPE_DIR );
     if( !(rec.r.dir.dirflags & DIRF_CHECKED) )
        rc = update_sigs( &rec );
     return rc;
@@ -1072,7 +1113,7 @@ make_tsl( ulong lid, TRUST_SEG_LIST *ret_tslist )
 static int
 propagate_trust( TRUST_SEG_LIST tslist )
 {
-    int i, rc;
+    int i;
     unsigned trust, tr;
     TRUST_SEG_LIST tsl;
 
@@ -1089,9 +1130,7 @@ propagate_trust( TRUST_SEG_LIST tslist )
            tsl->seg[i].trust = trust;
            if( i > 0 ) {
                /* get the trust of this pubkey */
-               rc = get_ownertrust( tsl->seg[i].lid, &tr );
-               if( rc )
-                   return rc;
+               tr = get_ownertrust( tsl->seg[i].lid );
                if( tr < trust )
                    trust = tr;
            }
@@ -1395,10 +1434,7 @@ import_ownertrust( const char *fname )
                log_info("LID %lu: setting trust to %u\n",
                                   rec.r.dir.lid, otrust );
            rec.r.dir.ownertrust = otrust;
-           rc = tdbio_write_record( &rec );
-           if( rc )
-               log_error_f(fname, "error updating otrust: %s\n",
-                                                   g10_errstr(rc));
+           write_record( &rec );
        }
        else if( rc == -1 ) { /* not found; get the key from the ring */
            PKT_public_key *pk = m_alloc_clear( sizeof *pk );
@@ -1608,10 +1644,7 @@ check_trust( PKT_public_key *pk, unsigned *r_trustlevel )
 
     /* get the pubkey record */
     if( pk->local_id ) {
-       if( tdbio_read_record( pk->local_id, &rec, RECTYPE_DIR ) ) {
-           log_error("check_trust: read dir record failed\n");
-           return G10ERR_TRUSTDB;
-       }
+       read_record( pk->local_id, &rec, RECTYPE_DIR );
     }
     else { /* no local_id: scan the trustdb */
        if( (rc=tdbio_search_dir_bypk( pk, &rec )) && rc != -1 ) {
@@ -1629,10 +1662,7 @@ check_trust( PKT_public_key *pk, unsigned *r_trustlevel )
            log_info(_("key %08lX.%lu: inserted into trustdb\n"),
                                          (ulong)keyid[1], pk->local_id );
            /* and re-read the dir record */
-           if( tdbio_read_record( pk->local_id, &rec, RECTYPE_DIR ) ) {
-               log_error("check_trust: reread dir record failed\n");
-               return G10ERR_TRUSTDB;
-           }
+           read_record( pk->local_id, &rec, RECTYPE_DIR );
        }
     }
     cur_time = make_timestamp();
@@ -1762,18 +1792,13 @@ enum_trust_web( void **context, ulong *lid )
 /****************
  * Return the assigned ownertrust value for the given LID
  */
-int
-get_ownertrust( ulong lid, unsigned *r_otrust )
+unsigned
+get_ownertrust( ulong lid )
 {
     TRUSTREC rec;
 
-    if( tdbio_read_record( lid, &rec, RECTYPE_DIR ) ) {
-       log_error("get_ownertrust: read dir record failed\n");
-       return G10ERR_TRUSTDB;
-    }
-    if( r_otrust )
-       *r_otrust = rec.r.dir.ownertrust;
-    return 0;
+    read_record( lid, &rec, RECTYPE_DIR );
+    return rec.r.dir.ownertrust;
 }
 
 int
@@ -1782,8 +1807,7 @@ get_ownertrust_info( ulong lid )
     unsigned otrust;
     int c;
 
-    if( get_ownertrust( lid, &otrust ) )
-       return '?';
+    otrust = get_ownertrust( lid );
     switch( (otrust & TRUST_MASK) ) {
       case TRUST_NEVER:     c = 'n'; break;
       case TRUST_MARGINAL:  c = 'm'; break;
@@ -1800,30 +1824,15 @@ get_pref_data( ulong lid, const byte *namehash, size_t *ret_n )
 {
     TRUSTREC rec;
     ulong recno;
-    int rc;
-
-    if( tdbio_read_record( lid, &rec, RECTYPE_DIR ) ) {
-       log_error("get_pref_data: read dir record failed\n");
-       return NULL;
-    }
 
+    read_record( lid, &rec, RECTYPE_DIR );
     for( recno=rec.r.dir.uidlist; recno; recno = rec.r.uid.next ) {
-       rc = tdbio_read_record( recno, &rec, RECTYPE_UID );
-       if( rc ) {
-           log_error("get_pref_data: read uid record failed: %s\n",
-                                                    g10_errstr(rc));
-           return NULL;
-       }
+       read_record( recno, &rec, RECTYPE_UID );
        if( rec.r.uid.prefrec
            && ( !namehash || !memcmp(namehash, rec.r.uid.namehash, 20) ))  {
            byte *buf;
            /* found the correct one or the first one */
-           rc = tdbio_read_record( rec.r.uid.prefrec, &rec, RECTYPE_PREF );
-           if( rc ) {
-               log_error("get_pref_data: read pref record failed: %s\n",
-                                                        g10_errstr(rc));
-               return NULL;
-           }
+           read_record( rec.r.uid.prefrec, &rec, RECTYPE_PREF );
            if( rec.r.pref.next )
                log_info("warning: can't yet handle long pref records\n");
            buf = m_alloc( ITEMS_PER_PREF_RECORD );
@@ -1845,28 +1854,14 @@ is_algo_in_prefs( ulong lid, int preftype, int algo )
 {
     TRUSTREC rec;
     ulong recno;
-    int i, rc;
+    int i;
     byte *pref;
 
-    if( tdbio_read_record( lid, &rec, RECTYPE_DIR ) ) {
-       log_error("is_algo_in_prefs: read dir record failed\n");
-       return 0;
-    }
-
+    read_record( lid, &rec, RECTYPE_DIR );
     for( recno=rec.r.dir.uidlist; recno; recno = rec.r.uid.next ) {
-       rc = tdbio_read_record( recno, &rec, RECTYPE_UID );
-       if( rc ) {
-           log_error("is_algo_in_prefs: read uid record failed: %s\n",
-                                                    g10_errstr(rc));
-           return 0;
-       }
+       read_record( recno, &rec, RECTYPE_UID );
        if( rec.r.uid.prefrec ) {
-           rc = tdbio_read_record( rec.r.uid.prefrec, &rec, RECTYPE_PREF );
-           if( rc ) {
-               log_error("is_algo_in_prefs: read pref record failed: %s\n",
-                                                        g10_errstr(rc));
-               return 0;
-           }
+           read_record( rec.r.uid.prefrec, &rec, RECTYPE_PREF );
            if( rec.r.pref.next )
                log_info("warning: can't yet handle long pref records\n");
            pref = rec.r.pref.data;
@@ -1886,10 +1881,7 @@ get_dir_record( PKT_public_key *pk, TRUSTREC *rec )
     int rc=0;
 
     if( pk->local_id ) {
-       if( tdbio_read_record( pk->local_id, rec, RECTYPE_DIR ) ) {
-           log_error("get_dir_record: read record failed\n");
-           rc = G10ERR_TRUSTDB;
-       }
+       read_record( pk->local_id, rec, RECTYPE_DIR );
     }
     else { /* no local_id: scan the trustdb */
        if( (rc=tdbio_search_dir_bypk( pk, rec )) && rc != -1 )
@@ -1931,12 +1923,7 @@ clear_trust_checked_flag( PKT_public_key *pk )
 
     /* reset the flag */
     rec.r.dir.dirflags &= ~DIRF_CHECKED;
-    rc = tdbio_write_record( &rec );
-    if( rc ) {
-       log_error("clear_trust_checked_flag: write dir record failed: %s\n",
-                                                             g10_errstr(rc));
-       return rc;
-    }
+    write_record( &rec );
     return 0;
 }
 
@@ -1945,7 +1932,6 @@ clear_trust_checked_flag( PKT_public_key *pk )
 /****************
  * Update all the info from the public keyblock,  the signatures-checked
  * flag is reset. The key must already exist in the keydb.
- * Note: This function clears all keyblock flags.
  *
  * Implementation of this function needs a cache for tdbio record updates
  */
@@ -1955,55 +1941,59 @@ update_trust_record( KBNODE keyblock )
     PKT_public_key *primary_pk;
     KBNODE node;
     TRUSTREC drec;
+    TRUSTREC krec;
+    TRUSTREC prec;
+    TRUSTREC urec;
+    TRUSTREC helprec;
     int modified = 0;
     int rc = 0;
-    ulong recno, newrecno;
+    u32 keyid[2]; /* keyid of primary key */
+    ulong recno, newrecno, lastrecno;
+    ulong uidrecno = 0;
+    byte uidhash[20];
+    RECNO_LIST recno_list = NULL; /* list of verified records */
 
-    clear_kbnode_flags( keyblock );
     node = find_kbnode( keyblock, PKT_PUBLIC_KEY );
     primary_pk = node->pkt->pkt.public_key;
     rc = get_dir_record( primary_pk, &drec );
     if( rc )
        return rc;
-#if 0
+
+    keyid_from_pk( primary_pk, keyid );
+
     /* fixme: start a transaction */
-    /* now upate keys and user ids */
+    /* now update keys and user ids */
     for( node=keyblock; node; node = node->next ) {
        if( node->pkt->pkttype == PKT_PUBLIC_KEY
            || node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
            PKT_public_key *pk = node->pkt->pkt.public_key;
            byte fpr[MAX_FINGERPRINT_LEN];
            size_t fprlen;
-           TRUSTREC krec;
+
+           uidrecno = 0;
 
            fingerprint_from_pk( pk, fpr, &fprlen );
            /* do we already have this key? */
            for( recno=drec.r.dir.keylist; recno; recno = krec.r.key.next ) {
-               rc = tdbio_read_record( recno, &krec, RECTYPE_KEY );
-               if( rc ) {
-                   log_error("lid %lu: read key record failed: %s\n",
-                                       primary_pk->local_id, g10_errstr(rc));
-                   goto leave;
-               }
+               read_record( recno, &krec, RECTYPE_KEY );
                if( krec.r.key.fingerprint_len == fprlen
-                   && !memcmp( krec.r.key.fingerprint_len, fpr, fprlen ) )
+                   && !memcmp( krec.r.key.fingerprint, fpr, fprlen ) )
                    break;
            }
            if( recno ) { /* yes */
+               ins_recno_list( &recno_list, recno, RECTYPE_KEY );
                /* here we would compare/update the keyflags */
            }
            else { /* no: insert this new key */
-               memset( krec, 0, sizeof(krec) );
+               memset( &krec, 0, sizeof(krec) );
                krec.rectype = RECTYPE_KEY;
+               krec.r.key.lid = drec.recnum;
                krec.r.key.pubkey_algo = pk->pubkey_algo;
                krec.r.key.fingerprint_len = fprlen;
                memcpy(krec.r.key.fingerprint, fpr, fprlen );
                krec.recnum = newrecno = tdbio_new_recnum();
-               if( tdbio_write_record( krec ) ) {
-                   log_error("writing key record failed\n");
-                   rc = G10ERR_TRUSTDB;
-                   goto leave;
-               }
+               write_record( &krec );
+               ins_recno_list( &recno_list, newrecno, RECTYPE_KEY );
                /* and put this new record at the end of the keylist */
                if( !(recno=drec.r.dir.keylist) ) {
                    /* this is the first key */
@@ -2011,45 +2001,49 @@ update_trust_record( KBNODE keyblock )
                    modified = 1;
                }
                else { /* we already have key, append it to the list */
-                   for( ; recno; recno = krec.r.key.next ) {
-                       rc = tdbio_read_record( recno, &krec, RECTYPE_KEY );
-                       if( rc ) {
-                           log_error("lid %lu: read key record failed: %s\n",
-                                        primary_pk->local_id, g10_errstr(rc));
-                           goto leave;
-                       }
-                   }
+                   for( ; recno; recno = krec.r.key.next )
+                       read_record( recno, &krec, RECTYPE_KEY );
                    krec.r.key.next = newrecno;
-                   if( tdbio_write_record( krec ) ) {
-                       log_error("writing key record failed\n");
-                       rc = G10ERR_TRUSTDB;
-                       goto leave;
-                   }
+                   write_record( &krec );
                }
            } /* end insert new key */
        } /* end packet type public key packet */
        else if( node->pkt->pkttype == PKT_USER_ID ) {
            PKT_user_id *uid = node->pkt->pkt.user_id;
            TRUSTREC urec;
-           byte nhash[20];
-
-           rmd160_hash_buffer( nhash, uid->name, uid->len );
-           for( recno=dir->r.dir.uidlist; recno; recno = urec->r.uid.next ) {
-               rc = tdbio_read_record( recno, urec, RECTYPE_UID );
-               if( rc ) {
-                   if( rc == -1 )
-                       rc = G10ERR_READ_FILE
-                   log_error("lid %lu, uid %02X%02X: read error\n"
-                              primary_pk->local_id, nhash[18], nhash[19] );
-                   goto leave;
-               }
-               if( !memcmp( nhash, urec->r.uid.namehash, 20 ) )
+
+           rmd160_hash_buffer( uidhash, uid->name, uid->len );
+           for( recno=drec.r.dir.uidlist; recno; recno = urec.r.uid.next ) {
+               read_record( recno, &urec, RECTYPE_UID );
+               if( !memcmp( uidhash, urec.r.uid.namehash, 20 ) )
                    break;
            }
-           if( !recno ) { /* new user id */
-
+           if( recno ) {
+               ins_recno_list( &recno_list, recno, RECTYPE_UID );
+               uidrecno = recno;
+           }
+           else { /* new user id */
+               memset( &urec, 0 , sizeof(urec) );
+               urec.rectype = RECTYPE_UID;
+               urec.r.uid.lid = drec.recnum;
+               memcpy(urec.r.uid.namehash, uidhash, 20 );
+               urec.recnum = newrecno = tdbio_new_recnum();
+               write_record( &urec );
+               ins_recno_list( &recno_list, newrecno, RECTYPE_UID );
+               /* and put this new record at the end of the uidlist */
+               if( !(recno=drec.r.dir.uidlist) ) {
+                   /* this is the first uid */
+                   drec.r.dir.uidlist = newrecno;
+                   modified = 1;
+               }
+               else { /* we already have an uid, append it to the list */
+                   for( ; recno; recno = urec.r.key.next )
+                       read_record( recno, &urec, RECTYPE_UID );
+                   urec.r.uid.next = newrecno;
+                   write_record( &urec );
+               }
+               uidrecno = newrecno;
            }
-
        }
        else if( node->pkt->pkttype == PKT_SIGNATURE ) {
            PKT_signature *sig = node->pkt->pkt.signature;
@@ -2059,15 +2053,14 @@ update_trust_record( KBNODE keyblock )
                /* must verify this selfsignature here, so that we can
                 * build the preference record and validate the uid record
                 */
-               if( !uidlist ) {
+               if( !uidrecno ) {
                    log_error("key %08lX: self-signature without user id\n",
                              (ulong)keyid[1] );
                }
                else if( (rc = check_key_signature( keyblock, node, NULL ))) {
                    log_error("key %08lX, uid %02X%02X: "
-                             "invalid self-signature: %s\n",
-                             (ulong)keyid[1], uidlist->r.uid.namehash[18],
-                             uidlist->r.uid.namehash[19], g10_errstr(rc) );
+                             "invalid self-signature: %s\n", (ulong)keyid[1],
+                                   uidhash[18], uidhash[19], g10_errstr(rc) );
                    rc = 0;
                }
                else { /* build the prefrecord */
@@ -2083,28 +2076,59 @@ update_trust_record( KBNODE keyblock )
                    const byte *s;
                    size_t n;
                    int k, i;
-                   assert(uidlist);
-                   assert(!uidlist->help_pref);
-                   uidlist->mark |= 1; /* mark valid */
+                   ulong recno_tbl[10];
+                   int recno_idx = 0;
 
+                   read_record( uidrecno, &urec, RECTYPE_UID );
+
+                   /* first delete all pref records */
+                   for(recno=urec.r.uid.prefrec ; recno;
+                                                  recno = prec.r.pref.next ) {
+                       read_record( recno, &prec, RECTYPE_PREF );
+                       delete_record( recno );
+                   }
+
+                   /* and write the new ones */
                    i = 0;
                    for(k=0; prefs[k].subpkttype; k++ ) {
                        s = parse_sig_subpkt2( sig, prefs[k].subpkttype, &n );
                        if( s ) {
                            while( n ) {
                                if( !i || i >= ITEMS_PER_PREF_RECORD ) {
-                                   rec = m_alloc_clear( sizeof *rec );
-                                   rec->rectype = RECTYPE_PREF;
-                                   rec->next = uidlist->help_pref;
-                                   uidlist->help_pref = rec;
+                                   if( recno_idx >= DIM(recno_tbl)-1 ) {
+                                       log_info("too many preferences\n");
+                                       break;
+                                   }
+                                   if( i ) {
+                                       recno_tbl[recno_idx]=tdbio_new_recnum();
+                                       prec.recnum = recno_tbl[recno_idx++];
+                                       write_record( &prec );
+                                   }
+                                   memset( &prec, 0, sizeof prec );
+                                   prec.rectype = RECTYPE_PREF;
+                                   prec.r.pref.lid = drec.recnum;
                                    i = 0;
                                }
-                               rec->r.pref.data[i++] = prefs[k].preftype;
-                               rec->r.pref.data[i++] = *s++;
+                               prec.r.pref.data[i++] = prefs[k].preftype;
+                               prec.r.pref.data[i++] = *s++;
                                n--;
                            }
                        }
                    }
+                   if( i ) { /* write the last one */
+                       recno_tbl[recno_idx]=tdbio_new_recnum();
+                       prec.recnum = recno_tbl[recno_idx++];
+                       write_record( &prec );
+                   }
+                   /* now link them together */
+                   for(i=0; i < recno_idx-1; i++ ) {
+                       read_record( recno_tbl[i], &prec, RECTYPE_PREF );
+                       prec.r.pref.next = recno_tbl[i+1];
+                       write_record( &prec );
+                   }
+                   /* don't need to write the last one, but update the uid */
+                   urec.r.uid.prefrec = recno_idx? recno_tbl[0] : 0;
+                   write_record( &urec );
                }
            }
            else if( 0 /* is revocation sig etc */ ) {
@@ -2115,44 +2139,67 @@ update_trust_record( KBNODE keyblock )
        }
     } /* end loop over all nodes */
 
-    if( drec.r.dir.dirflags & DIRF_CHECKED ) /* <<--- FIXME: remove this! */
-       modified = 1;
 
-  leave:
+    /* now delete keyrecords from the trustdb which are not anymore used */
+    lastrecno = 0;
+    for( recno=drec.r.dir.keylist; recno; recno = krec.r.key.next ) {
+       read_record( recno, &krec, RECTYPE_KEY );
+       if( !qry_recno_list( recno_list, recno, RECTYPE_KEY ) ) {
+           /* delete this one */
+           if( !lastrecno ) {
+               drec.r.dir.keylist = krec.r.key.next;
+               modified = 1;
+           }
+           else {
+               read_record( lastrecno, &helprec, RECTYPE_KEY );
+               helprec.r.key.next = krec.r.key.next;
+               write_record( &helprec );
+           }
+           delete_record( recno );
+       }
+       else
+           lastrecno = recno;
+    }
+    /* now delete uid records and their pref records from the
+     * trustdb which are not anymore used */
+    lastrecno = 0;
+    for( recno=drec.r.dir.uidlist; recno; recno = urec.r.uid.next ) {
+       read_record( recno, &urec, RECTYPE_UID );
+       if( !qry_recno_list( recno_list, recno, RECTYPE_UID ) ) {
+           ulong r2;
+           /* delete this one */
+           if( !lastrecno ) {
+               drec.r.dir.uidlist = urec.r.uid.next;
+               modified = 1;
+           }
+           else {
+               read_record( lastrecno, &helprec, RECTYPE_UID );
+               helprec.r.uid.next = urec.r.uid.next;
+               write_record( &helprec );
+           }
+           for(r2=urec.r.uid.prefrec ; r2; r2 = prec.r.pref.next ) {
+               read_record( r2, &prec, RECTYPE_PREF );
+               delete_record( r2 );
+           }
+           delete_record( recno );
+       }
+       else
+           lastrecno = recno;
+    }
+
+
+
     if( rc )
        ; /* fixme: cancel transaction */
     else if( modified ) {
-       /* reset the checked flag */
-       drec.r.dir.dirflags &= ~DIRF_CHECKED;
-       rc = tdbio_write_record( &drec );
-       if( rc )
-           log_error("update_trust_record: write dir record failed: %s\n",
-                                                           g10_errstr(rc));
+       drec.r.dir.dirflags &= ~DIRF_CHECKED; /* reset flag */
+       write_record( &drec );
        /* fixme: commit_transaction */
     }
-#endif
+    rel_recno_list( &recno_list );
     return rc;
 }
 
-/****************
- * helper function for insert_trust_record()
- */
-static void
-rel_mem_uidnode( u32 *keyid, int err, TRUSTREC *rec )
-{
-    TRUSTREC *r, *r2;
-
-    if( err )
-       log_error("key %08lX, uid %02X%02X: invalid user id - removed\n",
-           (ulong)keyid[1], rec->r.uid.namehash[18], rec->r.uid.namehash[19] );
-    for(r=rec->help_pref; r; r = r2 ) {
-       r2 = r->next;
-       m_free(r);
-    }
-
-    m_free(rec);
-}
-
 
 /****************
  * Insert a trust record into the TrustDB
@@ -2160,36 +2207,22 @@ rel_mem_uidnode( u32 *keyid, int err, TRUSTREC *rec )
  *
  * We build everything we can do at this point. We cannot build
  * the sig records, because their LIDs are needed and we may not have them.
- *
- *
- * FIXME: This is too complicated: Most of the stuff is duplicated in
- * update_trustdb and it will be easier to use a trust record cache instead
- * of the complicated lists.
  */
 int
-insert_trust_record( PKT_public_key *orig_pk )
+insert_trust_record( PKT_public_key *pk )
 {
-    TRUSTREC dirrec, *rec, *rec2;
-    TRUSTREC *keylist_head, **keylist_tail, *keylist;
-    TRUSTREC *uidlist_head, **uidlist_tail, *uidlist;
+    TRUSTREC dirrec;
     KBNODE keyblock = NULL;
     KBNODE node;
-    u32 keyid[2]; /* of primary key */
     byte *fingerprint;
     size_t fingerlen;
     int rc = 0;
 
-    keylist_head = NULL; keylist_tail = &keylist_head; keylist = NULL;
-    uidlist_head = NULL; uidlist_tail = &uidlist_head; uidlist = NULL;
-
-    /* prepare dir record */
-    memset( &dirrec, 0, sizeof dirrec );
-    dirrec.rectype = RECTYPE_DIR;
 
-    if( orig_pk->local_id )
-       log_bug("pk->local_id=%lu\n", (ulong)orig_pk->local_id );
+    if( pk->local_id )
+       log_bug("pk->local_id=%lu\n", pk->local_id );
 
-    fingerprint = fingerprint_from_pk( orig_pk, NULL, &fingerlen );
+    fingerprint = fingerprint_from_pk( pk, NULL, &fingerlen );
 
     /* fixme: assert that we do not have this record.
      * we can do this by searching for the primary keyid
@@ -2203,185 +2236,14 @@ insert_trust_record( PKT_public_key *orig_pk )
        goto leave;
     }
 
-    /* build data structure as linked lists in memory */
-    keyid[0] = keyid[1] = 0;
-    for( node=keyblock; node; node = node->next ) {
-       if( node->pkt->pkttype == PKT_PUBLIC_KEY
-           || node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
-           PKT_public_key *pk = node->pkt->pkt.public_key;
-
-           if( node->pkt->pkttype == PKT_PUBLIC_KEY ) {
-               if( keylist_head )
-                   BUG();  /* more than one primary key */
-               keyid_from_pk( pk, keyid );
-           }
-           fingerprint = fingerprint_from_pk( pk, NULL, &fingerlen );
-           rec = m_alloc_clear( sizeof *rec );
-           rec->rectype = RECTYPE_KEY;
-           rec->r.key.pubkey_algo = pk->pubkey_algo;
-           rec->r.key.fingerprint_len = fingerlen;
-           memcpy(rec->r.key.fingerprint, fingerprint, fingerlen );
-
-           *keylist_tail = rec; keylist_tail = &rec->next;
-       }
-       else if( node->pkt->pkttype == PKT_USER_ID ) {
-           PKT_user_id *uid = node->pkt->pkt.user_id;
-
-           rec = m_alloc_clear( sizeof *rec );
-           rec->rectype = RECTYPE_UID;
-           rmd160_hash_buffer( rec->r.uid.namehash, uid->name, uid->len );
-
-           uidlist = rec;
-           *uidlist_tail = rec; uidlist_tail = &rec->next;
-       }
-       else if( node->pkt->pkttype == PKT_SIGNATURE ) {
-           PKT_signature *sig = node->pkt->pkt.signature;
-
-           if( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1]
-               && (node->pkt->pkt.signature->sig_class&~3) == 0x10 ) {
-               /* must verify this selfsignature here, so that we can
-                * build the preference record and validate the uid record
-                */
-               if( !uidlist ) {
-                   log_error("key %08lX: self-signature without user id\n",
-                             (ulong)keyid[1] );
-               }
-               else if( (rc = check_key_signature( keyblock, node, NULL ))) {
-                   log_error("key %08lX, uid %02X%02X: "
-                             "invalid self-signature: %s\n",
-                             (ulong)keyid[1], uidlist->r.uid.namehash[18],
-                             uidlist->r.uid.namehash[19], g10_errstr(rc) );
-                   rc = 0;
-               }
-               else { /* build the prefrecord */
-                   static struct {
-                       sigsubpkttype_t subpkttype;
-                       int preftype;
-                   } prefs[] = {
-                       { SIGSUBPKT_PREF_SYM,   PREFTYPE_SYM    },
-                       { SIGSUBPKT_PREF_HASH,  PREFTYPE_HASH   },
-                       { SIGSUBPKT_PREF_COMPR, PREFTYPE_COMPR  },
-                       { 0, 0 }
-                   };
-                   const byte *s;
-                   size_t n;
-                   int k, i;
-                   assert(uidlist);
-                   assert(!uidlist->help_pref);
-                   uidlist->mark |= 1; /* mark valid */
-
-                   i = 0;
-                   for(k=0; prefs[k].subpkttype; k++ ) {
-                       s = parse_sig_subpkt2( sig, prefs[k].subpkttype, &n );
-                       if( s ) {
-                           while( n ) {
-                               if( !i || i >= ITEMS_PER_PREF_RECORD ) {
-                                   rec = m_alloc_clear( sizeof *rec );
-                                   rec->rectype = RECTYPE_PREF;
-                                   rec->next = uidlist->help_pref;
-                                   uidlist->help_pref = rec;
-                                   i = 0;
-                               }
-                               rec->r.pref.data[i++] = prefs[k].preftype;
-                               rec->r.pref.data[i++] = *s++;
-                               n--;
-                           }
-                       }
-                   }
-               }
-           }
-           else if( 0 /* is revocation sig etc */ ) {
-               /* handle it here */
-           }
-           else { /* not a selfsignature */
-           }
-       }
-    }
-
-    /* delete all invalid marked userids and their preferences and sigs */
-    /* (ugly code - I know) */
-    while( (rec=uidlist_head) && !(rec->mark & 1) ) {
-       uidlist_head = rec->next;
-       rel_mem_uidnode(keyid, 1, rec);
-    }
-    for( ; rec; rec = rec->next ) {
-       if( rec->next && !(rec->next->mark & 1) ) {
-           TRUSTREC *r = rec->next;
-           rec->next = r->next;
-           rel_mem_uidnode(keyid, 1, r);
-       }
-    }
-
-    /* check that we have at least one userid */
-    if( !uidlist_head ) {
-       log_error("key %08lX: no user ids - rejected\n", (ulong)keyid[1] );
-       rc = G10ERR_BAD_CERT;
-       goto leave;
-    }
-
-    /* insert the record numbers to build the real (on disk) list */
-    /* fixme: should start a transaction here */
+    memset( &dirrec, 0, sizeof dirrec );
+    dirrec.rectype = RECTYPE_DIR;
     dirrec.recnum = tdbio_new_recnum();
     dirrec.r.dir.lid = dirrec.recnum;
-    /* (list of keys) */
-    for(rec=keylist_head; rec; rec = rec->next ) {
-       rec->r.key.lid = dirrec.recnum;
-       rec->recnum = tdbio_new_recnum();
-    }
-    for(rec=keylist_head; rec; rec = rec->next )
-       rec->r.key.next = rec->next? rec->next->recnum : 0;
-    dirrec.r.dir.keylist = keylist_head->recnum;
-    /* (list of user ids) */
-    for(rec=uidlist_head; rec; rec = rec->next ) {
-       rec->r.uid.lid = dirrec.recnum;
-       rec->recnum = tdbio_new_recnum();
-       /* (preference records) */
-       if( rec->help_pref ) {
-           for( rec2 = rec->help_pref; rec2; rec2 = rec2->next ) {
-               rec2->r.pref.lid = dirrec.recnum;
-               rec2->recnum = tdbio_new_recnum();
-           }
-           for( rec2 = rec->help_pref; rec2->next; rec2 = rec2->next )
-               rec2->next->r.pref.next = rec2->recnum;
-           rec->r.uid.prefrec = rec2->recnum;
-       }
-    }
-    for(rec=uidlist_head; rec; rec = rec->next )
-       rec->r.uid.next = rec->next? rec->next->recnum : 0;
-    dirrec.r.dir.uidlist = uidlist_head->recnum;
-
-    /* write all records */
-    for(rec=keylist_head; rec; rec = rec->next ) {
-       assert( rec->rectype == RECTYPE_KEY );
-       if( tdbio_write_record( rec ) ) {
-           log_error("writing key record failed\n");
-           rc = G10ERR_TRUSTDB;
-           goto leave;
-       }
-    }
-    for(rec=uidlist_head; rec; rec = rec->next ) {
-       assert( rec->rectype == RECTYPE_UID );
-       if( tdbio_write_record( rec ) ) {
-           log_error("writing uid record failed\n");
-           rc = G10ERR_TRUSTDB;
-           goto leave;
-       }
-       for( rec2=rec->help_pref; rec2; rec2 = rec2->next ) {
-           assert( rec2->rectype == RECTYPE_PREF );
-           if( tdbio_write_record( rec2 ) ) {
-               log_error("writing pref record failed\n");
-               rc = G10ERR_TRUSTDB;
-               goto leave;
-           }
-       }
-    }
-    if( tdbio_write_record( &dirrec ) ) {
-       log_error("writing dir record failed\n");
-       return G10ERR_TRUSTDB;
-    }
+    write_record( &dirrec );
 
-    /* and store the LID */
-    orig_pk->local_id = dirrec.r.dir.lid;
+    /* store the LID */
+    pk->local_id = dirrec.r.dir.lid;
     for( node=keyblock; node; node = node->next ) {
        if( node->pkt->pkttype == PKT_PUBLIC_KEY
            || node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) {
@@ -2394,17 +2256,13 @@ insert_trust_record( PKT_public_key *orig_pk )
        }
     }
 
+    /* and put all the other stuff into the keydb */
+    rc = update_trust_record( keyblock );
 
-  leave:
-    for(rec=uidlist_head; rec; rec = rec2 ) {
-       rec2 = rec->next;
-       rel_mem_uidnode(NULL, 0, rec );
-    }
-    for(rec=keylist_head; rec; rec = rec2 ) {
-       rec2 = rec->next;
-       m_free(rec);
-    }
 
+  leave:
+    m_free(fingerprint);
+    release_kbnode( keyblock );
     return rc;
 }
 
@@ -2414,15 +2272,9 @@ update_ownertrust( ulong lid, unsigned new_trust )
 {
     TRUSTREC rec;
 
-    if( tdbio_read_record( lid, &rec, RECTYPE_DIR ) ) {
-       log_error("update_ownertrust: read dir failed\n");
-       return G10ERR_TRUSTDB;
-    }
+    read_record( lid, &rec, RECTYPE_DIR );
     rec.r.dir.ownertrust = new_trust;
-    if( tdbio_write_record( &rec ) ) {
-       log_error("update_ownertrust: write failed\n");
-       return G10ERR_TRUSTDB;
-    }
+    write_record( &rec );
     return 0;
 }
 
index 5c098d6..db2743f 100644 (file)
@@ -50,7 +50,7 @@ int init_trustdb( int level, const char *dbname );
 int check_trust( PKT_public_key *pk, unsigned *r_trustlevel );
 int query_trust_info( PKT_public_key *pk );
 int enum_trust_web( void **context, ulong *lid );
-int get_ownertrust( ulong lid, unsigned *r_otrust );
+unsigned get_ownertrust( ulong lid );
 int get_ownertrust_info( ulong lid );
 byte *get_pref_data( ulong lid, const byte *namehash, size_t *ret_n );
 int is_algo_in_prefs( ulong lid, int preftype, int algo );
index a09a806..f72651f 100644 (file)
@@ -1,3 +1,7 @@
+Wed Oct  7 13:12:00 1998  Werner Koch  (wk@isil.d.shuttle.de)
+
+       * Makefile.in.in: Fixed mkinstalldirs problems
+
 Mon Sep 21 15:03:44 1998  Werner Koch  (wk@(none))
 
        * it.po: New version from Marco d'Itri
index 111b40f..e301f6f 100644 (file)
@@ -26,7 +26,8 @@ subdir = po
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
+### This doe not work: MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
+MKINSTALLDIRS = $(top_srcdir)/scripts/mkinstalldirs
 
 CC = @CC@
 GENCAT = @GENCAT@
@@ -120,7 +121,7 @@ install-data-yes: all
          cat=`basename $$cat`; \
          case "$$cat" in \
            *.gmo) destdir=$(gnulocaledir);; \
-           *)     destdir=$(localedir);; \
+           *)     destdir=$(localedir);; \
          esac; \
          lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
          dir=$$destdir/$$lang/LC_MESSAGES; \
@@ -232,8 +233,8 @@ POTFILES: POTFILES.in
            posrcprefix="../"; \
          fi; \
          rm -f $@-t $@ \
-           && (sed -e '/^#/d' -e '/^[  ]*$$/d' \
-                   -e "s@.*@   $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
+           && (sed -e '/^#/d' -e '/^[  ]*$$/d' \
+                   -e "s@.*@   $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
                | sed -e '$$s/\\$$//') > $@-t \
            && chmod a-w $@-t \
            && mv $@-t $@ )
index 9f12798..92a1d7f 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -1,6 +1,6 @@
 msgid ""
 msgstr ""
-"POT-Creation-Date: 1998-09-30 19:01+0200\n"
+"POT-Creation-Date: 1998-10-07 14:24+0200\n"
 "Content-Type: text/plain; charset=\n"
 "Date: 1998-01-26 22:08:36+0100\n"
 "From: Werner Koch <wk@frodo>\n"
@@ -27,7 +27,6 @@ msgstr "ja"
 msgid "yY"
 msgstr "jJ"
 
-
 #: util/errors.c:54
 msgid "General error"
 msgstr "Allgemeiner Fehler"
@@ -210,14 +209,11 @@ msgstr "Ohhh jeeee ... dies ist eine Wanze (Programmfehler) (%s:%d:%s)\n"
 msgid "you found a bug ... (%s:%d)\n"
 msgstr "Sie haben eine Wanze (Programmfehler) gefunden ... (%s:%d)\n"
 
-
-
-
-#: cipher/rand-dummy.c:106
+#: cipher/rand-dummy.c:112
 msgid "warning: using insecure random number generator!!\n"
 msgstr "Der Zufallszahlengenerator erzeugt keine echten Zufallszahlen!\n"
 
-#: cipher/rand-dummy.c:107
+#: cipher/rand-dummy.c:113
 msgid ""
 "The random number generator is only a kludge to let\n"
 "it compile - it is in no way a strong RNG!\n"
@@ -243,7 +239,7 @@ msgstr ""
 "Arbeiten durch, damit das Betriebssystem weitere Entropie sammeln kann!\n"
 "(Es werden noch %d Byte benötigt.)\n"
 
-#: g10/g10.c:146
+#: g10/g10.c:147
 msgid ""
 "@Commands:\n"
 " "
@@ -251,119 +247,123 @@ msgstr ""
 "@Kommandos:\n"
 " "
 
-#: g10/g10.c:149
+#: g10/g10.c:150
 #, fuzzy
 msgid "|[file]|make a signature"
 msgstr "|[FILE]|eine Signatur erzeugen"
 
-#: g10/g10.c:150
+#: g10/g10.c:151
 #, fuzzy
 msgid "|[file]|make a clear text signature"
 msgstr "|[FILE]|eine Klartextsignatur erzeugen"
 
-#: g10/g10.c:151
+#: g10/g10.c:152
 msgid "make a detached signature"
 msgstr "Eine abgetrennte Signatur erzeugen"
 
-#: g10/g10.c:152
+#: g10/g10.c:153
 msgid "encrypt data"
 msgstr "Daten verschlüsseln"
 
-#: g10/g10.c:153
+#: g10/g10.c:154
 msgid "encryption only with symmetric cipher"
 msgstr "Daten nur symmetrisch verschlüsseln"
 
-#: g10/g10.c:154
+#: g10/g10.c:155
 msgid "store only"
 msgstr "nur speichern"
 
-#: g10/g10.c:155
+#: g10/g10.c:156
 msgid "decrypt data (default)"
 msgstr "Daten entschlüsseln  (Voreinstellung)"
 
-#: g10/g10.c:156
+#: g10/g10.c:157
 msgid "verify a signature"
 msgstr "Signatur prüfen"
 
-#: g10/g10.c:158
+#: g10/g10.c:159
 msgid "list keys"
 msgstr "Liste der Schlüssel"
 
-#: g10/g10.c:159
+#: g10/g10.c:160
 msgid "list keys and signatures"
 msgstr "Liste der Schlüssel und ihrer Signaturen"
 
-#: g10/g10.c:160
+#: g10/g10.c:161
 msgid "check key signatures"
 msgstr "Signaturen der Schlüssel prüfen"
 
-#: g10/g10.c:161
+#: g10/g10.c:162
 msgid "list keys and fingerprints"
 msgstr "Liste der Schlüssel und ihrer \"Fingerabdrücke\""
 
-#: g10/g10.c:162
+#: g10/g10.c:163
 msgid "list secret keys"
 msgstr "Liste der geheimen Schlüssel"
 
-#: g10/g10.c:164
+#: g10/g10.c:165
 msgid "generate a new key pair"
 msgstr "Ein neues Schlüsselpaar erzeugen"
 
-#: g10/g10.c:166
+#: g10/g10.c:167
 msgid "remove key from the public keyring"
 msgstr "Schlüssel entfernen"
 
-#: g10/g10.c:168
+#: g10/g10.c:169
 msgid "sign or edit a key"
 msgstr ""
 
-#: g10/g10.c:169
+#: g10/g10.c:170
 msgid "generate a revocation certificate"
 msgstr "Einen Schlüsselwiderruf vornehmen"
 
-#: g10/g10.c:171
+#: g10/g10.c:172
 msgid "export keys"
 msgstr "Schlüssel exportieren"
 
-#: g10/g10.c:174
+#: g10/g10.c:175
 msgid "import/merge keys"
 msgstr "Schlüssel importieren/kombinieren"
 
-#: g10/g10.c:175
+#: g10/g10.c:176
 msgid "list only the sequence of packets"
 msgstr "Lediglich die Struktur der Datenpackete anzeigen"
 
-#: g10/g10.c:177
+#: g10/g10.c:178
 #, fuzzy
 msgid "export the ownertrust values"
 msgstr "Keine \"Owner trust\" Werte geändert.\n"
 
-#: g10/g10.c:178
+#: g10/g10.c:179
 #, fuzzy
 msgid "import ownertrust values"
 msgstr "Keine \"Owner trust\" Werte geändert.\n"
 
-#: g10/g10.c:179
+#: g10/g10.c:180
 msgid "|[NAMES]|check the trust database"
 msgstr ""
 
-#: g10/g10.c:180
+#: g10/g10.c:181
+msgid "fix a corrupted trust database"
+msgstr ""
+
+#: g10/g10.c:182
 msgid "De-Armor a file or stdin"
 msgstr "Datei oder stdin von der ASCII-Hülle befreien"
 
-#: g10/g10.c:181
+#: g10/g10.c:183
 msgid "En-Armor a file or stdin"
 msgstr "Datei oder stdin in eine ASCII-Hülle einpacken"
 
-#: g10/g10.c:182
+#: g10/g10.c:184
 msgid "|algo [files]|print message digests"
 msgstr "|algo [files]|Hashwerte der Dateien ausgeben"
 
-#: g10/g10.c:183
+#: g10/g10.c:185
 msgid "print all message digests"
 msgstr "Message-Digests für die Eingabedaten ausgeben"
 
-#: g10/g10.c:190
+#: g10/g10.c:192
 msgid ""
 "@\n"
 "Options:\n"
@@ -373,128 +373,128 @@ msgstr ""
 "Optionen:\n"
 " "
 
-#: g10/g10.c:192
+#: g10/g10.c:194
 msgid "create ascii armored output"
 msgstr "Ausgabe mit ASCII-Hülle versehen"
 
-#: g10/g10.c:194
+#: g10/g10.c:196
 msgid "use this user-id to sign or decrypt"
 msgstr "Mit dieser User-ID signieren"
 
-#: g10/g10.c:195
+#: g10/g10.c:197
 msgid "use this user-id for encryption"
 msgstr "Verschlüsseln für diese User-ID"
 
-#: g10/g10.c:196
+#: g10/g10.c:198
 msgid "|N|set compress level N (0 disables)"
 msgstr "Kompressionsstufe auf N setzen (0 für keine Kompression)"
 
-#: g10/g10.c:197
+#: g10/g10.c:199
 msgid "use canonical text mode"
 msgstr "Textmodus benutzen"
 
-#: g10/g10.c:199
+#: g10/g10.c:201
 msgid "use as output file"
 msgstr "dies als Ausgabedatei benutzen"
 
-#: g10/g10.c:200
+#: g10/g10.c:202
 msgid "verbose"
 msgstr "detaillierte Informationen"
 
 #. { oDryRun, "dry-run",   0, N_("do not make any changes") },
-#: g10/g10.c:202
+#: g10/g10.c:204
 msgid "batch mode: never ask"
 msgstr "Stapelmodus: Keine Abfragen"
 
-#: g10/g10.c:203
+#: g10/g10.c:205
 msgid "assume yes on most questions"
 msgstr "\"Ja\" als Standardantwort annehmen"
 
-#: g10/g10.c:204
+#: g10/g10.c:206
 msgid "assume no on most questions"
 msgstr "\"Nein\" als Standardantwort annehmen"
 
-#: g10/g10.c:205
+#: g10/g10.c:207
 msgid "add this keyring to the list of keyrings"
 msgstr "Als öffentlichen Schlüsselring mitbenutzen"
 
-#: g10/g10.c:206
+#: g10/g10.c:208
 msgid "add this secret keyring to the list"
 msgstr "Als geheimen Schlüsselring mitbenutzen"
 
-#: g10/g10.c:207
+#: g10/g10.c:209
 msgid "|NAME|use NAME as default secret key"
 msgstr "|NAME|NAME als voreingestellten Schlüssel benutzen"
 
-#: g10/g10.c:208
+#: g10/g10.c:210
 msgid "read options from file"
 msgstr "Optionen aus der Datei lesen"
 
-#: g10/g10.c:210
+#: g10/g10.c:212
 msgid "set debugging flags"
 msgstr "Debug-Flags einschalten"
 
-#: g10/g10.c:211
+#: g10/g10.c:213
 msgid "enable full debugging"
 msgstr "Alle Debug-Flags einschalten"
 
-#: g10/g10.c:212
+#: g10/g10.c:214
 msgid "|FD|write status info to this FD"
 msgstr "|FD|Statusinfo auf diesen Dateihandle (\"FD\") ausgeben"
 
-#: g10/g10.c:213
+#: g10/g10.c:215
 msgid "do not write comment packets"
 msgstr "Keine Kommentarpakete schreiben"
 
-#: g10/g10.c:214
+#: g10/g10.c:216
 msgid "(default is 1)"
 msgstr "(voreingestellt ist 1)"
 
-#: g10/g10.c:215
+#: g10/g10.c:217
 msgid "(default is 3)"
 msgstr "(voreingestellt ist 3)"
 
-#: g10/g10.c:216
+#: g10/g10.c:218
 #, fuzzy
 msgid "|FILE|load extension module FILE"
 msgstr "|FILE|Erweiterungsmodul |FILE| laden"
 
-#: g10/g10.c:217
+#: g10/g10.c:219
 msgid "emulate the mode described in RFC1991"
 msgstr "Den in RFC1991 beschriebenen Modus nachahmen"
 
-#: g10/g10.c:218
+#: g10/g10.c:220
 #, fuzzy
 msgid "|N|use passphrase mode N"
 msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
 
-#: g10/g10.c:220
+#: g10/g10.c:222
 #, fuzzy
 msgid "|NAME|use message digest algorithm NAME for passphrases"
 msgstr "|NAME|Die Hashmethode NAME benutzen"
 
-#: g10/g10.c:222
+#: g10/g10.c:224
 #, fuzzy
 msgid "|NAME|use cipher algorithm NAME for passphrases"
 msgstr "|NAME|Die Verschlüsslungsmethode NAME benutzen"
 
-#: g10/g10.c:224
+#: g10/g10.c:226
 msgid "|NAME|use cipher algorithm NAME"
 msgstr "|NAME|Die Verschlüsslungsmethode NAME benutzen"
 
-#: g10/g10.c:225
+#: g10/g10.c:227
 msgid "|NAME|use message digest algorithm NAME"
 msgstr "|NAME|Die Hashmethode NAME benutzen"
 
-#: g10/g10.c:226
+#: g10/g10.c:228
 msgid "|N|use compress algorithm N"
 msgstr "|N|Die Kompressionsmethode N benutzen"
 
-#: g10/g10.c:227
+#: g10/g10.c:229
 msgid "throw keyid field of encrypted packets"
 msgstr ""
 
-#: g10/g10.c:235
+#: g10/g10.c:237
 #, fuzzy
 msgid ""
 "@\n"
@@ -515,19 +515,19 @@ msgstr ""
 " --list-keys [names]        Die Schlüssel anzeigen\n"
 " --fingerprint [names]      Die \"Fingerabdrücke\" anzeigen\n"
 
-#: g10/g10.c:310
+#: g10/g10.c:312
 msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
 msgstr "Berichte über Wanzen bitte an <gnupg-bugs@gnu.org>.\n"
 
-#: g10/g10.c:315
+#: g10/g10.c:317
 msgid "Usage: gpgm [options] [files] (-h for help)"
 msgstr "Aufruf: gpgm [Optionen] [Dateien] (-h für Hilfe)"
 
-#: g10/g10.c:317
+#: g10/g10.c:319
 msgid "Usage: gpg [options] [files] (-h for help)"
 msgstr "Aufruf: gpg [Optionen] [Dateien] (-h für Hilfe)"
 
-#: g10/g10.c:322
+#: g10/g10.c:324
 msgid ""
 "Syntax: gpgm [options] [files]\n"
 "GNUPG maintenance utility\n"
@@ -535,7 +535,7 @@ msgstr ""
 "Syntax: gpgm [options] [files]\n"
 "GNUPG Wartungs-Hilfsprogramm\n"
 
-#: g10/g10.c:325
+#: g10/g10.c:327
 msgid ""
 "Syntax: gpg [options] [files]\n"
 "sign, check, encrypt or decrypt\n"
@@ -545,147 +545,147 @@ msgstr ""
 "Signieren, prüfen, verschlüsseln, entschlüsseln\n"
 "Die voreingestellte Operation ist abhängig von den Eingabedaten\n"
 
-#: g10/g10.c:331
+#: g10/g10.c:333
 msgid ""
 "\n"
 "Supported algorithms:\n"
 msgstr ""
 
-#: g10/g10.c:406
+#: g10/g10.c:408
 msgid "usage: gpgm [options] "
 msgstr "Aufruf: gpgm [Optionen] "
 
-#: g10/g10.c:408
+#: g10/g10.c:410
 msgid "usage: gpg [options] "
 msgstr "Aufruf: gpg [Optionen] "
 
-#: g10/g10.c:449
+#: g10/g10.c:451
 msgid "conflicting commands\n"
 msgstr "Widersprüchliche Kommandos\n"
 
-#: g10/g10.c:588
+#: g10/g10.c:590
 #, c-format
 msgid "note: no default option file '%s'\n"
 msgstr "Hinweis: Keine voreingestellte Optionendatei '%s' vorhanden\n"
 
-#: g10/g10.c:592
+#: g10/g10.c:594
 #, c-format
 msgid "option file '%s': %s\n"
 msgstr "Optionendatei '%s': %s\n"
 
-#: g10/g10.c:599
+#: g10/g10.c:601
 #, c-format
 msgid "reading options from '%s'\n"
 msgstr "Optionen werden von '%s' gelesen\n"
 
-#: g10/g10.c:765 g10/g10.c:777
+#: g10/g10.c:768 g10/g10.c:780
 msgid "selected cipher algorithm is invalid\n"
 msgstr "Die ausgewählte Verschlüsslungsmethode ist ungültig\n"
 
-#: g10/g10.c:771 g10/g10.c:783
+#: g10/g10.c:774 g10/g10.c:786
 msgid "selected digest algorithm is invalid\n"
 msgstr "Die ausgewählte Message-Digest-Methode ist ungültig\n"
 
-#: g10/g10.c:786
+#: g10/g10.c:789
 #, c-format
 msgid "compress algorithm must be in range %d..%d\n"
 msgstr "Die Kompressionsmethode muß im Bereich %d bis %d liegen\n"
 
-#: g10/g10.c:788
+#: g10/g10.c:791
 msgid "completes-needed must be greater than 0\n"
 msgstr "completes-needed müssen größer als 0 sein\n"
 
-#: g10/g10.c:790
+#: g10/g10.c:793
 msgid "marginals-needed must be greater than 1\n"
 msgstr "marginals-needed müssen größer als 1 sein\n"
 
-#: g10/g10.c:793
+#: g10/g10.c:796
 msgid "note: simple S2K mode (0) is strongly discouraged\n"
 msgstr ""
 
-#: g10/g10.c:797
+#: g10/g10.c:800
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
 msgstr ""
 
-#: g10/g10.c:872
+#: g10/g10.c:876
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
 msgstr "Die Trust-DB kann nicht initialisiert werden: %s\n"
 
-#: g10/g10.c:878
+#: g10/g10.c:882
 msgid "--store [filename]"
 msgstr "--store [Dateiname]"
 
-#: g10/g10.c:886
+#: g10/g10.c:890
 msgid "--symmetric [filename]"
 msgstr "--symmetric [Dateiname]"
 
-#: g10/g10.c:894
+#: g10/g10.c:898
 msgid "--encrypt [filename]"
 msgstr "--encrypt [Dateiname]"
 
-#: g10/g10.c:907
+#: g10/g10.c:911
 msgid "--sign [filename]"
 msgstr "--sign [Dateiname]"
 
-#: g10/g10.c:920
+#: g10/g10.c:924
 msgid "--sign --encrypt [filename]"
 msgstr "--sign --encrypt [Dateiname]"
 
-#: g10/g10.c:934
+#: g10/g10.c:938
 msgid "--clearsign [filename]"
 msgstr "--clearsign [Dateiname]"
 
-#: g10/g10.c:946
+#: g10/g10.c:950
 msgid "--decrypt [filename]"
 msgstr "--decrypt [Dateiname]"
 
-#: g10/g10.c:955
+#: g10/g10.c:959
 msgid "--edit-key username"
 msgstr "--edit-key Benutzername"
 
-#: g10/g10.c:963
+#: g10/g10.c:967
 msgid "--delete-secret-key username"
 msgstr "--delete-secret-key Benutzername"
 
-#: g10/g10.c:966
+#: g10/g10.c:970
 msgid "--delete-key username"
 msgstr "--delete-key Benutzername"
 
-#: g10/encode.c:213 g10/g10.c:989 g10/keylist.c:79
+#: g10/encode.c:213 g10/g10.c:993 g10/keylist.c:79
 #, c-format
 msgid "can't open %s: %s\n"
 msgstr "Datei '%s' kann nicht geöffnet werden: %s\n"
 
-#: g10/g10.c:1000
+#: g10/g10.c:1004
 msgid "-k[v][v][v][c] [userid] [keyring]"
 msgstr "-k[v][v][v][c] [Benutzername] [Keyring]"
 
-#: g10/g10.c:1055
+#: g10/g10.c:1059
 #, c-format
 msgid "dearmoring failed: %s\n"
 msgstr "De-Armor fehlgeschlagen: %s\n"
 
-#: g10/g10.c:1063
+#: g10/g10.c:1067
 #, c-format
 msgid "enarmoring failed: %s\n"
 msgstr "En-Armor fehlgeschlagen: %s\n"
 
-#: g10/g10.c:1124
+#: g10/g10.c:1128
 #, c-format
 msgid "invalid hash algorithm '%s'\n"
 msgstr "Ungültige Hashmethode '%s'\n"
 
-#: g10/g10.c:1194
+#: g10/g10.c:1204
 msgid "[filename]"
 msgstr "[Dateiname]"
 
-#: g10/decrypt.c:59 g10/g10.c:1196 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1206 g10/verify.c:66
 #, c-format
 msgid "can't open '%s'\n"
 msgstr "Datei '%s' kann nicht geöffnet werden\n"
 
-#: g10/g10.c:1241
+#: g10/g10.c:1251
 msgid ""
 "RSA keys are deprecated; please consider creating a new key and use this key "
 "in the future\n"
@@ -821,21 +821,21 @@ msgstr ""
 "zuordnen können.\n"
 "\n"
 
-#: g10/pkclist.c:170
+#: g10/pkclist.c:168
 msgid ""
 "No owner trust values changed.\n"
 "\n"
 msgstr "Keine \"Owner trust\" Werte geändert.\n"
 
-#: g10/pkclist.c:190
+#: g10/pkclist.c:188
 msgid "revoked_key.override"
 msgstr ""
 
-#: g10/pkclist.c:191 g10/pkclist.c:281
+#: g10/pkclist.c:189 g10/pkclist.c:279
 msgid "Use this key anyway? "
 msgstr "Den Schlüssel trotzdem benutzen?"
 
-#: g10/pkclist.c:276
+#: g10/pkclist.c:274
 msgid ""
 "It is NOT certain that the key belongs to its owner.\n"
 "If you *really* know what you are doing, you may answer\n"
@@ -846,59 +846,59 @@ msgstr ""
 "Wenn Sie *wirklich* wissen, was Sie tun, können Sie die nächste\n"
 "Frage mit ja beantworten\n"
 
-#: g10/pkclist.c:280
+#: g10/pkclist.c:278
 msgid "untrusted_key.override"
 msgstr ""
 
-#: g10/pkclist.c:285
+#: g10/pkclist.c:283
 msgid "WARNING: Using untrusted key!\n"
 msgstr "WARNUNG: Ein Schlüssel ohne gesichertes Vertrauen wird benutzt!\n"
 
-#: g10/pkclist.c:321
+#: g10/pkclist.c:319
 msgid "WARNING: This key has been revoked by its owner!\n"
 msgstr "WARNUNG: Dieser Schlüssel wurde von seinem Besitzer widerrufen!\n"
 
-#: g10/pkclist.c:322
+#: g10/pkclist.c:320
 msgid "         This could mean that the signature is forgery.\n"
 msgstr "         Das könnte bedeuten, daß die Signatur gefälscht ist.\n"
 
-#: g10/pkclist.c:343
+#: g10/pkclist.c:341
 msgid "Note: This key has expired!\n"
 msgstr "Hinweis: Dieser Schlüssel ist verfallen!\n"
 
-#: g10/pkclist.c:350
+#: g10/pkclist.c:348
 msgid "WARNING: This key is not certified with a trusted signature!\n"
 msgstr "WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!\n"
 
-#: g10/pkclist.c:352
+#: g10/pkclist.c:350
 msgid ""
 "         There is no indication that the signature belongs to the owner.\n"
 msgstr ""
 "         Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen "
 "Besitzer gehört.\n"
 
-#: g10/pkclist.c:367
+#: g10/pkclist.c:365
 msgid "WARNING: We do NOT trust this key!\n"
 msgstr "WARNUNG: Wir haben KEIN Vertrauen zu diesem Schlüssel!\n"
 
-#: g10/pkclist.c:368
+#: g10/pkclist.c:366
 msgid "         The signature is probably a FORGERY.\n"
 msgstr "         Die Signatur ist wahrscheinlich eine FÄLSCHUNG.\n"
 
-#: g10/pkclist.c:375
+#: g10/pkclist.c:373
 msgid ""
 "WARNING: This key is not certified with sufficiently trusted signatures!\n"
 msgstr ""
 "WARNUNG: Dieser Schlüssel ist nicht durch hinreichend vertrauenswürdige "
 "Signaturen zertifiziert!\n"
 
-#: g10/pkclist.c:378
+#: g10/pkclist.c:376
 msgid "         It is not certain that the signature belongs to the owner.\n"
 msgstr ""
 "         Es ist nicht sicher, daß die Signatur wirklich dem vorgeblichen "
 "Besitzer gehört.\n"
 
-#: g10/pkclist.c:423
+#: g10/pkclist.c:421
 msgid ""
 "You did not specify a user ID. (you may use \"-r\")\n"
 "\n"
@@ -906,29 +906,29 @@ msgstr ""
 "Sie gaben keine User-ID angegeben (Benutzen Sie die Option \"-r\").\n"
 "\n"
 
-#: g10/pkclist.c:427
+#: g10/pkclist.c:425
 msgid "pklist.user_id.enter"
 msgstr ""
 
-#: g10/pkclist.c:428
+#: g10/pkclist.c:426
 msgid "Enter the user ID: "
 msgstr "Geben Sie die User-ID ein: "
 
-#: g10/pkclist.c:439
+#: g10/pkclist.c:437
 msgid "No such user ID.\n"
 msgstr "Keine solche User-ID vorhanden.\n"
 
-#: g10/pkclist.c:473 g10/pkclist.c:500
+#: g10/pkclist.c:471 g10/pkclist.c:498
 #, c-format
 msgid "%s: skipped: %s\n"
 msgstr "%s: übersprungen: %s\n"
 
-#: g10/pkclist.c:481
+#: g10/pkclist.c:479
 #, c-format
 msgid "%s: error checking key: %s\n"
 msgstr "%s: Fehler beim Prüfen des Schlüssels: %s\n"
 
-#: g10/pkclist.c:507
+#: g10/pkclist.c:505
 msgid "no valid addressees\n"
 msgstr "Keine gültigen Adressaten\n"
 
@@ -954,34 +954,34 @@ msgstr "   (%d) DSA und ElGamal (voreingestellt)\n"
 msgid "   (%d) ElGamal (sign and encrypt)\n"
 msgstr "   (%d) ElGamal (signieren und verschlüsseln)\n"
 
-#: g10/keygen.c:387
+#: g10/keygen.c:388
 #, c-format
 msgid "   (%d) ElGamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (nur verschlüsseln)\n"
 
-#: g10/keygen.c:388
+#: g10/keygen.c:389
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (nur signieren)\n"
 
-#: g10/keygen.c:389
+#: g10/keygen.c:390
 #, c-format
 msgid "   (%d) ElGamal in a v3 packet\n"
 msgstr "   (%d) ElGamal in einem v3-Packet\n"
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "keygen.algo"
 msgstr ""
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "Your selection? "
 msgstr "Ihre Auswahl? "
 
-#: g10/keygen.c:419
+#: g10/keygen.c:420
 msgid "Invalid selection.\n"
 msgstr "Ungültige Auswahl.\n"
 
-#: g10/keygen.c:431
+#: g10/keygen.c:432
 #, c-format
 msgid ""
 "About to generate a new %s keypair.\n"
@@ -994,23 +994,23 @@ msgstr ""
 "              standard Schlüssellänge ist 1024 Bits\n"
 "      größte sinnvolle Schlüssellänge ist 2048 Bits\n"
 
-#: g10/keygen.c:437
+#: g10/keygen.c:438
 msgid "keygen.size"
 msgstr ""
 
-#: g10/keygen.c:438
+#: g10/keygen.c:439
 msgid "What keysize do you want? (1024) "
 msgstr "Welche Schlüssellänge wünschen Sie? (1024)"
 
-#: g10/keygen.c:443
+#: g10/keygen.c:444
 msgid "DSA only allows keysizes from 512 to 1024\n"
 msgstr "DSA erlaubt nur Schlüssellängen von 512 bis 1024\n"
 
-#: g10/keygen.c:445
+#: g10/keygen.c:446
 msgid "keysize too small; 768 is smallest value allowed.\n"
 msgstr "zu kurz; 768 ist die kleinste mögliche Schlüssellänge.\n"
 
-#: g10/keygen.c:448
+#: g10/keygen.c:449
 #, fuzzy
 msgid ""
 "Keysizes larger than 2048 are not suggested because\n"
@@ -1019,15 +1019,15 @@ msgstr ""
 "Schlüssellängen größer als 2048 werden nicht empfohlen, da die Berechnungen "
 "dann WIRKLICH lange brauchen\n"
 
-#: g10/keygen.c:450
+#: g10/keygen.c:451
 msgid "keygen.size.huge.okay"
 msgstr ""
 
-#: g10/keygen.c:451
+#: g10/keygen.c:452
 msgid "Are you sure that you want this keysize? "
 msgstr "Sind Sie sicher, daß Sie diese Schlüssellänge wünschen? "
 
-#: g10/keygen.c:452
+#: g10/keygen.c:453
 msgid ""
 "Okay, but keep in mind that your monitor and keyboard radiation is also very "
 "vulnerable to attacks!\n"
@@ -1035,25 +1035,25 @@ msgstr ""
 "Gut, aber bitte denken Sie auch daran, daß Monitor und Tastatur Daten "
 "abstrahlen und diese leicht mitgelesen werden können.\n"
 
-#: g10/keygen.c:459
+#: g10/keygen.c:460
 msgid "keygen.size.large.okay"
 msgstr ""
 
-#: g10/keygen.c:460
+#: g10/keygen.c:461
 msgid "Do you really need such a large keysize? "
 msgstr "Brauchen Sie wirklich eine derartig große Schlüssellänge? "
 
-#: g10/keygen.c:466
+#: g10/keygen.c:467
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "Die verlangte Schlüssellänge beträgt %u Bit\n"
 
-#: g10/keygen.c:469 g10/keygen.c:473
+#: g10/keygen.c:470 g10/keygen.c:474
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "aufgerundet auf %u Bit\n"
 
-#: g10/keygen.c:485
+#: g10/keygen.c:486
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -1069,37 +1069,37 @@ msgstr ""
 "      <n>m = Schlüssel verfällt nach n Monaten\n"
 "      <n>y = Schlüssel verfällt nach n Jahren\n"
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "keygen.valid"
 msgstr ""
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "Key is valid for? (0) "
 msgstr "Der Schlüssel bleibt wie lange gültig? (0) "
 
-#: g10/keygen.c:511
+#: g10/keygen.c:512
 msgid "invalid value\n"
 msgstr "Ungültiger Wert.\n"
 
-#: g10/keygen.c:516
+#: g10/keygen.c:517
 msgid "Key does not expire at all\n"
 msgstr "Der Schlüssel verfällt nie.\n"
 
 #. print the date when the key expires
-#: g10/keygen.c:519
+#: g10/keygen.c:520
 #, c-format
 msgid "Key expires at %s\n"
 msgstr "Der Schlüssel verfällt am %s\n"
 
-#: g10/keygen.c:524
+#: g10/keygen.c:525
 msgid "keygen.valid.okay"
 msgstr ""
 
-#: g10/keygen.c:525
+#: g10/keygen.c:526
 msgid "Is this correct (y/n)? "
 msgstr "Ist dies richtig? (j/n) "
 
-#: g10/keygen.c:553
+#: g10/keygen.c:554
 msgid ""
 "\n"
 "You need a User-ID to identify your key; the software constructs the user "
@@ -1115,51 +1115,51 @@ msgstr ""
 "    \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
 "\n"
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "keygen.name"
 msgstr ""
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "Real name: "
 msgstr "Ihr Name (\"Vorname Nachname\"): "
 
-#: g10/keygen.c:568
+#: g10/keygen.c:569
 msgid "Invalid character in name\n"
 msgstr "Ungültiges Zeichen im Namen\n"
 
-#: g10/keygen.c:570
+#: g10/keygen.c:571
 msgid "Name may not start with a digit\n"
 msgstr "Der Name darf nicht mit einer Ziffer beginnen.\n"
 
-#: g10/keygen.c:572
+#: g10/keygen.c:573
 msgid "Name must be at least 5 characters long\n"
 msgstr "Der Name muß min. 5 Zeichen lang sein.\n"
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "keygen.email"
 msgstr ""
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "Email address: "
 msgstr "E-Mail-Adresse: "
 
-#: g10/keygen.c:592
+#: g10/keygen.c:593
 msgid "Not a valid email address\n"
 msgstr "E-Mail-Adresse is ungültig\n"
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "keygen.comment"
 msgstr ""
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "Comment: "
 msgstr "Kommentar: "
 
-#: g10/keygen.c:606
+#: g10/keygen.c:607
 msgid "Invalid character in comment\n"
 msgstr "Ungültiges Zeichen im Kommentar.\n"
 
-#: g10/keygen.c:626
+#: g10/keygen.c:627
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -1170,21 +1170,21 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:629
+#: g10/keygen.c:630
 msgid "NnCcEeOoQq"
 msgstr ""
 
-#: g10/keygen.c:638
+#: g10/keygen.c:639
 #, fuzzy
 msgid "keygen.userid.cmd"
 msgstr "Geben Sie bitte \"help\" ein."
 
-#: g10/keygen.c:639
+#: g10/keygen.c:640
 #, fuzzy
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "Ändern: N=Name, C=Kommentar, E=E-Mail, O=Okay? "
 
-#: g10/keygen.c:686
+#: g10/keygen.c:687
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -1192,11 +1192,11 @@ msgstr ""
 "Sie benötigen eine \"passphrase\", um den geheimen Schlüssel zu schützen.\n"
 "\n"
 
-#: g10/keyedit.c:377 g10/keygen.c:694
+#: g10/keyedit.c:388 g10/keygen.c:695
 msgid "passphrase not correctly repeated; try again.\n"
 msgstr "\"passphrase\" nicht richtig wiederholt; noch einmal.\n"
 
-#: g10/keygen.c:700
+#: g10/keygen.c:701
 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"
@@ -1209,7 +1209,7 @@ msgstr ""
 "aufrufen.\n"
 "\n"
 
-#: g10/keygen.c:721
+#: g10/keygen.c:722
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (work in another window, move the mouse, utilize the\n"
@@ -1220,35 +1220,35 @@ msgstr ""
 "unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n"
 "tippen oder irgendwelche anderen Programme benutzen.\n"
 
-#: g10/keygen.c:788
+#: g10/keygen.c:789
 msgid "Key generation can only be used in interactive mode\n"
 msgstr ""
 "Die Schlüsselerzeugung kann nur im interaktiven Modus benutzt werden.\n"
 
-#: g10/keygen.c:796
+#: g10/keygen.c:797
 msgid "DSA keypair will have 1024 bits.\n"
 msgstr "Der DSA Schlüssel wird 1024 Bits haben.\n"
 
-#: g10/keygen.c:802
+#: g10/keygen.c:803
 #, fuzzy
 msgid "Key generation cancelled.\n"
 msgstr "Schlüsselerzeugung fehlgeschlagen: %s\n"
 
-#: g10/keygen.c:812
+#: g10/keygen.c:813
 #, c-format
 msgid "writing public certificate to '%s'\n"
 msgstr "schreiben des öffentlichen Schlüssels nach '%s'\n"
 
-#: g10/keygen.c:813
+#: g10/keygen.c:814
 #, c-format
 msgid "writing secret certificate to '%s'\n"
 msgstr "schreiben des geheimen Schlüssels nach '%s'\n"
 
-#: g10/keygen.c:890
+#: g10/keygen.c:891
 msgid "public and secret key created and signed.\n"
 msgstr "Öffentlichen und geheimen Schlüssel erzeugt und signiert.\n"
 
-#: g10/keygen.c:892
+#: g10/keygen.c:893
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--add-key\" to generate a secondary key for this purpose.\n"
@@ -1257,16 +1257,16 @@ msgstr ""
 "werden kann.  Sie können aber mit dem Kommando \"--add-key\" einen\n"
 "Sekundärschlüssel zu diesem Schlüssel hinzufügen.\n"
 
-#: g10/keygen.c:906 g10/keygen.c:990
+#: g10/keygen.c:907 g10/keygen.c:991
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "Schlüsselerzeugung fehlgeschlagen: %s\n"
 
-#: g10/keygen.c:967
+#: g10/keygen.c:968
 msgid "keygen.sub.okay"
 msgstr ""
 
-#: g10/keygen.c:968
+#: g10/keygen.c:969
 #, fuzzy
 msgid "Really create? "
 msgstr "Ihr Name (\"Vorname Nachname\"): "
@@ -1301,7 +1301,7 @@ msgstr "%s verschl
 msgid "using secondary key %08lX instead of primary key %08lX\n"
 msgstr ""
 
-#: g10/import.c:105 g10/trustdb.c:1349
+#: g10/import.c:105 g10/trustdb.c:1389
 #, c-format
 msgid "can't open file: %s\n"
 msgstr "Kann die Datei nicht öffnen: %s\n"
@@ -1311,7 +1311,7 @@ msgstr "Kann die Datei nicht 
 msgid "skipping block of type %d\n"
 msgstr "überspringe den Block vom Typ %d\n"
 
-#: g10/import.c:131 g10/trustdb.c:1427
+#: g10/import.c:131 g10/trustdb.c:1464
 #, c-format
 msgid "read error: %s\n"
 msgstr "Lesefehler: %s\n"
@@ -1554,50 +1554,50 @@ msgstr "Schl
 msgid "%d user ids without valid self-signatures detected\n"
 msgstr ""
 
-#: g10/keyedit.c:249
+#: g10/keyedit.c:257
 #, fuzzy, c-format
 msgid "Already signed by key %08lX\n"
 msgstr "Ist bereits mit Schlüssel %08lX signiert.\n"
 
-#: g10/keyedit.c:257
+#: g10/keyedit.c:265
 #, fuzzy, c-format
 msgid "Nothing to sign with key %08lX\n"
 msgstr "Nichts zu signieren.\n"
 
-#: g10/keyedit.c:265
+#: g10/keyedit.c:274
 #, fuzzy
 msgid ""
 "Are you really sure that you want to sign this key\n"
 "with your key: \""
 msgstr "Sind Sie wirklich sicher, daß Sie diesen Schlüssel signieren wollen:\n"
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "sign_uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "Really sign? "
 msgstr ""
 
-#: g10/keyedit.c:293
+#: g10/keyedit.c:302
 #, fuzzy, c-format
 msgid "signing failed: %s\n"
 msgstr "En-Armor fehlgeschlagen: %s\n"
 
-#: g10/keyedit.c:344
+#: g10/keyedit.c:355
 msgid "This key is not protected.\n"
 msgstr "Dieser Schlüssel ist nicht geschützt.\n"
 
-#: g10/keyedit.c:347
+#: g10/keyedit.c:358
 msgid "Key is protected.\n"
 msgstr "Schlüssel ist geschützt.\n"
 
-#: g10/keyedit.c:364
+#: g10/keyedit.c:375
 #, c-format
 msgid "Can't edit this key: %s\n"
 msgstr "Dieser Schlüssel kann nicht editiert werden: %s\n"
 
-#: g10/keyedit.c:369
+#: g10/keyedit.c:380
 msgid ""
 "Enter the new passphrase for this secret key.\n"
 "\n"
@@ -1605,7 +1605,7 @@ msgstr ""
 "Geben Sie die neue \"passphrase\" für diesen privaten Schlüssel ein.\n"
 "\n"
 
-#: g10/keyedit.c:381
+#: g10/keyedit.c:392
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "\n"
@@ -1614,303 +1614,308 @@ msgstr ""
 "Idee!\n"
 "\n"
 
-#: g10/keyedit.c:383
+#: g10/keyedit.c:394
 msgid "change_passwd.empty.okay"
 msgstr ""
 
-#: g10/keyedit.c:384
+#: g10/keyedit.c:395
 msgid "Do you really want to do this? "
 msgstr "Möchten Sie dies wirklich tun? "
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit"
 msgstr ""
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit this menu"
 msgstr ""
 
-#: g10/keyedit.c:440
+#: g10/keyedit.c:451
 msgid "q"
 msgstr ""
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save"
 msgstr ""
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save and quit"
 msgstr ""
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "help"
 msgstr ""
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "show this help"
 msgstr ""
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "fpr"
 msgstr ""
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 #, fuzzy
 msgid "show fingerprint"
 msgstr "Liste der Schlüssel und ihrer \"Fingerabdrücke\""
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 #, fuzzy
 msgid "list"
 msgstr "Liste der Schlüssel"
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 #, fuzzy
 msgid "list key and user ids"
 msgstr "Liste der Schlüssel und ihrer \"Fingerabdrücke\""
 
-#: g10/keyedit.c:446
+#: g10/keyedit.c:457
 msgid "l"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "uid"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "select user id N"
 msgstr ""
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "key"
 msgstr ""
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "select secondary key N"
 msgstr ""
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "check"
 msgstr ""
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 #, fuzzy
 msgid "list signatures"
 msgstr "Liste der Schlüssel und ihrer Signaturen"
 
-#: g10/keyedit.c:450
+#: g10/keyedit.c:461
 msgid "c"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 #, fuzzy
 msgid "sign the key"
 msgstr "Signieren? "
 
-#: g10/keyedit.c:452
+#: g10/keyedit.c:463
 msgid "s"
 msgstr ""
 
-#: g10/keyedit.c:453
+#: g10/keyedit.c:464
 msgid "debug"
 msgstr ""
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "adduid"
 msgstr ""
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "add a user id"
 msgstr ""
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "deluid"
 msgstr ""
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 #, fuzzy
 msgid "delete user id"
 msgstr "--delete-key Benutzername"
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "addkey"
 msgstr ""
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 #, fuzzy
 msgid "add a secondary key"
 msgstr "Einen Sekundärschlüssel dem Primärschlüssel hinzufügen"
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delkey"
 msgstr ""
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delete a secondary key"
 msgstr ""
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle"
 msgstr ""
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle between secret and public key listing"
 msgstr ""
 
-#: g10/keyedit.c:460
+#: g10/keyedit.c:471
 msgid "t"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "pref"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 #, fuzzy
 msgid "list preferences"
 msgstr "Liste der geheimen Schlüssel"
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "passwd"
 msgstr ""
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 #, fuzzy
 msgid "change the passphrase"
 msgstr "Die \"Passphrase\" des geheimen Schlüssels ändern"
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "trust"
 msgstr ""
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "change the ownertrust"
 msgstr ""
 
-#: g10/keyedit.c:481
+#: g10/keyedit.c:492
 msgid "can't do that in batchmode\n"
 msgstr "Dies kann im Batchmodus nicht durchgeführt werden.\n"
 
 #. check that they match
 #. FIXME: check that they both match
-#: g10/keyedit.c:504
+#: g10/keyedit.c:515
 #, fuzzy
 msgid "Secret key is available.\n"
 msgstr "Öffentlicher Schlüssel ist nicht verfügbar.\n"
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "keyedit.cmd"
 msgstr "Geben Sie bitte \"help\" ein."
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 #, fuzzy
 msgid "Command> "
 msgstr ""
 "@Kommandos:\n"
 " "
 
-#: g10/keyedit.c:545
+#: g10/keyedit.c:556
 #, fuzzy
 msgid "Need the secret key to to this.\n"
 msgstr "Als geheimen Schlüsselring mitbenutzen"
 
-#: g10/keyedit.c:564
+#: g10/keyedit.c:575
 msgid "keyedit.save.okay"
 msgstr ""
 
-#: g10/keyedit.c:565
+#: g10/keyedit.c:576
 msgid "Save changes? "
 msgstr ""
 
-#: g10/keyedit.c:567
+#: g10/keyedit.c:578
 #, fuzzy
 msgid "keyedit.cancel.okay"
 msgstr "Geben Sie bitte \"help\" ein."
 
-#: g10/keyedit.c:568
+#: g10/keyedit.c:579
 msgid "Quit without saving? "
 msgstr ""
 
-#: g10/keyedit.c:578
+#: g10/keyedit.c:589
 #, fuzzy, c-format
 msgid "update failed: %s\n"
 msgstr "De-Armor fehlgeschlagen: %s\n"
 
-#: g10/keyedit.c:585
+#: g10/keyedit.c:596
 #, fuzzy, c-format
 msgid "update secret failed: %s\n"
 msgstr "Enschlüsselung fehlgeschlagen: %s\n"
 
-#: g10/keyedit.c:593
+#: g10/keyedit.c:603
 msgid "Key not changed so no update needed.\n"
 msgstr ""
 
-#: g10/keyedit.c:623
+#: g10/keyedit.c:606 g10/keyedit.c:664
+#, fuzzy, c-format
+msgid "update of trust db failed: %s\n"
+msgstr "Enschlüsselung fehlgeschlagen: %s\n"
+
+#: g10/keyedit.c:637
 msgid "keyedit.sign_all.okay"
 msgstr ""
 
-#: g10/keyedit.c:624
+#: g10/keyedit.c:638
 msgid "Really sign all user ids? "
 msgstr ""
 
-#: g10/keyedit.c:625
+#: g10/keyedit.c:639
 msgid "Hint: Select the user ids to sign\n"
 msgstr ""
 
-#: g10/keyedit.c:653
+#: g10/keyedit.c:675
 msgid "You must select at least one user id.\n"
 msgstr ""
 
-#: g10/keyedit.c:655
+#: g10/keyedit.c:677
 msgid "You can't delete the last user id!\n"
 msgstr ""
 
-#: g10/keyedit.c:657
+#: g10/keyedit.c:679
 msgid "keyedit.remove.uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:658
+#: g10/keyedit.c:680
 #, fuzzy
 msgid "Really remove all selected user ids? "
 msgstr "Möchten Sie die ausgewählten Signaturen wirklich entfernen? "
 
-#: g10/keyedit.c:659
+#: g10/keyedit.c:681
 #, fuzzy
 msgid "Really remove this user id? "
 msgstr "Die Signatur entfernen? "
 
-#: g10/keyedit.c:682
+#: g10/keyedit.c:704
 msgid "You must select at least one key.\n"
 msgstr ""
 
-#: g10/keyedit.c:684
+#: g10/keyedit.c:706
 msgid "keyedit.remove.subkey.okay"
 msgstr ""
 
-#: g10/keyedit.c:686
+#: g10/keyedit.c:708
 #, fuzzy
 msgid "Do you really want to delete the selected keys? "
 msgstr "Möchten Sie die ausgewählten Signaturen wirklich entfernen? "
 
-#: g10/keyedit.c:687
+#: g10/keyedit.c:709
 #, fuzzy
 msgid "Do you really want to delete this key? "
 msgstr "Möchten Sie dies wirklich tun? "
 
-#: g10/keyedit.c:724
+#: g10/keyedit.c:746
 msgid "Invalid command  (try \"help\")\n"
 msgstr ""
 
-#: g10/keyedit.c:1104
+#: g10/keyedit.c:1129
 #, c-format
 msgid "No user id with index %d\n"
 msgstr ""
 
-#: g10/keyedit.c:1149
+#: g10/keyedit.c:1174
 #, c-format
 msgid "No secondary key with index %d\n"
 msgstr ""
@@ -1934,15 +1939,15 @@ msgstr ""
 msgid "Signature made %.*s using %s key ID %08lX\n"
 msgstr "Signatur am %.*s mit %s Schlüssel %08lX erzeugt\n"
 
-#: g10/mainproc.c:852
+#: g10/mainproc.c:854
 msgid "BAD signature from \""
 msgstr "FALSCHE Signatur von \""
 
-#: g10/mainproc.c:853
+#: g10/mainproc.c:855
 msgid "Good signature from \""
 msgstr "Gültige Signatur von \""
 
-#: g10/mainproc.c:864
+#: g10/mainproc.c:866
 #, c-format
 msgid "Can't check signature: %s\n"
 msgstr "Signatur kann nicht geprüft werden: %s\n"
@@ -2044,80 +2049,79 @@ msgstr ""
 msgid "warning: signature key expired %s\n"
 msgstr "Achtung: Schlüssel der Signatur ist verfallen am %s.\n"
 
-#: g10/trustdb.c:318
-#, fuzzy, c-format
-msgid "error reading sigrec: %s\n"
-msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
+#: g10/trustdb.c:127
+msgid "The trust DB is corrupted; please run \"gpgm --fix-trust-db\".\n"
+msgstr ""
 
-#: g10/trustdb.c:323
+#: g10/trustdb.c:406
 #, c-format
 msgid "chained sigrec %lu has a wrong owner\n"
 msgstr ""
 
-#: g10/trustdb.c:370
+#: g10/trustdb.c:453
 #, c-format
 msgid "key %08lX: secret key without public key\n"
 msgstr "Schlüssel %08lX: geheimer, aber kein öffentlicher Schlüssel.\n"
 
-#: g10/trustdb.c:375
+#: g10/trustdb.c:458
 #, c-format
 msgid "key %08lX: secret and public key don't match\n"
 msgstr ""
 "Schlüssel %08lX: geheimer und öffentlicher Schlüssel passen nicht zusammen.\n"
 
-#: g10/trustdb.c:386
+#: g10/trustdb.c:469
 #, fuzzy, c-format
 msgid "key %08lX: can't put it into the trustdb\n"
 msgstr "Schlüssel %08lX.%lu: in \"trustdb\" eingefügt\n"
 
-#: g10/trustdb.c:392
+#: g10/trustdb.c:475
 #, fuzzy, c-format
 msgid "key %08lX: query record failed\n"
 msgstr "Schlüssel %08lX: Keine User-ID\n"
 
-#: g10/trustdb.c:401
+#: g10/trustdb.c:484
 #, c-format
 msgid "key %08lX: already in ultikey_table\n"
 msgstr "Schlüssel %08lX: bereits in der Tabelle der private Schlüssel\n"
 
-#: g10/trustdb.c:408
+#: g10/trustdb.c:491
 #, fuzzy, c-format
 msgid "enum_secret_keys failed: %s\n"
 msgstr "En-Armor fehlgeschlagen: %s\n"
 
-#: g10/trustdb.c:913
+#: g10/trustdb.c:964
 #, fuzzy, c-format
 msgid "key %08lX.%lu, uid %02X%02X: no public key for signature %08lX\n"
 msgstr "Schlüssel %08lX: Keine User-ID für Signatur\n"
 
-#: g10/trustdb.c:920
+#: g10/trustdb.c:971
 #, fuzzy, c-format
 msgid "key %08lX.%lu, uid %02X%02X: invalid %ssignature: %s\n"
 msgstr "Schlüssel %08lX: Ungültige Selbst-Signatur\n"
 
-#: g10/trustdb.c:1624
+#: g10/trustdb.c:1658
 #, fuzzy, c-format
 msgid "key %08lX: insert trust record failed: %s\n"
 msgstr "Schlüssel %08lX.%lu: Vertrauensprüfung fehlgeschlagen: %s\n"
 
-#: g10/trustdb.c:1628
+#: g10/trustdb.c:1662
 #, c-format
 msgid "key %08lX.%lu: inserted into trustdb\n"
 msgstr "Schlüssel %08lX.%lu: in \"trustdb\" eingefügt\n"
 
-#: g10/trustdb.c:1639
+#: g10/trustdb.c:1670
 #, c-format
 msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
 msgstr ""
 "Schlüssel %08lX.%lu: wurde in der Zukunft erzeugt (Zeitreise oder Uhren "
 "stimmen nicht überein)\n"
 
-#: g10/trustdb.c:1647
+#: g10/trustdb.c:1678
 #, c-format
 msgid "key %08lX.%lu: expired at %s\n"
 msgstr "Schlüssel %08lX.%lu: verfallen am %s\n"
 
-#: g10/trustdb.c:1656
+#: g10/trustdb.c:1687
 #, c-format
 msgid "key %08lX.%lu: trust check failed: %s\n"
 msgstr "Schlüssel %08lX.%lu: Vertrauensprüfung fehlgeschlagen: %s\n"
@@ -2173,6 +2177,10 @@ msgstr ""
 msgid "cannot avoid weak key for symmetric cipher; tried %d times!\n"
 msgstr ""
 
+#, fuzzy
+#~ msgid "error reading sigrec: %s\n"
+#~ msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n"
+
 #~ msgid "can't write keyring\n"
 #~ msgstr "kann Schlüsselring nicht schreiben\n"
 
index db9b1f1..b1db896 100644 (file)
--- a/po/en.po
+++ b/po/en.po
@@ -1,6 +1,6 @@
 msgid ""
 msgstr ""
-"POT-Creation-Date: 1998-09-30 19:01+0200\n"
+"POT-Creation-Date: 1998-10-07 14:24+0200\n"
 "Content-Type: text/plain; charset=\n"
 "Date: 1998-08-08 18:07:50+0200\n"
 "From: Werner Koch <wk@frodo>\n"
@@ -25,11 +25,196 @@ msgstr ""
 msgid "yY"
 msgstr ""
 
-#: cipher/rand-dummy.c:106
+#: util/errors.c:54
+msgid "General error"
+msgstr ""
+
+#: util/errors.c:55
+msgid "Unknown packet type"
+msgstr ""
+
+#: util/errors.c:56
+msgid "Unknown version"
+msgstr ""
+
+#: util/errors.c:57
+msgid "Unknown pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:58
+msgid "Unknown digest algorithm"
+msgstr ""
+
+#: util/errors.c:59
+msgid "Bad public key"
+msgstr ""
+
+#: util/errors.c:60
+msgid "Bad secret key"
+msgstr ""
+
+#: util/errors.c:61
+msgid "Bad signature"
+msgstr ""
+
+#: util/errors.c:62
+msgid "Checksum error"
+msgstr ""
+
+#: util/errors.c:63
+#, fuzzy
+msgid "Bad passphrase"
+msgstr ""
+"Please enter the passhrase; this is a secret sentence \n"
+"  Blurb, blurb,.... "
+
+#: util/errors.c:64
+msgid "Public key not found"
+msgstr ""
+
+#: util/errors.c:65
+msgid "Unknown cipher algorithm"
+msgstr ""
+
+#: util/errors.c:66
+msgid "Can't open the keyring"
+msgstr ""
+
+#: util/errors.c:67
+msgid "Invalid packet"
+msgstr ""
+
+#: util/errors.c:68
+msgid "Invalid armor"
+msgstr ""
+
+#: util/errors.c:69
+msgid "No such user id"
+msgstr ""
+
+#: util/errors.c:70
+msgid "Secret key not available"
+msgstr ""
+
+#: util/errors.c:71
+msgid "Wrong secret key used"
+msgstr ""
+
+#: util/errors.c:72
+msgid "Not supported"
+msgstr ""
+
+#: util/errors.c:73
+msgid "Bad key"
+msgstr ""
+
+#: util/errors.c:74
+msgid "File read error"
+msgstr ""
+
+#: util/errors.c:75
+msgid "File write error"
+msgstr ""
+
+#: util/errors.c:76
+msgid "Unknown compress algorithm"
+msgstr ""
+
+#: util/errors.c:77
+msgid "File open error"
+msgstr ""
+
+#: util/errors.c:78
+msgid "File create error"
+msgstr ""
+
+#: util/errors.c:79
+msgid "Invalid passphrase"
+msgstr ""
+
+#: util/errors.c:80
+msgid "Unimplemented pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:81
+msgid "Unimplemented cipher algorithm"
+msgstr ""
+
+#: util/errors.c:82
+msgid "Unknown signature class"
+msgstr ""
+
+#: util/errors.c:83
+msgid "Trust database error"
+msgstr ""
+
+#: util/errors.c:84
+msgid "Bad MPI"
+msgstr ""
+
+#: util/errors.c:85
+msgid "Resource limit"
+msgstr ""
+
+#: util/errors.c:86
+msgid "Invalid keyring"
+msgstr ""
+
+#: util/errors.c:87
+msgid "Bad certificate"
+msgstr ""
+
+#: util/errors.c:88
+msgid "Malformed user id"
+msgstr ""
+
+#: util/errors.c:89
+msgid "File close error"
+msgstr ""
+
+#: util/errors.c:90
+msgid "File rename error"
+msgstr ""
+
+#: util/errors.c:91
+msgid "File delete error"
+msgstr ""
+
+#: util/errors.c:92
+msgid "Unexpected data"
+msgstr ""
+
+#: util/errors.c:93
+msgid "Timestamp conflict"
+msgstr ""
+
+#: util/errors.c:94
+msgid "Unusable pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:95
+msgid "File exists"
+msgstr ""
+
+#: util/errors.c:96
+msgid "Weak key"
+msgstr ""
+
+#: util/logger.c:177
+#, c-format
+msgid "Ohhhh jeeee ... this is a bug (%s:%d:%s)\n"
+msgstr ""
+
+#: util/logger.c:183
+#, c-format
+msgid "you found a bug ... (%s:%d)\n"
+msgstr ""
+
+#: cipher/rand-dummy.c:112
 msgid "warning: using insecure random number generator!!\n"
 msgstr ""
 
-#: cipher/rand-dummy.c:107
+#: cipher/rand-dummy.c:113
 msgid ""
 "The random number generator is only a kludge to let\n"
 "it compile - it is in no way a strong RNG!\n"
@@ -46,93 +231,93 @@ msgid ""
 "the OS a chance to collect more entropy! (Need %d more bytes)\n"
 msgstr ""
 
-#: g10/g10.c:146
+#: g10/g10.c:147
 msgid ""
 "@Commands:\n"
 " "
 msgstr ""
 
-#: g10/g10.c:149
+#: g10/g10.c:150
 msgid "|[file]|make a signature"
 msgstr ""
 
-#: g10/g10.c:150
+#: g10/g10.c:151
 msgid "|[file]|make a clear text signature"
 msgstr ""
 
-#: g10/g10.c:151
+#: g10/g10.c:152
 msgid "make a detached signature"
 msgstr ""
 
-#: g10/g10.c:152
+#: g10/g10.c:153
 msgid "encrypt data"
 msgstr ""
 
-#: g10/g10.c:153
+#: g10/g10.c:154
 msgid "encryption only with symmetric cipher"
 msgstr ""
 
-#: g10/g10.c:154
+#: g10/g10.c:155
 msgid "store only"
 msgstr ""
 
-#: g10/g10.c:155
+#: g10/g10.c:156
 msgid "decrypt data (default)"
 msgstr ""
 
-#: g10/g10.c:156
+#: g10/g10.c:157
 msgid "verify a signature"
 msgstr ""
 
-#: g10/g10.c:158
+#: g10/g10.c:159
 msgid "list keys"
 msgstr ""
 
-#: g10/g10.c:159
+#: g10/g10.c:160
 msgid "list keys and signatures"
 msgstr ""
 
-#: g10/g10.c:160
+#: g10/g10.c:161
 msgid "check key signatures"
 msgstr ""
 
-#: g10/g10.c:161
+#: g10/g10.c:162
 msgid "list keys and fingerprints"
 msgstr ""
 
-#: g10/g10.c:162
+#: g10/g10.c:163
 msgid "list secret keys"
 msgstr ""
 
-#: g10/g10.c:164
+#: g10/g10.c:165
 msgid "generate a new key pair"
 msgstr ""
 
-#: g10/g10.c:166
+#: g10/g10.c:167
 msgid "remove key from the public keyring"
 msgstr ""
 
-#: g10/g10.c:168
+#: g10/g10.c:169
 msgid "sign or edit a key"
 msgstr ""
 
-#: g10/g10.c:169
+#: g10/g10.c:170
 msgid "generate a revocation certificate"
 msgstr ""
 
-#: g10/g10.c:171
+#: g10/g10.c:172
 msgid "export keys"
 msgstr ""
 
-#: g10/g10.c:174
+#: g10/g10.c:175
 msgid "import/merge keys"
 msgstr ""
 
-#: g10/g10.c:175
+#: g10/g10.c:176
 msgid "list only the sequence of packets"
 msgstr ""
 
-#: g10/g10.c:177
+#: g10/g10.c:178
 #, fuzzy
 msgid "export the ownertrust values"
 msgstr ""
@@ -140,7 +325,7 @@ msgstr ""
 "to any 3rd party.  We need it to implement the web-of-trust; it has nothing\n"
 "to do with the (implicitly created) web-of-certificates."
 
-#: g10/g10.c:178
+#: g10/g10.c:179
 #, fuzzy
 msgid "import ownertrust values"
 msgstr ""
@@ -148,151 +333,155 @@ msgstr ""
 "to any 3rd party.  We need it to implement the web-of-trust; it has nothing\n"
 "to do with the (implicitly created) web-of-certificates."
 
-#: g10/g10.c:179
+#: g10/g10.c:180
 msgid "|[NAMES]|check the trust database"
 msgstr ""
 
-#: g10/g10.c:180
+#: g10/g10.c:181
+msgid "fix a corrupted trust database"
+msgstr ""
+
+#: g10/g10.c:182
 msgid "De-Armor a file or stdin"
 msgstr ""
 
-#: g10/g10.c:181
+#: g10/g10.c:183
 msgid "En-Armor a file or stdin"
 msgstr ""
 
-#: g10/g10.c:182
+#: g10/g10.c:184
 msgid "|algo [files]|print message digests"
 msgstr ""
 
-#: g10/g10.c:183
+#: g10/g10.c:185
 msgid "print all message digests"
 msgstr ""
 
-#: g10/g10.c:190
+#: g10/g10.c:192
 msgid ""
 "@\n"
 "Options:\n"
 " "
 msgstr ""
 
-#: g10/g10.c:192
+#: g10/g10.c:194
 msgid "create ascii armored output"
 msgstr ""
 
-#: g10/g10.c:194
+#: g10/g10.c:196
 msgid "use this user-id to sign or decrypt"
 msgstr ""
 
-#: g10/g10.c:195
+#: g10/g10.c:197
 msgid "use this user-id for encryption"
 msgstr ""
 
-#: g10/g10.c:196
+#: g10/g10.c:198
 msgid "|N|set compress level N (0 disables)"
 msgstr ""
 
-#: g10/g10.c:197
+#: g10/g10.c:199
 msgid "use canonical text mode"
 msgstr ""
 
-#: g10/g10.c:199
+#: g10/g10.c:201
 msgid "use as output file"
 msgstr ""
 
-#: g10/g10.c:200
+#: g10/g10.c:202
 msgid "verbose"
 msgstr ""
 
 #. { oDryRun, "dry-run",   0, N_("do not make any changes") },
-#: g10/g10.c:202
+#: g10/g10.c:204
 msgid "batch mode: never ask"
 msgstr ""
 
-#: g10/g10.c:203
+#: g10/g10.c:205
 msgid "assume yes on most questions"
 msgstr ""
 
-#: g10/g10.c:204
+#: g10/g10.c:206
 msgid "assume no on most questions"
 msgstr ""
 
-#: g10/g10.c:205
+#: g10/g10.c:207
 msgid "add this keyring to the list of keyrings"
 msgstr ""
 
-#: g10/g10.c:206
+#: g10/g10.c:208
 msgid "add this secret keyring to the list"
 msgstr ""
 
-#: g10/g10.c:207
+#: g10/g10.c:209
 msgid "|NAME|use NAME as default secret key"
 msgstr ""
 
-#: g10/g10.c:208
+#: g10/g10.c:210
 msgid "read options from file"
 msgstr ""
 
-#: g10/g10.c:210
+#: g10/g10.c:212
 msgid "set debugging flags"
 msgstr ""
 
-#: g10/g10.c:211
+#: g10/g10.c:213
 msgid "enable full debugging"
 msgstr ""
 
-#: g10/g10.c:212
+#: g10/g10.c:214
 msgid "|FD|write status info to this FD"
 msgstr ""
 
-#: g10/g10.c:213
+#: g10/g10.c:215
 msgid "do not write comment packets"
 msgstr ""
 
-#: g10/g10.c:214
+#: g10/g10.c:216
 msgid "(default is 1)"
 msgstr ""
 
-#: g10/g10.c:215
+#: g10/g10.c:217
 msgid "(default is 3)"
 msgstr ""
 
-#: g10/g10.c:216
+#: g10/g10.c:218
 msgid "|FILE|load extension module FILE"
 msgstr ""
 
-#: g10/g10.c:217
+#: g10/g10.c:219
 msgid "emulate the mode described in RFC1991"
 msgstr ""
 
-#: g10/g10.c:218
+#: g10/g10.c:220
 msgid "|N|use passphrase mode N"
 msgstr ""
 
-#: g10/g10.c:220
+#: g10/g10.c:222
 msgid "|NAME|use message digest algorithm NAME for passphrases"
 msgstr ""
 
-#: g10/g10.c:222
+#: g10/g10.c:224
 msgid "|NAME|use cipher algorithm NAME for passphrases"
 msgstr ""
 
-#: g10/g10.c:224
+#: g10/g10.c:226
 msgid "|NAME|use cipher algorithm NAME"
 msgstr ""
 
-#: g10/g10.c:225
+#: g10/g10.c:227
 msgid "|NAME|use message digest algorithm NAME"
 msgstr ""
 
-#: g10/g10.c:226
+#: g10/g10.c:228
 msgid "|N|use compress algorithm N"
 msgstr ""
 
-#: g10/g10.c:227
+#: g10/g10.c:229
 msgid "throw keyid field of encrypted packets"
 msgstr ""
 
-#: g10/g10.c:235
+#: g10/g10.c:237
 msgid ""
 "@\n"
 "Examples:\n"
@@ -304,172 +493,172 @@ msgid ""
 " --fingerprint [names]      show fingerprints\n"
 msgstr ""
 
-#: g10/g10.c:310
+#: g10/g10.c:312
 msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
 msgstr ""
 
-#: g10/g10.c:315
+#: g10/g10.c:317
 msgid "Usage: gpgm [options] [files] (-h for help)"
 msgstr ""
 
-#: g10/g10.c:317
+#: g10/g10.c:319
 msgid "Usage: gpg [options] [files] (-h for help)"
 msgstr ""
 
-#: g10/g10.c:322
+#: g10/g10.c:324
 msgid ""
 "Syntax: gpgm [options] [files]\n"
 "GNUPG maintenance utility\n"
 msgstr ""
 
-#: g10/g10.c:325
+#: g10/g10.c:327
 msgid ""
 "Syntax: gpg [options] [files]\n"
 "sign, check, encrypt or decrypt\n"
 "default operation depends on the input data\n"
 msgstr ""
 
-#: g10/g10.c:331
+#: g10/g10.c:333
 msgid ""
 "\n"
 "Supported algorithms:\n"
 msgstr ""
 
-#: g10/g10.c:406
+#: g10/g10.c:408
 msgid "usage: gpgm [options] "
 msgstr ""
 
-#: g10/g10.c:408
+#: g10/g10.c:410
 msgid "usage: gpg [options] "
 msgstr ""
 
-#: g10/g10.c:449
+#: g10/g10.c:451
 msgid "conflicting commands\n"
 msgstr ""
 
-#: g10/g10.c:588
+#: g10/g10.c:590
 #, c-format
 msgid "note: no default option file '%s'\n"
 msgstr ""
 
-#: g10/g10.c:592
+#: g10/g10.c:594
 #, c-format
 msgid "option file '%s': %s\n"
 msgstr ""
 
-#: g10/g10.c:599
+#: g10/g10.c:601
 #, c-format
 msgid "reading options from '%s'\n"
 msgstr ""
 
-#: g10/g10.c:765 g10/g10.c:777
+#: g10/g10.c:768 g10/g10.c:780
 msgid "selected cipher algorithm is invalid\n"
 msgstr ""
 
-#: g10/g10.c:771 g10/g10.c:783
+#: g10/g10.c:774 g10/g10.c:786
 msgid "selected digest algorithm is invalid\n"
 msgstr ""
 
-#: g10/g10.c:786
+#: g10/g10.c:789
 #, c-format
 msgid "compress algorithm must be in range %d..%d\n"
 msgstr ""
 
-#: g10/g10.c:788
+#: g10/g10.c:791
 msgid "completes-needed must be greater than 0\n"
 msgstr ""
 
-#: g10/g10.c:790
+#: g10/g10.c:793
 msgid "marginals-needed must be greater than 1\n"
 msgstr ""
 
-#: g10/g10.c:793
+#: g10/g10.c:796
 msgid "note: simple S2K mode (0) is strongly discouraged\n"
 msgstr ""
 
-#: g10/g10.c:797
+#: g10/g10.c:800
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
 msgstr ""
 
-#: g10/g10.c:872
+#: g10/g10.c:876
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
 msgstr ""
 
-#: g10/g10.c:878
+#: g10/g10.c:882
 msgid "--store [filename]"
 msgstr ""
 
-#: g10/g10.c:886
+#: g10/g10.c:890
 msgid "--symmetric [filename]"
 msgstr ""
 
-#: g10/g10.c:894
+#: g10/g10.c:898
 msgid "--encrypt [filename]"
 msgstr ""
 
-#: g10/g10.c:907
+#: g10/g10.c:911
 msgid "--sign [filename]"
 msgstr ""
 
-#: g10/g10.c:920
+#: g10/g10.c:924
 msgid "--sign --encrypt [filename]"
 msgstr ""
 
-#: g10/g10.c:934
+#: g10/g10.c:938
 msgid "--clearsign [filename]"
 msgstr ""
 
-#: g10/g10.c:946
+#: g10/g10.c:950
 msgid "--decrypt [filename]"
 msgstr ""
 
-#: g10/g10.c:955
+#: g10/g10.c:959
 msgid "--edit-key username"
 msgstr ""
 
-#: g10/g10.c:963
+#: g10/g10.c:967
 msgid "--delete-secret-key username"
 msgstr ""
 
-#: g10/g10.c:966
+#: g10/g10.c:970
 msgid "--delete-key username"
 msgstr ""
 
-#: g10/encode.c:213 g10/g10.c:989 g10/keylist.c:79
+#: g10/encode.c:213 g10/g10.c:993 g10/keylist.c:79
 #, c-format
 msgid "can't open %s: %s\n"
 msgstr ""
 
-#: g10/g10.c:1000
+#: g10/g10.c:1004
 msgid "-k[v][v][v][c] [userid] [keyring]"
 msgstr ""
 
-#: g10/g10.c:1055
+#: g10/g10.c:1059
 #, c-format
 msgid "dearmoring failed: %s\n"
 msgstr ""
 
-#: g10/g10.c:1063
+#: g10/g10.c:1067
 #, c-format
 msgid "enarmoring failed: %s\n"
 msgstr ""
 
-#: g10/g10.c:1124
+#: g10/g10.c:1128
 #, c-format
 msgid "invalid hash algorithm '%s'\n"
 msgstr ""
 
-#: g10/g10.c:1194
+#: g10/g10.c:1204
 msgid "[filename]"
 msgstr ""
 
-#: g10/decrypt.c:59 g10/g10.c:1196 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1206 g10/verify.c:66
 #, c-format
 msgid "can't open '%s'\n"
 msgstr ""
 
-#: g10/g10.c:1241
+#: g10/g10.c:1251
 msgid ""
 "RSA keys are deprecated; please consider creating a new key and use this key "
 "in the future\n"
@@ -585,21 +774,21 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/pkclist.c:170
+#: g10/pkclist.c:168
 msgid ""
 "No owner trust values changed.\n"
 "\n"
 msgstr ""
 
-#: g10/pkclist.c:190
+#: g10/pkclist.c:188
 msgid "revoked_key.override"
 msgstr "If you want to use this revoked key anyway, answer \"yes\"."
 
-#: g10/pkclist.c:191 g10/pkclist.c:281
+#: g10/pkclist.c:189 g10/pkclist.c:279
 msgid "Use this key anyway? "
 msgstr ""
 
-#: g10/pkclist.c:276
+#: g10/pkclist.c:274
 msgid ""
 "It is NOT certain that the key belongs to its owner.\n"
 "If you *really* know what you are doing, you may answer\n"
@@ -607,82 +796,82 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/pkclist.c:280
+#: g10/pkclist.c:278
 msgid "untrusted_key.override"
 msgstr "If you want to use this untrusted key anyway, answer \"yes\"."
 
-#: g10/pkclist.c:285
+#: g10/pkclist.c:283
 msgid "WARNING: Using untrusted key!\n"
 msgstr ""
 
-#: g10/pkclist.c:321
+#: g10/pkclist.c:319
 msgid "WARNING: This key has been revoked by its owner!\n"
 msgstr ""
 
-#: g10/pkclist.c:322
+#: g10/pkclist.c:320
 msgid "         This could mean that the signature is forgery.\n"
 msgstr ""
 
-#: g10/pkclist.c:343
+#: g10/pkclist.c:341
 msgid "Note: This key has expired!\n"
 msgstr ""
 
-#: g10/pkclist.c:350
+#: g10/pkclist.c:348
 msgid "WARNING: This key is not certified with a trusted signature!\n"
 msgstr ""
 
-#: g10/pkclist.c:352
+#: g10/pkclist.c:350
 msgid ""
 "         There is no indication that the signature belongs to the owner.\n"
 msgstr ""
 
-#: g10/pkclist.c:367
+#: g10/pkclist.c:365
 msgid "WARNING: We do NOT trust this key!\n"
 msgstr ""
 
-#: g10/pkclist.c:368
+#: g10/pkclist.c:366
 msgid "         The signature is probably a FORGERY.\n"
 msgstr ""
 
-#: g10/pkclist.c:375
+#: g10/pkclist.c:373
 msgid ""
 "WARNING: This key is not certified with sufficiently trusted signatures!\n"
 msgstr ""
 
-#: g10/pkclist.c:378
+#: g10/pkclist.c:376
 msgid "         It is not certain that the signature belongs to the owner.\n"
 msgstr ""
 
-#: g10/pkclist.c:423
+#: g10/pkclist.c:421
 msgid ""
 "You did not specify a user ID. (you may use \"-r\")\n"
 "\n"
 msgstr ""
 
-#: g10/pkclist.c:427
+#: g10/pkclist.c:425
 msgid "pklist.user_id.enter"
 msgstr ""
 "Enter the user id of the addresse to whom you want to send the message."
 
-#: g10/pkclist.c:428
+#: g10/pkclist.c:426
 msgid "Enter the user ID: "
 msgstr ""
 
-#: g10/pkclist.c:439
+#: g10/pkclist.c:437
 msgid "No such user ID.\n"
 msgstr ""
 
-#: g10/pkclist.c:473 g10/pkclist.c:500
+#: g10/pkclist.c:471 g10/pkclist.c:498
 #, c-format
 msgid "%s: skipped: %s\n"
 msgstr ""
 
-#: g10/pkclist.c:481
+#: g10/pkclist.c:479
 #, c-format
 msgid "%s: error checking key: %s\n"
 msgstr ""
 
-#: g10/pkclist.c:507
+#: g10/pkclist.c:505
 msgid "no valid addressees\n"
 msgstr ""
 
@@ -708,22 +897,22 @@ msgstr ""
 msgid "   (%d) ElGamal (sign and encrypt)\n"
 msgstr ""
 
-#: g10/keygen.c:387
+#: g10/keygen.c:388
 #, c-format
 msgid "   (%d) ElGamal (encrypt only)\n"
 msgstr ""
 
-#: g10/keygen.c:388
+#: g10/keygen.c:389
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr ""
 
-#: g10/keygen.c:389
+#: g10/keygen.c:390
 #, c-format
 msgid "   (%d) ElGamal in a v3 packet\n"
 msgstr ""
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "keygen.algo"
 msgstr ""
 "Select the algorithm to use.\n"
@@ -741,16 +930,15 @@ msgstr ""
 "You should not select the \"ElGamal in a v3 packet\", because that key is\n"
 "not compatible to other OpenPGP implementations."
 
-
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "Your selection? "
 msgstr ""
 
-#: g10/keygen.c:419
+#: g10/keygen.c:420
 msgid "Invalid selection.\n"
 msgstr ""
 
-#: g10/keygen.c:431
+#: g10/keygen.c:432
 #, c-format
 msgid ""
 "About to generate a new %s keypair.\n"
@@ -759,61 +947,61 @@ msgid ""
 "    highest suggested keysize is 2048 bits\n"
 msgstr ""
 
-#: g10/keygen.c:437
+#: g10/keygen.c:438
 msgid "keygen.size"
 msgstr ""
 
-#: g10/keygen.c:438
+#: g10/keygen.c:439
 msgid "What keysize do you want? (1024) "
 msgstr ""
 
-#: g10/keygen.c:443
+#: g10/keygen.c:444
 msgid "DSA only allows keysizes from 512 to 1024\n"
 msgstr ""
 
-#: g10/keygen.c:445
+#: g10/keygen.c:446
 msgid "keysize too small; 768 is smallest value allowed.\n"
 msgstr ""
 
-#: g10/keygen.c:448
+#: g10/keygen.c:449
 msgid ""
 "Keysizes larger than 2048 are not suggested because\n"
 "computations take REALLY long!\n"
 msgstr ""
 
-#: g10/keygen.c:450
+#: g10/keygen.c:451
 msgid "keygen.size.huge.okay"
 msgstr ""
 
-#: g10/keygen.c:451
+#: g10/keygen.c:452
 msgid "Are you sure that you want this keysize? "
 msgstr ""
 
-#: g10/keygen.c:452
+#: g10/keygen.c:453
 msgid ""
 "Okay, but keep in mind that your monitor and keyboard radiation is also very "
 "vulnerable to attacks!\n"
 msgstr ""
 
-#: g10/keygen.c:459
+#: g10/keygen.c:460
 msgid "keygen.size.large.okay"
 msgstr ""
 
-#: g10/keygen.c:460
+#: g10/keygen.c:461
 msgid "Do you really need such a large keysize? "
 msgstr ""
 
-#: g10/keygen.c:466
+#: g10/keygen.c:467
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr ""
 
-#: g10/keygen.c:469 g10/keygen.c:473
+#: g10/keygen.c:470 g10/keygen.c:474
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr ""
 
-#: g10/keygen.c:485
+#: g10/keygen.c:486
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -823,37 +1011,37 @@ msgid ""
 "      <n>y = key expires in n years\n"
 msgstr ""
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "keygen.valid"
 msgstr ""
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "Key is valid for? (0) "
 msgstr ""
 
-#: g10/keygen.c:511
+#: g10/keygen.c:512
 msgid "invalid value\n"
 msgstr ""
 
-#: g10/keygen.c:516
+#: g10/keygen.c:517
 msgid "Key does not expire at all\n"
 msgstr ""
 
 #. print the date when the key expires
-#: g10/keygen.c:519
+#: g10/keygen.c:520
 #, c-format
 msgid "Key expires at %s\n"
 msgstr ""
 
-#: g10/keygen.c:524
+#: g10/keygen.c:525
 msgid "keygen.valid.okay"
 msgstr ""
 
-#: g10/keygen.c:525
+#: g10/keygen.c:526
 msgid "Is this correct (y/n)? "
 msgstr ""
 
-#: g10/keygen.c:553
+#: g10/keygen.c:554
 msgid ""
 "\n"
 "You need a User-ID to identify your key; the software constructs the user "
@@ -863,51 +1051,51 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "keygen.name"
 msgstr ""
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "Real name: "
 msgstr ""
 
-#: g10/keygen.c:568
+#: g10/keygen.c:569
 msgid "Invalid character in name\n"
 msgstr ""
 
-#: g10/keygen.c:570
+#: g10/keygen.c:571
 msgid "Name may not start with a digit\n"
 msgstr ""
 
-#: g10/keygen.c:572
+#: g10/keygen.c:573
 msgid "Name must be at least 5 characters long\n"
 msgstr ""
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "keygen.email"
 msgstr ""
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "Email address: "
 msgstr ""
 
-#: g10/keygen.c:592
+#: g10/keygen.c:593
 msgid "Not a valid email address\n"
 msgstr ""
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "keygen.comment"
 msgstr ""
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "Comment: "
 msgstr ""
 
-#: g10/keygen.c:606
+#: g10/keygen.c:607
 msgid "Invalid character in comment\n"
 msgstr ""
 
-#: g10/keygen.c:626
+#: g10/keygen.c:627
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -915,11 +1103,11 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:629
+#: g10/keygen.c:630
 msgid "NnCcEeOoQq"
 msgstr ""
 
-#: g10/keygen.c:638
+#: g10/keygen.c:639
 msgid "keygen.userid.cmd"
 msgstr ""
 "N  to change the name.\n"
@@ -928,21 +1116,21 @@ msgstr ""
 "O  to continue with key generation.\n"
 "Q  to to quit the key generation."
 
-#: g10/keygen.c:639
+#: g10/keygen.c:640
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr ""
 
-#: g10/keygen.c:686
+#: g10/keygen.c:687
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
 msgstr ""
 
-#: g10/keyedit.c:377 g10/keygen.c:694
+#: g10/keyedit.c:388 g10/keygen.c:695
 msgid "passphrase not correctly repeated; try again.\n"
 msgstr ""
 
-#: g10/keygen.c:700
+#: g10/keygen.c:701
 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"
@@ -950,7 +1138,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: g10/keygen.c:721
+#: g10/keygen.c:722
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (work in another window, move the mouse, utilize the\n"
@@ -958,48 +1146,48 @@ msgid ""
 "number generator a better chance to gain enough entropy.\n"
 msgstr ""
 
-#: g10/keygen.c:788
+#: g10/keygen.c:789
 msgid "Key generation can only be used in interactive mode\n"
 msgstr ""
 
-#: g10/keygen.c:796
+#: g10/keygen.c:797
 msgid "DSA keypair will have 1024 bits.\n"
 msgstr ""
 
-#: g10/keygen.c:802
+#: g10/keygen.c:803
 msgid "Key generation cancelled.\n"
 msgstr ""
 
-#: g10/keygen.c:812
+#: g10/keygen.c:813
 #, c-format
 msgid "writing public certificate to '%s'\n"
 msgstr ""
 
-#: g10/keygen.c:813
+#: g10/keygen.c:814
 #, c-format
 msgid "writing secret certificate to '%s'\n"
 msgstr ""
 
-#: g10/keygen.c:890
+#: g10/keygen.c:891
 msgid "public and secret key created and signed.\n"
 msgstr ""
 
-#: g10/keygen.c:892
+#: g10/keygen.c:893
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--add-key\" to generate a secondary key for this purpose.\n"
 msgstr ""
 
-#: g10/keygen.c:906 g10/keygen.c:990
+#: g10/keygen.c:907 g10/keygen.c:991
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr ""
 
-#: g10/keygen.c:967
+#: g10/keygen.c:968
 msgid "keygen.sub.okay"
 msgstr "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key."
 
-#: g10/keygen.c:968
+#: g10/keygen.c:969
 msgid "Really create? "
 msgstr ""
 
@@ -1033,7 +1221,7 @@ msgstr ""
 msgid "using secondary key %08lX instead of primary key %08lX\n"
 msgstr ""
 
-#: g10/import.c:105 g10/trustdb.c:1349
+#: g10/import.c:105 g10/trustdb.c:1389
 #, c-format
 msgid "can't open file: %s\n"
 msgstr ""
@@ -1043,7 +1231,7 @@ msgstr ""
 msgid "skipping block of type %d\n"
 msgstr ""
 
-#: g10/import.c:131 g10/trustdb.c:1427
+#: g10/import.c:131 g10/trustdb.c:1464
 #, c-format
 msgid "read error: %s\n"
 msgstr ""
@@ -1279,338 +1467,343 @@ msgstr ""
 msgid "%d user ids without valid self-signatures detected\n"
 msgstr ""
 
-#: g10/keyedit.c:249
+#: g10/keyedit.c:257
 #, c-format
 msgid "Already signed by key %08lX\n"
 msgstr ""
 
-#: g10/keyedit.c:257
+#: g10/keyedit.c:265
 #, c-format
 msgid "Nothing to sign with key %08lX\n"
 msgstr ""
 
-#: g10/keyedit.c:265
+#: g10/keyedit.c:274
 msgid ""
 "Are you really sure that you want to sign this key\n"
 "with your key: \""
 msgstr ""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "sign_uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "Really sign? "
 msgstr ""
 
-#: g10/keyedit.c:293
+#: g10/keyedit.c:302
 #, c-format
 msgid "signing failed: %s\n"
 msgstr ""
 
-#: g10/keyedit.c:344
+#: g10/keyedit.c:355
 msgid "This key is not protected.\n"
 msgstr ""
 
-#: g10/keyedit.c:347
+#: g10/keyedit.c:358
 msgid "Key is protected.\n"
 msgstr ""
 
-#: g10/keyedit.c:364
+#: g10/keyedit.c:375
 #, c-format
 msgid "Can't edit this key: %s\n"
 msgstr ""
 
-#: g10/keyedit.c:369
+#: g10/keyedit.c:380
 msgid ""
 "Enter the new passphrase for this secret key.\n"
 "\n"
 msgstr ""
 
-#: g10/keyedit.c:381
+#: g10/keyedit.c:392
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "\n"
 msgstr ""
 
-#: g10/keyedit.c:383
+#: g10/keyedit.c:394
 msgid "change_passwd.empty.okay"
 msgstr ""
 
-#: g10/keyedit.c:384
+#: g10/keyedit.c:395
 msgid "Do you really want to do this? "
 msgstr ""
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit"
 msgstr ""
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit this menu"
 msgstr ""
 
-#: g10/keyedit.c:440
+#: g10/keyedit.c:451
 msgid "q"
 msgstr ""
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save"
 msgstr ""
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save and quit"
 msgstr ""
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "help"
 msgstr ""
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "show this help"
 msgstr ""
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "fpr"
 msgstr ""
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "show fingerprint"
 msgstr ""
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 msgid "list"
 msgstr ""
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 msgid "list key and user ids"
 msgstr ""
 
-#: g10/keyedit.c:446
+#: g10/keyedit.c:457
 msgid "l"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "uid"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "select user id N"
 msgstr ""
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "key"
 msgstr ""
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "select secondary key N"
 msgstr ""
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "check"
 msgstr ""
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "list signatures"
 msgstr ""
 
-#: g10/keyedit.c:450
+#: g10/keyedit.c:461
 msgid "c"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign the key"
 msgstr ""
 
-#: g10/keyedit.c:452
+#: g10/keyedit.c:463
 msgid "s"
 msgstr ""
 
-#: g10/keyedit.c:453
+#: g10/keyedit.c:464
 msgid "debug"
 msgstr ""
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "adduid"
 msgstr ""
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "add a user id"
 msgstr ""
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "deluid"
 msgstr ""
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "delete user id"
 msgstr ""
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "addkey"
 msgstr ""
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "add a secondary key"
 msgstr ""
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delkey"
 msgstr ""
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delete a secondary key"
 msgstr ""
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle"
 msgstr ""
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle between secret and public key listing"
 msgstr ""
 
-#: g10/keyedit.c:460
+#: g10/keyedit.c:471
 msgid "t"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "pref"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "list preferences"
 msgstr ""
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "passwd"
 msgstr ""
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "change the passphrase"
 msgstr ""
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "trust"
 msgstr ""
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "change the ownertrust"
 msgstr ""
 
-#: g10/keyedit.c:481
+#: g10/keyedit.c:492
 msgid "can't do that in batchmode\n"
 msgstr ""
 
 #. check that they match
 #. FIXME: check that they both match
-#: g10/keyedit.c:504
+#: g10/keyedit.c:515
 msgid "Secret key is available.\n"
 msgstr ""
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "keyedit.cmd"
 msgstr "Please enter \"help\"."
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "Command> "
 msgstr ""
 
-#: g10/keyedit.c:545
+#: g10/keyedit.c:556
 msgid "Need the secret key to to this.\n"
 msgstr ""
 
-#: g10/keyedit.c:564
+#: g10/keyedit.c:575
 msgid "keyedit.save.okay"
 msgstr ""
 
-#: g10/keyedit.c:565
+#: g10/keyedit.c:576
 msgid "Save changes? "
 msgstr ""
 
-#: g10/keyedit.c:567
+#: g10/keyedit.c:578
 msgid "keyedit.cancel.okay"
 msgstr ""
 
-#: g10/keyedit.c:568
+#: g10/keyedit.c:579
 msgid "Quit without saving? "
 msgstr ""
 
-#: g10/keyedit.c:578
+#: g10/keyedit.c:589
 #, c-format
 msgid "update failed: %s\n"
 msgstr ""
 
-#: g10/keyedit.c:585
+#: g10/keyedit.c:596
 #, c-format
 msgid "update secret failed: %s\n"
 msgstr ""
 
-#: g10/keyedit.c:593
+#: g10/keyedit.c:603
 msgid "Key not changed so no update needed.\n"
 msgstr ""
 
-#: g10/keyedit.c:623
+#: g10/keyedit.c:606 g10/keyedit.c:664
+#, c-format
+msgid "update of trust db failed: %s\n"
+msgstr ""
+
+#: g10/keyedit.c:637
 msgid "keyedit.sign_all.okay"
 msgstr ""
 
-#: g10/keyedit.c:624
+#: g10/keyedit.c:638
 msgid "Really sign all user ids? "
 msgstr ""
 
-#: g10/keyedit.c:625
+#: g10/keyedit.c:639
 msgid "Hint: Select the user ids to sign\n"
 msgstr ""
 
-#: g10/keyedit.c:653
+#: g10/keyedit.c:675
 msgid "You must select at least one user id.\n"
 msgstr ""
 
-#: g10/keyedit.c:655
+#: g10/keyedit.c:677
 msgid "You can't delete the last user id!\n"
 msgstr ""
 
-#: g10/keyedit.c:657
+#: g10/keyedit.c:679
 msgid "keyedit.remove.uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:658
+#: g10/keyedit.c:680
 msgid "Really remove all selected user ids? "
 msgstr ""
 
-#: g10/keyedit.c:659
+#: g10/keyedit.c:681
 msgid "Really remove this user id? "
 msgstr ""
 
-#: g10/keyedit.c:682
+#: g10/keyedit.c:704
 msgid "You must select at least one key.\n"
 msgstr ""
 
-#: g10/keyedit.c:684
+#: g10/keyedit.c:706
 msgid "keyedit.remove.subkey.okay"
 msgstr ""
 
-#: g10/keyedit.c:686
+#: g10/keyedit.c:708
 msgid "Do you really want to delete the selected keys? "
 msgstr ""
 
-#: g10/keyedit.c:687
+#: g10/keyedit.c:709
 msgid "Do you really want to delete this key? "
 msgstr ""
 
-#: g10/keyedit.c:724
+#: g10/keyedit.c:746
 msgid "Invalid command  (try \"help\")\n"
 msgstr ""
 
-#: g10/keyedit.c:1104
+#: g10/keyedit.c:1129
 #, c-format
 msgid "No user id with index %d\n"
 msgstr ""
 
-#: g10/keyedit.c:1149
+#: g10/keyedit.c:1174
 #, c-format
 msgid "No secondary key with index %d\n"
 msgstr ""
@@ -1634,15 +1827,15 @@ msgstr ""
 msgid "Signature made %.*s using %s key ID %08lX\n"
 msgstr ""
 
-#: g10/mainproc.c:852
+#: g10/mainproc.c:854
 msgid "BAD signature from \""
 msgstr ""
 
-#: g10/mainproc.c:853
+#: g10/mainproc.c:855
 msgid "Good signature from \""
 msgstr ""
 
-#: g10/mainproc.c:864
+#: g10/mainproc.c:866
 #, c-format
 msgid "Can't check signature: %s\n"
 msgstr ""
@@ -1721,77 +1914,76 @@ msgstr ""
 msgid "warning: signature key expired %s\n"
 msgstr ""
 
-#: g10/trustdb.c:318
-#, c-format
-msgid "error reading sigrec: %s\n"
+#: g10/trustdb.c:127
+msgid "The trust DB is corrupted; please run \"gpgm --fix-trust-db\".\n"
 msgstr ""
 
-#: g10/trustdb.c:323
+#: g10/trustdb.c:406
 #, c-format
 msgid "chained sigrec %lu has a wrong owner\n"
 msgstr ""
 
-#: g10/trustdb.c:370
+#: g10/trustdb.c:453
 #, c-format
 msgid "key %08lX: secret key without public key\n"
 msgstr ""
 
-#: g10/trustdb.c:375
+#: g10/trustdb.c:458
 #, c-format
 msgid "key %08lX: secret and public key don't match\n"
 msgstr ""
 
-#: g10/trustdb.c:386
+#: g10/trustdb.c:469
 #, c-format
 msgid "key %08lX: can't put it into the trustdb\n"
 msgstr ""
 
-#: g10/trustdb.c:392
+#: g10/trustdb.c:475
 #, c-format
 msgid "key %08lX: query record failed\n"
 msgstr ""
 
-#: g10/trustdb.c:401
+#: g10/trustdb.c:484
 #, c-format
 msgid "key %08lX: already in ultikey_table\n"
 msgstr ""
 
-#: g10/trustdb.c:408
+#: g10/trustdb.c:491
 #, c-format
 msgid "enum_secret_keys failed: %s\n"
 msgstr ""
 
-#: g10/trustdb.c:913
+#: g10/trustdb.c:964
 #, c-format
 msgid "key %08lX.%lu, uid %02X%02X: no public key for signature %08lX\n"
 msgstr ""
 
-#: g10/trustdb.c:920
+#: g10/trustdb.c:971
 #, c-format
 msgid "key %08lX.%lu, uid %02X%02X: invalid %ssignature: %s\n"
 msgstr ""
 
-#: g10/trustdb.c:1624
+#: g10/trustdb.c:1658
 #, c-format
 msgid "key %08lX: insert trust record failed: %s\n"
 msgstr ""
 
-#: g10/trustdb.c:1628
+#: g10/trustdb.c:1662
 #, c-format
 msgid "key %08lX.%lu: inserted into trustdb\n"
 msgstr ""
 
-#: g10/trustdb.c:1639
+#: g10/trustdb.c:1670
 #, c-format
 msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
 msgstr ""
 
-#: g10/trustdb.c:1647
+#: g10/trustdb.c:1678
 #, c-format
 msgid "key %08lX.%lu: expired at %s\n"
 msgstr ""
 
-#: g10/trustdb.c:1656
+#: g10/trustdb.c:1687
 #, c-format
 msgid "key %08lX.%lu: trust check failed: %s\n"
 msgstr ""
index ddc51a7..8d0e346 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-0.4.0\n"
-"POT-Creation-Date: 1998-09-30 19:01+0200\n"
+"POT-Creation-Date: 1998-10-07 14:24+0200\n"
 "PO-Revision-Date: 1998-09-17 03:14+0200\n"
 "Last-Translator: Gaël Quéri <gqueri@mail.dotcom.fr>\n"
 "Language-Team: French <fr@li.org>\n"
@@ -25,12 +25,214 @@ msgstr "oui"
 msgid "yY"
 msgstr "oO"
 
-#: cipher/rand-dummy.c:106
+#: util/errors.c:54
+msgid "General error"
+msgstr ""
+
+#: util/errors.c:55
+msgid "Unknown packet type"
+msgstr ""
+
+#: util/errors.c:56
+msgid "Unknown version"
+msgstr ""
+
+#: util/errors.c:57
+msgid "Unknown pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:58
+msgid "Unknown digest algorithm"
+msgstr ""
+
+#: util/errors.c:59
+#, fuzzy
+msgid "Bad public key"
+msgstr "pas de porte-clés public par défaut\n"
+
+#: util/errors.c:60
+#, fuzzy
+msgid "Bad secret key"
+msgstr "lister les clés secrètes"
+
+#: util/errors.c:61
+#, fuzzy
+msgid "Bad signature"
+msgstr "une mauvaise signature\n"
+
+#: util/errors.c:62
+msgid "Checksum error"
+msgstr ""
+
+#: util/errors.c:63
+#, fuzzy
+msgid "Bad passphrase"
+msgstr "Répétez le mot de passe: "
+
+#: util/errors.c:64
+#, fuzzy
+msgid "Public key not found"
+msgstr "clé %08lX: clé publique pas trouvée: %s\n"
+
+#: util/errors.c:65
+#, fuzzy
+msgid "Unknown cipher algorithm"
+msgstr "|NOM|utiliser l'algorithme de cryptage NOM"
+
+#: util/errors.c:66
+#, fuzzy
+msgid "Can't open the keyring"
+msgstr "ne peut écrire le porte-clés\n"
+
+#: util/errors.c:67
+#, fuzzy
+msgid "Invalid packet"
+msgstr "valeur invalide\n"
+
+#: util/errors.c:68
+msgid "Invalid armor"
+msgstr ""
+
+#: util/errors.c:69
+#, fuzzy
+msgid "No such user id"
+msgstr "Pas de tel utilisateur.\n"
+
+#: util/errors.c:70
+#, fuzzy
+msgid "Secret key not available"
+msgstr "La clé secrète est disponible.\n"
+
+#: util/errors.c:71
+#, fuzzy
+msgid "Wrong secret key used"
+msgstr "lister les clés secrètes"
+
+#: util/errors.c:72
+msgid "Not supported"
+msgstr ""
+
+#: util/errors.c:73
+#, fuzzy
+msgid "Bad key"
+msgstr "aj.clé"
+
+#: util/errors.c:74
+#, fuzzy
+msgid "File read error"
+msgstr "erreur de lecture: %s\n"
+
+#: util/errors.c:75
+msgid "File write error"
+msgstr ""
+
+#: util/errors.c:76
+#, fuzzy
+msgid "Unknown compress algorithm"
+msgstr "|N|utiliser l'algorithme de compression N"
+
+#: util/errors.c:77
+msgid "File open error"
+msgstr ""
+
+#: util/errors.c:78
+msgid "File create error"
+msgstr ""
+
+#: util/errors.c:79
+#, fuzzy
+msgid "Invalid passphrase"
+msgstr "Entrez le mot de passe: "
+
+#: util/errors.c:80
+msgid "Unimplemented pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:81
+#, fuzzy
+msgid "Unimplemented cipher algorithm"
+msgstr "l'algorithme de cryptage sélectionné est invalide\n"
+
+#: util/errors.c:82
+msgid "Unknown signature class"
+msgstr ""
+
+#: util/errors.c:83
+msgid "Trust database error"
+msgstr ""
+
+#: util/errors.c:84
+msgid "Bad MPI"
+msgstr ""
+
+#: util/errors.c:85
+msgid "Resource limit"
+msgstr ""
+
+#: util/errors.c:86
+#, fuzzy
+msgid "Invalid keyring"
+msgstr "Choix invalide.\n"
+
+#: util/errors.c:87
+msgid "Bad certificate"
+msgstr ""
+
+#: util/errors.c:88
+#, fuzzy
+msgid "Malformed user id"
+msgstr "ajouter un utilisateur"
+
+#: util/errors.c:89
+msgid "File close error"
+msgstr ""
+
+#: util/errors.c:90
+msgid "File rename error"
+msgstr ""
+
+#: util/errors.c:91
+msgid "File delete error"
+msgstr ""
+
+#: util/errors.c:92
+msgid "Unexpected data"
+msgstr ""
+
+#: util/errors.c:93
+msgid "Timestamp conflict"
+msgstr ""
+
+#: util/errors.c:94
+#, fuzzy
+msgid "Unusable pubkey algorithm"
+msgstr "|N|utiliser l'algorithme de compression N"
+
+#: util/errors.c:95
+#, fuzzy
+msgid "File exists"
+msgstr "Le fichier '%s' existe. "
+
+#: util/errors.c:96
+msgid "Weak key"
+msgstr ""
+
+#: util/logger.c:177
+#, c-format
+msgid "Ohhhh jeeee ... this is a bug (%s:%d:%s)\n"
+msgstr ""
+
+#: util/logger.c:183
+#, c-format
+msgid "you found a bug ... (%s:%d)\n"
+msgstr ""
+
+#: cipher/rand-dummy.c:112
 msgid "warning: using insecure random number generator!!\n"
 msgstr ""
 "attention: utilisation d'un générateur de nombres aléatoires peu sûr!!\n"
 
-#: cipher/rand-dummy.c:107
+#: cipher/rand-dummy.c:113
 msgid ""
 "The random number generator is only a kludge to let\n"
 "it compile - it is in no way a strong RNG!\n"
@@ -55,7 +257,7 @@ msgstr ""
 "Il n'y a pas assez d'octets aléatoires disponibles. Faites autre chose\n"
 "pour que l'OS puisse amasser plus d'entropie! (il faut %d octets de plus)\n"
 
-#: g10/g10.c:146
+#: g10/g10.c:147
 msgid ""
 "@Commands:\n"
 " "
@@ -63,115 +265,119 @@ msgstr ""
 "@Commandes:\n"
 " "
 
-#: g10/g10.c:149
+#: g10/g10.c:150
 msgid "|[file]|make a signature"
 msgstr "|[fichier]|faire une signature"
 
-#: g10/g10.c:150
+#: g10/g10.c:151
 msgid "|[file]|make a clear text signature"
 msgstr "|[fichier]|faire une signature en texte clair"
 
-#: g10/g10.c:151
+#: g10/g10.c:152
 msgid "make a detached signature"
 msgstr "faire une signature détachée"
 
-#: g10/g10.c:152
+#: g10/g10.c:153
 msgid "encrypt data"
 msgstr "crypter les données"
 
-#: g10/g10.c:153
+#: g10/g10.c:154
 msgid "encryption only with symmetric cipher"
 msgstr "cryptage symétrique seumement"
 
-#: g10/g10.c:154
+#: g10/g10.c:155
 msgid "store only"
 msgstr "pas d'action"
 
-#: g10/g10.c:155
+#: g10/g10.c:156
 msgid "decrypt data (default)"
 msgstr "décrypter les données (défaut)"
 
-#: g10/g10.c:156
+#: g10/g10.c:157
 msgid "verify a signature"
 msgstr "vérifier une signature"
 
-#: g10/g10.c:158
+#: g10/g10.c:159
 msgid "list keys"
 msgstr "lister les clés"
 
-#: g10/g10.c:159
+#: g10/g10.c:160
 msgid "list keys and signatures"
 msgstr "lister les clés et les signatures"
 
-#: g10/g10.c:160
+#: g10/g10.c:161
 msgid "check key signatures"
 msgstr "vérifier les signatures des clés"
 
-#: g10/g10.c:161
+#: g10/g10.c:162
 msgid "list keys and fingerprints"
 msgstr "lister les clés et les empreintes"
 
-#: g10/g10.c:162
+#: g10/g10.c:163
 msgid "list secret keys"
 msgstr "lister les clés secrètes"
 
-#: g10/g10.c:164
+#: g10/g10.c:165
 msgid "generate a new key pair"
 msgstr "générer une nouvelle paire de clés"
 
-#: g10/g10.c:166
+#: g10/g10.c:167
 msgid "remove key from the public keyring"
 msgstr "enlever la clé du porte-clés public"
 
-#: g10/g10.c:168
+#: g10/g10.c:169
 msgid "sign or edit a key"
 msgstr "signer ou éditer une clé"
 
-#: g10/g10.c:169
+#: g10/g10.c:170
 msgid "generate a revocation certificate"
 msgstr "générer un certificat de révocation"
 
-#: g10/g10.c:171
+#: g10/g10.c:172
 msgid "export keys"
 msgstr "exporter les clés"
 
-#: g10/g10.c:174
+#: g10/g10.c:175
 msgid "import/merge keys"
 msgstr "importer/fusionner les clés"
 
-#: g10/g10.c:175
+#: g10/g10.c:176
 msgid "list only the sequence of packets"
 msgstr "ne lister qu'une suite de paquets"
 
-#: g10/g10.c:177
+#: g10/g10.c:178
 msgid "export the ownertrust values"
 msgstr "exporter les valeurs de confiance"
 
-#: g10/g10.c:178
+#: g10/g10.c:179
 msgid "import ownertrust values"
 msgstr "importer les valeurs de confiance"
 
-#: g10/g10.c:179
+#: g10/g10.c:180
 msgid "|[NAMES]|check the trust database"
 msgstr "|[NOMS]|vérifier la base de confiance"
 
-#: g10/g10.c:180
+#: g10/g10.c:181
+msgid "fix a corrupted trust database"
+msgstr ""
+
+#: g10/g10.c:182
 msgid "De-Armor a file or stdin"
 msgstr "Enlever l'armure d'un fichier ou de stdin"
 
-#: g10/g10.c:181
+#: g10/g10.c:183
 msgid "En-Armor a file or stdin"
 msgstr "Mettre une armure à un fichier ou à stdin"
 
-#: g10/g10.c:182
+#: g10/g10.c:184
 msgid "|algo [files]|print message digests"
 msgstr "|alg. [fich.]|indiquer les fonctions de hachage"
 
-#: g10/g10.c:183
+#: g10/g10.c:185
 msgid "print all message digests"
 msgstr "écrire toutes les fonctions de hachage"
 
-#: g10/g10.c:190
+#: g10/g10.c:192
 msgid ""
 "@\n"
 "Options:\n"
@@ -181,128 +387,128 @@ msgstr ""
 "Options:\n"
 " "
 
-#: g10/g10.c:192
+#: g10/g10.c:194
 msgid "create ascii armored output"
 msgstr "créer une sortie ascii armurée"
 
-#: g10/g10.c:194
+#: g10/g10.c:196
 msgid "use this user-id to sign or decrypt"
 msgstr "utiliser ce nom d'utilisateur pour signer/décrypter"
 
-#: g10/g10.c:195
+#: g10/g10.c:197
 msgid "use this user-id for encryption"
 msgstr "utiliser ce nom d'utilisateur pour crypter"
 
-#: g10/g10.c:196
+#: g10/g10.c:198
 msgid "|N|set compress level N (0 disables)"
 msgstr "|N|niveau de compression N (0 désactive)"
 
-#: g10/g10.c:197
+#: g10/g10.c:199
 msgid "use canonical text mode"
 msgstr "utiliser le mode de texte canonique"
 
-#: g10/g10.c:199
+#: g10/g10.c:201
 msgid "use as output file"
 msgstr "utiliser comme fichier de sortie"
 
-#: g10/g10.c:200
+#: g10/g10.c:202
 msgid "verbose"
 msgstr "bavard"
 
 #. { oDryRun, "dry-run",   0, N_("do not make any changes") },
-#: g10/g10.c:202
+#: g10/g10.c:204
 msgid "batch mode: never ask"
 msgstr "mode automatique: ne jamais demander"
 
-#: g10/g10.c:203
+#: g10/g10.c:205
 msgid "assume yes on most questions"
 msgstr "supposer oui à la plupart des questions"
 
-#: g10/g10.c:204
+#: g10/g10.c:206
 msgid "assume no on most questions"
 msgstr "supposer non à la plupart des questions"
 
-#: g10/g10.c:205
+#: g10/g10.c:207
 msgid "add this keyring to the list of keyrings"
 msgstr "ajouter ce porte-clés à la liste des porte-clés"
 
-#: g10/g10.c:206
+#: g10/g10.c:208
 msgid "add this secret keyring to the list"
 msgstr "ajouter ce porte-clés secret à la liste"
 
-#: g10/g10.c:207
+#: g10/g10.c:209
 msgid "|NAME|use NAME as default secret key"
 msgstr "|NOM|utiliser NOM comme clé secrète par défaut"
 
-#: g10/g10.c:208
+#: g10/g10.c:210
 msgid "read options from file"
 msgstr "lire les options du fichier"
 
-#: g10/g10.c:210
+#: g10/g10.c:212
 msgid "set debugging flags"
 msgstr "choisir les attributs de déboguage"
 
-#: g10/g10.c:211
+#: g10/g10.c:213
 msgid "enable full debugging"
 msgstr "permettre un déboguage complet"
 
-#: g10/g10.c:212
+#: g10/g10.c:214
 msgid "|FD|write status info to this FD"
 msgstr "|FD|écrire les informations d'état sur ce descripteur"
 
-#: g10/g10.c:213
+#: g10/g10.c:215
 msgid "do not write comment packets"
 msgstr "ne pas écrire de paquets de commentaire"
 
-#: g10/g10.c:214
+#: g10/g10.c:216
 msgid "(default is 1)"
 msgstr "(1 par défaut)"
 
-#: g10/g10.c:215
+#: g10/g10.c:217
 msgid "(default is 3)"
 msgstr "(3 par défaut)"
 
-#: g10/g10.c:216
+#: g10/g10.c:218
 #, fuzzy
 msgid "|FILE|load extension module FILE"
 msgstr "|fich|charger un module d'extension"
 
-#: g10/g10.c:217
+#: g10/g10.c:219
 msgid "emulate the mode described in RFC1991"
 msgstr "émuler le mode décrit dans la RFC1991"
 
-#: g10/g10.c:218
+#: g10/g10.c:220
 #, fuzzy
 msgid "|N|use passphrase mode N"
 msgstr "Entrez le mot de passe: "
 
-#: g10/g10.c:220
+#: g10/g10.c:222
 #, fuzzy
 msgid "|NAME|use message digest algorithm NAME for passphrases"
 msgstr "|NOM|utiliser la fonction de hachage NOM"
 
-#: g10/g10.c:222
+#: g10/g10.c:224
 #, fuzzy
 msgid "|NAME|use cipher algorithm NAME for passphrases"
 msgstr "|NOM|utiliser l'algorithme de cryptage NOM"
 
-#: g10/g10.c:224
+#: g10/g10.c:226
 msgid "|NAME|use cipher algorithm NAME"
 msgstr "|NOM|utiliser l'algorithme de cryptage NOM"
 
-#: g10/g10.c:225
+#: g10/g10.c:227
 msgid "|NAME|use message digest algorithm NAME"
 msgstr "|NOM|utiliser la fonction de hachage NOM"
 
-#: g10/g10.c:226
+#: g10/g10.c:228
 msgid "|N|use compress algorithm N"
 msgstr "|N|utiliser l'algorithme de compression N"
 
-#: g10/g10.c:227
+#: g10/g10.c:229
 msgid "throw keyid field of encrypted packets"
 msgstr "enlever l'idendification de la clé des paquets cryptés"
 
-#: g10/g10.c:235
+#: g10/g10.c:237
 #, fuzzy
 msgid ""
 "@\n"
@@ -323,19 +529,19 @@ msgstr ""
 " --list-keys [utilisateur]    montrer les clés\n"
 " --fingerprint [utilisateur]  montrer les empreintes\n"
 
-#: g10/g10.c:310
+#: g10/g10.c:312
 msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
 msgstr "Rapporter toutes anomalies à <gnupg-bugs@gnu.org>.\n"
 
-#: g10/g10.c:315
+#: g10/g10.c:317
 msgid "Usage: gpgm [options] [files] (-h for help)"
 msgstr "Utilisation: gpgm [options] [fichiers] (-h pour l'aide)"
 
-#: g10/g10.c:317
+#: g10/g10.c:319
 msgid "Usage: gpg [options] [files] (-h for help)"
 msgstr "Utilisation: gpg [options] [fichiers] (-h pour l'aide)"
 
-#: g10/g10.c:322
+#: g10/g10.c:324
 msgid ""
 "Syntax: gpgm [options] [files]\n"
 "GNUPG maintenance utility\n"
@@ -343,7 +549,7 @@ msgstr ""
 "Syntaxe: gpgm [options] [fichiers]\n"
 "utilitaire de maitenance de GNUPG\n"
 
-#: g10/g10.c:325
+#: g10/g10.c:327
 msgid ""
 "Syntax: gpg [options] [files]\n"
 "sign, check, encrypt or decrypt\n"
@@ -353,7 +559,7 @@ msgstr ""
 "signer, vérifier, crypter ou décrypter\n"
 "l'opération par défaut dépend des données entrées\n"
 
-#: g10/g10.c:331
+#: g10/g10.c:333
 msgid ""
 "\n"
 "Supported algorithms:\n"
@@ -361,141 +567,141 @@ msgstr ""
 "\n"
 "Algorithmes supportés:\n"
 
-#: g10/g10.c:406
+#: g10/g10.c:408
 msgid "usage: gpgm [options] "
 msgstr "utilisation: gpgm [options] "
 
-#: g10/g10.c:408
+#: g10/g10.c:410
 msgid "usage: gpg [options] "
 msgstr "utilisation: gpg [options] "
 
-#: g10/g10.c:449
+#: g10/g10.c:451
 msgid "conflicting commands\n"
 msgstr "commandes en conflit\n"
 
-#: g10/g10.c:588
+#: g10/g10.c:590
 #, c-format
 msgid "note: no default option file '%s'\n"
 msgstr "note: pas de fichier d'options par défaut '%s'\n"
 
-#: g10/g10.c:592
+#: g10/g10.c:594
 #, c-format
 msgid "option file '%s': %s\n"
 msgstr "fichier d'options '%s' : %s\n"
 
-#: g10/g10.c:599
+#: g10/g10.c:601
 #, c-format
 msgid "reading options from '%s'\n"
 msgstr "lire les options de '%s'\n"
 
-#: g10/g10.c:765 g10/g10.c:777
+#: g10/g10.c:768 g10/g10.c:780
 msgid "selected cipher algorithm is invalid\n"
 msgstr "l'algorithme de cryptage sélectionné est invalide\n"
 
-#: g10/g10.c:771 g10/g10.c:783
+#: g10/g10.c:774 g10/g10.c:786
 msgid "selected digest algorithm is invalid\n"
 msgstr "la fonction de hachage sélectionnée est invalide\n"
 
-#: g10/g10.c:786
+#: g10/g10.c:789
 #, c-format
 msgid "compress algorithm must be in range %d..%d\n"
 msgstr "l'algorithme de compression doit faire partie de l'échelle %d..%d\n"
 
-#: g10/g10.c:788
+#: g10/g10.c:791
 msgid "completes-needed must be greater than 0\n"
 msgstr "le nombre de signatures complètes minimal doit être supérieur à 0\n"
 
-#: g10/g10.c:790
+#: g10/g10.c:793
 msgid "marginals-needed must be greater than 1\n"
 msgstr "le nombre de singatures marginales minimal doit être supérieur à 1\n"
 
-#: g10/g10.c:793
+#: g10/g10.c:796
 msgid "note: simple S2K mode (0) is strongly discouraged\n"
 msgstr ""
 
-#: g10/g10.c:797
+#: g10/g10.c:800
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
 msgstr ""
 
-#: g10/g10.c:872
+#: g10/g10.c:876
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
 msgstr "n'a pas pu initialiser la base de confiance: %s\n"
 
-#: g10/g10.c:878
+#: g10/g10.c:882
 msgid "--store [filename]"
 msgstr "--store [nom du fichier]"
 
-#: g10/g10.c:886
+#: g10/g10.c:890
 msgid "--symmetric [filename]"
 msgstr "--symmetric [nom du fichier]"
 
-#: g10/g10.c:894
+#: g10/g10.c:898
 msgid "--encrypt [filename]"
 msgstr "--encrypt [nom du fichier]"
 
-#: g10/g10.c:907
+#: g10/g10.c:911
 msgid "--sign [filename]"
 msgstr "--sign [nom du fichier]"
 
-#: g10/g10.c:920
+#: g10/g10.c:924
 msgid "--sign --encrypt [filename]"
 msgstr "--sign --encrypt [nom du fichier]"
 
-#: g10/g10.c:934
+#: g10/g10.c:938
 msgid "--clearsign [filename]"
 msgstr "--clearsign [nom du fichier]"
 
-#: g10/g10.c:946
+#: g10/g10.c:950
 msgid "--decrypt [filename]"
 msgstr "--decrypt [nom du fichier]"
 
-#: g10/g10.c:955
+#: g10/g10.c:959
 msgid "--edit-key username"
 msgstr "--edit-key utilisateur"
 
-#: g10/g10.c:963
+#: g10/g10.c:967
 msgid "--delete-secret-key username"
 msgstr "--delete-secret-key utilisateur"
 
-#: g10/g10.c:966
+#: g10/g10.c:970
 msgid "--delete-key username"
 msgstr "--delete-key utilisateur"
 
-#: g10/encode.c:213 g10/g10.c:989 g10/keylist.c:79
+#: g10/encode.c:213 g10/g10.c:993 g10/keylist.c:79
 #, c-format
 msgid "can't open %s: %s\n"
 msgstr "ne peut ouvrir %s: %s\n"
 
-#: g10/g10.c:1000
+#: g10/g10.c:1004
 msgid "-k[v][v][v][c] [userid] [keyring]"
 msgstr "-k[v][v][v][c] [utilisateur] [porte-clés]"
 
-#: g10/g10.c:1055
+#: g10/g10.c:1059
 #, c-format
 msgid "dearmoring failed: %s\n"
 msgstr "suppression d'armure non réussie: %s\n"
 
-#: g10/g10.c:1063
+#: g10/g10.c:1067
 #, c-format
 msgid "enarmoring failed: %s\n"
 msgstr "mise d'armure non réussie:%s \n"
 
-#: g10/g10.c:1124
+#: g10/g10.c:1128
 #, c-format
 msgid "invalid hash algorithm '%s'\n"
 msgstr "algorithme de hachage invalide '%s'\n"
 
-#: g10/g10.c:1194
+#: g10/g10.c:1204
 msgid "[filename]"
 msgstr "[nom du fichier]"
 
-#: g10/decrypt.c:59 g10/g10.c:1196 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1206 g10/verify.c:66
 #, c-format
 msgid "can't open '%s'\n"
 msgstr "ne peut ouvrir '%s'\n"
 
-#: g10/g10.c:1241
+#: g10/g10.c:1251
 msgid ""
 "RSA keys are deprecated; please consider creating a new key and use this key "
 "in the future\n"
@@ -628,7 +834,7 @@ msgstr ""
 "N'a pas pu trouver un chemin de confiance valide jusqu'à la clé. Voyons si\n"
 "nous ne pouvons pas assigner quelques valeurs de confiance.\n"
 
-#: g10/pkclist.c:170
+#: g10/pkclist.c:168
 msgid ""
 "No owner trust values changed.\n"
 "\n"
@@ -636,16 +842,16 @@ msgstr ""
 "Pas de valeur de confiance changée.\n"
 "\n"
 
-#: g10/pkclist.c:190
+#: g10/pkclist.c:188
 msgid "revoked_key.override"
 msgstr ""
 "Si vous voulez utiliser cette clé révoquée quand-même, répondez \"oui\"."
 
-#: g10/pkclist.c:191 g10/pkclist.c:281
+#: g10/pkclist.c:189 g10/pkclist.c:279
 msgid "Use this key anyway? "
 msgstr "Utiliser cette clé quand-même? "
 
-#: g10/pkclist.c:276
+#: g10/pkclist.c:274
 msgid ""
 "It is NOT certain that the key belongs to its owner.\n"
 "If you *really* know what you are doing, you may answer\n"
@@ -657,57 +863,57 @@ msgstr ""
 "oui à la prochaine question\n"
 "\n"
 
-#: g10/pkclist.c:280
+#: g10/pkclist.c:278
 msgid "untrusted_key.override"
 msgstr ""
 "Si vous voulez utiliser cette clé peu sûre quand-même, répondez \"oui\"."
 
-#: g10/pkclist.c:285
+#: g10/pkclist.c:283
 msgid "WARNING: Using untrusted key!\n"
 msgstr "ATTENTION: Utilisation d'une clé sans confiance!\n"
 
-#: g10/pkclist.c:321
+#: g10/pkclist.c:319
 msgid "WARNING: This key has been revoked by its owner!\n"
 msgstr "ATTENTION: Cette clé à été révoquée par son propriétaire\n"
 
-#: g10/pkclist.c:322
+#: g10/pkclist.c:320
 msgid "         This could mean that the signature is forgery.\n"
 msgstr "         Cela pourrait signifier que la signature est fausse.\n"
 
-#: g10/pkclist.c:343
+#: g10/pkclist.c:341
 msgid "Note: This key has expired!\n"
 msgstr "Note: Cette clé a expiré!\n"
 
-#: g10/pkclist.c:350
+#: g10/pkclist.c:348
 msgid "WARNING: This key is not certified with a trusted signature!\n"
 msgstr ""
 "ATTENTION: Cette clé n'est pas certifiée avec une signature de confiance!\n"
 
-#: g10/pkclist.c:352
+#: g10/pkclist.c:350
 msgid ""
 "         There is no indication that the signature belongs to the owner.\n"
 msgstr "         Rien ne dit que la signature appartient au propriétaire.\n"
 
-#: g10/pkclist.c:367
+#: g10/pkclist.c:365
 msgid "WARNING: We do NOT trust this key!\n"
 msgstr "ATTENTION: On ne fait PAS confiance à cette clé\n"
 
-#: g10/pkclist.c:368
+#: g10/pkclist.c:366
 msgid "         The signature is probably a FORGERY.\n"
 msgstr "         La signature est certainement FAUSSE.\n"
 
-#: g10/pkclist.c:375
+#: g10/pkclist.c:373
 msgid ""
 "WARNING: This key is not certified with sufficiently trusted signatures!\n"
 msgstr ""
 "ATTENTION: Les signatures de cette clé n'ont pas une confiance suffisante!\n"
 
-#: g10/pkclist.c:378
+#: g10/pkclist.c:376
 msgid "         It is not certain that the signature belongs to the owner.\n"
 msgstr ""
 "         Il n'est pas sûr que la signature appartient au propriétaire.\n"
 
-#: g10/pkclist.c:423
+#: g10/pkclist.c:421
 msgid ""
 "You did not specify a user ID. (you may use \"-r\")\n"
 "\n"
@@ -715,29 +921,29 @@ msgstr ""
 "Vous n'avez pas spécifié un nom d'utilisateur. (vous pouvez utiliser "
 "\"-r\")\n"
 
-#: g10/pkclist.c:427
+#: g10/pkclist.c:425
 msgid "pklist.user_id.enter"
 msgstr "Entrez le nom de l'adresse à qui vous voulez envoyer le message."
 
-#: g10/pkclist.c:428
+#: g10/pkclist.c:426
 msgid "Enter the user ID: "
 msgstr "Entrez le nom d'utilisateur: "
 
-#: g10/pkclist.c:439
+#: g10/pkclist.c:437
 msgid "No such user ID.\n"
 msgstr "Pas de tel utilisateur.\n"
 
-#: g10/pkclist.c:473 g10/pkclist.c:500
+#: g10/pkclist.c:471 g10/pkclist.c:498
 #, c-format
 msgid "%s: skipped: %s\n"
 msgstr "%s: sauté: %s\n"
 
-#: g10/pkclist.c:481
+#: g10/pkclist.c:479
 #, c-format
 msgid "%s: error checking key: %s\n"
 msgstr "%s: erreur pendant la vérification de la clé: %s\n"
 
-#: g10/pkclist.c:507
+#: g10/pkclist.c:505
 msgid "no valid addressees\n"
 msgstr "pas de destinataire valide\n"
 
@@ -765,34 +971,34 @@ msgstr "   (%d) DSA et ElGamal (d
 msgid "   (%d) ElGamal (sign and encrypt)\n"
 msgstr "   (%d) ElGamal (signature et cryptage)\n"
 
-#: g10/keygen.c:387
+#: g10/keygen.c:388
 #, c-format
 msgid "   (%d) ElGamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (cryptage seulement)\n"
 
-#: g10/keygen.c:388
+#: g10/keygen.c:389
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (signature seulement)\n"
 
-#: g10/keygen.c:389
+#: g10/keygen.c:390
 #, c-format
 msgid "   (%d) ElGamal in a v3 packet\n"
 msgstr "   (%d) ElGamal dans un paquet v3\n"
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "keygen.algo"
 msgstr "Sélectionnez l'algorithme à utiliser:"
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "Your selection? "
 msgstr "Votre choix? "
 
-#: g10/keygen.c:419
+#: g10/keygen.c:420
 msgid "Invalid selection.\n"
 msgstr "Choix invalide.\n"
 
-#: g10/keygen.c:431
+#: g10/keygen.c:432
 #, c-format
 msgid ""
 "About to generate a new %s keypair.\n"
@@ -805,23 +1011,23 @@ msgstr ""
 "          la taille par défaut est 1024 bits\n"
 " la taille maximale conseillée est 2048 bits\n"
 
-#: g10/keygen.c:437
+#: g10/keygen.c:438
 msgid "keygen.size"
 msgstr ""
 
-#: g10/keygen.c:438
+#: g10/keygen.c:439
 msgid "What keysize do you want? (1024) "
 msgstr "Quelle taille de clé désirez-vous? (1024) "
 
-#: g10/keygen.c:443
+#: g10/keygen.c:444
 msgid "DSA only allows keysizes from 512 to 1024\n"
 msgstr "DSA permet seulement des tailles comprises entre 512 et 1024\n"
 
-#: g10/keygen.c:445
+#: g10/keygen.c:446
 msgid "keysize too small; 768 is smallest value allowed.\n"
 msgstr "taille trop petite; 768 est la plus petite valeur permise.\n"
 
-#: g10/keygen.c:448
+#: g10/keygen.c:449
 msgid ""
 "Keysizes larger than 2048 are not suggested because\n"
 "computations take REALLY long!\n"
@@ -829,15 +1035,15 @@ msgstr ""
 "Les tailles supérieures à 2048 ne sont pas conseillées car\n"
 "les calculs sont VRAIMENT longs!\n"
 
-#: g10/keygen.c:450
+#: g10/keygen.c:451
 msgid "keygen.size.huge.okay"
 msgstr ""
 
-#: g10/keygen.c:451
+#: g10/keygen.c:452
 msgid "Are you sure that you want this keysize? "
 msgstr "Etes-vous sûr que vous voulez cette taille? "
 
-#: g10/keygen.c:452
+#: g10/keygen.c:453
 msgid ""
 "Okay, but keep in mind that your monitor and keyboard radiation is also very "
 "vulnerable to attacks!\n"
@@ -845,25 +1051,25 @@ msgstr ""
 "D'accord, mais n'oubliez pas que votre écran et les radiations du clavier "
 "sont aussi très vulnérables aux attaques!\n"
 
-#: g10/keygen.c:459
+#: g10/keygen.c:460
 msgid "keygen.size.large.okay"
 msgstr ""
 
-#: g10/keygen.c:460
+#: g10/keygen.c:461
 msgid "Do you really need such a large keysize? "
 msgstr "Avez-vous réellement besoin d'une taille aussi grande? "
 
-#: g10/keygen.c:466
+#: g10/keygen.c:467
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "La taille demandée est %u bits\n"
 
-#: g10/keygen.c:469 g10/keygen.c:473
+#: g10/keygen.c:470 g10/keygen.c:474
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "arrondie à %u bits\n"
 
-#: g10/keygen.c:485
+#: g10/keygen.c:486
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -879,37 +1085,37 @@ msgstr ""
 "      <n>m = la clé expire dans n mois\n"
 "      <n>y = la clé expire dans n ans\n"
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "keygen.valid"
 msgstr ""
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "Key is valid for? (0) "
 msgstr "La clé est valide pour? (0) "
 
-#: g10/keygen.c:511
+#: g10/keygen.c:512
 msgid "invalid value\n"
 msgstr "valeur invalide\n"
 
-#: g10/keygen.c:516
+#: g10/keygen.c:517
 msgid "Key does not expire at all\n"
 msgstr "La clé n'expire pas du tout\n"
 
 #. print the date when the key expires
-#: g10/keygen.c:519
+#: g10/keygen.c:520
 #, c-format
 msgid "Key expires at %s\n"
 msgstr "La clé expire le %s\n"
 
-#: g10/keygen.c:524
+#: g10/keygen.c:525
 msgid "keygen.valid.okay"
 msgstr ""
 
-#: g10/keygen.c:525
+#: g10/keygen.c:526
 msgid "Is this correct (y/n)? "
 msgstr "Est-ce correct (o/n)? "
 
-#: g10/keygen.c:553
+#: g10/keygen.c:554
 msgid ""
 "\n"
 "You need a User-ID to identify your key; the software constructs the user "
@@ -925,51 +1131,51 @@ msgstr ""
 "   \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de\"\n"
 "\n"
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "keygen.name"
 msgstr ""
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "Real name: "
 msgstr "Nom: "
 
-#: g10/keygen.c:568
+#: g10/keygen.c:569
 msgid "Invalid character in name\n"
 msgstr "Caractère invalide dans le nom\n"
 
-#: g10/keygen.c:570
+#: g10/keygen.c:571
 msgid "Name may not start with a digit\n"
 msgstr "Le nom ne doit pas commencer avec un chiffre\n"
 
-#: g10/keygen.c:572
+#: g10/keygen.c:573
 msgid "Name must be at least 5 characters long\n"
 msgstr "Le nom doit faire au moins 5 caractères de long\n"
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "keygen.email"
 msgstr ""
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "Email address: "
 msgstr "Adresse e-mail: "
 
-#: g10/keygen.c:592
+#: g10/keygen.c:593
 msgid "Not a valid email address\n"
 msgstr "Ce n'est pas une adresse e-mail valide\n"
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "keygen.comment"
 msgstr ""
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "Comment: "
 msgstr "Commentaire: "
 
-#: g10/keygen.c:606
+#: g10/keygen.c:607
 msgid "Invalid character in comment\n"
 msgstr "Caractère invalide dans le commentaire\n"
 
-#: g10/keygen.c:626
+#: g10/keygen.c:627
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -980,11 +1186,11 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:629
+#: g10/keygen.c:630
 msgid "NnCcEeOoQq"
 msgstr "NnCcEeOoQq"
 
-#: g10/keygen.c:638
+#: g10/keygen.c:639
 msgid "keygen.userid.cmd"
 msgstr ""
 "N pour changer le nom.\n"
@@ -993,11 +1199,11 @@ msgstr ""
 "O pour continuer à générer la clé.\n"
 "Q pour arrêter de générer de clé."
 
-#: g10/keygen.c:639
+#: g10/keygen.c:640
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter? "
 
-#: g10/keygen.c:686
+#: g10/keygen.c:687
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -1005,11 +1211,11 @@ msgstr ""
 "Vous avez besoin d'un mot de passe pour protéger votre clé secrète.\n"
 "\n"
 
-#: g10/keyedit.c:377 g10/keygen.c:694
+#: g10/keyedit.c:388 g10/keygen.c:695
 msgid "passphrase not correctly repeated; try again.\n"
 msgstr "le mot de passe n'a pas été correctement répété; recommencez.\n"
 
-#: g10/keygen.c:700
+#: g10/keygen.c:701
 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"
@@ -1021,7 +1227,7 @@ msgstr ""
 "le désirez, en utilisant ce programme avec l'option \"--edit-key\".\n"
 "\n"
 
-#: g10/keygen.c:721
+#: g10/keygen.c:722
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (work in another window, move the mouse, utilize the\n"
@@ -1034,33 +1240,33 @@ msgstr ""
 "premiers; cela permet au générateur de nombres aléatoires de gagner assez\n"
 "d'entropie plus facilement.\n"
 
-#: g10/keygen.c:788
+#: g10/keygen.c:789
 msgid "Key generation can only be used in interactive mode\n"
 msgstr "La génération de clé ne peut être faite qu'en mode interactif\n"
 
-#: g10/keygen.c:796
+#: g10/keygen.c:797
 msgid "DSA keypair will have 1024 bits.\n"
 msgstr "La paire de clés DSA fera 1024 bits.\n"
 
-#: g10/keygen.c:802
+#: g10/keygen.c:803
 msgid "Key generation cancelled.\n"
 msgstr "La génération a été annulée.\n"
 
-#: g10/keygen.c:812
+#: g10/keygen.c:813
 #, c-format
 msgid "writing public certificate to '%s'\n"
 msgstr "écriture d'un certificat public à '%s'\n"
 
-#: g10/keygen.c:813
+#: g10/keygen.c:814
 #, c-format
 msgid "writing secret certificate to '%s'\n"
 msgstr "écriture d'un certificat secret à '%s'\n"
 
-#: g10/keygen.c:890
+#: g10/keygen.c:891
 msgid "public and secret key created and signed.\n"
 msgstr "les clés publique et secrète ont été créées et signées.\n"
 
-#: g10/keygen.c:892
+#: g10/keygen.c:893
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--add-key\" to generate a secondary key for this purpose.\n"
@@ -1069,16 +1275,16 @@ msgstr ""
 "utiliser\n"
 "la commande \"--add-key\" pour générer une clé secondaire à cette fin.\n"
 
-#: g10/keygen.c:906 g10/keygen.c:990
+#: g10/keygen.c:907 g10/keygen.c:991
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "La génération de clé a échoué: %s\n"
 
-#: g10/keygen.c:967
+#: g10/keygen.c:968
 msgid "keygen.sub.okay"
 msgstr "Répondez \"oui\" (ou simplement \"o\") pour générer la sous-clé"
 
-#: g10/keygen.c:968
+#: g10/keygen.c:969
 msgid "Really create? "
 msgstr "Créer vraiment? "
 
@@ -1112,7 +1318,7 @@ msgstr "%s crypt
 msgid "using secondary key %08lX instead of primary key %08lX\n"
 msgstr ""
 
-#: g10/import.c:105 g10/trustdb.c:1349
+#: g10/import.c:105 g10/trustdb.c:1389
 #, c-format
 msgid "can't open file: %s\n"
 msgstr "ne peut ouvrir le fichier: %s\n"
@@ -1122,7 +1328,7 @@ msgstr "ne peut ouvrir le fichier: %s\n"
 msgid "skipping block of type %d\n"
 msgstr "ne prend pas en compte le bloc du type %d\n"
 
-#: g10/import.c:131 g10/trustdb.c:1427
+#: g10/import.c:131 g10/trustdb.c:1464
 #, c-format
 msgid "read error: %s\n"
 msgstr "erreur de lecture: %s\n"
@@ -1363,17 +1569,17 @@ msgstr "un nom d'utilisateur sans auto-signature valide d
 msgid "%d user ids without valid self-signatures detected\n"
 msgstr "%d nom d'utilisateurs sans auto-signature valide détecté\n"
 
-#: g10/keyedit.c:249
+#: g10/keyedit.c:257
 #, c-format
 msgid "Already signed by key %08lX\n"
 msgstr "Déjà signé par la clé %08lX\n"
 
-#: g10/keyedit.c:257
+#: g10/keyedit.c:265
 #, c-format
 msgid "Nothing to sign with key %08lX\n"
 msgstr "Rien à signer avec la clé %08lX\n"
 
-#: g10/keyedit.c:265
+#: g10/keyedit.c:274
 msgid ""
 "Are you really sure that you want to sign this key\n"
 "with your key: \""
@@ -1381,39 +1587,39 @@ msgstr ""
 "Etes-vous vraiment sûr(e) que vous voulez signer cette clé\n"
 "avec votre clé: \""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "sign_uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "Really sign? "
 msgstr "Signer réellement? "
 
-#: g10/keyedit.c:293
+#: g10/keyedit.c:302
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "la signature a échoué: %s\n"
 
-#: g10/keyedit.c:344
+#: g10/keyedit.c:355
 msgid "This key is not protected.\n"
 msgstr "Cette clé n'est pas protégée.\n"
 
-#: g10/keyedit.c:347
+#: g10/keyedit.c:358
 msgid "Key is protected.\n"
 msgstr "La clé est protégée.\n"
 
-#: g10/keyedit.c:364
+#: g10/keyedit.c:375
 #, c-format
 msgid "Can't edit this key: %s\n"
 msgstr "Ne peut éditer cette clé: %s\n"
 
-#: g10/keyedit.c:369
+#: g10/keyedit.c:380
 msgid ""
 "Enter the new passphrase for this secret key.\n"
 "\n"
 msgstr "Entrez le nouveau mot de passe pour cette clé secrète.\n"
 
-#: g10/keyedit.c:381
+#: g10/keyedit.c:392
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "\n"
@@ -1421,285 +1627,290 @@ msgstr ""
 "Vous ne voulez pas de mot de passe - cela est certainement une *mauvaise* "
 "idée\n"
 
-#: g10/keyedit.c:383
+#: g10/keyedit.c:394
 msgid "change_passwd.empty.okay"
 msgstr ""
 
-#: g10/keyedit.c:384
+#: g10/keyedit.c:395
 msgid "Do you really want to do this? "
 msgstr "Voulez-vous vraiment faire cela? "
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit"
 msgstr "quitter"
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit this menu"
 msgstr "quitter ce menu"
 
-#: g10/keyedit.c:440
+#: g10/keyedit.c:451
 msgid "q"
 msgstr "q"
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save"
 msgstr "enregistrer"
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save and quit"
 msgstr "enregistrer et quitter"
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "help"
 msgstr "aide"
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "show this help"
 msgstr "montrer cette aide"
 
 # g10/keyedit.c:556 ???
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "fpr"
 msgstr ""
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "show fingerprint"
 msgstr "montrer l'empreinte"
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 msgid "list"
 msgstr "lister"
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 msgid "list key and user ids"
 msgstr "lister la clé et les noms d'utilisateurs"
 
-#: g10/keyedit.c:446
+#: g10/keyedit.c:457
 msgid "l"
 msgstr "l"
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "uid"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "select user id N"
 msgstr "sélectionner le nom d'utilisateur N"
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "key"
 msgstr "clé"
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "select secondary key N"
 msgstr "sélectionner la clé secondaire N"
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "check"
 msgstr "vérifier"
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "list signatures"
 msgstr "lister les signatures"
 
-#: g10/keyedit.c:450
+#: g10/keyedit.c:461
 msgid "c"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign"
 msgstr "signer"
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign the key"
 msgstr "signer la clé"
 
-#: g10/keyedit.c:452
+#: g10/keyedit.c:463
 msgid "s"
 msgstr ""
 
-#: g10/keyedit.c:453
+#: g10/keyedit.c:464
 msgid "debug"
 msgstr "déboguer"
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "adduid"
 msgstr "aj.ut"
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "add a user id"
 msgstr "ajouter un utilisateur"
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "deluid"
 msgstr "suppr.ut"
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "delete user id"
 msgstr "enlever un utilisateur"
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "addkey"
 msgstr "aj.clé"
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "add a secondary key"
 msgstr "ajouter une clé secondaire"
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delkey"
 msgstr "suppr.clé"
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delete a secondary key"
 msgstr "enlever une clé secondaire"
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle"
 msgstr "changer"
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle between secret and public key listing"
 msgstr "passer de la liste des clés secrètes aux clés privées et inversement"
 
-#: g10/keyedit.c:460
+#: g10/keyedit.c:471
 msgid "t"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "pref"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "list preferences"
 msgstr "lister les préférences"
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "passwd"
 msgstr "mot.pas"
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "change the passphrase"
 msgstr "changer le mot de passe"
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "trust"
 msgstr "confi."
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "change the ownertrust"
 msgstr "changer la confiance"
 
-#: g10/keyedit.c:481
+#: g10/keyedit.c:492
 msgid "can't do that in batchmode\n"
 msgstr "ne peut faire cela en mode automatique\n"
 
 #. check that they match
 #. FIXME: check that they both match
-#: g10/keyedit.c:504
+#: g10/keyedit.c:515
 msgid "Secret key is available.\n"
 msgstr "La clé secrète est disponible.\n"
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "keyedit.cmd"
 msgstr "Entrez \"aide\" s'il vous plaît."
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "Command> "
 msgstr "Commande> "
 
-#: g10/keyedit.c:545
+#: g10/keyedit.c:556
 msgid "Need the secret key to to this.\n"
 msgstr "Il faut la clé secrète pour faire cela.\n"
 
-#: g10/keyedit.c:564
+#: g10/keyedit.c:575
 msgid "keyedit.save.okay"
 msgstr ""
 
-#: g10/keyedit.c:565
+#: g10/keyedit.c:576
 msgid "Save changes? "
 msgstr "Enregistrer les changements? "
 
-#: g10/keyedit.c:567
+#: g10/keyedit.c:578
 msgid "keyedit.cancel.okay"
 msgstr ""
 
-#: g10/keyedit.c:568
+#: g10/keyedit.c:579
 msgid "Quit without saving? "
 msgstr "Quitter sans enregistrer? "
 
-#: g10/keyedit.c:578
+#: g10/keyedit.c:589
 #, c-format
 msgid "update failed: %s\n"
 msgstr "la mise à jour a échoué: %s\n"
 
-#: g10/keyedit.c:585
+#: g10/keyedit.c:596
 #, c-format
 msgid "update secret failed: %s\n"
 msgstr "la mise à jour de la clé secrète a échoué: %s\n"
 
-#: g10/keyedit.c:593
+#: g10/keyedit.c:603
 msgid "Key not changed so no update needed.\n"
 msgstr "La clé n'a pas changé donc la mise à jour est inutile.\n"
 
-#: g10/keyedit.c:623
+#: g10/keyedit.c:606 g10/keyedit.c:664
+#, fuzzy, c-format
+msgid "update of trust db failed: %s\n"
+msgstr "la mise à jour de la clé secrète a échoué: %s\n"
+
+#: g10/keyedit.c:637
 msgid "keyedit.sign_all.okay"
 msgstr ""
 
-#: g10/keyedit.c:624
+#: g10/keyedit.c:638
 msgid "Really sign all user ids? "
 msgstr "Signer vraiment tous les utilisateurs? "
 
-#: g10/keyedit.c:625
+#: g10/keyedit.c:639
 msgid "Hint: Select the user ids to sign\n"
 msgstr "Aide: Sélectionner les utilisateurs à signer\n"
 
-#: g10/keyedit.c:653
+#: g10/keyedit.c:675
 msgid "You must select at least one user id.\n"
 msgstr "Vous devez sélectionner au moins un utilisateur.\n"
 
-#: g10/keyedit.c:655
+#: g10/keyedit.c:677
 msgid "You can't delete the last user id!\n"
 msgstr "Vous ne pouvez pas supprimer le dernier utilisateur!\n"
 
-#: g10/keyedit.c:657
+#: g10/keyedit.c:679
 msgid "keyedit.remove.uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:658
+#: g10/keyedit.c:680
 msgid "Really remove all selected user ids? "
 msgstr "Enlever réellement tous les utilisateurs sélectionnés? "
 
-#: g10/keyedit.c:659
+#: g10/keyedit.c:681
 msgid "Really remove this user id? "
 msgstr "Enlever réellement cet utilisateur? "
 
-#: g10/keyedit.c:682
+#: g10/keyedit.c:704
 msgid "You must select at least one key.\n"
 msgstr "Vous devez sélectionner au moins une clé.\n"
 
-#: g10/keyedit.c:684
+#: g10/keyedit.c:706
 msgid "keyedit.remove.subkey.okay"
 msgstr ""
 
-#: g10/keyedit.c:686
+#: g10/keyedit.c:708
 msgid "Do you really want to delete the selected keys? "
 msgstr "Voulez-vous supprimer les clés sélectionnées? "
 
-#: g10/keyedit.c:687
+#: g10/keyedit.c:709
 msgid "Do you really want to delete this key? "
 msgstr "Voulez-vous vraiment supprimer cette clé? "
 
-#: g10/keyedit.c:724
+#: g10/keyedit.c:746
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Commande invalide  (essayez \"aide\")\n"
 
-#: g10/keyedit.c:1104
+#: g10/keyedit.c:1129
 #, c-format
 msgid "No user id with index %d\n"
 msgstr "Pas d'utilisateur avec l'index %d\n"
 
-#: g10/keyedit.c:1149
+#: g10/keyedit.c:1174
 #, c-format
 msgid "No secondary key with index %d\n"
 msgstr "Pas de clé secondaire avec l'index %d\n"
@@ -1723,15 +1934,15 @@ msgstr ""
 msgid "Signature made %.*s using %s key ID %08lX\n"
 msgstr "Signature faite %.*s avec %s clé ID %08lX\n"
 
-#: g10/mainproc.c:852
+#: g10/mainproc.c:854
 msgid "BAD signature from \""
 msgstr "MAUVAISE signature de \""
 
-#: g10/mainproc.c:853
+#: g10/mainproc.c:855
 msgid "Good signature from \""
 msgstr "Bonne signature de \""
 
-#: g10/mainproc.c:864
+#: g10/mainproc.c:866
 #, c-format
 msgid "Can't check signature: %s\n"
 msgstr "Ne peut vérifier la signature: %s\n"
@@ -1814,77 +2025,76 @@ msgstr "cl
 msgid "warning: signature key expired %s\n"
 msgstr "attention: la clé de signatute a expiré le %s\n"
 
-#: g10/trustdb.c:318
-#, c-format
-msgid "error reading sigrec: %s\n"
-msgstr "erreur pendant la lecture de l'enregistrement de signature: %s\n"
+#: g10/trustdb.c:127
+msgid "The trust DB is corrupted; please run \"gpgm --fix-trust-db\".\n"
+msgstr ""
 
-#: g10/trustdb.c:323
+#: g10/trustdb.c:406
 #, c-format
 msgid "chained sigrec %lu has a wrong owner\n"
 msgstr "l'enregistrement de signature %lu a un mauvais propriétaire\n"
 
-#: g10/trustdb.c:370
+#: g10/trustdb.c:453
 #, c-format
 msgid "key %08lX: secret key without public key\n"
 msgstr "clé %08lX: clé secrète sans clé publique\n"
 
-#: g10/trustdb.c:375
+#: g10/trustdb.c:458
 #, c-format
 msgid "key %08lX: secret and public key don't match\n"
 msgstr "clé %08lX: les clés secrète et publique ne correspondent pas\n"
 
-#: g10/trustdb.c:386
+#: g10/trustdb.c:469
 #, c-format
 msgid "key %08lX: can't put it into the trustdb\n"
 msgstr "clé %08lX: ne peut mettre cela dans la base de confiance\n"
 
-#: g10/trustdb.c:392
+#: g10/trustdb.c:475
 #, c-format
 msgid "key %08lX: query record failed\n"
 msgstr "clé %08lX: l'enregistrement de requête a échoué\n"
 
-#: g10/trustdb.c:401
+#: g10/trustdb.c:484
 #, c-format
 msgid "key %08lX: already in ultikey_table\n"
 msgstr "clé %08lX: déja dans ultikey_table\n"
 
-#: g10/trustdb.c:408
+#: g10/trustdb.c:491
 #, c-format
 msgid "enum_secret_keys failed: %s\n"
 msgstr "enum_secret_keys a échoué: %s\n"
 
-#: g10/trustdb.c:913
+#: g10/trustdb.c:964
 #, fuzzy, c-format
 msgid "key %08lX.%lu, uid %02X%02X: no public key for signature %08lX\n"
 msgstr "clé %08lX: pas d'utilisateur pour la signature\n"
 
-#: g10/trustdb.c:920
+#: g10/trustdb.c:971
 #, fuzzy, c-format
 msgid "key %08lX.%lu, uid %02X%02X: invalid %ssignature: %s\n"
 msgstr "clé %08lX: auto-signature invalide\n"
 
-#: g10/trustdb.c:1624
+#: g10/trustdb.c:1658
 #, c-format
 msgid "key %08lX: insert trust record failed: %s\n"
 msgstr "clé %08lX: l'insertion d'enregistrement de confiance a échoué: %s\n"
 
-#: g10/trustdb.c:1628
+#: g10/trustdb.c:1662
 #, c-format
 msgid "key %08lX.%lu: inserted into trustdb\n"
 msgstr "clé %08lX.%lu: insérée dans la base de confiance\n"
 
-#: g10/trustdb.c:1639
+#: g10/trustdb.c:1670
 #, c-format
 msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
 msgstr "clé %08lX.%lu: créée dans le futur (problème d'horloge)\n"
 
-#: g10/trustdb.c:1647
+#: g10/trustdb.c:1678
 #, c-format
 msgid "key %08lX.%lu: expired at %s\n"
 msgstr "clé %08lX.%lu: a expiré le %s\n"
 
-#: g10/trustdb.c:1656
+#: g10/trustdb.c:1687
 #, c-format
 msgid "key %08lX.%lu: trust check failed: %s\n"
 msgstr "clé %08lX.%lu: la vérification de confiance a échoué: %s\n"
@@ -1945,5 +2155,5 @@ msgstr ""
 "ne peut éviter une mauvaise clé pour le chiffrement symétrique: \n"
 "%d essais ont eu lieu!\n"
 
-#~ msgid "can't write keyring\n"
-#~ msgstr "ne peut écrire le porte-clés\n"
+#~ msgid "error reading sigrec: %s\n"
+#~ msgstr "erreur pendant la lecture de l'enregistrement de signature: %s\n"
index 3e022b0..2dbfb08 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-0.4.0\n"
-"POT-Creation-Date: 1998-09-30 19:01+0200\n"
+"POT-Creation-Date: 1998-10-07 14:24+0200\n"
 "PO-Revision-Date: 1998-09-20 16:15+02:00\n"
 "Last-Translator: Marco d'Itri <md@linux.it>\n"
 "Language-Team: Italian <it@li.org>\n"
@@ -25,12 +25,213 @@ msgstr "s
 msgid "yY"
 msgstr "sS"
 
-#: cipher/rand-dummy.c:106
+#: util/errors.c:54
+msgid "General error"
+msgstr ""
+
+#: util/errors.c:55
+msgid "Unknown packet type"
+msgstr ""
+
+#: util/errors.c:56
+msgid "Unknown version"
+msgstr ""
+
+#: util/errors.c:57
+msgid "Unknown pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:58
+msgid "Unknown digest algorithm"
+msgstr ""
+
+#: util/errors.c:59
+#, fuzzy
+msgid "Bad public key"
+msgstr "nessun portachiavi pubblico predefinito\n"
+
+#: util/errors.c:60
+#, fuzzy
+msgid "Bad secret key"
+msgstr "elenca le chiavi segrete"
+
+#: util/errors.c:61
+#, fuzzy
+msgid "Bad signature"
+msgstr "una firma non corretta\n"
+
+#: util/errors.c:62
+msgid "Checksum error"
+msgstr ""
+
+#: util/errors.c:63
+#, fuzzy
+msgid "Bad passphrase"
+msgstr "Ripeti la passphrase: "
+
+#: util/errors.c:64
+#, fuzzy
+msgid "Public key not found"
+msgstr "chiave %08lX: chiave pubblica non trovata: %s\n"
+
+#: util/errors.c:65
+#, fuzzy
+msgid "Unknown cipher algorithm"
+msgstr "|NAME|usa l'algoritmo di cifratura NOME"
+
+#: util/errors.c:66
+#, fuzzy
+msgid "Can't open the keyring"
+msgstr "impossibile scrivere il portachiavi\n"
+
+#: util/errors.c:67
+#, fuzzy
+msgid "Invalid packet"
+msgstr "valore non valido\n"
+
+#: util/errors.c:68
+msgid "Invalid armor"
+msgstr ""
+
+#: util/errors.c:69
+#, fuzzy
+msgid "No such user id"
+msgstr "User ID inesistente.\n"
+
+#: util/errors.c:70
+#, fuzzy
+msgid "Secret key not available"
+msgstr "È disponibile una chiave segreta.\n"
+
+#: util/errors.c:71
+#, fuzzy
+msgid "Wrong secret key used"
+msgstr "elenca le chiavi segrete"
+
+#: util/errors.c:72
+msgid "Not supported"
+msgstr ""
+
+#: util/errors.c:73
+msgid "Bad key"
+msgstr ""
+
+#: util/errors.c:74
+#, fuzzy
+msgid "File read error"
+msgstr "errore di lettura: %s\n"
+
+#: util/errors.c:75
+msgid "File write error"
+msgstr ""
+
+#: util/errors.c:76
+#, fuzzy
+msgid "Unknown compress algorithm"
+msgstr "|N|usa l'algoritmo di compressione N"
+
+#: util/errors.c:77
+msgid "File open error"
+msgstr ""
+
+#: util/errors.c:78
+msgid "File create error"
+msgstr ""
+
+#: util/errors.c:79
+#, fuzzy
+msgid "Invalid passphrase"
+msgstr "Inserisci la passphrase: "
+
+#: util/errors.c:80
+msgid "Unimplemented pubkey algorithm"
+msgstr ""
+
+#: util/errors.c:81
+#, fuzzy
+msgid "Unimplemented cipher algorithm"
+msgstr "l'algoritmo di cifratura selezionato non è valido\n"
+
+#: util/errors.c:82
+msgid "Unknown signature class"
+msgstr ""
+
+#: util/errors.c:83
+msgid "Trust database error"
+msgstr ""
+
+#: util/errors.c:84
+msgid "Bad MPI"
+msgstr ""
+
+#: util/errors.c:85
+msgid "Resource limit"
+msgstr ""
+
+#: util/errors.c:86
+#, fuzzy
+msgid "Invalid keyring"
+msgstr "Scelta non valida.\n"
+
+#: util/errors.c:87
+msgid "Bad certificate"
+msgstr ""
+
+#: util/errors.c:88
+#, fuzzy
+msgid "Malformed user id"
+msgstr "aggiungi un user id"
+
+#: util/errors.c:89
+msgid "File close error"
+msgstr ""
+
+#: util/errors.c:90
+msgid "File rename error"
+msgstr ""
+
+#: util/errors.c:91
+msgid "File delete error"
+msgstr ""
+
+#: util/errors.c:92
+msgid "Unexpected data"
+msgstr ""
+
+#: util/errors.c:93
+msgid "Timestamp conflict"
+msgstr ""
+
+#: util/errors.c:94
+#, fuzzy
+msgid "Unusable pubkey algorithm"
+msgstr "|N|usa l'algoritmo di compressione N"
+
+#: util/errors.c:95
+#, fuzzy
+msgid "File exists"
+msgstr "Il file '%s' esiste. "
+
+#: util/errors.c:96
+msgid "Weak key"
+msgstr ""
+
+#: util/logger.c:177
+#, c-format
+msgid "Ohhhh jeeee ... this is a bug (%s:%d:%s)\n"
+msgstr ""
+
+#: util/logger.c:183
+#, c-format
+msgid "you found a bug ... (%s:%d)\n"
+msgstr ""
+
+#: cipher/rand-dummy.c:112
 msgid "warning: using insecure random number generator!!\n"
 msgstr ""
 "Attenzione: si sta usando un generatore di numeri casuali non sicuro!!\n"
 
-#: cipher/rand-dummy.c:107
+#: cipher/rand-dummy.c:113
 msgid ""
 "The random number generator is only a kludge to let\n"
 "it compile - it is in no way a strong RNG!\n"
@@ -53,7 +254,7 @@ msgstr ""
 "altra cosa per dare all'OS la possibilità di raccogliere altra entropia!\n"
 "(Servono ancora %d altri byte)\n"
 
-#: g10/g10.c:146
+#: g10/g10.c:147
 msgid ""
 "@Commands:\n"
 " "
@@ -61,115 +262,119 @@ msgstr ""
 "@Comandi:\n"
 " "
 
-#: g10/g10.c:149
+#: g10/g10.c:150
 msgid "|[file]|make a signature"
 msgstr "|[file]|fai una firma"
 
-#: g10/g10.c:150
+#: g10/g10.c:151
 msgid "|[file]|make a clear text signature"
 msgstr "|[file]|fai una firma mantenendo il testo in chiaro"
 
-#: g10/g10.c:151
+#: g10/g10.c:152
 msgid "make a detached signature"
 msgstr "fai una firma separata"
 
-#: g10/g10.c:152
+#: g10/g10.c:153
 msgid "encrypt data"
 msgstr "cifra dati"
 
-#: g10/g10.c:153
+#: g10/g10.c:154
 msgid "encryption only with symmetric cipher"
 msgstr "cifra solo con un cifrario simmetrico"
 
-#: g10/g10.c:154
+#: g10/g10.c:155
 msgid "store only"
 msgstr "immagazzina soltanto"
 
-#: g10/g10.c:155
+#: g10/g10.c:156
 msgid "decrypt data (default)"
 msgstr "decifra dati (predefinito)"
 
-#: g10/g10.c:156
+#: g10/g10.c:157
 msgid "verify a signature"
 msgstr "verifica una firma"
 
-#: g10/g10.c:158
+#: g10/g10.c:159
 msgid "list keys"
 msgstr "elenca le chiavi"
 
-#: g10/g10.c:159
+#: g10/g10.c:160
 msgid "list keys and signatures"
 msgstr "elenca le chiavi e le firme"
 
-#: g10/g10.c:160
+#: g10/g10.c:161
 msgid "check key signatures"
 msgstr "controlla le firme delle chiavi"
 
-#: g10/g10.c:161
+#: g10/g10.c:162
 msgid "list keys and fingerprints"
 msgstr "elenca le chiavi e le impronte digitali"
 
-#: g10/g10.c:162
+#: g10/g10.c:163
 msgid "list secret keys"
 msgstr "elenca le chiavi segrete"
 
-#: g10/g10.c:164
+#: g10/g10.c:165
 msgid "generate a new key pair"
 msgstr "genera una nuova coppia di chiavi"
 
-#: g10/g10.c:166
+#: g10/g10.c:167
 msgid "remove key from the public keyring"
 msgstr "rimuove una chiave dal portachiavi pubblico"
 
-#: g10/g10.c:168
+#: g10/g10.c:169
 msgid "sign or edit a key"
 msgstr "firma o modifica una chiave"
 
-#: g10/g10.c:169
+#: g10/g10.c:170
 msgid "generate a revocation certificate"
 msgstr "genera un certificato di revoca"
 
-#: g10/g10.c:171
+#: g10/g10.c:172
 msgid "export keys"
 msgstr "esporta delle chiavi"
 
-#: g10/g10.c:174
+#: g10/g10.c:175
 msgid "import/merge keys"
 msgstr "importa/aggiungi delle chiavi"
 
-#: g10/g10.c:175
+#: g10/g10.c:176
 msgid "list only the sequence of packets"
 msgstr "elenca solo la sequenza dei pacchetti"
 
-#: g10/g10.c:177
+#: g10/g10.c:178
 msgid "export the ownertrust values"
 msgstr "esporta i valori di fiducia"
 
-#: g10/g10.c:178
+#: g10/g10.c:179
 msgid "import ownertrust values"
 msgstr "importa i valori di fiducia"
 
-#: g10/g10.c:179
+#: g10/g10.c:180
 msgid "|[NAMES]|check the trust database"
 msgstr "|[NAMES]|controlla il TrustDB"
 
-#: g10/g10.c:180
+#: g10/g10.c:181
+msgid "fix a corrupted trust database"
+msgstr ""
+
+#: g10/g10.c:182
 msgid "De-Armor a file or stdin"
 msgstr "rimuovi l'armatura a un file o a stdin"
 
-#: g10/g10.c:181
+#: g10/g10.c:183
 msgid "En-Armor a file or stdin"
 msgstr "crea l'armatura a un file o a stdin"
 
-#: g10/g10.c:182
+#: g10/g10.c:184
 msgid "|algo [files]|print message digests"
 msgstr "|algo [files]|stampa tutti i message digests"
 
-#: g10/g10.c:183
+#: g10/g10.c:185
 msgid "print all message digests"
 msgstr "stampa tutti i message digests"
 
-#: g10/g10.c:190
+#: g10/g10.c:192
 msgid ""
 "@\n"
 "Options:\n"
@@ -179,128 +384,128 @@ msgstr ""
 "Opzioni:\n"
 " "
 
-#: g10/g10.c:192
+#: g10/g10.c:194
 msgid "create ascii armored output"
 msgstr "crea un output ascii con armatura"
 
-#: g10/g10.c:194
+#: g10/g10.c:196
 msgid "use this user-id to sign or decrypt"
 msgstr "usa questo user-id per firmare o decifrare"
 
-#: g10/g10.c:195
+#: g10/g10.c:197
 msgid "use this user-id for encryption"
 msgstr "usa questo user-id per cifrare"
 
-#: g10/g10.c:196
+#: g10/g10.c:198
 msgid "|N|set compress level N (0 disables)"
 msgstr "|N|imposta il livello di compressione (0 disabilita)"
 
-#: g10/g10.c:197
+#: g10/g10.c:199
 msgid "use canonical text mode"
 msgstr "usa il modo testo canonico"
 
-#: g10/g10.c:199
+#: g10/g10.c:201
 msgid "use as output file"
 msgstr "usa come file di output"
 
-#: g10/g10.c:200
+#: g10/g10.c:202
 msgid "verbose"
 msgstr "prolisso"
 
 #. { oDryRun, "dry-run",   0, N_("do not make any changes") },
-#: g10/g10.c:202
+#: g10/g10.c:204
 msgid "batch mode: never ask"
 msgstr "modo batch: non fare domande"
 
-#: g10/g10.c:203
+#: g10/g10.c:205
 msgid "assume yes on most questions"
 msgstr "assumi \"sì\" a quasi tutte le domande"
 
-#: g10/g10.c:204
+#: g10/g10.c:206
 msgid "assume no on most questions"
 msgstr "assumi \"no\" a quasi tutte le domande"
 
-#: g10/g10.c:205
+#: g10/g10.c:207
 msgid "add this keyring to the list of keyrings"
 msgstr "aggiungi questo portachiavi alla lista"
 
-#: g10/g10.c:206
+#: g10/g10.c:208
 msgid "add this secret keyring to the list"
 msgstr "aggiungi questo portachiavi segreto alla lista"
 
-#: g10/g10.c:207
+#: g10/g10.c:209
 msgid "|NAME|use NAME as default secret key"
 msgstr "|NOME|usa NOME come chiave segreta predefinita"
 
-#: g10/g10.c:208
+#: g10/g10.c:210
 msgid "read options from file"
 msgstr "leggi le opzioni dal file"
 
-#: g10/g10.c:210
+#: g10/g10.c:212
 msgid "set debugging flags"
 msgstr "imposta i flag di debugging"
 
-#: g10/g10.c:211
+#: g10/g10.c:213
 msgid "enable full debugging"
 msgstr "abilita il debugging completo"
 
-#: g10/g10.c:212
+#: g10/g10.c:214
 msgid "|FD|write status info to this FD"
 msgstr "|FD|scrivi le informazioni di stato su questo fd"
 
-#: g10/g10.c:213
+#: g10/g10.c:215
 msgid "do not write comment packets"
 msgstr "non scrivere pacchetti di commento"
 
-#: g10/g10.c:214
+#: g10/g10.c:216
 msgid "(default is 1)"
 msgstr "(predefinito è 1)"
 
-#: g10/g10.c:215
+#: g10/g10.c:217
 msgid "(default is 3)"
 msgstr "(predefinito è 3)"
 
-#: g10/g10.c:216
+#: g10/g10.c:218
 #, fuzzy
 msgid "|FILE|load extension module FILE"
 msgstr "|file|carica un modulo di estensione"
 
-#: g10/g10.c:217
+#: g10/g10.c:219
 msgid "emulate the mode described in RFC1991"
 msgstr "emula il modo descritto nel RFC1991"
 
-#: g10/g10.c:218
+#: g10/g10.c:220
 #, fuzzy
 msgid "|N|use passphrase mode N"
 msgstr "Inserisci la passphrase: "
 
-#: g10/g10.c:220
+#: g10/g10.c:222
 #, fuzzy
 msgid "|NAME|use message digest algorithm NAME for passphrases"
 msgstr "|NAME|usa l'algoritmo di message digest NOME"
 
-#: g10/g10.c:222
+#: g10/g10.c:224
 #, fuzzy
 msgid "|NAME|use cipher algorithm NAME for passphrases"
 msgstr "|NAME|usa l'algoritmo di cifratura NOME"
 
-#: g10/g10.c:224
+#: g10/g10.c:226
 msgid "|NAME|use cipher algorithm NAME"
 msgstr "|NAME|usa l'algoritmo di cifratura NOME"
 
-#: g10/g10.c:225
+#: g10/g10.c:227
 msgid "|NAME|use message digest algorithm NAME"
 msgstr "|NAME|usa l'algoritmo di message digest NOME"
 
-#: g10/g10.c:226
+#: g10/g10.c:228
 msgid "|N|use compress algorithm N"
 msgstr "|N|usa l'algoritmo di compressione N"
 
-#: g10/g10.c:227
+#: g10/g10.c:229
 msgid "throw keyid field of encrypted packets"
 msgstr "elimina il campo keyid dei pacchetti crittografati"
 
-#: g10/g10.c:235
+#: g10/g10.c:237
 #, fuzzy
 msgid ""
 "@\n"
@@ -321,19 +526,19 @@ msgstr ""
 " --list-keys [names]        mostra le chiavi\n"
 " --fingerprint [names]      mostra le impronte digitali\n"
 
-#: g10/g10.c:310
+#: g10/g10.c:312
 msgid "Please report bugs to <gnupg-bugs@gnu.org>.\n"
 msgstr "Per favore segnala i bug a <gnupg-bugs@gnu.org>.\n"
 
-#: g10/g10.c:315
+#: g10/g10.c:317
 msgid "Usage: gpgm [options] [files] (-h for help)"
 msgstr "Uso: gpgm [opzioni] [file] (-h per l'aiuto)"
 
-#: g10/g10.c:317
+#: g10/g10.c:319
 msgid "Usage: gpg [options] [files] (-h for help)"
 msgstr "Uso: gpg [opzioni] [file] (-h per l'aiuto)"
 
-#: g10/g10.c:322
+#: g10/g10.c:324
 msgid ""
 "Syntax: gpgm [options] [files]\n"
 "GNUPG maintenance utility\n"
@@ -341,7 +546,7 @@ msgstr ""
 "Sintassi: gpgm [opzioni] [file]\n"
 "Utility di manutenzione di GNUPG\n"
 
-#: g10/g10.c:325
+#: g10/g10.c:327
 msgid ""
 "Syntax: gpg [options] [files]\n"
 "sign, check, encrypt or decrypt\n"
@@ -351,7 +556,7 @@ msgstr ""
 "firma, controlla, cifra o decifra\n"
 "l'operazione predefinita dipende dai dati di input\n"
 
-#: g10/g10.c:331
+#: g10/g10.c:333
 msgid ""
 "\n"
 "Supported algorithms:\n"
@@ -359,141 +564,141 @@ msgstr ""
 "\n"
 "Algoritmi gestiti:\n"
 
-#: g10/g10.c:406
+#: g10/g10.c:408
 msgid "usage: gpgm [options] "
 msgstr "uso: gpgm [options] "
 
-#: g10/g10.c:408
+#: g10/g10.c:410
 msgid "usage: gpg [options] "
 msgstr "uso: gpg [options] "
 
-#: g10/g10.c:449
+#: g10/g10.c:451
 msgid "conflicting commands\n"
 msgstr "comandi in conflitto\n"
 
-#: g10/g10.c:588
+#: g10/g10.c:590
 #, c-format
 msgid "note: no default option file '%s'\n"
 msgstr "nota: nessun file con opzioni predefinite '%s'\n"
 
-#: g10/g10.c:592
+#: g10/g10.c:594
 #, c-format
 msgid "option file '%s': %s\n"
 msgstr "file con opzioni predefinite '%s': %s\n"
 
-#: g10/g10.c:599
+#: g10/g10.c:601
 #, c-format
 msgid "reading options from '%s'\n"
 msgstr "lettura delle opzioni da '%s'\n"
 
-#: g10/g10.c:765 g10/g10.c:777
+#: g10/g10.c:768 g10/g10.c:780
 msgid "selected cipher algorithm is invalid\n"
 msgstr "l'algoritmo di cifratura selezionato non è valido\n"
 
-#: g10/g10.c:771 g10/g10.c:783
+#: g10/g10.c:774 g10/g10.c:786
 msgid "selected digest algorithm is invalid\n"
 msgstr "l'algoritmo di digest selezionato non è valido\n"
 
-#: g10/g10.c:786
+#: g10/g10.c:789
 #, c-format
 msgid "compress algorithm must be in range %d..%d\n"
 msgstr "l'algoritmo di compressione deve essere tra %d e %d\n"
 
-#: g10/g10.c:788
+#: g10/g10.c:791
 msgid "completes-needed must be greater than 0\n"
 msgstr "completes-needed deve essere maggiore di 0\n"
 
-#: g10/g10.c:790
+#: g10/g10.c:793
 msgid "marginals-needed must be greater than 1\n"
 msgstr "marginals-needed deve essere maggiore di 1\n"
 
-#: g10/g10.c:793
+#: g10/g10.c:796
 msgid "note: simple S2K mode (0) is strongly discouraged\n"
 msgstr ""
 
-#: g10/g10.c:797
+#: g10/g10.c:800
 msgid "invalid S2K mode; must be 0, 1 or 3\n"
 msgstr ""
 
-#: g10/g10.c:872
+#: g10/g10.c:876
 #, c-format
 msgid "failed to initialize the TrustDB: %s\n"
 msgstr "inizializzazione del trustdb fallita: %s\n"
 
-#: g10/g10.c:878
+#: g10/g10.c:882
 msgid "--store [filename]"
 msgstr "--store [nomefile]"
 
-#: g10/g10.c:886
+#: g10/g10.c:890
 msgid "--symmetric [filename]"
 msgstr "--symmetric [nomefile]"
 
-#: g10/g10.c:894
+#: g10/g10.c:898
 msgid "--encrypt [filename]"
 msgstr "--encrypt [nomefile]"
 
-#: g10/g10.c:907
+#: g10/g10.c:911
 msgid "--sign [filename]"
 msgstr "--sign [nomefile]"
 
-#: g10/g10.c:920
+#: g10/g10.c:924
 msgid "--sign --encrypt [filename]"
 msgstr "--sign --encrypt [nomefile]"
 
-#: g10/g10.c:934
+#: g10/g10.c:938
 msgid "--clearsign [filename]"
 msgstr "--clearsign [nomefile]"
 
-#: g10/g10.c:946
+#: g10/g10.c:950
 msgid "--decrypt [filename]"
 msgstr "--decrypt [nomefile]"
 
-#: g10/g10.c:955
+#: g10/g10.c:959
 msgid "--edit-key username"
 msgstr "--edit-key nomeutente"
 
-#: g10/g10.c:963
+#: g10/g10.c:967
 msgid "--delete-secret-key username"
 msgstr "--delete-secret-key nomeutente"
 
-#: g10/g10.c:966
+#: g10/g10.c:970
 msgid "--delete-key username"
 msgstr "--delete-key nomeutente"
 
-#: g10/encode.c:213 g10/g10.c:989 g10/keylist.c:79
+#: g10/encode.c:213 g10/g10.c:993 g10/keylist.c:79
 #, c-format
 msgid "can't open %s: %s\n"
 msgstr "impossibile aprire '%s': %s\n"
 
-#: g10/g10.c:1000
+#: g10/g10.c:1004
 msgid "-k[v][v][v][c] [userid] [keyring]"
 msgstr "-k[v][v][v][c] [userid] [portachiavi]"
 
-#: g10/g10.c:1055
+#: g10/g10.c:1059
 #, c-format
 msgid "dearmoring failed: %s\n"
 msgstr "rimozione dell'armatura fallita: %s\n"
 
-#: g10/g10.c:1063
+#: g10/g10.c:1067
 #, c-format
 msgid "enarmoring failed: %s\n"
 msgstr "creazione dell'armatura fallita: %s\n"
 
-#: g10/g10.c:1124
+#: g10/g10.c:1128
 #, c-format
 msgid "invalid hash algorithm '%s'\n"
 msgstr "algoritmo di hash non valido '%s'\n"
 
-#: g10/g10.c:1194
+#: g10/g10.c:1204
 msgid "[filename]"
 msgstr "[nomefile]"
 
-#: g10/decrypt.c:59 g10/g10.c:1196 g10/verify.c:66
+#: g10/decrypt.c:59 g10/g10.c:1206 g10/verify.c:66
 #, c-format
 msgid "can't open '%s'\n"
 msgstr "impossibile aprire '%s'\n"
 
-#: g10/g10.c:1241
+#: g10/g10.c:1251
 msgid ""
 "RSA keys are deprecated; please consider creating a new key and use this key "
 "in the future\n"
@@ -625,7 +830,7 @@ msgstr ""
 "se possiamo assegnare qualche valore di fiducia del proprietario mancante.\n"
 "\n"
 
-#: g10/pkclist.c:170
+#: g10/pkclist.c:168
 msgid ""
 "No owner trust values changed.\n"
 "\n"
@@ -633,15 +838,15 @@ msgstr ""
 "Nessun valore di fiducia del proprietario modificato.\n"
 "\n"
 
-#: g10/pkclist.c:190
+#: g10/pkclist.c:188
 msgid "revoked_key.override"
 msgstr ""
 
-#: g10/pkclist.c:191 g10/pkclist.c:281
+#: g10/pkclist.c:189 g10/pkclist.c:279
 msgid "Use this key anyway? "
 msgstr "Uso lo stesso questa chiave? "
 
-#: g10/pkclist.c:276
+#: g10/pkclist.c:274
 msgid ""
 "It is NOT certain that the key belongs to its owner.\n"
 "If you *really* know what you are doing, you may answer\n"
@@ -653,55 +858,55 @@ msgstr ""
 "prossima domanda.\n"
 "\n"
 
-#: g10/pkclist.c:280
+#: g10/pkclist.c:278
 msgid "untrusted_key.override"
 msgstr ""
 
-#: g10/pkclist.c:285
+#: g10/pkclist.c:283
 msgid "WARNING: Using untrusted key!\n"
 msgstr "ATTENZIONE: uso di una chiave non fidata!\n"
 
-#: g10/pkclist.c:321
+#: g10/pkclist.c:319
 msgid "WARNING: This key has been revoked by its owner!\n"
 msgstr "ATTENZIONE: questa chiave è stata revocata dal suo proprietario!\n"
 
-#: g10/pkclist.c:322
+#: g10/pkclist.c:320
 msgid "         This could mean that the signature is forgery.\n"
 msgstr "         Questo può significare che la firma è stata falsificata.\n"
 
-#: g10/pkclist.c:343
+#: g10/pkclist.c:341
 msgid "Note: This key has expired!\n"
 msgstr "Nota: questa chiave è scaduta!\n"
 
-#: g10/pkclist.c:350
+#: g10/pkclist.c:348
 msgid "WARNING: This key is not certified with a trusted signature!\n"
 msgstr "ATTENZIONE: questa chiave non è certificata con una firma fidata!\n"
 
-#: g10/pkclist.c:352
+#: g10/pkclist.c:350
 msgid ""
 "         There is no indication that the signature belongs to the owner.\n"
 msgstr ""
 "         Non ci sono indicazioni che la firma appartenga al proprietario.\n"
 
-#: g10/pkclist.c:367
+#: g10/pkclist.c:365
 msgid "WARNING: We do NOT trust this key!\n"
 msgstr "ATTENZIONE: NON ci fidiamo di questa chiave!\n"
 
-#: g10/pkclist.c:368
+#: g10/pkclist.c:366
 msgid "         The signature is probably a FORGERY.\n"
 msgstr "          La firma è probabilmente un FALSO.\n"
 
-#: g10/pkclist.c:375
+#: g10/pkclist.c:373
 msgid ""
 "WARNING: This key is not certified with sufficiently trusted signatures!\n"
 msgstr ""
 "ATTENZIONE: questa chiave non è certificata con firme abbastanza fidate!\n"
 
-#: g10/pkclist.c:378
+#: g10/pkclist.c:376
 msgid "         It is not certain that the signature belongs to the owner.\n"
 msgstr "         Non è sicuro che la firma appartenga al proprietario.\n"
 
-#: g10/pkclist.c:423
+#: g10/pkclist.c:421
 msgid ""
 "You did not specify a user ID. (you may use \"-r\")\n"
 "\n"
@@ -709,29 +914,29 @@ msgstr ""
 "Non hai specificato un user ID. (puoi usare \"-r\")\n"
 "\n"
 
-#: g10/pkclist.c:427
+#: g10/pkclist.c:425
 msgid "pklist.user_id.enter"
 msgstr ""
 
-#: g10/pkclist.c:428
+#: g10/pkclist.c:426
 msgid "Enter the user ID: "
 msgstr "Inserisci l'user ID: "
 
-#: g10/pkclist.c:439
+#: g10/pkclist.c:437
 msgid "No such user ID.\n"
 msgstr "User ID inesistente.\n"
 
-#: g10/pkclist.c:473 g10/pkclist.c:500
+#: g10/pkclist.c:471 g10/pkclist.c:498
 #, c-format
 msgid "%s: skipped: %s\n"
 msgstr "%s: saltata: %s\n"
 
-#: g10/pkclist.c:481
+#: g10/pkclist.c:479
 #, c-format
 msgid "%s: error checking key: %s\n"
 msgstr "%s: errore nel controllare la chiave: %s\n"
 
-#: g10/pkclist.c:507
+#: g10/pkclist.c:505
 msgid "no valid addressees\n"
 msgstr "nessun indirizzo valido\n"
 
@@ -757,34 +962,34 @@ msgstr "   (%d) DSA e ElGamal (default)\n"
 msgid "   (%d) ElGamal (sign and encrypt)\n"
 msgstr "   (%d) ElGamal (firma e crittografa)\n"
 
-#: g10/keygen.c:387
+#: g10/keygen.c:388
 #, c-format
 msgid "   (%d) ElGamal (encrypt only)\n"
 msgstr "   (%d) ElGamal (crittografa solo)\n"
 
-#: g10/keygen.c:388
+#: g10/keygen.c:389
 #, c-format
 msgid "   (%d) DSA (sign only)\n"
 msgstr "   (%d) DSA (firma solo)\n"
 
-#: g10/keygen.c:389
+#: g10/keygen.c:390
 #, c-format
 msgid "   (%d) ElGamal in a v3 packet\n"
 msgstr "   (%d) ElGamal in un pacchetto v3\n"
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "keygen.algo"
 msgstr ""
 
-#: g10/keygen.c:393
+#: g10/keygen.c:394
 msgid "Your selection? "
 msgstr "Cosa scegli? "
 
-#: g10/keygen.c:419
+#: g10/keygen.c:420
 msgid "Invalid selection.\n"
 msgstr "Scelta non valida.\n"
 
-#: g10/keygen.c:431
+#: g10/keygen.c:432
 #, c-format
 msgid ""
 "About to generate a new %s keypair.\n"
@@ -797,23 +1002,23 @@ msgstr ""
 "          la dimensione predefinita è 1024 bit\n"
 "  la dimensione massima consigliata è 2048 bit\n"
 
-#: g10/keygen.c:437
+#: g10/keygen.c:438
 msgid "keygen.size"
 msgstr ""
 
-#: g10/keygen.c:438
+#: g10/keygen.c:439
 msgid "What keysize do you want? (1024) "
 msgstr "Di che dimensioni vuoi la chiave? (1024) "
 
-#: g10/keygen.c:443
+#: g10/keygen.c:444
 msgid "DSA only allows keysizes from 512 to 1024\n"
 msgstr "DSA permette solo chiavi di dimensioni da 512 a 1024\n"
 
-#: g10/keygen.c:445
+#: g10/keygen.c:446
 msgid "keysize too small; 768 is smallest value allowed.\n"
 msgstr "la chiave è troppo corta; 768 è il minimo valore permesso.\n"
 
-#: g10/keygen.c:448
+#: g10/keygen.c:449
 msgid ""
 "Keysizes larger than 2048 are not suggested because\n"
 "computations take REALLY long!\n"
@@ -821,15 +1026,15 @@ msgstr ""
 "Chiavi più lunghe di 2048 non sono consigliate perchè i calcoli sono \n"
 "VERAMENTE lunghi!\n"
 
-#: g10/keygen.c:450
+#: g10/keygen.c:451
 msgid "keygen.size.huge.okay"
 msgstr ""
 
-#: g10/keygen.c:451
+#: g10/keygen.c:452
 msgid "Are you sure that you want this keysize? "
 msgstr "Sei sicuro di volere una chiave di queste dimensioni? "
 
-#: g10/keygen.c:452
+#: g10/keygen.c:453
 msgid ""
 "Okay, but keep in mind that your monitor and keyboard radiation is also very "
 "vulnerable to attacks!\n"
@@ -837,25 +1042,25 @@ msgstr ""
 "Va bene, ma ricordati che anche le radiazioni emesse dal tuo monitor e dalla "
 "tua tastiera sono molto vulnerabili ad attacchi!\n"
 
-#: g10/keygen.c:459
+#: g10/keygen.c:460
 msgid "keygen.size.large.okay"
 msgstr ""
 
-#: g10/keygen.c:460
+#: g10/keygen.c:461
 msgid "Do you really need such a large keysize? "
 msgstr "Ti serve davvero una chiave così lunga? "
 
-#: g10/keygen.c:466
+#: g10/keygen.c:467
 #, c-format
 msgid "Requested keysize is %u bits\n"
 msgstr "Le dimensioni della chiave richieste sono %u bit\n"
 
-#: g10/keygen.c:469 g10/keygen.c:473
+#: g10/keygen.c:470 g10/keygen.c:474
 #, c-format
 msgid "rounded up to %u bits\n"
 msgstr "arrotondate a %u bit\n"
 
-#: g10/keygen.c:485
+#: g10/keygen.c:486
 msgid ""
 "Please specify how long the key should be valid.\n"
 "         0 = key does not expire\n"
@@ -870,37 +1075,37 @@ msgstr ""
 "      <n>m = la chiave scadrà dopo n mesi\n"
 "      <n>y = la chiave scadrà dopo n anni\n"
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "keygen.valid"
 msgstr ""
 
-#: g10/keygen.c:500
+#: g10/keygen.c:501
 msgid "Key is valid for? (0) "
 msgstr "Chiave valida per? (0) "
 
-#: g10/keygen.c:511
+#: g10/keygen.c:512
 msgid "invalid value\n"
 msgstr "valore non valido\n"
 
-#: g10/keygen.c:516
+#: g10/keygen.c:517
 msgid "Key does not expire at all\n"
 msgstr "La chiave non scade\n"
 
 #. print the date when the key expires
-#: g10/keygen.c:519
+#: g10/keygen.c:520
 #, c-format
 msgid "Key expires at %s\n"
 msgstr "La chiave scadrà il %s\n"
 
-#: g10/keygen.c:524
+#: g10/keygen.c:525
 msgid "keygen.valid.okay"
 msgstr ""
 
-#: g10/keygen.c:525
+#: g10/keygen.c:526
 msgid "Is this correct (y/n)? "
 msgstr "È giusto (s/n)? "
 
-#: g10/keygen.c:553
+#: g10/keygen.c:554
 msgid ""
 "\n"
 "You need a User-ID to identify your key; the software constructs the user "
@@ -916,51 +1121,51 @@ msgstr ""
 "    \"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>\"\n"
 "\n"
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "keygen.name"
 msgstr ""
 
-#: g10/keygen.c:564
+#: g10/keygen.c:565
 msgid "Real name: "
 msgstr "Nome e Cognome: "
 
-#: g10/keygen.c:568
+#: g10/keygen.c:569
 msgid "Invalid character in name\n"
 msgstr "Carattere non valido nel nome\n"
 
-#: g10/keygen.c:570
+#: g10/keygen.c:571
 msgid "Name may not start with a digit\n"
 msgstr "Il nome non può iniziare con una cifra\n"
 
-#: g10/keygen.c:572
+#: g10/keygen.c:573
 msgid "Name must be at least 5 characters long\n"
 msgstr "Il nome deve essere lungo almeno 5 caratteri\n"
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "keygen.email"
 msgstr ""
 
-#: g10/keygen.c:580
+#: g10/keygen.c:581
 msgid "Email address: "
 msgstr "Indirizzo di Email: "
 
-#: g10/keygen.c:592
+#: g10/keygen.c:593
 msgid "Not a valid email address\n"
 msgstr "L'indirizzo di email non è valido\n"
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "keygen.comment"
 msgstr ""
 
-#: g10/keygen.c:600
+#: g10/keygen.c:601
 msgid "Comment: "
 msgstr "Commento: "
 
-#: g10/keygen.c:606
+#: g10/keygen.c:607
 msgid "Invalid character in comment\n"
 msgstr "Carattere non valido nel commento\n"
 
-#: g10/keygen.c:626
+#: g10/keygen.c:627
 #, c-format
 msgid ""
 "You selected this USER-ID:\n"
@@ -971,19 +1176,19 @@ msgstr ""
 "    \"%s\"\n"
 "\n"
 
-#: g10/keygen.c:629
+#: g10/keygen.c:630
 msgid "NnCcEeOoQq"
 msgstr ""
 
-#: g10/keygen.c:638
+#: g10/keygen.c:639
 msgid "keygen.userid.cmd"
 msgstr ""
 
-#: g10/keygen.c:639
+#: g10/keygen.c:640
 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? "
 msgstr "Modifica (N)ome, (C)ommento, (E)mail oppure (O)kay/(Q)uit? "
 
-#: g10/keygen.c:686
+#: g10/keygen.c:687
 msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
@@ -991,11 +1196,11 @@ msgstr ""
 "Ti serve una passphrase per proteggere la tua chiave segreta.\n"
 "\n"
 
-#: g10/keyedit.c:377 g10/keygen.c:694
+#: g10/keyedit.c:388 g10/keygen.c:695
 msgid "passphrase not correctly repeated; try again.\n"
 msgstr "passphrase non ripetuta correttamente; riprova.\n"
 
-#: g10/keygen.c:700
+#: g10/keygen.c:701
 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"
@@ -1007,7 +1212,7 @@ msgstr ""
 "programma con l'opzione \"--edit-key\".\n"
 "\n"
 
-#: g10/keygen.c:721
+#: g10/keygen.c:722
 msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (work in another window, move the mouse, utilize the\n"
@@ -1021,33 +1226,33 @@ msgstr ""
 "generatore di numeri casuali la possibilità di raccogliere abbastanza\n"
 "entropia.\n"
 
-#: g10/keygen.c:788
+#: g10/keygen.c:789
 msgid "Key generation can only be used in interactive mode\n"
 msgstr "Una chiave può essere generata solo in modo interattivo\n"
 
-#: g10/keygen.c:796
+#: g10/keygen.c:797
 msgid "DSA keypair will have 1024 bits.\n"
 msgstr "La coppia DSA avrà 1024 bit.\n"
 
-#: g10/keygen.c:802
+#: g10/keygen.c:803
 msgid "Key generation cancelled.\n"
 msgstr "Generazione della chiave annullata.\n"
 
-#: g10/keygen.c:812
+#: g10/keygen.c:813
 #, c-format
 msgid "writing public certificate to '%s'\n"
 msgstr "scrittura del certificato pubblico in '%s'\n"
 
-#: g10/keygen.c:813
+#: g10/keygen.c:814
 #, c-format
 msgid "writing secret certificate to '%s'\n"
 msgstr "scrittura del certificato privato in '%s'\n"
 
-#: g10/keygen.c:890
+#: g10/keygen.c:891
 msgid "public and secret key created and signed.\n"
 msgstr "chiavi pubbliche e segrete create e firmate.\n"
 
-#: g10/keygen.c:892
+#: g10/keygen.c:893
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
 "the command \"--add-key\" to generate a secondary key for this purpose.\n"
@@ -1056,16 +1261,16 @@ msgstr ""
 "vorrai usare il comando \"--add-key\" per generare una chiave secondaria\n"
 "per questo scopo.\n"
 
-#: g10/keygen.c:906 g10/keygen.c:990
+#: g10/keygen.c:907 g10/keygen.c:991
 #, c-format
 msgid "Key generation failed: %s\n"
 msgstr "Generazione della chiave fallita: %s\n"
 
-#: g10/keygen.c:967
+#: g10/keygen.c:968
 msgid "keygen.sub.okay"
 msgstr ""
 
-#: g10/keygen.c:968
+#: g10/keygen.c:969
 msgid "Really create? "
 msgstr "Crea davvero? "
 
@@ -1099,7 +1304,7 @@ msgstr "%s crittografato per: %s\n"
 msgid "using secondary key %08lX instead of primary key %08lX\n"
 msgstr ""
 
-#: g10/import.c:105 g10/trustdb.c:1349
+#: g10/import.c:105 g10/trustdb.c:1389
 #, c-format
 msgid "can't open file: %s\n"
 msgstr "impossibile aprire il file: %s\n"
@@ -1109,7 +1314,7 @@ msgstr "impossibile aprire il file: %s\n"
 msgid "skipping block of type %d\n"
 msgstr "salto un blocco di tipo %d\n"
 
-#: g10/import.c:131 g10/trustdb.c:1427
+#: g10/import.c:131 g10/trustdb.c:1464
 #, c-format
 msgid "read error: %s\n"
 msgstr "errore di lettura: %s\n"
@@ -1347,17 +1552,17 @@ msgstr "Trovato 1 user id senza autofirma valida\n"
 msgid "%d user ids without valid self-signatures detected\n"
 msgstr "Trovati %d user id senza autofirme valide\n"
 
-#: g10/keyedit.c:249
+#: g10/keyedit.c:257
 #, c-format
 msgid "Already signed by key %08lX\n"
 msgstr "Già firmato dalla chiave %08lX\n"
 
-#: g10/keyedit.c:257
+#: g10/keyedit.c:265
 #, c-format
 msgid "Nothing to sign with key %08lX\n"
 msgstr "Niente da firmare con la chiave %08lX\n"
 
-#: g10/keyedit.c:265
+#: g10/keyedit.c:274
 msgid ""
 "Are you really sure that you want to sign this key\n"
 "with your key: \""
@@ -1365,33 +1570,33 @@ msgstr ""
 "Sei davvero sicuro di volere firmare questa chiave\n"
 "con la tua chiave: \""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "sign_uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:272
+#: g10/keyedit.c:281
 msgid "Really sign? "
 msgstr "Firmo davvero? "
 
-#: g10/keyedit.c:293
+#: g10/keyedit.c:302
 #, c-format
 msgid "signing failed: %s\n"
 msgstr "firma fallita: %s\n"
 
-#: g10/keyedit.c:344
+#: g10/keyedit.c:355
 msgid "This key is not protected.\n"
 msgstr "Questa chiave non è protetta.\n"
 
-#: g10/keyedit.c:347
+#: g10/keyedit.c:358
 msgid "Key is protected.\n"
 msgstr "La chiave è protetta.\n"
 
-#: g10/keyedit.c:364
+#: g10/keyedit.c:375
 #, c-format
 msgid "Can't edit this key: %s\n"
 msgstr "Impossibile modificare questa chiave: %s\n"
 
-#: g10/keyedit.c:369
+#: g10/keyedit.c:380
 msgid ""
 "Enter the new passphrase for this secret key.\n"
 "\n"
@@ -1399,7 +1604,7 @@ msgstr ""
 "Inserisci la nuova passphrase per questa chiave segreta.\n"
 "\n"
 
-#: g10/keyedit.c:381
+#: g10/keyedit.c:392
 msgid ""
 "You don't want a passphrase - this is probably a *bad* idea!\n"
 "\n"
@@ -1407,284 +1612,289 @@ msgstr ""
 "Non vuoi una passphrase - questa è probabilmente una *cattiva* idea!\n"
 "\n"
 
-#: g10/keyedit.c:383
+#: g10/keyedit.c:394
 msgid "change_passwd.empty.okay"
 msgstr ""
 
-#: g10/keyedit.c:384
+#: g10/keyedit.c:395
 msgid "Do you really want to do this? "
 msgstr "Vuoi veramente farlo?"
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit"
 msgstr ""
 
-#: g10/keyedit.c:439
+#: g10/keyedit.c:450
 msgid "quit this menu"
 msgstr "abbandona questo menù"
 
-#: g10/keyedit.c:440
+#: g10/keyedit.c:451
 msgid "q"
 msgstr ""
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save"
 msgstr ""
 
-#: g10/keyedit.c:441
+#: g10/keyedit.c:452
 msgid "save and quit"
 msgstr "salva ed esci"
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "help"
 msgstr ""
 
-#: g10/keyedit.c:442
+#: g10/keyedit.c:453
 msgid "show this help"
 msgstr "mostra questo aiuto"
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "fpr"
 msgstr ""
 
-#: g10/keyedit.c:444
+#: g10/keyedit.c:455
 msgid "show fingerprint"
 msgstr "mostra le impronte digitali"
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 msgid "list"
 msgstr ""
 
-#: g10/keyedit.c:445
+#: g10/keyedit.c:456
 msgid "list key and user ids"
 msgstr "elenca le chiavi e gli user id"
 
-#: g10/keyedit.c:446
+#: g10/keyedit.c:457
 msgid "l"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "uid"
 msgstr ""
 
-#: g10/keyedit.c:447
+#: g10/keyedit.c:458
 msgid "select user id N"
 msgstr "scegli l'user id N"
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "key"
 msgstr ""
 
-#: g10/keyedit.c:448
+#: g10/keyedit.c:459
 msgid "select secondary key N"
 msgstr "scegli la chiave secondaria N"
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "check"
 msgstr ""
 
-#: g10/keyedit.c:449
+#: g10/keyedit.c:460
 msgid "list signatures"
 msgstr "elenca le firme"
 
-#: g10/keyedit.c:450
+#: g10/keyedit.c:461
 msgid "c"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign"
 msgstr ""
 
-#: g10/keyedit.c:451
+#: g10/keyedit.c:462
 msgid "sign the key"
 msgstr "firma la chiave"
 
-#: g10/keyedit.c:452
+#: g10/keyedit.c:463
 msgid "s"
 msgstr ""
 
-#: g10/keyedit.c:453
+#: g10/keyedit.c:464
 msgid "debug"
 msgstr ""
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "adduid"
 msgstr ""
 
-#: g10/keyedit.c:454
+#: g10/keyedit.c:465
 msgid "add a user id"
 msgstr "aggiungi un user id"
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "deluid"
 msgstr ""
 
-#: g10/keyedit.c:455
+#: g10/keyedit.c:466
 msgid "delete user id"
 msgstr "cancella un user id"
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "addkey"
 msgstr ""
 
-#: g10/keyedit.c:456
+#: g10/keyedit.c:467
 msgid "add a secondary key"
 msgstr "aggiungi una chiave secondaria"
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delkey"
 msgstr ""
 
-#: g10/keyedit.c:457
+#: g10/keyedit.c:468
 msgid "delete a secondary key"
 msgstr "cancella una chiave secondaria"
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle"
 msgstr ""
 
-#: g10/keyedit.c:458
+#: g10/keyedit.c:469
 msgid "toggle between secret and public key listing"
 msgstr "cambia tra visualizzare la chiave segreta e la chiave pubblica"
 
-#: g10/keyedit.c:460
+#: g10/keyedit.c:471
 msgid "t"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "pref"
 msgstr ""
 
-#: g10/keyedit.c:461
+#: g10/keyedit.c:472
 msgid "list preferences"
 msgstr "elenca le impostazioni"
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "passwd"
 msgstr ""
 
-#: g10/keyedit.c:462
+#: g10/keyedit.c:473
 msgid "change the passphrase"
 msgstr "cambia la passphrase"
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "trust"
 msgstr ""
 
-#: g10/keyedit.c:463
+#: g10/keyedit.c:474
 msgid "change the ownertrust"
 msgstr "cambia il valore di fiducia"
 
-#: g10/keyedit.c:481
+#: g10/keyedit.c:492
 msgid "can't do that in batchmode\n"
 msgstr "impossibile fare questo in batch mode\n"
 
 #. check that they match
 #. FIXME: check that they both match
-#: g10/keyedit.c:504
+#: g10/keyedit.c:515
 msgid "Secret key is available.\n"
 msgstr "È disponibile una chiave segreta.\n"
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "keyedit.cmd"
 msgstr ""
 
-#: g10/keyedit.c:520
+#: g10/keyedit.c:531
 msgid "Command> "
 msgstr "Comando> "
 
-#: g10/keyedit.c:545
+#: g10/keyedit.c:556
 msgid "Need the secret key to to this.\n"
 msgstr "Per fare questo serve la chiave segreta.\n"
 
-#: g10/keyedit.c:564
+#: g10/keyedit.c:575
 msgid "keyedit.save.okay"
 msgstr ""
 
-#: g10/keyedit.c:565
+#: g10/keyedit.c:576
 msgid "Save changes? "
 msgstr "Salvo i cambiamenti? "
 
-#: g10/keyedit.c:567
+#: g10/keyedit.c:578
 msgid "keyedit.cancel.okay"
 msgstr ""
 
-#: g10/keyedit.c:568
+#: g10/keyedit.c:579
 msgid "Quit without saving? "
 msgstr "Esco senza salvare? "
 
-#: g10/keyedit.c:578
+#: g10/keyedit.c:589
 #, c-format
 msgid "update failed: %s\n"
 msgstr "aggiornamento fallito: %s\n"
 
-#: g10/keyedit.c:585
+#: g10/keyedit.c:596
 #, c-format
 msgid "update secret failed: %s\n"
 msgstr "aggiornamento della chiave segreta fallito: %s\n"
 
-#: g10/keyedit.c:593
+#: g10/keyedit.c:603
 msgid "Key not changed so no update needed.\n"
 msgstr "La chiave non è cambiata quindi non sono necessari aggiornamenti.\n"
 
-#: g10/keyedit.c:623
+#: g10/keyedit.c:606 g10/keyedit.c:664
+#, fuzzy, c-format
+msgid "update of trust db failed: %s\n"
+msgstr "aggiornamento della chiave segreta fallito: %s\n"
+
+#: g10/keyedit.c:637
 msgid "keyedit.sign_all.okay"
 msgstr ""
 
-#: g10/keyedit.c:624
+#: g10/keyedit.c:638
 msgid "Really sign all user ids? "
 msgstr "Firmo davvero tutti gli user id? "
 
-#: g10/keyedit.c:625
+#: g10/keyedit.c:639
 msgid "Hint: Select the user ids to sign\n"
 msgstr "Suggerimento: seleziona gli user id da firmare\n"
 
-#: g10/keyedit.c:653
+#: g10/keyedit.c:675
 msgid "You must select at least one user id.\n"
 msgstr "Devi selezionare almeno un user id.\n"
 
-#: g10/keyedit.c:655
+#: g10/keyedit.c:677
 msgid "You can't delete the last user id!\n"
 msgstr "Non puoi cancellare l'ultimo user id!\n"
 
-#: g10/keyedit.c:657
+#: g10/keyedit.c:679
 msgid "keyedit.remove.uid.okay"
 msgstr ""
 
-#: g10/keyedit.c:658
+#: g10/keyedit.c:680
 msgid "Really remove all selected user ids? "
 msgstr "Tolgo davvero tutti gli user id selezionati? "
 
-#: g10/keyedit.c:659
+#: g10/keyedit.c:681
 msgid "Really remove this user id? "
 msgstr "Tolgo davvero questo user id? "
 
-#: g10/keyedit.c:682
+#: g10/keyedit.c:704
 msgid "You must select at least one key.\n"
 msgstr "Devi selezionare almeno una chiave.\n"
 
-#: g10/keyedit.c:684
+#: g10/keyedit.c:706
 msgid "keyedit.remove.subkey.okay"
 msgstr ""
 
-#: g10/keyedit.c:686
+#: g10/keyedit.c:708
 msgid "Do you really want to delete the selected keys? "
 msgstr "Vuoi davvero cancellare le chiavi selezionate? "
 
-#: g10/keyedit.c:687
+#: g10/keyedit.c:709
 msgid "Do you really want to delete this key? "
 msgstr "Vuoi davvero cancellare questa chiave? "
 
-#: g10/keyedit.c:724
+#: g10/keyedit.c:746
 msgid "Invalid command  (try \"help\")\n"
 msgstr "Comando non valido (prova \"help\")\n"
 
-#: g10/keyedit.c:1104
+#: g10/keyedit.c:1129
 #, c-format
 msgid "No user id with index %d\n"
 msgstr "Nessun user id con l'indice %d\n"
 
-#: g10/keyedit.c:1149
+#: g10/keyedit.c:1174
 #, c-format
 msgid "No secondary key with index %d\n"
 msgstr "Nessuna chiave secondaria con l'indice %d\n"
@@ -1708,15 +1918,15 @@ msgstr ""
 msgid "Signature made %.*s using %s key ID %08lX\n"
 msgstr "Firma fatta %.*s usando %s key ID %08lX\n"
 
-#: g10/mainproc.c:852
+#: g10/mainproc.c:854
 msgid "BAD signature from \""
 msgstr "Firma NON corretta da \""
 
-#: g10/mainproc.c:853
+#: g10/mainproc.c:855
 msgid "Good signature from \""
 msgstr "Buona firma da \""
 
-#: g10/mainproc.c:864
+#: g10/mainproc.c:866
 #, c-format
 msgid "Can't check signature: %s\n"
 msgstr "Impossibile controllare la firma: %s\n"
@@ -1800,79 +2010,78 @@ msgstr ""
 msgid "warning: signature key expired %s\n"
 msgstr "attenzione: firma della chiave scaduta il %s\n"
 
-#: g10/trustdb.c:318
-#, c-format
-msgid "error reading sigrec: %s\n"
-msgstr "errore leggendo la sigrec: %s\n"
+#: g10/trustdb.c:127
+msgid "The trust DB is corrupted; please run \"gpgm --fix-trust-db\".\n"
+msgstr ""
 
-#: g10/trustdb.c:323
+#: g10/trustdb.c:406
 #, c-format
 msgid "chained sigrec %lu has a wrong owner\n"
 msgstr "la chained sigrec %lu ha il proprietario sbagliato\n"
 
-#: g10/trustdb.c:370
+#: g10/trustdb.c:453
 #, c-format
 msgid "key %08lX: secret key without public key\n"
 msgstr "chiave %08lX: chiave segreta senza chiave pubblica\n"
 
-#: g10/trustdb.c:375
+#: g10/trustdb.c:458
 #, c-format
 msgid "key %08lX: secret and public key don't match\n"
 msgstr "chiave %08lX: le chiavi segreta e pubblica non corrispondono\n"
 
-#: g10/trustdb.c:386
+#: g10/trustdb.c:469
 #, c-format
 msgid "key %08lX: can't put it into the trustdb\n"
 msgstr "chiave %08lX: impossibile metterla nel trustdb\n"
 
-#: g10/trustdb.c:392
+#: g10/trustdb.c:475
 #, c-format
 msgid "key %08lX: query record failed\n"
 msgstr "chiave %08lX: richiesta del record fallita\n"
 
-#: g10/trustdb.c:401
+#: g10/trustdb.c:484
 #, c-format
 msgid "key %08lX: already in ultikey_table\n"
 msgstr "chiave %08lX: già in ultikey_table\n"
 
-#: g10/trustdb.c:408
+#: g10/trustdb.c:491
 #, c-format
 msgid "enum_secret_keys failed: %s\n"
 msgstr "enum_secret_keys fallito: %s\n"
 
-#: g10/trustdb.c:913
+#: g10/trustdb.c:964
 #, fuzzy, c-format
 msgid "key %08lX.%lu, uid %02X%02X: no public key for signature %08lX\n"
 msgstr "chiave %08lX: nessun user id per la firma\n"
 
-#: g10/trustdb.c:920
+#: g10/trustdb.c:971
 #, fuzzy, c-format
 msgid "key %08lX.%lu, uid %02X%02X: invalid %ssignature: %s\n"
 msgstr "chiave %08lX: autofirma non valida\n"
 
-#: g10/trustdb.c:1624
+#: g10/trustdb.c:1658
 #, c-format
 msgid "key %08lX: insert trust record failed: %s\n"
 msgstr "chiave %08lX: inserimento del record della fiducia fallito: %s\n"
 
-#: g10/trustdb.c:1628
+#: g10/trustdb.c:1662
 #, c-format
 msgid "key %08lX.%lu: inserted into trustdb\n"
 msgstr "chiave %08lX.%lu: inserita nel trustdb\n"
 
-#: g10/trustdb.c:1639
+#: g10/trustdb.c:1670
 #, c-format
 msgid "key %08lX.%lu: created in future (time warp or clock problem)\n"
 msgstr ""
 "chiave %08lX.%lu: creata nel futuro (salto nel tempo o problema\n"
 "con l'orologio)\n"
 
-#: g10/trustdb.c:1647
+#: g10/trustdb.c:1678
 #, c-format
 msgid "key %08lX.%lu: expired at %s\n"
 msgstr "chiave %08lX.%lu: scaduta il %s\n"
 
-#: g10/trustdb.c:1656
+#: g10/trustdb.c:1687
 #, c-format
 msgid "key %08lX.%lu: trust check failed: %s\n"
 msgstr "chiave %08lX.%lu: controllo della fiducia fallito: %s\n"
@@ -1932,5 +2141,5 @@ msgstr ""
 "Impossibile evitare una chiave debole per il cifrario simmetrico;\n"
 "ho provato %d volte!\n"
 
-#~ msgid "can't write keyring\n"
-#~ msgstr "impossibile scrivere il portachiavi\n"
+#~ msgid "error reading sigrec: %s\n"
+#~ msgstr "errore leggendo la sigrec: %s\n"