See ChangeLog: Tue May 25 19:50:32 CEST 1999 Werner Koch
authorWerner Koch <wk@gnupg.org>
Tue, 25 May 1999 17:56:15 +0000 (17:56 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 25 May 1999 17:56:15 +0000 (17:56 +0000)
17 files changed:
ChangeLog
NEWS
TODO
VERSION
configure.in
doc/gpg.1pod
g10/ChangeLog
g10/build-packet.c
g10/g10.c
g10/mainproc.c
g10/options.h
g10/parse-packet.c
g10/sign.c
include/util.h
po/ChangeLog
po/fr.po
util/miscutil.c

index 27b1b16..1b62f4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 25 19:50:32 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
+
+       * configure.in (IS_DEVELOPMENT_VERSION): Fixed detection.
+
 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
 
        * acinclude.m4 (GNUPG_SYS_SYMBOL_UNDERSCORE): assume yes when
diff --git a/NEWS b/NEWS
index 3ededaf..f00baca 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+
+    * New option -N to insert notations
+
+
+
+
 Noteworthy changes in version 0.9.7
 -----------------------------------
 
diff --git a/TODO b/TODO
index df6a958..32143b4 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,10 @@
 
+  * gppm links in doc und bin sind inkonsistent
+
+  * remove signature:
+Got an idea:  just specify the keyid of the signature - this can be
+done quite easily.
+
   * add some status output put for signing and encryption.
     replace the putc in primegen with some kind of status-fd outputs.
 
diff --git a/VERSION b/VERSION
index c81aa44..13e3d74 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.9.7
+0.9.7a
index dbcffd6..a67516c 100644 (file)
@@ -494,7 +494,10 @@ fi
 fi
 AC_SUBST(ZLIBS)
 
-if echo "$VERSION" | grep '[a-zA-Z]' >/dev/null ; then
+changequote(,)dnl
+tmp_pat='[a-zA-Z]'
+changequote([,])dnl
+if echo "$VERSION" | grep $tmp_pat >/dev/null ; then
     AC_DEFINE(IS_DEVELOPMENT_VERSION)
 fi
 
index d679199..3844977 100644 (file)
@@ -390,6 +390,13 @@ B<--no-comment>
 B<--comment> I<string>
     Use I<string> as comment string in clear text signatures.
 
+B<--notation-data>, B<-N> I<name>=<value>
+    Put the name value pair into the signature as notation data.
+    I<name> Must consists only of alphanumeric characters, digits
+    or the underscore; the first character muts not be a digit.
+    B<value> May be any printable string; it will encoded in UTF8,
+    so sou should have check that your B<--charset> is set right.
+
 B<--set-filename> I<string>
     Use I<string> as the name of file which is stored in
     messages.
index 7d46c88..ecf7a68 100644 (file)
@@ -1,3 +1,16 @@
+Tue May 25 19:50:32 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
+
+       * sign.c (sign_file): Always use compression algo 1 for signed
+       onyl file becuase we can´ be sure the the verifier supports other
+       algorithms.
+
+       * build-packet.c (build_sig_subpkt): Support for notation data.
+       * sign.c (sign_file,clearsign_file,make_keysig_packet): Ditto.
+       (mk_notation): New.
+       * g10.c (add_notation_data): New and add option -N
+       * mainproc.c (print_notation_data): New.
+       (check_sig_and_print): Print any notation data of the signed text.
+
 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
 
        * pkclist.c (check_signatures_trust): Print a warning and return
index f907903..0db12a7 100644 (file)
@@ -646,6 +646,7 @@ build_sig_subpkt( PKT_signature *sig, sigsubpkttype_t type,
       case SIGSUBPKT_PREF_COMPR:
       case SIGSUBPKT_KS_FLAGS:
       case SIGSUBPKT_KEY_EXPIRE:
+      case SIGSUBPKT_NOTATION:
               hashed = 1; break;
       default: hashed = 0; break;
     }
index 34e0da3..d0635d6 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -63,6 +63,7 @@ enum cmd_and_opt_values { aNull = 0,
     oUser        = 'u',
     oVerbose     = 'v',
     oCompress    = 'z',
+    oNotation    = 'N',
     oBatch       = 500,
     aClearsign,
     aStore,
@@ -254,6 +255,7 @@ static ARGPARSE_OPTS opts[] = {
     { oDigestAlgo, "digest-algo", 2 , N_("|NAME|use message digest algorithm NAME")},
     { oCompressAlgo, "compress-algo", 1 , N_("|N|use compress algorithm N")},
     { oThrowKeyid, "throw-keyid", 0, N_("throw keyid field of encrypted packets")},
+    { oNotation,   "notation-data", 2, N_("|NAME=VALUE|use this notation data")},
 
     { 302, NULL, 0, N_("@\nExamples:\n\n"
     " -se -r Bob [file]          sign and encrypt for user Bob\n"
@@ -312,6 +314,7 @@ static void set_cmd( enum cmd_and_opt_values *ret_cmd,
                        enum cmd_and_opt_values new_cmd );
 static void print_hex( byte *p, size_t n );
 static void print_mds( const char *fname, int algo );
+static void add_notation_data( const char *string );
 
 const char *
 strusage( int level )
@@ -741,6 +744,7 @@ main( int argc, char **argv )
          case oEscapeFrom: opt.escape_from = 1; break;
          case oLockOnce: opt.lock_once = 1; break;
          case oKeyServer: opt.keyserver_name = pargs.r.ret_str; break;
+         case oNotation: add_notation_data( pargs.r.ret_str ); break;
 
          default : pargs.err = configfp? 1:2; break;
        }
@@ -1382,3 +1386,53 @@ print_mds( const char *fname, int algo )
        fclose(fp);
 }
 
+
+/****************
+ * Check the supplied name,value string and add it to the notation
+ * data to be used for signatures.
+ */
+static void
+add_notation_data( const char *string )
+{
+    const char *s = string;
+    const char *s2;
+    int highbit=0;
+
+    if( !*s || (*s & 0x80) || (!isalpha(*s) && *s != '_') ) {
+       log_error(_("the first character of a notation name "
+                   "must be a letter or an underscore\n") );
+       return;
+    }
+    for(s++; *s != '='; s++ ) {
+       if( !*s || (*s & 0x80) || (!isalnum(*s) && *s != '_' && *s != '.' ) ) {
+           log_error(_("a notation name must have only letters, "
+                       "digits, dots or underscores and end with an '='\n") );
+           return;
+       }
+    }
+    if( s[-1] == '.' || ((s2=strstr(string, "..")) && s2 < s ) ) {
+       log_error(_("dots in a notation name must be surrounded "
+                   "by other characters\n") );
+       return;
+    }
+    /* we do only support printabe text - therefore we enforce the use
+     * of only printable characters (an empty value is valid) */
+    for( s++; *s ; s++ ) {
+       if( iscntrl(*s) ) {
+           log_error(_("a notation value must not use "
+                       "any control characters\n") );
+           return;
+       }
+       else if( *s & 0x80 )
+           highbit = 1;
+    }
+
+    if( highbit ) {  /* must use UTF8 encoding */
+       char *p = native_to_utf8( string );
+       add_to_strlist( &opt.notation_data, p );
+       m_free( p );
+    }
+    else
+       add_to_strlist( &opt.notation_data, string );
+}
+
index 6d16d62..6eb587f 100644 (file)
@@ -492,6 +492,35 @@ print_fingerprint( PKT_public_key *pk, PKT_secret_key *sk )
     putchar('\n');
 }
 
+static void
+print_notation_data( PKT_signature *sig )
+{
+    size_t n, n1, n2;
+    const byte *p;
+
+    /* FIXME: we can not handle multiple notaion data packets yet */
+    p = parse_sig_subpkt( sig->hashed_data, SIGSUBPKT_NOTATION, &n );
+    if( !p )
+       return;
+    if( n < 8 ) {
+       log_info(_("WARNING: invalid notation data found\n"));
+       return;
+    }
+    if( !(*p & 0x80) )
+       return; /* not human readable */
+    n1 = (p[4] << 8) | p[5];
+    n2 = (p[6] << 8) | p[7];
+    p += 8;
+    if( 8+n1+n2 != n ) {
+       log_info(_("WARNING: invalid notation data found\n"));
+       return;
+    }
+    log_info(_("Notation: ") );
+    print_string( log_stream(), p, n1, 0 );
+    putc( '=', log_stream() );
+    print_string( log_stream(), p+n1, n2, 0 );
+    putc( '\n', log_stream() );
+}
 
 /****************
  * List the certificate in a user friendly way
@@ -935,7 +964,8 @@ check_sig_and_print( CTX c, KBNODE node )
            fputs("[?]\"\n", log_stream() );
        }
        release_kbnode( keyblock );
-
+       if( !rc )
+           print_notation_data( sig );
 
        if( !rc && is_status_enabled() ) {
            /* print a status response with the fingerprint */
index 3e81044..8d3b3c6 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef G10_OPTIONS_H
 #define G10_OPTIONS_H
 
+#include <types.h>
 
 #undef ENABLE_COMMENT_PACKETS  /* don't create comment packets */
 
@@ -73,6 +74,7 @@ struct {
     const char *keyserver_name;
     int no_encrypt_to;
     int interactive;
+    STRLIST notation_data;
 } opt;
 
 
index 47d28e3..7d5958a 100644 (file)
@@ -745,7 +745,28 @@ dump_sig_subpkt( int hashed, int type, int critical,
                      (ulong)buffer_to_u32(buffer+4) );
        break;
       case SIGSUBPKT_NOTATION:
-       p = "notation data";
+       {
+           fputs("notation: ", stdout );
+           if( length < 8 )
+               p = "[too short]";
+           else if( !(*buffer & 0x80) )
+               p = "[not human readable]";
+           else {
+               const byte *s = buffer;
+               size_t n1, n2;
+
+               n1 = (s[4] << 8) | s[5];
+               n2 = (s[6] << 8) | s[7];
+               s += 8;
+               if( 8+n1+n2 != length )
+                   p = "[error]";
+               else {
+                   print_string( stdout, s, n1, 0 );
+                   putc( '=', stdout );
+                   print_string( stdout, s+n1, n2, 0 );
+               }
+           }
+       }
        break;
       case SIGSUBPKT_PREF_HASH:
        fputs("pref-hash-algos:", stdout );
@@ -808,6 +829,10 @@ parse_one_sig_subpkt( const byte *buffer, size_t n, int type )
        if( n < 8 )
            break;
        return 0;
+      case SIGSUBPKT_NOTATION:
+       if( n < 8 ) /* minimum length needed */
+           break;
+       return 0;
       case SIGSUBPKT_PREF_SYM:
       case SIGSUBPKT_PREF_HASH:
       case SIGSUBPKT_PREF_COMPR:
index a74ee86..e62bbba 100644 (file)
 #include "i18n.h"
 
 
+
+/****************
+ * Create a notation.  It is assumed that the stings in STRLIST
+ * are already checked to contain only printable data and have a valid
+ * NAME=VALUE format.
+ */
+static void
+mk_notation( PKT_signature *sig, STRLIST nd )
+{
+    const char *string, *s;
+    byte *buf;
+    unsigned n1, n2;
+
+    if( sig->version < 4 ) {
+       log_info("can't put notation data into v3 signatures\n");
+       return;
+    }
+
+    for( ; nd; nd = nd->next ) {
+       string = nd->d;
+       s = strchr( string, '=' );
+       if( !s )
+           BUG(); /* we have already parsed this */
+       n1 = s - string;
+       s++;
+       n2 = strlen(s);
+       buf = m_alloc( 8 + n1 + n2 );
+       buf[0] = 0x80; /* human readable */
+       buf[1] = buf[2] = buf[3] = 0;
+       buf[4] = n1 >> 8;
+       buf[5] = n1;
+       buf[6] = n2 >> 8;
+       buf[7] = n2;
+       memcpy(buf+8, string, n1 );
+       memcpy(buf+8+n1, s, n2 );
+       build_sig_subpkt( sig, SIGSUBPKT_NOTATION, buf, 8+n1+n2 );
+    }
+}
+
+
 static int
 do_sign( PKT_secret_key *sk, PKT_signature *sig,
         MD_HANDLE md, int digest_algo )
@@ -253,8 +293,10 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
        if( !compr_algo )
            ; /* don't use compression */
        else {
-           if( old_style || compr_algo == 1 )
-               zfx.algo = 1;
+           if( old_style
+               || compr_algo == 1
+               || (compr_algo == -1 && !encrypt) )
+               zfx.algo = 1; /* use the non optional algorithm */
            iobuf_push_filter( out, compress_filter, &zfx );
        }
     }
@@ -392,6 +434,10 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
            build_sig_subpkt_from_sig( sig );
            md_putc( md, sig->version );
        }
+
+       if( opt.notation_data )
+            mk_notation( sig, opt.notation_data );
+
        md_putc( md, sig->sig_class );
        if( sig->version < 4 ) {
            u32 a = sig->timestamp;
@@ -578,6 +624,10 @@ clearsign_file( const char *fname, STRLIST locusr, const char *outfile )
            build_sig_subpkt_from_sig( sig );
            md_putc( md, sig->version );
        }
+
+       if( opt.notation_data )
+            mk_notation( sig, opt.notation_data );
+
        md_putc( md, sig->sig_class );
        if( sig->version < 4 ) {
            u32 a = sig->timestamp;
@@ -706,6 +756,8 @@ make_keysig_packet( PKT_signature **ret_sig, PKT_public_key *pk,
        rc = (*mksubpkt)( sig, opaque );
 
     if( !rc ) {
+       if( opt.notation_data )
+            mk_notation( sig, opt.notation_data );
        if( sig->version >= 4 )
            md_putc( md, sig->version );
        md_putc( md, sig->sig_class );
index 35cc8fe..f62f34d 100644 (file)
@@ -152,7 +152,7 @@ u32 add_days_to_timestamp( u32 stamp, u16 days );
 const char *strtimevalue( u32 stamp );
 const char *strtimestamp( u32 stamp ); /* GMT */
 const char *asctimestamp( u32 stamp ); /* localized */
-void print_string( FILE *fp, byte *p, size_t n, int delim );
+void print_string( FILE *fp, const byte *p, size_t n, int delim );
 int answer_is_yes( const char *s );
 
 /*-- strgutil.c --*/
index 0f1ecea..b7f63fa 100644 (file)
@@ -1,3 +1,7 @@
+Tue May 25 19:50:32 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
+
+       * fr.po: Imported new version.
+
 Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
 
        * de.po, de.glo:  New version from Walter.
index 8543825..105f46b 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,11 +4,11 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gnupg 0.9.4a\n"
-"POT-Creation-Date: 1999-05-23 15:36+0200\n"
-"PO-Revision-Date: 1999-03-20 20:09+01:00\n"
+"Project-Id-Version: gnupg 0.9.7\n"
+"POT-Creation-Date: 1999-05-24 20:18+0200\n"
+"PO-Revision-Date: 1999-05-24 21:48+02:00\n"
 "Last-Translator: Gaël Quéri <gqueri@mail.dotcom.fr>\n"
-"Language-Team: French <fr@li.org>\n"
+"Language-Team: French <traduc@Linux.EU.ORG>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -224,9 +224,8 @@ msgid "network error"
 msgstr "erreur de réseau"
 
 #: util/errors.c:102
-#, fuzzy
 msgid "not encrypted"
-msgstr "données chiffrées avec %s\n"
+msgstr "non chiffré"
 
 #: util/logger.c:218
 #, c-format
@@ -353,9 +352,8 @@ msgid "export keys to a key server"
 msgstr "exporter les clés vers un serveur de clés"
 
 #: g10/g10.c:187
-#, fuzzy
 msgid "import keys from a key server"
-msgstr "exporter les clés vers un serveur de clés"
+msgstr "importer les clés d'un serveur de clés"
 
 #: g10/g10.c:190
 msgid "import/merge keys"
@@ -414,7 +412,7 @@ msgstr ""
 
 #: g10/g10.c:213
 msgid "create ascii armored output"
-msgstr "créer une sortie ascii armurée"
+msgstr "créer une sortie ascii avec armure"
 
 #: g10/g10.c:214
 msgid "|NAME|encrypt for NAME"
@@ -430,7 +428,7 @@ msgstr "|N|niveau de compression N (0 d
 
 #: g10/g10.c:221
 msgid "use canonical text mode"
-msgstr "utiliser le mode de texte canonique"
+msgstr "utiliser le mode texte canonique"
 
 #: g10/g10.c:222
 msgid "use as output file"
@@ -451,7 +449,7 @@ msgstr "forcer les signatures en v3"
 
 #: g10/g10.c:226
 msgid "always use a MDC for encryption"
-msgstr ""
+msgstr "toujours utiliser un sceau pour le chiffrement"
 
 #: g10/g10.c:227
 msgid "do not make any changes"
@@ -512,11 +510,11 @@ msgstr "ne pas 
 
 #: g10/g10.c:243
 msgid "(default is 1)"
-msgstr "(1 par défaut)"
+msgstr "nombre de signatures complètes requises (1)"
 
 #: g10/g10.c:244
 msgid "(default is 3)"
-msgstr "(3 par défaut)"
+msgstr "nombre de signatures marginales requises (3)"
 
 #: g10/g10.c:246
 msgid "|FILE|load extension module FILE"
@@ -805,7 +803,7 @@ msgstr "erreur dans la ligne de remorque\n"
 
 #: g10/armor.c:1001
 msgid "no valid OpenPGP data found.\n"
-msgstr "aucune de donnée OpenPGP valide n'a été trouvée.\n"
+msgstr "aucune donnée OpenPGP valide n'a été trouvée.\n"
 
 #: g10/armor.c:1005
 #, c-format
@@ -840,15 +838,17 @@ msgid ""
 " 4 = I trust fully\n"
 " s = please show me more information\n"
 msgstr ""
-"Décidez à quel point vous avez confiance en cet utilisateur pour vérifier\n"
-"correctement les clés des autres utilisateurs (en regardant des passeports,\n"
-"en vérifiant les empreintes de diverses sources...)?\n"
+"À quel point avez-vous confiance en cet utilisateur pour vérifier "
+"correctement\n"
+"les clés des autres utilisateurs (vous pouvez vérifier son passeport, "
+"vérifier\n"
+"les empreintes de diverses sources...) ?\n"
 "\n"
 " 1 = je ne sais pas\n"
 " 2 = je ne lui fais pas confiance\n"
 " 3 = je le crois marginalement\n"
 " 4 = je le crois totalement\n"
-" s = montrez moi plus d'informations\n"
+" s = montrez-moi plus d'informations\n"
 
 #: g10/pkclist.c:156
 msgid " m = back to the main menu\n"
@@ -914,9 +914,9 @@ msgid "Use this key anyway? "
 msgstr "Utiliser cette clé quand-même ? "
 
 #: g10/pkclist.c:291
-#, fuzzy, c-format
+#, c-format
 msgid "key %08lX: subkey has been revoked!\n"
-msgstr "clé %08lX : la clé a été révoquée !\n"
+msgstr "clé %08lX : la sous-clé a été révoquée !\n"
 
 #: g10/pkclist.c:321
 #, c-format
@@ -976,9 +976,8 @@ msgid "         This could mean that the signature is forgery.\n"
 msgstr "         Cela pourrait signifier que la signature est fausse.\n"
 
 #: g10/pkclist.c:459
-#, fuzzy
 msgid "WARNING: This subkey has been revoked by its owner!\n"
-msgstr "ATTENTION : Cette clé à été révoquée par son propriétaire !\n"
+msgstr "ATTENTION : Cette sous-clé à été révoquée par son propriétaire !\n"
 
 #: g10/pkclist.c:480
 msgid "Note: This key has expired!\n"
@@ -1130,9 +1129,9 @@ msgstr "taille trop petite ; 768 est la plus petite valeur permise.\n"
 #. * you start a discussion with Marvin about this theme and then
 #. * do whatever you want.
 #: g10/keygen.c:466
-#, fuzzy, c-format
+#, c-format
 msgid "keysize too large; %d is largest value allowed.\n"
-msgstr "taille trop petite ; 768 est la plus petite valeur permise.\n"
+msgstr "taille trop importante ; %d est la plus grande valeur permise.\n"
 
 #: g10/keygen.c:471
 msgid ""
@@ -1232,7 +1231,7 @@ msgstr "Caract
 
 #: g10/keygen.c:612
 msgid "Name may not start with a digit\n"
-msgstr "Le nom ne doit pas commencer avec un chiffre\n"
+msgstr "Le nom ne doit pas commencer par un chiffre\n"
 
 #: g10/keygen.c:614
 msgid "Name must be at least 5 characters long\n"
@@ -1436,9 +1435,9 @@ msgstr ""
 "principale %08lX\n"
 
 #: g10/import.c:116
-#, fuzzy, c-format
+#, c-format
 msgid "can't open `%s': %s\n"
-msgstr "ne peut ouvrir %s: %s\n"
+msgstr "impossible d'ouvrir `%s': %s\n"
 
 #: g10/import.c:160
 #, c-format
@@ -1451,9 +1450,9 @@ msgid "%lu keys so far processed\n"
 msgstr "%lu clés traitées jusqu'ici\n"
 
 #: g10/import.c:172
-#, fuzzy, c-format
+#, c-format
 msgid "error reading `%s': %s\n"
-msgstr "erreur pendant la création du mot de passe : %s\n"
+msgstr "erreur pendant la lecture de `%s' : %s\n"
 
 #: g10/import.c:175
 #, c-format
@@ -1539,14 +1538,12 @@ msgid "writing to `%s'\n"
 msgstr "écriture de `%s'\n"
 
 #: g10/import.c:379 g10/import.c:435
-#, fuzzy
 msgid "can't lock keyring `%': %s\n"
-msgstr "ne peut verrouiller le porte-clés public : %s\n"
+msgstr "ne peut verrouiller le porte-clés `%' : %s\n"
 
 #: g10/import.c:382
-#, fuzzy
 msgid "error writing keyring `%': %s\n"
-msgstr "%s : erreur pendant l'écriture de l'enregistrement de version : %s\n"
+msgstr "erreur durant la lecture du porte-clés `%' : %s\n"
 
 #: g10/import.c:387
 #, c-format
@@ -1569,9 +1566,9 @@ msgid "key %08lX: can't read original keyblock: %s\n"
 msgstr "clé %08lX : ne peut lire le bloc de clés original : %s\n"
 
 #: g10/import.c:438 g10/import.c:547 g10/import.c:648
-#, fuzzy, c-format
+#, c-format
 msgid "error writing keyring `%s': %s\n"
-msgstr "%s : erreur pendant l'écriture de l'enregistrement de version : %s\n"
+msgstr "erreur durant l'écriture du porte-clés `%s' : %s\n"
 
 #: g10/import.c:444
 #, c-format
@@ -1609,9 +1606,9 @@ msgid "key %08lX: not changed\n"
 msgstr "clé %08lX : n'a pas changé\n"
 
 #: g10/import.c:544 g10/import.c:645
-#, fuzzy, c-format
+#, c-format
 msgid "can't lock keyring `%s': %s\n"
-msgstr "ne peut verrouiller le porte-clés public : %s\n"
+msgstr "ne peut verrouiller le porte-clés `%s' : %s\n"
 
 #: g10/import.c:552
 #, c-format
@@ -1703,7 +1700,7 @@ msgstr "cl
 #: g10/import.c:915
 #, c-format
 msgid "key %08lX: duplicated user ID detected - merged\n"
-msgstr ""
+msgstr "clé %08lX: nom d'utilisateur doublon fusionné\n"
 
 #: g10/import.c:966
 #, c-format
@@ -1722,7 +1719,7 @@ msgstr "%s : utilisateur non trouv
 
 #: g10/keyedit.c:177
 msgid "[revocation]"
-msgstr ""
+msgstr "[révocation]"
 
 #: g10/keyedit.c:178
 msgid "[self-signature]"
@@ -2016,29 +2013,25 @@ msgid "change the ownertrust"
 msgstr "changer la confiance"
 
 #: g10/keyedit.c:564
-#, fuzzy
 msgid "revsig"
-msgstr "signer"
+msgstr "revsig"
 
 #
 #: g10/keyedit.c:564
-#, fuzzy
 msgid "revoke signatures"
-msgstr "forcer les signatures en v3"
+msgstr "révoquer les signatures"
 
 #: g10/keyedit.c:565
-#, fuzzy
 msgid "revkey"
-msgstr "clé"
+msgstr "revclé"
 
 #: g10/keyedit.c:565
-#, fuzzy
 msgid "revoke a secondary key"
-msgstr "enlever une clé secondaire"
+msgstr "révoquer une clé secondaire"
 
 #: g10/keyedit.c:584
 msgid "can't do that in batchmode\n"
-msgstr "ne peut faire cela en mode automatique\n"
+msgstr "impossible de faire cela en mode automatique\n"
 
 #. check that they match
 #. FIXME: check that they both match
@@ -2118,14 +2111,12 @@ msgid "Do you really want to delete this key? "
 msgstr "Voulez-vous vraiment supprimer cette clé ? "
 
 #: g10/keyedit.c:846
-#, fuzzy
 msgid "Do you really want to revoke the selected keys? "
-msgstr "Voulez-vous vraiment supprimer les clés sélectionnées ? "
+msgstr "Voulez-vous vraiment révoquer les clés sélectionnées ? "
 
 #: g10/keyedit.c:847
-#, fuzzy
 msgid "Do you really want to revoke this key? "
-msgstr "Voulez-vous vraiment supprimer cette clé ? "
+msgstr "Voulez-vous vraiment révoquer cette clé ? "
 
 #: g10/keyedit.c:901
 msgid "Invalid command  (try \"help\")\n"
@@ -2166,31 +2157,29 @@ msgid "No secondary key with index %d\n"
 msgstr "Pas de clé secondaire avec l'index %d\n"
 
 #: g10/keyedit.c:1566
-#, fuzzy
 msgid "user ID: \""
-msgstr "Entrez le nom d'utilisateur : "
+msgstr "nom d'utilisateur : « "
 
 #: g10/keyedit.c:1569
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\"\n"
 "signed with your key %08lX at %s\n"
-msgstr "Rien à signer avec la clé %08lX\n"
+msgstr ""
+" »\n"
+"signé avec votre clé %08lX à %s\n"
 
 #: g10/keyedit.c:1573
-#, fuzzy
 msgid "Create a revocation certificate for this signature? (y/N)"
-msgstr "générer un certificat de révocation"
+msgstr "Générer un certificat de révocation pour cette signature ? (o/N)"
 
 #: g10/keyedit.c:1653
-#, fuzzy
 msgid "Really create the revocation certificates? (y/N)"
-msgstr "générer un certificat de révocation"
+msgstr "Faut-il vraiment générer les certificats de révocation ? (o/N)"
 
 #: g10/keyedit.c:1676
-#, fuzzy
 msgid "no secret key\n"
-msgstr "mauvaise clé secrète"
+msgstr "pas de clé secrète\n"
 
 #: g10/mainproc.c:184
 #, c-format
@@ -2216,7 +2205,7 @@ msgstr "le d
 
 #: g10/mainproc.c:252
 msgid "WARNING: encrypted message has been manipulated!\n"
-msgstr ""
+msgstr "ATTENTION: le message chiffré a été manipulé !\n"
 
 #: g10/mainproc.c:257
 #, c-format
@@ -2385,11 +2374,8 @@ msgid "WARNING: Weak key detected - please change passphrase again.\n"
 msgstr "ATTENTION : Clé faible détectée - changez encore le mot de passe.\n"
 
 #: g10/sig-check.c:187
-#, fuzzy
 msgid "assuming bad MDC due to an unknown critical bit\n"
-msgstr ""
-"la signature est supposée être fausse car un bit critique est\n"
-"inconnu\n"
+msgstr "le sceau (MDC) est supposé être faux car un bit critique est inconnu\n"
 
 #: g10/sig-check.c:283
 msgid ""
@@ -3257,46 +3243,3 @@ msgstr "Pas d'aide disponible"
 #, c-format
 msgid "No help available for `%s'"
 msgstr "Pas d'aide disponible pour `%s'"
-
-#~ msgid "can't open file: %s\n"
-#~ msgstr "ne peut ouvrir le fichier : %s\n"
-
-#~ msgid "read error: %s\n"
-#~ msgstr "erreur de lecture : %s\n"
-
-#~ msgid "can't write to keyring: %s\n"
-#~ msgstr "ne peut écrire le porte-clés : %s\n"
-
-#~ msgid "writing keyblock\n"
-#~ msgstr "écriture du bloc de clés\n"
-
-#~ msgid "can't write keyblock: %s\n"
-#~ msgstr "ne peut écrire le bloc de clés : %s\n"
-
-#~ msgid "can't lock secret keyring: %s\n"
-#~ msgstr "ne peut verrouiller le porte-clés secret : %s\n"
-
-#~ msgid "can't write keyring: %s\n"
-#~ msgstr "ne peut écrire le porte-clés : %s\n"
-
-#, fuzzy
-#~ msgid "encrypted message is valid\n"
-#~ msgstr "la fonction de hachage sélectionnée est invalide\n"
-
-#, fuzzy
-#~ msgid "Can't check MDC: %s\n"
-#~ msgstr "Ne peut vérifier la signature : %s\n"
-
-#~ msgid "Usage: gpgm [options] [files] (-h for help)"
-#~ msgstr "Utilisation: gpgm [options] [fichiers] (-h pour l'aide)"
-
-#
-#~ msgid ""
-#~ "Syntax: gpgm [options] [files]\n"
-#~ "GnuPG maintenance utility\n"
-#~ msgstr ""
-#~ "Syntaxe: gpgm [options] [fichiers]\n"
-#~ "utilitaire de maitenance de GnuPG\n"
-
-#~ msgid "usage: gpgm [options] "
-#~ msgstr "utilisation: gpgm [options] "
index a1d480f..d902ae4 100644 (file)
@@ -125,7 +125,7 @@ asctimestamp( u32 stamp )
  * Print a string to FP, but filter all control characters out.
  */
 void
-print_string( FILE *fp, byte *p, size_t n, int delim )
+print_string( FILE *fp, const byte *p, size_t n, int delim )
 {
     for( ; n; n--, p++ )
        if( iscntrl( *p ) || *p == delim ) {