From 7a7a5630aff7f539fd68de6c34d82a0fa240cc8c Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 14 Dec 1998 20:22:42 +0000 Subject: [PATCH] See ChangeLog: Mon Dec 14 21:18:49 CET 1998 Werner Koch --- PROJECTS | 7 + THANKS | 7 +- TODO | 13 +- cipher/ChangeLog | 10 + cipher/dynload.c | 10 +- cipher/dynload.h | 5 +- cipher/random.c | 60 ++-- cipher/rndlinux.c | 27 +- cipher/rndunix.c | 64 ++-- doc/OpenPGP | 13 +- doc/gpg.1pod | 9 +- g10/ChangeLog | 7 + g10/helptext.c | 5 +- g10/options.skel | 13 +- g10/packet.h | 1 + g10/parse-packet.c | 134 +++++--- g10/sig-check.c | 4 + include/ChangeLog | 4 + include/types.h | 2 +- po/ChangeLog | 4 + po/de.po | 767 ++++++++++++++++++++++++--------------------- 21 files changed, 642 insertions(+), 524 deletions(-) diff --git a/PROJECTS b/PROJECTS index 827054e2a..d5b1eb123 100644 --- a/PROJECTS +++ b/PROJECTS @@ -2,6 +2,7 @@ * Check if an object (a message, detached sign, public key, or whatever) is signed by definite user, i.e. define user (userid, or any other unique identification) on command line. + --> NO: Use a script and --status-fd * Change the internal represention of keyid into a struct which can also hold the localid and extend the localid to hold information @@ -27,3 +28,9 @@ * Split key support (n-out-of-m) + * Check Berkeley BD - it is in glibc - any licensing problems? + + * add an option to re-create a public key from a secret key; we + can do this in trustdb.c:verify_own_keys. + (special tool?) + diff --git a/THANKS b/THANKS index 61116a64a..460b39780 100644 --- a/THANKS +++ b/THANKS @@ -35,6 +35,7 @@ James Troup james@nocrew.org Jean-loup Gailly gzip@prep.ai.mit.edu Jens Bachem bachem@rrz.uni-koeln.de John A. Martin jam@jamux.com +Johnny Teveßen j.tevessen@gmx.de Jörg Schilling schilling@fokus.gmd.de Jun Kuriyama kuriyama@sky.rim.or.jp Karl Fogel kfogel@guanabana.onshore.com @@ -66,6 +67,7 @@ SL Baur steve@xemacs.org Stefan Karrmann S.Karrmann@gmx.net Steffen Ullrich ccrlphr@xensei.com Steffen Zahn zahn@berlin.snafu.de +Susanne Schultz schultz@hsp.de Thiago Jung Bauermann jungmann@usa.net Thomas Roessler roessler@guug.de Tom Spindler dogcow@home.merit.edu @@ -79,8 +81,9 @@ Werner Koch werner.koch@guug.de Wim Vandeputte bunbun@reptile.rug.ac.be nbecker@hns.com -Thanks to the German Unix User Group for providing FTP space and -Martin Hamilton for hosting the mailing list. +Thanks to the German Unix User Group for providing FTP space, +Martin Hamilton for hosting the mailing list and hsp for +hosting gnupg.org. Many thanks to my wife Gerlinde for having so much patience with me while hacking late in the evening. diff --git a/TODO b/TODO index caa080c67..168c8b7f1 100644 --- a/TODO +++ b/TODO @@ -6,8 +6,6 @@ * preferences of hash algorithms are not yet used. - * Check Berkeley BD - it is in glibc - any licensing problems? - * I noticed, that we sometimes have only 3 items in a trustrecord, but a next pointer ro more records - check wehther the reuse code really works. Maybe this is the reason for the "Hmmm public key lost" @@ -17,9 +15,6 @@ * should we flush the getkey.c caches while doing an import? - * The critical bit of signature subpackets is not yet supported; i.e. - it is ignored. - * We need a maintainence pass over the trustdb which flags signatures as expired if the key used to make the signature has expired. Maybe it is a good idea to store the exiration time @@ -44,13 +39,9 @@ * add checking of armor trailers * remove all "Fixmes" ;-) - * add an option to re-create a public key from a secret key; we - can do this in trustdb.c:verify_own_keys. - (special tool?) - * change the fake_data stuff to mpi_set_opaque - * Use "user ID", "trustdb", "NOTE" and "WARNING". - * Replace Blowfish by Twofish + * Work on the library + diff --git a/cipher/ChangeLog b/cipher/ChangeLog index 2874426f7..08d27bce6 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,13 @@ +Mon Dec 14 21:18:49 CET 1998 Werner Koch + + * random.c (read_random_source): Changed the interface to the + random gathering function. + (gather_faked): Use new interface. + * dynload.c (dynload_getfnc_fast_random_poll): Ditto. + (dynload_getfnc_gather_random): Ditto. + * rndlinux.c (gather_random): Ditto. + * rndunix.c (gather_random): Ditto. + Sat Dec 12 18:40:32 CET 1998 Werner Koch * dynload.c (SYMBOL_VERSION): New to cope with system which needs diff --git a/cipher/dynload.c b/cipher/dynload.c index 563f791f2..abef2da52 100644 --- a/cipher/dynload.c +++ b/cipher/dynload.c @@ -506,7 +506,8 @@ enum_gnupgext_pubkeys( void **enum_context, int *algo, int (* -dynload_getfnc_gather_random())(byte*, size_t*, int) +dynload_getfnc_gather_random())(void (*)(const void*, size_t, int), int, + size_t, int) { EXTLIST r; void *sym; @@ -522,7 +523,8 @@ dynload_getfnc_gather_random())(byte*, size_t*, int) while( (sym = (*r->enumfunc)(40, &seq, &class, &vers)) ) { if( vers != 1 || class != 40 ) continue; - return (int (*)(byte*, size_t*, int))sym; + return (int (*)(void (*)(const void*, size_t, int), int, + size_t, int))sym; } } return NULL; @@ -530,7 +532,7 @@ dynload_getfnc_gather_random())(byte*, size_t*, int) void (* -dynload_getfnc_fast_random_poll())( void (*)(const void*, size_t, int)) +dynload_getfnc_fast_random_poll())( void (*)(const void*, size_t, int), int) { EXTLIST r; void *sym; @@ -546,7 +548,7 @@ dynload_getfnc_fast_random_poll())( void (*)(const void*, size_t, int)) while( (sym = (*r->enumfunc)(41, &seq, &class, &vers)) ) { if( vers != 1 || class != 41 ) continue; - return (void (*)( void (*)(const void*, size_t, int)))sym; + return (void (*)( void (*)(const void*, size_t, int), int))sym; } } return NULL; diff --git a/cipher/dynload.h b/cipher/dynload.h index 5e88dc732..d107b5a0a 100644 --- a/cipher/dynload.h +++ b/cipher/dynload.h @@ -54,9 +54,10 @@ enum_gnupgext_pubkeys( void **enum_context, int *algo, unsigned (**get_nbits)( int algo, MPI *pkey ) ); -int (*dynload_getfnc_gather_random(void))(byte*, size_t*, int); +int (*dynload_getfnc_gather_random(void))( void (*)(const void*, size_t, int), + int, size_t, int); void (*dynload_getfnc_fast_random_poll(void) - )( void (*)(const void*, size_t, int)); + )( void (*)(const void*, size_t, int), int ); #endif /*G10_CIPHER_DYNLOAD_H*/ diff --git a/cipher/random.c b/cipher/random.c index 699f76994..c49cc6e08 100644 --- a/cipher/random.c +++ b/cipher/random.c @@ -94,8 +94,9 @@ static int faked_rng; static void read_pool( byte *buffer, size_t length, int level ); static void add_randomness( const void *buffer, size_t length, int source ); static void random_poll(void); -static void read_random_source( byte *buffer, size_t length, int level ); -static int gather_faked( byte *buffer, size_t *r_length, int level ); +static void read_random_source( int requester, size_t length, int level); +static int gather_faked( void (*add)(const void*, size_t, int), int requester, + size_t length, int level ); static void @@ -137,7 +138,7 @@ quick_random_gen( int onoff ) { int last; - read_random_source( NULL, 0, 0 ); /* load module */ + read_random_source(0,0,0); /* init */ last = quick_test; if( onoff != -1 ) quick_test = onoff; @@ -236,17 +237,13 @@ read_pool( byte *buffer, size_t length, int level ) /* for level 2 make sure that there is enough random in the pool */ if( level == 2 && pool_balance < length ) { size_t needed; - byte *p; if( pool_balance < 0 ) pool_balance = 0; needed = length - pool_balance; if( needed > POOLSIZE ) BUG(); - p = secure_alloc ? m_alloc_secure( needed ) : m_alloc(needed); - read_random_source( p, needed, 2 ); /* read /dev/random */ - add_randomness( p, needed, 3); - m_free(p); + read_random_source( 3, needed, 2 ); pool_balance += needed; } @@ -321,17 +318,14 @@ add_randomness( const void *buffer, size_t length, int source ) static void random_poll() { - char buf[POOLSIZE/5]; - read_random_source( buf, POOLSIZE/5, 1 ); - add_randomness( buf, POOLSIZE/5, 2); - memset( buf, 0, POOLSIZE/5); + read_random_source( 2, POOLSIZE/5, 1 ); } void fast_random_poll() { - static void (*fnc)( void (*)(const void*, size_t, int)) = NULL; + static void (*fnc)( void (*)(const void*, size_t, int), int) = NULL; static int initialized = 0; if( !initialized ) { @@ -341,7 +335,7 @@ fast_random_poll() fnc = dynload_getfnc_fast_random_poll(); } if( fnc ) { - (*fnc)( add_randomness ); + (*fnc)( add_randomness, 1 ); return; } @@ -377,9 +371,10 @@ fast_random_poll() static void -read_random_source( byte *buffer, size_t length, int level ) +read_random_source( int requester, size_t length, int level ) { - static int (*fnc)(byte*, size_t*, int) = NULL; + static int (*fnc)(void (*)(const void*, size_t, int), int, + size_t, int) = NULL; int nbytes; int goodness; @@ -391,24 +386,21 @@ read_random_source( byte *buffer, size_t length, int level ) faked_rng = 1; fnc = gather_faked; } + if( !requester && !length && !level ) + return; /* init only */ } - while( length ) { - nbytes = length; - goodness = (*fnc)( buffer, &nbytes, level ); - if( goodness < 0 ) - log_fatal("No way to gather entropy for the RNG\n"); - buffer +=nbytes; - length -= nbytes; - /* FIXME: how can we handle the goodness */ - } + if( (*fnc)( add_randomness, requester, length, level ) < 0 ) + log_fatal("No way to gather entropy for the RNG\n"); } static int -gather_faked( byte *buffer, size_t *r_length, int level ) +gather_faked( void (*add)(const void*, size_t, int), int requester, + size_t length, int level ) { static int initialized=0; - size_t length = *r_length; + size_t n; + char *buffer, *p; if( !initialized ) { log_info(_("WARNING: using insecure random number generator!!\n")); @@ -423,13 +415,17 @@ gather_faked( byte *buffer, size_t *r_length, int level ) #endif } + p = buffer = m_alloc( length ); + n = length; #ifdef HAVE_RAND - while( length-- ) - *buffer++ = ((unsigned)(1 + (int) (256.0*rand()/(RAND_MAX+1.0)))-1); + while( n-- ) + *p++ = ((unsigned)(1 + (int) (256.0*rand()/(RAND_MAX+1.0)))-1); #else - while( length-- ) - *buffer++ = ((unsigned)(1 + (int) (256.0*random()/(RAND_MAX+1.0)))-1); + while( n-- ) + *p++ = ((unsigned)(1 + (int) (256.0*random()/(RAND_MAX+1.0)))-1); #endif - return 100; /* We really fake it ;-) */ + add_randomness( buffer, length, requester ); + m_free(buffer); + return 0; /* okay */ } diff --git a/cipher/rndlinux.c b/cipher/rndlinux.c index b9376e8fe..66bb34e62 100644 --- a/cipher/rndlinux.c +++ b/cipher/rndlinux.c @@ -45,7 +45,8 @@ #endif static int open_device( const char *name, int minor ); -static int gather_random( byte *buffer, size_t *r_length, int level ); +static int gather_random( void (*add)(const void*, size_t, int), int requester, + size_t length, int level ); #ifdef IS_MODULE static void tty_printf(const char *fmt, ... ) @@ -81,15 +82,15 @@ open_device( const char *name, int minor ) static int -gather_random( byte *buffer, size_t *r_length, int level ) +gather_random( void (*add)(const void*, size_t, int), int requester, + size_t length, int level ) { static int fd_urandom = -1; static int fd_random = -1; int fd; int n; int warn=0; - size_t length = *r_length; - /* note: we will always return the requested length */ + byte buffer[768]; if( level >= 2 ) { if( fd_random == -1 ) @@ -101,7 +102,8 @@ gather_random( byte *buffer, size_t *r_length, int level ) fd_urandom = open_device( NAME_OF_DEV_URANDOM, 9 ); fd = fd_urandom; } - do { + + while( length ) { fd_set rfds; struct timeval tv; int rc; @@ -125,20 +127,21 @@ gather_random( byte *buffer, size_t *r_length, int level ) } do { - n = read(fd, buffer, length ); - if( n >= 0 && n > length ) { + int nbytes = length < sizeof(buffer)? length : sizeof(buffer); + n = read(fd, buffer, nbytes ); + if( n >= 0 && n > nbytes ) { g10_log_error("bogus read from random device (n=%d)\n", n ); - n = length; + n = nbytes; } } while( n == -1 && errno == EINTR ); if( n == -1 ) g10_log_fatal("read error on random device: %s\n", strerror(errno)); - assert( n <= length ); - buffer += n; + (*add)( buffer, n, requester ); length -= n; - } while( length ); + } + memset(buffer, 0, sizeof(buffer) ); - return 100; /* always 100% useful at the requested level */ + return 0; /* success */ } diff --git a/cipher/rndunix.c b/cipher/rndunix.c index 92e735689..a4d3bdb56 100644 --- a/cipher/rndunix.c +++ b/cipher/rndunix.c @@ -669,13 +669,13 @@ read_a_msg( int fd, GATHER_MSG *msg ) static int -gather_random( char *buffer, size_t *r_length, int level ) +gather_random( void (*add)(const void*, size_t, int), int requester, + size_t length, int level ) { static pid_t gatherer_pid = 0; static int pipedes[2]; GATHER_MSG msg; size_t n; - size_t length = *r_length; if( !gatherer_pid ) { /* time to start the gatherer process */ @@ -696,37 +696,45 @@ gather_random( char *buffer, size_t *r_length, int level ) } /* now read from the gatherer */ - if( read_a_msg( pipedes[0], &msg ) ) { - g10_log_error("reading from gatherer pipe failed: %s\n", - strerror(errno)); - return -1; - } + while( length ) { + int goodness; - n = msg.ndata; - if( n > length ) - n = length; - memcpy( buffer, msg.data, n ); + if( read_a_msg( pipedes[0], &msg ) ) { + g10_log_error("reading from gatherer pipe failed: %s\n", + strerror(errno)); + return -1; + } - *r_length = n; - if( level > 1 ) { - if( msg.usefulness > 30 ) - return 100; - else if ( msg.usefulness ) - return msg.usefulness * 100 / 30; + if( level > 1 ) { + if( msg.usefulness > 30 ) + goodness = 100; + else if ( msg.usefulness ) + goodness = msg.usefulness * 100 / 30; + else + goodness = 0; + } + else if( level ) { + if( msg.usefulness > 15 ) + goodness = 100; + else if ( msg.usefulness ) + goodness = msg.usefulness * 100 / 15; + else + goodness = 0; + } else - return 0; + goodness = 100; /* goodness of level 0 is always 100 % */ + + n = msg.ndata; + if( n > length ) + n = length; + (*add)( msg.data, n, requester ); + + /* this is the trick how e cope with the goodness */ + length -= (ulong)n * goodness / 100; } - else if( level ) { - if( msg.usefulness > 15 ) - return 100; - else if ( msg.usefulness ) - return msg.usefulness * 100 / 15; - else - return 0; - } - else - return 100; /* goodness of level 0 is always 100 % */ + + return 0; } diff --git a/doc/OpenPGP b/doc/OpenPGP index 60fede3e0..1ae4fedf8 100644 --- a/doc/OpenPGP +++ b/doc/OpenPGP @@ -8,14 +8,10 @@ Compatibility Notes =================== - GnuPG (>=0.4.1) is in compliance with RFC2440 despite these exeptions: + GnuPG (>0.4.5) is in compliance with RFC2440 despite these exceptions: ===> Please can someone check this <========= - * (5.1) The critical bit in signature subpackets is currently - ignored. This will be fixed soon. - - * (5.2) GnuPG generates V4 signatures for all V4 keys. The option --force-v3-sigs allows to override. @@ -23,13 +19,6 @@ Encrypted Session-Key Packets"; however a warning message is issued if this option is active. - * (5.5.2) states that an implementaion MUST NOT create a v3 key - with an algorithm other than RSA. GnuPG has an option to - create an ElGamal key in a v3 packet; the properties of such - a key are as good as a v4 key. RFC1991 does not specifiy how - to create fingerprints for algorithms other than RSA and so it - is okay to choose a special format for ElGamal. - * (9.1) states that RSA SHOULD be implemented. This is not done (except with an extension, usable outside the U.S.) due to patent problems. diff --git a/doc/gpg.1pod b/doc/gpg.1pod index f5ea9ad48..6d4bcaa7c 100644 --- a/doc/gpg.1pod +++ b/doc/gpg.1pod @@ -11,7 +11,7 @@ B [--homedir name] [--options file] [options] command [args] =head1 DESCRIPTION B is the main program for the GnuPG system. B is a maintenance -tool which has some commands B does not have; it is there because +tool which has some commands B does not have; it is there because it does not handle sensitive data and therefore has no need to allocate secure memory. @@ -92,7 +92,7 @@ B<--check-sigs> [I] B<--fingerprint> [I] List all keys with their fingerprints. This is the - same output as B but with the additonal output + same output as B but with the additional output of a line with the fingerprint. May also be combined with B<--list-sigs> or B<--check-sigs>. @@ -184,6 +184,9 @@ B<--export> [I] the file given with option "output". Use together with B<-a> to mail those keys. +B<--export-all> [I] + Same as B<--export> but does also export keys which + are not compatible to OpenPGP. B<--export-secret-keys> [I Same as B<--export>, but does export the secret keys. @@ -452,7 +455,7 @@ B<--no-greeting> enter batch mode. B<--no-armor> - Assume the input data is not in ASCCI armored format. + Assume the input data is not in ASCII armored format. B<--no-default-keyring> Do not add the default keyrings to the list of diff --git a/g10/ChangeLog b/g10/ChangeLog index 410630521..77990ae6d 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,10 @@ +Mon Dec 14 21:18:49 CET 1998 Werner Koch + + * parse-packet.c (parse_signature): Now checks for critical bit + (parse_sig_subpkt): Splitted. + (parse_one_sig_subpkt): New. + * sig-check.c (do_check): handle critical bit. + Sun Dec 13 14:10:56 CET 1998 Werner Koch * pcklist.c (select_algo_from_prefs): Preferences should diff --git a/g10/helptext.c b/g10/helptext.c index ee5565e81..6ff88a710 100644 --- a/g10/helptext.c +++ b/g10/helptext.c @@ -35,9 +35,12 @@ * as response to a prompt) we can use a simple search through the list. * Translators should use the key as msgid, this is to keep the msgid short * and to allow for easy changing of the helptexts. + * + * Mini gloassary: + * + * "user ID", "trustdb", "NOTE" and "WARNING". */ - static struct helptexts { const char *key; const char *help; } helptexts[] = { /* begin of list */ diff --git a/g10/options.skel b/g10/options.skel index 9fe89b1fb..0e53339d5 100644 --- a/g10/options.skel +++ b/g10/options.skel @@ -28,13 +28,6 @@ $Id$ force-v3-sigs -# Default is to use the newer compress algo 2, but PGP 5 does not -# like this, so we use the old one -# Hmm: Do we really need this ... preferences should decide which compress -# algo to use. - -compress-algo 1 - # If you do not use the Latin-1 (ISO-8859-1) charset, you should # tell GnuPG which is the native character set. Please check # the man page for supported character sets. @@ -45,10 +38,14 @@ compress-algo 1 # alias mynames -u 0x12345678 -u 0x456789ab -z 9 # everytime you use --mynames, it will be expanded to the options # in the above defintion. The name of the alias may not be abbreviated. +# NOTE: This is not yet implemented -# lock tthe file only once for the lifetime of a process. +# lock the file only once for the lifetime of a process. # if you do not define this, the lock will be obtained and released # every time it is needed - normally this is not needed. lock-once +# If you are not running one of the free operation systems +# you probably have to uncomment the next line: +#load-extension rndunix diff --git a/g10/packet.h b/g10/packet.h index 7d1e63150..e047fd944 100644 --- a/g10/packet.h +++ b/g10/packet.h @@ -200,6 +200,7 @@ struct packet_struct { } while(0) typedef enum { + SIGSUBPKT_TEST_CRITICAL=-3, SIGSUBPKT_LIST_UNHASHED=-2, SIGSUBPKT_LIST_HASHED =-1, SIGSUBPKT_NONE = 0, diff --git a/g10/parse-packet.c b/g10/parse-packet.c index 2d82308dd..29e4fc4e6 100644 --- a/g10/parse-packet.c +++ b/g10/parse-packet.c @@ -714,21 +714,60 @@ dump_sig_subpkt( int hashed, int type, int critical, printf("%s)\n", p? p: ""); } +/**************** + * Returns: >= 0 offset into buffer + * -1 unknown type + * -2 unsupported type + * -3 subpacket too short + */ +static int +parse_one_sig_subpkt( const byte *buffer, size_t n, int type ) +{ + switch( type ) { + case SIGSUBPKT_SIG_CREATED: + case SIGSUBPKT_SIG_EXPIRE: + case SIGSUBPKT_KEY_EXPIRE: + if( n < 4 ) + break; + return 0; + case SIGSUBPKT_EXPORTABLE: + if( !n ) + break; + return 0; + case SIGSUBPKT_ISSUER:/* issuer key ID */ + if( n < 8 ) + break; + return 0; + case SIGSUBPKT_PREF_SYM: + case SIGSUBPKT_PREF_HASH: + case SIGSUBPKT_PREF_COMPR: + return 0; + case SIGSUBPKT_PRIV_ADD_SIG: + /* because we use private data, we check the GNUPG marker */ + if( n < 24 ) + break; + if( buffer[0] != 'G' || buffer[1] != 'P' || buffer[2] != 'G' ) + return -2; + return 3; + default: return -1; + } + return -3; +} + const byte * parse_sig_subpkt( const byte *buffer, sigsubpkttype_t reqtype, size_t *ret_n ) { int buflen; int type; int critical; + int offset; size_t n; if( !buffer ) return NULL; buflen = (*buffer << 8) | buffer[1]; buffer += 2; - for(;;) { - if( !buflen ) - return NULL; /* end of packets; not found */ + while( buflen ) { n = *buffer++; buflen--; if( n == 255 ) { if( buflen < 4 ) @@ -754,49 +793,47 @@ parse_sig_subpkt( const byte *buffer, sigsubpkttype_t reqtype, size_t *ret_n ) } else critical = 0; - if( reqtype < 0 ) /* list packets */ + if( reqtype == SIGSUBPKT_TEST_CRITICAL ) { + if( critical ) { + if( n-1 > buflen+1 ) + goto too_short; + if( parse_one_sig_subpkt(buffer+1, n-1, type ) < 0 ) { + log_info(_("subpacket of type %d has critical bit set\n"), + type); + return NULL; /* this is an error */ + } + } + } + else if( reqtype < 0 ) /* list packets */ dump_sig_subpkt( reqtype == SIGSUBPKT_LIST_HASHED, type, critical, buffer, buflen, n ); - else if( type == reqtype ) - break; /* found */ + else if( type == reqtype ) { /* found */ + buffer++; + n--; + if( n > buflen ) + goto too_short; + if( ret_n ) + *ret_n = n; + offset = parse_one_sig_subpkt(buffer, n, type ); + switch( offset ) { + case -3: + log_error("subpacket of type %d too short\n", type); + return NULL; + case -2: + return NULL; + case -1: + BUG(); /* not yet needed */ + default: + break; + } + return buffer+offset; + } buffer += n; buflen -=n; } - buffer++; - n--; - if( n > buflen ) - goto too_short; - if( ret_n ) - *ret_n = n; - switch( type ) { - case SIGSUBPKT_SIG_CREATED: - case SIGSUBPKT_SIG_EXPIRE: - case SIGSUBPKT_KEY_EXPIRE: - if( n < 4 ) - break; - return buffer; - case SIGSUBPKT_EXPORTABLE: - if( !n ) - break; - return buffer; - case SIGSUBPKT_ISSUER:/* issuer key ID */ - if( n < 8 ) - break; - return buffer; - case SIGSUBPKT_PREF_SYM: - case SIGSUBPKT_PREF_HASH: - case SIGSUBPKT_PREF_COMPR: - return buffer; - case SIGSUBPKT_PRIV_ADD_SIG: - /* because we use private data, we check the GNUPG marker */ - if( n < 24 ) - break; - if( buffer[0] != 'G' || buffer[1] != 'P' || buffer[2] != 'G' ) - return NULL; - return buffer+3; - default: BUG(); /* not yet needed */ - } - log_error("subpacket of type %d too short\n", type); - return NULL; + if( reqtype == SIGSUBPKT_TEST_CRITICAL ) + return buffer; /* as value true to indicate that there is no + /* critical bit we don't understand */ + return NULL; /* end of packets; not found */ too_short: log_error("buffer shorter than subpacket\n"); @@ -899,10 +936,15 @@ parse_signature( IOBUF inp, int pkttype, unsigned long pktlen, if( is_v4 ) { /*extract required information */ const byte *p; - /* FIXME: set sig->flags.unknown_critical is there is a - * critical bit set for packets which are not understood - * It does only make sense for hashed data. - */ + /* set sig->flags.unknown_critical if there is a + * critical bit set for packets which we do not understand */ + if( !parse_sig_subpkt( sig->hashed_data, SIGSUBPKT_TEST_CRITICAL, NULL) + || !parse_sig_subpkt( sig->unhashed_data, SIGSUBPKT_TEST_CRITICAL, + NULL) ) + { + sig->flags.unknown_critical = 1; + } + p = parse_sig_subpkt( sig->hashed_data, SIGSUBPKT_SIG_CREATED, NULL ); if( !p ) log_error("signature packet without timestamp\n"); diff --git a/g10/sig-check.c b/g10/sig-check.c index 106355550..63bdda220 100644 --- a/g10/sig-check.c +++ b/g10/sig-check.c @@ -222,6 +222,10 @@ do_check( PKT_public_key *pk, PKT_signature *sig, MD_HANDLE digest ) rc = pubkey_verify( pk->pubkey_algo, result, sig->data, pk->pkey, cmp_help, &ctx ); mpi_free( result ); + if( !rc && sig->flags.unknown_critical ) { + log_info(_("assuming bad signature due to an unknown critical bit\n")); + rc = G10ERR_BAD_SIGN; + } sig->flags.checked = 1; sig->flags.valid = !rc; diff --git a/include/ChangeLog b/include/ChangeLog index 9040e8900..e5452d76f 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +Mon Dec 14 21:18:49 CET 1998 Werner Koch + + * types.h: fix for SUNPRO_C + Tue Dec 8 13:15:16 CET 1998 Werner Koch * mpi.h (MPI): Changed the structure name to gcry_mpi and diff --git a/include/types.h b/include/types.h index 328a1a93c..4c5e57cc6 100644 --- a/include/types.h +++ b/include/types.h @@ -91,7 +91,7 @@ #elif SIZEOF_UNSIGNED_LONG == 8 typedef unsigned long u64; #define HAVE_U64_TYPEDEF - #elif __GNUC__ >= 2 + #elif __GNUC__ >= 2 || defined(__SUNPRO_C) typedef unsigned long long u64; #define HAVE_U64_TYPEDEF #endif diff --git a/po/ChangeLog b/po/ChangeLog index 384ce7713..8f69e8f11 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +Mon Dec 14 21:18:49 CET 1998 Werner Koch + + * de.po: Imported new version. + Thu Dec 10 20:15:36 CET 1998 Werner Koch * *.po: Changed some english strings. diff --git a/po/de.po b/po/de.po index 65a41e0b6..c3fded59d 100644 --- a/po/de.po +++ b/po/de.po @@ -4,8 +4,8 @@ # msgid "" msgstr "" -"POT-Creation-Date: 1998-12-10 20:11+0100\n" -"PO-Revision-Date: 1998-11-18 20:10+0200\n" +"POT-Creation-Date: 1998-12-09 00:39+0100\n" +"PO-Revision-Date: 1998-12-13 22:34+0100\n" "Last-Translator: Walter Koch \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -24,8 +24,8 @@ msgstr "" msgid "Warning: using insecure memory!\n" msgstr "" "Warnung: Sensible Daten könnten auf Platte ausgelagert werden.\n" -"Um dies zu vermeiden, kann das Programm suid(root) installiert werden.\n" -"Bitte wenden Sie sich hierzu an den Systemadministrator.\n" +" Um dies zu vermeiden, kann das Programm suid(root) installiert werden.\n" +" Bitte wenden Sie sich hierzu an den Systemadministrator.\n" #: util/miscutil.c:143 msgid "yes" @@ -73,7 +73,7 @@ msgstr "Pr #: util/errors.c:63 msgid "Bad passphrase" -msgstr "Falsche \"Passphrase\"" +msgstr "Falsches Mantra" #: util/errors.c:64 msgid "Public key not found" @@ -137,7 +137,7 @@ msgstr "Fehler beim Erzeugen der Datei" #: util/errors.c:79 msgid "Invalid passphrase" -msgstr "Ungültige \"Passphrase\"" +msgstr "Ungültiges Mantra" #: util/errors.c:80 msgid "Unimplemented pubkey algorithm" @@ -217,11 +217,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/random.c:412 +#: cipher/random.c:379 msgid "WARNING: using insecure random number generator!!\n" -msgstr "Der Zufallszahlengenerator erzeugt keine echten Zufallszahlen!\n" +msgstr "WARNUNG: Der Zufallszahlengenerator erzeugt keine echten Zufallszahlen!\n" -#: cipher/random.c:413 +#: cipher/random.c:380 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -235,7 +235,7 @@ msgstr "" "BENUTZEN SIE DIE DURCH DIESES PROGRAMM ERZEUGTEN DATEN NICHT!\n" "\n" -#: cipher/rndlinux.c:116 +#: cipher/rndlinux.c:154 #, c-format msgid "" "\n" @@ -247,7 +247,7 @@ msgstr "" "Arbeiten durch, damit das Betriebssystem weitere Entropie sammeln kann!\n" "(Es werden noch %d Byte benötigt.)\n" -#: g10/g10.c:159 +#: g10/g10.c:158 msgid "" "@Commands:\n" " " @@ -255,123 +255,123 @@ msgstr "" "@Kommandos:\n" " " -#: g10/g10.c:162 +#: g10/g10.c:161 msgid "|[file]|make a signature" msgstr "|[file]|Eine Unterschrift erzeugen" -#: g10/g10.c:163 +#: g10/g10.c:162 msgid "|[file]|make a clear text signature" msgstr "|[file]|Eine Klartextunterschrift erzeugen" -#: g10/g10.c:164 +#: g10/g10.c:163 msgid "make a detached signature" msgstr "Eine abgetrennte Unterschrift erzeugen" -#: g10/g10.c:165 +#: g10/g10.c:164 msgid "encrypt data" msgstr "Daten verschlüsseln" -#: g10/g10.c:166 +#: g10/g10.c:165 msgid "encryption only with symmetric cipher" msgstr "Daten nur symmetrisch verschlüsseln" -#: g10/g10.c:167 +#: g10/g10.c:166 msgid "store only" msgstr "Nur speichern" -#: g10/g10.c:168 +#: g10/g10.c:167 msgid "decrypt data (default)" msgstr "Daten entschlüsseln (Voreinstellung)" -#: g10/g10.c:169 +#: g10/g10.c:168 msgid "verify a signature" msgstr "Signatur prüfen" -#: g10/g10.c:171 +#: g10/g10.c:170 msgid "list keys" msgstr "Liste der Schlüssel" -#: g10/g10.c:172 +#: g10/g10.c:171 msgid "list keys and signatures" msgstr "Liste der Schlüssel und ihrer Signaturen" -#: g10/g10.c:173 +#: g10/g10.c:172 msgid "check key signatures" msgstr "Signaturen der Schlüssel prüfen" -#: g10/g10.c:174 +#: g10/g10.c:173 msgid "list keys and fingerprints" msgstr "Liste der Schlüssel und ihrer \"Fingerabdrücke\"" -#: g10/g10.c:175 +#: g10/g10.c:174 msgid "list secret keys" msgstr "Liste der geheimen Schlüssel" -#: g10/g10.c:177 +#: g10/g10.c:176 msgid "generate a new key pair" msgstr "Ein neues Schlüsselpaar erzeugen" -#: g10/g10.c:179 +#: g10/g10.c:178 msgid "remove key from the public keyring" msgstr "Schlüssel entfernen" -#: g10/g10.c:181 +#: g10/g10.c:180 msgid "sign or edit a key" msgstr "Unterschreiben oder Bearbeiten eines Schlüssels" -#: g10/g10.c:182 +#: g10/g10.c:181 msgid "generate a revocation certificate" msgstr "Ein Schlüsselwiderruf-Zertifikat erzeugen" -#: g10/g10.c:184 +#: g10/g10.c:183 msgid "export keys" msgstr "Schlüssel exportieren" -#: g10/g10.c:187 +#: g10/g10.c:185 msgid "import/merge keys" msgstr "Schlüssel importieren/kombinieren" -#: g10/g10.c:189 +#: g10/g10.c:187 msgid "list only the sequence of packets" msgstr "Lediglich die Struktur der Datenpackete anzeigen" -#: g10/g10.c:192 +#: g10/g10.c:190 msgid "export the ownertrust values" msgstr "Exportieren der \"Owner trust\" Werte" -#: g10/g10.c:194 +#: g10/g10.c:192 msgid "import ownertrust values" msgstr "Importieren der \"Owner trust\" Werte" -#: g10/g10.c:196 +#: g10/g10.c:194 msgid "|[NAMES]|update the trust database" msgstr "|[NAMES]|Ändern der \"Trust\"-Datenbank" -#: g10/g10.c:198 +#: g10/g10.c:196 msgid "|[NAMES]|check the trust database" msgstr "|[NAMES]|Überprüfen der \"Trust\"-Datenbank" -#: g10/g10.c:199 +#: g10/g10.c:197 msgid "fix a corrupted trust database" msgstr "Reparieren einer beschädigten \"Trust\"-Datenbank" -#: g10/g10.c:200 +#: g10/g10.c:198 msgid "De-Armor a file or stdin" msgstr "Datei oder stdin von der ASCII-Hülle befreien" -#: g10/g10.c:201 +#: g10/g10.c:199 msgid "En-Armor a file or stdin" msgstr "Datei oder stdin in eine ASCII-Hülle einpacken" -#: g10/g10.c:202 +#: g10/g10.c:200 msgid "|algo [files]|print message digests" msgstr "|algo [files]|Message-Digests für die Dateien ausgeben" -#: g10/g10.c:203 +#: g10/g10.c:201 msgid "print all message digests" msgstr "Message-Digests für die Eingabedaten ausgeben" -#: g10/g10.c:210 +#: g10/g10.c:208 msgid "" "@\n" "Options:\n" @@ -381,141 +381,140 @@ msgstr "" "Optionen:\n" " " -#: g10/g10.c:212 +#: g10/g10.c:210 msgid "create ascii armored output" msgstr "Ausgabe mit ASCII-Hülle versehen" -#: g10/g10.c:214 +#: g10/g10.c:212 msgid "use this user-id to sign or decrypt" msgstr "Mit dieser User-ID signieren" -#: g10/g10.c:215 +#: g10/g10.c:213 msgid "use this user-id for encryption" msgstr "Verschlüsseln für diese User-ID" -#: g10/g10.c:216 +#: g10/g10.c:214 msgid "|N|set compress level N (0 disables)" msgstr "Kompressionsstufe auf N setzen (0 = keine Kompr.)" -#: g10/g10.c:218 +#: g10/g10.c:216 msgid "use canonical text mode" msgstr "Textmodus benutzen" -#: g10/g10.c:220 +#: g10/g10.c:218 msgid "use as output file" msgstr "Als Ausgabedatei benutzen" -#: g10/g10.c:221 +#: g10/g10.c:219 msgid "verbose" msgstr "Detaillierte Informationen" -#: g10/g10.c:222 +#: g10/g10.c:220 msgid "be somewhat more quiet" msgstr "Etwas weniger Infos" -#: g10/g10.c:223 +#: g10/g10.c:221 msgid "force v3 signatures" msgstr "v3 Signaturen erzwingen" #. { oDryRun, "dry-run", 0, N_("do not make any changes") }, -#: g10/g10.c:225 +#: g10/g10.c:223 msgid "batch mode: never ask" msgstr "Stapelmodus: Keine Abfragen" -#: g10/g10.c:226 +#: g10/g10.c:224 msgid "assume yes on most questions" msgstr "\"Ja\" als Standardantwort annehmen" -#: g10/g10.c:227 +#: g10/g10.c:225 msgid "assume no on most questions" msgstr "\"Nein\" als Standardantwort annehmen" -#: g10/g10.c:228 +#: g10/g10.c:226 msgid "add this keyring to the list of keyrings" msgstr "Als öffentlichen Schlüsselbund mitbenutzen" -#: g10/g10.c:229 +#: g10/g10.c:227 msgid "add this secret keyring to the list" msgstr "Als geheimen Schlüsselbund mitbenutzen" -#: g10/g10.c:230 +#: g10/g10.c:228 msgid "|NAME|use NAME as default secret key" msgstr "|NAME|NAME als voreingestellten Schlüssel benutzen" -#: g10/g10.c:231 -#, fuzzy +#: g10/g10.c:229 msgid "|NAME|set terminal charset to NAME" msgstr "|NAME|Terminalzeichensatz NAME benutzen" -#: g10/g10.c:232 +#: g10/g10.c:230 msgid "read options from file" msgstr "Optionen aus der Datei lesen" -#: g10/g10.c:234 +#: g10/g10.c:232 msgid "set debugging flags" msgstr "Debug-Flags einschalten" -#: g10/g10.c:235 +#: g10/g10.c:233 msgid "enable full debugging" msgstr "Alle Debug-Flags einschalten" -#: g10/g10.c:236 +#: g10/g10.c:234 msgid "|FD|write status info to this FD" msgstr "|FD|Statusinfo auf FD (Dateihandle) ausgeben" -#: g10/g10.c:237 +#: g10/g10.c:235 msgid "do not write comment packets" msgstr "Keine Kommentarpakete schreiben" -#: g10/g10.c:238 +#: g10/g10.c:236 msgid "(default is 1)" msgstr "Benötigte Vollvertrauen (Voreinstellung 1)" -#: g10/g10.c:239 +#: g10/g10.c:237 msgid "(default is 3)" msgstr "Benötigte Teilvertrauen (Voreinstellung 3)" -#: g10/g10.c:241 +#: g10/g10.c:239 msgid "|KEYID|ulimately trust this key" -msgstr "" +msgstr "|KEYID|Diesem Schlüssel uneingeschränkt vertrauen" -#: g10/g10.c:242 +#: g10/g10.c:240 msgid "|FILE|load extension module FILE" msgstr "|FILE|Erweiterungsmodul DATEI laden" -#: g10/g10.c:243 +#: g10/g10.c:241 msgid "emulate the mode described in RFC1991" msgstr "Den in RFC1991 beschriebenen Modus nachahmen" -#: g10/g10.c:244 +#: g10/g10.c:242 msgid "|N|use passphrase mode N" -msgstr "|N|Verwenden der \"Passphrase\"-Methode N" +msgstr "|N|Verwenden des Mantra-Modus N" + +#: g10/g10.c:244 +msgid "|NAME|use message digest algorithm NAME for passphrases" +msgstr "|NAME|Das Hashverfahren NAME für Mantras benutzen" #: g10/g10.c:246 -msgid "|NAME|use message digest algorithm NAME for passphrases" -msgstr "|NAME|Das Hashverfahren NAME f. \"Passphrase\" benutzen" +msgid "|NAME|use cipher algorithm NAME for passphrases" +msgstr "|NAME|Das Verschlü.verfahren NAME für Mantras benutzen" #: g10/g10.c:248 -msgid "|NAME|use cipher algorithm NAME for passphrases" -msgstr "|NAME|Das Verschlü.verfahren NAME f. \"Passphrase\" benutzen" - -#: g10/g10.c:250 msgid "|NAME|use cipher algorithm NAME" msgstr "|NAME|Das Verschlü.verfahren NAME benutzen" -#: g10/g10.c:251 +#: g10/g10.c:249 msgid "|NAME|use message digest algorithm NAME" msgstr "|NAME|Das Hashverfahren NAME benutzen" -#: g10/g10.c:252 +#: g10/g10.c:250 msgid "|N|use compress algorithm N" msgstr "|N|Die Komprimierverfahren N benutzen" -#: g10/g10.c:253 +#: g10/g10.c:251 msgid "throw keyid field of encrypted packets" msgstr "entferne die AbsenderI-ID verschlüsselter Pakete" -#: g10/g10.c:261 +#: g10/g10.c:259 msgid "" "@\n" "Examples:\n" @@ -535,19 +534,19 @@ msgstr "" " --list-keys [Namen] Schlüssel anzeigen\n" " --fingerprint [Namen] \"Fingerabdrücke\" anzeigen\n" -#: g10/g10.c:339 +#: g10/g10.c:337 msgid "Please report bugs to .\n" msgstr "Berichte über Wanzen (Programmfehler) bitte an .\n" -#: g10/g10.c:344 +#: g10/g10.c:342 msgid "Usage: gpgm [options] [files] (-h for help)" -msgstr "Aufruf: gpgm [Optionen] [Dateien] (-h für Hilfe)" +msgstr "Syntax: gpgm [Optionen] [Dateien] (-h für Hilfe)" -#: g10/g10.c:346 +#: g10/g10.c:344 msgid "Usage: gpg [options] [files] (-h for help)" msgstr "Aufruf: gpg [Optionen] [Dateien] (-h für Hilfe)" -#: g10/g10.c:351 +#: g10/g10.c:349 msgid "" "Syntax: gpgm [options] [files]\n" "GnuPG maintenance utility\n" @@ -555,7 +554,7 @@ msgstr "" "Syntax: gpgm [options] [files]\n" "GnuPG Wartungs-Hilfsprogramm\n" -#: g10/g10.c:354 +#: g10/g10.c:352 msgid "" "Syntax: gpg [options] [files]\n" "sign, check, encrypt or decrypt\n" @@ -565,7 +564,7 @@ msgstr "" "Signieren, prüfen, verschlüsseln, entschlüsseln\n" "Die voreingestellte Operation ist abhängig von den Eingabedaten\n" -#: g10/g10.c:360 +#: g10/g10.c:358 msgid "" "\n" "Supported algorithms:\n" @@ -573,153 +572,161 @@ msgstr "" "\n" "Unterstützte Verfahren:\n" -#: g10/g10.c:435 +#: g10/g10.c:433 msgid "usage: gpgm [options] " msgstr "Aufruf: gpgm [Optionen] " -#: g10/g10.c:437 +#: g10/g10.c:435 msgid "usage: gpg [options] " msgstr "Aufruf: gpg [Optionen] " -#: g10/g10.c:478 +#: g10/g10.c:476 msgid "conflicting commands\n" msgstr "Widersprüchliche Kommandos\n" -#: g10/g10.c:616 +#: g10/g10.c:614 #, c-format msgid "NOTE: no default option file '%s'\n" msgstr "Hinweis: Keine voreingestellte Optionendatei '%s' vorhanden\n" -#: g10/g10.c:620 +#: g10/g10.c:618 #, c-format msgid "option file '%s': %s\n" msgstr "Optionendatei '%s': %s\n" -#: g10/g10.c:627 +#: g10/g10.c:625 #, c-format msgid "reading options from '%s'\n" msgstr "Optionen werden aus '%s' gelesen\n" -#: g10/g10.c:776 +#: g10/g10.c:773 #, c-format msgid "%s is not a valid character set\n" msgstr "%s ist kein gültiger Zeichensatz.\n" -#: g10/g10.c:810 g10/g10.c:822 +#: g10/g10.c:807 g10/g10.c:819 msgid "selected cipher algorithm is invalid\n" msgstr "Das ausgewählte Verschlüsslungsverfahren ist ungültig\n" -#: g10/g10.c:816 g10/g10.c:828 +#: g10/g10.c:813 g10/g10.c:825 msgid "selected digest algorithm is invalid\n" msgstr "Das ausgewählte Hashverfahren ist ungültig\n" -#: g10/g10.c:831 +#: g10/g10.c:828 #, c-format msgid "compress algorithm must be in range %d..%d\n" msgstr "Das Komprimierverfahren muß im Bereich %d bis %d liegen\n" -#: g10/g10.c:833 +#: g10/g10.c:830 msgid "completes-needed must be greater than 0\n" msgstr "completes-needed müssen größer als 0 sein\n" -#: g10/g10.c:835 +#: g10/g10.c:832 msgid "marginals-needed must be greater than 1\n" msgstr "marginals-needed müssen größer als 1 sein\n" -#: g10/g10.c:837 +#: g10/g10.c:834 msgid "max-cert-depth must be in range 1 to 255\n" -msgstr "" +msgstr "max-cert-depth muß im Bereich 1 bis 255 liegen\n" -#: g10/g10.c:840 +#: g10/g10.c:837 msgid "NOTE: simple S2K mode (0) is strongly discouraged\n" msgstr "Hinweis: Vom \"simple S2K\"-Modus (0) ist strikt abzuraten\n" -#: g10/g10.c:844 +#: g10/g10.c:841 msgid "invalid S2K mode; must be 0, 1 or 3\n" msgstr "ungültiger \"simple S2K\"-Modus; Wert muß 0, 1 oder 3 sein\n" -#: g10/g10.c:927 +#: g10/g10.c:924 #, c-format msgid "failed to initialize the TrustDB: %s\n" msgstr "Die Trust-DB kann nicht initialisiert werden: %s\n" -#: g10/g10.c:933 +#: g10/g10.c:930 msgid "--store [filename]" msgstr "--store [Dateiname]" -#: g10/g10.c:941 +#: g10/g10.c:938 msgid "--symmetric [filename]" msgstr "--symmetric [Dateiname]" -#: g10/g10.c:949 +#: g10/g10.c:946 msgid "--encrypt [filename]" msgstr "--encrypt [Dateiname]" -#: g10/g10.c:962 +#: g10/g10.c:959 msgid "--sign [filename]" msgstr "--sign [Dateiname]" -#: g10/g10.c:975 +#: g10/g10.c:972 msgid "--sign --encrypt [filename]" msgstr "--sign --encrypt [Dateiname]" -#: g10/g10.c:989 +#: g10/g10.c:986 msgid "--clearsign [filename]" msgstr "--clearsign [Dateiname]" -#: g10/g10.c:1001 +#: g10/g10.c:998 msgid "--decrypt [filename]" msgstr "--decrypt [Dateiname]" -#: g10/g10.c:1010 +#: g10/g10.c:1007 msgid "--edit-key username [commands]" msgstr "--edit-key Username [Befehle]" -#: g10/g10.c:1026 +#: g10/g10.c:1023 msgid "--delete-secret-key username" msgstr "--delete-secret-key Username" -#: g10/g10.c:1029 +#: g10/g10.c:1026 msgid "--delete-key username" msgstr "--delete-key Benutzername" -#: g10/encode.c:216 g10/g10.c:1052 g10/sign.c:301 +#: g10/encode.c:216 g10/g10.c:1049 g10/sign.c:301 #, c-format msgid "can't open %s: %s\n" msgstr "'%s' kann nicht geöffnet werden: %s\n" -#: g10/g10.c:1063 +#: g10/g10.c:1060 msgid "-k[v][v][v][c] [userid] [keyring]" msgstr "-k[v][v][v][c] [Benutzername] [Keyring]" -#: g10/g10.c:1120 +#: g10/g10.c:1116 #, c-format msgid "dearmoring failed: %s\n" msgstr "Entfernen der ASCII-Hülle ist fehlgeschlagen: %s\n" -#: g10/g10.c:1128 +#: g10/g10.c:1124 #, c-format msgid "enarmoring failed: %s\n" msgstr "Anbringen der ASCII-Hülle ist fehlgeschlagen: %s\n" -#: g10/g10.c:1194 +#: g10/g10.c:1190 #, c-format msgid "invalid hash algorithm '%s'\n" msgstr "Ungültiges Hashverfahren '%s'\n" -#: g10/g10.c:1273 +#: g10/g10.c:1269 msgid "[filename]" msgstr "[Dateiname]" -#: g10/g10.c:1277 +#: g10/g10.c:1273 msgid "Go ahead and type your message ...\n" -msgstr "" +msgstr "Auf geht's - Botschaft eintippen ...\n" -#: g10/decrypt.c:59 g10/g10.c:1280 g10/verify.c:66 +#: g10/decrypt.c:59 g10/g10.c:1276 g10/verify.c:66 #, c-format msgid "can't open '%s'\n" msgstr "'%s' kann nicht geöffnet werden\n" +#: g10/g10.c:1325 +msgid "" +"RSA keys are deprecated; please consider creating a new key and use this key " +"in the future\n" +msgstr "" +"RSA Schlüssel sind nicht erwünscht; bitte denken Sie darüber nach, einen\n" +"neuen Schlüssel zu erzeugen und diesen in Zukunft zu benutzen\n" + #: g10/armor.c:344 g10/armor.c:391 msgid "armor header: " msgstr "ASCII-Hülle: " @@ -835,9 +842,9 @@ msgid "" "can assign some missing owner trust values.\n" "\n" msgstr "" -"Ein gültiger Trust Path konnte für diesen Key nicht gefunden werden.\n" +"Für diesen Schlüssel konnte kein gültiger \"Trust Path\" gefunden werden.\n" "Mal sehen, ob wir sonst irgendwie ein paar fehlende \"Owner trust\" Werte \n" -"zuordnen können.\n" +"ermitteln können.\n" "\n" #: g10/pkclist.c:219 @@ -845,7 +852,7 @@ msgid "" "No path leading to one of our keys found.\n" "\n" msgstr "" -"Kein Pfad führte zu einen von unseren Schlüsseln.\n" +"Kein Pfad führt zu einen unserer Schlüsseln.\n" "\n" #: g10/pkclist.c:221 @@ -891,17 +898,19 @@ msgid "%08lX: We do NOT trust this key\n" msgstr "%08lX: Wir haben KEIN Vertrauen zu diesem Schlüssel!\n" #: g10/pkclist.c:294 -#, fuzzy, c-format +#, c-format msgid "" "%08lX: It is not sure that this key really belongs to the owner\n" "but it is accepted anyway\n" msgstr "" -"%08lX: It is not sure taht this key really belongs to the owner\n" -"but it is accepted anyway\n" +"%08lX: Es ist nicht sicher, daß dieser Schlüssel wirklich dem vorgeblichen\n" +"Besitzer gehört, aber er wird trotzdem akzeptiert\n" #: g10/pkclist.c:300 msgid "This key probably belongs to the owner\n" -msgstr "Dieser Schlüssel gehört wahrscheinlich dem Besitzer\n" +msgstr "" +"Dieser Schlüssel gehört uns (alldieweil wir den geheimen Schlüssel dazu " +"haben)\n" #: g10/pkclist.c:305 msgid "This key belongs to us\n" @@ -1017,8 +1026,8 @@ msgstr " (%d) DSA und ElGamal (voreingestellt)\n" #: g10/keygen.c:391 #, c-format -msgid " (%d) DSA (sign only)\n" -msgstr " (%d) DSA (nur signieren)\n" +msgid " (%d) ElGamal (sign and encrypt)\n" +msgstr " (%d) ElGamal (signieren/beglaubigen und verschlüsseln)\n" #: g10/keygen.c:393 #, c-format @@ -1027,28 +1036,23 @@ msgstr " (%d) ElGamal (nur verschl #: g10/keygen.c:394 #, c-format -msgid " (%d) ElGamal (sign and encrypt)\n" -msgstr " (%d) ElGamal (signieren und verschlüsseln)\n" +msgid " (%d) DSA (sign only)\n" +msgstr " (%d) DSA (nur signieren/beglaubigen)\n" -#: g10/keygen.c:396 +#: g10/keygen.c:395 #, c-format msgid " (%d) ElGamal in a v3 packet\n" msgstr " (%d) ElGamal in einem v3-Paket\n" -#: g10/keygen.c:401 +#: g10/keygen.c:399 msgid "Your selection? " msgstr "Ihre Auswahl? " -#: g10/keygen.c:411 -#, fuzzy -msgid "Do you really want to create a sign and encrypt key? " -msgstr "Möchten Sie die ausgewählten Schlüssel wirklich entfernen? " - -#: g10/keygen.c:432 +#: g10/keygen.c:425 msgid "Invalid selection.\n" msgstr "Ungültige Auswahl.\n" -#: g10/keygen.c:444 +#: g10/keygen.c:437 #, c-format msgid "" "About to generate a new %s keypair.\n" @@ -1057,23 +1061,23 @@ msgid "" " highest suggested keysize is 2048 bits\n" msgstr "" "Es wird ein neues %s Schlüsselpaar erzeugt.\n" -" kleinste Schlüssellänge ist 768 Bits\n" -" standard Schlüssellänge ist 1024 Bits\n" -" größte sinnvolle Schlüssellänge ist 2048 Bits\n" +" kleinste Schlüssellänge ist 768 Bit\n" +" standard Schlüssellänge ist 1024 Bit\n" +" größte sinnvolle Schlüssellänge ist 2048 Bit\n" -#: g10/keygen.c:451 +#: g10/keygen.c:444 msgid "What keysize do you want? (1024) " msgstr "Welche Schlüssellänge wünschen Sie? (1024) " -#: g10/keygen.c:456 +#: g10/keygen.c:449 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:458 +#: g10/keygen.c:451 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:461 +#: g10/keygen.c:454 msgid "" "Keysizes larger than 2048 are not suggested because\n" "computations take REALLY long!\n" @@ -1081,11 +1085,11 @@ msgstr "" "Schlüssellängen größer als 2048 werden nicht empfohlen, da die\n" "Berechnungen dann WIRKLICH lange brauchen!\n" -#: g10/keygen.c:464 +#: g10/keygen.c:457 msgid "Are you sure that you want this keysize? " msgstr "Sind Sie sicher, daß Sie diese Schlüssellänge wünschen? " -#: g10/keygen.c:465 +#: g10/keygen.c:458 msgid "" "Okay, but keep in mind that your monitor and keyboard radiation is also very " "vulnerable to attacks!\n" @@ -1093,21 +1097,21 @@ 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:473 +#: g10/keygen.c:466 msgid "Do you really need such a large keysize? " msgstr "Brauchen Sie wirklich einen derartig langen Schlüssel? " -#: g10/keygen.c:479 +#: g10/keygen.c:472 #, c-format msgid "Requested keysize is %u bits\n" msgstr "Die verlangte Schlüssellänge beträgt %u Bit\n" -#: g10/keygen.c:482 g10/keygen.c:486 +#: g10/keygen.c:475 g10/keygen.c:479 #, c-format msgid "rounded up to %u bits\n" msgstr "aufgerundet auf %u Bit\n" -#: g10/keygen.c:499 +#: g10/keygen.c:492 msgid "" "Please specify how long the key should be valid.\n" " 0 = key does not expire\n" @@ -1123,29 +1127,29 @@ msgstr "" " m = Schlüssel verfällt nach n Monaten\n" " y = Schlüssel verfällt nach n Jahren\n" -#: g10/keygen.c:514 +#: g10/keygen.c:507 msgid "Key is valid for? (0) " msgstr "Der Schlüssel bleibt wie lange gültig? (0) " -#: g10/keygen.c:525 +#: g10/keygen.c:518 msgid "invalid value\n" msgstr "Ungültiger Wert.\n" -#: g10/keygen.c:530 +#: g10/keygen.c:523 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:536 +#: g10/keygen.c:529 #, c-format msgid "Key expires at %s\n" msgstr "Der Schlüssel verfällt am %s\n" -#: g10/keygen.c:542 +#: g10/keygen.c:535 msgid "Is this correct (y/n)? " msgstr "Ist dies richtig? (j/n) " -#: g10/keygen.c:584 +#: g10/keygen.c:577 msgid "" "\n" "You need a User-ID to identify your key; the software constructs the user " @@ -1161,39 +1165,39 @@ msgstr "" " \"Heinrich Heine (Der Dichter) \"\n" "\n" -#: g10/keygen.c:595 +#: g10/keygen.c:588 msgid "Real name: " msgstr "Ihr Name (\"Vorname Nachname\"): " -#: g10/keygen.c:599 +#: g10/keygen.c:592 msgid "Invalid character in name\n" msgstr "Ungültiges Zeichen im Namen\n" -#: g10/keygen.c:601 +#: g10/keygen.c:594 msgid "Name may not start with a digit\n" msgstr "Der Name darf nicht mit einer Ziffer beginnen.\n" -#: g10/keygen.c:603 +#: g10/keygen.c:596 msgid "Name must be at least 5 characters long\n" msgstr "Der Name muß min. 5 Zeichen lang sein.\n" -#: g10/keygen.c:611 +#: g10/keygen.c:604 msgid "Email address: " msgstr "E-Mail-Adresse: " -#: g10/keygen.c:623 +#: g10/keygen.c:616 msgid "Not a valid email address\n" -msgstr "E-Mail-Adresse is ungültig\n" +msgstr "Diese E-Mail-Adresse ist ungültig\n" -#: g10/keygen.c:631 +#: g10/keygen.c:624 msgid "Comment: " msgstr "Kommentar: " -#: g10/keygen.c:637 +#: g10/keygen.c:630 msgid "Invalid character in comment\n" msgstr "Ungültiges Zeichen im Kommentar.\n" -#: g10/keygen.c:657 +#: g10/keygen.c:650 #, c-format msgid "" "You selected this USER-ID:\n" @@ -1204,40 +1208,40 @@ msgstr "" " \"%s\"\n" "\n" -#: g10/keygen.c:660 +#: g10/keygen.c:653 msgid "NnCcEeOoQq" -msgstr "" +msgstr "NnKkEeFfBb" -#: g10/keygen.c:670 +#: g10/keygen.c:663 msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? " -msgstr "Ändern: N=Name, C=Kommentar, E=E-Mail, O=Okay oder Q=Beenden? " +msgstr "Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? " -#: g10/keygen.c:722 +#: g10/keygen.c:715 msgid "" "You need a Passphrase to protect your secret key.\n" "\n" msgstr "" -"Sie benötigen eine \"passphrase\", um den geheimen Schlüssel zu schützen.\n" +"Sie benötigen ein Mantra, um den geheimen Schlüssel zu schützen.\n" "\n" -#: g10/keyedit.c:389 g10/keygen.c:730 +#: g10/keyedit.c:389 g10/keygen.c:723 msgid "passphrase not correctly repeated; try again.\n" -msgstr "\"passphrase\" nicht richtig wiederholt; noch einmal.\n" +msgstr "Mantra wurde nicht richtig wiederholt; noch einmal versuchen.\n" -#: g10/keygen.c:736 +#: g10/keygen.c:729 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" "using this program with the option \"--edit-key\".\n" "\n" msgstr "" -"Sie möchten keine \"passphrase\" - Dies ist *nicht* zu empfehlen!\n" -"Es ist trotzdem möglich. Sie können Ihre \"phassphrase\" jederzeit\n" +"Sie möchten kein Mantra - Dies ist *nicht* zu empfehlen!\n" +"Es ist trotzdem möglich. Sie können Ihr Mantra jederzeit\n" "ändern, indem sie dieses Programm mit dem Kommando \"--edit-key\"\n" "aufrufen.\n" "\n" -#: g10/keygen.c:757 +#: g10/keygen.c:750 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" @@ -1248,34 +1252,34 @@ msgstr "" "unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n" "tippen oder irgendwelche anderen Programme benutzen.\n" -#: g10/keygen.c:827 +#: g10/keygen.c:820 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:835 +#: g10/keygen.c:828 msgid "DSA keypair will have 1024 bits.\n" msgstr "Der DSA Schlüssel wird 1024 Bits haben.\n" -#: g10/keygen.c:841 +#: g10/keygen.c:834 msgid "Key generation cancelled.\n" -msgstr "Schlüsselerzeugung abgebrochen: %s\n" +msgstr "Schlüsselerzeugung abgebrochen.\n" -#: g10/keygen.c:851 +#: g10/keygen.c:844 #, c-format msgid "writing public certificate to '%s'\n" msgstr "schreiben des öffentlichen Schlüssels nach '%s'\n" -#: g10/keygen.c:852 +#: g10/keygen.c:845 #, c-format msgid "writing secret certificate to '%s'\n" msgstr "schreiben des geheimen Schlüssels nach '%s'\n" -#: g10/keygen.c:929 +#: g10/keygen.c:922 msgid "public and secret key created and signed.\n" msgstr "Öffentlichen und geheimen Schlüssel erzeugt und signiert.\n" -#: g10/keygen.c:931 +#: g10/keygen.c:924 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" @@ -1284,12 +1288,12 @@ msgstr "" "werden kann. Sie können aber mit dem Kommando \"--add-key\" einen\n" "Zweitschlüssel zu diesem Schlüssel hinzufügen.\n" -#: g10/keygen.c:945 g10/keygen.c:1030 +#: g10/keygen.c:938 g10/keygen.c:1023 #, c-format msgid "Key generation failed: %s\n" msgstr "Schlüsselerzeugung fehlgeschlagen: %s\n" -#: g10/keygen.c:1008 +#: g10/keygen.c:1001 msgid "Really create? " msgstr "Wirklich erzeugen? " @@ -1302,7 +1306,7 @@ msgstr "%s: kann nicht ge #: g10/encode.c:107 #, c-format msgid "error creating passphrase: %s\n" -msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n" +msgstr "Fehler beim Erzeugen des Mantras: %s\n" #: g10/encode.c:155 g10/encode.c:269 #, c-format @@ -1315,42 +1319,27 @@ msgid "reading from '%s'\n" msgstr "Lesen von '%s'\n" #: g10/encode.c:397 -#, fuzzy, c-format -msgid "%s/%s encrypted for: %s\n" +#, c-format +msgid "%s encrypted for: %s\n" msgstr "%s verschlüsselt für: %s\n" -#: g10/export.c:114 -#, fuzzy, c-format -msgid "%s: user not found: %s\n" -msgstr "%s: Benutzer nicht gefunden\n" - -#: g10/export.c:123 -#, fuzzy, c-format -msgid "certificate read problem: %s\n" -msgstr "User '%s' Leseproblem: %s\n" - -#: g10/export.c:132 -#, fuzzy, c-format -msgid "key %08lX: not a rfc2440 key - skipped\n" -msgstr "Schlüssel %08lX: geheimer, aber kein öffentlicher Schlüssel.\n" - -#: g10/export.c:174 +#: g10/export.c:162 msgid "WARNING: nothing exported\n" msgstr "WARNUNG: Nichts exportiert\n" #: g10/getkey.c:164 msgid "too many entries in pk cache - disabled\n" -msgstr "" +msgstr "zu viele Einträge im pk-Lager - abgeschaltet\n" #: g10/getkey.c:263 msgid "too many entries in unk cache - disabled\n" -msgstr "" +msgstr "zu viele Einträge im unk-Lager - abgeschaltet\n" #: g10/getkey.c:989 #, c-format msgid "using secondary key %08lX instead of primary key %08lX\n" msgstr "" -"der Zweitschlüssel %08lX wird anstelle des Haptschlüssels %08lX verwendet\n" +"der Zweitschlüssel %08lX wird anstelle des Hauptschlüssels %08lX verwendet\n" #: g10/import.c:129 g10/trustdb.c:1166 #, c-format @@ -1450,7 +1439,7 @@ msgstr "Schl msgid "no default public keyring\n" msgstr "Kein voreingestellter öffentlicher Schlüsselbund\n" -#: g10/import.c:359 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:569 +#: g10/import.c:359 g10/openfile.c:105 g10/sign.c:205 g10/sign.c:563 #, c-format msgid "writing to '%s'\n" msgstr "Schreiben nach '%s'\n" @@ -1479,12 +1468,12 @@ msgstr "Schl #, c-format msgid "key %08lX: can't locate original keyblock: %s\n" msgstr "" -"Schlüssel %08lX: der lokale originale Keyblock wurde nicht gefunden: %s\n" +"Schlüssel %08lX: der lokale originale Schlüsselblocks wurde nicht gefunden: %s\n" #: g10/import.c:403 g10/import.c:601 #, c-format msgid "key %08lX: can't read original keyblock: %s\n" -msgstr "Schlüssel %08lX: Lesefehler im lokalen originalen Keyblock: %s\n" +msgstr "Schlüssel %08lX: Lesefehler im lokalen originalen Schlüsselblocks: %s\n" #: g10/import.c:420 g10/import.c:532 g10/import.c:636 msgid "writing keyblock\n" @@ -1704,7 +1693,7 @@ msgid "" "Enter the new passphrase for this secret key.\n" "\n" msgstr "" -"Geben Sie die neue \"passphrase\" für diesen geheimen Schlüssel ein.\n" +"Geben Sie das neue Mantra für diesen geheimen Schlüssel ein.\n" "\n" #: g10/keyedit.c:393 @@ -1712,7 +1701,7 @@ msgid "" "You don't want a passphrase - this is probably a *bad* idea!\n" "\n" msgstr "" -"Sie wollen keine \"passphrase\" - dies ist bestimmt *keine* gute Idee!\n" +"Sie wollen kein Mantra - dies ist bestimmt *keine* gute Idee!\n" "\n" #: g10/keyedit.c:396 @@ -1721,7 +1710,7 @@ msgstr "M #: g10/keyedit.c:455 msgid "moving a key signature to the correct place\n" -msgstr "" +msgstr "schiebe eine Beglaubigung an die richtige Stelle\n" #: g10/keyedit.c:490 msgid "quit" @@ -1881,7 +1870,7 @@ msgstr "passwd" #: g10/keyedit.c:514 msgid "change the passphrase" -msgstr "Die \"Passphrase\" ändern" +msgstr "Das Mantra ändern" #: g10/keyedit.c:515 msgid "trust" @@ -1994,7 +1983,7 @@ msgstr " #: g10/keyedit.c:1250 msgid "You can't change the expiration date of a v3 key\n" -msgstr "" +msgstr "Sie können das Verfallsdatum eines v3-Schlüssels nicht ändern\n" #: g10/keyedit.c:1266 msgid "No corresponding signature in secret ring\n" @@ -2040,20 +2029,20 @@ msgstr "Urspr #: g10/mainproc.c:833 msgid "signature verification suppressed\n" -msgstr "" +msgstr "Unterschriften-Überprüfung unterdrückt\n" #: g10/mainproc.c:839 #, c-format msgid "Signature made %.*s using %s key ID %08lX\n" -msgstr "Signatur am %.*s mit %s Schlüssel %08lX erzeugt\n" +msgstr "Unterschrieben am %.*s mit %s Schlüssel %08lX\n" #: g10/mainproc.c:847 msgid "BAD signature from \"" -msgstr "FALSCHE Signatur von \"" +msgstr "FALSCHE Unterschrift von \"" #: g10/mainproc.c:848 msgid "Good signature from \"" -msgstr "Gültige Signatur von \"" +msgstr "Korrekte Unterschrift von \"" #: g10/mainproc.c:861 #, c-format @@ -2066,7 +2055,7 @@ msgstr "Unterschrift nach alter (PGP 2.x) Art\n" #: g10/mainproc.c:939 msgid "invalid root packet detected in proc_tree()\n" -msgstr "" +msgstr "ungültiges root-Paket in proc_tree() entdeckt\n" #: g10/misc.c:88 #, c-format @@ -2077,22 +2066,6 @@ msgstr "core-dump-Erzeugung kann nicht abgeschaltet werden: %s\n" msgid "WARNING: Program may create a core file!\n" msgstr "WARNUNG: Programm könnte einen core-dump schreiben!\n" -#: g10/misc.c:198 -msgid "Experimental algorithms should not be used!\n" -msgstr "" - -#: g10/misc.c:212 -msgid "" -"RSA keys are deprecated; please consider creating a new key and use this key " -"in the future\n" -msgstr "" -"RSA Schlüssel sind nicht erwünscht; bitte denken Sie darüber nach, einen " -"neuen Schlüssel zu erzeugen und diesen in Zukunft zu benutzen\n" - -#: g10/misc.c:233 -msgid "This cipher algorithm is depreciated; please use a more standard one!\n" -msgstr "" - #: g10/parse-packet.c:109 #, c-format msgid "can't handle public key algorithm %d\n" @@ -2105,7 +2078,7 @@ msgid "" "user: \"" msgstr "" "\n" -"Sie benötigen eine \"passphrase\", um den geheimen Schlüssel zu entsperren.\n" +"Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren.\n" "Benutzer: \"" #: g10/passphrase.c:150 @@ -2115,11 +2088,11 @@ msgstr "(%u-Bit %s Schl #: g10/passphrase.c:174 msgid "Enter passphrase: " -msgstr "Geben Sie die \"Passphrase\" ein: " +msgstr "Geben Sie das Mantra ein: " #: g10/passphrase.c:178 msgid "Repeat passphrase: " -msgstr "Geben Sie die \"Passphrase\" nochmal ein: " +msgstr "Geben Sie das Mantra nochmal ein: " #: g10/plaintext.c:102 msgid "data not saved; use option \"--output\" to save it\n" @@ -2132,7 +2105,7 @@ msgstr "Bitte geben Sie den Namen der Datendatei ein: " #: g10/plaintext.c:236 msgid "reading stdin ...\n" -msgstr "" +msgstr "lese stdin ...\n" #: g10/plaintext.c:299 #, c-format @@ -2164,13 +2137,13 @@ msgstr "Schutzverfahren %d wird nicht unterst #: g10/seckey-cert.c:169 msgid "Invalid passphrase; please try again ...\n" -msgstr "Ungültige \"passphrase\"; versuchen Sie's doch noch einmal ...\n" +msgstr "Ungültiges Mantra; versuchen Sie's doch noch einmal ...\n" -#: g10/seckey-cert.c:216 +#: g10/seckey-cert.c:215 msgid "WARNING: Weak key detected - please change passphrase again.\n" msgstr "" "WARNUNG: Unsicherer Schlüssel entdeckt -\n" -" bitte die \"Passphrase\" nochmal eingeben.\n" +" bitte das Mantra nochmal eingeben.\n" #: g10/sig-check.c:155 msgid "" @@ -2195,7 +2168,7 @@ msgstr "Hinweis: Schl msgid "%s signature from: %s\n" msgstr "%s Unterschrift von: %s\n" -#: g10/sign.c:200 g10/sign.c:564 +#: g10/sign.c:200 g10/sign.c:558 #, c-format msgid "can't create %s: %s\n" msgstr "%s kann nicht erzeugt werden: %s\n" @@ -2266,7 +2239,7 @@ msgstr "%s: trust-db erzeugt\n" #: g10/tdbio.c:506 #, c-format msgid "%s: invalid trust-db\n" -msgstr "" +msgstr "%s: ungülte 'Trust'-Datenbank\n" #: g10/tdbio.c:540 #, c-format @@ -2315,70 +2288,70 @@ msgid "%s: invalid file version %d\n" msgstr "%s: invalid file version %d\n" #: g10/tdbio.c:1379 -#, fuzzy, c-format +#, c-format msgid "%s: error reading free record: %s\n" -msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n" +msgstr "%s: Fehler beim Lesen eines freien Satzes: %s\n" #: g10/tdbio.c:1387 -#, fuzzy, c-format +#, c-format msgid "%s: error writing dir record: %s\n" -msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n" +msgstr "%s: Fehler beim Schreiben eines Verzeichnis-Satzes: %s\n" #: g10/tdbio.c:1397 #, c-format msgid "%s: failed to zero a record: %s\n" -msgstr "" +msgstr "%s: konnte einen Satz nicht Nullen: %s\n" #: g10/tdbio.c:1427 #, c-format msgid "%s: failed to append a record: %s\n" -msgstr "" +msgstr "%s: konnte Satz nicht anhängen: %s\n" #: g10/trustdb.c:134 msgid "The trust DB is corrupted; please run \"gpgm --fix-trust-db\".\n" msgstr "" "Die \"Trust\"-Datenbank ist beschädigt; verwenden Sie \"gpgm " -"--fix-trust-db\".\n" +"--fix-trustdb\".\n" #: g10/trustdb.c:147 #, c-format msgid "trust record %lu, req type %d: read failed: %s\n" -msgstr "" +msgstr "trust record %lu, req type %d: read failed: %s\n" #: g10/trustdb.c:162 #, c-format msgid "trust record %lu, type %d: write failed: %s\n" -msgstr "" +msgstr "trust record %lu, type %d: write failed: %s\n" #: g10/trustdb.c:176 -#, fuzzy, c-format +#, c-format msgid "trust record %lu: delete failed: %s\n" -msgstr "Änderung des Geheimnises fehlgeschlagen: %s\n" +msgstr "Vertrauenssatz %lu: löschen fehlgeschlagen: %s\n" #: g10/trustdb.c:190 -#, fuzzy, c-format +#, c-format msgid "trust db: sync failed: %s\n" -msgstr "Änderung der \"Trust-DB\" fehlgeschlagen: %s\n" +msgstr "\"Trust-DB\": sync fehlgeschlagen: %s\n" #: g10/trustdb.c:319 -#, fuzzy, c-format +#, c-format msgid "error reading dir record for LID %lu: %s\n" -msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n" +msgstr "Fehler beim Lesen des Dir-Satzes für LID %lu: %s\n" #: g10/trustdb.c:326 #, c-format msgid "lid %lu: expected dir record, got type %d\n" -msgstr "" +msgstr "lid %lu: Dir-Satz erwartet, aber es kam Typ %d\n" #: g10/trustdb.c:331 #, c-format msgid "no primary key for LID %lu\n" -msgstr "" +msgstr "Kein Hauptschlüssel für LID %lu\n" #: g10/trustdb.c:336 -#, fuzzy, c-format +#, c-format msgid "error reading primary key for LID %lu: %s\n" -msgstr "Fehler beim Erzeugen der \"Passphrase\": %s\n" +msgstr "Fehler beim Lesen den Hauptschlüssels der LID %lu: %s\n" #: g10/trustdb.c:412 #, c-format @@ -2386,14 +2359,14 @@ msgid "chained sigrec %lu has a wrong owner\n" msgstr "Verketteter Signatursatz %lu hat einen falschen Besitzer\n" #: g10/trustdb.c:455 -#, fuzzy, c-format +#, c-format msgid "'%s' is not a valid long keyID\n" -msgstr "%s ist kein gültiger Zeichensatz.\n" +msgstr "'%s' ist keine gültige lange Schlüssel-ID\n" #: g10/trustdb.c:490 -#, fuzzy, c-format +#, c-format msgid "key %08lX: no public key for trusted key - skipped\n" -msgstr "Schlüssel %08lX: geheimer, aber kein öffentlicher Schlüssel.\n" +msgstr "Schlüssel %08lX: kein öffentlicher Schüssel für vertrauenswürdigen Schlüssel - übersprungen\n" #: g10/trustdb.c:499 g10/trustdb.c:557 #, c-format @@ -2406,24 +2379,24 @@ msgid "key %08lX: query record failed\n" msgstr "Schlüssel %08lX: Satzabfrage fehlgeschlagen\n" #: g10/trustdb.c:509 g10/trustdb.c:572 -#, fuzzy, c-format +#, c-format msgid "key %08lX: already in trusted key table\n" -msgstr "Schlüssel %08lX: Ist bereits im geheimen Schlüsseltabelle\n" +msgstr "Schlüssel %08lX: Ist bereits in geheimer Schlüsseltabelle\n" #: g10/trustdb.c:512 g10/trustdb.c:575 -#, fuzzy, c-format +#, c-format msgid "key %08lX: accepted as trusted key.\n" -msgstr "Schlüssel %08lX: Akzeptiert als geheimer Schlüssel\n" +msgstr "Schlüssel %08lX: Akzeptiert als vertrauenswürdiger Schlüssel.\n" #: g10/trustdb.c:528 -#, fuzzy, c-format +#, c-format msgid "NOTE: secret key %08lX is NOT protected.\n" -msgstr "Dieser Schlüssel ist nicht geschützt.\n" +msgstr "HINWEIS: Geheimer Schlüssel %08lX ist NICHT geschützt.\n" #: g10/trustdb.c:540 -#, fuzzy, c-format +#, c-format msgid "key %08lX: secret key without public key - skipped\n" -msgstr "Schlüssel %08lX: geheimer, aber kein öffentlicher Schlüssel.\n" +msgstr "Schlüssel %08lX: geheimer Schlüssel, aber ohne öffentlichen Schlüssel - übersprungen\n" #: g10/trustdb.c:547 #, c-format @@ -2500,7 +2473,7 @@ msgid "" "# List of assigned trustvalues, created %s\n" "# (Use \"gpgm --import-ownertrust\" to restore them)\n" msgstr "" -"# Liste der zugewisenen trustvalues, erzeugt am %s\n" +"# Liste der zugewisenen \"trustvalues\", erzeugt am %s\n" "# (Verwenden Sie \"gpgm --import-ownertrust\" um sie wieder einzuspielen)\n" #: g10/trustdb.c:1131 @@ -2531,12 +2504,12 @@ msgstr "Fehler: Keine \"Owner trust\" Werte\n" #: g10/trustdb.c:1209 #, c-format msgid "LID %lu: changing trust from %u to %u\n" -msgstr "" +msgstr "LID %lu: Ändern des 'Trusts' von %u auf %u\n" #: g10/trustdb.c:1212 #, c-format msgid "LID %lu: setting trust to %u\n" -msgstr "" +msgstr "LID %lu: Setze 'Trust' auf %u\n" #: g10/trustdb.c:1220 msgid "key not in trustdb, searching ring.\n" @@ -2566,17 +2539,17 @@ msgstr "Fehler beim Auffinden des Verz.Satzes: %s\n" #: g10/trustdb.c:1305 #, c-format msgid "user '%s' not in trustdb - inserting\n" -msgstr "" +msgstr "User '%s' ist nich in der 'Trust'-Datenbank - wird eingefügt\n" #: g10/trustdb.c:1308 #, c-format msgid "failed to put '%s' into trustdb: %s\n" -msgstr "" +msgstr "konnte '%s' nicht in die 'Trust'-Datenbank hineintun: %s\n" #: g10/trustdb.c:1355 #, c-format msgid "%s: keyblock read problem: %s\n" -msgstr "%s: keyblock Leseproblem: %s\n" +msgstr "%s: Schlüsselblock Leseproblem: %s\n" #: g10/trustdb.c:1369 #, c-format @@ -2596,12 +2569,12 @@ msgstr "%s: In Ordnung\n" #: g10/trustdb.c:1389 #, c-format msgid "lid %lu: dir record w/o key - skipped\n" -msgstr "" +msgstr "lid %lu: Dir-Satz ohne Schlüssel - übergangen\n" #: g10/trustdb.c:1402 #, c-format msgid "lid %lu: keyblock not found: %s\n" -msgstr "lid %lu: keyblock nicht gefunden: %s\n" +msgstr "lid %lu: Schlüsselblock nicht gefunden: %s\n" #: g10/trustdb.c:1411 g10/trustdb.c:1480 #, c-format @@ -2661,12 +2634,12 @@ msgstr "\t%lu Schl #: g10/trustdb.c:1505 #, c-format msgid "enumerate keyblocks failed: %s\n" -msgstr "enumerate keyblocks fehlgeschlagen: %s\n" +msgstr "enumerate Schlüsselblock fehlgeschlagen: %s\n" #: g10/trustdb.c:1550 #, c-format msgid "check_trust: search dir record failed: %s\n" -msgstr "" +msgstr "check_trust: Suche nach Dir-Satz fehlgeschlagen: %s\n" #: g10/trustdb.c:1557 #, c-format @@ -2697,12 +2670,12 @@ msgstr "Schl #: g10/trustdb.c:1753 g10/trustdb.c:1782 g10/trustdb.c:2521 msgid "WARNING: can't yet handle long pref records\n" -msgstr "" +msgstr "WARNUNG: Lange 'Pref'-Records können noch nicht benutzt werden\n" #: g10/trustdb.c:1804 #, c-format msgid "get_dir_record: search_record failed: %s\n" -msgstr "" +msgstr "get_dir_record: search_record fehlgeschlagen: %s\n" #: g10/trustdb.c:1867 #, c-format @@ -2807,7 +2780,7 @@ msgstr "Ung #: g10/trustdb.c:2386 msgid "Valid user ID revocation skipped due to a newer self signature\n" -msgstr "" +msgstr "Gültiger User-ID-Widerruf ignoriert, da eine neuere Eigenbeglaubigung vorliegt\n" #: g10/trustdb.c:2393 msgid "Valid user ID revocation\n" @@ -2844,22 +2817,22 @@ msgstr "Ung #: g10/trustdb.c:2696 #, c-format msgid "uid %08lX.%lu/%02X%02X: has shadow dir %lu but is not yet marked.\n" -msgstr "" +msgstr "uid %08lX.%lu/%02X%02X: hat \"shadow-dir\" %lu, aber ist noch nicht markiert.\n" #: g10/trustdb.c:2710 #, c-format msgid "sig record %lu[%d] points to wrong record.\n" -msgstr "" +msgstr "Signatursatz %lu[%d] zeigt auf falschen Satz.\n" #. that should never happen #: g10/trustdb.c:2954 #, c-format msgid "insert_trust_record: keyblock not found: %s\n" -msgstr "" +msgstr "insert_trust_record: Schlüsselblock nicht gefunden: %s\n" #: g10/trustdb.c:2972 msgid "did not use primary key for insert_trust_record()\n" -msgstr "" +msgstr "Für insert_trust_record() wurde nicht der Hauptschlüssel benutzt\n" #: g10/ringedit.c:293 #, c-format @@ -2956,141 +2929,211 @@ msgstr "" #. begin of list #: g10/helptext.c:45 +#"It's up to you to assign a value here; this value will never be exported\n" +#"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." msgid "edit_ownertrust.value" msgstr "" +"SIE müssen hier einen Wert eingeben. Dieser Wert wird niemals an eine Dritte\n" +"weitergegeben (exportiert) werden. Wir brauchen ihn zum Aufbau des\n" +"\"web-of-trust\", Er hat nichts mit dem (stillschweigend aufgebautem)\n" +"\"web-of-certificates\" zu tun." #: g10/helptext.c:51 +#"If you want to use this revoked key anyway, answer \"yes\"." msgid "revoked_key.override" msgstr "" +"Wenn Sie diesen widerrufenen Schlüssel trotzdem benutzen wollen,\n" +"so antworten Sie mit \"ja\" oder schweigen für immer." #: g10/helptext.c:55 +#"If you want to use this untrusted key anyway, answer \"yes\"." msgid "untrusted_key.override" msgstr "" +"Wenn Sie diesen nichtvertruenswürdigen Schlüssel trotzdem benutzen wollen,\n" +"so antworten Sie mit \"ja\" oder schweigen Sie für immer." #: g10/helptext.c:59 +#"Enter the user id of the addresse to whom you want to send the message." msgid "pklist.user_id.enter" -msgstr "" +msgstr "Geben Sie die User-ID dessen ein, an den Sie die Botschaft senden wollen." #: g10/helptext.c:63 msgid "keygen.algo" msgstr "" +"Wählen Sie die zu verwendende Methode aus.\n" +"DSA (alias DSS) bedeutet \"digital signature algorithm\" (Digitales\n" +" Unterschrift-Verfahren). Es kann nur zum Unterschreiben und Beglaubigen\n" +" benutzt werden. Dies ist das empfohlene Verfahren, da dessen Überprüfung\n" +" wesentlich schneller abläuft, als die von \"ElGamal\".\n" +"\n" +"ElGamal ist ein Verfahren für Unterschrift, Beglaubigung und " +"Verschlüsselung\n" +" OpenPGP unterscheidet zwischen zwei Arten von ElGamal: eines nur zum\n" +" Unterschreiben/Beglaubigen und eines zusätzlich zum Verschlüsseln.\n" +" Eigentlich sind diese Arten identisch; allerdings müssen einige Parameter\n" +" auf eine besondere Art gewählt werden, um einen sicheren Schlüssel für\n" +" Unterschriften zu erzeugen. Dieses Programm macht dies zwar so, aber " +"andere\n" +" Programme sind nach OpenPGP-Spezifikation nicht verpflichtet die zweite " +"Art\n" +" (die mit zusätzlichem Verschlüsseln) zu verstehen.\n" +"\n" +"Der Hauptschlüssel (\"primary Key\") muß auf jeden Fall zum Unterschreiben " +"fähig\n" +"sein. Deshalb kann ein Nur-Verschlüssel-ElGamal-Schlüssel dafür nicht\n" +"verwendet werden.\n" +"Auch sollte man \"ElGamal in einem v3-Paket\" nicht verwenden, denn solch " +"ein\n" +"Schlüssel ist nicht mit anderen Programmen nach der OpenPGP-Spezifikation\n" +"verträglich." -#: g10/helptext.c:79 -msgid "keygen.algo.elg_se" -msgstr "" - -#: g10/helptext.c:86 +#: g10/helptext.c:80 +#"Enter the size of the key" msgid "keygen.size" msgstr "" +"Wählen Sie die gewünschte Schlüssellänge.\n" +"\n" +"Ein langer Schlüssel bietet mehr Sicherheit, kostet aber auch mehr " +"Rechenzeit.\n" +"Ein kurzer Schlüssel ist nicht ganz so sicher, wird aber schneller " +"bearbeitet.\n" +"1024 Bit ist für den Heimgebrauch ein brauchbarer Wert. Wenn Sie aber z.B. " +"in\n" +"Atlanta, Georgia, USA für eine Limonandenfabrik arbeiten, und das Rezept\n" +"speichern wollen (\"SCHLEMMER!\"), so wären 2048 Bit kein schlechter Wert." -#: g10/helptext.c:90 +#: g10/helptext.c:84 +#"Answer \"yes\" or \"no\"" msgid "keygen.size.huge.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:95 +#: g10/helptext.c:89 msgid "keygen.size.large.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:100 +#: g10/helptext.c:94 msgid "keygen.valid" -msgstr "" +msgstr "Geben Sie den erforderlichen Wert ein" -#: g10/helptext.c:104 +#: g10/helptext.c:98 msgid "keygen.valid.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:109 +#: g10/helptext.c:103 +# "Enter the name of the key holder" msgid "keygen.name" -msgstr "" +msgstr "Geben Sie den Namen des Schlüsselinhabers ein" -#: g10/helptext.c:114 +#: g10/helptext.c:108 +#"please enter an optional but highly suggested email address" msgid "keygen.email" -msgstr "" +msgstr "Geben Sie eine E-Mail-Adresse ein. Dies ist zwar nicht notwendig,\n" +"aber empfehlenswert." -#: g10/helptext.c:118 +#: g10/helptext.c:112 +# "Please enter an optional comment" msgid "keygen.comment" -msgstr "" +msgstr "Geben Sie (bei Bedarf) einen Kommentar ein" -#: g10/helptext.c:123 -#, fuzzy +#: g10/helptext.c:117 +#"N to change the name.\n" +#"C to change the comment.\n" +#"E to change the email address.\n" +#"O to continue with key generation.\n" +#"Q to to quit the key generation." msgid "keygen.userid.cmd" -msgstr "Geben Sie bitte \"help\" ein." +msgstr "" +"N um den Namen zu ändern.\n" +"K um den Kommentar zu ändern.\n" +"E um die E-Mail-Adresse zu ändern.\n" +"F um mit der Schlüsselerzeugung fortzusetzen.\n" +"B um die Schlüsselerzeugung abbrechen." -#: g10/helptext.c:132 +#: g10/helptext.c:126 +# "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key." msgid "keygen.sub.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" (oder nur \"j\") ein, um den Unterschlüssel zu erzeugen." -#: g10/helptext.c:136 +#: g10/helptext.c:130 +# "Answer \"yes\" or \"no\"" msgid "sign_uid.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:141 +#: g10/helptext.c:135 +# "Answer \"yes\" or \"no\"" msgid "change_passwd.empty.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:146 +#: g10/helptext.c:140 +# "Please enter \"help\" to see the list of commands." msgid "keyedit.cmd" -msgstr "Geben Sie bitte \"help\" ein." +msgstr "Geben Sie \"help\" ein, um die Liste der Befehle einzusehen." -#: g10/helptext.c:150 +#: g10/helptext.c:144 +# "Answer \"yes\" or \"no\"" msgid "keyedit.save.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:155 -#, fuzzy +#: g10/helptext.c:149 msgid "keyedit.cancel.okay" -msgstr "Geben Sie bitte \"help\" ein." +msgstr "Geben Sie \"Ja\" oder \"Nein\" ein" -#: g10/helptext.c:159 +#: g10/helptext.c:153 +# "Answer \"yes\" is you want to sign ALL the user IDs" msgid "keyedit.sign_all.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" (oder nur \"j\") ein, um alle User-IDs zu beglaubigen" -#: g10/helptext.c:163 +#: g10/helptext.c:157 +# "Answer \"yes\" if you really want to delete this user ID.\n" +# "All ceritifcates are then also lost!" msgid "keyedit.remove.uid.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" (oder nur \"j\") ein, um diese User-ID zu LÖSCHEN.\n" +"Alle Zertifikate werden dann auch weg sein!" -#: g10/helptext.c:168 +#: g10/helptext.c:162 +# "Answer \"yes\" if it is okay to delete the subkey" msgid "keyedit.remove.subkey.okay" -msgstr "" +msgstr "Geben Sie \"Ja\" (oder nur \"j\") ein, um diesen Unterschlüssel zu löschen" # ################################ # ####### Help msgids ############ # ################################ -#: g10/helptext.c:172 +#: g10/helptext.c:166 msgid "passphrase.enter" msgstr "" -"Bitte geben Sie die \"Passhrase\" ein; dies ist ein geheimer Satz der aus\n" -"beliebigen Zeichen bestehen kann. Was Sie eingegeben wird nicht angezeigt.\n" -"Zur ihrer eigenen Sicherbeit benutzen Sie biite einen Satz, den sie sich\n" -"gut merken könne, der aber nicht leicht zu raten ist; Zitate und andere\n" +"Bitte geben Sie das Mantra ein. Dies ist ein geheimer Satz, der aus\n" +"beliebigen Zeichen bestehen kann. Was Sie eingegeben wird nicht angezeigt.\n\n" +"Zur ihrer eigenen Sicherbeit benutzen Sie bitte einen Satz, den sie sich\n" +"gut merken könne, der aber nicht leicht zu erraten ist; Zitate und andere\n" "bekannte Texte sind eine SCHLECHTE Wahl, da diese mit Sicherheit online\n" -"verfügbar sind und durch entsprechende Programme zum Raten der " -"\"Passphrase\"\n" +"verfügbar sind und durch entsprechende Programme zum Raten des Mantras\n" "benutzt werden. Sätze mit persönlicher Bedeutung, die auch noch durch\n" -"falsche Groß-/Kleinschreibung und eingestreute Sonderzeichen verändert " -"werden,\n" +"falsche Groß-/Kleinschreibung und eingestreute Sonderzeichen verändert werden,\n" "sind i.d.R. eine gute Wahl" -#: g10/helptext.c:179 +#: g10/helptext.c:173 msgid "passphrase.repeat" msgstr "" -"Um sicher zu gehen, daß Sie sich bei der Eingabe der \"Passphrase\" nicht\n" +"Um sicher zu gehen, daß Sie sich bei der Eingabe des Mantras nicht\n" "vertippt haben, geben Sie diese bitte nochmal ein. Nur wenn beide Eingaben\n" -"übereinstimmen, wird die \"Passphrase\" akzeptiert." +"übereinstimmen, wird das Mantra akzeptiert." -#: g10/helptext.c:183 +#: g10/helptext.c:177 +# "Give the name fo the file to which the signature applies" msgid "detached_signature.filename" -msgstr "" +msgstr "Geben Sie den Namen der Datei an, zu dem die abgetrennte Unterschrift gehört" -#: g10/helptext.c:187 +#: g10/helptext.c:181 +# "Answer \"yes\" if it is okay to overwrite the file" msgid "openfile.overwrite.okay" msgstr "Geben Sie \"ja\" ein, wenn Sie die Datei überschreiben möchten" -#: g10/helptext.c:201 +#: g10/helptext.c:195 msgid "No help available" msgstr "Keine Hilfe vorhanden." -#: g10/helptext.c:213 +#: g10/helptext.c:207 #, c-format msgid "No help available for '%s'" msgstr "Keine Hilfe für '%s' vorhanden."