diff options
author | Werner Koch <[email protected]> | 1998-07-08 09:29:43 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1998-07-08 09:29:43 +0000 |
commit | 5aed77d1dbd95a8a0be4d579fd023775ddc85223 (patch) | |
tree | e9b043aa908c90590b4d2f78639fd24b0a2b83c7 | |
parent | Added new key infos (diff) | |
download | gnupg-5aed77d1dbd95a8a0be4d579fd023775ddc85223.tar.gz gnupg-5aed77d1dbd95a8a0be4d579fd023775ddc85223.zip |
fixed clearsig stuff
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | checks/ChangeLog | 4 | ||||
-rw-r--r-- | checks/Makefile.am | 2 | ||||
-rwxr-xr-x | checks/clearsig.test | 22 | ||||
-rwxr-xr-x | checks/defs.inc | 3 | ||||
-rwxr-xr-x | checks/seat.test | 10 | ||||
-rw-r--r-- | doc/gpg.1pod | 27 | ||||
-rw-r--r-- | g10/ChangeLog | 17 | ||||
-rw-r--r-- | g10/armor.c | 15 | ||||
-rw-r--r-- | g10/export.c | 18 | ||||
-rw-r--r-- | g10/g10.c | 6 | ||||
-rw-r--r-- | g10/getkey.c | 8 | ||||
-rw-r--r-- | g10/import.c | 190 | ||||
-rw-r--r-- | g10/mainproc.c | 32 | ||||
-rw-r--r-- | g10/options.h | 3 | ||||
-rw-r--r-- | g10/packet.h | 3 | ||||
-rw-r--r-- | g10/plaintext.c | 66 | ||||
-rw-r--r-- | g10/sign.c | 44 | ||||
-rw-r--r-- | g10/textfilter.c | 5 | ||||
-rw-r--r-- | include/cipher.h | 5 | ||||
-rw-r--r-- | include/util.h | 17 | ||||
-rw-r--r-- | po/POTFILES.in | 21 | ||||
-rw-r--r-- | po/de.po | 1392 | ||||
-rw-r--r-- | util/ChangeLog | 4 | ||||
-rw-r--r-- | util/iobuf.c | 2 | ||||
-rw-r--r-- | util/logger.c | 56 | ||||
-rw-r--r-- | zlib/Makefile | 2 |
28 files changed, 1411 insertions, 567 deletions
@@ -1,7 +1,7 @@ * add option --restore-ownertrust - * add options: --default-signature-user, --default-encryption-user + * always put key signatures before the first subkey. * Change the formatting of log_xxxx to GNU standards ("name:filename:line: text") @@ -1 +1 @@ -0.3.1 +0.3.1a diff --git a/checks/ChangeLog b/checks/ChangeLog index d0bcf614b..6e1cb4187 100644 --- a/checks/ChangeLog +++ b/checks/ChangeLog @@ -1,3 +1,7 @@ +Wed Jul 8 10:43:47 1998 Werner Koch ([email protected]) + + * seat.test: New. + Mon May 18 15:40:02 1998 Werner Koch ([email protected]) * Makefile.am: Now uses mk-tdata to produce random test data. diff --git a/checks/Makefile.am b/checks/Makefile.am index ae09b207b..985778a1a 100644 --- a/checks/Makefile.am +++ b/checks/Makefile.am @@ -4,7 +4,7 @@ TESTS = version.test mds.test \ decrypt.test decrypt-dsa.test \ sigs.test sigs-dsa.test \ encrypt.test encrypt-dsa.test \ - clearsig.test encryptp.test detach.test \ + seat.test clearsig.test encryptp.test detach.test \ armsigs.test armencrypt.test armencryptp.test \ signencrypt.test signencrypt-dsa.test \ armsignencrypt.test armdetach.test \ diff --git a/checks/clearsig.test b/checks/clearsig.test index a8d5039bd..768c59d9b 100755 --- a/checks/clearsig.test +++ b/checks/clearsig.test @@ -2,19 +2,17 @@ . defs.inc || exit 3 -#info Checking cleartext signatures -# There is a minor glitch, which appends an lf to the cleartext. -# I do not consider that a bug, but I have to use the head .. mimic. -# It is not clear what should happen to leading LFs, we must -# change the defintion of cleartext, so that only 1 empty line -# must follow the headers, but some specs say: any number of empty lines .. -# clean-sat removes leading LFs -# I know that this does not work for random data files (due to large lines -# or what ever) - I hope we can live with it. +# I can't compare the out because plain-3 has no LF as last charcater +# but the output has always one. I do not thinkl this is a bug, because +# it is clear text and not binary text. for i in $plain_files; do echo "$usrpass1" | ./run-gpg --passphrase-fd 0 -sat -o x --yes $i - ./run-gpg -o y --yes x - ../tools/clean-sat < $i > z - head -c $[ $(cat y | wc -c) - 1 ] y | diff - z || error "$i: mismatch" + ./run-gpg --verify x +done +# and once more to check rfc1991 +for i in $plain_files; do + echo "$usrpass1" | ./run-gpg --passphrase-fd 0 \ + --rfc1991 --digest-algo md5 -sat -o x --yes $i + ./run-gpg --verify x done diff --git a/checks/defs.inc b/checks/defs.inc index 78954426f..61e07ee5c 100755 --- a/checks/defs.inc +++ b/checks/defs.inc @@ -21,9 +21,8 @@ dsa_usrname2="0xCB879DE9" dsa_keyrings="--keyring ./pubring.pkr --secret-keyring ./secring.skr" -#plain_files="plain-1 plain-2 plain-3" +plain_files="plain-1 plain-2 plain-3" #data_files="data-500 data-9000 data-32000 data-80000" -plain_files="plain-1 plain-2" data_files="data-500 data-9000" exp_files="" diff --git a/checks/seat.test b/checks/seat.test new file mode 100755 index 000000000..7e95b8bd8 --- /dev/null +++ b/checks/seat.test @@ -0,0 +1,10 @@ +#!/bin/sh + +. defs.inc || exit 3 + +for i in $plain_files ; do + echo "$usrpass1" | ./run-gpg --passphrase-fd 0 -seat -r two -o x --yes $i + ./run-gpg -o y --yes x + cmp $i y || error "$i: mismatch" +done + diff --git a/doc/gpg.1pod b/doc/gpg.1pod index 8a67dfb09..726e97696 100644 --- a/doc/gpg.1pod +++ b/doc/gpg.1pod @@ -61,7 +61,7 @@ B<--verify> [[I<sigfile>] {I<signed-files>}] B<-k> [I<username>] [I<keyring>] Kludge to be somewhat compatible with PGP. - Without arguments, all public key-rings are listed. + Without arguments, all public keyrings are listed. With one argument, only I<keyring> is listed. Special combinations are also allowed, but it may give strange results when combined with more options. @@ -129,8 +129,8 @@ B<--gen-revoke> Generate a revocation certificate. B<--export> [I<names>] - Either export all keys from all key-rings (default - key-rings and those registered via option B<--keyring>), + Either export all keys from all keyrings (default + keyrings and those registered via option B<--keyring>), or if at least one name is given, those of the given name. The new keyring is written to F<stdout> or to the file given with option "output". Use together @@ -165,6 +165,11 @@ B<-u> I<name>, B<--local-user> I<name> This option is silently ignored for the list commands, so that it can be used in an options file. +B<--default-key> I<name> + Use I<name> as default user-id for signatures. If this + is not used the default user-id is the first user-id in + the secret keyring. + B<-r> I<name>, B<--remote-user> I<name> Use I<name> as the user-id for encryption. This option is silently ignored for the list commands, @@ -202,14 +207,15 @@ B<--no> Assume no on most questions. B<--keyring> I<file> - Add I<file> to the list of key-rings. + Add I<file> to the list of keyrings. If I<file> begins with a tilde and a slash, these are replaced by the HOME directory. If the filename does not contain a slash, it is assumed to be in the home-directory (F<~/.gnupg> if B<--homedir>) is not used. B<--secret-keyring> I<file> - Same as B<--keyring> but for secret key-rings. + Same as B<--keyring> but for secret keyrings. + B<--homedir> I<dir> Set the name of the home directory to I<dir>. If this @@ -287,8 +293,8 @@ B<--no-armor> Assume the input data is not in ASCCI armored format. B<--no-default-keyring> - Do not add the default key-rings to the list of - key-rings. + Do not add the default keyrings to the list of + keyrings. B<--skip-verify> Skip the signature verification step. This may be used to @@ -329,17 +335,14 @@ C<GNUPGHOME> If set, direcory used instead of F<~/.gnupg>. =head1 FILES -F<~/.gnupg/secring.gpg> The secret key-ring +F<~/.gnupg/secring.gpg> The secret keyring -F<~/.gnupg/pubring.gpg> The public key-ring +F<~/.gnupg/pubring.gpg> The public keyring F<~/.gnupg/trustdb.gpg> The trust database -F<~/.gnupg/gnupg.gpg> Signature of GNUPG files. - F<~/.gnupg/options> May contain options - =head1 SEE ALSO gpgm(1) gpgd(1) diff --git a/g10/ChangeLog b/g10/ChangeLog index 664d378bb..7525c1818 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,20 @@ +Wed Jul 8 10:45:28 1998 Werner Koch ([email protected]) + + * plaintext.c (special_md_putc): New. + (handle_plaintext): add clearsig argument + * mainproc.c (proc_plaintext): detection of clearsig + * sign.c (write_dased_escaped): Changed clearsig format + +Tue Jul 7 18:56:19 1998 Werner Koch ([email protected]) + + * armor.c (find_header): Now makes sure that there is only one + empty line for clearsigs, as this is what OP now says. + +Mon Jul 6 13:09:07 1998 Werner Koch ([email protected]) + + * g10.c (main): New option default-secret-key + * getkey.c (get_seckey_byname): support for this option. + Mon Jul 6 09:03:49 1998 Werner Koch ([email protected]) * getkey.c (add_keyring): Keyrings are now added to end of the diff --git a/g10/armor.c b/g10/armor.c index 1dd028afc..46151eae8 100644 --- a/g10/armor.c +++ b/g10/armor.c @@ -380,16 +380,13 @@ find_header( fhdr_state_t state, byte *buf, size_t *r_buflen, state = fhdrEOF; break; - case fhdrWAITClearsig: /* skip all empty lines (for clearsig) */ + case fhdrWAITClearsig: /* skip the empty line (for clearsig) */ c = 0; for(n=0; n < buflen && (c=iobuf_get2(a)) != -1 && c != '\n'; ) buf[n++] = c; if( n < buflen || c == '\n' ) { buf[n] = 0; - if( !n || (buf[0]=='\r' && !buf[1]) ) /* empty line */ - ; - else - state = fhdrCHECKDashEscaped3; + state = fhdrCHECKDashEscaped3; } else { /* fixme: we should check whether this line continues @@ -590,6 +587,7 @@ find_header( fhdr_state_t state, byte *buf, size_t *r_buflen, buf[1] = '\n'; n = 2; } + } @@ -715,13 +713,6 @@ fake_packet( armor_filter_context_t *afx, IOBUF a, break; case fhdrENDClearsig: - /* FIXME: this is wrong: Only the last CRLF should - * not be included in the hash, muts rewrite the FSM again - * This proble does only occur if the last line does not end - * in with a LF? - */ - if( emplines ) - emplines--; /* don't count the last one */ state = fhdrENDClearsigHelp; afx->helplen = n; break; diff --git a/g10/export.c b/g10/export.c index 68e83a268..2c824d2b0 100644 --- a/g10/export.c +++ b/g10/export.c @@ -125,6 +125,24 @@ do_export( STRLIST users, int secret ) /* and write it */ for( kbctx=NULL; (node = walk_kbnode( keyblock, &kbctx, 0 )); ) { + if( opt.do_not_export_rsa ) { + int algo; + switch( node->pkt->pkttype ) { + /* note: we can� do this for subkeys here */ + case PKT_PUBLIC_KEY: + algo = node->pkt->pkt.public_key->pubkey_algo; + break; + case PKT_SECRET_KEY: + algo = node->pkt->pkt.secret_key->pubkey_algo; + break; + case PKT_SIGNATURE: + algo = node->pkt->pkt.signature->pubkey_algo; + break; + default: algo = 0; + } + if( is_RSA(algo) ) + continue; + } if( (rc = build_packet( out, node->pkt )) ) { log_error("build_packet(%d) failed: %s\n", node->pkt->pkttype, g10_errstr(rc) ); @@ -76,6 +76,7 @@ static ARGPARSE_OPTS opts[] = { #endif { 537, "export" , 0, N_("export keys") }, { 563, "export-secret-keys" , 0, "@" }, + { 565, "do-not-export-rsa", 0, "@" }, { 530, "import", 0 , N_("import/merge keys")}, { 521, "list-packets",0,N_("list only the sequence of packets")}, #ifdef IS_G10MAINT @@ -105,6 +106,7 @@ static ARGPARSE_OPTS opts[] = { { 502, "no", 0, N_("assume no on most questions")}, { 509, "keyring" ,2, N_("add this keyring to the list of keyrings")}, { 517, "secret-keyring" ,2, N_("add this secret keyring to the list")}, + { 541, "default-key" ,2, N_("|NAME|use NAME as default secret key")}, { 518, "options" , 2, N_("read options from file")}, { 510, "debug" ,4|16, N_("set debugging flags")}, @@ -168,8 +170,6 @@ static ARGPARSE_OPTS opts[] = { {0} }; -/* (Free numbers: 541) */ - enum cmd_values { aNull = 0, aSym, aStore, aEncr, aKeygen, aSign, aSignEncr, @@ -575,6 +575,7 @@ main( int argc, char **argv ) case 536: opt.marginals_needed = pargs.r.ret_int; break; case 537: set_cmd( &cmd, aExport); break; case 538: trustdb_name = pargs.r.ret_str; break; + case 541: opt.def_secret_key = pargs.r.ret_str; break; case 543: break; /* no-options */ case 544: opt.homedir = pargs.r.ret_str; break; case 545: opt.batch = 0; break; @@ -591,6 +592,7 @@ main( int argc, char **argv ) case 561: opt.rfc1991 = 1; break; case 562: opt.emulate_bugs |= 1; break; case 563: set_cmd( &cmd, aExportSecret); break; + case 565: opt.do_not_export_rsa = 1; break; default : errors++; pargs.err = configfp? 1:2; break; } } diff --git a/g10/getkey.c b/g10/getkey.c index 0c69efb0b..c51e54bd9 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -532,8 +532,12 @@ get_seckey_byname( PKT_secret_key *sk, const char *name, int unprotect ) { int rc; - rc = name ? key_byname( 1, NULL, sk, name ) - : lookup_sk( sk, 15, NULL, NULL ); + if( !name && opt.def_secret_key && *opt.def_secret_key ) + rc = key_byname( 1, NULL, sk, opt.def_secret_key ); + else if( !name ) /* use the first one as default key */ + rc = lookup_sk( sk, 15, NULL, NULL ); + else + rc = key_byname( 1, NULL, sk, name ); if( !rc && unprotect ) rc = check_secret_key( sk ); diff --git a/g10/import.c b/g10/import.c index 3ed6b96bb..d32852cf0 100644 --- a/g10/import.c +++ b/g10/import.c @@ -33,6 +33,7 @@ #include "util.h" #include "trustdb.h" #include "main.h" +#include "i18n.h" static int read_block( IOBUF a, compress_filter_context_t *cfx, @@ -101,7 +102,7 @@ import_keys( const char *fname ) if( !fname ) fname = "[stdin]"; if( !inp ) { - log_error("%s: can't open file: %s\n", fname, strerror(errno) ); + log_error_f(fname, _("can't open file: %s\n"), strerror(errno) ); return G10ERR_OPEN_FILE; } @@ -116,9 +117,10 @@ import_keys( const char *fname ) else if( keyblock->pkt->pkttype == PKT_SIGNATURE && keyblock->pkt->pkt.signature->sig_class == 0x20 ) rc = import_revoke_cert( fname, keyblock ); - else - log_info("%s: skipping block of type %d\n", - fname, keyblock->pkt->pkttype ); + else { + log_info_f(fname, _("skipping block of type %d\n"), + keyblock->pkt->pkttype ); + } release_kbnode(keyblock); if( rc ) break; @@ -126,7 +128,7 @@ import_keys( const char *fname ) if( rc == -1 ) rc = 0; else if( rc && rc != G10ERR_INV_KEYRING ) - log_error("%s: read error: %s\n", fname, g10_errstr(rc)); + log_error_f( fname, _("read error: %s\n"), g10_errstr(rc)); iobuf_close(inp); return rc; @@ -255,7 +257,7 @@ import_one( const char *fname, KBNODE keyblock ) uidnode = find_next_kbnode( keyblock, PKT_USER_ID ); if( opt.verbose ) { - log_info("%s: pub %4u%c/%08lX %s ", fname, + log_info_f( fname, "pub %4u%c/%08lX %s ", nbits_from_pk( pk ), pubkey_letter( pk->pubkey_algo ), (ulong)keyid[1], datestr_from_pk(pk) ); @@ -265,7 +267,7 @@ import_one( const char *fname, KBNODE keyblock ) putc('\n', stderr); } if( !uidnode ) { - log_error("%s: No user id for key %08lX\n", fname, (ulong)keyid[1]); + log_error_f(fname, _("key %08lX: no user id\n"), (ulong)keyid[1]); return 0; } @@ -275,8 +277,8 @@ import_one( const char *fname, KBNODE keyblock ) return rc== -1? 0:rc; if( !delete_inv_parts( fname, keyblock, keyid ) ) { - log_info("%s: key %08lX, no valid user ids\n", - fname, (ulong)keyid[1]); + log_info_f( fname, _("key %08lX: no valid user ids\n"), + (ulong)keyid[1]); return 0; } @@ -284,27 +286,27 @@ import_one( const char *fname, KBNODE keyblock ) pk_orig = m_alloc_clear( sizeof *pk_orig ); rc = get_pubkey( pk_orig, keyid ); if( rc && rc != G10ERR_NO_PUBKEY ) { - log_error("%s: key %08lX, public key not found: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f( fname, _("key %08lX: public key not found: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); } else if( rc ) { /* insert this key */ /* get default resource */ if( get_keyblock_handle( NULL, 0, &kbpos ) ) { - log_error("no default public keyring\n"); + log_error(_("no default public keyring\n")); return G10ERR_GENERAL; } if( opt.verbose > 1 ) - log_info("%s: writing to '%s'\n", - fname, keyblock_resource_name(&kbpos) ); + log_info_f( fname, _("writing to '%s'\n"), + keyblock_resource_name(&kbpos) ); if( (rc=lock_keyblock( &kbpos )) ) - log_error("can't lock public keyring '%s': %s\n", - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f( keyblock_resource_name(&kbpos), + _("can't lock public keyring: %s\n"), g10_errstr(rc) ); else if( (rc=insert_keyblock( &kbpos, keyblock )) ) - log_error("%s: can't write to '%s': %s\n", fname, - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f( keyblock_resource_name(&kbpos), + _("can't write to keyring: %s\n"), g10_errstr(rc) ); unlock_keyblock( &kbpos ); /* we are ready */ - log_info("%s: key %08lX imported\n", fname, (ulong)keyid[1]); + log_info_f( fname, _("key %08lX: public key imported\n"), (ulong)keyid[1]); } else { /* merge */ int n_uids, n_sigs, n_subk; @@ -312,8 +314,8 @@ import_one( const char *fname, KBNODE keyblock ) /* Compare the original against the new key; just to be sure nothing * weird is going on */ if( cmp_public_keys( pk_orig, pk ) ) { - log_error("%s: key %08lX, doesn't match our copy\n", - fname, (ulong)keyid[1]); + log_error_f( fname, _("key %08lX: doesn't match our copy\n"), + (ulong)keyid[1]); rc = G10ERR_GENERAL; goto leave; } @@ -324,14 +326,16 @@ import_one( const char *fname, KBNODE keyblock ) /* now read the original keyblock */ rc = find_keyblock_bypk( &kbpos, pk_orig ); if( rc ) { - log_error("%s: key %08lX, can't locate original keyblock: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, + _("key %08lX: can't locate original keyblock: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); goto leave; } rc = read_keyblock( &kbpos, &keyblock_orig ); if( rc ) { - log_error("%s: key %08lX, can't read original keyblock: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, + _("key %08lX: can't read original keyblock: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); goto leave; } /* and try to merge the block */ @@ -345,37 +349,37 @@ import_one( const char *fname, KBNODE keyblock ) if( n_uids || n_sigs || n_subk ) { /* keyblock_orig has been updated; write */ if( opt.verbose > 1 ) - log_info("%s: writing to '%s'\n", - fname, keyblock_resource_name(&kbpos) ); + log_info_f(keyblock_resource_name(&kbpos), + _("writing keyblock\n")); if( (rc=lock_keyblock( &kbpos )) ) - log_error("can't lock public keyring '%s': %s\n", - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f(keyblock_resource_name(&kbpos), + _("can't lock public keyring: %s\n"), g10_errstr(rc) ); else if( (rc=update_keyblock( &kbpos, keyblock )) ) - log_error("%s: can't write to '%s': %s\n", fname, - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f( keyblock_resource_name(&kbpos), + _("can't write keyblock: %s\n"), g10_errstr(rc) ); unlock_keyblock( &kbpos ); /* we are ready */ if( n_uids == 1 ) - log_info("%s: key %08lX, 1 new user-id\n", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: 1 new user-id\n"), + (ulong)keyid[1]); else if( n_uids ) - log_info("%s: key %08lX, %d new user-ids\n", - fname, (ulong)keyid[1], n_uids ); + log_info_f(fname, _("key %08lX: %d new user-ids\n"), + (ulong)keyid[1], n_uids ); if( n_sigs == 1 ) - log_info("%s: key %08lX, 1 new signature\n", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: 1 new signature\n"), + (ulong)keyid[1]); else if( n_sigs ) - log_info("%s: key %08lX, %d new signatures\n", - fname, (ulong)keyid[1], n_sigs ); + log_info_f(fname, _("key %08lX: %d new signatures\n"), + (ulong)keyid[1], n_sigs ); if( n_subk == 1 ) - log_info("%s: key %08lX, 1 new subkey\n", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: 1 new subkey\n"), + (ulong)keyid[1]); else if( n_subk ) - log_info("%s: key %08lX, %d new subkeys\n", - fname, (ulong)keyid[1], n_subk ); + log_info_f(fname, _("key %08lX: %d new subkeys\n"), + (ulong)keyid[1], n_subk ); } else - log_info("%s: key %08lX, not changed\n", fname, (ulong)keyid[1] ); + log_info_f(fname, _("key %08lX: not changed\n"), (ulong)keyid[1] ); } leave: @@ -408,7 +412,7 @@ import_secret_one( const char *fname, KBNODE keyblock ) uidnode = find_next_kbnode( keyblock, PKT_USER_ID ); if( opt.verbose ) { - log_info("%s: sec %4u%c/%08lX %s ", fname, + log_info_f(fname, "sec %4u%c/%08lX %s ", nbits_from_sk( sk ), pubkey_letter( sk->pubkey_algo ), (ulong)keyid[1], datestr_from_sk(sk) ); @@ -418,7 +422,7 @@ import_secret_one( const char *fname, KBNODE keyblock ) putc('\n', stderr); } if( !uidnode ) { - log_error("%s: No user id for key %08lX\n", fname, (ulong)keyid[1]); + log_error_f(fname, _("key %08lX: no user id\n"), (ulong)keyid[1]); return 0; } @@ -433,25 +437,24 @@ import_secret_one( const char *fname, KBNODE keyblock ) return G10ERR_GENERAL; } if( opt.verbose > 1 ) - log_info("%s: writing to '%s'\n", - fname, keyblock_resource_name(&kbpos) ); + log_info_f(keyblock_resource_name(&kbpos), _("writing keyblock\n")); if( (rc=lock_keyblock( &kbpos )) ) - log_error("can't lock secret keyring '%s': %s\n", - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f( keyblock_resource_name(&kbpos), + _("can't lock secret keyring: %s\n"), g10_errstr(rc) ); else if( (rc=insert_keyblock( &kbpos, keyblock )) ) - log_error("%s: can't write to '%s': %s\n", fname, - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f(keyblock_resource_name(&kbpos), + _("can't write keyring\n"), g10_errstr(rc) ); unlock_keyblock( &kbpos ); /* we are ready */ - log_info("%s: key %08lX imported\n", fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: secret key imported\n"), (ulong)keyid[1]); } else if( !rc ) { /* we can't merge secret keys */ - log_error("%s: key %08lX already in secret keyring\n", - fname, (ulong)keyid[1]); + log_error_f(fname, _("key %08lX: already in secret keyring\n"), + (ulong)keyid[1]); } else - log_error("%s: key %08lX, secret key not found: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, _("key %08lX: secret key not found: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); release_kbnode( keyblock_orig ); return rc; @@ -480,29 +483,30 @@ import_revoke_cert( const char *fname, KBNODE node ) pk = m_alloc_clear( sizeof *pk ); rc = get_pubkey( pk, keyid ); if( rc == G10ERR_NO_PUBKEY ) { - log_info("%s: key %08lX, no public key - " - "can't apply revocation certificate\n", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: no public key - " + "can't apply revocation certificate\n"), (ulong)keyid[1]); rc = 0; goto leave; } else if( rc ) { - log_error("%s: key %08lX, public key not found: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, _("key %08lX: public key not found: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); goto leave; } /* read the original keyblock */ rc = find_keyblock_bypk( &kbpos, pk ); if( rc ) { - log_error("%s: key %08lX, can't locate original keyblock: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, + _("key %08lX: can't locate original keyblock: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); goto leave; } rc = read_keyblock( &kbpos, &keyblock ); if( rc ) { - log_error("%s: key %08lX, can't read original keyblock: %s\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, + _("key %08lX: can't read original keyblock: %s\n"), + (ulong)keyid[1], g10_errstr(rc)); goto leave; } @@ -512,9 +516,8 @@ import_revoke_cert( const char *fname, KBNODE node ) * special case. */ rc = check_key_signature( keyblock, node, NULL); if( rc ) { - log_error("%s: key %08lX, invalid revocation certificate" - ": %s - rejected\n", - fname, (ulong)keyid[1], g10_errstr(rc)); + log_error_f(fname, _("key %08lX: invalid revocation certificate" + ": %s - rejected\n"), (ulong)keyid[1], g10_errstr(rc)); } @@ -537,18 +540,17 @@ import_revoke_cert( const char *fname, KBNODE node ) /* and write the keyblock back */ if( opt.verbose > 1 ) - log_info("%s: writing to '%s'\n", - fname, keyblock_resource_name(&kbpos) ); + log_info_f( keyblock_resource_name(&kbpos), _("writing keyblock\n")); if( (rc=lock_keyblock( &kbpos )) ) - log_error("can't lock public keyring '%s': %s\n", - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f( keyblock_resource_name(&kbpos), + _("can't lock public keyring: %s\n"), g10_errstr(rc) ); else if( (rc=update_keyblock( &kbpos, keyblock )) ) - log_error("%s: can't write to '%s': %s\n", fname, - keyblock_resource_name(&kbpos), g10_errstr(rc) ); + log_error_f(keyblock_resource_name(&kbpos), + _("can't write keyblock: %s\n"), g10_errstr(rc) ); unlock_keyblock( &kbpos ); /* we are ready */ - log_info("%s: key %08lX, added revocation certificate\n", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: revocation certificate imported\n"), + (ulong)keyid[1]); leave: release_kbnode( keyblock ); @@ -577,16 +579,16 @@ chk_self_sigs( const char *fname, KBNODE keyblock, if( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] ) { unode = find_prev_kbnode( keyblock, n, PKT_USER_ID ); if( !unode ) { - log_error("%s: key %08lX, no user-id for signature\n", - fname, (ulong)keyid[1]); + log_error_f(fname, _("key %08lX: no user-id for signature\n"), + (ulong)keyid[1]); return -1; /* the complete keyblock is invalid */ } rc = check_key_signature( keyblock, n, NULL); if( rc ) { - log_error( rc == G10ERR_PUBKEY_ALGO ? - "%s: key %08lX, unsupported public key algorithm\n": - "%s: key %08lX, invalid self-signature\n", - fname, (ulong)keyid[1]); + log_error_f( fname, rc == G10ERR_PUBKEY_ALGO ? + _("key %08lX: unsupported public key algorithm\n"): + _("key %08lX: invalid self-signature\n"), + (ulong)keyid[1]); unode->flag |= 2; /* mark as invalid */ } @@ -614,8 +616,8 @@ delete_inv_parts( const char *fname, KBNODE keyblock, u32 *keyid ) uid_seen = 1; if( (node->flag & 2) || !(node->flag & 1) ) { if( opt.verbose ) { - log_info("%s: key %08lX, removed userid '", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: skipped userid '"), + (ulong)keyid[1]); print_string( stderr, node->pkt->pkt.user_id->name, node->pkt->pkt.user_id->len, 0 ); fputs("'\n", stderr ); @@ -637,15 +639,15 @@ delete_inv_parts( const char *fname, KBNODE keyblock, u32 *keyid ) else if( node->pkt->pkttype == PKT_SIGNATURE && node->pkt->pkt.signature->sig_class == 0x20 ) { if( uid_seen ) { - log_error("%s: key %08lX, revocation certificate at wrong " - "place - removed\n", fname, (ulong)keyid[1]); + log_error_f(fname, _("key %08lX: revocation certificate at wrong " + "place - skipped\n"), fname, (ulong)keyid[1]); delete_kbnode( node ); } else { int rc = check_key_signature( keyblock, node, NULL); if( rc ) { - log_error("%s: key %08lX, invalid revocation certificate" - ": %s - removed\n", + log_error_f(fname, _("key %08lX: invalid revocation certificate" + ": %s - skipped\n"), fname, (ulong)keyid[1], g10_errstr(rc)); delete_kbnode( node ); } @@ -706,8 +708,8 @@ merge_blocks( const char *fname, KBNODE keyblock_orig, KBNODE keyblock, insert_kbnode( keyblock_orig, n2, 0 ); n2->flag |= 1; node->flag |= 1; - log_info("%s: key %08lX, added revocation certificate\n", - fname, (ulong)keyid[1]); + log_info_f(fname, _("key %08lX: revocation certificate added\n"), + (ulong)keyid[1]); } } } @@ -769,7 +771,7 @@ append_uid( KBNODE keyblock, KBNODE node, int *n_sigs, assert(node->pkt->pkttype == PKT_USER_ID ); /* at lease a self signature comes next to the user-id */ if( node->next->pkt->pkttype == PKT_USER_ID ) { - log_error("%s: key %08lX, our copy has no self-signature\n", + log_error_f(fname, _("key %08lX: our copy has no self-signature\n"), fname, (ulong)keyid[1]); return G10ERR_GENERAL; } @@ -805,8 +807,8 @@ merge_sigs( KBNODE dst, KBNODE src, int *n_sigs, /* at least a self signature comes next to the user-ids */ assert(src->next->pkt->pkttype != PKT_USER_ID ); if( dst->next->pkt->pkttype == PKT_USER_ID ) { - log_error("%s: key %08lX, our copy has no self-signature\n", - fname, (ulong)keyid[1]); + log_error_f(fname, _("key %08lX: our copy has no self-signature\n"), + (ulong)keyid[1]); return 0; } diff --git a/g10/mainproc.c b/g10/mainproc.c index f01380e00..b73d49bd1 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -232,22 +232,34 @@ static void proc_plaintext( CTX c, PACKET *pkt ) { PKT_plaintext *pt = pkt->pkt.plaintext; - int any, rc; + int any, clearsig, rc; KBNODE n; if( opt.verbose ) log_info("original file name='%.*s'\n", pt->namelen, pt->name); free_md_filter_context( &c->mfx ); - /* fixme: look at the sigclass to check whether we should use the - * textmode filter (sigclass 0x01) - */ c->mfx.md = md_open( 0, 0); - any = 0; + /* fixme: we may need to push the textfilter if we have sigclass 1 + * and no armoring - Not yet tested */ + any = clearsig = 0; for(n=c->list; n; n = n->next ) { - if( n->pkt->pkttype == PKT_ONEPASS_SIG - && n->pkt->pkt.onepass_sig->digest_algo ) { - md_enable( c->mfx.md, n->pkt->pkt.onepass_sig->digest_algo ); - any = 1; + if( n->pkt->pkttype == PKT_ONEPASS_SIG ) { + if( n->pkt->pkt.onepass_sig->digest_algo ) { + md_enable( c->mfx.md, n->pkt->pkt.onepass_sig->digest_algo ); + any = 1; + } + /* Check whether this is a cleartext signature. We assume that + * we have one if the sig_class is 1 and the keyid is 0, that + * are the faked packets produced by armor.c. There is a + * possibility that this fails, but there is no other easy way + * to do it. (We could use a special packet type to indicate + * this, but this may also be faked - it simply can't be verified + * and is _no_ security issue) + */ + if( n->pkt->pkt.onepass_sig->sig_class == 0x01 + && !n->pkt->pkt.onepass_sig->keyid[0] + && !n->pkt->pkt.onepass_sig->keyid[1] ) + clearsig = 1; } } if( !any ) { /* no onepass sig packet: enable all algos */ @@ -260,7 +272,7 @@ proc_plaintext( CTX c, PACKET *pkt ) if( c->mfx.md->list ) m_check( c->mfx.md->list ); } - rc = handle_plaintext( pt, &c->mfx, c->sigs_only ); + rc = handle_plaintext( pt, &c->mfx, c->sigs_only, clearsig ); if( rc ) log_error( "handle plaintext failed: %s\n", g10_errstr(rc)); if( c->mfx.md ) { diff --git a/g10/options.h b/g10/options.h index 8ad0a4205..0929be328 100644 --- a/g10/options.h +++ b/g10/options.h @@ -37,9 +37,10 @@ struct { int no_armor; int list_packets; /* list-packets mode */ int def_cipher_algo; - int reserved; + int do_not_export_rsa; int def_digest_algo; int def_compress_algo; + const char *def_secret_key; int no_comment; int marginals_needed; int completes_needed; diff --git a/g10/packet.h b/g10/packet.h index edca2a4e9..9c8a8547d 100644 --- a/g10/packet.h +++ b/g10/packet.h @@ -282,7 +282,8 @@ int decrypt_data( PKT_encrypted *ed, DEK *dek ); int encrypt_data( PKT_encrypted *ed, DEK *dek ); /*-- plaintext.c --*/ -int handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,int nooutput); +int handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx, + int nooutput, int clearsig ); int ask_for_detached_datafile( md_filter_context_t *mfx, const char *inname ); /*-- comment.c --*/ diff --git a/g10/plaintext.c b/g10/plaintext.c index 161db58d4..8d7b2a97e 100644 --- a/g10/plaintext.c +++ b/g10/plaintext.c @@ -34,19 +34,61 @@ /**************** + * Defer the last CR,LF + */ +static void +special_md_putc( MD_HANDLE md, int c, int *state ) +{ + if( c == -1 ) { /* flush */ + if( *state == 1 ) { + md_putc(md, '\r'); + } + *state = 0; + return; + } + again: + switch( *state ) { + case 0: + if( c == '\r' ) + *state = 1; + else + md_putc(md, c ); + break; + case 1: + if( c == '\n' ) + *state = 2; + else { + md_putc(md, '\r'); + *state = 0; + goto again; + } + break; + case 2: + md_putc(md, '\r'); + md_putc(md, '\n'); + *state = 0; + goto again; + default: BUG(); + } +} + + +/**************** * Handle a plaintext packet. If MFX is not NULL, update the MDs * Note: we should use the filter stuff here, but we have to add some * easy mimic to set a read limit, so we calculate only the * bytes from the plaintext. */ int -handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx, int nooutput ) +handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx, + int nooutput, int clearsig ) { char *fname = NULL; FILE *fp = NULL; int rc = 0; int c; int convert = pt->mode == 't'; + int special_state = 0; /* create the filename as C string */ if( nooutput ) @@ -86,10 +128,14 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx, int nooutput ) rc = G10ERR_READ_FILE; goto leave; } - if( mfx->md ) - md_putc(mfx->md, c ); + if( mfx->md ) { + if( convert && clearsig ) + special_md_putc(mfx->md, c, &special_state ); + else + md_putc(mfx->md, c ); + } if( convert && c == '\r' ) - continue; /* FIXME: this hack is too simple */ + continue; /* fixme: this hack might be too simple */ if( fp ) { if( putc( c, fp ) == EOF ) { log_error("Error writing to '%s': %s\n", @@ -102,10 +148,14 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx, int nooutput ) } else { while( (c = iobuf_get(pt->buf)) != -1 ) { - if( mfx->md ) - md_putc(mfx->md, c ); + if( mfx->md ) { + if( convert && clearsig ) + special_md_putc(mfx->md, c, &special_state ); + else + md_putc(mfx->md, c ); + } if( convert && c == '\r' ) - continue; /* FIXME: this hack is too simple */ + continue; /* fixme: this hack might be too simple */ if( fp ) { if( putc( c, fp ) == EOF ) { log_error("Error writing to '%s': %s\n", @@ -117,6 +167,8 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx, int nooutput ) } iobuf_clear_eof(pt->buf); } + if( mfx->md && convert && clearsig ) + special_md_putc(mfx->md, -1, &special_state ); /* flush */ if( fp && fp != stdout && fclose(fp) ) { log_error("Error closing '%s': %s\n", fname, strerror(errno) ); diff --git a/g10/sign.c b/g10/sign.c index 7dffba314..14dfe417e 100644 --- a/g10/sign.c +++ b/g10/sign.c @@ -416,14 +416,14 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr, /**************** - * note: we do not count empty lines at the beginning + * Note: We do not calculate the hash over the last CR,LF */ static int write_dash_escaped( IOBUF inp, IOBUF out, MD_HANDLE md ) { int c; int lastlf = 1; - int skip_empty = 1; + int state = 0; while( (c = iobuf_get(inp)) != -1 ) { /* Note: We don't escape "From " because the MUA should cope with it */ @@ -431,21 +431,41 @@ write_dash_escaped( IOBUF inp, IOBUF out, MD_HANDLE md ) if( c == '-' ) { iobuf_put( out, c ); iobuf_put( out, ' ' ); - skip_empty = 0; } - else if( skip_empty && c == '\r' ) - skip_empty = 2; - else - skip_empty = 0; } - if( !skip_empty ) - md_putc(md, c ); + again: + switch( state ) { + case 0: + if( c == '\r' ) + state = 1; + else + md_putc(md, c ); + break; + case 1: + if( c == '\n' ) + state = 2; + else { + md_putc(md, '\r'); + state = 0; + goto again; + } + break; + case 2: + md_putc(md, '\r'); + md_putc(md, '\n'); + state = 0; + goto again; + default: BUG(); + } iobuf_put( out, c ); lastlf = c == '\n'; - if( skip_empty == 2 ) - skip_empty = lastlf ? 0 : 1; } + if( state == 1 ) + md_putc(md, '\r'); + if( !lastlf ) + iobuf_put( out, '\n' ); + return 0; /* fixme: add error handling */ } @@ -537,13 +557,11 @@ clearsign_file( const char *fname, STRLIST locusr, const char *outfile ) PKT_secret_key *sk = sk_rover->sk; md_enable(textmd, hash_for(sk->pubkey_algo)); } - iobuf_push_filter( inp, text_filter, &tfx ); rc = write_dash_escaped( inp, out, textmd ); if( rc ) goto leave; - iobuf_writestr(out, "\n" ); afx.what = 2; iobuf_push_filter( out, armor_filter, &afx ); diff --git a/g10/textfilter.c b/g10/textfilter.c index c42624eff..804b48505 100644 --- a/g10/textfilter.c +++ b/g10/textfilter.c @@ -51,8 +51,11 @@ read_line( byte *buf, size_t *r_buflen, IOBUF a ) for(c=0, n=0; n < buflen && (c=iobuf_get2(a)) != -1 && c != '\n'; ) buf[n++] = c; buf[n] = 0; - if( c == -1 ) + if( c == -1 ) { rc = -1; + if( !n || buf[n-1] != '\n' ) + no_lf = 1; + } else if( c != '\n' ) { IOBUF b = iobuf_temp(); while( (c=iobuf_get2(a)) != -1 && c != '\n' ) { diff --git a/include/cipher.h b/include/cipher.h index cea0a2114..6df44b772 100644 --- a/include/cipher.h +++ b/include/cipher.h @@ -44,6 +44,9 @@ #define PUBKEY_ALGO_DSA 17 #define PUBKEY_ALGO_ELGAMAL 20 /* sign and encrypt elgamal */ +#define PUBKEY_USAGE_SIG 1 /* key is good for signatures */ +#define PUBKEY_USAGE_ENC 2 /* key is good for encryption */ + #define DIGEST_ALGO_MD5 1 #define DIGEST_ALGO_SHA1 2 #define DIGEST_ALGO_RMD160 3 @@ -79,9 +82,7 @@ typedef struct { int bufcount; int secure; FILE *debug; - int guard1; struct md_digest_list_s *list; - int guard2; } *MD_HANDLE; diff --git a/include/util.h b/include/util.h index 032f0adfb..f480f48f3 100644 --- a/include/util.h +++ b/include/util.h @@ -72,6 +72,14 @@ void g10_log_mpidump( const char *text, MPI a ); void g10_log_error( const char *fmt, ... ) __attribute__ ((format (printf,1,2))); void g10_log_info( const char *fmt, ... ) __attribute__ ((format (printf,1,2))); void g10_log_debug( const char *fmt, ... ) __attribute__ ((format (printf,1,2))); + void g10_log_fatal_f( const char *fname, const char *fmt, ... ) + __attribute__ ((noreturn, format (printf,2,3))); + void g10_log_error_f( const char *fname, const char *fmt, ... ) + __attribute__ ((format (printf,2,3))); + void g10_log_info_f( const char *fname, const char *fmt, ... ) + __attribute__ ((format (printf,2,3))); + void g10_log_debug_f( const char *fname, const char *fmt, ... ) + __attribute__ ((format (printf,2,3))); #define BUG() g10_log_bug0( __FILE__ , __LINE__, __FUNCTION__ ) #else void g10_log_bug( const char *fmt, ... ); @@ -80,6 +88,10 @@ void g10_log_mpidump( const char *text, MPI a ); void g10_log_error( const char *fmt, ... ); void g10_log_info( const char *fmt, ... ); void g10_log_debug( const char *fmt, ... ); + void g10_log_fatal_f( const char *fname, const char *fmt, ... ); + void g10_log_error_f( const char *fname, const char *fmt, ... ); + void g10_log_info_f( const char *fname, const char *fmt, ... ); + void g10_log_debug_f( const char *fname, const char *fmt, ... ); #define BUG() g10_log_bug0( __FILE__ , __LINE__ ) #endif @@ -91,7 +103,10 @@ void g10_log_mpidump( const char *text, MPI a ); #define log_error g10_log_error #define log_info g10_log_info #define log_debug g10_log_debug - +#define log_fatal_f g10_log_fatal_f +#define log_error_f g10_log_error_f +#define log_info_f g10_log_info_f +#define log_debug_f g10_log_debug_f /*-- errors.c --*/ diff --git a/po/POTFILES.in b/po/POTFILES.in index 8ab2ef7e6..4b3173922 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -3,14 +3,33 @@ # utility util/secmem.c +util/argparse.c # cipher cipher/random.c - +cipher/rand-dummy.c +cipher/rand-unix.c +cipher/rand-w32.c # main program g10/g10.c g10/pkclist.c g10/keygen.c +g10/decrypt.c +g10/encode.c +g10/import.c +g10/keyedit.c +g10/keylist.c +g10/mainproc.c +g10/passphrase.c +g10/plaintext.c +g10/pref.c +g10/seckey-cert.c +g10/sig-check.c +g10/sign.c +g10/trustdb.c +g10/verify.c + + #---end-- @@ -3,35 +3,21 @@ msgstr "" "Date: 1998-01-26 22:08:36+0100\n" "From: Werner Koch <wk@frodo>\n" "Content-Type: text/plain; charset=\n" -"Xgettext-Options: --default-domain=g10 --directory=.. --add-comments --keyword=_ --keyword=N_ --files-from=./POTFILES.in\n" -"Files: g10/g10.c g10/pkclist.c\n" +"Xgettext-Options: --default-domain=gnupg --directory=.. --add-comments --keyword=_ --keyword=N_ --files-from=./POTFILES.in\n" +"Files: util/secmem.c util/argparse.c cipher/random.c cipher/rand-dummy.c cipher/rand-unix.c cipher/rand-w32.c g10/g10.c g10/pkclist.c g10/keygen.c g10/decrypt.c g10/encode.c g10/import.c g10/keyedit.c g10/keylist.c g10/mainproc.c g10/passphrase.c g10/plaintext.c g10/pref.c g10/seckey-cert.c g10/sig-check.c g10/sign.c g10/trustdb.c g10/verify.c\n" - -#: util/secmem.c:85 +#: util/secmem.c:180 msgid "Warning: using insecure memory!\n" msgstr "" "Achtung: Speicher mit sensibeln Daten kann auf Platte ausgelagert werden.\n" "(um dies zu vermeiden, kann das Programm suid(root) installiert werden;\n" " bitte wenden Sie sich hierzu an den Systemadministraor)\n" -#: cipher/random.c:147 -msgid "" -"\n" -"Not enough random bytes available. Please do some other work to give\n" -"the OS a chance to collect more entropy! (Need %d more bytes)\n" -msgstr "" -"\n" -"Es sind nicht gen�gend Zufalls Bytes vorhanden. Bitte f�hren Sie andere\n" -"Arbeiten durch, damit das BS weitere Entropy sammeln kann!\n" -"(Es werden noch %d Bytes ben�tigt)\n" - -#: cipher/random.c:185 +#: cipher/rand-dummy.c:106 msgid "warning: using insecure random number generator!!\n" -msgstr "" -"Der Zufallszahlengenerator erzeugt keine sicheren Zufallszahlen!\n" +msgstr "Der Zufallszahlengenerator erzeugt keine sicheren Zufallszahlen!\n" - -#: cipher/random.c:186 +#: cipher/rand-dummy.c:107 msgid "" "The random number generator is only a kludge to let\n" "it compile - it is in no way a strong RNG!\n" @@ -40,59 +26,23 @@ msgid "" "\n" msgstr "" "Der Zufallszahlengenerator ist lediglich ein \"kludge\", um ein\n" -"�bersetzen des Programms zu erm�glichen - Es ist KEIN starker RNG!\n" +"\374bersetzen des Programms zu erm\366glichen - Es ist KEIN starker RNG!\n" "\n" "BENUTZEN SIE DIE DURCH DIESES PROGRAMM ERZEUGTEN DATEN NICHT!\n" "\n" - -#: g10/g10.c:214 +#: cipher/rand-unix.c:149 msgid "" -"Syntax: gpgm [options] [files]\n" -"GNUPG maintenance utility\n" -msgstr "" -"Syntax: gpgm [options] [files]\n" -"GNUPG Wartungs Hilfsmittel\n" - - -#: g10/g10.c:72 -msgid "" -"Syntax: gpg [options] [files]\n" -"sign, check, encrypt or decrypt\n" -"default operation depends on the input data\n" +"\n" +"Not enough random bytes available. Please do some other work to give\n" +"the OS a chance to collect more entropy! (Need %d more bytes)\n" msgstr "" -"Aufruf: gpg [Optionen] [Dateien]\n" -"Signieren, pr�fen, verschl�sseln, entschl�sseln\n" -"Die voreingestellte Operation ist abh�ngig von den Eingabedaten\n" - - -#: g10/g10.c:77 -msgid "Please report bugs to <[email protected]>.\n" -msgstr "Berichte �ber Wanzen bitte an <[email protected]>.\n" - -#: g10/g10.c:207 -msgid "Usage: gpgm [options] [files] (-h for help)" -msgstr "Aufruf: gpgm [Optionen] [Dateien] (-h f�r Hilfe)" - -#: g10/g10.c:209 -msgid "Usage: gpg [options] [files] (-h for help)" -msgstr "Aufruf: gpg [Optionen] [Dateien] (-h f�r Hilfe)" - -#: g10/g10.c:298 -msgid "usage: gpgm [options] " -msgstr "Aufruf: gpgm [Optionen] " - -#: g10/g10.c:300 -msgid "usage: gpg [options] " -msgstr "Aufruf: gpg [Optionen] " - - -#: g10/g10.c:152 -msgid "conflicting commands\n" -msgstr "Widersprechende Kommandos\n" - +"\n" +"Es sind nicht gen\374gend Zufalls Bytes vorhanden. Bitte f\374hren Sie andere\n" +"Arbeiten durch, damit das BS weitere Entropy sammeln kann!\n" +"(Es werden noch %d Bytes ben\366tigt)\n" -#: g10/g10.c:57 +#: g10/g10.c:51 msgid "" "@Commands:\n" " " @@ -100,262 +50,229 @@ msgstr "" "@Kommandos:\n" " " -#: g10/g10.c:92 -msgid "" -"@\n" -"Options:\n" -" " +#: g10/g10.c:54 +msgid "|[file]|make a signature" msgstr "" -"@\n" -"Optionen:\n" -" " +#: g10/g10.c:55 +msgid "|[file]|make a clear text signature" +msgstr "" -#: g10/g10.c:164 -msgid "create ascii armored output" -msgstr "Ausgabe mit ASCII Armor versehen" +#: g10/g10.c:56 +msgid "make a detached signature" +msgstr "Eine abgetrennte Signatur erzeugen" -#: g10/g10.c:165 -msgid "verbose" -msgstr "detailierte Informationen" +#: g10/g10.c:57 +msgid "encrypt data" +msgstr "Daten verschl\374sseln" -#: g10/g10.c:166 -msgid "set compress level (0 disables)" -msgstr "Kompressionspegel sethen (aussschalten mit 0)" +#: g10/g10.c:58 +msgid "encryption only with symmetric cipher" +msgstr "Daten nur symmetrisch verschl\374sseln" -#: g10/g10.c:167 -msgid "do not make any changes" -msgstr "Keine wirklichen �nderungen durchf�hren" +#: g10/g10.c:59 +msgid "store only" +msgstr "nur speichern" -#: g10/g10.c:168 -msgid "do only a symmetric encryption" -msgstr "Nur konventionell verschl�sseln" +#: g10/g10.c:60 +msgid "decrypt data (default)" +msgstr "Daten enschl\374sseln" -#: g10/g10.c:169 -msgid "use as output file" -msgstr "dies als Ausgabedatei benutzen" +#: g10/g10.c:61 +msgid "verify a signature" +msgstr "Signatur pr\374fen" -#: g10/g10.c:170 -msgid "batch mode: never ask" -msgstr "Stapel Modus: Keine Abfragen" +#: g10/g10.c:63 +msgid "list keys" +msgstr "Liste der Schl\374ssel" -#: g10/g10.c:171 -msgid "assume yes on most questions" -msgstr "\"Ja\" als Standard Antwort annehmen" +#: g10/g10.c:64 +msgid "list keys and signatures" +msgstr "Liste der Schl\374ssel und deren Signaturen" -#: g10/g10.c:172 -msgid "assume no on most questions" -msgstr "\"Nein\" als Standard Antwort annehmen" +#: g10/g10.c:65 +msgid "check key signatures" +msgstr "Signaturen der Schl\374ssel pr\374fen" -#: g10/g10.c:173 -msgid "generate a new key pair" -msgstr "Ein neues Schl�sselpaar erzeugen" +#: g10/g10.c:66 +msgid "list keys and fingerprints" +msgstr "Liste der Schl\374ssel und deren \"Fingerprints\"" -#: g10/g10.c:76 -msgid "remove key from the public keyring" -msgstr "Schl�ssel entfernen" +#: g10/g10.c:67 +msgid "list secret keys" +msgstr "Liste der geheimen Schl\374ssel" -#: g10/g10.c:79 -msgid "generate a revocation certificate" -msgstr "Ein \"Revocation\" Zertifikat erzeugen" +#: g10/g10.c:69 +msgid "generate a new key pair" +msgstr "Ein neues Schl\374sselpaar erzeugen" -#: g10/g10.c:176 +#: g10/g10.c:70 +msgid "add a subkey to a key pair" +msgstr "Einen Sekund\344rschl\374ssel dem Prim\344rschl\374ssel hinzuf\374gen" + +#: g10/g10.c:71 msgid "make a signature on a key in the keyring" -msgstr "Schl�ssel signieren" +msgstr "Schl\374ssel signieren" -#: g10/g10.c:177 -msgid "store only" -msgstr "nur speichern" +#: g10/g10.c:72 +msgid "remove key from the public keyring" +msgstr "Schl\374ssel entfernen" -#: g10/g10.c:178 -msgid "check signatures on a key in the keyring" -msgstr "Schl�ssel Signaturen pr�fen" +#: g10/g10.c:73 +msgid "edit a key signature" +msgstr "Editieren de Schl\374ssel Signaturen" -#: g10/g10.c:179 -msgid "add this keyring to the list of keyrings" -msgstr "" +#: g10/g10.c:74 +msgid "change the passphrase of your secret keyring" +msgstr "Die \"Passphrase\" des geheimen Schl\374ssels \344ndern" -#: g10/g10.c:180 -msgid "|filename|make a signature" -msgstr "|dateiname|Eine Signatur erzeugen" +#: g10/g10.c:75 +msgid "generate a revocation certificate" +msgstr "Ein \"Revocation\" Zertifikat erzeugen" -#: g10/g10.c:61 -msgid "|filename|make a clear text signature" -msgstr "|dateiname|Eine Klartext Signatur erzeugen" +#: g10/g10.c:77 +msgid "export keys" +msgstr "Schl\374ssel exportieren" -#: g10/g10.c:181 -msgid "use canonical text mode" -msgstr "Text Modus benutzen" +#: g10/g10.c:79 +msgid "import/merge keys" +msgstr "Schl\374ssel importieren/kombinieren" -#: g10/g10.c:182 -msgid "make a detached signature" -msgstr "Eine abgetrennte Signatur erzeugen" +#: g10/g10.c:80 +msgid "list only the sequence of packets" +msgstr "Lediglich die Struktur der Daten Packete anzeigen" -#: g10/g10.c:183 -msgid "encrypt data" -msgstr "Daten verschl�sseln" +#: g10/g10.c:83 +msgid "De-Armor a file or stdin" +msgstr "\"De-Armor\" einer Datei oder stdin" -#: g10/g10.c:64 -msgid "encryption only with symmetric cipher" -msgstr "Daten nur symmetrisch verschl�sseln" +#: g10/g10.c:84 +msgid "En-Armor a file or stdin" +msgstr "\"En-Armor\" einer Datei oder stdin" -#: g10/g10.c:184 -msgid "decrypt data (default)" -msgstr "Daten enschl�sseln" +#: g10/g10.c:85 +msgid "|algo [files]|print message digests" +msgstr "|algo [files]|Hashwerte der Dateien ausgeben" +#: g10/g10.c:86 +msgid "print all message digests" +msgstr "Message-Digests f\374r die Eingabedaten ausgeben" -#: g10/g10.c:67 -msgid "verify a signature" -msgstr "Signatur pr�fen" +#: g10/g10.c:91 +msgid "" +"@\n" +"Options:\n" +" " +msgstr "" +"@\n" +"Optionen:\n" +" " -#: g10/g10.c:185 +#: g10/g10.c:93 +msgid "create ascii armored output" +msgstr "Ausgabe mit ASCII Armor versehen" + +#: g10/g10.c:95 msgid "use this user-id to sign or decrypt" msgstr "Mit dieser User-ID signieren" -#: g10/g10.c:186 +#: g10/g10.c:96 msgid "use this user-id for encryption" -msgstr "Verschl�sseln f�r diese User-ID" +msgstr "Verschl\374sseln f\374r diese User-ID" -#: g10/g10.c:187 -msgid "list keys" -msgstr "Liste der Schl�ssel" +#: g10/g10.c:97 +msgid "|N|set compress level N (0 disables)" +msgstr "Kompressionsstufe auf N setzen (0 f\374r keine Kompression)" +#: g10/g10.c:98 +msgid "use canonical text mode" +msgstr "Text Modus benutzen" -#: g10/g10.c:70 -msgid "list keys and signatures" -msgstr "Liste der Schl�ssel und deren Signaturen" +#: g10/g10.c:100 +msgid "use as output file" +msgstr "dies als Ausgabedatei benutzen" -#: g10/g10.c:71 -msgid "check key signatures" -msgstr "Signaturen der Schl�ssel pr�fen" +#: g10/g10.c:101 +msgid "verbose" +msgstr "detailierte Informationen" -#: g10/g10.c:72 -msgid "list keys and fingerprints" -msgstr "Liste der Schl�ssel und deren \"Fingerprints\"" +#: g10/g10.c:102 +msgid "do not make any changes" +msgstr "Keine wirklichen \304nderungen durchf\374hren" -#: g10/g10.c:188 -msgid "set debugging flags" -msgstr "Debug-Flags einschalten" +#: g10/g10.c:103 +msgid "batch mode: never ask" +msgstr "Stapel Modus: Keine Abfragen" -#: g10/g10.c:189 -msgid "enable full debugging" -msgstr "Alle Debug-Flags einschalten" +#: g10/g10.c:104 +msgid "assume yes on most questions" +msgstr "\"Ja\" als Standard Antwort annehmen" -#: g10/g10.c:194 -msgid "print all message digests" -msgstr "Message-Digests f�r die Eingabedaten ausgeben" +#: g10/g10.c:105 +msgid "assume no on most questions" +msgstr "\"Nein\" als Standard Antwort annehmen" + +#: g10/g10.c:106 +msgid "add this keyring to the list of keyrings" +msgstr "Den \366ffentlichen Schl\374sselring mitbenutzen" -#: g10/g10.c:195 +#: g10/g10.c:107 msgid "add this secret keyring to the list" -msgstr "Den geheimen Schl�sselring mitbenutzen" +msgstr "Den geheimen Schl\374sselring mitbenutzen" + +#: g10/g10.c:108 +msgid "|NAME|use NAME as default secret key" +msgstr "|NAME|NAME als voreingestellten Schl\374ssel benutzen" -#: g10/g10.c:196 +#: g10/g10.c:109 msgid "read options from file" msgstr "Optionen aus der Datei lesen" -#: g10/g10.c:199 -msgid "list only the sequence of packets" -msgstr "Lediglich die Struktur der Daten Packete anzeigen" - -#: g10/g10.c:202 -msgid "edit a key signature" -msgstr "Editieren de Schl�ssel Signaturen" - -#: g10/g10.c:203 -msgid "change the passphrase of your secret keyring" -msgstr "Die \"Passphrase\" des geheimen Schl�ssels �ndern" - -#: g10/g10.c:205 -msgid "select default cipher algorithm" -msgstr "Den Cipher Algorithmus ausw�hlen" - -#: g10/g10.c:206 -msgid "select default public key algorithm" -msgstr "Den Public-Key Algorithmus ausw�hlen" +#: g10/g10.c:111 +msgid "set debugging flags" +msgstr "Debug-Flags einschalten" -#: g10/g10.c:207 -msgid "select default message digest algorithm" -msgstr "Den Message-Digest Algorithmus ausw�hlen" +#: g10/g10.c:112 +msgid "enable full debugging" +msgstr "Alle Debug-Flags einschalten" +#: g10/g10.c:113 +msgid "|FD|write status info to this FD" +msgstr "|FD|Status Informatiuon auf FD ausgeben" -#: g10/g10.c:212 +#: g10/g10.c:114 msgid "do not write comment packets" msgstr "Keine Kommentarpackete schreiben" -#: g10/g10.c:213 +#: g10/g10.c:115 msgid "(default is 1)" msgstr "(voreingestellt ist 1)" -#: g10/g10.c:214 +#: g10/g10.c:116 msgid "(default is 3)" msgstr "(voreingestellt ist 3)" -#: g10/g10.c:81 -msgid "export keys" -msgstr "Schl�ssel exportieren" +#: g10/g10.c:117 +msgid "|file|load extension module" +msgstr "|FILE|Erweierungsmodul |FILE| laden" -#: g10/g10.c:82 -msgid "import/merge keys" -msgstr "Schl�ssel importieren/kombinieren" +#: g10/g10.c:118 +msgid "emulate the mode described in RFC1991" +msgstr "Den in RFC1991 beschriebenen Modus emulieren" -#: g10/g10.c:85 -msgid "De-Armor a file or stdin" -msgstr "\"De-Armor\" einer Datei oder stdin" - -#: g10/g10.c:86 -msgid "En-Armor a file or stdin" -msgstr "\"En-Armor\" einer Datei oder stdin" - - -#: g10/g10.c:282 -msgid "note: no default option file '%s'\n" -msgstr "Notiz: Keine voreingestellte Optionen Datei '%s' vorhanden\n" - -#: g10/g10.c:285 -msgid "option file '%s': %s\n" -msgstr "Opionen Datei '%s': %s\n" - -#: g10/g10.c:290 -msgid "reading options from '%s'\n" -msgstr "Optionen werden von '%s' gelesen\n" +#: g10/g10.c:120 +msgid "|NAME|use cipher algorithm NAME" +msgstr "|NAME|Den Cipher-Algorithmus NAME benutzen" -#: g10/g10.c:382 -msgid "selected cipher algorithm is invalid\n" -msgstr "Der ausgew�hlte Cipher Algorithmus ist ung�ltig\n" +#: g10/g10.c:121 +msgid "|NAME|use message digest algorithm NAME" +msgstr "|NAME|Den Hash-Algorithmus NAME benutzen" -#: g10/g10.c:386 -msgid "selected pubkey algorithm is invalid\n" -msgstr "Der ausgew�hlte Public-Key Algorithmus ist ung�ltig\n" +#: g10/g10.c:122 +msgid "|N|use compress algorithm N" +msgstr "|N|Den Komressionsalgorithmus N benutzen" -#: g10/g10.c:390 -msgid "selected digest algorithm is invalid\n" -msgstr "Der ausgew�hlte Message-Digest Algorithmus ist ung�ltig\n" - -#: g10/g10.c:394 -msgid "completes-needed must be greater than 0\n" -msgstr "completes-needed m��en gr��er als 0 sein\n" - -#: g10/g10.c:398 -msgid "marginals-needed must be greater than 1\n" -msgstr "marginals-needed m��en gr��er als 1 sein\n" - -#: g10/g10.c:462 -msgid "failed to initialize the TrustDB: %s\n" -msgstr "Die Trust-DB kann nicht initialisiert werden: %s\n" - -#: g10/g10.c:554 g10/g10.c:571 g10/g10.c:660 -msgid "can't open '%s'\n" -msgstr "Datei '%s' kann nicht ge�ffnet werden\n" - -#: g10/g10.c:799 -msgid "can't open %s: %s\n" -msgstr "Datei '%s' kann nicht ge�ffnet werden: %s\n" - -#: g10/g10.c:113 -msgid "write status info to this fd" -msgstr "Status Informationen auf diesen FD schreiben" - -#: g10/g10.c:124 +#: g10/g10.c:130 msgid "" "@\n" "Examples:\n" @@ -369,99 +286,179 @@ msgstr "" "@\n" "Beispiele:\n" "\n" -" -se -r Bob [file] Signieren und verschl�sseln f�r Benutzer Bob\n" +" -se -r Bob [file] Signieren und verschl\374sseln f\374r Benutzer Bob\n" " -sat [file] Eine Klartext Signatur erzeugen\n" " -sb [file] Eine abgetrennte Signatur erzeugen\n" -" -k [userid] Die Schll�ssel anzeigen\n" +" -k [userid] Die Schll\374ssel anzeigen\n" " -kc [userid] Die \"Fingerprints\" anzeigen\n" +#: g10/g10.c:211 +msgid "Please report bugs to <[email protected]>.\n" +msgstr "Berichte \374ber Wanzen an <gnupg-bugs|gnu.org>.\n" + +#: g10/g10.c:216 +msgid "Usage: gpgm [options] [files] (-h for help)" +msgstr "Aufruf: gpgm [Optionen] [Dateien] (-h f\374r Hilfe)" + +#: g10/g10.c:218 +msgid "Usage: gpg [options] [files] (-h for help)" +msgstr "Aufruf: gpg [Optionen] [Dateien] (-h f\374r Hilfe)" + +#: g10/g10.c:223 +msgid "" +"Syntax: gpgm [options] [files]\n" +"GNUPG maintenance utility\n" +msgstr "" +"Syntax: gpgm [options] [files]\n" +"GNUPG Wartungs Hilfsmittel\n" + +#: g10/g10.c:226 +msgid "" +"Syntax: gpg [options] [files]\n" +"sign, check, encrypt or decrypt\n" +"default operation depends on the input data\n" +msgstr "" +"Aufruf: gpg [Optionen] [Dateien]\n" +"Signieren, pr\374fen, verschl\374sseln, entschl\374sseln\n" +"Die voreingestellte Operation ist abh\344ngig von den Eingabedaten\n" + +#: g10/g10.c:303 +msgid "usage: gpgm [options] " +msgstr "Aufruf: gpgm [Optionen] " + +#: g10/g10.c:305 +msgid "usage: gpg [options] " +msgstr "Aufruf: gpg [Optionen] " + +#: g10/g10.c:346 +msgid "conflicting commands\n" +msgstr "Widersprechende Kommandos\n" + +#: g10/g10.c:359 +msgid "selected cipher algorithm is invalid\n" +msgstr "Der ausgew\344hlte Cipher Algorithmus ist ung\374ltig\n" + +#: g10/g10.c:361 +msgid "selected digest algorithm is invalid\n" +msgstr "Der ausgew\344hlte Message-Digest Algorithmus ist ung\374ltig\n" + +#: g10/g10.c:363 +msgid "compress algorithm must be in range %d..%d\n" +msgstr "Der Kompressionsalgorithmus muss %d bis %d sein\n" + +#: g10/g10.c:365 +msgid "completes-needed must be greater than 0\n" +msgstr "completes-needed m\374\337en gr\366\337er als 0 sein\n" + +#: g10/g10.c:367 +msgid "marginals-needed must be greater than 1\n" +msgstr "marginals-needed m\374\337en gr\366\337er als 1 sein\n" + +#: g10/g10.c:463 +msgid "note: no default option file '%s'\n" +msgstr "Notiz: Keine voreingestellte Optionen Datei '%s' vorhanden\n" + +#: g10/g10.c:467 +msgid "option file '%s': %s\n" +msgstr "Optionen Datei '%s': %s\n" + +#: g10/g10.c:474 +msgid "reading options from '%s'\n" +msgstr "Optionen werden von '%s' gelesen\n" +#: g10/g10.c:693 +msgid "failed to initialize the TrustDB: %s\n" +msgstr "Die Trust-DB kann nicht initialisiert werden: %s\n" -#: g10/g10.c:666 +#: g10/g10.c:699 msgid "--store [filename]" msgstr "--store [Dateiname]" -#. encrypt the given file only with the symmetric cipher -#: g10/g10.c:674 +#: g10/g10.c:707 msgid "--symmetric [filename]" msgstr "--symmetric [Dateiname]" -#: g10/g10.c:682 +#: g10/g10.c:715 msgid "--encrypt [filename]" msgstr "--encrypt [Dateiname]" -#: g10/g10.c:695 +#: g10/g10.c:728 msgid "--sign [filename]" msgstr "--sign [Dateiname]" -#: g10/g10.c:708 +#. sign and encrypt the given file +#: g10/g10.c:741 msgid "--sign --encrypt [filename]" msgstr "--sign --encrypt [Dateiname]" -#. make a clearsig -#: g10/g10.c:722 +#: g10/g10.c:755 msgid "--clearsign [filename]" msgstr "--clearsign [Dateiname]" -#: g10/g10.c:734 +#: g10/g10.c:767 msgid "--decrypt [filename]" msgstr "--decrypt [Dateiname]" -#: g10/g10.c:742 +#: g10/g10.c:775 msgid "--sign-key username" msgstr "--sign-key Benutzername" -#: g10/g10.c:750 -msgid "--edit-sig username" -msgstr "--edit-sig Benutzername" +#. Edit a key signature +#: g10/g10.c:783 +msgid "--edit-key username" +msgstr "--deit-key Benutzername" -#: g10/g10.c:758 +#: g10/g10.c:791 msgid "--delete-secret-key username" msgstr "--delete-secret-key Benutzername" -#: g10/g10.c:761 +#: g10/g10.c:794 msgid "--delete-key username" msgstr "--delete-key Benutzername" -#. no arg: use default, 1 arg use this one -#: g10/g10.c:769 +#: g10/g10.c:802 msgid "--change-passphrase [username]" msgstr "--change-passphrase [Benutzername]" -#: g10/g10.c:810 +#. -kv userid keyring +#: g10/encode.c:200 g10/g10.c:826 g10/keylist.c:79 g10/trustdb.c:358 +msgid "can't open %s: %s\n" +msgstr "Datei '%s' kann nicht ge\366ffnet werden: %s\n" + +#: g10/g10.c:837 msgid "-k[v][v][v][c] [userid] [keyring]" msgstr "-h[v][v][v][c] [Benutzername] [Keyring]" -#: g10/g10.c:857 +#: g10/g10.c:897 msgid "dearmoring failed: %s\n" msgstr "De-Armor fehlgeschlagen: %s\n" -#: g10/g10.c:865 +#: g10/g10.c:905 msgid "enarmoring failed: %s\n" msgstr "En-Armor fehlgeschlagen: %s\n" +#: g10/g10.c:961 +msgid "invalid hash algorithm '%s'\n" +msgstr "Ung\374ltiger Hash Algorithmus '%s'\n" +#: g10/g10.c:1014 +msgid "[filename]" +msgstr "[Dateiname]" +#: g10/decrypt.c:59 g10/g10.c:1016 g10/verify.c:66 +msgid "can't open '%s'\n" +msgstr "Datei '%s' kann nicht ge\366ffnet werden\n" - - - - - -#: g10/pkclist.c:157 -msgid "" -"No ownertrust values changed.\n" -"\n" -msgstr "Keine \"Ownertrust\" Werte ge�ndert.\n" - - +#: g10/g10.c:1061 +msgid "RSA keys are depreciated; please consider creating a new key and use this key in the future\n" +msgstr "RSA Schl\374ssel sind nicht erw\374nscht; bitte denken Sie dar\374ber nach einen neuen Schl\374ssel zu erzeugen und diesen in Zukunft zu benutzen\n" #: g10/pkclist.c:65 msgid "" "No ownertrust defined for %lu:\n" "%4u%c/%08lX %s \"" msgstr "" -"Es ist kein \"Ownertrust\" f�r %lu definiert:\n" +"Es ist kein \"Ownertrust\" f\374r %lu definiert:\n" "%4u%c/%08lX %s \"" #: g10/pkclist.c:72 @@ -482,10 +479,10 @@ msgstr "" "\"\n" "\n" "Bitte entscheiden Sie, in wieweit Sie diesem User zutrauen,\n" -"eines anderen Users Key korrekt zu signieren (Vergleich mit dem Pa�,\n" +"eines anderen Users Key korrekt zu signieren (Vergleich mit dem Pa\337,\n" "vergleichen der Fingerprints aus unterschiedlichen Quellen ...)?\n" "\n" -" 1 = Wei� nicht so recht\n" +" 1 = Wei\337 nicht so recht\n" " 2 = Neeh, dem traue ich das nicht zu\n" " 3 = Ich vertraue ihm normalerweise\n" " 4 = Ich vertraue ihm immer\n" @@ -502,6 +499,10 @@ msgid "" "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.\n" msgstr "" +"Sie m\374\337en selbt entscheiden, welchen Wert Sie hier eintragen; dieser Wert\n" +"wird niemals an eine dritte Seite weitergegeben. Wir brauchen diesen Wert\n" +"um das Netz-des-Vertrauens aufzubauen. Dieses hat nichts mit dem (impliziet\n" +"erzeugten) Netz-der-Zertifikate zu tun.\n" #: g10/pkclist.c:108 msgid "You will see a list of signators etc. here\n" @@ -513,10 +514,15 @@ 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" -"Mal sehen ob wir now weitere Ownertrust Werte zuordnen k�nnen.\n" +"Ein g\374ltiger Trust Path konnte f\374r diesen Key nicht gefunden werden.\n" +"Mal sehen ob wir now weitere Ownertrust Werte zuordnen k\366nnen.\n" "\n" +#: g10/pkclist.c:157 +msgid "" +"No ownertrust values changed.\n" +"\n" +msgstr "Keine \"Ownertrust\" Werte ge\344ndert.\n" #: g10/pkclist.c:267 msgid "" @@ -525,12 +531,15 @@ msgid "" "the next question with yes\n" "\n" msgstr "" -"Es ist NICHT sicher, da� der Key dem vorgeblichen Besitzer geh�rt.\n" -"Wenn Sie *wirklich* wissen, was Sie tun, k�nnen Sie die n�chste\n" +"Es ist NICHT sicher, da\337 der Key dem vorgeblichen Besitzer geh\366rt.\n" +"Wenn Sie *wirklich* wissen, was Sie tun, k\366nnen Sie die n\344chste\n" "Frage mit ja beantworten\n" +#: g10/pkclist.c:278 +msgid "WARNING: Using untrusted key!\n" +msgstr "WARNUNG: Ein Schl\374ssel ohne gesichertes Vertrauen wird benutzt!\n" -#: g10/pkclist.c:304 +#: g10/pkclist.c:308 msgid "" "You did not specify a user ID. (you may use \"-r\")\n" "\n" @@ -538,87 +547,146 @@ msgstr "" "Sie gaben keine User-ID angegeben. (benutzen Sie die Option \"-r\")\n" "\n" - -#: g10/pkclist.c:308 +#: g10/pkclist.c:312 msgid "Enter the user ID: " msgstr "Geben Sie die User-ID ein: " +#: g10/pkclist.c:323 +msgid "No such user ID.\n" +msgstr "Keine solche User-ID.\n" + +#: g10/pkclist.c:357 g10/pkclist.c:384 +msgid "%s: skipped: %s\n" +msgstr "%s: \374bergangen: %s\n" +#: g10/pkclist.c:365 +msgid "%s: error checking key: %s\n" +msgstr "%s: Fehler beim pr\374fen des Schl\374ssels: %s\n" -#: g10/keygen.c:109 +#: g10/pkclist.c:391 +msgid "no valid addressees\n" +msgstr "Keine g\374ltigen Adressaten" + +#: g10/keygen.c:122 msgid "writing self signature\n" msgstr "Die Selbst-Signatur wird geschrieben\n" -#: g10/keygen.c:299 -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:160 +msgid "writing key binding signature\n" +msgstr "schreiben der \"key-binding\" Signatur\n" -#: g10/keygen.c:301 -msgid "" -"Please select the algorithm to use:\n" -" (1) ElGamal is the suggested one.\n" -" (2) DSA can only be used for signatures.\n" -msgstr "" -"Bitte w�hlen Sie den zu benutzenden Algorithmus aus:\n" -" (1) ElGamal wird empfohlen.\n" -" (2) DSA kann nur f�r Signaturen verwendet werden.\n" +#: g10/keygen.c:382 +msgid "Please select what kind of key you want:\n" +msgstr "Bitte w\344hlen Sie welche Art von Schl\374ssel is m\366chten:\n" + +#: g10/keygen.c:384 +msgid " (%d) DSA and ElGamal (default)\n" +msgstr " (%d) DSA und ElGamal (voreingestellt)\n" + +#: g10/keygen.c:385 +msgid " (%d) ElGamal (sign and encrypt)\n" +msgstr " (%d) ElGamal (signieren und verschl\374sseln)\n" -#: g10/keygen.c:314 -msgid "Your selection? (1,2,3) " -msgstr "Ihre Auswahl? (1,2,3) " +#: g10/keygen.c:386 +msgid " (%d) ElGamal (encrypt only)\n" +msgstr " (%d) ElGamal (nur verschl\374sseln)\n" + +#: g10/keygen.c:387 +msgid " (%d) DSA (sign only)\n" +msgstr " (%d) DSA (nur signieren)\n" + +#: g10/keygen.c:388 +msgid " (%d) ElGamal in a v3 packet\n" +msgstr " ((%d) ElGamal in einem v4 Packet\n" + +#: g10/keygen.c:392 +msgid "Your selection? " +msgstr "Ihre Auswahl? " -#: g10/keygen.c:316 -msgid "Your selection? (1,2) " -msgstr "Ihre Auswahl? (1,2) " +#: g10/keygen.c:418 +msgid "Invalid selection.\n" +msgstr "Ung\374ltige Auswahl.\n" -#: g10/keygen.c:343 +#: g10/keygen.c:430 msgid "" "About to generate a new %s keypair.\n" " minimum keysize is 768 bits\n" " default keysize is 1024 bits\n" " 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" +"Es wird ein neues %s Schl\374sselpaar erzeugt.\n" +" kleinste Schl\374ssell\344nge ist 768 bits\n" +" standard Schl\374ssell\344nge ist 1024 bits\n" +" gr\366\337te sinnvolle Schl\374ssell\344nge ist 2048 bits\n" -#: g10/keygen.c:351 +#: g10/keygen.c:436 msgid "What keysize do you want? (1024) " -msgstr "Welche Schl�ssell�nge w�nschen Sie? (1024)" +msgstr "Welche Schl\374ssell\344nge w\374nschen Sie? (1024)" -#: g10/keygen.c:357 +#: g10/keygen.c:441 msgid "DSA only allows keysizes from 512 to 1024\n" -msgstr "" +msgstr "DSA erlaubt nur Schl\374ssell\344ngen von 512 bis 1024\n" -#: g10/keygen.c:359 +#: g10/keygen.c:443 msgid "keysize too small; 768 is smallest value allowed.\n" -msgstr "zu kurz; 768 ist die kleinste m�gliche Schl�ssell�nge.\n" +msgstr "zu kurz; 768 ist die kleinste m\366gliche Schl\374ssell\344nge.\n" -#: g10/keygen.c:361 +#: g10/keygen.c:445 msgid "Keysizes larger than 2048 are not suggested, because computations take REALLY long!\n" -msgstr "" -"Schl�ssell�ngen gr��er als 2048 werden nicht empfohlen, da die " -"Berechnungen dann WIRKLICH lange brauchen\n" +msgstr "Schl\374ssell\344ngen gr\366\337er als 2048 werden nicht empfohlen, da die Berechnungen dann WIRKLICH lange brauchen\n" -#: g10/keygen.c:363 +#: g10/keygen.c:447 msgid "Are you sure, that you want this keysize? " -msgstr "Sind Sie sicher, da� Sie diese Schl�ssell�nge w�nschen? " +msgstr "Sind Sie sicher, da\337 Sie diese Schl\374ssell\344nge w\374nschen? " -#: g10/keygen.c:367 +#: g10/keygen.c:451 msgid "Okay, but keep in mind that your monitor and keyboard radiation is also very vulnerable to attacks!\n" -msgstr "Gut, aber bitte denken Sie auch daran, da� Monitor und Tastatur " -"Daten abstrahlen und diese leicht mitgelesen werden k�nnen.\n" +msgstr "Gut, aber bitte denken Sie auch daran, da\337 Monitor und Tastatur Daten abstrahlen und diese leicht mitgelesen werden k\366nnen.\n" + +#: g10/keygen.c:459 +msgid "Do you really need such a large keysize? " +msgstr "Brauchen Sie wirklich eine derartig gro\337e Schl\374ssell\344nge? " -#: g10/keygen.c:377 +#: g10/keygen.c:470 msgid "Requested keysize is %u bits\n" -msgstr "Die verlangte Schl�ssell�nge ist %u Bits\n" +msgstr "Die verlangte Schl\374ssell\344nge ist %u Bits\n" -#: g10/keygen.c:380 g10/keygen.c:384 +#: g10/keygen.c:473 g10/keygen.c:477 msgid "rounded up to %u bits\n" msgstr "aufgerundet auf %u Bits\n" -#: g10/keygen.c:391 +#: g10/keygen.c:489 +msgid "" +"Please specify how long the key should be valid.\n" +" 0 = key does not expire\n" +" <n> = key expires in n days\n" +" <n>w = key expires in n weeks\n" +" <n>m = key expires in n months\n" +" <n>y = key expires in n years\n" +msgstr "" + +#: g10/keygen.c:504 +msgid "Key is valid for? (0) " +msgstr "Der Schl\374ssel is g\374ltig f\374r? (0) " + +#: g10/keygen.c:515 +msgid "invalid value\n" +msgstr "Ung\374ltiger Wert.\n" + +#: g10/keygen.c:520 +msgid "Key does not expire at all\n" +msgstr "Der Schl\374ssel verf\344llt nie\n" + +#. print the date when the key expires +#: g10/keygen.c:523 +msgid "Key expires at %s\n" +msgstr "Der Schl\374ssel verf\344llt am %s\n" + +#: g10/keygen.c:528 +msgid "Is this correct (y/n)? " +msgstr "Ist dies richtig? (y/n) " + +#: g10/keygen.c:557 msgid "" "\n" "You need a User-ID to identify your key; the software constructs the user id\n" @@ -627,115 +695,659 @@ msgid "" "\n" msgstr "" "\n" -"Sie ben�tigen einen User-ID um Ihren Schl�ssel eindeutig zu machen; das\n" +"Sie ben\366tigen einen User-ID um Ihren Schl\374ssel eindeutig zu machen; das\n" "Programm baut diese User-ID aus Ihrem echten Namen, einem Kommentar und\n" "Ihrer Email Adresse in dieser Form auf:\n" " \"Heinrich Heine (Der Dichter) <[email protected]>\"\n" "\n" - - -#: g10/keygen.c:403 +#: g10/keygen.c:568 msgid "Real name: " msgstr "Vorname, Nachname: " -#: g10/keygen.c:407 +#: g10/keygen.c:572 msgid "Invalid character in name\n" -msgstr "Ung�ltiges Zeichen im Namen\n" +msgstr "Ung\374ltiges Zeichen im Namen\n" -#: g10/keygen.c:409 +#: g10/keygen.c:574 msgid "Name may not start with a digit\n" msgstr "Der Name darf nicht mit einer Ziffer beginnen\n" -#: g10/keygen.c:411 +#: g10/keygen.c:576 msgid "Name must be at least 5 characters long\n" -msgstr "Der Name mu� min. 5 Zeichen lang sein\n" +msgstr "Der Name mu\337 min. 5 Zeichen lang sein\n" -#: g10/keygen.c:419 +#: g10/keygen.c:584 msgid "Email address: " msgstr "Email Adresse: " -#: g10/keygen.c:431 +#: g10/keygen.c:596 msgid "Not a valid email address\n" -msgstr "Email Adresse is ung�ltig\n" +msgstr "Email Adresse is ung\374ltig\n" -#: g10/keygen.c:439 +#: g10/keygen.c:604 msgid "Comment: " msgstr "Kommentar: " #. no comment is okay -#: g10/keygen.c:445 +#: g10/keygen.c:610 msgid "Invalid character in comment\n" -msgstr "Ung�ltiges Zeichen im Kommentar\n" +msgstr "Ung\374ltiges Zeichen im Kommentar\n" -#: g10/keygen.c:465 +#: g10/keygen.c:630 msgid "" "You selected this USER-ID:\n" " \"%s\"\n" "\n" msgstr "" -"Sie haben diese User-ID gew�hlt:\n" +"Sie haben diese User-ID gew\344hlt:\n" " \"%s\"\n" "\n" -#: g10/keygen.c:467 +#: g10/keygen.c:633 msgid "Edit (N)ame, (C)omment, (E)mail or (O)kay? " -msgstr "�ndern: N=Name, C=Kommentar, E=Email, O=Okay? " +msgstr "\304ndern: N=Name, C=Kommentar, E=Email, O=Okay? " -#: g10/keygen.c:499 +#: g10/keygen.c:672 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\366tigen eine \"passphrase\" um den geheimen Schl\374ssel zu sch\374tzen.\n" "\n" -#: g10/keygen.c:508 +#: g10/keyedit.c:663 g10/keygen.c:680 +msgid "passphrase not correctly repeated; try again.\n" +msgstr "\"passphrase\" nicht richtig wiederholt; noch einmal.\n" + +#: g10/keygen.c:686 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 \"--change-passphrase\"\n" "\n" msgstr "" -"Sie m�chten keine \"passphrase\" - Dies ist einen *schlechte* Idee!\n" -"Es ist trotzdem m�glich. Sie k�nnen Ihre \"phassphrase\" jederzeit\n" -"�ndern, indem sie dieses Programm mit dem Kommando \"--change-passphrase\"\n" +"Sie m\366chten keine \"passphrase\" - Dies ist einen *schlechte* Idee!\n" +"Es ist trotzdem m\366glich. Sie k\366nnen Ihre \"phassphrase\" jederzeit\n" +"\344ndern, indem sie dieses Programm mit dem Kommando \"--change-passphrase\"\n" "aufrufen\n" "\n" - -#: g10/keygen.c:514 -msgid "passphrase not correctly repeated; try again.\n" -msgstr "\"passphrase\" nicht richtig wiederholt; noch einmal.\n" - -#: g10/keygen.c:531 -msgid "writing public certificate to '%s'\n" -msgstr "schreiben des �ffentlichen Schl�ssels nach '%s'\n" - -#: g10/keygen.c:532 -msgid "writing secret certificate to '%s'\n" -msgstr "schreiben des geheimen Schl�ssels nach '%s'\n" - -#: g10/keygen.c:544 +#: g10/keygen.c:707 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" "network and the disks) during the prime generation; this gives the random\n" "number generator a better chance to gain enough entropy.\n" msgstr "" -"Wir m��en eine ganze Menge Zufallszahlen erzeugen. Sie k�nnen dies\n" -"unterst�tzen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n" +"Wir m\374\337en eine ganze Menge Zufallszahlen erzeugen. Sie k\366nnen dies\n" +"unterst\374tzen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas\n" "tippen oder irgendwelche anderen Programme benutzen.\n" -#: g10/keygen.c:611 +#: g10/keygen.c:753 g10/keygen.c:900 +msgid "Key generation can only be used in interactive mode\n" +msgstr "Die Schl\374sselerzeugung kann nur im interaktiven Modus benutzt werden\n" + +#: g10/keygen.c:761 +msgid "DSA keypair will have 1024 bits.\n" +msgstr "Der DSA Schl\374ssel wird 1024 bits haben.\n" + +#: g10/keygen.c:773 +msgid "writing public certificate to '%s'\n" +msgstr "schreiben des \366ffentlichen Schl\374ssels nach '%s'\n" + +#: g10/keygen.c:774 +msgid "writing secret certificate to '%s'\n" +msgstr "schreiben des geheimen Schl\374ssels nach '%s'\n" + +#: g10/keygen.c:851 msgid "public and secret key created and signed.\n" -msgstr "�ffentlichen und geheimen Schl�ssel erzeugt und signiert.\n" +msgstr "\326ffentlichen und geheimen Schl\374ssel erzeugt und signiert.\n" + +#: g10/keygen.c:853 +msgid "" +"Note that this key cannot be used for encryption. You may want to use\n" +"the command \"--add-key\" to generate a secondary key for this purpose.\n" +msgstr "" +"Bitte beachten Sie, da\337 dieser Schl\374ssel nicht zum verschl\374sseln benutzt\n" +"werden kann. Sie k\366nnen aber mit dem Kommando \"--add-key\" einen\n" +"Sekund\344rschl\374ssel zu diesem Schl\374ssel hinzuf\374gen.\n" -#: g10/keygen.c:622 +#: g10/keygen.c:867 g10/keygen.c:1019 msgid "Key generation failed: %s\n" -msgstr "Schl�ssel-Erzeugung fehlgeschlagen: %s\n" +msgstr "Schl\374ssel-Erzeugung fehlgeschlagen: %s\n" + +#: g10/keygen.c:1014 +msgid "public and secret subkey created.\n" +msgstr "\326ffentlicher und privater Schl\374ssel erzeugt.\n" + +#. prepare iobufs +#: g10/encode.c:85 +msgid "%s: can't open: %s\n" +msgstr "%s: kann nicht ge\366ffnet werden: %s\n" + +#: g10/encode.c:102 +msgid "error creating passphrase: %s\n" +msgstr "Fehler beim erzeugen der \"Passphrase\": %s\n" + +#: g10/encode.c:138 g10/encode.c:236 +msgid "%s: warning: empty file\n" +msgstr "%s: Achtung: Leere Datei.\n" + +#: g10/encode.c:206 +msgid "reading from '%s'\n" +msgstr "Lesen von '%s'\n" + +#: g10/encode.c:351 +msgid "%s encrypted for: %s\n" +msgstr "%s verschl\374sselt f\374r: %s\n" + +#: g10/import.c:105 +msgid "can't open file: %s\n" +msgstr "Kann die Datei nicht \366ffnen: %s\n" + +#: g10/import.c:121 +msgid "skipping block of type %d\n" +msgstr "\374berspringe den Block vom Typ %d\n" + +#: g10/import.c:131 +msgid "read error: %s\n" +msgstr "Lesefehler: %s\n" + +#: g10/import.c:270 g10/import.c:425 +msgid "key %08lX: no user id\n" +msgstr "Schl\374ssel %08lX: Keine User-ID\n" + +#: g10/import.c:280 +msgid "key %08lX: no valid user ids\n" +msgstr "Schl\374ssel %08lX: Keine g\374ltigen User-IDs\n" + +#: g10/import.c:289 g10/import.c:492 +msgid "key %08lX: public key not found: %s\n" +msgstr "Schl\374ssel %08lX: \326ffentlicher Schl\374ssel nicht gefunden: %s\n" + +#: g10/import.c:295 +msgid "no default public keyring\n" +msgstr "Kein voreingestellter \366ffentlicher Schl\374sselring\n" + +#: g10/import.c:299 +msgid "writing to '%s'\n" +msgstr "Schreiben au '%s'\n" + +#: g10/import.c:303 g10/import.c:356 g10/import.c:546 +msgid "can't lock public keyring: %s\n" +msgstr "" + +#: g10/import.c:306 +msgid "can't write to keyring: %s\n" +msgstr "" + +#: g10/import.c:309 +msgid "key %08lX: public key imported\n" +msgstr "Sch\374ssel %08lX: \326ffentlicher Schl\374\374sel importiert\n" + +#: g10/import.c:317 +msgid "key %08lX: doesn't match our copy\n" +msgstr "Sch\374ssel %08lX: Stimmt nich mit usnerer Kopie \374berein" + +#: g10/import.c:330 g10/import.c:501 +msgid "key %08lX: can't locate original keyblock: %s\n" +msgstr "" + +#: g10/import.c:337 g10/import.c:508 +msgid "key %08lX: can't read original keyblock: %s\n" +msgstr "" + +#. and write the keyblock back +#: g10/import.c:353 g10/import.c:440 g10/import.c:543 +msgid "writing keyblock\n" +msgstr "" + +#: g10/import.c:359 g10/import.c:549 +msgid "can't write keyblock: %s\n" +msgstr "Der Schl\374sselblock kann nicht geschrieben werden: %s\n" + +#: g10/import.c:363 +msgid "key %08lX: 1 new user-id\n" +msgstr "Sch\374ssel %08lX: 1 neue User-ID\n" + +#: g10/import.c:366 +msgid "key %08lX: %d new user-ids\n" +msgstr "Sch\374ssel %08lX: %d neue User-IDs\n" + +#: g10/import.c:369 +msgid "key %08lX: 1 new signature\n" +msgstr "Sch\374ssel %08lX: 1 neue Signatur" + +#: g10/import.c:372 +msgid "key %08lX: %d new signatures\n" +msgstr "Sch\374ssel %08lX: %d neue Signaturen\n" + +#: g10/import.c:375 +msgid "key %08lX: 1 new subkey\n" +msgstr "Sch\374ssel %08lX: 1 neuer Sekund\344rschl\374ssel\n" + +#: g10/import.c:378 +msgid "key %08lX: %d new subkeys\n" +msgstr "Sch\374ssel %08lX: %d neue Sekund\344rschl\374ssel\n" + +#: g10/import.c:382 +msgid "key %08lX: not changed\n" +msgstr "Sch\374ssel %08lX: Nich ge\344ndert\n" + +#: g10/import.c:443 +msgid "can't lock secret keyring: %s\n" +msgstr "" + +#: g10/import.c:446 +msgid "can't write keyring\n" +msgstr "" + +#. we are ready +#: g10/import.c:449 +msgid "key %08lX: secret key imported\n" +msgstr "Sch\374ssel %08lX: Privater schl\374ssel importiert\n" + +#. we can't merge secret keys +#: g10/import.c:452 +msgid "key %08lX: already in secret keyring\n" +msgstr "Sch\374ssel %08lX: Ist bereits im privaten Schl\374sselring\n" +#: g10/import.c:456 +msgid "key %08lX: secret key not found: %s\n" +msgstr "Sch\374ssel %08lX: Privaten Schl\374ssel nicht gefunden: %s\n" +#: g10/import.c:486 +msgid "key %08lX: no public key - can't apply revocation certificate\n" +msgstr "Sch\374ssel %08lX: Kein \366ffentlicher Schl\374ssel - Das \"Revokation\"-Zertifikat kann nicht angebracht werden\n" +#: g10/import.c:519 +msgid "key %08lX: invalid revocation certificate: %s - rejected\n" +msgstr "Sch\374ssel %08lX: Ung\374ltiges \"Revocation\"-Zertifikat: %s - zur\374ckgewiesen\n" +#. we are ready +#: g10/import.c:552 +msgid "key %08lX: revocation certificate imported\n" +msgstr "Sch\374ssel %08lX: \"Revocation\"-Zertifikat importiert\n" +#: g10/import.c:582 +msgid "key %08lX: no user-id for signature\n" +msgstr "Sch\374ssel %08lX: Keine User-ID f\374r Signatur\n" + +#: g10/import.c:589 +msgid "key %08lX: unsupported public key algorithm\n" +msgstr "Sch\374ssel %08lX: \"Public Key\" Algorithmus wird nicht unterst\374tzt\n" + +#: g10/import.c:590 +msgid "key %08lX: invalid self-signature\n" +msgstr "Sch\374ssel %08lX: Ung\374ltige Selbst-Signatur\n" + +#: g10/import.c:619 +msgid "key %08lX: skipped userid '" +msgstr "Sch\374ssel %08lX: \374bergehe User-ID '" + +#: g10/import.c:642 +msgid "key %08lX: revocation certificate at wrong place - skipped\n" +msgstr "Sch\374ssel %08lX: \"Revocation\"-Zertifikat an falschem Platz - \374bergangen\n" + +#: g10/import.c:649 +msgid "key %08lX: invalid revocation certificate: %s - skipped\n" +msgstr "Sch\374ssel %08lX: Ung\374ltiges \"Revocation\"-Zertifikat: %s - \374bergangen\n" + +#: g10/import.c:711 +msgid "key %08lX: revocation certificate added\n" +msgstr "Sch\374ssel %08lX: \"Revocation\"-Zertifikat hinzugef\374gt\n" + +#: g10/import.c:774 g10/import.c:810 +msgid "key %08lX: our copy has no self-signature\n" +msgstr "Sch\374ssel %08lX: Unser Kopie hat keine Selbst-Signatur\n" + +#: g10/keyedit.c:79 +msgid "" +"Are you really sure that you want to sign this key:\n" +"\n" +msgstr "Sind Sie wirklich sicher, da\337 Sie diesen Schl\374ssel signieren wollen:\n" + +#: g10/keyedit.c:89 +msgid "Sign this key? " +msgstr "Signieren? " + +#: g10/keyedit.c:145 +msgid "%d bad signatures\n" +msgstr "%d schlechte Signaturen\n" + +#: g10/keyedit.c:147 +msgid "No public key for %d signatures\n" +msgstr "Kein \366ffentlicher Schl\374ssel f\374r %d Signaturen\n" + +#: g10/keyedit.c:149 +msgid "%d signatures not checked due to errors\n" +msgstr "%s Signaturen nicht aufgrund von Fehlern nicht gepr\374ft\n" + +#: g10/keyedit.c:176 +msgid "[User name not available] " +msgstr "[Benuzername nicht verf\374gbar] " + +#: g10/keyedit.c:185 +msgid "This is a BAD signature!\n" +msgstr "Dies ist eine FALSCHE Signatur!\n" + +#: g10/keyedit.c:187 +msgid "Public key not available.\n" +msgstr "\326ffentlicher Sch\374ssel ist nicht verf\374gbar.\n" + +#: g10/keyedit.c:189 +msgid "The signature could not be checked!\n" +msgstr "Die Signatur konnte nicht gepr\374ft werden!\n" + +#: g10/keyedit.c:192 +msgid "Skipped self-signature\n" +msgstr "Selbst-Signatur \374bersprungen\n" + +#: g10/keyedit.c:197 +msgid "Remove this signature? " +msgstr "Die Signatur entfernen? " + +#: g10/keyedit.c:209 +msgid "Do you really want to remove the selected signatures? " +msgstr "M\366chten Sie die ausgew\344hlten Siganturen wirklich entfernen? " + +#: g10/keyedit.c:250 g10/keyedit.c:396 g10/keyedit.c:465 +msgid "%s: user not found\n" +msgstr "%s: Benutzer nich gefunden\n" + +#: g10/keyedit.c:277 g10/keyedit.c:417 +msgid "Checking signatures of this public key certificate:\n" +msgstr "Die Signaturen diese Zertifkats werden \374berpr\374ft:\n" + +#: g10/keyedit.c:295 +msgid "To you want to remove some of the invalid sigs? " +msgstr "M\366chten Sie einige der ung\374ltigen Signauren entfernen? " + +#: g10/keyedit.c:315 +msgid "Already signed by keyid %08lX\n" +msgstr "Ist bereits mit Schl\374ssel %08lX signiert.\n" + +#: g10/keyedit.c:327 +msgid "Nothing to sign\n" +msgstr "Nicht zu signieren.\n" + +#: g10/keyedit.c:494 +msgid "there is a secret key for this public key!\n" +msgstr "Es gibt einen privaten schl\374ssel zu diesem \366ffentlichen Schl\374ssel!\n" + +#: g10/keyedit.c:496 +msgid "use option \"--delete-secret-key\" to delete it first.\n" +msgstr "Benutzen Sie das Kommando \"--delete-decret-key\" um ihn vorab zu entfernen.\n" + +#: g10/keyedit.c:508 +msgid "can't do that in batch-mode\n" +msgstr "Dies kann im Batchmodus nicht durchgef\374hrt werden\n" + +#: g10/keyedit.c:512 +msgid "can't do that in batch-mode without \"--yes\"\n" +msgstr "Dies kann im Batchmodus ohne \"--yes\" nicht durchgef\374hrt werden\n" + +#: g10/keyedit.c:532 +msgid "Delete this key from the keyring? " +msgstr "Diesen Schl\374ssel aus dem Schl\374sselring l\366schen? " + +#. I think it is not required to check a passphrase; if +#. * the user is so stupid as to let others access his secret keyring +#. * (and has no backup) - it is up him to read some very +#. * basic texts about security. +#. +#: g10/keyedit.c:541 +msgid "This is a secret key! - really delete? " +msgstr "Dies is ein private Schl\374ssel! - Wirklich l\366schen? " + +#: g10/keyedit.c:628 +msgid "This key is not protected.\n" +msgstr "Dieser Schl\374ssel ist nicht gesch\374tzt.\n" + +#: g10/keyedit.c:631 +msgid "Key is protected.\n" +msgstr "Schl\374ssel ist gesch\374tzt.\n" + +#: g10/keyedit.c:650 +msgid "Can't edit this key: %s\n" +msgstr "Dieser Sch\374ssel kann nicht editiert werden: %s\n" + +#: g10/keyedit.c:655 +msgid "" +"Enter the new passphrase for this secret key.\n" +"\n" +msgstr "" +"Geben Sie die neue \"Passphrase\" f\374r diesen privaten Schl\374ssel.\n" +"\n" + +#: g10/keyedit.c:667 +msgid "" +"You don't want a passphrase - this is probably a *bad* idea!\n" +"\n" +msgstr "" +"Yie m\366chten keine \"Passphrase\" - dies ist wahrscheinlich eine *schlechte* Idee!\n" +"\n" + +#: g10/keyedit.c:669 +msgid "Do you really want to do this? " +msgstr "M\366chten Sie dies wirklich tun? " + +#: g10/mainproc.c:196 +msgid "public key decryption failed: %s\n" +msgstr "Erzeugung des \366ffentlichen Schl\374ssels fehlgeschlagen: %s\n" + +#: g10/mainproc.c:224 +msgid "decryption failed: %s\n" +msgstr "Enschl\374sselung fehlgeschlagen: %s\n" + +#: g10/mainproc.c:817 +msgid "Signature made %.*s using %s key ID %08lX\n" +msgstr "Signatur wurde am %.*s mit %s Schl\374ssel %08lX erzeugt\n" + +#: g10/mainproc.c:823 +msgid "BAD signature from \"" +msgstr "FALSCHE Signatur von \"" + +#: g10/mainproc.c:824 +msgid "Good signature from \"" +msgstr "Gute Signatur von \"" + +#: g10/mainproc.c:833 +msgid "Can't check signature: %s\n" +msgstr "Signatur kann nicht gepr\374ft werden: %s\n" + +#: g10/passphrase.c:116 +msgid "" +"\n" +"You need a passphrase to unlock the secret key for\n" +"user: \"" +msgstr "" +"\n" +"Sie ben\366tigen eine \"Passphrase\" um den geheimen Schl\374ssel zu entsperren.\n" +"Benutzer: \"" + +#: g10/passphrase.c:125 +msgid "(%u-bit %s key, ID %08lX, created %s)\n" +msgstr "(%u-bit %s Schl\374ssel, ID %08lX, erzeugt %s)\n" + +#: g10/plaintext.c:216 +msgid "can't open signed data '%s'\n" +msgstr "" + +#: g10/seckey-cert.c:128 +msgid "Invalid passphrase; please try again ...\n" +msgstr "" + +#: g10/sig-check.c:165 g10/trustdb.c:1755 +msgid "public key created in future (time warp or clock problem)\n" +msgstr "" + +#: g10/sig-check.c:171 +msgid "warning: signature key expired %s\n" +msgstr "" + +#: g10/trustdb.c:331 +msgid "can't create %s: %s\n" +msgstr "" + +#: g10/trustdb.c:360 +msgid "TrustDB %s is invalid\n" +msgstr "" + +#: g10/trustdb.c:435 g10/trustdb.c:596 +msgid "trustdb: lseek failed: %s\n" +msgstr "" + +#: g10/trustdb.c:443 +msgid "trustdb: read failed (n=%d): %s\n" +msgstr "" + +#: g10/trustdb.c:460 +msgid "%s: not a trustdb file\n" +msgstr "" + +#: g10/trustdb.c:601 +msgid "trustdb: write failed (n=%d): %s\n" +msgstr "" + +#: g10/trustdb.c:633 +msgid "%s: failed to append a record: %s\n" +msgstr "" + +#: g10/trustdb.c:680 +msgid "%s: search_db failed: %s\n" +msgstr "" + +#: g10/trustdb.c:724 +msgid "error reading record with local_id %lu: %s\n" +msgstr "" + +#: g10/trustdb.c:729 +msgid "record with local_id %lu is not a dir record\n" +msgstr "" + +#: g10/trustdb.c:762 +msgid "%lu: error reading dir record: %s\n" +msgstr "" + +#: g10/trustdb.c:773 +msgid "%lu: error building sigs on the fly: %s\n" +msgstr "" + +#: g10/trustdb.c:780 +msgid "%lu: error re-reading dir record: %s\n" +msgstr "" + +#: g10/trustdb.c:807 +msgid "error reading sigrec: %s\n" +msgstr "" + +#: g10/trustdb.c:812 +msgid "chained sigrec %lu has a wrong owner\n" +msgstr "" + +#: g10/trustdb.c:862 +msgid "keyid %08lX: secret key without public key\n" +msgstr "" + +#: g10/trustdb.c:867 +msgid "keyid %08lX: secret and public key don't match\n" +msgstr "" + +#: g10/trustdb.c:878 +msgid "keyid %08lX: can't put it into the trustdb\n" +msgstr "" + +#: g10/trustdb.c:884 +msgid "keyid %08lX: query record failed\n" +msgstr "" + +#: g10/trustdb.c:893 +msgid "keyid %08lX: already in ultikey_table\n" +msgstr "" + +#: g10/trustdb.c:901 +msgid "enum_secret_keys failed: %s\n" +msgstr "" + +#: g10/trustdb.c:1169 +msgid "%lu: build_sigrecs: can't read dir record\n" +msgstr "" + +#: g10/trustdb.c:1173 +msgid "%lu: build_sigrecs: can't read key record\n" +msgstr "" + +#: g10/trustdb.c:1179 +msgid "build_sigrecs: get_keyblock_byfprint failed\n" +msgstr "" + +#: g10/trustdb.c:1185 +msgid "build_sigrecs: check_sigs failed\n" +msgstr "" + +#: g10/trustdb.c:1189 +msgid "build_sigrecs: self-signature missing\n" +msgstr "" + +#: g10/trustdb.c:1195 +msgid "build_sigrecs: key has been revoked\n" +msgstr "" + +#: g10/trustdb.c:1220 +msgid "set_signature_packets_local_id failed: %s\n" +msgstr "" + +#: g10/trustdb.c:1231 g10/trustdb.c:1256 g10/trustdb.c:1267 +msgid "build_sigrecs: write_record failed\n" +msgstr "" + +#: g10/trustdb.c:1277 +msgid "update_dir_record: read failed\n" +msgstr "" + +#: g10/trustdb.c:1282 +msgid "update_dir_record: write failed\n" +msgstr "" + +#: g10/trustdb.c:1292 +msgid "trustdb: build_sigrecs: %s\n" +msgstr "" + +#: g10/trustdb.c:1511 +msgid "can't access %s: %s\n" +msgstr "" + +#: g10/trustdb.c:1527 +msgid "can't create directory '%s': %s\n" +msgstr "" + +#: g10/trustdb.c:1531 +msgid "directory '%s' does not exist!\n" +msgstr "" + +#: g10/trustdb.c:1732 +msgid "check_trust: read record failed\n" +msgstr "" + +#. no local_id: scan the trustdb +#: g10/trustdb.c:1738 +msgid "check_trust: search_record failed: %s\n" +msgstr "" + +#: g10/trustdb.c:1745 +msgid "failed to insert pubkey into trustdb: %s\n" +msgstr "" + +#: g10/trustdb.c:1749 +msgid "pubkey not in trustdb - inserted as %lu\n" +msgstr "" + +#: g10/trustdb.c:1761 +msgid "key expiration date is %s\n" +msgstr "" + +#: g10/trustdb.c:1769 +msgid "check_trust: do_check failed: %s\n" +msgstr "" diff --git a/util/ChangeLog b/util/ChangeLog index 5baefcc20..661914645 100644 --- a/util/ChangeLog +++ b/util/ChangeLog @@ -1,3 +1,7 @@ +Tue Jul 7 11:49:25 1998 Werner Koch ([email protected]) + + * logger.c (log_set_filename): New. + Mon Jul 6 09:03:49 1998 Werner Koch ([email protected]) * strgutil.c (append_to_strlist): New. diff --git a/util/iobuf.c b/util/iobuf.c index bd69322b9..3067ac433 100644 --- a/util/iobuf.c +++ b/util/iobuf.c @@ -893,6 +893,8 @@ iobuf_peek(IOBUF a, byte *buf, unsigned buflen ) { int n=0; + if( a->filter_eof ) + return -1; if( !(a->d.start < a->d.len) ) { if( underflow(a) == -1 ) return -1; diff --git a/util/logger.c b/util/logger.c index 4ae74547d..0f181d8a5 100644 --- a/util/logger.c +++ b/util/logger.c @@ -73,6 +73,15 @@ print_prefix(const char *text) fprintf(stderr, "?%s: %s", pidstring, text ); } +static void +print_prefix_f(const char *text, const char *fname) +{ + if( pgm_name ) + fprintf(stderr, "%s%s:%s: %s", pgm_name, pidstring, fname, text ); + else + fprintf(stderr, "?%s:%s: %s", pidstring, fname, text ); +} + void g10_log_info( const char *fmt, ... ) { @@ -85,6 +94,17 @@ g10_log_info( const char *fmt, ... ) } void +g10_log_info_f( const char *fname, const char *fmt, ... ) +{ + va_list arg_ptr ; + + print_prefix_f("", fname); + va_start( arg_ptr, fmt ) ; + vfprintf(stderr,fmt,arg_ptr) ; + va_end(arg_ptr); +} + +void g10_log_error( const char *fmt, ... ) { va_list arg_ptr ; @@ -97,6 +117,18 @@ g10_log_error( const char *fmt, ... ) } void +g10_log_error_f( const char *fname, const char *fmt, ... ) +{ + va_list arg_ptr ; + + print_prefix_f("", fname); + va_start( arg_ptr, fmt ) ; + vfprintf(stderr,fmt,arg_ptr) ; + va_end(arg_ptr); + errorcount++; +} + +void g10_log_fatal( const char *fmt, ... ) { va_list arg_ptr ; @@ -110,6 +142,19 @@ g10_log_fatal( const char *fmt, ... ) } void +g10_log_fatal_f( const char *fname, const char *fmt, ... ) +{ + va_list arg_ptr ; + + print_prefix_f("fatal: ", fname); + va_start( arg_ptr, fmt ) ; + vfprintf(stderr,fmt,arg_ptr) ; + va_end(arg_ptr); + secmem_dump_stats(); + exit(2); +} + +void g10_log_bug( const char *fmt, ... ) { va_list arg_ptr ; @@ -149,6 +194,17 @@ g10_log_debug( const char *fmt, ... ) va_end(arg_ptr); } +void +g10_log_debug_f( const char *fname, const char *fmt, ... ) +{ + va_list arg_ptr ; + + print_prefix_f("DBG: ", fname); + va_start( arg_ptr, fmt ) ; + vfprintf(stderr,fmt,arg_ptr) ; + va_end(arg_ptr); +} + void diff --git a/zlib/Makefile b/zlib/Makefile index 03038df11..8b8f71fd9 100644 --- a/zlib/Makefile +++ b/zlib/Makefile @@ -92,7 +92,7 @@ POSUB = po RANLIB = ranlib USE_INCLUDED_LIBINTL = yes USE_NLS = yes -VERSION = 0.3.1 +VERSION = 0.3.1a ZLIBS = l = |