diff options
author | Werner Koch <[email protected]> | 2000-01-13 18:27:50 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2000-01-13 18:27:50 +0000 |
commit | e8164f20aba0ecef4ee520727b4b2c6c518a0d6d (patch) | |
tree | 2901c1216a21b99966bccd8f208bc82be2875254 | |
parent | See ChangeLog: Thu Jan 6 16:56:18 CET 2000 Werner Koch (diff) | |
download | gnupg-e8164f20aba0ecef4ee520727b4b2c6c518a0d6d.tar.gz gnupg-e8164f20aba0ecef4ee520727b4b2c6c518a0d6d.zip |
See ChangeLog: Thu Jan 13 19:31:58 CET 2000 Werner Koch
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | NEWS | 7 | ||||
-rw-r--r-- | THANKS | 3 | ||||
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | checks/ChangeLog | 5 | ||||
-rwxr-xr-x | checks/defs.inc | 3 | ||||
-rw-r--r-- | cipher/ChangeLog | 12 | ||||
-rw-r--r-- | cipher/Makefile.am | 2 | ||||
-rw-r--r-- | cipher/elgamal.c | 117 | ||||
-rw-r--r-- | cipher/random.c | 6 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | g10/ChangeLog | 7 | ||||
-rw-r--r-- | g10/armor.c | 3 | ||||
-rw-r--r-- | g10/trustdb.c | 6 | ||||
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/types.h | 7 | ||||
-rw-r--r-- | mpi/ChangeLog | 12 | ||||
-rw-r--r-- | mpi/mpi-internal.h | 17 | ||||
-rw-r--r-- | mpi/mpi-mpow.c | 129 | ||||
-rw-r--r-- | mpi/mpi-pow.c | 19 | ||||
-rw-r--r-- | mpi/mpih-mul.c | 118 | ||||
-rw-r--r-- | po/Makefile.in.in | 10 | ||||
-rw-r--r-- | po/de.po | 47 | ||||
-rw-r--r-- | po/es_ES.po | 47 | ||||
-rw-r--r-- | po/fr.po | 47 | ||||
-rw-r--r-- | po/id.po | 47 | ||||
-rw-r--r-- | po/it.po | 47 | ||||
-rw-r--r-- | po/pl.po | 47 | ||||
-rw-r--r-- | po/pt_BR.po | 47 | ||||
-rw-r--r-- | po/pt_PT.po | 47 | ||||
-rw-r--r-- | po/ru.po | 47 |
32 files changed, 524 insertions, 400 deletions
@@ -1,3 +1,8 @@ +Thu Jan 13 19:31:58 CET 2000 Werner Koch <[email protected]> + + * configure.in: Do set development version when the version has + a dash in it. Suggested by Dave Dykstra. + Thu Dec 16 10:07:58 CET 1999 Werner Koch <[email protected]> * VERSION: Set to 1.0.1. @@ -1,6 +1,13 @@ * Some fixes for the W32 version + * Encryption is now much faster: About 2 times for 1k bit keys + and 8 times for 4k keys. + + * New encryption keys are generated in way which allows a much + faster decryption. + + Noteworthy changes in version 1.0.1 (1999-12-16) ----------------------------------- @@ -3,6 +3,7 @@ reporting problems, suggesting various improvements or submitting actual code. Here is a list of those people. Help me keep it complete and free of errors. +Alec Habig [email protected] Allan Clark [email protected] Anand Kumria [email protected] Ariel T Glenn [email protected] @@ -19,7 +20,9 @@ Christopher Oliver [email protected] Christian Recktenwald [email protected] Daniel Eisenbud [email protected] Daniel Koening [email protected] +Dave Dykstra [email protected] David Ellement [email protected] +David Hallinan [email protected] Detlef Lannert [email protected] Dirk Lattermann [email protected] Ed Boraas [email protected] @@ -6,6 +6,10 @@ * Add reason for revocation which is going to be a SHOULD + * at least an option to prefer DSA keys over RSA when selecting the key to + use. Depending on creatin time would be nice too. I thing this is + already done for the subkeys. + Scheduled for 1.1 ----------------- * With option -i prompt before adding a key to the keyring and show some @@ -1 +1 @@ -1.0.1b +1.0.1c diff --git a/checks/ChangeLog b/checks/ChangeLog index a92bbf439..9861e10f3 100644 --- a/checks/ChangeLog +++ b/checks/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 13 19:31:58 CET 2000 Werner Koch <[email protected]> + + * defs.inc (chdir): Removed becuase it is unsused an plain old sh + does not like this name. Reported by Alec Habig. + Tue Oct 26 20:02:23 1999 Werner Koch ([email protected]) * Makefile.am (GPG_DEARMOR): New and use --no-options. diff --git a/checks/defs.inc b/checks/defs.inc index d5fdc8af7..47c6e4d8f 100755 --- a/checks/defs.inc +++ b/checks/defs.inc @@ -48,9 +48,6 @@ info () { echo "$pgmname:" $* >&2 } -chdir () { - cd $1 || fatal "cannot cd to $1" -} echo_n_init=no echo_n () { diff --git a/cipher/ChangeLog b/cipher/ChangeLog index 8e5461274..2a53aff1a 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,15 @@ +Thu Jan 13 19:31:58 CET 2000 Werner Koch <[email protected]> + + * elgamal.c (wiener_map): New. + (gen_k): Use a much smaller k. + (generate): Calculate the qbits using the wiener map and + choose an x at a size comparable to the one choosen in gen_k + + * random.c (read_pool): Print a more friendly erro message in + cases when too much random is requested in one call. + + * Makefile.am (tiger): Replaced -O1 by -O. Suggested by Alec Habig. + Sat Dec 4 12:30:28 CET 1999 Werner Koch <[email protected]> * primegen.c (generate_elg_prime): All primes are now generated with diff --git a/cipher/Makefile.am b/cipher/Makefile.am index ac637920e..f3b087eb8 100644 --- a/cipher/Makefile.am +++ b/cipher/Makefile.am @@ -67,7 +67,7 @@ libcipher_a_LIBADD = @STATIC_CIPHER_OBJS@ tiger: $(srcdir)/tiger.c `echo $(COMPILE) $(DYNLINK_MOD_CFLAGS) -o tiger $(srcdir)/tiger.c | \ - sed -e 's/-O[2-9s]*/-O1/g' ` + sed -e 's/-O[2-9s]*/-O/g' ` tiger.o: $(srcdir)/tiger.c `echo $(COMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' ` diff --git a/cipher/elgamal.c b/cipher/elgamal.c index 9f98ce2e0..f968a29d4 100644 --- a/cipher/elgamal.c +++ b/cipher/elgamal.c @@ -1,5 +1,5 @@ /* elgamal.c - ElGamal Public Key encryption - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 2000 Free Software Foundation, Inc. * * For a description of the algorithm, see: * Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996. @@ -62,6 +62,45 @@ progress( int c ) fputc( c, stderr ); } +/**************** + * Michael Wiener's table about subgroup sizes to match field sizes + * (floating around somewhere - Fixme: need a reference) + */ +static unsigned int +wiener_map( unsigned int n ) +{ + static struct { unsigned int p_n, q_n; } t[] = + { /* p q attack cost */ + { 512, 119 }, /* 9 x 10^17 */ + { 768, 145 }, /* 6 x 10^21 */ + { 1024, 165 }, /* 7 x 10^24 */ + { 1280, 183 }, /* 3 x 10^27 */ + { 1536, 198 }, /* 7 x 10^29 */ + { 1792, 212 }, /* 9 x 10^31 */ + { 2048, 225 }, /* 8 x 10^33 */ + { 2304, 237 }, /* 5 x 10^35 */ + { 2560, 249 }, /* 3 x 10^37 */ + { 2816, 259 }, /* 1 x 10^39 */ + { 3072, 269 }, /* 3 x 10^40 */ + { 3328, 279 }, /* 8 x 10^41 */ + { 3584, 288 }, /* 2 x 10^43 */ + { 3840, 296 }, /* 4 x 10^44 */ + { 4096, 305 }, /* 7 x 10^45 */ + { 4352, 313 }, /* 1 x 10^47 */ + { 4608, 320 }, /* 2 x 10^48 */ + { 4864, 328 }, /* 2 x 10^49 */ + { 5120, 335 }, /* 3 x 10^50 */ + { 0, 0 } + }; + int i; + + for(i=0; t[i].p_n; i++ ) { + if( n <= t[i].p_n ) + return t[i].q_n; + } + /* not in table - use some arbitrary high number ;-) */ + return n / 8 + 200; +} static void test_keys( ELG_secret_key *sk, unsigned nbits ) @@ -108,38 +147,45 @@ gen_k( MPI p ) MPI k = mpi_alloc_secure( 0 ); MPI temp = mpi_alloc( mpi_get_nlimbs(p) ); MPI p_1 = mpi_copy(p); - unsigned int nbits = mpi_get_nbits(p); - unsigned int nbytes = (nbits+7)/8; + unsigned int orig_nbits = mpi_get_nbits(p); + unsigned int nbits; + unsigned int nbytes; char *rndbuf = NULL; + /* IMO using a k much lesser than p is sufficient and it greatly + * improves the encryption performance. We use Wiener's table + * and add a large safety margin. + */ + nbits = wiener_map( orig_nbits ) * 3 / 2; + if( nbits >= orig_nbits ) + BUG(); + + nbytes = (nbits+7)/8; if( DBG_CIPHER ) - log_debug("choosing a random k "); + log_debug("choosing a random k of %u bits", nbits); mpi_sub_ui( p_1, p, 1); for(;;) { - if( DBG_CIPHER ) - progress('.'); if( !rndbuf || nbits < 32 ) { m_free(rndbuf); rndbuf = get_random_bits( nbits, 1, 1 ); } else { /* change only some of the higher bits */ - /* we could imporove this by directly requesting more memory + /* we could impprove this by directly requesting more memory * at the first call to get_random_bits() and use this the here - * maybe it is easier to do this directly in random.c */ + * maybe it is easier to do this directly in random.c + * Anyway, it is highly inlikely that we will ever reach this code + */ char *pp = get_random_bits( 32, 1, 1 ); memcpy( rndbuf,pp, 4 ); m_free(pp); + log_debug("gen_k: tsss, never expected to reach this\n"); } mpi_set_buffer( k, rndbuf, nbytes, 0 ); for(;;) { - /* make sure that the number is of the exact lenght */ - if( mpi_test_bit( k, nbits-1 ) ) - mpi_set_highbit( k, nbits-1 ); - else { - mpi_set_highbit( k, nbits-1 ); - mpi_clear_bit( k, nbits-1 ); - } + /* Hmm, actually we don't need this step here + * because we use k much smaller than p - we do it anyway + * just in case the keep on adding a one to k ;) */ if( !(mpi_cmp( k, p_1 ) < 0) ) { /* check: k < (p-1) */ if( DBG_CIPHER ) progress('+'); @@ -153,6 +199,8 @@ gen_k( MPI p ) if( mpi_gcd( temp, k, p_1 ) ) goto found; /* okay, k is relatively prime to (p-1) */ mpi_add_ui( k, k, 1 ); + if( DBG_CIPHER ) + progress('.'); } } found: @@ -171,7 +219,7 @@ gen_k( MPI p ) * and an array with n-1 factors of (p-1) */ static void -generate( ELG_secret_key *sk, unsigned nbits, MPI **ret_factors ) +generate( ELG_secret_key *sk, unsigned int nbits, MPI **ret_factors ) { MPI p; /* the prime */ MPI p_min1; @@ -179,19 +227,15 @@ generate( ELG_secret_key *sk, unsigned nbits, MPI **ret_factors ) MPI x; /* the secret exponent */ MPI y; MPI temp; - unsigned qbits; + unsigned int qbits; + unsigned int xbits; byte *rndbuf; p_min1 = mpi_alloc( (nbits+BITS_PER_MPI_LIMB-1)/BITS_PER_MPI_LIMB ); temp = mpi_alloc( (nbits+BITS_PER_MPI_LIMB-1)/BITS_PER_MPI_LIMB ); - if( nbits < 512 ) - qbits = 120; - else if( nbits <= 1024 ) - qbits = 160; - else if( nbits <= 2048 ) - qbits = 200; - else - qbits = 240; + qbits = wiener_map( nbits ); + if( qbits & 1 ) /* better have a even one */ + qbits++; g = mpi_alloc(1); p = generate_elg_prime( 0, nbits, qbits, g, ret_factors ); mpi_sub_ui(p_min1, p, 1); @@ -202,18 +246,26 @@ generate( ELG_secret_key *sk, unsigned nbits, MPI **ret_factors ) * This must be a very good random number because this is the * secret part. The prime is public and may be shared anyway, * so a random generator level of 1 is used for the prime. + * + * I don't see a reason to have a x of about the same size + * as the p. It should be sufficient to have one about the size + * of q or the later used k plus a large safety margin. Decryption + * will be much faster with such an x. */ - x = mpi_alloc_secure( nbits/BITS_PER_MPI_LIMB ); + xbits = qbits * 3 / 2; + if( xbits >= nbits ) + BUG(); + x = mpi_alloc_secure( xbits/BITS_PER_MPI_LIMB ); if( DBG_CIPHER ) - log_debug("choosing a random x "); + log_debug("choosing a random x of size %u", xbits ); rndbuf = NULL; do { if( DBG_CIPHER ) progress('.'); if( rndbuf ) { /* change only some of the higher bits */ - if( nbits < 16 ) {/* should never happen ... */ + if( xbits < 16 ) {/* should never happen ... */ m_free(rndbuf); - rndbuf = get_random_bits( nbits, 2, 1 ); + rndbuf = get_random_bits( xbits, 2, 1 ); } else { char *r = get_random_bits( 16, 2, 1 ); @@ -222,9 +274,9 @@ generate( ELG_secret_key *sk, unsigned nbits, MPI **ret_factors ) } } else - rndbuf = get_random_bits( nbits, 2, 1 ); - mpi_set_buffer( x, rndbuf, (nbits+7)/8, 0 ); - mpi_clear_highbit( x, nbits+1 ); + rndbuf = get_random_bits( xbits, 2, 1 ); + mpi_set_buffer( x, rndbuf, (xbits+7)/8, 0 ); + mpi_clear_highbit( x, xbits+1 ); } while( !( mpi_cmp_ui( x, 0 )>0 && mpi_cmp( x, p_min1 )<0 ) ); m_free(rndbuf); @@ -311,7 +363,6 @@ decrypt(MPI output, MPI a, MPI b, ELG_secret_key *skey ) MPI t1 = mpi_alloc_secure( mpi_get_nlimbs( skey->p ) ); /* output = b/(a^x) mod p */ - mpi_powm( t1, a, skey->x, skey->p ); mpi_invm( t1, t1, skey->p ); mpi_mulm( output, b, t1, skey->p ); diff --git a/cipher/random.c b/cipher/random.c index 5af5349df..465e7b8be 100644 --- a/cipher/random.c +++ b/cipher/random.c @@ -270,8 +270,10 @@ read_pool( byte *buffer, size_t length, int level ) int i; ulong *sp, *dp; - if( length >= POOLSIZE ) - BUG(); /* not allowed */ + if( length >= POOLSIZE ) { + log_fatal(_("too many random bits requested; the limit is %d\n"), + POOLSIZE*8-1 ); + } /* for level 2 make sure that there is enough random in the pool */ if( level == 2 && pool_balance < length ) { diff --git a/configure.in b/configure.in index 92160dc81..80862b6ee 100644 --- a/configure.in +++ b/configure.in @@ -653,7 +653,7 @@ AC_SUBST(ZLIBS) changequote(,)dnl tmp_pat='[a-zA-Z]' changequote([,])dnl -if echo "$VERSION" | grep "$tmp_pat" >/dev/null ; then +if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then AC_DEFINE(IS_DEVELOPMENT_VERSION) fi diff --git a/g10/ChangeLog b/g10/ChangeLog index ffd014115..05dd0b132 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,10 @@ +Thu Jan 13 19:31:58 CET 2000 Werner Koch <[email protected]> + + * armor.c (is_armored): Check for 1-pass-sig packets. Reported by + David Hallinan <[email protected]>. + (armor_filter): Replaced one LF by the LF macro. Reported by + Wolfgang Redtenbacher. + Wed Jan 5 11:51:17 CET 2000 Werner Koch <[email protected]> * g10.c (main): Reset new global flag opt.pgp2_workarounds diff --git a/g10/armor.c b/g10/armor.c index c79927e7e..3a0791841 100644 --- a/g10/armor.c +++ b/g10/armor.c @@ -167,6 +167,7 @@ is_armored( const byte *buf ) switch( pkttype ) { case PKT_MARKER: case PKT_SYMKEY_ENC: + case PKT_ONEPASS_SIG: case PKT_PUBLIC_KEY: case PKT_SECRET_KEY: case PKT_PUBKEY_ENC: @@ -1020,7 +1021,7 @@ armor_filter( void *opaque, int control, iobuf_put(a, c); c = bintoasc[radbuf[2]&077]; iobuf_put(a, c); - iobuf_put(a, '\n'); + iobuf_writestr(a, LF ); /* and the the trailer */ if( afx->what >= DIM(tail_strings) ) log_bug("afx->what=%d", afx->what); diff --git a/g10/trustdb.c b/g10/trustdb.c index 472daf2c1..1791f2882 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -1405,7 +1405,7 @@ make_uid_records( KBNODE keyblock, ulong lid, u32 *keyid, u32 *min_expire, /* 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 + * But because 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 ) ) @@ -2085,8 +2085,8 @@ verify_key( int max_depth, TRUSTREC *drec, const char *namehash, if( namehash && tree->n.k.validity != TRUST_ULTIMATE ) { /* find the matching user id. * We don't do this here if the key is ultimately trusted; in - * this case there will be no lits od user IDs and frankly - * it doe not make sense to compare by the name if we do + * this case there will be no lids for the user IDs and frankly + * it does not make sense to compare by the name if we do * have the secret key. * fixme: the way we handle this is too inefficient */ TN ur; diff --git a/include/ChangeLog b/include/ChangeLog index 768e52072..464704e18 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 13 19:31:58 CET 2000 Werner Koch <[email protected]> + + * types.h (HAVE_U64_TYPEDEF): Add a test for _LONGLONG which fixes + this long living SGI bug. Reported by Alec Habig. + Sat Dec 4 12:30:28 CET 1999 Werner Koch <[email protected]> * iobuf.h (IOBUFCTRL_CANCEL): Nww. diff --git a/include/types.h b/include/types.h index baac2b5c2..bf98840b2 100644 --- a/include/types.h +++ b/include/types.h @@ -83,6 +83,11 @@ #define HAVE_U32_TYPEDEF #endif +/**************** + * Warning: Some systems segfault when this u64 typedef and + * the dummy code in cipher/md.c is not available. Examples are + * Solaris and IRIX. + */ #ifndef HAVE_U64_TYPEDEF #undef u64 /* maybe there is a macro with this name */ #if SIZEOF_UNSIGNED_INT == 8 @@ -91,7 +96,7 @@ #elif SIZEOF_UNSIGNED_LONG == 8 typedef unsigned long u64; #define HAVE_U64_TYPEDEF - #elif __GNUC__ >= 2 || defined(__SUNPRO_C) + #elif __GNUC__ >= 2 || defined(__SUNPRO_C) || defined(_LONGLONG) typedef unsigned long long u64; #define HAVE_U64_TYPEDEF #endif diff --git a/mpi/ChangeLog b/mpi/ChangeLog index 80b2d8de5..ee1cd06fe 100644 --- a/mpi/ChangeLog +++ b/mpi/ChangeLog @@ -1,3 +1,15 @@ +Thu Jan 13 19:31:58 CET 2000 Werner Koch <[email protected]> + + * mpi-internal.h (karatsuba_ctx): New. + * mpih-mul.c (mpihelp_release_karatsuba_ctx): New. + (mpihelp_mul_karatsuba_case): New. + (mpihelp_mul): Splitted to make use of the new functions. + * mpi-pow.c (mpi_powm): Make use of the new splitted function + to avoid multiple allocation of temorary memory during the + karatsuba operations. + + * mpi_mpow.c: Removed the unused Barrett code. + Sun Dec 19 15:22:26 CET 1999 Werner Koch <[email protected]> * power/ : Converted more comments to C comments because some AS diff --git a/mpi/mpi-internal.h b/mpi/mpi-internal.h index 035d33cb3..2b521c952 100644 --- a/mpi/mpi-internal.h +++ b/mpi/mpi-internal.h @@ -186,6 +186,17 @@ mpi_limb_t mpihelp_sub(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, int mpihelp_cmp( mpi_ptr_t op1_ptr, mpi_ptr_t op2_ptr, mpi_size_t size ); /*-- mpihelp-mul.c --*/ + +struct karatsuba_ctx { + struct karatsuba_ctx *next; + mpi_ptr_t tspace; + mpi_size_t tspace_size; + mpi_ptr_t tp; + mpi_size_t tp_size; +}; + +void mpihelp_release_karatsuba_ctx( struct karatsuba_ctx *ctx ); + mpi_limb_t mpihelp_addmul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_limb_t s2_limb); mpi_limb_t mpihelp_submul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, @@ -198,6 +209,12 @@ void mpih_sqr_n_basecase( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t size ); void mpih_sqr_n( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t size, mpi_ptr_t tspace); +void mpihelp_mul_karatsuba_case( mpi_ptr_t prodp, + mpi_ptr_t up, mpi_size_t usize, + mpi_ptr_t vp, mpi_size_t vsize, + struct karatsuba_ctx *ctx ); + + /*-- mpihelp-mul_1.c (or xxx/cpu/ *.S) --*/ mpi_limb_t mpihelp_mul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_limb_t s2_limb); diff --git a/mpi/mpi-mpow.c b/mpi/mpi-mpow.c index a8c561dd1..001802191 100644 --- a/mpi/mpi-mpow.c +++ b/mpi/mpi-mpow.c @@ -1,5 +1,5 @@ /* mpi-mpow.c - MPI functions - * Copyright (C) 1998, 1999 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -25,22 +25,6 @@ #include "longlong.h" #include <assert.h> -/* Barrett is slower than the classical way. It can be tweaked by - * using partial multiplications - */ -/*#define USE_BARRETT*/ - - - -#ifdef USE_BARRETT -static void barrett_mulm( MPI w, MPI u, MPI v, MPI m, MPI y, int k, MPI r1, MPI r2 ); -static MPI init_barrett( MPI m, int *k, MPI *r1, MPI *r2 ); -static int calc_barrett( MPI r, MPI x, MPI m, MPI y, int k, MPI r1, MPI r2 ); -#else -#define barrett_mulm( w, u, v, m, y, k, r1, r2 ) mpi_mulm( (w), (u), (v), (m) ) -#endif - - static int build_index( MPI *exparray, int k, int i, int t ) { @@ -53,7 +37,6 @@ build_index( MPI *exparray, int k, int i, int t ) if( mpi_test_bit( exparray[j], bitno ) ) index |= 1; } - /*log_debug("t=%d i=%d index=%d\n", t, i, index );*/ return index; } @@ -68,35 +51,25 @@ mpi_mulpowm( MPI res, MPI *basearray, MPI *exparray, MPI m) int i, j, idx; MPI *G; /* table with precomputed values of size 2^k */ MPI tmp; - #ifdef USE_BARRETT - MPI barrett_y, barrett_r1, barrett_r2; - int barrett_k; - #endif for(k=0; basearray[k]; k++ ) ; assert(k); for(t=0, i=0; (tmp=exparray[i]); i++ ) { - /*log_mpidump("exp: ", tmp );*/ j = mpi_get_nbits(tmp); if( j > t ) t = j; } - /*log_mpidump("mod: ", m );*/ assert(i==k); assert(t); assert( k < 10 ); G = m_alloc_clear( (1<<k) * sizeof *G ); - #ifdef USE_BARRETT - barrett_y = init_barrett( m, &barrett_k, &barrett_r1, &barrett_r2 ); - #endif /* and calculate */ tmp = mpi_alloc( mpi_get_nlimbs(m)+1 ); mpi_set_ui( res, 1 ); for(i = 1; i <= t; i++ ) { - barrett_mulm(tmp, res, res, m, barrett_y, barrett_k, - barrett_r1, barrett_r2 ); + mpi_mulm(tmp, res, res, m ); idx = build_index( exparray, k, i, t ); assert( idx >= 0 && idx < (1<<k) ); if( !G[idx] ) { @@ -108,115 +81,21 @@ mpi_mulpowm( MPI res, MPI *basearray, MPI *exparray, MPI m) if( !G[idx] ) G[idx] = mpi_copy( basearray[j] ); else - barrett_mulm( G[idx], G[idx], basearray[j], - m, barrett_y, barrett_k, barrett_r1, barrett_r2 ); + mpi_mulm( G[idx], G[idx], basearray[j], m ); } } if( !G[idx] ) G[idx] = mpi_alloc(0); } } - barrett_mulm(res, tmp, G[idx], m, barrett_y, barrett_k, barrett_r1, barrett_r2 ); + mpi_mulm(res, tmp, G[idx], m ); } /* cleanup */ mpi_free(tmp); - #ifdef USE_BARRETT - mpi_free(barrett_y); - mpi_free(barrett_r1); - mpi_free(barrett_r2); - #endif for(i=0; i < (1<<k); i++ ) mpi_free(G[i]); m_free(G); } - -#ifdef USE_BARRETT -static void -barrett_mulm( MPI w, MPI u, MPI v, MPI m, MPI y, int k, MPI r1, MPI r2 ) -{ - mpi_mul(w, u, v); - if( calc_barrett( w, w, m, y, k, r1, r2 ) ) - mpi_fdiv_r( w, w, m ); -} - -/**************** - * Barrett precalculation: y = floor(b^(2k) / m) - */ -static MPI -init_barrett( MPI m, int *k, MPI *r1, MPI *r2 ) -{ - MPI tmp; - - mpi_normalize( m ); - *k = mpi_get_nlimbs( m ); - tmp = mpi_alloc( *k + 1 ); - mpi_set_ui( tmp, 1 ); - mpi_lshift_limbs( tmp, 2 * *k ); - mpi_fdiv_q( tmp, tmp, m ); - *r1 = mpi_alloc( 2* *k + 1 ); - *r2 = mpi_alloc( 2* *k + 1 ); - return tmp; -} - -/**************** - * Barrett reduction: We assume that these conditions are met: - * Given x =(x_2k-1 ...x_0)_b - * m =(m_k-1 ....m_0)_b with m_k-1 != 0 - * Output r = x mod m - * Before using this function init_barret must be used to calucalte y and k. - * Returns: false = no error - * true = can't perform barret reduction - */ -static int -calc_barrett( MPI r, MPI x, MPI m, MPI y, int k, MPI r1, MPI r2 ) -{ - int xx = k > 3 ? k-3:0; - - mpi_normalize( x ); - if( mpi_get_nlimbs(x) > 2*k ) - return 1; /* can't do it */ - - /* 1. q1 = floor( x / b^k-1) - * q2 = q1 * y - * q3 = floor( q2 / b^k+1 ) - * Actually, we don't need qx, we can work direct on r2 - */ - mpi_set( r2, x ); - mpi_rshift_limbs( r2, k-1 ); - mpi_mul( r2, r2, y ); - mpi_rshift_limbs( r2, k+1 ); - - /* 2. r1 = x mod b^k+1 - * r2 = q3 * m mod b^k+1 - * r = r1 - r2 - * 3. if r < 0 then r = r + b^k+1 - */ - mpi_set( r1, x ); - if( r1->nlimbs > k+1 ) /* quick modulo operation */ - r1->nlimbs = k+1; - mpi_mul( r2, r2, m ); - if( r2->nlimbs > k+1 ) /* quick modulo operation */ - r2->nlimbs = k+1; - mpi_sub( r, r1, r2 ); - - if( mpi_is_neg( r ) ) { - MPI tmp; - - tmp = mpi_alloc( k + 2 ); - mpi_set_ui( tmp, 1 ); - mpi_lshift_limbs( tmp, k+1 ); - mpi_add( r, r, tmp ); - mpi_free(tmp); - } - - /* 4. while r >= m do r = r - m */ - while( mpi_cmp( r, m ) >= 0 ) - mpi_sub( r, r, m ); - - return 0; -} -#endif /* USE_BARRETT */ - diff --git a/mpi/mpi-pow.c b/mpi/mpi-pow.c index e8d55f9b9..fbd2cb8ef 100644 --- a/mpi/mpi-pow.c +++ b/mpi/mpi-pow.c @@ -1,6 +1,6 @@ /* mpi-pow.c - MPI functions * Copyright (C) 1998 Free Software Foundation, Inc. - * Copyright (C) 1994, 1996 Free Software Foundation, Inc. + * Copyright (C) 1994, 1996, 2000 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -30,6 +30,7 @@ #include <config.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "mpi-internal.h" #include "longlong.h" #include <assert.h> @@ -159,7 +160,9 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod) int c; mpi_limb_t e; mpi_limb_t carry_limb; + struct karatsuba_ctx karactx; + memset( &karactx, 0, sizeof karactx ); negative_result = (ep[0] & 1) && base->sign; i = esize - 1; @@ -177,6 +180,7 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod) * by RP (==RES->d), and with 50% probability in the area originally * pointed to by XP. */ + for(;;) { while( c ) { mpi_ptr_t tp; @@ -194,7 +198,6 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod) mpi_free_limb_space( tspace ); tsize = 2 * rsize; tspace = mpi_alloc_limb_space( tsize, 0 ); - } mpih_sqr_n( xp, rp, rsize, tspace ); } @@ -209,7 +212,15 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod) rsize = xsize; if( (mpi_limb_signed_t)e < 0 ) { - mpihelp_mul( xp, rp, rsize, bp, bsize ); + /*mpihelp_mul( xp, rp, rsize, bp, bsize );*/ + if( bsize < KARATSUBA_THRESHOLD ) { + mpihelp_mul( xp, rp, rsize, bp, bsize ); + } + else { + mpihelp_mul_karatsuba_case( + xp, rp, rsize, bp, bsize, &karactx ); + } + xsize = rsize + bsize; if( xsize > msize ) { mpihelp_divrem(xp + msize, 0, xp, xsize, mp, msize); @@ -258,6 +269,8 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod) if( mod_shift_cnt ) mpihelp_rshift( rp, rp, rsize, mod_shift_cnt); MPN_NORMALIZE (rp, rsize); + + mpihelp_release_karatsuba_ctx( &karactx ); } if( negative_result && rsize ) { diff --git a/mpi/mpih-mul.c b/mpi/mpih-mul.c index 7707c0e30..3422f6541 100644 --- a/mpi/mpih-mul.c +++ b/mpi/mpih-mul.c @@ -1,5 +1,5 @@ /* mpihelp-mul.c - MPI helper functions - * Copyright (C) 1994, 1996, 1998, 1999 Free Software Foundation, Inc. + * Copyright (C) 1994, 1996, 1998, 1999, 2000 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -29,6 +29,7 @@ #include <config.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "mpi-internal.h" #include "longlong.h" @@ -372,6 +373,88 @@ mpihelp_mul_n( mpi_ptr_t prodp, mpi_ptr_t up, mpi_ptr_t vp, mpi_size_t size) } + +void +mpihelp_mul_karatsuba_case( mpi_ptr_t prodp, + mpi_ptr_t up, mpi_size_t usize, + mpi_ptr_t vp, mpi_size_t vsize, + struct karatsuba_ctx *ctx ) +{ + mpi_limb_t cy; + + if( !ctx->tspace || ctx->tspace_size < vsize ) { + if( ctx->tspace ) + mpi_free_limb_space( ctx->tspace ); + ctx->tspace = mpi_alloc_limb_space( 2 * vsize, + m_is_secure( up ) || m_is_secure( vp ) ); + ctx->tspace_size = vsize; + } + + MPN_MUL_N_RECURSE( prodp, up, vp, vsize, ctx->tspace ); + + prodp += vsize; + up += vsize; + usize -= vsize; + if( usize >= vsize ) { + if( !ctx->tp || ctx->tp_size < vsize ) { + if( ctx->tp ) + mpi_free_limb_space( ctx->tp ); + ctx->tp = mpi_alloc_limb_space( 2 * vsize, m_is_secure( up ) + || m_is_secure( vp ) ); + ctx->tp_size = vsize; + } + + do { + MPN_MUL_N_RECURSE( ctx->tp, up, vp, vsize, ctx->tspace ); + cy = mpihelp_add_n( prodp, prodp, ctx->tp, vsize ); + mpihelp_add_1( prodp + vsize, ctx->tp + vsize, vsize, cy ); + prodp += vsize; + up += vsize; + usize -= vsize; + } while( usize >= vsize ); + } + + if( usize ) { + #warning Must test this CODE!!! + g10_log_debug("this code path is not yet tested\n"); + if( usize < KARATSUBA_THRESHOLD ) { + mpihelp_mul( ctx->tspace, vp, vsize, up, usize ); + } + else { + if( !ctx->next ) { + ctx->next = m_alloc_clear( sizeof *ctx ); + } + mpihelp_mul_karatsuba_case( ctx->tspace, + vp, vsize, + up, usize, + ctx->next ); + } + + cy = mpihelp_add_n( prodp, prodp, ctx->tspace, vsize); + mpihelp_add_1( prodp + vsize, ctx->tspace + vsize, usize, cy ); + } +} + + +void +mpihelp_release_karatsuba_ctx( struct karatsuba_ctx *ctx ) +{ + struct karatsuba_ctx *ctx2; + + if( ctx->tp ) + mpi_free_limb_space( ctx->tp ); + if( ctx->tspace ) + mpi_free_limb_space( ctx->tspace ); + for( ctx=ctx->next; ctx; ctx = ctx2 ) { + ctx2 = ctx->next; + if( ctx->tp ) + mpi_free_limb_space( ctx->tp ); + if( ctx->tspace ) + mpi_free_limb_space( ctx->tspace ); + m_free( ctx ); + } +} + /* Multiply the natural numbers u (pointed to by UP, with USIZE limbs) * and v (pointed to by VP, with VSIZE limbs), and store the result at * PRODP. USIZE + VSIZE limbs are always stored, but if the input @@ -393,7 +476,7 @@ mpihelp_mul( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t usize, { mpi_ptr_t prod_endp = prodp + usize + vsize - 1; mpi_limb_t cy; - mpi_ptr_t tspace; + struct karatsuba_ctx ctx; if( vsize < KARATSUBA_THRESHOLD ) { mpi_size_t i; @@ -437,34 +520,9 @@ mpihelp_mul( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t usize, return cy; } - tspace = mpi_alloc_limb_space( 2 * vsize, - m_is_secure( up ) || m_is_secure( vp ) ); - MPN_MUL_N_RECURSE( prodp, up, vp, vsize, tspace ); - - prodp += vsize; - up += vsize; - usize -= vsize; - if( usize >= vsize ) { - mpi_ptr_t tp = mpi_alloc_limb_space( 2 * vsize, m_is_secure( up ) - || m_is_secure( vp ) ); - do { - MPN_MUL_N_RECURSE( tp, up, vp, vsize, tspace ); - cy = mpihelp_add_n( prodp, prodp, tp, vsize ); - mpihelp_add_1( prodp + vsize, tp + vsize, vsize, cy ); - prodp += vsize; - up += vsize; - usize -= vsize; - } while( usize >= vsize ); - mpi_free_limb_space( tp ); - } - - if( usize ) { - mpihelp_mul( tspace, vp, vsize, up, usize ); - cy = mpihelp_add_n( prodp, prodp, tspace, vsize); - mpihelp_add_1( prodp + vsize, tspace + vsize, usize, cy ); - } - - mpi_free_limb_space( tspace ); + memset( &ctx, 0, sizeof ctx ); + mpihelp_mul_karatsuba_case( prodp, up, usize, vp, vsize, &ctx ); + mpihelp_release_karatsuba_ctx( &ctx ); return *prod_endp; } diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 5a80c9100..111b40fcb 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -1,13 +1,10 @@ # Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <[email protected]> -# Copyright (C) 2000 Free Software Foundation, Inc. # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. -# -# Note: Applied patch for non-gnu makes. PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -53,7 +50,6 @@ DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) POTFILES = \ -# this comment must stay to get around bug with AM_WITH_NLS and non-gnu make CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ @@ -124,7 +120,7 @@ install-data-yes: all cat=`basename $$cat`; \ case "$$cat" in \ *.gmo) destdir=$(gnulocaledir);; \ - *) destdir=$(localedir);; \ + *) destdir=$(localedir);; \ esac; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ dir=$$destdir/$$lang/LC_MESSAGES; \ @@ -236,8 +232,8 @@ POTFILES: POTFILES.in posrcprefix="../"; \ fi; \ rm -f $@-t $@ \ - && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ - -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/[email protected] \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/[email protected] \ | sed -e '$$s/\\$$//') > $@-t \ && chmod a-w $@-t \ && mv $@-t $@ ) @@ -3,7 +3,7 @@ # Walter Koch <[email protected]>, 1998. msgid "" msgstr "" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-12-11 16:54+0100\n" "Last-Translator: Walter Koch <[email protected]>\n" "Language-Team: German <[email protected]>\n" @@ -256,11 +256,16 @@ msgstr "... dies ist ein Bug (Programmfehler) (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "Sie haben eine Bug (Programmfehler) gefunden ... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "WARNUNG: Der Zufallsgenerator erzeugt keine echten Zufallszahlen!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -843,79 +848,79 @@ msgstr "" msgid "a notation value must not use any control characters\n" msgstr "Ein \"notation\"-Wert darf keine Kontrollzeichen verwenden\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "ASCII-H�lle: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "Ung�ltige ASCII-H�lle" -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "ASCII-H�lle: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "Ung�ltige Klartextsignatur-Einleitung\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "verschachtelte Klartextunterschriften\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "Ung�ltige mit Bindestrich \"escapte\" Zeile: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "Unerwartete ASCII-H�lle:" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "Ung�ltiges \"radix64\" Zeichen %02x ignoriert\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "vorzeitiges Dateiende (keine Pr�fsumme)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "vorzeitiges Dateiende (innerhalb der Pr�fsumme)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "Falsch aufgebaute Pr�fsumme\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "Pr�fsummenfehler; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "vorzeitiges Dateiende (im Nachsatz)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "Fehler in der Nachsatzzeile\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "Keine g�ltigen OpenPGP-Daten gefunden.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "ung�ltige ASCII-H�lle: Zeile ist l�nger als %d Zeichen\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" diff --git a/po/es_ES.po b/po/es_ES.po index 4f9182498..d659e5a57 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -7,7 +7,7 @@ # GPG version: 1.0.0 msgid "" msgstr "" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-10-27 06:35+0200\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Date: 1998-11-13 10:49:25+0100\n" @@ -265,12 +265,17 @@ msgstr "... esto es un bug (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "Ha encontrado Vd. un bug... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "" "ATENCI�N: �se est� usando un generador de n�meros aleatorios inseguro!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -851,79 +856,79 @@ msgstr "los puntos en una notaci�n deben estar rodeados por otros caracteres\n" msgid "a notation value must not use any control characters\n" msgstr "un valor de notaci�n no debe usar ning�n caracter de control\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "armadura: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "cabecera de armadura no v�lida: " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "cabecera de armadura: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "cabecera de firma clara no v�lida\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "firmas en texto claro anidadas\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "L�nea con guiones no v�lida: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "armadura inesperada" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "caracteres no v�lidos radix64 %02x ignorados\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "Fin de fichero prematuro\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "Fin de suma de comprobaci�n prematuro\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "Suma de comprobaci�n mal creada\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "Error en suma de comprobaci�n: %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "fin de fichero prematuro (en el cierre)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "error en la l�nea de cierre\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "no se han encontrados datos OpenPGP v�lidos\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "armadura incorrecta: l�nea m�s larga de %d caracteres\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg 1.0.1\n" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-10-06 21:43+0200\n" "Last-Translator: Ga�l Qu�ri <[email protected]>\n" "Language-Team: French <[email protected]>\n" @@ -260,12 +260,17 @@ msgstr "... c'est un bug (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "vous avez trouv� un bug ... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "" "ATTENTION : utilisation d'un g�n�rateur de nombres al�atoires peu s�r !!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -846,79 +851,79 @@ msgstr "" msgid "a notation value must not use any control characters\n" msgstr "une valeur de notation ne doit utiliser aucun caract�re de contr�le\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "armure : %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "en-t�te d'armure invalide : " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "en-t�te d'armure : " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "en-t�te de signature claire invalide\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "signatures en texte clair imbriqu�es\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "ligne de traits d'�chappement invalide : " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "armure inattendue :" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "caract�re %02x invalide en base 64 ignor�\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "fin de fichier pr�matur�e (pas de CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "fin de fichier pr�matur�e (dans le CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "CRC malform�\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "Erreur de CRC ; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "fin de fichier pr�matur�e (dans la remorque)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "erreur dans la ligne de remorque\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "aucune donn�e OpenPGP valide n'a �t� trouv�e.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "armure invalide : ligne plus longue que %d caract�res\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU Privacy Guard 1.0.0\n" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-09-17 15:21+07:00\n" "Last-Translator: Tedi Heriyanto <[email protected]>\n" "Language-Team: Indonesia <[email protected]>\n" @@ -256,11 +256,16 @@ msgstr "... kesalahan (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "anda menemukan kesalahan ...(%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "PERINGATAN: menggunakan random number generator yang tidak aman!!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -834,79 +839,79 @@ msgstr "titik dalam nama notasi harus diapit oleh karakter lain\n" msgid "a notation value must not use any control characters\n" msgstr "nilai notasi tidak boleh menggunakan karakter kendali\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "armor: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "header armor tidak valid: " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "header armor: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "header clearsig tidak valid\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "signature teks bersarang\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "dash escaped line tidak valid: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "armor tidak terduga:" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "karakter radix64 tidak valid %02x dilewati\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "eof prematur (tanpa CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "eof prematur (dalam CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "CRC tidak tepat\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "kesalahan CRC; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "eof prematur (dalam Trailer)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "kesalahan dalam garis trailer\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "tidak ditemukan data OpenPGP yang valid.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "armor tidak valid: baris melebihi %d karakter\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-1.0.0h\n" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-12-08 15:51+02:00\n" "Last-Translator: Marco d'Itri <[email protected]>\n" "Language-Team: Italian <[email protected]>\n" @@ -256,12 +256,17 @@ msgstr "... questo � un bug (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "Hai trovato un bug... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "" "ATTENZIONE: si sta usando un generatore di numeri casuali non sicuro!!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -839,79 +844,79 @@ msgstr "nel nome di una nota i punti devono avere altri caratteri intorno\n" msgid "a notation value must not use any control characters\n" msgstr "il valore di una nota non deve usare caratteri di controllo\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "armatura: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "header dell'armatura non valido: " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "header dell'armatura: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "header della firma in chiaro non valido\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "firme in chiaro annidate\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "riga protetta con il trattino non valida: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "armatura inaspettata:" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "Carattere radix64 non valido %02x saltato\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "eof prematura (nessun CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "eof prematura (nel CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "CRC malformato\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "errore nel CRC; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "eof prematura (nella coda)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "errore nella riga della coda\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "Non sono stati trovati dati OpenPGP validi.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "armatura non valida: linea pi� lunga di %d caratteri\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg-1.0.0\n" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-10-02 21:35+02:00\n" "Last-Translator: Janusz A. Urbanowicz <[email protected]>\n" "Language-Team: Polish <[email protected]>\n" @@ -266,13 +266,18 @@ msgstr "... to jest b��d w programie (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "znalaz�e�(a�) b��d w programie ... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "" "OSTRZE�ENIE: u�ywany generator liczb losowych\n" "nie jest kryptograficznie bezpieczny!!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -848,79 +853,79 @@ msgstr "kropki w adnotacji musz� znajdowa� si� pomi�dzy innymi znakami\n" msgid "a notation value must not use any control characters\n" msgstr "warto�� adnotacji nie mo�e zawiera� znak�w steruj�cych\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "opakowanie: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "niepoprawny nag��wek opakowania: " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "nag��wek opakowania: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "niew�a�ciwy nag��wek czytelnego podpisanego dokumentu\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "zagnie�d�one podpisy na czytelnym dokumencie\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "niepoprawne oznaczenie linii minusami: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "nieoczekiwane opakowanie:" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "niew�a�ciwy znak formatu radix64 %02x zosta� pomini�ty\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "przewczesny koniec pliku (brak CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "przedwczesny koniec pliku (w CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "b��d formatu CRC\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "B��d sumy CRC; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "przedwczesny koniec pliku (w zako�czeniu)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "b��d w linii ko�cz�cej\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "nie odnaleziono poprawnych danych w formacie OpenPGP.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "b��d opakowania: linia d�u�sza ni� %d znak�w\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" diff --git a/po/pt_BR.po b/po/pt_BR.po index 180d9516a..7847ef4e6 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Date: 1998-11-20 23:46:36-0200\n" "From: Thiago Jung Bauermann <[email protected]>\n" @@ -261,11 +261,16 @@ msgstr "... isto � um bug (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "voc� encontrou um bug ... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "AVISO: usando gerador de n�meros aleat�rios inseguro!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -865,79 +870,79 @@ msgstr "" msgid "a notation value must not use any control characters\n" msgstr "um valor de nota��o n�o deve usar caracteres de controle\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "armadura: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "cabe�alho de armadura inv�lido: " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "cabe�alho de armadura: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "cabe�alho de assinatura em texto puro inv�lido\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "assinaturas em texto puro aninhadas\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "linha com h�fen inv�lida: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "armadura inesperada:" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "caractere radix64 inv�lido %02x ignorado\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "fim de arquivo prematuro (sem CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "fim de arquivo prematuro (no CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "CRC malformado\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "erro de CRC; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "fim de arquivo prematuro (no \"Trailer\")\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "erro na linha \"trailer\"\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "nenhum dado OpenPGP v�lido encontrado.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "armadura inv�lida: linha maior que %d caracteres\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" diff --git a/po/pt_PT.po b/po/pt_PT.po index cabb9cc5a..acb2cd515 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnupg\n" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "PO-Revision-Date: 1999-09-09 20:28+0000\n" "Last-Translator: Pedro Morais <[email protected]>\n" "Language-Team: pt\n" @@ -258,11 +258,16 @@ msgstr "... isto � um bug (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "voc� encontrou um bug ... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 msgid "WARNING: using insecure random number generator!!\n" msgstr "AVISO: a utilizar gerador de n�meros aleat�rios inseguro!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -857,79 +862,79 @@ msgstr "" msgid "a notation value must not use any control characters\n" msgstr "um valor de nota��o n�o deve usar caracteres de controle\n" -#: g10/armor.c:301 +#: g10/armor.c:302 #, c-format msgid "armor: %s\n" msgstr "armadura: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "cabe�alho de armadura inv�lido: " -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "cabe�alho de armadura: " -#: g10/armor.c:348 +#: g10/armor.c:349 msgid "invalid clearsig header\n" msgstr "cabe�alho de assinatura em texto puro inv�lido\n" -#: g10/armor.c:400 +#: g10/armor.c:401 msgid "nested clear text signatures\n" msgstr "assinaturas em texto puro aninhadas\n" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "linha com h�fen inv�lida: " -#: g10/armor.c:536 +#: g10/armor.c:537 msgid "unexpected armor:" msgstr "armadura inesperada:" -#: g10/armor.c:653 +#: g10/armor.c:654 #, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "caracter radix64 inv�lido %02x ignorado\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "fim de ficheiro prematuro (sem CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "fim de ficheiro prematuro (no CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "CRC malformado\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "erro de CRC; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "fim de ficheiro prematuro (no \"Trailer\")\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "erro na linha \"trailer\"\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 msgid "no valid OpenPGP data found.\n" msgstr "nenhum dado OpenPGP v�lido encontrado.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "armadura inv�lida: linha maior que %d caracteres\n" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" @@ -9,7 +9,7 @@ # QingLong <qinglong@Bolizm> (couldn't send an email to let you know) msgid "" msgstr "" -"POT-Creation-Date: 2000-01-06 08:44+0100\n" +"POT-Creation-Date: 2000-01-11 13:43+0100\n" "Content-Type: text/plain; charset=\n" "Date: 1998-01-26 22:08:36+0100\n" "From: Gregory Steuck <[email protected]>\n" @@ -313,12 +313,17 @@ msgstr "��-�� ... ������ � ��������� (%s:%d:%s)\n" msgid "you found a bug ... (%s:%d)\n" msgstr "�� ����� ������ � ��������� ... (%s:%d)\n" -#: cipher/random.c:458 +#: cipher/random.c:274 +#, c-format +msgid "too many random bits requested; the limit is %d\n" +msgstr "" + +#: cipher/random.c:460 #, fuzzy msgid "WARNING: using insecure random number generator!!\n" msgstr "��������: ������������ ���������� ��������� ��������� �����!\n" -#: cipher/random.c:459 +#: cipher/random.c:461 msgid "" "The random number generator is only a kludge to let\n" "it run - it is in no way a strong RNG!\n" @@ -916,83 +921,83 @@ msgstr "" msgid "a notation value must not use any control characters\n" msgstr "" -#: g10/armor.c:301 +#: g10/armor.c:302 #, fuzzy, c-format msgid "armor: %s\n" msgstr "���������: %s\n" -#: g10/armor.c:330 +#: g10/armor.c:331 msgid "invalid armor header: " msgstr "" -#: g10/armor.c:337 +#: g10/armor.c:338 msgid "armor header: " msgstr "" -#: g10/armor.c:348 +#: g10/armor.c:349 #, fuzzy msgid "invalid clearsig header\n" msgstr "������������ ������ ��������� �������\n" -#: g10/armor.c:400 +#: g10/armor.c:401 #, fuzzy msgid "nested clear text signatures\n" msgstr "|[����]|������� ��������� �������" -#: g10/armor.c:524 +#: g10/armor.c:525 msgid "invalid dash escaped line: " msgstr "������������ ������ ������������ � �������: " -#: g10/armor.c:536 +#: g10/armor.c:537 #, fuzzy msgid "unexpected armor:" msgstr "����������� ������" -#: g10/armor.c:653 +#: g10/armor.c:654 #, fuzzy, c-format msgid "invalid radix64 character %02x skipped\n" msgstr "������������ ��� ��������� radix64 ������ %02x ��������\n" -#: g10/armor.c:696 +#: g10/armor.c:697 msgid "premature eof (no CRC)\n" msgstr "����������� ����� ����� (��� CRC)\n" -#: g10/armor.c:730 +#: g10/armor.c:731 msgid "premature eof (in CRC)\n" msgstr "����������� ����� ����� (� CRC)\n" -#: g10/armor.c:734 +#: g10/armor.c:735 msgid "malformed CRC\n" msgstr "������������ ����� CRC\n" -#: g10/armor.c:738 +#: g10/armor.c:739 #, c-format msgid "CRC error; %06lx - %06lx\n" msgstr "������ CRC; %06lx - %06lx\n" -#: g10/armor.c:755 +#: g10/armor.c:756 msgid "premature eof (in Trailer)\n" msgstr "����������� ����� ����� (� ������)\n" -#: g10/armor.c:759 +#: g10/armor.c:760 msgid "error in trailer line\n" msgstr "������ � ����������� ������\n" -#: g10/armor.c:911 +#: g10/armor.c:912 msgid "For info see http://www.gnupg.org" msgstr "" -#: g10/armor.c:1032 +#: g10/armor.c:1033 #, fuzzy msgid "no valid OpenPGP data found.\n" msgstr "�� ������� ���������� RFC1991 ��� OpenPGP ������.\n" -#: g10/armor.c:1037 +#: g10/armor.c:1038 #, c-format msgid "invalid armor: line longer than %d characters\n" msgstr "" -#: g10/armor.c:1041 +#: g10/armor.c:1042 msgid "" "quoted printable character in armor - probably a buggy MTA has been used\n" msgstr "" |