diff --git a/NEWS b/NEWS index aa1b82837..ce8dea514 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,12 @@ * Add Indonesian and Portugese translations. + * Fixed a bug with symmetric-only encryption using the non-default 3DES. + The option --emulate-3des-s2k-bug may be used to decrypt documents + which have been encrypted this way; this should be done immediately + as this workaround will be remove in 1.1 + + Noteworthy changes in version 1.0.0 (1999-09-07) ----------------------------------- diff --git a/TODO b/TODO index 735841c4e..e8b8c1f36 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,4 @@ - * try to do --verify even if the files are swapped on the commandline - (requested by Herny Spencer) or change the error message to - a more clear one. - Scheduled for 1.1 ----------------- @@ -27,7 +23,7 @@ Scheduled for 1.1 * Check the beginning of file to detect already compressed files (gzip, bzip2, xdelta and some picture formats) - * Delay the read of the passphrase-fd afte a NEED_PASSPHRASE. But this + * Delay the read of the passphrase-fd after a NEED_PASSPHRASE. But this may break some scripts. diff --git a/VERSION b/VERSION index 0327041ad..3e46810c8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0c +1.0.0d diff --git a/checks/mkdemodirs b/checks/mkdemodirs index b0755ab48..cdd945cbf 100755 --- a/checks/mkdemodirs +++ b/checks/mkdemodirs @@ -24,10 +24,10 @@ for name in $NAMES; do /bin/echo " $name\c" [ -d $name ] && rm -r $name mkdir $name - $GPGDEMO --export-secret-key -o - $name | tee $name/Secret.gpg | \ - $GPG --homedir $name --import - $GPGDEMO --export -o - $name | tee $name/Public.gpg | \ - $GPG --homedir $name --import + $GPGDEMO --export-secret-key -o - $name > $name/Secret.gpg + $GPG --homedir $name --import $name/Secret.gpg + $GPGDEMO --export -o - $name > $name/Public.gpg + $GPG --homedir $name --import $name/Public.gpg [ -f $name/pubring.gpg~ ] && rm $name/pubring.gpg~ done echo "." diff --git a/cipher/ChangeLog b/cipher/ChangeLog index dd8c0b033..d5e77e579 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,8 @@ +Mon Oct 4 21:23:04 CEST 1999 Werner Koch + + * md.c (md_reset): Clear finalized; thanks to Ulf Moeller for + fixing this bug. + Sat Sep 18 12:51:51 CEST 1999 Werner Koch diff --git a/cipher/md.c b/cipher/md.c index be921e4b0..9313fc068 100644 --- a/cipher/md.c +++ b/cipher/md.c @@ -291,7 +291,7 @@ md_reset( MD_HANDLE a ) { struct md_digest_list_s *r; - a->bufcount = 0; + a->bufcount = a->finalized = 0; for( r=a->list; r; r = r->next ) { memset( r->context.c, 0, r->contextsize ); (*r->init)( &r->context.c ); diff --git a/g10/ChangeLog b/g10/ChangeLog index 83620ff73..acfed581d 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,44 @@ +Mon Oct 4 21:23:04 CEST 1999 Werner Koch + + * import.c (import_keys): Changed calling interface, adjusted caller. + (import): Moved printing of stats out ... + (print_stats): New. ... to here. + (import_keys_stream): Call stats print here. + (import_keys): Print stats as totals for all files. + + * tdbio.h (DIRF_NEWKEYS): New + * tdbio.c (tdbio_dump_record): Print the new flag. + * trustdb.c (check_trust_record): New arg sigs_only. Adapted all + callers. + (do_update_trust_record): Removed recheck arg and add a new sigs_only + do we can later improve on the performance. Changed all callers too. + (check_trustdb): Evalutate the new flag and add a status output. + Do a check when the dir record has not been checked. + (build_cert_tree): Evaluate the new flag. + (check_trust): Ditto. Do a trust_record check, when the dir record + is not marked as checked. + (mark_fresh_keys): New. + (clear_lid_table): New. + (sync_trustdb): New. + * import.c (import_keys): Call sync_trustdb() after processing. + (import_keys_stream): Ditto. + * tdbdump.c (import_ownertrust): Ditto. + + * import.c (import_revoke_cert): Notify the trust DB. + (do_update_trust_record): Use |= to set the REVOKED bit and not &=; + shame on me for this bad copy+paste introduced bug. + (do_we_trust): Add trustmask to allow revoked key override to work. + Chnaged are to allow return of a mofified trustlevel. Adapted the + one caller. + + * g10.c: New options --emulate-3des-s2k-bug + * passphrase.c (hash_passphrase): Implemented above. + + * mainproc.c (proc_tree): Check for standalone signatures. + (do_check_sig): Print a notice for a standalone revocation + (check_sig_and_print): Do not print an error for unchecked standalone + revocations. + Tue Sep 28 20:54:37 CEST 1999 Werner Koch * encode.c (encode_simple): Use new CTB when we don't have the diff --git a/g10/g10.c b/g10/g10.c index 7a9e9238d..500f2a1a7 100644 --- a/g10/g10.c +++ b/g10/g10.c @@ -179,6 +179,7 @@ enum cmd_and_opt_values { aNull = 0, oNoLiteral, oSetFilesize, oEntropyDLLName, + oEmu3DESS2KBug, /* will be removed in 1.1 */ aTest }; @@ -346,6 +347,7 @@ static ARGPARSE_OPTS opts[] = { { oNoLiteral, "no-literal", 0, "@" }, { oSetFilesize, "set-filesize", 20, "@" }, { oEntropyDLLName, "entropy-dll-name", 2, "@" }, + { oEmu3DESS2KBug, "emulate-3des-s2k-bug", 0, "@"}, {0} }; @@ -805,6 +807,7 @@ main( int argc, char **argv ) opt.s2k_cipher_algo = CIPHER_ALGO_BLOWFISH; break; case oEmuChecksumBug: opt.emulate_bugs |= EMUBUG_GPGCHKSUM; break; + case oEmu3DESS2KBug: opt.emulate_bugs |= EMUBUG_3DESS2K; break; case oCompressSigs: opt.compress_sigs = 1; break; case oRunAsShmCP: #ifndef USE_SHM_COPROCESSING @@ -1215,17 +1218,7 @@ main( int argc, char **argv ) case aFastImport: case aImport: - if( !argc ) { - rc = import_keys( NULL, (cmd == aFastImport) ); - if( rc ) - log_error("import failed: %s\n", g10_errstr(rc) ); - } - for( ; argc; argc--, argv++ ) { - rc = import_keys( *argv, (cmd == aFastImport) ); - if( rc ) - log_error("import from `%s' failed: %s\n", - *argv, g10_errstr(rc) ); - } + import_keys( argc? argv:NULL, argc, (cmd == aFastImport) ); break; case aExport: diff --git a/g10/import.c b/g10/import.c index 92cd93c24..5a6f83f97 100644 --- a/g10/import.c +++ b/g10/import.c @@ -38,6 +38,7 @@ static struct { + ulong count; ulong no_user_id; ulong imported; ulong imported_rsa; @@ -53,6 +54,7 @@ static struct { static int import( IOBUF inp, int fast, const char* fname ); +static void print_stats(void); static int read_block( IOBUF a, PACKET **pending_pkt, KBNODE *ret_root ); static int import_one( const char *fname, KBNODE keyblock, int fast ); static int import_secret_one( const char *fname, KBNODE keyblock ); @@ -105,30 +107,48 @@ static int merge_keysigs( KBNODE dst, KBNODE src, int *n_sigs, * Key revocation certificates have special handling. * */ -int -import_keys( const char *fname, int fast ) +void +import_keys( char **fnames, int nnames, int fast ) { - IOBUF inp = NULL; - int rc; + int i; - inp = iobuf_open(fname); - if( !fname ) - fname = "[stdin]"; - if( !inp ) { - log_error(_("can't open `%s': %s\n"), fname, strerror(errno) ); - return G10ERR_OPEN_FILE; + /* fixme: don't use static variables */ + memset( &stats, 0, sizeof( stats ) ); + + for(i=0; i < nnames; i++ ) { + const char *fname = fnames? fnames[i] : NULL; + IOBUF inp = iobuf_open(fname); + if( !fname ) + fname = "[stdin]"; + if( !inp ) + log_error(_("can't open `%s': %s\n"), fname, strerror(errno) ); + else { + int rc = import( inp, fast, fname ); + iobuf_close(inp); + if( rc ) + log_error("import from `%s' failed: %s\n", fname, + g10_errstr(rc) ); + } + if( !fname ) + break; } - - rc = import( inp, fast, fname ); - - iobuf_close(inp); - return rc; + print_stats(); + if( !fast ) + sync_trustdb(); } int import_keys_stream( IOBUF inp, int fast ) { - return import( inp, fast, "[stream]" ); + int rc = 0; + + /* fixme: don't use static variables */ + memset( &stats, 0, sizeof( stats ) ); + rc = import( inp, fast, "[stream]" ); + print_stats(); + if( !fast ) + sync_trustdb(); + return rc; } static int @@ -137,10 +157,6 @@ import( IOBUF inp, int fast, const char* fname ) PACKET *pending_pkt = NULL; KBNODE keyblock; int rc = 0; - ulong count=0; - - /* fixme: don't use static variables */ - memset( &stats, 0, sizeof( stats ) ); getkey_disable_caches(); @@ -165,16 +181,23 @@ import( IOBUF inp, int fast, const char* fname ) release_kbnode(keyblock); if( rc ) break; - if( !(++count % 100) && !opt.quiet ) - log_info(_("%lu keys so far processed\n"), count ); + if( !(++stats.count % 100) && !opt.quiet ) + log_info(_("%lu keys so far processed\n"), stats.count ); } if( rc == -1 ) rc = 0; else if( rc && rc != G10ERR_INV_KEYRING ) log_error( _("error reading `%s': %s\n"), fname, g10_errstr(rc)); + return rc; +} + + +static void +print_stats() +{ if( !opt.quiet ) { - log_info(_("Total number processed: %lu\n"), count ); + log_info(_("Total number processed: %lu\n"), stats.count ); if( stats.no_user_id ) log_info(_(" w/o user IDs: %lu\n"), stats.no_user_id ); if( stats.imported || stats.imported_rsa ) { @@ -202,9 +225,9 @@ import( IOBUF inp, int fast, const char* fname ) } if( is_status_enabled() ) { - char buf[12*16]; + char buf[12*20]; sprintf(buf, "%lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu", - count, + stats.count, stats.no_user_id, stats.imported, stats.imported_rsa, @@ -218,8 +241,6 @@ import( IOBUF inp, int fast, const char* fname ) stats.secret_dups); write_status_text( STATUS_IMPORT_RES, buf ); } - - return rc; } @@ -678,6 +699,15 @@ import_revoke_cert( const char *fname, KBNODE node ) log_info( _("key %08lX: revocation certificate imported\n"), (ulong)keyid[1]); stats.n_revoc++; + if( clear_trust_checked_flag( pk ) ) { + /* seems that we have to insert the record first */ + rc = insert_trust_record( keyblock ); + if( rc ) + log_error("key %08lX: trustdb insert failed: %s\n", + (ulong)keyid[1], g10_errstr(rc) ); + else + rc = clear_trust_checked_flag( pk ); + } leave: release_kbnode( keyblock ); diff --git a/g10/main.h b/g10/main.h index 3cca94a11..32aa2652c 100644 --- a/g10/main.h +++ b/g10/main.h @@ -116,7 +116,7 @@ KBNODE make_comment_node( const char *s ); KBNODE make_mpi_comment_node( const char *s, MPI a ); /*-- import.c --*/ -int import_keys( const char *filename, int fast ); +void import_keys( char **fnames, int nnames, int fast ); int import_keys_stream( IOBUF inp, int fast ); int collapse_uids( KBNODE *keyblock ); diff --git a/g10/mainproc.c b/g10/mainproc.c index 4c93b4877..59b460c81 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -507,6 +507,11 @@ do_check_sig( CTX c, KBNODE node, int *is_selfsig ) || c->list->pkt->pkttype == PKT_PUBLIC_SUBKEY ) { return check_key_signature( c->list, node, is_selfsig ); } + else if( sig->sig_class == 0x20 ) { + log_info(_("standalone revocation - " + "use \"gpg --import\" to apply\n"), sig->sig_class); + return G10ERR_NOT_PROCESSED; + } else { log_error("invalid root packet for sigclass %02x\n", sig->sig_class); @@ -1114,7 +1119,8 @@ check_sig_and_print( CTX c, KBNODE node ) buf[16] = 0; write_status_text( STATUS_NO_PUBKEY, buf ); } - log_error(_("Can't check signature: %s\n"), g10_errstr(rc) ); + if( rc != G10ERR_NOT_PROCESSED ) + log_error(_("Can't check signature: %s\n"), g10_errstr(rc) ); } return rc; } @@ -1174,7 +1180,10 @@ proc_tree( CTX c, KBNODE node ) else if( node->pkt->pkttype == PKT_SIGNATURE ) { PKT_signature *sig = node->pkt->pkt.signature; - if( !c->have_data ) { + if( sig->sig_class != 0x00 && sig->sig_class != 0x01 ) + log_info(_("standalone signature of class 0x%02x\n"), + sig->sig_class); + else if( !c->have_data ) { /* detached signature */ free_md_filter_context( &c->mfx ); c->mfx.md = md_open(sig->digest_algo, 0); diff --git a/g10/options.h b/g10/options.h index 02613e3cc..650df8d88 100644 --- a/g10/options.h +++ b/g10/options.h @@ -87,6 +87,7 @@ struct { #define EMUBUG_GPGCHKSUM 1 +#define EMUBUG_3DESS2K 2 #define DBG_PACKET_VALUE 1 /* debug packet reading/writing */ #define DBG_MPI_VALUE 2 /* debug mpi details */ diff --git a/g10/passphrase.c b/g10/passphrase.c index bee78660f..219238321 100644 --- a/g10/passphrase.c +++ b/g10/passphrase.c @@ -242,7 +242,13 @@ hash_passphrase( DEK *dek, char *pw, STRING2KEY *s2k, int create ) md = md_open( s2k->hash_algo, 1); for(pass=0; used < dek->keylen ; pass++ ) { if( pass ) { - md_reset(md); + if( (opt.emulate_bugs & EMUBUG_3DESS2K)) { + int tmp = md->finalized; + md_reset( md ); + md->finalized = tmp; + } + else + md_reset(md); for(i=0; i < pass; i++ ) /* preset the hash context */ md_putc(md, 0 ); } diff --git a/g10/pkclist.c b/g10/pkclist.c index 4bf1fc4bf..1e382ccff 100644 --- a/g10/pkclist.c +++ b/g10/pkclist.c @@ -337,16 +337,17 @@ _("Could not find a valid trust path to the key. Let's see whether we\n" /**************** * Check whether we can trust this pk which has a trustlevel of TRUSTLEVEL - * Returns: true if we trust. + * Returns: true if we trust. Might change the trustlevel */ static int -do_we_trust( PKT_public_key *pk, int trustlevel ) +do_we_trust( PKT_public_key *pk, int *trustlevel ) { int rc; int did_add = 0; + int trustmask = 0; retry: - if( (trustlevel & TRUST_FLAG_REVOKED) ) { + if( (*trustlevel & TRUST_FLAG_REVOKED) ) { log_info(_("key %08lX: key has been revoked!\n"), (ulong)keyid_from_pk( pk, NULL) ); if( opt.batch ) @@ -355,8 +356,9 @@ do_we_trust( PKT_public_key *pk, int trustlevel ) if( !cpr_get_answer_is_yes("revoked_key.override", _("Use this key anyway? ")) ) return 0; + trustmask |= TRUST_FLAG_REVOKED; } - else if( (trustlevel & TRUST_FLAG_SUB_REVOKED) ) { + else if( (*trustlevel & TRUST_FLAG_SUB_REVOKED) ) { log_info(_("key %08lX: subkey has been revoked!\n"), (ulong)keyid_from_pk( pk, NULL) ); if( opt.batch ) @@ -365,10 +367,12 @@ do_we_trust( PKT_public_key *pk, int trustlevel ) if( !cpr_get_answer_is_yes("revoked_key.override", _("Use this key anyway? ")) ) return 0; + trustmask |= TRUST_FLAG_SUB_REVOKED; } + *trustlevel &= ~trustmask; - switch( (trustlevel & TRUST_MASK) ) { + switch( (*trustlevel & TRUST_MASK) ) { case TRUST_UNKNOWN: /* No pubkey in trustDB: Insert and check again */ rc = insert_trust_record_by_pk( pk ); if( rc ) { @@ -376,11 +380,12 @@ do_we_trust( PKT_public_key *pk, int trustlevel ) g10_errstr(rc) ); return 0; /* no */ } - rc = check_trust( pk, &trustlevel, NULL, NULL, NULL ); + rc = check_trust( pk, trustlevel, NULL, NULL, NULL ); + *trustlevel &= ~trustmask; if( rc ) log_fatal("trust check after insert failed: %s\n", g10_errstr(rc) ); - if( trustlevel == TRUST_UNKNOWN || trustlevel == TRUST_EXPIRED ) { + if( *trustlevel == TRUST_UNKNOWN || *trustlevel == TRUST_EXPIRED ) { log_debug("do_we_trust: oops at %d\n", __LINE__ ); return 0; } @@ -398,7 +403,8 @@ do_we_trust( PKT_public_key *pk, int trustlevel ) else { int quit; - rc = add_ownertrust( pk, &quit, &trustlevel ); + rc = add_ownertrust( pk, &quit, trustlevel ); + *trustlevel &= ~trustmask; if( !rc && !did_add && !quit ) { did_add = 1; goto retry; @@ -444,7 +450,7 @@ do_we_trust_pre( PKT_public_key *pk, int trustlevel ) { int rc; - rc = do_we_trust( pk, trustlevel ); + rc = do_we_trust( pk, &trustlevel ); if( (trustlevel & TRUST_FLAG_REVOKED) && !rc ) return 0; diff --git a/g10/tdbdump.c b/g10/tdbdump.c index 799309e05..e384b8be7 100644 --- a/g10/tdbdump.c +++ b/g10/tdbdump.c @@ -520,5 +520,6 @@ import_ownertrust( const char *fname ) if( !is_stdin ) fclose(fp); do_sync(); + sync_trustdb(); } diff --git a/g10/tdbio.c b/g10/tdbio.c index b840d723a..70fc530fd 100644 --- a/g10/tdbio.c +++ b/g10/tdbio.c @@ -1130,6 +1130,8 @@ tdbio_dump_record( TRUSTREC *rec, FILE *fp ) fputs(", expired", fp ); if( rec->r.dir.dirflags & DIRF_REVOKED ) fputs(", revoked", fp ); + if( rec->r.dir.dirflags & DIRF_NEWKEYS ) + fputs(", newkeys", fp ); } putc('\n', fp); break; diff --git a/g10/tdbio.h b/g10/tdbio.h index a64f21b5f..1c6630961 100644 --- a/g10/tdbio.h +++ b/g10/tdbio.h @@ -52,6 +52,7 @@ /* one uid with a selfsignature or an revocation */ #define DIRF_EXPIRED 4 /* the complete key has expired */ #define DIRF_REVOKED 8 /* the complete key has been revoked */ +#define DIRF_NEWKEYS 128 /* new keys are available: we can check the sigs */ #define KEYF_CHECKED 1 /* This key has been checked */ #define KEYF_VALID 2 /* This is a valid (sub)key */ @@ -121,7 +122,7 @@ struct trust_record { } uid; struct { /* preference record */ ulong lid; /* point back to the directory record */ - /* or 0 for a glocal pref record */ + /* or 0 for a global pref record */ ulong next; /* points to next pref record */ byte data[ITEMS_PER_PREF_RECORD]; } pref; diff --git a/g10/trustdb.c b/g10/trustdb.c index 42a45aa64..78ff3de56 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -125,13 +125,22 @@ static int do_check( TRUSTREC *drec, unsigned *trustlevel, unsigned *retflgs); static int get_dir_record( PKT_public_key *pk, TRUSTREC *rec ); static int do_update_trust_record( KBNODE keyblock, TRUSTREC *drec, - int recheck, int *modified ); -static int check_trust_record( TRUSTREC *drec ); + int sigs_only, int *modified ); +static int check_trust_record( TRUSTREC *drec, int sigs_only ); +static void mark_fresh_keys(void); /* a table used to keep track of ultimately trusted keys * which are the ones from our secrings and the trusted keys */ static LOCAL_ID_TABLE ultikey_table; + +/* a table to keep track of newly importted keys. This one is + * create by the insert_trust_record function and from time to time + * used to verify key signature which have been done with these new keys */ +static LOCAL_ID_TABLE fresh_imported_keys; +static int fresh_imported_keys_count; +#define FRESH_KEY_CHECK_THRESHOLD 200 + /* list of unused lid items and tables */ static LOCAL_ID_TABLE unused_lid_tables; static struct local_id_item *unused_lid_items; @@ -245,6 +254,27 @@ release_lid_table( LOCAL_ID_TABLE tbl ) } #endif + +/**************** + * Remove all items from a LID table + */ +static void +clear_lid_table( LOCAL_ID_TABLE tbl ) +{ + struct local_id_item *a, *a2; + int i; + + for(i=0; i < 16; i++ ) { + for(a=tbl->items[i]; a; a = a2 ) { + a2 = a->next; + a->next = unused_lid_items; + unused_lid_items = a; + } + tbl->items[i] = NULL; + } +} + + /**************** * Add a new item to the table or return 1 if we already have this item */ @@ -572,6 +602,18 @@ init_trustdb() +/**************** + * This function should be called in certain cases to sync the internal state + * of the trustdb with the file image. Currently it is needed after + * a sequence of insert_trust_record() calls. + */ +void +sync_trustdb() +{ + if( fresh_imported_keys && fresh_imported_keys_count ) + mark_fresh_keys(); +} + /*********************************************** @@ -1082,7 +1124,7 @@ check_uidsigs( KBNODE keyblock, KBNODE keynode, u32 *mainkid, ulong lid, static unsigned int check_sig_record( KBNODE keyblock, KBNODE signode, ulong siglid, int sigidx, u32 *keyid, ulong lid, - u32 *r_expire ) + u32 *r_expire, int *mod_down, int *mod_up ) { PKT_signature *sig = signode->pkt->pkt.signature; unsigned int sigflag = 0; @@ -1114,16 +1156,16 @@ check_sig_record( KBNODE keyblock, KBNODE signode, sigflag |= SIGF_CHECKED | SIGF_VALID; if( revocation ) { sigflag |= SIGF_REVOKED; - /**mod_down = 1;*/ + *mod_down = 1; } else - /**mod_up = 1*/; + *mod_up = 1; } else if( rc == G10ERR_NO_PUBKEY ) { /* This may happen if the key is still in the trustdb * but not available in the keystorage */ sigflag |= SIGF_NOPUBKEY; - /**mod_down = 1;*/ + *mod_down = 1; if( revocation ) sigflag |= SIGF_REVOKED; } @@ -1137,7 +1179,7 @@ check_sig_record( KBNODE keyblock, KBNODE signode, sigflag |= SIGF_CHECKED; if( revocation ) { sigflag |= SIGF_REVOKED; - /**mod_down = 1;*/ + *mod_down = 1; } } } @@ -1168,7 +1210,8 @@ check_sig_record( KBNODE keyblock, KBNODE signode, */ static ulong make_sig_records( KBNODE keyblock, KBNODE uidnode, - ulong lid, u32 *mainkid, u32 *min_expire ) + ulong lid, u32 *mainkid, u32 *min_expire, + int *mod_down, int *mod_up ) { TRUSTREC *srecs, **s_end, *s=NULL, *s2; KBNODE node; @@ -1218,7 +1261,8 @@ make_sig_records( KBNODE keyblock, KBNODE uidnode, s->r.sig.sig[sigidx].lid = siglid; s->r.sig.sig[sigidx].flag= check_sig_record( keyblock, node, siglid, sigidx, - mainkid, lid, &expire ); + mainkid, lid, &expire, + mod_down, mod_up ); sigidx++; if( sigidx == SIGS_PER_RECORD ) { @@ -1319,7 +1363,8 @@ make_pref_record( PKT_signature *sig, ulong lid ) static ulong -make_uid_records( KBNODE keyblock, ulong lid, u32 *keyid, u32 *min_expire ) +make_uid_records( KBNODE keyblock, ulong lid, u32 *keyid, u32 *min_expire, + int *mod_down, int *mod_up ) { TRUSTREC *urecs, **uend, *u, *u2; KBNODE node; @@ -1351,9 +1396,21 @@ make_uid_records( KBNODE keyblock, ulong lid, u32 *keyid, u32 *min_expire ) && (u->r.uid.uidflags & UIDF_VALID) ) { u->r.uid.prefrec = bestsig? make_pref_record( bestsig, lid ) : 0; } + + /* the next test is really bad because we should modify + * out modification timestamps only if we really have a change. + * But becuase we are deleting the uid records first it is somewhat + * difficult to track those changes. fixme */ + if( !( u->r.uid.uidflags & UIDF_VALID ) + || ( u->r.uid.uidflags & UIDF_REVOKED ) ) + *mod_down=1; + else + *mod_up=1; + /* create the list of signatures */ u->r.uid.siglist = make_sig_records( keyblock, node, - lid, keyid, min_expire ); + lid, keyid, min_expire, + mod_down, mod_up ); } uidrecno = urecs? urecs->recnum : 0; @@ -1380,6 +1437,8 @@ update_trust_record( KBNODE keyblock, int recheck, int *modified ) TRUSTREC drec; int rc; + /* NOTE: We don't need recheck anymore, but this might chnage again in + * the future */ if( opt.dry_run ) return 0; if( modified ) @@ -1390,24 +1449,25 @@ update_trust_record( KBNODE keyblock, int recheck, int *modified ) if( rc ) return rc; - rc = do_update_trust_record( keyblock, &drec, recheck, modified ); + rc = do_update_trust_record( keyblock, &drec, 0, modified ); return rc; } /**************** - * Same as update_trust_record, but tghis functions expects the dir record. - * On exit the dirrecord will reflect any changes made. + * Same as update_trust_record, but this functions expects the dir record. + * On exit the dir record will reflect any changes made. + * With sigs_only set only foreign key signatures are checked. */ static int do_update_trust_record( KBNODE keyblock, TRUSTREC *drec, - int recheck, int *modified ) + int sigs_only, int *modified ) { PKT_public_key *primary_pk; TRUSTREC krec, urec, prec, helprec; int i, rc = 0; u32 keyid[2]; /* keyid of primary key */ -/* int mod_up = 0; - int mod_down = 0; */ + int mod_up = 0; + int mod_down = 0; ulong recno, r2; u32 expire; @@ -1424,7 +1484,7 @@ do_update_trust_record( KBNODE keyblock, TRUSTREC *drec, if( rc ) return rc; - /* delete the old stuff */ + /* delete the old stuff FIXME: implementend sigs_only */ for( recno=drec->r.dir.keylist; recno; recno = krec.r.key.next ) { read_record( recno, &krec, RECTYPE_KEY ); delete_record( recno ); @@ -1447,22 +1507,13 @@ do_update_trust_record( KBNODE keyblock, TRUSTREC *drec, /* insert new stuff */ drec->r.dir.dirflags &= ~DIRF_REVOKED; + drec->r.dir.dirflags &= ~DIRF_NEWKEYS; drec->r.dir.keylist = make_key_records( keyblock, drec->recnum, keyid, &i ); if( i ) /* primary key has been revoked */ - drec->r.dir.dirflags &= DIRF_REVOKED; + drec->r.dir.dirflags |= DIRF_REVOKED; expire = 0; drec->r.dir.uidlist = make_uid_records( keyblock, drec->recnum, keyid, - &expire ); - #if 0 - if( orig_uidflags != urec.r.uid.uidflags ) { - write_record( &urec ); - if( !( urec.r.uid.uidflags & UIDF_VALID ) - || ( urec.r.uid.uidflags & UIDF_REVOKED ) ) - *mod_down=1; - else - *mod_up=1; /*(maybe a new user id)*/ - #endif - + &expire, &mod_down, &mod_up ); if( rc ) rc = tdbio_cancel_transaction(); else { @@ -1472,7 +1523,7 @@ do_update_trust_record( KBNODE keyblock, TRUSTREC *drec, drec->r.dir.valcheck = 0; drec->r.dir.checkat = expire; write_record( drec ); - /*tdbio_write_modify_stamp( mod_up, mod_down );*/ + tdbio_write_modify_stamp( mod_up, mod_down ); rc = tdbio_end_transaction(); } return rc; @@ -1537,16 +1588,28 @@ insert_trust_record( KBNODE keyblock ) } } + /* mark tdb as modified upwards */ tdbio_write_modify_stamp( 1, 0 ); /* and put all the other stuff into the keydb */ - rc = do_update_trust_record( keyblock, &dirrec, 1, NULL ); + rc = do_update_trust_record( keyblock, &dirrec, 0, NULL ); do_sync(); + + /* keep track of new keys */ + if( !fresh_imported_keys ) + fresh_imported_keys = new_lid_table(); + ins_lid_table_item( fresh_imported_keys, pk->local_id, 0 ); + if( ++fresh_imported_keys_count > FRESH_KEY_CHECK_THRESHOLD ) + mark_fresh_keys(); + return rc; } + + + /**************** * Insert a trust record indentified by a PK into the TrustDB */ @@ -1584,7 +1647,7 @@ insert_trust_record_by_pk( PKT_public_key *pk ) * Currently we only do an update_trust_record. */ static int -check_trust_record( TRUSTREC *drec ) +check_trust_record( TRUSTREC *drec, int sigs_only ) { KBNODE keyblock; int modified, rc; @@ -1596,7 +1659,7 @@ check_trust_record( TRUSTREC *drec ) return rc; } - rc = do_update_trust_record( keyblock, drec, 0, &modified ); + rc = do_update_trust_record( keyblock, drec, sigs_only, &modified ); release_kbnode( keyblock ); return rc; @@ -1673,7 +1736,7 @@ update_trustdb() /**************** - * Do all required check in the trustdb. This function walks over all + * Do all required checks in the trustdb. This function walks over all * records in the trustdb and does scheduled processing. */ void @@ -1681,7 +1744,7 @@ check_trustdb( const char *username ) { TRUSTREC rec; ulong recnum; - ulong count=0, upd_count=0, err_count=0, skip_count=0; + ulong count=0, upd_count=0, err_count=0, skip_count=0, sigonly_count=0; ulong current_time = make_timestamp(); if( username ) @@ -1690,15 +1753,25 @@ check_trustdb( const char *username ) init_trustdb(); for(recnum=0; !tdbio_read_record( recnum, &rec, 0); recnum++ ) { + int sigs_only; + if( rec.rectype != RECTYPE_DIR ) continue; /* we only want the dir records */ if( count && !(count % 100) && !opt.quiet ) log_info(_("%lu keys so far processed\n"), count); count++; - if( !rec.r.dir.checkat || rec.r.dir.checkat > current_time ) { - skip_count++; - continue; /* not scheduled for checking */ + sigs_only = 0; + + if( !(rec.r.dir.dirflags & DIRF_CHECKED) ) + ; + else if( !rec.r.dir.checkat || rec.r.dir.checkat > current_time ) { + if( !(rec.r.dir.dirflags & DIRF_NEWKEYS) ) { + skip_count++; + continue; /* not scheduled for checking */ + } + sigs_only = 1; /* new public keys - check them */ + sigonly_count++; } if( !rec.r.dir.keylist ) { @@ -1707,11 +1780,12 @@ check_trustdb( const char *username ) continue; } - check_trust_record( &rec ); - + check_trust_record( &rec, sigs_only ); } log_info(_("%lu keys processed\n"), count); + if( sigonly_count ) + log_info(_("\t%lu due to new pubkeys\n"), sigonly_count); if( skip_count ) log_info(_("\t%lu keys skipped\n"), skip_count); if( err_count ) @@ -1772,7 +1846,9 @@ build_cert_tree( ulong lid, int depth, int max_depth, TN helproot ) } if( dirrec.r.dir.checkat && dirrec.r.dir.checkat <= make_timestamp() ) - check_trust_record( &dirrec ); + check_trust_record( &dirrec, 0 ); + else if( (dirrec.r.dir.dirflags & DIRF_NEWKEYS) ) + check_trust_record( &dirrec, 1 ); keynode->n.k.ownertrust = dirrec.r.dir.ownertrust & TRUST_MASK; @@ -2074,6 +2150,7 @@ do_check( TRUSTREC *dr, unsigned *validity, } else if( !add_fnc && tdbio_db_matches_options() + /* FIXME, TODO: This comparision is WRONG ! */ && dr->r.dir.valcheck > tdbio_read_modify_stamp( (dr->r.dir.validity < TRUST_FULLY) ) && dr->r.dir.validity ) @@ -2241,8 +2318,13 @@ check_trust( PKT_public_key *pk, unsigned *r_trustlevel, (ulong)keyid[1], pk->local_id ); return G10ERR_TIME_CONFLICT; } - if( rec.r.dir.checkat && rec.r.dir.checkat <= cur_time ) - check_trust_record( &rec ); + + if( !(rec.r.dir.dirflags & DIRF_CHECKED) ) + check_trust_record( &rec, 0 ); + else if( rec.r.dir.checkat && rec.r.dir.checkat <= cur_time ) + check_trust_record( &rec, 0 ); + else if( (rec.r.dir.dirflags & DIRF_NEWKEYS) ) + check_trust_record( &rec, 1 ); if( pk->expiredate && pk->expiredate <= cur_time ) { log_info(_("key %08lX.%lu: expired at %s\n"), @@ -2298,6 +2380,51 @@ check_trust( PKT_public_key *pk, unsigned *r_trustlevel, } +/**************** + * scan the whole trustdb and mark all signature records whose keys + * are freshly imported. + */ +static void +mark_fresh_keys() +{ + TRUSTREC dirrec, rec; + ulong recnum, lid; + int i; + + memset( &dirrec, 0, sizeof dirrec ); + + for(recnum=0; !tdbio_read_record( recnum, &rec, 0); recnum++ ) { + if( rec.rectype != RECTYPE_SIG ) + continue; + /* if we have already have the dir record, we can check it now */ + if( dirrec.recnum == rec.r.sig.lid + && (dirrec.r.dir.dirflags & DIRF_NEWKEYS) ) + continue; /* flag is already set */ + + for(i=0; i < SIGS_PER_RECORD; i++ ) { + if( !(lid=rec.r.sig.sig[i].lid) ) + continue; /* skip deleted sigs */ + if( !(rec.r.sig.sig[i].flag & SIGF_CHECKED) ) + continue; /* skip checked signatures */ + if( qry_lid_table_flag( fresh_imported_keys, lid, NULL ) ) + continue; /* not in the list of new keys */ + read_record( rec.r.sig.lid, &dirrec, RECTYPE_DIR ); + if( !(dirrec.r.dir.dirflags & DIRF_NEWKEYS) ) { + dirrec.r.dir.dirflags |= DIRF_NEWKEYS; + write_record( &dirrec ); + } + break; + } + } + + do_sync(); + + clear_lid_table( fresh_imported_keys ); + fresh_imported_keys_count = 0; +} + + + int query_trust_info( PKT_public_key *pk, const byte *namehash ) { diff --git a/g10/trustdb.h b/g10/trustdb.h index 6396fde45..dc1e3d0c4 100644 --- a/g10/trustdb.h +++ b/g10/trustdb.h @@ -49,6 +49,7 @@ void check_trustdb( const char *username ); void update_trustdb( void ); int setup_trustdb( int level, const char *dbname ); void init_trustdb( void ); +void sync_trustdb( void ); int check_trust( PKT_public_key *pk, unsigned *r_trustlevel, const byte* nh, int (*add_fnc)(ulong), unsigned *retflgs ); int query_trust_info( PKT_public_key *pk, const byte *nh ); diff --git a/include/ChangeLog b/include/ChangeLog index e5c86ce85..de2d894ca 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +Mon Oct 4 21:23:04 CEST 1999 Werner Koch + + * errors.h (G10ERR_NOT_PROCESSED): New. + Wed Sep 15 16:22:17 CEST 1999 Werner Koch diff --git a/include/errors.h b/include/errors.h index 247951271..11c97425f 100644 --- a/include/errors.h +++ b/include/errors.h @@ -71,6 +71,7 @@ #define G10ERR_UNKNOWN_HOST 49 #define G10ERR_SELFTEST_FAILED 50 #define G10ERR_NOT_ENCRYPTED 51 +#define G10ERR_NOT_PROCESSED 52 #ifndef HAVE_STRERROR char *strerror( int n ); diff --git a/po/ChangeLog b/po/ChangeLog index 1123807e1..183bc91f0 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +Mon Oct 4 21:23:04 CEST 1999 Werner Koch + + * pl.po: New version by Alex. + Thu Sep 23 06:26:28 1999 Werner Koch (wk@gnupg.org) * fr.po: Updated by Gaël. diff --git a/po/pl.po b/po/pl.po index beb9df26c..efa616a59 100644 --- a/po/pl.po +++ b/po/pl.po @@ -6,9 +6,9 @@ # msgid "" msgstr "" -"Project-Id-Version: gnupg-0.9.11\n" -"POT-Creation-Date: 1999-09-23 08:53+0200\n" -"PO-Revision-Date: 1999-09-07 10:59+02:00\n" +"Project-Id-Version: gnupg-1.0.0\n" +"POT-Creation-Date: 1999-09-05 19:21+0200\n" +"PO-Revision-Date: 1999-10-02 21:35+02:00\n" "Last-Translator: Janusz A. Urbanowicz \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" @@ -27,11 +27,11 @@ msgstr "" msgid "Warning: using insecure memory!\n" msgstr "Ostrzeżenie: używana pamięć nie jest pamięcią bezpieczną!\n" -#: util/secmem.c:281 +#: util/secmem.c:275 msgid "operation is not possible without initialized secure memory\n" msgstr "operacja niemożliwa do wykonania bez dostępnej pamięci bezpiecznej\n" -#: util/secmem.c:282 +#: util/secmem.c:276 msgid "(you may have used the wrong program for this task)\n" msgstr "(prawdopodobnie używany program jest niewłaściwy dlatego zadania)\n" @@ -101,7 +101,7 @@ msgstr "niepoprawne wyra #: util/errors.c:64 msgid "public key not found" -msgstr "klucz publiczny nie odnaleziony" +msgstr "nie odnaleziono klucza publicznego" #: util/errors.c:65 msgid "unknown cipher algorithm" @@ -125,19 +125,19 @@ msgstr "brak takiego identyfikatora u #: util/errors.c:70 msgid "secret key not available" -msgstr "klucz tajny jest niedostępny" +msgstr "klucz tajny nie jest dostępny" #: util/errors.c:71 msgid "wrong secret key used" -msgstr "został użyty niewłaściwy klucz tajny" +msgstr "użyty został niewłaściwy klucz tajny" #: util/errors.c:72 msgid "not supported" -msgstr "nie jet obsługiwany" +msgstr "nie jest obsługiwany" #: util/errors.c:73 msgid "bad key" -msgstr "klucz niepoprawny" +msgstr "niepoprawny klucz" #: util/errors.c:74 msgid "file read error" @@ -213,7 +213,7 @@ msgstr "b #: util/errors.c:92 msgid "unexpected data" -msgstr "nieoczekiowane dane" +msgstr "nieoczekiwane dane" #: util/errors.c:93 msgid "timestamp conflict" @@ -241,7 +241,7 @@ msgstr "niepoprawny URI" #: util/errors.c:99 msgid "unsupported URI" -msgstr "URI typu nie obsługiwanego" +msgstr "URI nie obsługiwanego typu" #: util/errors.c:100 msgid "network error" @@ -249,7 +249,7 @@ msgstr "b #: util/errors.c:102 msgid "not encrypted" -msgstr "nie zaszyfrowany" +msgstr "nie jest zaszyfrowany" #: util/logger.c:218 #, c-format @@ -293,7 +293,7 @@ msgstr "" "Proszę kontynuować inne działania aby system mógł zebrać odpowiednią\n" "ilość entropii do ich wygenerowania (brakuje %d bajtów).\n" -#: g10/g10.c:187 +#: g10/g10.c:185 msgid "" "@Commands:\n" " " @@ -301,135 +301,135 @@ msgstr "" "@Polecenia:\n" " " -#: g10/g10.c:189 +#: g10/g10.c:187 msgid "|[file]|make a signature" msgstr "|[plik]|złożenie podpisu" -#: g10/g10.c:190 +#: g10/g10.c:188 msgid "|[file]|make a clear text signature" msgstr "|[plik]|złożenie podpisu na czytelnym dokumencie" -#: g10/g10.c:191 +#: g10/g10.c:189 msgid "make a detached signature" msgstr "sporządzenie podpisu oddzielonego od dokumentu" -#: g10/g10.c:192 +#: g10/g10.c:190 msgid "encrypt data" msgstr "szyfrowanie danych" -#: g10/g10.c:193 +#: g10/g10.c:191 msgid "encryption only with symmetric cipher" msgstr "szyfrowanie tylko szyfrem symetrycznym" -#: g10/g10.c:194 +#: g10/g10.c:192 msgid "store only" -msgstr "tylko zapis" +msgstr "tylko zapis do pliku" -#: g10/g10.c:195 +#: g10/g10.c:193 msgid "decrypt data (default)" msgstr "odszyfrowywanie danych (domyślnie)" -#: g10/g10.c:196 +#: g10/g10.c:194 msgid "verify a signature" msgstr "sprawdzenie podpisu" -#: g10/g10.c:198 +#: g10/g10.c:195 msgid "list keys" msgstr "lista kluczy" -#: g10/g10.c:200 +#: g10/g10.c:197 msgid "list keys and signatures" msgstr "lista kluczy i podpisów" -#: g10/g10.c:201 +#: g10/g10.c:198 msgid "check key signatures" msgstr "sprawdzenie podpisów kluczy" -#: g10/g10.c:202 +#: g10/g10.c:199 msgid "list keys and fingerprints" msgstr "lista kluczy i ich odcisków" -#: g10/g10.c:203 +#: g10/g10.c:200 msgid "list secret keys" msgstr "lista kluczy tajnych" -#: g10/g10.c:204 +#: g10/g10.c:201 msgid "generate a new key pair" msgstr "generacja nowej pary klucza" -#: g10/g10.c:205 +#: g10/g10.c:202 msgid "remove key from the public keyring" msgstr "usunięcie klucza ze zbioru kluczy publicznych" -#: g10/g10.c:206 +#: g10/g10.c:203 msgid "sign a key" msgstr "złożenie podpisu na kluczu" -#: g10/g10.c:207 +#: g10/g10.c:204 msgid "sign a key locally" msgstr "złożenie lokalnego podpisu na kluczu" -#: g10/g10.c:208 +#: g10/g10.c:205 msgid "sign or edit a key" msgstr "podpisanie lub modyfikacja klucza" -#: g10/g10.c:209 +#: g10/g10.c:206 msgid "generate a revocation certificate" -msgstr "generacja certyfikatu unieważnienia klucza" +msgstr "tworzenie certyfikatu unieważnienia klucza" -#: g10/g10.c:210 +#: g10/g10.c:207 msgid "export keys" msgstr "eksport kluczy do pliku" -#: g10/g10.c:211 +#: g10/g10.c:208 msgid "export keys to a key server" msgstr "eksport kluczy do serwera kluczy" -#: g10/g10.c:212 +#: g10/g10.c:209 msgid "import keys from a key server" msgstr "import kluczy z serwera kluczy" -#: g10/g10.c:215 +#: g10/g10.c:212 msgid "import/merge keys" -msgstr "import/dołączenie kluczy" +msgstr "import/dołączanie kluczy" -#: g10/g10.c:217 +#: g10/g10.c:214 msgid "list only the sequence of packets" msgstr "wypisane sekwencji pakietów" -#: g10/g10.c:219 +#: g10/g10.c:216 msgid "export the ownertrust values" msgstr "eksport wartości zaufania" -#: g10/g10.c:221 +#: g10/g10.c:218 msgid "import ownertrust values" msgstr "wczytanie wartośći zaufania" -#: g10/g10.c:223 +#: g10/g10.c:220 msgid "update the trust database" msgstr "uaktualnienie bazy zaufania" -#: g10/g10.c:225 +#: g10/g10.c:222 msgid "|[NAMES]|check the trust database" msgstr "|[NAZWY]|sprawdzenie bazy zaufania" -#: g10/g10.c:226 +#: g10/g10.c:223 msgid "fix a corrupted trust database" -msgstr "naprawa uszkodzonej Bazy Zaufania" +msgstr "naprawa uszkodzonej bazy zaufania" -#: g10/g10.c:227 +#: g10/g10.c:224 msgid "De-Armor a file or stdin" msgstr "zdjęcie opakowania ASCII pliku lub potoku" -#: g10/g10.c:229 +#: g10/g10.c:225 msgid "En-Armor a file or stdin" msgstr "opakowanie ASCII pliku lub potoku" -#: g10/g10.c:231 +#: g10/g10.c:226 msgid "|algo [files]|print message digests" msgstr "|algo [pliki]|skróty wiadomości" -#: g10/g10.c:235 +#: g10/g10.c:230 msgid "" "@\n" "Options:\n" @@ -439,168 +439,168 @@ msgstr "" "Opcje:\n" " " -#: g10/g10.c:237 +#: g10/g10.c:232 msgid "create ascii armored output" -msgstr "plik wynikowy w opakowaniu ASCII" +msgstr "plik wynikowy będzie w opakowaniu ASCII" -#: g10/g10.c:239 +#: g10/g10.c:233 msgid "|NAME|encrypt for NAME" -msgstr "|NAZWA|szyfrowanie dla odbiorcy NAZWA" +msgstr "|NAZWA|szyfrowanie dla adresata NAZWA" -#: g10/g10.c:242 +#: g10/g10.c:236 msgid "|NAME|use NAME as default recipient" msgstr "|NAZWA|użycie NAZWA jako domyślnego adresata" -#: g10/g10.c:244 +#: g10/g10.c:238 msgid "use the default key as default recipient" msgstr "domyślny klucz jest domyślnym adresatem" -#: g10/g10.c:248 +#: g10/g10.c:242 msgid "use this user-id to sign or decrypt" msgstr "identyfikator do podpisania lub odszyfrowania" -#: g10/g10.c:249 +#: g10/g10.c:243 msgid "|N|set compress level N (0 disables)" msgstr "|N|poziom kompresji N (0 - brak)" -#: g10/g10.c:251 +#: g10/g10.c:245 msgid "use canonical text mode" msgstr "kanoniczny format tekstowy" -#: g10/g10.c:252 +#: g10/g10.c:246 msgid "use as output file" msgstr "plik wyjściowy" -#: g10/g10.c:253 +#: g10/g10.c:247 msgid "verbose" msgstr "z informacjami dodatkowymi" -#: g10/g10.c:254 +#: g10/g10.c:248 msgid "be somewhat more quiet" msgstr "mniej komunikatóww" -#: g10/g10.c:255 +#: g10/g10.c:249 msgid "don't use the terminal at all" msgstr "bez odwołań do terminala" -#: g10/g10.c:256 +#: g10/g10.c:250 msgid "force v3 signatures" msgstr "wymuszenie trzeciej wersji formatu podpisów" -#: g10/g10.c:257 +#: g10/g10.c:251 msgid "always use a MDC for encryption" msgstr "do szyfrowania będzie używany MDC" -#: g10/g10.c:258 +#: g10/g10.c:252 msgid "do not make any changes" msgstr "pozostawienie bez zmian" #. { oInteractive, "interactive", 0, N_("prompt before overwriting") }, -#: g10/g10.c:260 +#: g10/g10.c:254 msgid "batch mode: never ask" msgstr "tryb wsadowy: żadnych pytań" -#: g10/g10.c:261 +#: g10/g10.c:255 msgid "assume yes on most questions" msgstr "automatyczna odpowiedź tak na większość pytań" -#: g10/g10.c:262 +#: g10/g10.c:256 msgid "assume no on most questions" msgstr "automatyczna odpowiedź nie na większość pytań" -#: g10/g10.c:263 +#: g10/g10.c:257 msgid "add this keyring to the list of keyrings" msgstr "dodać zbiór kluczy do listy używanych" -#: g10/g10.c:264 +#: g10/g10.c:258 msgid "add this secret keyring to the list" msgstr "dodać zbiór kluczy tajnych do listy" -#: g10/g10.c:265 +#: g10/g10.c:259 msgid "|NAME|use NAME as default secret key" msgstr "|NAZWA|użycie NAZWA jako domyślnego klucza tajnego" -#: g10/g10.c:266 +#: g10/g10.c:260 msgid "|HOST|use this keyserver to lookup keys" msgstr "|HOST|serwer kluczy w którym będą poszukiwane" -#: g10/g10.c:267 +#: g10/g10.c:261 msgid "|NAME|set terminal charset to NAME" msgstr "|NAZWA|zestaw znaków terminala NAZWA" -#: g10/g10.c:268 +#: g10/g10.c:262 msgid "read options from file" msgstr "wczytanie opcji z pliku" -#: g10/g10.c:270 +#: g10/g10.c:264 msgid "set debugging flags" msgstr "ustawienie opcji śledzenia wykonania programu" -#: g10/g10.c:271 +#: g10/g10.c:265 msgid "enable full debugging" -msgstr "umożliwienie pełnego śledzenia programu" +msgstr "włączenie pełnego śledzenia programu" -#: g10/g10.c:272 +#: g10/g10.c:266 msgid "|FD|write status info to this FD" msgstr "|FD|zapisać opis stanu do FD" -#: g10/g10.c:273 +#: g10/g10.c:267 msgid "do not write comment packets" msgstr "nie zapisywać pakietów z komentarzem" -#: g10/g10.c:274 +#: g10/g10.c:268 msgid "(default is 1)" msgstr "(domyślnie 1)" -#: g10/g10.c:275 +#: g10/g10.c:269 msgid "(default is 3)" msgstr "(domyślnie 3)" -#: g10/g10.c:277 +#: g10/g10.c:271 msgid "|FILE|load extension module FILE" msgstr "|PLIK|ładowanie modułu rozszerzenia z PLIK" -#: g10/g10.c:278 +#: g10/g10.c:272 msgid "emulate the mode described in RFC1991" msgstr "emulacja trybu opisanego w RFC1991" -#: g10/g10.c:279 +#: g10/g10.c:273 msgid "set all packet, cipher and digest options to OpenPGP behavior" msgstr "zgodność ustawień pakietów, szyfrów i skrótów z OpenPGP" -#: g10/g10.c:280 +#: g10/g10.c:274 msgid "|N|use passphrase mode N" msgstr "|N|N-ty tryb wprowadzania wyrażenia przejściowego" -#: g10/g10.c:282 +#: g10/g10.c:276 msgid "|NAME|use message digest algorithm NAME for passphrases" msgstr "|ALG|algorytm obliczania skrótów wiadomości ALG" -#: g10/g10.c:284 +#: g10/g10.c:278 msgid "|NAME|use cipher algorithm NAME for passphrases" msgstr "|ALG|algorytmu szyfrujący ALG dla hasła" -#: g10/g10.c:285 +#: g10/g10.c:279 msgid "|NAME|use cipher algorithm NAME" msgstr "|NAZWA|algorytm szyfrujący NAZWA" -#: g10/g10.c:286 +#: g10/g10.c:280 msgid "|NAME|use message digest algorithm NAME" msgstr "|NAZWA|algorytm obliczania skrótów wiadomości NAZWA" -#: g10/g10.c:287 +#: g10/g10.c:281 msgid "|N|use compress algorithm N" msgstr "|N|algorytm kompresji N" -#: g10/g10.c:288 +#: g10/g10.c:282 msgid "throw keyid field of encrypted packets" msgstr "usunięcie identyfikatorów kluczy z pakietów" -#: g10/g10.c:289 +#: g10/g10.c:283 msgid "|NAME=VALUE|use this notation data" msgstr "|NAZWA=TREŚĆ|adnotacje" -#: g10/g10.c:291 +#: g10/g10.c:285 msgid "" "@\n" "Examples:\n" @@ -621,15 +621,15 @@ msgstr "" " --list-keys [nazwy] pokazuje klucze\n" " --fingerprint [nazwy] pokazuje odciski kluczy\n" -#: g10/g10.c:378 +#: g10/g10.c:370 msgid "Please report bugs to .\n" msgstr "Błędy prosimy zgłaszać na adres .\n" -#: g10/g10.c:382 +#: g10/g10.c:374 msgid "Usage: gpg [options] [files] (-h for help)" msgstr "Wywołanie: gpg [opcje] [pliki] (-h podaje pomoc)" -#: g10/g10.c:385 +#: g10/g10.c:377 msgid "" "Syntax: gpg [options] [files]\n" "sign, check, encrypt or decrypt\n" @@ -639,7 +639,7 @@ msgstr "" "podpisywanie, sprawdzanie podpisów, szyfrowanie, deszyfrowanie\n" "domyślnie wykonywana operacja zależy od danych wejściowych\n" -#: g10/g10.c:390 +#: g10/g10.c:382 msgid "" "\n" "Supported algorithms:\n" @@ -647,182 +647,182 @@ msgstr "" "\n" "Obsługiwane algorytmy:\n" -#: g10/g10.c:468 +#: g10/g10.c:456 msgid "usage: gpg [options] " msgstr "wywołanie: gpg [opcje]" -#: g10/g10.c:521 +#: g10/g10.c:509 msgid "conflicting commands\n" msgstr "sprzeczne polecenia\n" -#: g10/g10.c:656 +#: g10/g10.c:644 #, c-format msgid "NOTE: no default option file `%s'\n" msgstr "UWAGA: brak domyślnego pliku opcji '%s'\n" -#: g10/g10.c:660 +#: g10/g10.c:648 #, c-format msgid "option file `%s': %s\n" msgstr "plik opcji '%s': %s\n" -#: g10/g10.c:667 +#: g10/g10.c:655 #, c-format msgid "reading options from `%s'\n" msgstr "odczyt opcji z '%s'\n" -#: g10/g10.c:848 +#: g10/g10.c:835 #, c-format msgid "%s is not a valid character set\n" msgstr "%s nie jest poprawną nazwą zestawu znaków\n" -#: g10/g10.c:912 g10/g10.c:921 +#: g10/g10.c:892 g10/g10.c:901 #, c-format msgid "NOTE: %s is not for normal use!\n" msgstr "UWAGA: %s nie jest do normalnego użytku!\n" -#: g10/g10.c:914 +#: g10/g10.c:894 #, c-format msgid "%s not allowed with %s!\n" msgstr "%s jest niedozwolony z %s!\n" -#: g10/g10.c:917 +#: g10/g10.c:897 #, c-format msgid "%s makes no sense with %s!\n" msgstr "%s nie ma sensu z %s!\n" -#: g10/g10.c:936 g10/g10.c:948 +#: g10/g10.c:916 g10/g10.c:928 msgid "selected cipher algorithm is invalid\n" msgstr "wybrany algorytm szyfrujący jest niepoprawny\n" -#: g10/g10.c:942 g10/g10.c:954 +#: g10/g10.c:922 g10/g10.c:934 msgid "selected digest algorithm is invalid\n" msgstr "wybrany algorytm geenracji skrótów wiadomości jest niepoprawny\n" -#: g10/g10.c:958 +#: g10/g10.c:938 msgid "the given policy URL is invalid\n" msgstr "podany URL regulaminu jest niepoprawny\n" -#: g10/g10.c:961 +#: g10/g10.c:941 #, c-format msgid "compress algorithm must be in range %d..%d\n" msgstr "ustawienie algortytmu kompresji musi pochodzić z zakresu %d..%d\n" -#: g10/g10.c:963 +#: g10/g10.c:943 msgid "completes-needed must be greater than 0\n" msgstr "wartość completes-needed musi być większa od 0\n" -#: g10/g10.c:965 +#: g10/g10.c:945 msgid "marginals-needed must be greater than 1\n" msgstr "wartość marginals-needed musi być większa od 1\n" -#: g10/g10.c:967 +#: g10/g10.c:947 msgid "max-cert-depth must be in range 1 to 255\n" msgstr "wartość max-cert-depth musi mieścić się w zakresie od 1 do 255\n" -#: g10/g10.c:970 +#: g10/g10.c:950 msgid "NOTE: simple S2K mode (0) is strongly discouraged\n" msgstr "UWAGA: prosty tryb S2K (0) jest stanowczo odradzany\n" -#: g10/g10.c:974 +#: g10/g10.c:954 msgid "invalid S2K mode; must be 0, 1 or 3\n" msgstr "niepoprawny tryb S2K; musi mieć wartość 0, 1 lub 3\n" -#: g10/g10.c:1051 +#: g10/g10.c:1031 #, c-format msgid "failed to initialize the TrustDB: %s\n" msgstr "inicjowanie Bazy Zaufania nie powiodło się: %s\n" -#: g10/g10.c:1057 +#: g10/g10.c:1037 msgid "--store [filename]" msgstr "--store [plik]" -#: g10/g10.c:1064 +#: g10/g10.c:1044 msgid "--symmetric [filename]" msgstr "--symmetric [plik]" -#: g10/g10.c:1072 +#: g10/g10.c:1052 msgid "--encrypt [filename]" msgstr "--encrypt [plik]" -#: g10/g10.c:1085 +#: g10/g10.c:1065 msgid "--sign [filename]" msgstr "--sign [plik]" -#: g10/g10.c:1098 +#: g10/g10.c:1078 msgid "--sign --encrypt [filename]" msgstr "--sign --encrypt [plik]" -#: g10/g10.c:1112 +#: g10/g10.c:1092 msgid "--clearsign [filename]" -msgstr "--clearsign [plik]\"" +msgstr "--clearsign [plik]" -#: g10/g10.c:1129 +#: g10/g10.c:1104 msgid "--decrypt [filename]" msgstr "--decrypt [plik]" -#: g10/g10.c:1137 +#: g10/g10.c:1112 msgid "--sign-key user-id" msgstr "--sign-key nazwa użytkownika" -#: g10/g10.c:1145 +#: g10/g10.c:1120 msgid "--lsign-key user-id" msgstr "--lsign-key nazwa użytkownika" -#: g10/g10.c:1153 +#: g10/g10.c:1128 msgid "--edit-key user-id [commands]" msgstr "--edit-key nazwa użytkownika [polecenia]" -#: g10/g10.c:1169 +#: g10/g10.c:1144 msgid "--delete-secret-key user-id" msgstr "--delete-secret-key nazwa użytkownika" -#: g10/g10.c:1172 +#: g10/g10.c:1147 msgid "--delete-key user-id" msgstr "--delete-key nazwa użytkownika" -#: g10/encode.c:259 g10/g10.c:1196 g10/sign.c:366 +#: g10/encode.c:259 g10/g10.c:1171 g10/sign.c:366 #, c-format msgid "can't open %s: %s\n" msgstr "nie można otworzyć %s: %s\n" -#: g10/g10.c:1207 +#: g10/g10.c:1182 msgid "-k[v][v][v][c] [user-id] [keyring]" msgstr "-k[v][v][v][c] [identyfikator] [zbiór kluczy]" -#: g10/g10.c:1268 +#: g10/g10.c:1243 #, c-format msgid "dearmoring failed: %s\n" msgstr "usunięcie opakowania ASCII nie powiodło się: %s\n" -#: g10/g10.c:1276 +#: g10/g10.c:1251 #, c-format msgid "enarmoring failed: %s\n" msgstr "opakowywanie ASCII nie powiodło się: %s\n" -#: g10/g10.c:1344 +#: g10/g10.c:1319 #, c-format msgid "invalid hash algorithm `%s'\n" msgstr "niewłaściwy algorytm skrótu '%s'\n" -#: g10/g10.c:1425 +#: g10/g10.c:1400 msgid "[filename]" msgstr "[nazwa pliku]" -#: g10/g10.c:1429 +#: g10/g10.c:1404 msgid "Go ahead and type your message ...\n" msgstr "Wpisz tutaj swoją wiadomość ...\n" -#: g10/decrypt.c:59 g10/g10.c:1432 g10/verify.c:67 g10/verify.c:109 +#: g10/decrypt.c:59 g10/g10.c:1407 g10/verify.c:66 #, c-format msgid "can't open `%s'\n" msgstr "nie można otworzyć '%s'\n" -#: g10/g10.c:1601 +#: g10/g10.c:1576 msgid "" "the first character of a notation name must be a letter or an underscore\n" -msgstr "adnotacja musi zaczynać się od podkreślenia lub litery\n" +msgstr "adnotacja musi zaczynać się od litery lub podkreślenia\n" -#: g10/g10.c:1607 +#: g10/g10.c:1582 msgid "" "a notation name must have only letters, digits, dots or underscores and end " "with an '='\n" @@ -830,11 +830,11 @@ msgstr "" "nazwa adnotacji może zawierać tylko litery, cyfry, kropki,\n" "podkreślenia, i musi kończyć się '='\n" -#: g10/g10.c:1613 +#: g10/g10.c:1588 msgid "dots in a notation name must be surrounded by other characters\n" msgstr "kropki w adnotacji muszą znajdować się pomiędzy innymi znakami\n" -#: g10/g10.c:1621 +#: g10/g10.c:1596 msgid "a notation value must not use any control characters\n" msgstr "wartość adnotacji nie może zawierać znaków sterujących\n" @@ -891,7 +891,7 @@ msgstr "B #: g10/armor.c:731 msgid "premature eof (in Trailer)\n" -msgstr "przedwczesny koniec pliku (w linii kończącej)\n" +msgstr "przedwczesny koniec pliku (w zakończeniu)\n" #: g10/armor.c:735 msgid "error in trailer line\n" @@ -1095,8 +1095,7 @@ msgstr "OSTRZE #: g10/pkclist.c:564 msgid "" " There is no indication that the signature belongs to the owner.\n" -msgstr "" -" Nic nie wskazuje na to że ten podpis złożył właściciel klucza.\n" +msgstr " Nic nie wskazuje na to że ten podpis złożył właściciel klucza.\n" #: g10/pkclist.c:581 msgid "WARNING: We do NOT trust this key!\n" @@ -1104,7 +1103,7 @@ msgstr "OSTRZE #: g10/pkclist.c:582 msgid " The signature is probably a FORGERY.\n" -msgstr " Ten podpis prawdopodobnie jest FAŁSZERSTWEM.\n" +msgstr " Ten podpis prawdopodobnie jest FAŁSZERSTWEM.\n" #: g10/pkclist.c:589 msgid "" @@ -1115,8 +1114,7 @@ msgstr "" #: g10/pkclist.c:592 msgid " It is not certain that the signature belongs to the owner.\n" -msgstr "" -" Nie ma pewności że ten podpis został złożnony przez właściciela.\n" +msgstr " Nie ma pewności że ten podpis został złożnony przez właściciela.\n" #: g10/pkclist.c:694 g10/pkclist.c:716 g10/pkclist.c:841 g10/pkclist.c:886 #, c-format @@ -1373,7 +1371,7 @@ msgstr "Adres poczty elektronicznej: " #: g10/keygen.c:644 msgid "Not a valid email address\n" -msgstr "To nie jest poprawny adres poczty elektronicznej\n" +msgstr "to nie jest poprawny adres poczty elektronicznej\n" #: g10/keygen.c:652 msgid "Comment: " @@ -1407,7 +1405,7 @@ msgstr "IiKkEeDdWw" msgid "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? " msgstr "" "Zmienić (I)mię/nazwisko, (K)omentarz, adres (E)mail, \n" -"przejść (D)alej czy (W)yjść z programu ? " +"przejść (D)alej czy (W)yjść z programu? " #: g10/keygen.c:751 msgid "" @@ -1430,7 +1428,7 @@ msgid "" "using this program with the option \"--edit-key\".\n" "\n" msgstr "" -"Nie chcesz podać wyrażenia przejściowego (hasła) - to zły pomysł!\n" +"Nie chcesz podać wyrażenia przejściowego (hasła) - to *zły* pomysł!\n" "W każdej chwili możesz ustawić wyrażenie przejściowe używając tego programu\n" "i opcji \"--edit-key\".\n" "\n" @@ -1446,8 +1444,8 @@ msgstr "" "generowania\n" "liczb pierszych jest wykonanywanie w tym czasie innych działań (pisanie na\n" "klawiaturzeze, poruszanie myszką, odwołanie się do dysków); dzięki temu\n" -"generator liczb losowych ma możliwość zebrania odpowiedniej ilości " -"entropii.\n" +"generator liczb losowych ma możliwość zebrania odpowiedniej ilości entropii. " +"\n" #: g10/keygen.c:856 msgid "Key generation can only be used in interactive mode\n" @@ -1464,16 +1462,16 @@ msgstr "Procedura generacji klucza zosta #: g10/keygen.c:880 #, c-format msgid "writing public certificate to `%s'\n" -msgstr "zapisuję certyfikat publiczny w '%s'\n" +msgstr "zapis certyfikatu publicznego w '%s'\n" #: g10/keygen.c:881 #, c-format msgid "writing secret certificate to `%s'\n" -msgstr "zapisuję certyfikat prywatny w '%s'\n" +msgstr "zapis certyfikatu prywatnego w '%s'\n" #: g10/keygen.c:958 msgid "public and secret key created and signed.\n" -msgstr "Prywatny i publiczny klucz został stworzony i podpisany.\n" +msgstr "prywatny i publiczny klucz został stworzony i podpisany.\n" #: g10/keygen.c:960 msgid "" @@ -1493,7 +1491,7 @@ msgstr "Generacja klucza nie powiod msgid "" "key has been created %lu second in future (time warp or clock problem)\n" msgstr "" -"klucz został stworzony %lu sekundę w przyszłości (zaburzenia\n" +"klucz został stworzony %lu sekund w przyszłości (zaburzenia\n" "czasoprzestrzeni, lub źle ustawiony zegar systemowy)\n" #: g10/keygen.c:1020 g10/sig-check.c:314 g10/sign.c:107 @@ -1508,7 +1506,7 @@ msgstr "" msgid "Really create? " msgstr "Na pewno generować? " -#: g10/encode.c:91 g10/openfile.c:161 g10/openfile.c:270 g10/tdbio.c:468 +#: g10/encode.c:91 g10/openfile.c:156 g10/openfile.c:246 g10/tdbio.c:468 #: g10/tdbio.c:529 #, c-format msgid "%s: can't open: %s\n" @@ -1537,7 +1535,7 @@ msgstr "%s/%s zaszyfrowany dla: %s\n" #: g10/export.c:147 #, c-format msgid "%s: user not found: %s\n" -msgstr "%s: nie znaleziono użytkownika %s\n" +msgstr "%s: nie znaleziono użytkownika: %s\n" #: g10/export.c:156 #, c-format @@ -1676,7 +1674,7 @@ msgstr "klucz %08lX: brak klucza publicznego: %s\n" msgid "no default public keyring\n" msgstr "brak domyślnego zbioru kluczy publicznych\n" -#: g10/import.c:399 g10/openfile.c:213 g10/sign.c:268 g10/sign.c:580 +#: g10/import.c:399 g10/openfile.c:186 g10/sign.c:268 g10/sign.c:580 #, c-format msgid "writing to `%s'\n" msgstr "zapis do '%s'\n" @@ -1694,7 +1692,7 @@ msgstr "b #: g10/import.c:410 #, c-format msgid "key %08lX: public key imported\n" -msgstr "klucz %08lX: klucz publiczny wczytano do zbioru\n" +msgstr "klucz %08lX: klucz publiczny dołączony do zbioru\n" #: g10/import.c:427 #, c-format @@ -1853,7 +1851,7 @@ msgstr "key %08lX: powt msgid "key %08lX: revocation certificate added\n" msgstr "klucz %08lX: dodany certyfikat unieważnienia\n" -#: g10/import.c:1128 g10/import.c:1181 +#: g10/import.c:1128 g10/import.c:1183 #, c-format msgid "key %08lX: our copy has no self-signature\n" msgstr "klucz %08lX: dostępna kopia nie jest podpisana nią samą\n" @@ -1980,7 +1978,7 @@ msgstr "Czy na pewno chcesz to zrobi #: g10/keyedit.c:524 msgid "moving a key signature to the correct place\n" -msgstr "przenoszę podpis klucza na właściwe miejsce\n" +msgstr "przeniesienie podpis klucza na właściwe miejsce\n" #: g10/keyedit.c:564 msgid "quit this menu" @@ -2076,7 +2074,7 @@ msgstr "z #: g10/keyedit.c:579 msgid "debug" -msgstr "śledzenia" +msgstr "śledzenie" #: g10/keyedit.c:580 msgid "adduid" @@ -2286,11 +2284,11 @@ msgstr "" #: g10/keyedit.c:975 msgid "Invalid command (try \"help\")\n" -msgstr "Niepoprawna komenda (spróbuj \"help\")\n" +msgstr "Niepoprawne polecenie (spróbuj \"help\")\n" #: g10/keyedit.c:1065 msgid "This key has been disabled" -msgstr "Ten klucz został wyłączony z użytku" +msgstr "Ten klucz został wyłączony z użycia" #: g10/keyedit.c:1336 msgid "Delete this good signature? (y/N/q)" @@ -2375,28 +2373,22 @@ msgstr "Stworzy #. FIXME: detect duplicates here #: g10/keyedit.c:1740 -#, fuzzy msgid "You have signed these user IDs:\n" -msgstr "Nie możesz usunąć ostatniego identyfikatora użytkownika!\n" +msgstr "Te identyfikatory są podpisane przez ciebie:\n" #: g10/keyedit.c:1754 g10/keyedit.c:1789 -#, fuzzy, c-format +#, c-format msgid " signed by %08lX at %s\n" -msgstr "" -"\"\n" -"podpisano Twoim kluczem %08lX w %s\n" +msgstr " podpisany kluczem %08lX w %s\n" #: g10/keyedit.c:1759 -#, fuzzy, c-format +#, c-format msgid " revoked by %08lX at %s\n" -msgstr "" -"\"\n" -"podpisano Twoim kluczem %08lX w %s\n" +msgstr "unieważniony kluczem %08lX w %s\n" #: g10/keyedit.c:1779 -#, fuzzy msgid "You are about to revoke these signatures:\n" -msgstr "Czy na pewno chcesz unieważnić wybrane klucze? " +msgstr "Czy na pewno chcesz unieważnić te podpisy:\n" #: g10/keyedit.c:1797 msgid "Really create the revocation certificates? (y/N)" @@ -2434,45 +2426,45 @@ msgstr "odszyfrowuj msgid "public key decryption failed: %s\n" msgstr "błąd odszyfrowywania kluczem publicznym: %s\n" -#: g10/mainproc.c:332 +#: g10/mainproc.c:330 msgid "decryption okay\n" msgstr "odszyfrowane poprawnie\n" -#: g10/mainproc.c:337 +#: g10/mainproc.c:335 msgid "WARNING: encrypted message has been manipulated!\n" -msgstr "OSTRZEŻENIE: zaszyfrowana wiadomość była manipulowana!\n" +msgstr "OSTRZEŻENIE: dokonano manipulacji zaszyfrowaną wiadomością!\n" -#: g10/mainproc.c:342 +#: g10/mainproc.c:340 #, c-format msgid "decryption failed: %s\n" msgstr "błąd odszyfrowywania: %s\n" -#: g10/mainproc.c:360 +#: g10/mainproc.c:358 msgid "NOTE: sender requested \"for-your-eyes-only\"\n" msgstr "UWAGA: nadawca zaznaczył że wiadomość nie powinna być zapisywana\n" -#: g10/mainproc.c:362 +#: g10/mainproc.c:360 #, c-format msgid "original file name='%.*s'\n" msgstr "pierwotna nazwa pliku='%.*s'\n" -#: g10/mainproc.c:589 g10/mainproc.c:598 +#: g10/mainproc.c:587 g10/mainproc.c:596 msgid "WARNING: invalid notation data found\n" msgstr "OSTRZEŻENIE: niepoprawne dane w adnotacji\n" -#: g10/mainproc.c:601 +#: g10/mainproc.c:599 msgid "Notation: " msgstr "Adnotacja:" -#: g10/mainproc.c:608 +#: g10/mainproc.c:606 msgid "Policy: " msgstr "Regulamin:" -#: g10/mainproc.c:1027 +#: g10/mainproc.c:1025 msgid "signature verification suppressed\n" msgstr "wymuszono pominięcie sprawdzenia podpisu\n" -#: g10/mainproc.c:1033 +#: g10/mainproc.c:1031 #, c-format msgid "Signature made %.*s using %s key ID %08lX\n" msgstr "" @@ -2480,28 +2472,28 @@ msgstr "" "z użyciem klucza o identyfikatorze %08lX\n" #. just in case that we have no userid -#: g10/mainproc.c:1059 g10/mainproc.c:1070 +#: g10/mainproc.c:1057 g10/mainproc.c:1068 msgid "BAD signature from \"" msgstr "NIEPOPRAWNY podpis złożony przez \"" -#: g10/mainproc.c:1060 g10/mainproc.c:1071 +#: g10/mainproc.c:1058 g10/mainproc.c:1069 msgid "Good signature from \"" msgstr "Poprawny podpis złożony przez \"" -#: g10/mainproc.c:1062 +#: g10/mainproc.c:1060 msgid " aka \"" msgstr " alias \"" -#: g10/mainproc.c:1117 +#: g10/mainproc.c:1115 #, c-format msgid "Can't check signature: %s\n" -msgstr "Nie mogę sprawdzić podpisu: %s\n" +msgstr "Nie można sprawdzić podpisu: %s\n" -#: g10/mainproc.c:1214 +#: g10/mainproc.c:1212 msgid "old style (PGP 2.x) signature\n" msgstr "podpis starego typu (PGP 2.x)\n" -#: g10/mainproc.c:1219 +#: g10/mainproc.c:1217 msgid "invalid root packet detected in proc_tree()\n" msgstr "wykryto niepoprawny pakiet pierwotny w proc_tree()\n" @@ -2560,7 +2552,9 @@ msgstr "d #: g10/passphrase.c:173 #, c-format msgid " (main key ID %08lX)" -msgstr " (główny ID klucza %08lX)" +msgstr "" +" \n" +"(identyfikator głównego klucza %08lX)" #: g10/passphrase.c:190 msgid "can't query password in batchmode\n" @@ -2585,7 +2579,7 @@ msgstr "Nazwa pliku danych: " #: g10/plaintext.c:336 msgid "reading stdin ...\n" -msgstr "czytam strumień standardowego wejścia\n" +msgstr "odczyt ze strumienia standardowego wejścia...\n" #: g10/plaintext.c:379 #, c-format @@ -2595,7 +2589,7 @@ msgstr "nie mo #: g10/pubkey-enc.c:79 #, c-format msgid "anonymous receiver; trying secret key %08lX ...\n" -msgstr "adresat anonimowy; próbuję klucz tajny %08lX ...\n" +msgstr "adresat anonimowy; próba klucza tajnego %08lX ...\n" #: g10/pubkey-enc.c:85 msgid "okay, we are the anonymous recipient.\n" @@ -2623,8 +2617,8 @@ msgstr "" #: g10/seckey-cert.c:227 msgid "WARNING: Weak key detected - please change passphrase again.\n" msgstr "" -"Ostrzeżenie: Wykryto klucz słaby algorytmu - należy ponownie zmienić \n" -"wyrażenie przejściowe (hasło).\n" +"OSTRZEŻENIE: Wykryto klucz słaby algorytmu - należy ponownie zmienić \n" +" wyrażenie przejściowe (hasło).\n" #: g10/sig-check.c:199 msgid "assuming bad MDC due to an unknown critical bit\n" @@ -2666,7 +2660,7 @@ msgstr "%s podpis z #: g10/sign.c:263 g10/sign.c:575 #, c-format msgid "can't create %s: %s\n" -msgstr "nie mogę stworzyć %s: %s\n" +msgstr "nie można stworzyć %s: %s\n" #: g10/sign.c:361 msgid "signing:" @@ -2680,7 +2674,7 @@ msgstr "OSTRZE #: g10/textfilter.c:128 #, c-format msgid "can't handle text lines longer than %d characters\n" -msgstr "nie mogę obsłużyć linii tekstu dłuższej niż %d znaków\n" +msgstr "nie można obsłużyć linii tekstu dłuższej niż %d znaków\n" #: g10/textfilter.c:197 #, c-format @@ -2709,7 +2703,7 @@ msgstr "%s: dost #: g10/ringedit.c:298 g10/tdbio.c:445 #, c-format msgid "%s: can't create directory: %s\n" -msgstr "%s: nie mogę utworzyć katalogu: %s\n" +msgstr "%s: nie można utworzyć katalogu: %s\n" #: g10/ringedit.c:304 g10/tdbio.c:448 #, c-format @@ -2721,25 +2715,25 @@ msgstr "%s: katalog utworzony\n" msgid "%s: directory does not exist!\n" msgstr "%s: katalog nie istnieje!\n" -#: g10/openfile.c:209 g10/openfile.c:277 g10/ringedit.c:1348 g10/tdbio.c:458 +#: g10/openfile.c:182 g10/openfile.c:253 g10/ringedit.c:1348 g10/tdbio.c:458 #, c-format msgid "%s: can't create: %s\n" -msgstr "%s: nie mogę utworzyć: %s\n" +msgstr "%s: nie można utworzyć: %s\n" #: g10/tdbio.c:473 g10/tdbio.c:522 #, c-format msgid "%s: can't create lock\n" -msgstr "%s: nie mogę utworzyć blokady\n" +msgstr "%s: nie można utworzyć blokady\n" #: g10/tdbio.c:487 #, c-format msgid "%s: failed to create version record: %s" -msgstr "%s: stworzenie zapisu o wersji nie powiodło się: %s" +msgstr "%s: utworzenie zapisu o wersji nie powiodło się: %s" #: g10/tdbio.c:491 #, c-format msgid "%s: invalid trustdb created\n" -msgstr "%s: stworzony niepoprawny plik bazy zaufania\n" +msgstr "%s: utworzono niepoprawny plik bazy zaufania\n" #: g10/tdbio.c:494 #, c-format @@ -2800,7 +2794,7 @@ msgstr "%s: niew #: g10/tdbio.c:1601 #, c-format msgid "%s: error reading free record: %s\n" -msgstr "%s: błąd odczytu pustego wpisu: %s\n" +msgstr "%s: błąd odczytu wolnego wpisu: %s\n" #: g10/tdbio.c:1609 #, c-format @@ -3103,11 +3097,6 @@ msgstr "umieszczenie '%s' w Bazie Zaufania nie powiod msgid "WARNING: can't yet handle long pref records\n" msgstr "OSTRZEŻENIE: długie wpisy ustawień jeszcze nie są obsługiwane.\n" -#: g10/verify.c:143 -#, c-format -msgid "input line %u too long or missing LF\n" -msgstr "" - #: g10/ringedit.c:318 #, c-format msgid "%s: can't create keyring: %s\n" @@ -3157,34 +3146,34 @@ msgstr "" "podpisy składane tym kluczem nie zapewniają bezpieczeństwa!\n" #. do not overwrite -#: g10/openfile.c:72 +#: g10/openfile.c:65 #, c-format msgid "File `%s' exists. " msgstr "Plik '%s' już istnieje. " -#: g10/openfile.c:74 +#: g10/openfile.c:67 msgid "Overwrite (y/N)? " msgstr "Nadpisać (t/N)? " -#: g10/openfile.c:102 +#: g10/openfile.c:97 #, c-format msgid "%s: unknown suffix\n" msgstr "%s: nieznana końcówka\n" -#: g10/openfile.c:124 +#: g10/openfile.c:119 msgid "Enter new filename" msgstr "Nazwa pliku" -#: g10/openfile.c:165 +#: g10/openfile.c:160 msgid "writing to stdout\n" msgstr "zapisywanie na wyjście standardowe\n" -#: g10/openfile.c:243 +#: g10/openfile.c:219 #, c-format msgid "assuming signed data in `%s'\n" msgstr "przyjęto obecność podpisanych danych w '%s'\n" -#: g10/openfile.c:293 +#: g10/openfile.c:269 #, c-format msgid "%s: new options file created\n" msgstr "%s: stworzono nowy plik ustawień\n" @@ -3217,27 +3206,24 @@ msgstr "" "operacja była powtarzana %d razy!\n" #: g10/delkey.c:93 -#, fuzzy msgid "there is a secret key for this public key!\n" -msgstr "usunięcie klucza ze zbioru kluczy publicznych" +msgstr "dla tego klucza publicznego istnieje klucz tajny!\n" #: g10/delkey.c:95 msgid "use option \"--delete-secret-key\" to delete it first.\n" -msgstr "" +msgstr "należy najpierw go usunąć opcją \"--delete-secret-key\".\n" #: g10/delkey.c:111 -#, fuzzy msgid "can't do that in batchmode without \"--yes\"\n" -msgstr "nie działa w trybie wsadowym\n" +msgstr "nie działa w trybie wsadowym bez opcji \"--yes\"\n" #: g10/delkey.c:133 -#, fuzzy msgid "Delete this key from the keyring? " -msgstr "usunięcie klucza ze zbioru kluczy publicznych" +msgstr "Usunąć ten klucz ze zbioru? " #: g10/delkey.c:141 msgid "This is a secret key! - really delete? " -msgstr "" +msgstr "To jest klucz tajny - czy na pewno go usunąć? " #: g10/helptext.c:47 msgid "" @@ -3288,22 +3274,22 @@ msgid "" msgstr "" "Wybór algorytmu.\n" "\n" -"DSA (zwany też DSS) to algorytm podpisu cyfrowego i tylko do składania\n" -"podpisów może być używany. Jest to preferowany algorytm ponieważ\n" -"składane nim podpisy sprawdza się dużo szybciej niż te składane\n" -"algorytmem ElGamala.\n" +"DSA (zwany też DSS) to algorytm podpisu cyfrowego, i tylko do składania\n" +"podpisów może on być używany. Jest to preferowany algorytm ponieważ " +"składane\n" +"nim podpisy sprawdza się dużo szybciej niż te składane algorytmem ElGamala.\n" "\n" -"Algorytm ElGamala może być używany zarówno do podpisów jak i do\n" -"szyfrowania. Standard OpenPGP rozróżnia dwa typy tego algorytmu -\n" -"tylko do szyfrowania, oraz do szyfrowania i podpisywania. Faktycznie\n" -"algorytm pozostaje bez zmian ale pewne parametry muszą być odpowiednio\n" -"dobrane aby stworzyć klucz którym można składać bezpieczne\n" -"podpisy. Ten program obsługuje oba typy ale inne implementacje nnie\n" -"muszą rozumieć kluczy do podpisów i szyfrowania\n" +"Algorytm ElGamala może być używany zarówno do podpisów jak i do " +"szyfrowania.\n" +"Standard OpenPGP rozróżnia dwa typy tego algorytmu - tylko do szyfrowania,\n" +"oraz do szyfrowania i podpisywania. Faktycznie algorytm pozostaje bez zmian\n" +"ale pewne parametry muszą być odpowiednio dobrane aby stworzyć klucz którym\n" +"można składać bezpieczne podpisy. Ten program obsługuje oba typy ale inne\n" +"implementacje nie muszą rozumieć kluczy do podpisów i szyfrowania\n" "\n" -"Główny klucz musi być kluczem podpisującym, jest to powodem dla\n" -"którego w tym menu nie ma możności wyboru klucza ElGamala do\n" -"szyfrowania." +"Główny klucz musi być kluczem podpisującym, jest to powodem dla którego w " +"tym\n" +"menu nie ma możności wyboru klucza ElGamala do szyfrowania." #: g10/helptext.c:85 msgid "" @@ -3311,9 +3297,10 @@ msgid "" "because they are not supported by all programs and signatures created\n" "with them are quite large and very slow to verify." msgstr "" -"Ten typ klucza jest zdefiniowany w RFC2440, jednakże jest on odradzany\n" -"gdyż nie jest obsługiwany przez wszystkie programy, a podpisy nim\n" -"składane są duże i ich sprawdzanie trwa długo." +"Ten typ klucza jest zdefiniowany w RFC2440, jednakże jest on odradzany gdyż\n" +"nie jest obsługiwany przez wszystkie programy, a podpisy nim składane są " +"duże\n" +"i ich sprawdzanie trwa długo." #: g10/helptext.c:92 msgid "Enter the size of the key" @@ -3331,10 +3318,10 @@ msgid "" "get a good error response - instead the system tries to interpret\n" "the given value as an interval." msgstr "" -"Wprowadź żądaną wartość (jak w znaku zachęty). \n" -"Można tu podać datę w formacie ISO (RRRR-MM-DD) ale nie da to\n" -"właściwej obsługi błędów - system próbuje interpretować podaną wartość\n" -"jako okres." +"Wprowadź żądaną wartość (jak w znaku zachęty). Można tu podać datę w " +"formacie\n" +"ISO (RRRR-MM-DD) ale nie da to właściwej obsługi błędów - system próbuje\n" +"interpretować podaną wartość jako okres." #: g10/helptext.c:118 msgid "Enter the name of the key holder" @@ -3442,7 +3429,7 @@ msgstr "" "Proszę powrótrzyć wyrażenie przejściowe, aby upewnić się że nie było pomyłki." #: g10/helptext.c:213 -msgid "Give the name of the file to which the signature applies" +msgid "Give the name fo the file to which the signature applies" msgstr "Nazwa pliku którego dotyczy podpis" #: g10/helptext.c:218 diff --git a/util/errors.c b/util/errors.c index 0590f8ed8..e1551d03d 100644 --- a/util/errors.c +++ b/util/errors.c @@ -100,6 +100,7 @@ g10_errstr( int err ) X(NETWORK ,N_("network error")) X(SELFTEST_FAILED,"selftest failed") X(NOT_ENCRYPTED ,N_("not encrypted")) + X(NOT_PROCESSED ,N_("not processed")) default: p = buf; sprintf(buf, "g10err=%d", err); break; } #undef X