mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
Adjust for the changed Camellia draft.
W32 gettext changes. Comment and typo fixes.
This commit is contained in:
parent
057558d04b
commit
4896f5f47c
@ -1,3 +1,8 @@
|
|||||||
|
2008-04-08 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* i18n.c (i18n_switchto_utf8, i18n_switchback)
|
||||||
|
[USE_SIMPLE_GETTEXT]: Implement.
|
||||||
|
|
||||||
2008-04-07 Werner Koch <wk@g10code.com>
|
2008-04-07 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* b64enc.c (b64enc_start): Detect PGP mode.
|
* b64enc.c (b64enc_start): Detect PGP mode.
|
||||||
|
@ -45,17 +45,19 @@ i18n_init (void)
|
|||||||
|
|
||||||
|
|
||||||
/* The Assuan agent protocol requires us to transmit utf-8 strings
|
/* The Assuan agent protocol requires us to transmit utf-8 strings
|
||||||
thus we need a fuctnion to temporary switch gettext from native to
|
thus we need a way to temporary switch gettext from native to
|
||||||
utf8. */
|
utf8. */
|
||||||
char *
|
char *
|
||||||
i18n_switchto_utf8 (void)
|
i18n_switchto_utf8 (void)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_NLS
|
#ifdef USE_SIMPLE_GETTEXT
|
||||||
|
gettext_select_utf8 (1);
|
||||||
|
#elif define(ENABLE_NLS)
|
||||||
char *orig_codeset = bind_textdomain_codeset (PACKAGE_GT, NULL);
|
char *orig_codeset = bind_textdomain_codeset (PACKAGE_GT, NULL);
|
||||||
#ifdef HAVE_LANGINFO_CODESET
|
# ifdef HAVE_LANGINFO_CODESET
|
||||||
if (!orig_codeset)
|
if (!orig_codeset)
|
||||||
orig_codeset = nl_langinfo (CODESET);
|
orig_codeset = nl_langinfo (CODESET);
|
||||||
#endif
|
# endif
|
||||||
if (orig_codeset)
|
if (orig_codeset)
|
||||||
{ /* We only switch when we are able to restore the codeset later.
|
{ /* We only switch when we are able to restore the codeset later.
|
||||||
Note that bind_textdomain_codeset does only return on memory
|
Note that bind_textdomain_codeset does only return on memory
|
||||||
@ -78,7 +80,9 @@ i18n_switchto_utf8 (void)
|
|||||||
void
|
void
|
||||||
i18n_switchback (char *saved_codeset)
|
i18n_switchback (char *saved_codeset)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_NLS
|
#ifdef USE_SIMPLE_GETTEXT
|
||||||
|
gettext_select_utf8 (0);
|
||||||
|
#elif defined(ENABLE_NLS)
|
||||||
if (saved_codeset)
|
if (saved_codeset)
|
||||||
{
|
{
|
||||||
bind_textdomain_codeset (PACKAGE_GT, saved_codeset);
|
bind_textdomain_codeset (PACKAGE_GT, saved_codeset);
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2008-04-18 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* misc.c (map_cipher_openpgp_to_gcry, map_cipher_gcry_to_openpgp)
|
||||||
|
(openpgp_cipher_test_algo): Add camellia-192.
|
||||||
|
(openpgp_cipher_blocklen): New.
|
||||||
|
* parse-packet.c (parse_key): Use new function here.
|
||||||
|
|
||||||
2008-04-15 David Shaw <dshaw@jabberwocky.com>
|
2008-04-15 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* getkey.c (merge_selfsigs_subkey): If there are multiple 0x19
|
* getkey.c (merge_selfsigs_subkey): If there are multiple 0x19
|
||||||
|
@ -82,6 +82,7 @@ u16 checksum( byte *p, unsigned n );
|
|||||||
u16 checksum_mpi( gcry_mpi_t a );
|
u16 checksum_mpi( gcry_mpi_t a );
|
||||||
u32 buffer_to_u32( const byte *buffer );
|
u32 buffer_to_u32( const byte *buffer );
|
||||||
const byte *get_session_marker( size_t *rlen );
|
const byte *get_session_marker( size_t *rlen );
|
||||||
|
int openpgp_cipher_blocklen (int algo);
|
||||||
int openpgp_cipher_test_algo( int algo );
|
int openpgp_cipher_test_algo( int algo );
|
||||||
const char *openpgp_cipher_algo_name (int algo);
|
const char *openpgp_cipher_algo_name (int algo);
|
||||||
int openpgp_pk_test_algo( int algo );
|
int openpgp_pk_test_algo( int algo );
|
||||||
|
35
g10/misc.c
35
g10/misc.c
@ -1,6 +1,6 @@
|
|||||||
/* misc.c - miscellaneous functions
|
/* misc.c - miscellaneous functions
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
* 2005, 2006, 2007 Free Software Foundation, Inc.
|
* 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -338,6 +338,7 @@ map_cipher_openpgp_to_gcry (int algo)
|
|||||||
switch (algo)
|
switch (algo)
|
||||||
{
|
{
|
||||||
case CIPHER_ALGO_CAMELLIA128: return 310;
|
case CIPHER_ALGO_CAMELLIA128: return 310;
|
||||||
|
case CIPHER_ALGO_CAMELLIA192: return 311;
|
||||||
case CIPHER_ALGO_CAMELLIA256: return 312;
|
case CIPHER_ALGO_CAMELLIA256: return 312;
|
||||||
default: return algo;
|
default: return algo;
|
||||||
}
|
}
|
||||||
@ -350,11 +351,36 @@ map_cipher_gcry_to_openpgp (int algo)
|
|||||||
switch (algo)
|
switch (algo)
|
||||||
{
|
{
|
||||||
case 310: return CIPHER_ALGO_CAMELLIA128;
|
case 310: return CIPHER_ALGO_CAMELLIA128;
|
||||||
|
case 311: return CIPHER_ALGO_CAMELLIA192;
|
||||||
case 312: return CIPHER_ALGO_CAMELLIA256;
|
case 312: return CIPHER_ALGO_CAMELLIA256;
|
||||||
default: return algo;
|
default: return algo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the block length of an OpenPGP cipher algorithm. */
|
||||||
|
int
|
||||||
|
openpgp_cipher_blocklen (int algo)
|
||||||
|
{
|
||||||
|
/* We use the numbers from OpenPGP to be sure that we get the right
|
||||||
|
block length. This is so that the packet parsing code works even
|
||||||
|
for unknown algorithms (for which we assume 8 due to tradition).
|
||||||
|
|
||||||
|
NOTE: If you change the the returned blocklen above 16, check
|
||||||
|
the callers because they may use a fixed size buffer of that
|
||||||
|
size. */
|
||||||
|
switch (algo)
|
||||||
|
{
|
||||||
|
case 7: case 8: case 9: /* AES */
|
||||||
|
case 10: /* Twofish */
|
||||||
|
case 11: case 12: case 13: /* Camellia */
|
||||||
|
return 16;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Wrapper around the libgcrypt function with additonal checks on
|
* Wrapper around the libgcrypt function with additonal checks on
|
||||||
* the OpenPGP contraints for the algo ID.
|
* the OpenPGP contraints for the algo ID.
|
||||||
@ -370,7 +396,8 @@ openpgp_cipher_test_algo( int algo )
|
|||||||
requested. */
|
requested. */
|
||||||
#ifndef USE_CAMELLIA
|
#ifndef USE_CAMELLIA
|
||||||
if (algo == CIPHER_ALGO_CAMELLIA128
|
if (algo == CIPHER_ALGO_CAMELLIA128
|
||||||
|| algo == CIPHER_ALGO_CAMELLIA256)
|
|| algo == CIPHER_ALGO_CAMELLIA192
|
||||||
|
|| algo == CIPHER_ALGO_CAMELLIA256)
|
||||||
return gpg_error (GPG_ERR_CIPHER_ALGO);
|
return gpg_error (GPG_ERR_CIPHER_ALGO);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -386,8 +413,6 @@ openpgp_cipher_algo_name (int algo)
|
|||||||
return gcry_cipher_algo_name (map_cipher_openpgp_to_gcry (algo));
|
return gcry_cipher_algo_name (map_cipher_openpgp_to_gcry (algo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
openpgp_pk_test_algo( int algo )
|
openpgp_pk_test_algo( int algo )
|
||||||
{
|
{
|
||||||
|
@ -1901,19 +1901,13 @@ parse_key( IOBUF inp, int pkttype, unsigned long pktlen,
|
|||||||
* of the IV here in cases we are not aware of the algorithm.
|
* of the IV here in cases we are not aware of the algorithm.
|
||||||
* so a
|
* so a
|
||||||
* sk->protect.ivlen = cipher_get_blocksize(sk->protect.algo);
|
* sk->protect.ivlen = cipher_get_blocksize(sk->protect.algo);
|
||||||
* won't work. The only solution I see is to hardwire it here.
|
* won't work. The only solution I see is to hardwire it.
|
||||||
* NOTE: if you change the ivlen above 16, don't forget to
|
* NOTE: if you change the ivlen above 16, don't forget to
|
||||||
* enlarge temp.
|
* enlarge temp.
|
||||||
*/
|
*/
|
||||||
switch( sk->protect.algo ) {
|
sk->protect.ivlen = openpgp_cipher_blocklen (sk->protect.algo);
|
||||||
case 7: case 8: case 9: /* AES */
|
assert (sk->protect.ivlen <= sizeof (temp));
|
||||||
case 10: /* Twofish */
|
|
||||||
case 11: case 12: /* Camellia */
|
|
||||||
sk->protect.ivlen = 16;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sk->protect.ivlen = 8;
|
|
||||||
}
|
|
||||||
if( sk->protect.s2k.mode == 1001 )
|
if( sk->protect.s2k.mode == 1001 )
|
||||||
sk->protect.ivlen = 0;
|
sk->protect.ivlen = 0;
|
||||||
else if( sk->protect.s2k.mode == 1002 )
|
else if( sk->protect.s2k.mode == 1002 )
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2008-04-18 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* cipher.h (CIPHER_ALGO_CAMELLIA256): Change ID to 13.
|
||||||
|
(CIPHER_ALGO_CAMELLIA192): New.
|
||||||
|
|
||||||
2007-12-12 Werner Koch <wk@g10code.com>
|
2007-12-12 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* cipher.h (CIPHER_ALGO_CAMELLIA128, CIPHER_ALGO_CAMELLIA256): New.
|
* cipher.h (CIPHER_ALGO_CAMELLIA128, CIPHER_ALGO_CAMELLIA256): New.
|
||||||
|
@ -47,7 +47,8 @@
|
|||||||
#define CIPHER_ALGO_TWOFISH /* 10 */ GCRY_CIPHER_TWOFISH /* 256 bit */
|
#define CIPHER_ALGO_TWOFISH /* 10 */ GCRY_CIPHER_TWOFISH /* 256 bit */
|
||||||
/* Note: Camellia ids don't match those used by libgcrypt. */
|
/* Note: Camellia ids don't match those used by libgcrypt. */
|
||||||
#define CIPHER_ALGO_CAMELLIA128 11
|
#define CIPHER_ALGO_CAMELLIA128 11
|
||||||
#define CIPHER_ALGO_CAMELLIA256 12
|
#define CIPHER_ALGO_CAMELLIA192 12
|
||||||
|
#define CIPHER_ALGO_CAMELLIA256 13
|
||||||
#define CIPHER_ALGO_DUMMY 110 /* No encryption at all. */
|
#define CIPHER_ALGO_DUMMY 110 /* No encryption at all. */
|
||||||
|
|
||||||
#define PUBKEY_ALGO_RSA /* 1 */ GCRY_PK_RSA
|
#define PUBKEY_ALGO_RSA /* 1 */ GCRY_PK_RSA
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2008-04-08 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* w32-gettext.c (gettext_select_utf8): New.
|
||||||
|
(get_string): Support switching encodings.
|
||||||
|
(load_domain): Allocate space for DATA_NATIVE.
|
||||||
|
|
||||||
2008-03-25 Werner Koch <wk@g10code.com>
|
2008-03-25 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* w32-gettext.c (_nl_locale_name): New. Taken from
|
* w32-gettext.c (_nl_locale_name): New. Taken from
|
||||||
@ -555,7 +561,7 @@ Mon Jan 24 13:04:28 CET 2000 Werner Koch <wk@gnupg.de>
|
|||||||
***********************************************************
|
***********************************************************
|
||||||
|
|
||||||
Copyright 2000, 2001, 2002, 2003, 2004,
|
Copyright 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007 Free Software Foundation, Inc.
|
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is free software; as a special exception the author gives
|
This file is free software; as a special exception the author gives
|
||||||
unlimited permission to copy and/or distribute it, with or without
|
unlimited permission to copy and/or distribute it, with or without
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* w32-gettext.c - A simplified version of gettext for use under W32.
|
/* w32-gettext.c - A simplified version of gettext for use under W32.
|
||||||
* Copyright (C) 1995, 1996, 1997, 1999, 2000, 2003,
|
* Copyright (C) 1995, 1996, 1997, 1999, 2000, 2003,
|
||||||
* 2005, 2007, 2088 Free Software Foundation, Inc.
|
* 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of JNLIB.
|
* This file is part of JNLIB.
|
||||||
*
|
*
|
||||||
@ -96,11 +96,13 @@ struct overflow_space_s
|
|||||||
struct loaded_domain
|
struct loaded_domain
|
||||||
{
|
{
|
||||||
char *data;
|
char *data;
|
||||||
|
char *data_native; /* Data mapped to the native version of the
|
||||||
|
string. (Allocated along with DATA). */
|
||||||
int must_swap;
|
int must_swap;
|
||||||
u32 nstrings;
|
u32 nstrings;
|
||||||
char *mapped; /* 0 = not yet mapped, 1 = mapped,
|
char *mapped; /* 0 = not mapped (original utf8),
|
||||||
2 = mapped to
|
1 = mapped to native encoding,
|
||||||
overflow space */
|
2 = mapped to native encoding in overflow space. */
|
||||||
struct overflow_space_s *overflow_space;
|
struct overflow_space_s *overflow_space;
|
||||||
struct string_desc *orig_tab;
|
struct string_desc *orig_tab;
|
||||||
struct string_desc *trans_tab;
|
struct string_desc *trans_tab;
|
||||||
@ -111,6 +113,8 @@ struct loaded_domain
|
|||||||
|
|
||||||
static struct loaded_domain *the_domain;
|
static struct loaded_domain *the_domain;
|
||||||
static char *the_langid;
|
static char *the_langid;
|
||||||
|
static int want_utf8; /* True if the user want's utf-8 strings. */
|
||||||
|
|
||||||
|
|
||||||
static __inline__ u32
|
static __inline__ u32
|
||||||
do_swap_u32( u32 i )
|
do_swap_u32( u32 i )
|
||||||
@ -1236,7 +1240,7 @@ load_domain (const char *filename)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
data = jnlib_malloc (size);
|
data = (2*size <= size)? NULL : jnlib_malloc (2*size);
|
||||||
if (!data)
|
if (!data)
|
||||||
{
|
{
|
||||||
fclose (fp);
|
fclose (fp);
|
||||||
@ -1278,38 +1282,39 @@ load_domain (const char *filename)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
domain->data = (char *) data;
|
domain->data = (char *) data;
|
||||||
|
domain->data_native = (char *) data + size;
|
||||||
domain->must_swap = data->magic != MAGIC;
|
domain->must_swap = data->magic != MAGIC;
|
||||||
|
|
||||||
/* Fill in the information about the available tables. */
|
/* Fill in the information about the available tables. */
|
||||||
switch (SWAPIT(domain->must_swap, data->revision))
|
switch (SWAPIT(domain->must_swap, data->revision))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
|
domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
|
||||||
domain->orig_tab = (struct string_desc *)
|
domain->orig_tab = (struct string_desc *)
|
||||||
((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
|
((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
|
||||||
domain->trans_tab = (struct string_desc *)
|
domain->trans_tab = (struct string_desc *)
|
||||||
((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
|
((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
|
||||||
domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);
|
domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);
|
||||||
domain->hash_tab = (u32 *)
|
domain->hash_tab = (u32 *)
|
||||||
((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));
|
((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* This is an invalid revision. */
|
default: /* This is an invalid revision. */
|
||||||
jnlib_free( data );
|
jnlib_free( data );
|
||||||
jnlib_free( domain );
|
jnlib_free( domain );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate an array to keep track of code page mappings. */
|
/* Allocate an array to keep track of code page mappings. */
|
||||||
domain->mapped = jnlib_calloc (1, domain->nstrings);
|
domain->mapped = jnlib_calloc (1, domain->nstrings);
|
||||||
if (!domain->mapped)
|
if (!domain->mapped)
|
||||||
{
|
{
|
||||||
jnlib_free (data);
|
jnlib_free (data);
|
||||||
jnlib_free (domain);
|
jnlib_free (domain);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return domain;
|
return domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1510,30 +1515,45 @@ set_gettext_file ( const char *filename, const char *regkey )
|
|||||||
|
|
||||||
|
|
||||||
static const char*
|
static const char*
|
||||||
get_string( struct loaded_domain *domain, u32 idx )
|
get_string (struct loaded_domain *domain, u32 idx)
|
||||||
{
|
{
|
||||||
struct overflow_space_s *os;
|
struct overflow_space_s *os;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
p = domain->data + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset);
|
if (want_utf8)
|
||||||
if (!domain->mapped[idx])
|
|
||||||
{
|
{
|
||||||
|
p = (domain->data
|
||||||
|
+ SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
|
||||||
|
}
|
||||||
|
else if (!domain->mapped[idx])
|
||||||
|
{
|
||||||
|
/* Not yet mapped - map utf-8 to native encoding. */
|
||||||
|
const char *p_orig;
|
||||||
size_t plen, buflen;
|
size_t plen, buflen;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
domain->mapped[idx] = 1;
|
p_orig = (domain->data
|
||||||
|
+ SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
|
||||||
|
p = (domain->data_native
|
||||||
|
+ SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
|
||||||
|
|
||||||
plen = strlen (p);
|
plen = strlen (p_orig);
|
||||||
buf = utf8_to_native (p, plen, -1);
|
buf = utf8_to_native (p_orig, plen, -1);
|
||||||
buflen = strlen (buf);
|
buflen = strlen (buf);
|
||||||
if (buflen <= plen)
|
if (buflen <= plen)
|
||||||
strcpy (p, buf);
|
{
|
||||||
|
/* Copy into the DATA_NATIVE area. */
|
||||||
|
strcpy (p, buf);
|
||||||
|
domain->mapped[idx] = 1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* There is not enough space for the translation - store it
|
/* There is not enough space for the translation - store it
|
||||||
in the overflow_space else and mark that in the mapped
|
in the overflow_space and mark that in the mapped array.
|
||||||
array. Because we expect that this won't happen too
|
Because UTF-8 strings are in general longer than the
|
||||||
often, we use a simple linked list. */
|
Windows 2 byte encodings, we expect that this won't
|
||||||
|
happen too often (if at all) and thus we use a linked
|
||||||
|
list to manage this space. */
|
||||||
os = jnlib_malloc (sizeof *os + buflen);
|
os = jnlib_malloc (sizeof *os + buflen);
|
||||||
if (os)
|
if (os)
|
||||||
{
|
{
|
||||||
@ -1545,9 +1565,16 @@ get_string( struct loaded_domain *domain, u32 idx )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
p = "ERROR in GETTEXT MALLOC";
|
p = "ERROR in GETTEXT MALLOC";
|
||||||
|
domain->mapped[idx] = 2;
|
||||||
}
|
}
|
||||||
jnlib_free (buf);
|
jnlib_free (buf);
|
||||||
}
|
}
|
||||||
|
else if (domain->mapped[idx] == 1)
|
||||||
|
{
|
||||||
|
p = (domain->data_native
|
||||||
|
+ SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
|
||||||
|
|
||||||
|
}
|
||||||
else if (domain->mapped[idx] == 2)
|
else if (domain->mapped[idx] == 2)
|
||||||
{ /* We need to get the string from the overflow_space. */
|
{ /* We need to get the string from the overflow_space. */
|
||||||
for (os=domain->overflow_space; os; os = os->next)
|
for (os=domain->overflow_space; os; os = os->next)
|
||||||
@ -1555,6 +1582,9 @@ get_string( struct loaded_domain *domain, u32 idx )
|
|||||||
return (const char*)os->d;
|
return (const char*)os->d;
|
||||||
p = "ERROR in GETTEXT\n";
|
p = "ERROR in GETTEXT\n";
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
p = "ERROR in GETEXT mapping";
|
||||||
|
|
||||||
return (const char*)p;
|
return (const char*)p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1660,4 +1690,11 @@ gettext_localename (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
gettext_select_utf8 (int value)
|
||||||
|
{
|
||||||
|
want_utf8 = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* USE_SIMPLE_GETTEXT */
|
#endif /* USE_SIMPLE_GETTEXT */
|
||||||
|
@ -33,6 +33,7 @@ const char *gettext (const char *msgid );
|
|||||||
const char *ngettext (const char *msgid1, const char *msgid2,
|
const char *ngettext (const char *msgid1, const char *msgid2,
|
||||||
unsigned long int n);
|
unsigned long int n);
|
||||||
const char *gettext_localename (void);
|
const char *gettext_localename (void);
|
||||||
|
void gettext_select_utf8 (int value);
|
||||||
#endif /*USE_SIMPLE_GETTEXT*/
|
#endif /*USE_SIMPLE_GETTEXT*/
|
||||||
|
|
||||||
|
|
||||||
|
5
po/de.po
5
po/de.po
@ -10,7 +10,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnupg-2.0.6\n"
|
"Project-Id-Version: gnupg-2.0.6\n"
|
||||||
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
|
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
|
||||||
"POT-Creation-Date: 2008-03-27 13:41+0100\n"
|
"POT-Creation-Date: 2008-03-27 13:41+0100\n"
|
||||||
"PO-Revision-Date: 2008-04-02 17:50+0200\n"
|
"PO-Revision-Date: 2008-04-08 15:41+0200\n"
|
||||||
"Last-Translator: Walter Koch <koch@u32.de>\n"
|
"Last-Translator: Walter Koch <koch@u32.de>\n"
|
||||||
"Language-Team: German <de@li.org>\n"
|
"Language-Team: German <de@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -7080,8 +7080,7 @@ msgid ""
|
|||||||
"S/N %s, ID 0x%08lX,\n"
|
"S/N %s, ID 0x%08lX,\n"
|
||||||
"created %s, expires %s.\n"
|
"created %s, expires %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bitte geben Sie die Passphrase an, um den geheimen Schlüssel\n"
|
"Bitte geben Sie die Passphrase an, um den geheimen Schlüssel des X.509 Zertifikats:\n"
|
||||||
"des X.509 Zertifikats:\n"
|
|
||||||
"\"%s\"\n"
|
"\"%s\"\n"
|
||||||
"S/N %s, ID 0x%08lX,\n"
|
"S/N %s, ID 0x%08lX,\n"
|
||||||
"gültig von %s bis %s\n"
|
"gültig von %s bis %s\n"
|
||||||
|
@ -282,7 +282,7 @@ set_msg_len (unsigned char *msg, unsigned int length)
|
|||||||
|
|
||||||
|
|
||||||
/* Pint an error message for a failed CCID command including a textual
|
/* Pint an error message for a failed CCID command including a textual
|
||||||
error code. MSG is shall be the CCID message of at least 10 bytes. */
|
error code. MSG shall be the CCID message at a minimum of 10 bytes. */
|
||||||
static void
|
static void
|
||||||
print_command_failed (const unsigned char *msg)
|
print_command_failed (const unsigned char *msg)
|
||||||
{
|
{
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2008-04-09 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* verify.c (gpgsm_verify): Print the message hash values on error.
|
||||||
|
|
||||||
2008-03-31 Werner Koch <wk@g10code.com>
|
2008-03-31 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* call-dirmngr.c (start_dirmngr): Use log_info instead of
|
* call-dirmngr.c (start_dirmngr): Use log_info instead of
|
||||||
|
12
sm/verify.c
12
sm/verify.c
@ -467,8 +467,16 @@ gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, FILE *out_fp)
|
|||||||
{
|
{
|
||||||
char *fpr;
|
char *fpr;
|
||||||
|
|
||||||
log_error ("invalid signature: message digest attribute "
|
log_error (_("invalid signature: message digest attribute "
|
||||||
"does not match calculated one\n");
|
"does not match computed one\n"));
|
||||||
|
if (DBG_X509)
|
||||||
|
{
|
||||||
|
if (msgdigest)
|
||||||
|
log_printhex ("message: ", msgdigest, msgdigestlen);
|
||||||
|
if (s)
|
||||||
|
log_printhex ("computed: ",
|
||||||
|
s, gcry_md_get_algo_dlen (algo));
|
||||||
|
}
|
||||||
fpr = gpgsm_fpr_and_name_for_status (cert);
|
fpr = gpgsm_fpr_and_name_for_status (cert);
|
||||||
gpgsm_status (ctrl, STATUS_BADSIG, fpr);
|
gpgsm_status (ctrl, STATUS_BADSIG, fpr);
|
||||||
xfree (fpr);
|
xfree (fpr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user