1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-17 15:44:34 +02:00

See ChangeLog: Thu Jan 13 19:31:58 CET 2000 Werner Koch

This commit is contained in:
Werner Koch 2000-01-13 18:27:50 +00:00
parent f1a2395f08
commit e8164f20ab
32 changed files with 524 additions and 400 deletions

View File

@ -1,3 +1,8 @@
Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
* 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 <wk@gnupg.de> Thu Dec 16 10:07:58 CET 1999 Werner Koch <wk@gnupg.de>
* VERSION: Set to 1.0.1. * VERSION: Set to 1.0.1.

7
NEWS
View File

@ -1,6 +1,13 @@
* Some fixes for the W32 version * 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) Noteworthy changes in version 1.0.1 (1999-12-16)
----------------------------------- -----------------------------------

3
THANKS
View File

@ -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 code. Here is a list of those people. Help me keep it complete and free of
errors. errors.
Alec Habig habig@budoe2.bu.edu
Allan Clark allanc@sco.com Allan Clark allanc@sco.com
Anand Kumria wildfire@progsoc.uts.edu.au Anand Kumria wildfire@progsoc.uts.edu.au
Ariel T Glenn ariel@columbia.edu Ariel T Glenn ariel@columbia.edu
@ -19,7 +20,9 @@ Christopher Oliver oliver@fritz.traverse.net
Christian Recktenwald chris@citecs.de Christian Recktenwald chris@citecs.de
Daniel Eisenbud eisenbud@cs.swarthmore.edu Daniel Eisenbud eisenbud@cs.swarthmore.edu
Daniel Koening dan@mail.isis.de Daniel Koening dan@mail.isis.de
Dave Dykstra dwd@bell-labs.com
David Ellement ellement@sdd.hp.com David Ellement ellement@sdd.hp.com
David Hallinan hallinan@rtd.com
Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de
Dirk Lattermann dlatt@t-online.de Dirk Lattermann dlatt@t-online.de
Ed Boraas ecxjo@esperanto.org Ed Boraas ecxjo@esperanto.org

4
TODO
View File

@ -6,6 +6,10 @@
* Add reason for revocation which is going to be a SHOULD * 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 Scheduled for 1.1
----------------- -----------------
* With option -i prompt before adding a key to the keyring and show some * With option -i prompt before adding a key to the keyring and show some

View File

@ -1 +1 @@
1.0.1b 1.0.1c

View File

@ -1,3 +1,8 @@
Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
* 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 (wk@gnupg.org) Tue Oct 26 20:02:23 1999 Werner Koch (wk@gnupg.org)
* Makefile.am (GPG_DEARMOR): New and use --no-options. * Makefile.am (GPG_DEARMOR): New and use --no-options.

View File

@ -48,9 +48,6 @@ info () {
echo "$pgmname:" $* >&2 echo "$pgmname:" $* >&2
} }
chdir () {
cd $1 || fatal "cannot cd to $1"
}
echo_n_init=no echo_n_init=no
echo_n () { echo_n () {

View File

@ -1,3 +1,15 @@
Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
* 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 <wk@gnupg.de> Sat Dec 4 12:30:28 CET 1999 Werner Koch <wk@gnupg.de>
* primegen.c (generate_elg_prime): All primes are now generated with * primegen.c (generate_elg_prime): All primes are now generated with

View File

@ -67,7 +67,7 @@ libcipher_a_LIBADD = @STATIC_CIPHER_OBJS@
tiger: $(srcdir)/tiger.c tiger: $(srcdir)/tiger.c
`echo $(COMPILE) $(DYNLINK_MOD_CFLAGS) -o 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 tiger.o: $(srcdir)/tiger.c
`echo $(COMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' ` `echo $(COMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' `

View File

@ -1,5 +1,5 @@
/* elgamal.c - ElGamal Public Key encryption /* 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: * For a description of the algorithm, see:
* Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996. * Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996.
@ -62,6 +62,45 @@ progress( int c )
fputc( c, stderr ); 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 static void
test_keys( ELG_secret_key *sk, unsigned nbits ) test_keys( ELG_secret_key *sk, unsigned nbits )
@ -108,38 +147,45 @@ gen_k( MPI p )
MPI k = mpi_alloc_secure( 0 ); MPI k = mpi_alloc_secure( 0 );
MPI temp = mpi_alloc( mpi_get_nlimbs(p) ); MPI temp = mpi_alloc( mpi_get_nlimbs(p) );
MPI p_1 = mpi_copy(p); MPI p_1 = mpi_copy(p);
unsigned int nbits = mpi_get_nbits(p); unsigned int orig_nbits = mpi_get_nbits(p);
unsigned int nbytes = (nbits+7)/8; unsigned int nbits;
unsigned int nbytes;
char *rndbuf = NULL; 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 ) 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); mpi_sub_ui( p_1, p, 1);
for(;;) { for(;;) {
if( DBG_CIPHER )
progress('.');
if( !rndbuf || nbits < 32 ) { if( !rndbuf || nbits < 32 ) {
m_free(rndbuf); m_free(rndbuf);
rndbuf = get_random_bits( nbits, 1, 1 ); rndbuf = get_random_bits( nbits, 1, 1 );
} }
else { /* change only some of the higher bits */ 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 * 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 ); char *pp = get_random_bits( 32, 1, 1 );
memcpy( rndbuf,pp, 4 ); memcpy( rndbuf,pp, 4 );
m_free(pp); m_free(pp);
log_debug("gen_k: tsss, never expected to reach this\n");
} }
mpi_set_buffer( k, rndbuf, nbytes, 0 ); mpi_set_buffer( k, rndbuf, nbytes, 0 );
for(;;) { for(;;) {
/* make sure that the number is of the exact lenght */ /* Hmm, actually we don't need this step here
if( mpi_test_bit( k, nbits-1 ) ) * because we use k much smaller than p - we do it anyway
mpi_set_highbit( k, nbits-1 ); * just in case the keep on adding a one to k ;) */
else {
mpi_set_highbit( k, nbits-1 );
mpi_clear_bit( k, nbits-1 );
}
if( !(mpi_cmp( k, p_1 ) < 0) ) { /* check: k < (p-1) */ if( !(mpi_cmp( k, p_1 ) < 0) ) { /* check: k < (p-1) */
if( DBG_CIPHER ) if( DBG_CIPHER )
progress('+'); progress('+');
@ -153,6 +199,8 @@ gen_k( MPI p )
if( mpi_gcd( temp, k, p_1 ) ) if( mpi_gcd( temp, k, p_1 ) )
goto found; /* okay, k is relatively prime to (p-1) */ goto found; /* okay, k is relatively prime to (p-1) */
mpi_add_ui( k, k, 1 ); mpi_add_ui( k, k, 1 );
if( DBG_CIPHER )
progress('.');
} }
} }
found: found:
@ -171,7 +219,7 @@ gen_k( MPI p )
* and an array with n-1 factors of (p-1) * and an array with n-1 factors of (p-1)
*/ */
static void 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; /* the prime */
MPI p_min1; MPI p_min1;
@ -179,19 +227,15 @@ generate( ELG_secret_key *sk, unsigned nbits, MPI **ret_factors )
MPI x; /* the secret exponent */ MPI x; /* the secret exponent */
MPI y; MPI y;
MPI temp; MPI temp;
unsigned qbits; unsigned int qbits;
unsigned int xbits;
byte *rndbuf; byte *rndbuf;
p_min1 = mpi_alloc( (nbits+BITS_PER_MPI_LIMB-1)/BITS_PER_MPI_LIMB ); 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 ); temp = mpi_alloc( (nbits+BITS_PER_MPI_LIMB-1)/BITS_PER_MPI_LIMB );
if( nbits < 512 ) qbits = wiener_map( nbits );
qbits = 120; if( qbits & 1 ) /* better have a even one */
else if( nbits <= 1024 ) qbits++;
qbits = 160;
else if( nbits <= 2048 )
qbits = 200;
else
qbits = 240;
g = mpi_alloc(1); g = mpi_alloc(1);
p = generate_elg_prime( 0, nbits, qbits, g, ret_factors ); p = generate_elg_prime( 0, nbits, qbits, g, ret_factors );
mpi_sub_ui(p_min1, p, 1); 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 * This must be a very good random number because this is the
* secret part. The prime is public and may be shared anyway, * secret part. The prime is public and may be shared anyway,
* so a random generator level of 1 is used for the prime. * 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 ) if( DBG_CIPHER )
log_debug("choosing a random x "); log_debug("choosing a random x of size %u", xbits );
rndbuf = NULL; rndbuf = NULL;
do { do {
if( DBG_CIPHER ) if( DBG_CIPHER )
progress('.'); progress('.');
if( rndbuf ) { /* change only some of the higher bits */ if( rndbuf ) { /* change only some of the higher bits */
if( nbits < 16 ) {/* should never happen ... */ if( xbits < 16 ) {/* should never happen ... */
m_free(rndbuf); m_free(rndbuf);
rndbuf = get_random_bits( nbits, 2, 1 ); rndbuf = get_random_bits( xbits, 2, 1 );
} }
else { else {
char *r = get_random_bits( 16, 2, 1 ); char *r = get_random_bits( 16, 2, 1 );
@ -222,9 +274,9 @@ generate( ELG_secret_key *sk, unsigned nbits, MPI **ret_factors )
} }
} }
else else
rndbuf = get_random_bits( nbits, 2, 1 ); rndbuf = get_random_bits( xbits, 2, 1 );
mpi_set_buffer( x, rndbuf, (nbits+7)/8, 0 ); mpi_set_buffer( x, rndbuf, (xbits+7)/8, 0 );
mpi_clear_highbit( x, nbits+1 ); mpi_clear_highbit( x, xbits+1 );
} while( !( mpi_cmp_ui( x, 0 )>0 && mpi_cmp( x, p_min1 )<0 ) ); } while( !( mpi_cmp_ui( x, 0 )>0 && mpi_cmp( x, p_min1 )<0 ) );
m_free(rndbuf); 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 ) ); MPI t1 = mpi_alloc_secure( mpi_get_nlimbs( skey->p ) );
/* output = b/(a^x) mod p */ /* output = b/(a^x) mod p */
mpi_powm( t1, a, skey->x, skey->p ); mpi_powm( t1, a, skey->x, skey->p );
mpi_invm( t1, t1, skey->p ); mpi_invm( t1, t1, skey->p );
mpi_mulm( output, b, t1, skey->p ); mpi_mulm( output, b, t1, skey->p );

View File

@ -270,8 +270,10 @@ read_pool( byte *buffer, size_t length, int level )
int i; int i;
ulong *sp, *dp; ulong *sp, *dp;
if( length >= POOLSIZE ) if( length >= POOLSIZE ) {
BUG(); /* not allowed */ 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 */ /* for level 2 make sure that there is enough random in the pool */
if( level == 2 && pool_balance < length ) { if( level == 2 && pool_balance < length ) {

View File

@ -653,7 +653,7 @@ AC_SUBST(ZLIBS)
changequote(,)dnl changequote(,)dnl
tmp_pat='[a-zA-Z]' tmp_pat='[a-zA-Z]'
changequote([,])dnl 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) AC_DEFINE(IS_DEVELOPMENT_VERSION)
fi fi

View File

@ -1,3 +1,10 @@
Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
* armor.c (is_armored): Check for 1-pass-sig packets. Reported by
David Hallinan <hallinan@rtd.com>.
(armor_filter): Replaced one LF by the LF macro. Reported by
Wolfgang Redtenbacher.
Wed Jan 5 11:51:17 CET 2000 Werner Koch <wk@gnupg.de> Wed Jan 5 11:51:17 CET 2000 Werner Koch <wk@gnupg.de>
* g10.c (main): Reset new global flag opt.pgp2_workarounds * g10.c (main): Reset new global flag opt.pgp2_workarounds

View File

@ -167,6 +167,7 @@ is_armored( const byte *buf )
switch( pkttype ) { switch( pkttype ) {
case PKT_MARKER: case PKT_MARKER:
case PKT_SYMKEY_ENC: case PKT_SYMKEY_ENC:
case PKT_ONEPASS_SIG:
case PKT_PUBLIC_KEY: case PKT_PUBLIC_KEY:
case PKT_SECRET_KEY: case PKT_SECRET_KEY:
case PKT_PUBKEY_ENC: case PKT_PUBKEY_ENC:
@ -1020,7 +1021,7 @@ armor_filter( void *opaque, int control,
iobuf_put(a, c); iobuf_put(a, c);
c = bintoasc[radbuf[2]&077]; c = bintoasc[radbuf[2]&077];
iobuf_put(a, c); iobuf_put(a, c);
iobuf_put(a, '\n'); iobuf_writestr(a, LF );
/* and the the trailer */ /* and the the trailer */
if( afx->what >= DIM(tail_strings) ) if( afx->what >= DIM(tail_strings) )
log_bug("afx->what=%d", afx->what); log_bug("afx->what=%d", afx->what);

View File

@ -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 /* the next test is really bad because we should modify
* out modification timestamps only if we really have a change. * 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 */ * difficult to track those changes. fixme */
if( !( u->r.uid.uidflags & UIDF_VALID ) if( !( u->r.uid.uidflags & UIDF_VALID )
|| ( u->r.uid.uidflags & UIDF_REVOKED ) ) || ( 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 ) { if( namehash && tree->n.k.validity != TRUST_ULTIMATE ) {
/* find the matching user id. /* find the matching user id.
* We don't do this here if the key is ultimately trusted; in * 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 * this case there will be no lids for the user IDs and frankly
* it doe not make sense to compare by the name if we do * it does not make sense to compare by the name if we do
* have the secret key. * have the secret key.
* fixme: the way we handle this is too inefficient */ * fixme: the way we handle this is too inefficient */
TN ur; TN ur;

View File

@ -1,3 +1,8 @@
Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
* 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 <wk@gnupg.de> Sat Dec 4 12:30:28 CET 1999 Werner Koch <wk@gnupg.de>
* iobuf.h (IOBUFCTRL_CANCEL): Nww. * iobuf.h (IOBUFCTRL_CANCEL): Nww.

View File

@ -83,6 +83,11 @@
#define HAVE_U32_TYPEDEF #define HAVE_U32_TYPEDEF
#endif #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 #ifndef HAVE_U64_TYPEDEF
#undef u64 /* maybe there is a macro with this name */ #undef u64 /* maybe there is a macro with this name */
#if SIZEOF_UNSIGNED_INT == 8 #if SIZEOF_UNSIGNED_INT == 8
@ -91,7 +96,7 @@
#elif SIZEOF_UNSIGNED_LONG == 8 #elif SIZEOF_UNSIGNED_LONG == 8
typedef unsigned long u64; typedef unsigned long u64;
#define HAVE_U64_TYPEDEF #define HAVE_U64_TYPEDEF
#elif __GNUC__ >= 2 || defined(__SUNPRO_C) #elif __GNUC__ >= 2 || defined(__SUNPRO_C) || defined(_LONGLONG)
typedef unsigned long long u64; typedef unsigned long long u64;
#define HAVE_U64_TYPEDEF #define HAVE_U64_TYPEDEF
#endif #endif

View File

@ -1,3 +1,15 @@
Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
* 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 <wk@gnupg.de> Sun Dec 19 15:22:26 CET 1999 Werner Koch <wk@gnupg.de>
* power/ : Converted more comments to C comments because some AS * power/ : Converted more comments to C comments because some AS

View File

@ -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 ); int mpihelp_cmp( mpi_ptr_t op1_ptr, mpi_ptr_t op2_ptr, mpi_size_t size );
/*-- mpihelp-mul.c --*/ /*-- 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_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_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, 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, void mpih_sqr_n( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t size,
mpi_ptr_t tspace); 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) --*/ /*-- 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_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); mpi_size_t s1_size, mpi_limb_t s2_limb);

View File

@ -1,5 +1,5 @@
/* mpi-mpow.c - MPI functions /* 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. * This file is part of GnuPG.
* *
@ -25,22 +25,6 @@
#include "longlong.h" #include "longlong.h"
#include <assert.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 static int
build_index( MPI *exparray, int k, int i, int t ) 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 ) ) if( mpi_test_bit( exparray[j], bitno ) )
index |= 1; index |= 1;
} }
/*log_debug("t=%d i=%d index=%d\n", t, i, index );*/
return index; return index;
} }
@ -68,35 +51,25 @@ mpi_mulpowm( MPI res, MPI *basearray, MPI *exparray, MPI m)
int i, j, idx; int i, j, idx;
MPI *G; /* table with precomputed values of size 2^k */ MPI *G; /* table with precomputed values of size 2^k */
MPI tmp; MPI tmp;
#ifdef USE_BARRETT
MPI barrett_y, barrett_r1, barrett_r2;
int barrett_k;
#endif
for(k=0; basearray[k]; k++ ) for(k=0; basearray[k]; k++ )
; ;
assert(k); assert(k);
for(t=0, i=0; (tmp=exparray[i]); i++ ) { for(t=0, i=0; (tmp=exparray[i]); i++ ) {
/*log_mpidump("exp: ", tmp );*/
j = mpi_get_nbits(tmp); j = mpi_get_nbits(tmp);
if( j > t ) if( j > t )
t = j; t = j;
} }
/*log_mpidump("mod: ", m );*/
assert(i==k); assert(i==k);
assert(t); assert(t);
assert( k < 10 ); assert( k < 10 );
G = m_alloc_clear( (1<<k) * sizeof *G ); 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 */ /* and calculate */
tmp = mpi_alloc( mpi_get_nlimbs(m)+1 ); tmp = mpi_alloc( mpi_get_nlimbs(m)+1 );
mpi_set_ui( res, 1 ); mpi_set_ui( res, 1 );
for(i = 1; i <= t; i++ ) { for(i = 1; i <= t; i++ ) {
barrett_mulm(tmp, res, res, m, barrett_y, barrett_k, mpi_mulm(tmp, res, res, m );
barrett_r1, barrett_r2 );
idx = build_index( exparray, k, i, t ); idx = build_index( exparray, k, i, t );
assert( idx >= 0 && idx < (1<<k) ); assert( idx >= 0 && idx < (1<<k) );
if( !G[idx] ) { if( !G[idx] ) {
@ -108,115 +81,21 @@ mpi_mulpowm( MPI res, MPI *basearray, MPI *exparray, MPI m)
if( !G[idx] ) if( !G[idx] )
G[idx] = mpi_copy( basearray[j] ); G[idx] = mpi_copy( basearray[j] );
else else
barrett_mulm( G[idx], G[idx], basearray[j], mpi_mulm( G[idx], G[idx], basearray[j], m );
m, barrett_y, barrett_k, barrett_r1, barrett_r2 );
} }
} }
if( !G[idx] ) if( !G[idx] )
G[idx] = mpi_alloc(0); 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 */ /* cleanup */
mpi_free(tmp); 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++ ) for(i=0; i < (1<<k); i++ )
mpi_free(G[i]); mpi_free(G[i]);
m_free(G); 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 */

View File

@ -1,6 +1,6 @@
/* mpi-pow.c - MPI functions /* mpi-pow.c - MPI functions
* Copyright (C) 1998 Free Software Foundation, Inc. * 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. * This file is part of GnuPG.
* *
@ -30,6 +30,7 @@
#include <config.h> #include <config.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include "mpi-internal.h" #include "mpi-internal.h"
#include "longlong.h" #include "longlong.h"
#include <assert.h> #include <assert.h>
@ -159,7 +160,9 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod)
int c; int c;
mpi_limb_t e; mpi_limb_t e;
mpi_limb_t carry_limb; mpi_limb_t carry_limb;
struct karatsuba_ctx karactx;
memset( &karactx, 0, sizeof karactx );
negative_result = (ep[0] & 1) && base->sign; negative_result = (ep[0] & 1) && base->sign;
i = esize - 1; 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 * by RP (==RES->d), and with 50% probability in the area originally
* pointed to by XP. * pointed to by XP.
*/ */
for(;;) { for(;;) {
while( c ) { while( c ) {
mpi_ptr_t tp; mpi_ptr_t tp;
@ -194,7 +198,6 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod)
mpi_free_limb_space( tspace ); mpi_free_limb_space( tspace );
tsize = 2 * rsize; tsize = 2 * rsize;
tspace = mpi_alloc_limb_space( tsize, 0 ); tspace = mpi_alloc_limb_space( tsize, 0 );
} }
mpih_sqr_n( xp, rp, rsize, tspace ); mpih_sqr_n( xp, rp, rsize, tspace );
} }
@ -209,7 +212,15 @@ mpi_powm( MPI res, MPI base, MPI exp, MPI mod)
rsize = xsize; rsize = xsize;
if( (mpi_limb_signed_t)e < 0 ) { if( (mpi_limb_signed_t)e < 0 ) {
/*mpihelp_mul( xp, rp, rsize, bp, bsize );*/
if( bsize < KARATSUBA_THRESHOLD ) {
mpihelp_mul( xp, rp, rsize, bp, bsize ); mpihelp_mul( xp, rp, rsize, bp, bsize );
}
else {
mpihelp_mul_karatsuba_case(
xp, rp, rsize, bp, bsize, &karactx );
}
xsize = rsize + bsize; xsize = rsize + bsize;
if( xsize > msize ) { if( xsize > msize ) {
mpihelp_divrem(xp + msize, 0, xp, xsize, mp, 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 ) if( mod_shift_cnt )
mpihelp_rshift( rp, rp, rsize, mod_shift_cnt); mpihelp_rshift( rp, rp, rsize, mod_shift_cnt);
MPN_NORMALIZE (rp, rsize); MPN_NORMALIZE (rp, rsize);
mpihelp_release_karatsuba_ctx( &karactx );
} }
if( negative_result && rsize ) { if( negative_result && rsize ) {

View File

@ -1,5 +1,5 @@
/* mpihelp-mul.c - MPI helper functions /* 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. * This file is part of GnuPG.
* *
@ -29,6 +29,7 @@
#include <config.h> #include <config.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include "mpi-internal.h" #include "mpi-internal.h"
#include "longlong.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) /* 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 * 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 * 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_ptr_t prod_endp = prodp + usize + vsize - 1;
mpi_limb_t cy; mpi_limb_t cy;
mpi_ptr_t tspace; struct karatsuba_ctx ctx;
if( vsize < KARATSUBA_THRESHOLD ) { if( vsize < KARATSUBA_THRESHOLD ) {
mpi_size_t i; mpi_size_t i;
@ -437,34 +520,9 @@ mpihelp_mul( mpi_ptr_t prodp, mpi_ptr_t up, mpi_size_t usize,
return cy; return cy;
} }
tspace = mpi_alloc_limb_space( 2 * vsize, memset( &ctx, 0, sizeof ctx );
m_is_secure( up ) || m_is_secure( vp ) ); mpihelp_mul_karatsuba_case( prodp, up, usize, vp, vsize, &ctx );
MPN_MUL_N_RECURSE( prodp, up, vp, vsize, tspace ); mpihelp_release_karatsuba_ctx( &ctx );
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 );
return *prod_endp; return *prod_endp;
} }

View File

@ -1,13 +1,10 @@
# Makefile for program source directory in GNU NLS utilities package. # Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu> # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
# Copyright (C) 2000 Free Software Foundation, Inc.
# #
# This file file be copied and used freely without restrictions. It can # 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 # 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. # but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available. # Please note that the actual code is *not* freely available.
#
# Note: Applied patch for non-gnu makes.
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
VERSION = @VERSION@ VERSION = @VERSION@
@ -53,7 +50,6 @@ DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \ POTFILES = \
# this comment must stay to get around bug with AM_WITH_NLS and non-gnu make
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@ CATOBJEXT = @CATOBJEXT@

View File

@ -3,7 +3,7 @@
# Walter Koch <koch@hsp.de>, 1998. # Walter Koch <koch@hsp.de>, 1998.
msgid "" msgid ""
msgstr "" 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" "PO-Revision-Date: 1999-12-11 16:54+0100\n"
"Last-Translator: Walter Koch <koch@hsp.de>\n" "Last-Translator: Walter Koch <koch@hsp.de>\n"
"Language-Team: German <de@li.org>\n" "Language-Team: German <de@li.org>\n"
@ -256,11 +256,16 @@ msgstr "... dies ist ein Bug (Programmfehler) (%s:%d:%s)\n"
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "Sie haben eine Bug (Programmfehler) gefunden ... (%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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "WARNUNG: Der Zufallsgenerator erzeugt keine echten Zufallszahlen!\n" msgstr "WARNUNG: Der Zufallsgenerator erzeugt keine echten Zufallszahlen!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" msgid "a notation value must not use any control characters\n"
msgstr "Ein \"notation\"-Wert darf keine Kontrollzeichen verwenden\n" msgstr "Ein \"notation\"-Wert darf keine Kontrollzeichen verwenden\n"
#: g10/armor.c:301 #: g10/armor.c:302
#, c-format #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "ASCII-Hülle: %s\n" msgstr "ASCII-Hülle: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "Ungültige ASCII-Hülle" msgstr "Ungültige ASCII-Hülle"
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "ASCII-Hülle: " msgstr "ASCII-Hülle: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "Ungültige Klartextsignatur-Einleitung\n" msgstr "Ungültige Klartextsignatur-Einleitung\n"
#: g10/armor.c:400 #: g10/armor.c:401
msgid "nested clear text signatures\n" msgid "nested clear text signatures\n"
msgstr "verschachtelte Klartextunterschriften\n" msgstr "verschachtelte Klartextunterschriften\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "Ungültige mit Bindestrich \"escapte\" Zeile: " msgstr "Ungültige mit Bindestrich \"escapte\" Zeile: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "Unerwartete ASCII-Hülle:" msgstr "Unerwartete ASCII-Hülle:"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "Ungültiges \"radix64\" Zeichen %02x ignoriert\n" msgstr "Ungültiges \"radix64\" Zeichen %02x ignoriert\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "vorzeitiges Dateiende (keine Prüfsumme)\n" msgstr "vorzeitiges Dateiende (keine Prüfsumme)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "vorzeitiges Dateiende (innerhalb der Prüfsumme)\n" msgstr "vorzeitiges Dateiende (innerhalb der Prüfsumme)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "Falsch aufgebaute Prüfsumme\n" msgstr "Falsch aufgebaute Prüfsumme\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "Prüfsummenfehler; %06lx - %06lx\n" msgstr "Prüfsummenfehler; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "vorzeitiges Dateiende (im Nachsatz)\n" msgstr "vorzeitiges Dateiende (im Nachsatz)\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "Fehler in der Nachsatzzeile\n" msgstr "Fehler in der Nachsatzzeile\n"
#: g10/armor.c:911 #: g10/armor.c:912
msgid "For info see http://www.gnupg.org" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "Keine gültigen OpenPGP-Daten gefunden.\n" msgstr "Keine gültigen OpenPGP-Daten gefunden.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "ungültige ASCII-Hülle: Zeile ist länger als %d Zeichen\n" msgstr "ungültige ASCII-Hülle: Zeile ist länger als %d Zeichen\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@
# GPG version: 1.0.0 # GPG version: 1.0.0
msgid "" msgid ""
msgstr "" 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" "PO-Revision-Date: 1999-10-27 06:35+0200\n"
"Content-Type: text/plain; charset=iso-8859-1\n" "Content-Type: text/plain; charset=iso-8859-1\n"
"Date: 1998-11-13 10:49:25+0100\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" msgid "you found a bug ... (%s:%d)\n"
msgstr "Ha encontrado Vd. un 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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "" msgstr ""
"ATENCIÓN: ¡se está usando un generador de números aleatorios inseguro!\n" "ATENCIÓN: ¡se está usando un generador de números aleatorios inseguro!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\n" "it run - it is in no way a strong RNG!\n"
@ -851,79 +856,79 @@ msgstr "los puntos en una notaci
msgid "a notation value must not use any control characters\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" 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 #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "armadura: %s\n" msgstr "armadura: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "cabecera de armadura no válida: " msgstr "cabecera de armadura no válida: "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "cabecera de armadura: " msgstr "cabecera de armadura: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "cabecera de firma clara no válida\n" msgstr "cabecera de firma clara no válida\n"
#: g10/armor.c:400 #: g10/armor.c:401
msgid "nested clear text signatures\n" msgid "nested clear text signatures\n"
msgstr "firmas en texto claro anidadas\n" msgstr "firmas en texto claro anidadas\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "Línea con guiones no válida: " msgstr "Línea con guiones no válida: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "armadura inesperada" msgstr "armadura inesperada"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "caracteres no válidos radix64 %02x ignorados\n" msgstr "caracteres no válidos radix64 %02x ignorados\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "Fin de fichero prematuro\n" msgstr "Fin de fichero prematuro\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "Fin de suma de comprobación prematuro\n" msgstr "Fin de suma de comprobación prematuro\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "Suma de comprobación mal creada\n" msgstr "Suma de comprobación mal creada\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "Error en suma de comprobación: %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" msgid "premature eof (in Trailer)\n"
msgstr "fin de fichero prematuro (en el cierre)\n" msgstr "fin de fichero prematuro (en el cierre)\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "error en la línea de cierre\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" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "no se han encontrados datos OpenPGP válidos\n" msgstr "no se han encontrados datos OpenPGP válidos\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "armadura incorrecta: línea más larga de %d caracteres\n" msgstr "armadura incorrecta: línea más larga de %d caracteres\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg 1.0.1\n" "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" "PO-Revision-Date: 1999-10-06 21:43+0200\n"
"Last-Translator: Gaël Quéri <gqueri@mail.dotcom.fr>\n" "Last-Translator: Gaël Quéri <gqueri@mail.dotcom.fr>\n"
"Language-Team: French <traduc@traduc.org>\n" "Language-Team: French <traduc@traduc.org>\n"
@ -260,12 +260,17 @@ msgstr "... c'est un bug (%s:%d:%s)\n"
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "vous avez trouvé un 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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "" msgstr ""
"ATTENTION : utilisation d'un générateur de nombres aléatoires peu sûr !!\n" "ATTENTION : utilisation d'un générateur de nombres aléatoires peu sûr !!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" 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" 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 #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "armure : %s\n" msgstr "armure : %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "en-tête d'armure invalide : " msgstr "en-tête d'armure invalide : "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "en-tête d'armure : " msgstr "en-tête d'armure : "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "en-tête de signature claire invalide\n" msgstr "en-tête de signature claire invalide\n"
#: g10/armor.c:400 #: g10/armor.c:401
msgid "nested clear text signatures\n" msgid "nested clear text signatures\n"
msgstr "signatures en texte clair imbriquées\n" msgstr "signatures en texte clair imbriquées\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "ligne de traits d'échappement invalide : " msgstr "ligne de traits d'échappement invalide : "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "armure inattendue :" msgstr "armure inattendue :"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "caractère %02x invalide en base 64 ignoré\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" msgid "premature eof (no CRC)\n"
msgstr "fin de fichier prématurée (pas de 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" msgid "premature eof (in CRC)\n"
msgstr "fin de fichier prématurée (dans le 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" msgid "malformed CRC\n"
msgstr "CRC malformé\n" msgstr "CRC malformé\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "Erreur de CRC ; %06lx - %06lx\n" msgstr "Erreur de CRC ; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "fin de fichier prématurée (dans la remorque)\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" msgid "error in trailer line\n"
msgstr "erreur dans la ligne de remorque\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" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "aucune donnée OpenPGP valide n'a été trouvée.\n" msgstr "aucune donnée OpenPGP valide n'a été trouvée.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "armure invalide : ligne plus longue que %d caractères\n" msgstr "armure invalide : ligne plus longue que %d caractères\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU Privacy Guard 1.0.0\n" "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" "PO-Revision-Date: 1999-09-17 15:21+07:00\n"
"Last-Translator: Tedi Heriyanto <tedi-h@usa.net>\n" "Last-Translator: Tedi Heriyanto <tedi-h@usa.net>\n"
"Language-Team: Indonesia <id@li.org>\n" "Language-Team: Indonesia <id@li.org>\n"
@ -256,11 +256,16 @@ msgstr "... kesalahan (%s:%d:%s)\n"
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "anda menemukan kesalahan ...(%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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "PERINGATAN: menggunakan random number generator yang tidak aman!!\n" msgstr "PERINGATAN: menggunakan random number generator yang tidak aman!!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" msgid "a notation value must not use any control characters\n"
msgstr "nilai notasi tidak boleh menggunakan karakter kendali\n" msgstr "nilai notasi tidak boleh menggunakan karakter kendali\n"
#: g10/armor.c:301 #: g10/armor.c:302
#, c-format #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "armor: %s\n" msgstr "armor: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "header armor tidak valid: " msgstr "header armor tidak valid: "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "header armor: " msgstr "header armor: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "header clearsig tidak valid\n" msgstr "header clearsig tidak valid\n"
#: g10/armor.c:400 #: g10/armor.c:401
msgid "nested clear text signatures\n" msgid "nested clear text signatures\n"
msgstr "signature teks bersarang\n" msgstr "signature teks bersarang\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "dash escaped line tidak valid: " msgstr "dash escaped line tidak valid: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "armor tidak terduga:" msgstr "armor tidak terduga:"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "karakter radix64 tidak valid %02x dilewati\n" msgstr "karakter radix64 tidak valid %02x dilewati\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "eof prematur (tanpa CRC)\n" msgstr "eof prematur (tanpa CRC)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "eof prematur (dalam CRC)\n" msgstr "eof prematur (dalam CRC)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "CRC tidak tepat\n" msgstr "CRC tidak tepat\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "kesalahan CRC; %06lx - %06lx\n" msgstr "kesalahan CRC; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "eof prematur (dalam Trailer)\n" msgstr "eof prematur (dalam Trailer)\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "kesalahan dalam garis trailer\n" msgstr "kesalahan dalam garis trailer\n"
#: g10/armor.c:911 #: g10/armor.c:912
msgid "For info see http://www.gnupg.org" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "tidak ditemukan data OpenPGP yang valid.\n" msgstr "tidak ditemukan data OpenPGP yang valid.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "armor tidak valid: baris melebihi %d karakter\n" msgstr "armor tidak valid: baris melebihi %d karakter\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-1.0.0h\n" "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" "PO-Revision-Date: 1999-12-08 15:51+02:00\n"
"Last-Translator: Marco d'Itri <md@linux.it>\n" "Last-Translator: Marco d'Itri <md@linux.it>\n"
"Language-Team: Italian <it@li.org>\n" "Language-Team: Italian <it@li.org>\n"
@ -256,12 +256,17 @@ msgstr "... questo
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "Hai trovato un 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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "" msgstr ""
"ATTENZIONE: si sta usando un generatore di numeri casuali non sicuro!!\n" "ATTENZIONE: si sta usando un generatore di numeri casuali non sicuro!!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" msgid "a notation value must not use any control characters\n"
msgstr "il valore di una nota non deve usare caratteri di controllo\n" msgstr "il valore di una nota non deve usare caratteri di controllo\n"
#: g10/armor.c:301 #: g10/armor.c:302
#, c-format #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "armatura: %s\n" msgstr "armatura: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "header dell'armatura non valido: " msgstr "header dell'armatura non valido: "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "header dell'armatura: " msgstr "header dell'armatura: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "header della firma in chiaro non valido\n" msgstr "header della firma in chiaro non valido\n"
#: g10/armor.c:400 #: g10/armor.c:401
msgid "nested clear text signatures\n" msgid "nested clear text signatures\n"
msgstr "firme in chiaro annidate\n" msgstr "firme in chiaro annidate\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "riga protetta con il trattino non valida: " msgstr "riga protetta con il trattino non valida: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "armatura inaspettata:" msgstr "armatura inaspettata:"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "Carattere radix64 non valido %02x saltato\n" msgstr "Carattere radix64 non valido %02x saltato\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "eof prematura (nessun CRC)\n" msgstr "eof prematura (nessun CRC)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "eof prematura (nel CRC)\n" msgstr "eof prematura (nel CRC)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "CRC malformato\n" msgstr "CRC malformato\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "errore nel CRC; %06lx - %06lx\n" msgstr "errore nel CRC; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "eof prematura (nella coda)\n" msgstr "eof prematura (nella coda)\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "errore nella riga della coda\n" msgstr "errore nella riga della coda\n"
#: g10/armor.c:911 #: g10/armor.c:912
msgid "For info see http://www.gnupg.org" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "Non sono stati trovati dati OpenPGP validi.\n" msgstr "Non sono stati trovati dati OpenPGP validi.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "armatura non valida: linea più lunga di %d caratteri\n" msgstr "armatura non valida: linea più lunga di %d caratteri\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg-1.0.0\n" "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" "PO-Revision-Date: 1999-10-02 21:35+02:00\n"
"Last-Translator: Janusz A. Urbanowicz <alex@bofh.net.pl>\n" "Last-Translator: Janusz A. Urbanowicz <alex@bofh.net.pl>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
@ -266,13 +266,18 @@ msgstr "... to jest b
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "znalaz³e¶(a¶) b³±d w programie ... (%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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "" msgstr ""
"OSTRZE¯ENIE: u¿ywany generator liczb losowych\n" "OSTRZE¯ENIE: u¿ywany generator liczb losowych\n"
"nie jest kryptograficznie bezpieczny!!\n" "nie jest kryptograficznie bezpieczny!!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\n" "it run - it is in no way a strong RNG!\n"
@ -848,79 +853,79 @@ msgstr "kropki w adnotacji musz
msgid "a notation value must not use any control characters\n" msgid "a notation value must not use any control characters\n"
msgstr "warto¶æ adnotacji nie mo¿e zawieraæ znaków steruj±cych\n" msgstr "warto¶æ adnotacji nie mo¿e zawieraæ znaków steruj±cych\n"
#: g10/armor.c:301 #: g10/armor.c:302
#, c-format #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "opakowanie: %s\n" msgstr "opakowanie: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "niepoprawny nag³ówek opakowania: " msgstr "niepoprawny nag³ówek opakowania: "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "nag³ówek opakowania: " msgstr "nag³ówek opakowania: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "niew³a¶ciwy nag³ówek czytelnego podpisanego dokumentu\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" msgid "nested clear text signatures\n"
msgstr "zagnie¿d¿one podpisy na czytelnym dokumencie\n" msgstr "zagnie¿d¿one podpisy na czytelnym dokumencie\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "niepoprawne oznaczenie linii minusami: " msgstr "niepoprawne oznaczenie linii minusami: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "nieoczekiwane opakowanie:" msgstr "nieoczekiwane opakowanie:"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "niew³a¶ciwy znak formatu radix64 %02x zosta³ pominiêty\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" msgid "premature eof (no CRC)\n"
msgstr "przewczesny koniec pliku (brak CRC)\n" msgstr "przewczesny koniec pliku (brak CRC)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "przedwczesny koniec pliku (w CRC)\n" msgstr "przedwczesny koniec pliku (w CRC)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "b³±d formatu CRC\n" msgstr "b³±d formatu CRC\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "B³±d sumy CRC; %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" msgid "premature eof (in Trailer)\n"
msgstr "przedwczesny koniec pliku (w zakoñczeniu)\n" msgstr "przedwczesny koniec pliku (w zakoñczeniu)\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "b³±d w linii koñcz±cej\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" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "nie odnaleziono poprawnych danych w formacie OpenPGP.\n" msgstr "nie odnaleziono poprawnych danych w formacie OpenPGP.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "b³±d opakowania: linia d³u¿sza ni¿ %d znaków\n" msgstr "b³±d opakowania: linia d³u¿sza ni¿ %d znaków\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@
# #
msgid "" msgid ""
msgstr "" 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" "Content-Type: text/plain; charset=iso-8859-1\n"
"Date: 1998-11-20 23:46:36-0200\n" "Date: 1998-11-20 23:46:36-0200\n"
"From: Thiago Jung Bauermann <jungmann@usa.net>\n" "From: Thiago Jung Bauermann <jungmann@usa.net>\n"
@ -261,11 +261,16 @@ msgstr "... isto
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "você encontrou um 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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "AVISO: usando gerador de números aleatórios inseguro!\n" msgstr "AVISO: usando gerador de números aleatórios inseguro!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" 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" msgstr "um valor de notação não deve usar caracteres de controle\n"
#: g10/armor.c:301 #: g10/armor.c:302
#, c-format #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "armadura: %s\n" msgstr "armadura: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "cabeçalho de armadura inválido: " msgstr "cabeçalho de armadura inválido: "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "cabeçalho de armadura: " msgstr "cabeçalho de armadura: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "cabeçalho de assinatura em texto puro inválido\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" msgid "nested clear text signatures\n"
msgstr "assinaturas em texto puro aninhadas\n" msgstr "assinaturas em texto puro aninhadas\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "linha com hífen inválida: " msgstr "linha com hífen inválida: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "armadura inesperada:" msgstr "armadura inesperada:"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "caractere radix64 inválido %02x ignorado\n" msgstr "caractere radix64 inválido %02x ignorado\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "fim de arquivo prematuro (sem CRC)\n" msgstr "fim de arquivo prematuro (sem CRC)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "fim de arquivo prematuro (no CRC)\n" msgstr "fim de arquivo prematuro (no CRC)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "CRC malformado\n" msgstr "CRC malformado\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "erro de CRC; %06lx - %06lx\n" msgstr "erro de CRC; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "fim de arquivo prematuro (no \"Trailer\")\n" msgstr "fim de arquivo prematuro (no \"Trailer\")\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "erro na linha \"trailer\"\n" msgstr "erro na linha \"trailer\"\n"
#: g10/armor.c:911 #: g10/armor.c:912
msgid "For info see http://www.gnupg.org" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "nenhum dado OpenPGP válido encontrado.\n" msgstr "nenhum dado OpenPGP válido encontrado.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "armadura inválida: linha maior que %d caracteres\n" msgstr "armadura inválida: linha maior que %d caracteres\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnupg\n" "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" "PO-Revision-Date: 1999-09-09 20:28+0000\n"
"Last-Translator: Pedro Morais <morais@poli.org>\n" "Last-Translator: Pedro Morais <morais@poli.org>\n"
"Language-Team: pt\n" "Language-Team: pt\n"
@ -258,11 +258,16 @@ msgstr "... isto
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "você encontrou um 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" msgid "WARNING: using insecure random number generator!!\n"
msgstr "AVISO: a utilizar gerador de números aleatórios inseguro!\n" msgstr "AVISO: a utilizar gerador de números aleatórios inseguro!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" 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" msgstr "um valor de notação não deve usar caracteres de controle\n"
#: g10/armor.c:301 #: g10/armor.c:302
#, c-format #, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "armadura: %s\n" msgstr "armadura: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "cabeçalho de armadura inválido: " msgstr "cabeçalho de armadura inválido: "
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "cabeçalho de armadura: " msgstr "cabeçalho de armadura: "
#: g10/armor.c:348 #: g10/armor.c:349
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "cabeçalho de assinatura em texto puro inválido\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" msgid "nested clear text signatures\n"
msgstr "assinaturas em texto puro aninhadas\n" msgstr "assinaturas em texto puro aninhadas\n"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "linha com hífen inválida: " msgstr "linha com hífen inválida: "
#: g10/armor.c:536 #: g10/armor.c:537
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "armadura inesperada:" msgstr "armadura inesperada:"
#: g10/armor.c:653 #: g10/armor.c:654
#, c-format #, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "caracter radix64 inválido %02x ignorado\n" msgstr "caracter radix64 inválido %02x ignorado\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "fim de ficheiro prematuro (sem CRC)\n" msgstr "fim de ficheiro prematuro (sem CRC)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "fim de ficheiro prematuro (no CRC)\n" msgstr "fim de ficheiro prematuro (no CRC)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "CRC malformado\n" msgstr "CRC malformado\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "erro de CRC; %06lx - %06lx\n" msgstr "erro de CRC; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "fim de ficheiro prematuro (no \"Trailer\")\n" msgstr "fim de ficheiro prematuro (no \"Trailer\")\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "erro na linha \"trailer\"\n" msgstr "erro na linha \"trailer\"\n"
#: g10/armor.c:911 #: g10/armor.c:912
msgid "For info see http://www.gnupg.org" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "nenhum dado OpenPGP válido encontrado.\n" msgstr "nenhum dado OpenPGP válido encontrado.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "armadura inválida: linha maior que %d caracteres\n" msgstr "armadura inválida: linha maior que %d caracteres\n"
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""

View File

@ -9,7 +9,7 @@
# QingLong <qinglong@Bolizm> (couldn't send an email to let you know) # QingLong <qinglong@Bolizm> (couldn't send an email to let you know)
msgid "" msgid ""
msgstr "" 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" "Content-Type: text/plain; charset=\n"
"Date: 1998-01-26 22:08:36+0100\n" "Date: 1998-01-26 22:08:36+0100\n"
"From: Gregory Steuck <steuck@iname.com>\n" "From: Gregory Steuck <steuck@iname.com>\n"
@ -313,12 +313,17 @@ msgstr "
msgid "you found a bug ... (%s:%d)\n" msgid "you found a bug ... (%s:%d)\n"
msgstr "÷Ù ÎÁÛÌÉ ÏÛÉÂËÕ × ÐÒÏÇÒÁÍÍÅ ... (%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 #, fuzzy
msgid "WARNING: using insecure random number generator!!\n" msgid "WARNING: using insecure random number generator!!\n"
msgstr "÷ÎÉÍÁÎÉÅ: ÉÓÐÏÌØÚÕÅÔÓÑ ÎÅÎÁÄÅÖÎÙÊ ÇÅÎÅÒÁÔÏÒ ÓÌÕÞÁÊÎÙÈ ÞÉÓÅÌ!\n" msgstr "÷ÎÉÍÁÎÉÅ: ÉÓÐÏÌØÚÕÅÔÓÑ ÎÅÎÁÄÅÖÎÙÊ ÇÅÎÅÒÁÔÏÒ ÓÌÕÞÁÊÎÙÈ ÞÉÓÅÌ!\n"
#: cipher/random.c:459 #: cipher/random.c:461
msgid "" msgid ""
"The random number generator is only a kludge to let\n" "The random number generator is only a kludge to let\n"
"it run - it is in no way a strong RNG!\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" msgid "a notation value must not use any control characters\n"
msgstr "" msgstr ""
#: g10/armor.c:301 #: g10/armor.c:302
#, fuzzy, c-format #, fuzzy, c-format
msgid "armor: %s\n" msgid "armor: %s\n"
msgstr "ëÏÄÉÒÏ×ËÁ: %s\n" msgstr "ëÏÄÉÒÏ×ËÁ: %s\n"
#: g10/armor.c:330 #: g10/armor.c:331
msgid "invalid armor header: " msgid "invalid armor header: "
msgstr "" msgstr ""
#: g10/armor.c:337 #: g10/armor.c:338
msgid "armor header: " msgid "armor header: "
msgstr "" msgstr ""
#: g10/armor.c:348 #: g10/armor.c:349
#, fuzzy #, fuzzy
msgid "invalid clearsig header\n" msgid "invalid clearsig header\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÎÁÞÁÌÏ ÔÅËÓÔÏ×ÏÊ ÐÏÄÐÉÓÉ\n" msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÎÁÞÁÌÏ ÔÅËÓÔÏ×ÏÊ ÐÏÄÐÉÓÉ\n"
#: g10/armor.c:400 #: g10/armor.c:401
#, fuzzy #, fuzzy
msgid "nested clear text signatures\n" msgid "nested clear text signatures\n"
msgstr "|[ÆÁÊÌ]|ÓÏÚÄÁÔØ ÔÅËÓÔÏ×ÕÀ ÐÏÄÐÉÓØ" msgstr "|[ÆÁÊÌ]|ÓÏÚÄÁÔØ ÔÅËÓÔÏ×ÕÀ ÐÏÄÐÉÓØ"
#: g10/armor.c:524 #: g10/armor.c:525
msgid "invalid dash escaped line: " msgid "invalid dash escaped line: "
msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÔÒÏËÁ ÎÁÞÉÎÁÀÝÁÑÓÑ Ó ÍÉÎÕÓÏ×: " msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÔÒÏËÁ ÎÁÞÉÎÁÀÝÁÑÓÑ Ó ÍÉÎÕÓÏ×: "
#: g10/armor.c:536 #: g10/armor.c:537
#, fuzzy #, fuzzy
msgid "unexpected armor:" msgid "unexpected armor:"
msgstr "îÅÏÖÉÄÁÎÎÙÅ ÄÁÎÎÙÅ" msgstr "îÅÏÖÉÄÁÎÎÙÅ ÄÁÎÎÙÅ"
#: g10/armor.c:653 #: g10/armor.c:654
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid radix64 character %02x skipped\n" msgid "invalid radix64 character %02x skipped\n"
msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ËÏÄÉÒÏ×ËÉ radix64 ÓÉÍ×ÏÌ %02x ÐÒÏÐÕÝÅÎ\n" msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ËÏÄÉÒÏ×ËÉ radix64 ÓÉÍ×ÏÌ %02x ÐÒÏÐÕÝÅÎ\n"
#: g10/armor.c:696 #: g10/armor.c:697
msgid "premature eof (no CRC)\n" msgid "premature eof (no CRC)\n"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ (ÎÅÔ CRC)\n" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ (ÎÅÔ CRC)\n"
#: g10/armor.c:730 #: g10/armor.c:731
msgid "premature eof (in CRC)\n" msgid "premature eof (in CRC)\n"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ (× CRC)\n" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ (× CRC)\n"
#: g10/armor.c:734 #: g10/armor.c:735
msgid "malformed CRC\n" msgid "malformed CRC\n"
msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÆÏÒÍÁ CRC\n" msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÆÏÒÍÁ CRC\n"
#: g10/armor.c:738 #: g10/armor.c:739
#, c-format #, c-format
msgid "CRC error; %06lx - %06lx\n" msgid "CRC error; %06lx - %06lx\n"
msgstr "ÏÛÉÂËÁ CRC; %06lx - %06lx\n" msgstr "ÏÛÉÂËÁ CRC; %06lx - %06lx\n"
#: g10/armor.c:755 #: g10/armor.c:756
msgid "premature eof (in Trailer)\n" msgid "premature eof (in Trailer)\n"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ (× È×ÏÓÔÅ)\n" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ (× È×ÏÓÔÅ)\n"
#: g10/armor.c:759 #: g10/armor.c:760
msgid "error in trailer line\n" msgid "error in trailer line\n"
msgstr "ÏÛÉÂËÁ × ÚÁ×ÅÒÛÁÀÝÅÊ ÓÔÒÏËÅ\n" msgstr "ÏÛÉÂËÁ × ÚÁ×ÅÒÛÁÀÝÅÊ ÓÔÒÏËÅ\n"
#: g10/armor.c:911 #: g10/armor.c:912
msgid "For info see http://www.gnupg.org" msgid "For info see http://www.gnupg.org"
msgstr "" msgstr ""
#: g10/armor.c:1032 #: g10/armor.c:1033
#, fuzzy #, fuzzy
msgid "no valid OpenPGP data found.\n" msgid "no valid OpenPGP data found.\n"
msgstr "ÎÅ ÎÁÊÄÅÎÏ ÄÏÐÕÓÔÉÍÙÈ RFC1991 ÉÌÉ OpenPGP ÄÁÎÎÙÈ.\n" msgstr "ÎÅ ÎÁÊÄÅÎÏ ÄÏÐÕÓÔÉÍÙÈ RFC1991 ÉÌÉ OpenPGP ÄÁÎÎÙÈ.\n"
#: g10/armor.c:1037 #: g10/armor.c:1038
#, c-format #, c-format
msgid "invalid armor: line longer than %d characters\n" msgid "invalid armor: line longer than %d characters\n"
msgstr "" msgstr ""
#: g10/armor.c:1041 #: g10/armor.c:1042
msgid "" msgid ""
"quoted printable character in armor - probably a buggy MTA has been used\n" "quoted printable character in armor - probably a buggy MTA has been used\n"
msgstr "" msgstr ""