Use the gpgrt log functions if possible.

* common/logging.c: Do not build any code if we can use the gpgrt_log
functions.
(log_logv_with_prefix): Rename to log_logv_prefix and change order of
args so that this function matches its printf like counterpart
gpgrt_logv_prefix.  Change all callers.
(log_debug_with_string): Rename to log_debug_string. Change all
callers.
(log_printhex): Move first arg to end so that this function matches
its printf like counterpart gpgrt_log_printhex.  Change all callers.
* common/logging.h: Divert to gpgrt/libgpg-error if we can use the
gpgrt_log functions.
(bug_at): Add inline versions if we can use the gpgrt_log functions.
* configure.ac (GPGRT_ENABLE_LOG_MACROS): Add to AH_BOTTOM.
(mycflags): Add -Wno-format-zero-length.
--

This patch enables the use of the log function from libgpgrt (aka
libgpg-error).  Instead of checking a version number, we enable them
depending on macros set by recent gpg-error versions.  Eventually the
whole divert stuff can be removed.

The -Wno-format-zero-length is required because log_printhex can be
called with an empty format string.  Note that this is fully specified
standard C behaviour.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2017-11-27 15:00:25 +01:00
parent fe96ca8d86
commit b56dfdfc18
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
25 changed files with 107 additions and 70 deletions

View File

@ -878,11 +878,11 @@ convert_from_openpgp_main (ctrl_t ctrl, gcry_sexp_t s_pgp, int dontcare_exist,
log_debug ("XXX pubkey_algo=%d\n", pubkey_algo); log_debug ("XXX pubkey_algo=%d\n", pubkey_algo);
log_debug ("XXX is_protected=%d\n", is_protected); log_debug ("XXX is_protected=%d\n", is_protected);
log_debug ("XXX protect_algo=%d\n", protect_algo); log_debug ("XXX protect_algo=%d\n", protect_algo);
log_printhex ("XXX iv", iv, ivlen); log_printhex (iv, ivlen, "XXX iv");
log_debug ("XXX ivlen=%d\n", ivlen); log_debug ("XXX ivlen=%d\n", ivlen);
log_debug ("XXX s2k_mode=%d\n", s2k_mode); log_debug ("XXX s2k_mode=%d\n", s2k_mode);
log_debug ("XXX s2k_algo=%d\n", s2k_algo); log_debug ("XXX s2k_algo=%d\n", s2k_algo);
log_printhex ("XXX s2k_salt", s2k_salt, sizeof s2k_salt); log_printhex (s2k_salt, sizeof s2k_salt, "XXX s2k_salt");
log_debug ("XXX s2k_count=%lu\n", (unsigned long)s2k_count); log_debug ("XXX s2k_count=%lu\n", (unsigned long)s2k_count);
log_debug ("XXX curve='%s'\n", curve); log_debug ("XXX curve='%s'\n", curve);
for (idx=0; skey[idx]; idx++) for (idx=0; skey[idx]; idx++)

View File

@ -169,7 +169,7 @@ encode_md_for_card (const unsigned char *digest, size_t digestlen, int algo,
memcpy (frame, asn, asnlen); memcpy (frame, asn, asnlen);
memcpy (frame+asnlen, digest, digestlen); memcpy (frame+asnlen, digest, digestlen);
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("encoded hash:", frame, asnlen+digestlen); log_printhex (frame, asnlen+digestlen, "encoded hash:");
*r_val = frame; *r_val = frame;
*r_len = asnlen+digestlen; *r_len = asnlen+digestlen;

View File

@ -64,8 +64,8 @@ agent_pkdecrypt (ctrl_t ctrl, const char *desc_text,
if (DBG_CRYPTO) if (DBG_CRYPTO)
{ {
log_printhex ("keygrip:", ctrl->keygrip, 20); log_printhex (ctrl->keygrip, 20, "keygrip:");
log_printhex ("cipher: ", ciphertext, ciphertextlen); log_printhex (ciphertext, ciphertextlen, "cipher: ");
} }
rc = agent_key_from_file (ctrl, NULL, desc_text, rc = agent_key_from_file (ctrl, NULL, desc_text,
ctrl->keygrip, &shadow_info, ctrl->keygrip, &shadow_info,

View File

@ -63,6 +63,10 @@
#include "logging.h" #include "logging.h"
#include "sysutils.h" #include "sysutils.h"
#if defined(GPGRT_ENABLE_LOG_MACROS) && defined(log_debug_string)
/* Nothing to do; the libgpgrt functions are used. */
#else /* Use our own logging functions. */
#ifdef HAVE_W32_SYSTEM #ifdef HAVE_W32_SYSTEM
# ifndef S_IRWXG # ifndef S_IRWXG
# define S_IRGRP S_IRUSR # define S_IRGRP S_IRUSR
@ -885,7 +889,7 @@ log_logv (int level, const char *fmt, va_list arg_ptr)
* Note that PREFIX is an additional string and independent of the * Note that PREFIX is an additional string and independent of the
* prefix set by log_set_prefix. */ * prefix set by log_set_prefix. */
void void
log_logv_with_prefix (int level, const char *prefix, log_logv_prefix (int level, const char *prefix,
const char *fmt, va_list arg_ptr) const char *fmt, va_list arg_ptr)
{ {
do_logv (level, 0, NULL, prefix, fmt, arg_ptr); do_logv (level, 0, NULL, prefix, fmt, arg_ptr);
@ -977,7 +981,7 @@ log_debug (const char *fmt, ...)
* printed with LFs expanded to include the prefix and a final --end-- * printed with LFs expanded to include the prefix and a final --end--
* marker. */ * marker. */
void void
log_debug_with_string (const char *string, const char *fmt, ...) log_debug_string (const char *string, const char *fmt, ...)
{ {
va_list arg_ptr ; va_list arg_ptr ;
@ -1011,7 +1015,7 @@ log_flush (void)
dump, with TEXT just an empty string, print a trailing linefeed, dump, with TEXT just an empty string, print a trailing linefeed,
otherwise print an entire debug line. */ otherwise print an entire debug line. */
void void
log_printhex (const char *text, const void *buffer, size_t length) log_printhex (const void *buffer, size_t length, const char *text)
{ {
if (text && *text) if (text && *text)
log_debug ("%s ", text); log_debug ("%s ", text);
@ -1113,3 +1117,5 @@ _log_assert (const char *expr, const char *file, int line)
abort (); /* Never called; just to make the compiler happy. */ abort (); /* Never called; just to make the compiler happy. */
} }
#endif /*!GPGRT_HAVE_MACRO_FUNCTION*/ #endif /*!GPGRT_HAVE_MACRO_FUNCTION*/
#endif /* Use our own logging functions. */

View File

@ -38,6 +38,34 @@
#include "mischelp.h" #include "mischelp.h"
#include "w32help.h" #include "w32help.h"
#if defined(GPGRT_ENABLE_LOG_MACROS) && defined(log_debug_string)
/* We use the libgpg-error provided log functions. but we need one
* more function: */
# ifdef GPGRT_HAVE_MACRO_FUNCTION
# define BUG() bug_at ( __FILE__, __LINE__, __FUNCTION__)
static inline void bug_at (const char *file, int line, const char *func)
GPGRT_ATTR_NORETURN;
static inline void
bug_at (const char *file, int line, const char *func)
{
gpgrt_log (GPGRT_LOG_BUG, "there is a bug at %s:%d:%s\n", file, line, func);
abort ();
}
# else
# define BUG() bug_at ( __FILE__, __LINE__)
static inline void bug_at (const char *file, int line)
GPGRT_ATTR_NORETURN;
static inline void
bug_at (const char *file, int line)
{
gpgrt_log (GPGRT_LOG_BUG, "there is a bug at %s:%d\n", file, line);
abort ();
}
# endif /*!GPGRT_HAVE_MACRO_FUNCTION*/
#else /* Use gnupg internal logging functions. */
int log_get_errorcount (int clear); int log_get_errorcount (int clear);
void log_inc_errorcount (void); void log_inc_errorcount (void);
void log_set_file( const char *name ); void log_set_file( const char *name );
@ -90,16 +118,16 @@ enum jnlib_log_levels {
}; };
void log_log (int level, const char *fmt, ...) GPGRT_ATTR_PRINTF(2,3); void log_log (int level, const char *fmt, ...) GPGRT_ATTR_PRINTF(2,3);
void log_logv (int level, const char *fmt, va_list arg_ptr); void log_logv (int level, const char *fmt, va_list arg_ptr);
void log_logv_with_prefix (int level, const char *prefix, void log_logv_prefix (int level, const char *prefix,
const char *fmt, va_list arg_ptr); const char *fmt, va_list arg_ptr);
void log_string (int level, const char *string); void log_string (int level, const char *string);
void log_bug (const char *fmt, ...) GPGRT_ATTR_NR_PRINTF(1,2); void log_bug (const char *fmt, ...) GPGRT_ATTR_NR_PRINTF(1,2);
void log_fatal (const char *fmt, ...) GPGRT_ATTR_NR_PRINTF(1,2); void log_fatal (const char *fmt, ...) GPGRT_ATTR_NR_PRINTF(1,2);
void log_error (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); void log_error (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2);
void log_info (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); void log_info (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2);
void log_debug (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); void log_debug (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2);
void log_debug_with_string (const char *string, const char *fmt, void log_debug_string (const char *string, const char *fmt,
...) GPGRT_ATTR_PRINTF(2,3); ...) GPGRT_ATTR_PRINTF(2,3);
void log_printf (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); void log_printf (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2);
void log_flush (void); void log_flush (void);
@ -107,9 +135,9 @@ void log_flush (void);
raw dump, with TEXT being an empty string, print a trailing raw dump, with TEXT being an empty string, print a trailing
linefeed, otherwise print an entire debug line with TEXT followed linefeed, otherwise print an entire debug line with TEXT followed
by the hexdump and a final LF. */ by the hexdump and a final LF. */
void log_printhex (const char *text, const void *buffer, size_t length); void log_printhex (const void *buffer, size_t length, const char *text);
void log_clock (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2); void log_clock (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2);
#endif /* Use gnupg internal logging functions. */
#endif /*GNUPG_COMMON_LOGGING_H*/ #endif /*GNUPG_COMMON_LOGGING_H*/

View File

@ -557,9 +557,12 @@ AH_BOTTOM([
# endif # endif
#endif #endif
/* Provide the es_ macro for estream. */ /* Enable the es_ macros from gpgrt. */
#define GPGRT_ENABLE_ES_MACROS 1 #define GPGRT_ENABLE_ES_MACROS 1
/* Enable the log_ macros from gpgrt. */
#define GPGRT_ENABLE_LOG_MACROS 1
/* Tell libgcrypt not to use its own libgpg-error implementation. */ /* Tell libgcrypt not to use its own libgpg-error implementation. */
#define USE_LIBGPG_ERROR 1 #define USE_LIBGPG_ERROR 1
@ -1608,7 +1611,7 @@ if test "$GCC" = yes; then
AC_MSG_RESULT($_gcc_wopt) AC_MSG_RESULT($_gcc_wopt)
fi fi
if test x"$_gcc_wopt" = xyes ; then if test x"$_gcc_wopt" = xyes ; then
mycflags="$mycflags -W -Wno-sign-compare" mycflags="$mycflags -W -Wno-sign-compare -Wno-format-zero-length"
mycflags="$mycflags -Wno-missing-field-initializers" mycflags="$mycflags -Wno-missing-field-initializers"
fi fi

View File

@ -1346,7 +1346,7 @@ cache_isvalid (ctrl_t ctrl, const char *issuer_hash,
{ {
log_error (_("WARNING: invalid cache record length for S/N ")); log_error (_("WARNING: invalid cache record length for S/N "));
log_printf ("0x"); log_printf ("0x");
log_printhex ("", sn, snlen); log_printhex (sn, snlen, "");
} }
else if (opt.verbose) else if (opt.verbose)
{ {

View File

@ -781,12 +781,12 @@ my_ntbtls_log_handler (void *opaque, int level, const char *fmt, va_list argv)
(void)opaque; (void)opaque;
if (level == -1) if (level == -1)
log_logv_with_prefix (GPGRT_LOG_INFO, "ntbtls: ", fmt, argv); log_logv_prefix (GPGRT_LOG_INFO, "ntbtls: ", fmt, argv);
else else
{ {
char prefix[10+20]; char prefix[10+20];
snprintf (prefix, sizeof prefix, "ntbtls(%d): ", level); snprintf (prefix, sizeof prefix, "ntbtls(%d): ", level);
log_logv_with_prefix (GPGRT_LOG_DEBUG, prefix, fmt, argv); log_logv_prefix (GPGRT_LOG_DEBUG, prefix, fmt, argv);
} }
} }
#endif #endif

View File

@ -1053,7 +1053,7 @@ http_start_data (http_t hd)
if (!hd->in_data) if (!hd->in_data)
{ {
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP)) if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
log_debug_with_string ("\r\n", "http.c:request-header:"); log_debug_string ("\r\n", "http.c:request-header:");
es_fputs ("\r\n", hd->fp_write); es_fputs ("\r\n", hd->fp_write);
es_fflush (hd->fp_write); es_fflush (hd->fp_write);
hd->in_data = 1; hd->in_data = 1;
@ -1844,7 +1844,7 @@ send_request (http_t hd, const char *httphost, const char *auth,
return gpg_err_make (default_errsource, gpg_err_code_from_syserror ()); return gpg_err_make (default_errsource, gpg_err_code_from_syserror ());
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP)) if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
log_debug_with_string (request, "http.c:request:"); log_debug_string (request, "http.c:request:");
cookie = xtrycalloc (1, sizeof *cookie); cookie = xtrycalloc (1, sizeof *cookie);
if (! cookie) if (! cookie)
@ -2159,7 +2159,7 @@ send_request (http_t hd, const char *httphost, const char *auth,
} }
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP)) if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
log_debug_with_string (request, "http.c:request:"); log_debug_string (request, "http.c:request:");
/* First setup estream so that we can write even the first line /* First setup estream so that we can write even the first line
using estream. This is also required for the sake of gnutls. */ using estream. This is also required for the sake of gnutls. */
@ -2195,7 +2195,7 @@ send_request (http_t hd, const char *httphost, const char *auth,
for (;headers; headers=headers->next) for (;headers; headers=headers->next)
{ {
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP)) if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
log_debug_with_string (headers->d, "http.c:request-header:"); log_debug_string (headers->d, "http.c:request-header:");
if ((es_fputs (headers->d, hd->fp_write) || es_fflush (hd->fp_write)) if ((es_fputs (headers->d, hd->fp_write) || es_fflush (hd->fp_write))
|| (es_fputs("\r\n",hd->fp_write) || es_fflush(hd->fp_write))) || (es_fputs("\r\n",hd->fp_write) || es_fflush(hd->fp_write)))
{ {
@ -2446,7 +2446,7 @@ parse_response (http_t hd)
return GPG_ERR_EOF; return GPG_ERR_EOF;
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP)) if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
log_debug_with_string (line, "http.c:response:\n"); log_debug_string (line, "http.c:response:\n");
} }
while (!*line); while (!*line);

View File

@ -284,7 +284,7 @@ dump_string (const char *string)
else else
{ {
log_printf ( "[ "); log_printf ( "[ ");
log_printhex (NULL, string, strlen (string)); log_printhex (string, strlen (string), NULL);
log_printf ( " ]"); log_printf ( " ]");
} }
} }

View File

@ -76,7 +76,7 @@ pk_ecdh_default_params (unsigned int qbits)
} }
log_assert (i < DIM (kek_params_table)); log_assert (i < DIM (kek_params_table));
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ECDH KEK params are", kek_params, sizeof(kek_params) ); log_printhex (kek_params, sizeof(kek_params), "ECDH KEK params are");
return gcry_mpi_set_opaque (NULL, kek_params, 4 * 8); return gcry_mpi_set_opaque (NULL, kek_params, 4 * 8);
} }
@ -159,7 +159,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
memset (secret_x+secret_x_size, 0, nbytes-secret_x_size); memset (secret_x+secret_x_size, 0, nbytes-secret_x_size);
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ECDH shared secret X is:", secret_x, secret_x_size ); log_printhex (secret_x, secret_x_size, "ECDH shared secret X is:");
} }
/*** We have now the shared secret bytes in secret_x. ***/ /*** We have now the shared secret bytes in secret_x. ***/
@ -179,7 +179,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
kek_params_size = (nbits+7)/8; kek_params_size = (nbits+7)/8;
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ecdh KDF params:", kek_params, kek_params_size); log_printhex (kek_params, kek_params_size, "ecdh KDF params:");
/* Expect 4 bytes 03 01 hash_alg symm_alg. */ /* Expect 4 bytes 03 01 hash_alg symm_alg. */
if (kek_params_size != 4 || kek_params[0] != 3 || kek_params[1] != 1) if (kek_params_size != 4 || kek_params[0] != 3 || kek_params[1] != 1)
@ -236,7 +236,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
} }
if(DBG_CRYPTO) if(DBG_CRYPTO)
log_printhex ("ecdh KDF message params are:", message, message_size); log_printhex (message, message_size, "ecdh KDF message params are:");
} }
/* Derive a KEK (key wrapping key) using MESSAGE and SECRET_X. */ /* Derive a KEK (key wrapping key) using MESSAGE and SECRET_X. */
@ -272,7 +272,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
/* We could have allocated more, so clean the tail before returning. */ /* We could have allocated more, so clean the tail before returning. */
memset (secret_x+secret_x_size, 0, old_size - secret_x_size); memset (secret_x+secret_x_size, 0, old_size - secret_x_size);
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ecdh KEK is:", secret_x, secret_x_size ); log_printhex (secret_x, secret_x_size, "ecdh KEK is:");
} }
/* And, finally, aeswrap with key secret_x. */ /* And, finally, aeswrap with key secret_x. */
@ -338,7 +338,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
} }
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ecdh encrypting :", in, data_buf_size ); log_printhex (in, data_buf_size, "ecdh encrypting :");
err = gcry_cipher_encrypt (hd, data_buf+1, data_buf_size+8, err = gcry_cipher_encrypt (hd, data_buf+1, data_buf_size+8,
in, data_buf_size); in, data_buf_size);
@ -354,7 +354,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
data_buf[0] = data_buf_size+8; data_buf[0] = data_buf_size+8;
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ecdh encrypted to:", data_buf+1, data_buf[0] ); log_printhex (data_buf+1, data_buf[0], "ecdh encrypted to:");
result = gcry_mpi_set_opaque (NULL, data_buf, 8 * (1+data_buf[0])); result = gcry_mpi_set_opaque (NULL, data_buf, 8 * (1+data_buf[0]));
if (!result) if (!result)
@ -391,7 +391,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
data_buf_size = data_buf[0]; data_buf_size = data_buf[0];
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ecdh decrypting :", data_buf+1, data_buf_size); log_printhex (data_buf+1, data_buf_size, "ecdh decrypting :");
err = gcry_cipher_decrypt (hd, in, data_buf_size, data_buf+1, err = gcry_cipher_decrypt (hd, in, data_buf_size, data_buf+1,
data_buf_size); data_buf_size);
@ -407,7 +407,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
data_buf_size -= 8; data_buf_size -= 8;
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("ecdh decrypted to :", in, data_buf_size); log_printhex (in, data_buf_size, "ecdh decrypted to :");
/* Padding is removed later. */ /* Padding is removed later. */
/* if (in[data_buf_size-1] > 8 ) */ /* if (in[data_buf_size-1] > 8 ) */

View File

@ -697,7 +697,7 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
make_session_key (cfx.dek); make_session_key (cfx.dek);
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("DEK is: ", cfx.dek->key, cfx.dek->keylen ); log_printhex (cfx.dek->key, cfx.dek->keylen, "DEK is: ");
rc = write_pubkey_enc_from_list (ctrl, pk_list, cfx.dek, out); rc = write_pubkey_enc_from_list (ctrl, pk_list, cfx.dek, out);
if (rc) if (rc)
@ -891,7 +891,7 @@ encrypt_filter (void *opaque, int control,
make_session_key ( efx->cfx.dek ); make_session_key ( efx->cfx.dek );
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("DEK is: ", efx->cfx.dek->key, efx->cfx.dek->keylen); log_printhex (efx->cfx.dek->key, efx->cfx.dek->keylen, "DEK is: ");
rc = write_pubkey_enc_from_list (efx->ctrl, rc = write_pubkey_enc_from_list (efx->ctrl,
efx->pk_list, efx->cfx.dek, a); efx->pk_list, efx->cfx.dek, a);

View File

@ -978,7 +978,7 @@ keygrip_from_pk (PKT_public_key *pk, unsigned char *array)
else else
{ {
if (DBG_PACKET) if (DBG_PACKET)
log_printhex ("keygrip=", array, 20); log_printhex (array, 20, "keygrip=");
/* FIXME: Save the keygrip in PK. */ /* FIXME: Save the keygrip in PK. */
} }
gcry_sexp_release (s_pkey); gcry_sexp_release (s_pkey);

View File

@ -255,7 +255,7 @@ get_it (ctrl_t ctrl,
* CSUM * CSUM
*/ */
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("DEK frame:", frame, nframe); log_printhex (frame, nframe, "DEK frame:");
n = 0; n = 0;
if (sk->pubkey_algo == PUBKEY_ALGO_ECDH) if (sk->pubkey_algo == PUBKEY_ALGO_ECDH)
@ -361,7 +361,7 @@ get_it (ctrl_t ctrl,
if (DBG_CLOCK) if (DBG_CLOCK)
log_clock ("decryption ready"); log_clock ("decryption ready");
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("DEK is:", dek->key, dek->keylen); log_printhex (dek->key, dek->keylen, "DEK is:");
/* Check that the algo is in the preferences and whether it has /* Check that the algo is in the preferences and whether it has
* expired. Also print a status line with the key's fingerprint. */ * expired. Also print a status line with the key's fingerprint. */

View File

@ -366,7 +366,7 @@ create_inq_cb (void *opaque, const char *line)
void *ciphertext; void *ciphertext;
size_t ciphertextlen; size_t ciphertextlen;
log_printhex ("plain", plaintext, plaintextlen); log_printhex (plaintext, plaintextlen, "plain");
err = g13_encrypt_keyblob (parm->ctrl, err = g13_encrypt_keyblob (parm->ctrl,
plaintext, plaintextlen, plaintext, plaintextlen,
&ciphertext, &ciphertextlen); &ciphertext, &ciphertextlen);

View File

@ -318,7 +318,7 @@ dump_tupledesc (tupledesc_t tuples)
if (n < 100 && all_printable (value, n)) if (n < 100 && all_printable (value, n))
log_printf ("%.*s\n", (int)n, (const char*)value); log_printf ("%.*s\n", (int)n, (const char*)value);
else else
log_printhex ("", value, n); log_printhex (value, n, "");
break; break;
case KEYBLOB_TAG_CONT_NSEC: case KEYBLOB_TAG_CONT_NSEC:
@ -327,11 +327,11 @@ dump_tupledesc (tupledesc_t tuples)
if (!convert_uint (value, n, &uint)) if (!convert_uint (value, n, &uint))
log_printf ("%llu\n", uint); log_printf ("%llu\n", uint);
else else
log_printhex ("", value, n); log_printhex (value, n, "");
break; break;
default: default:
log_printhex ("", value, n); log_printhex (value, n, "");
break; break;
} }
} }

View File

@ -470,7 +470,7 @@ dump_reader_status (int slot)
if (reader_table[slot].atrlen) if (reader_table[slot].atrlen)
{ {
log_info ("slot %d: ATR=", slot); log_info ("slot %d: ATR=", slot);
log_printhex ("", reader_table[slot].atr, reader_table[slot].atrlen); log_printhex (reader_table[slot].atr, reader_table[slot].atrlen, "");
} }
} }
@ -725,7 +725,7 @@ pcsc_send_apdu (int slot, unsigned char *apdu, size_t apdulen,
return err; return err;
if (DBG_CARD_IO) if (DBG_CARD_IO)
log_printhex (" PCSC_data:", apdu, apdulen); log_printhex (apdu, apdulen, " PCSC_data:");
if ((reader_table[slot].pcsc.protocol & PCSC_PROTOCOL_T1)) if ((reader_table[slot].pcsc.protocol & PCSC_PROTOCOL_T1))
send_pci.protocol = PCSC_PROTOCOL_T1; send_pci.protocol = PCSC_PROTOCOL_T1;
@ -1421,7 +1421,7 @@ send_apdu_ccid (int slot, unsigned char *apdu, size_t apdulen,
return err; return err;
if (DBG_CARD_IO) if (DBG_CARD_IO)
log_printhex (" raw apdu:", apdu, apdulen); log_printhex (apdu, apdulen, " raw apdu:");
maxbuflen = *buflen; maxbuflen = *buflen;
if (pininfo) if (pininfo)
@ -1690,7 +1690,7 @@ my_rapdu_send_apdu (int slot, unsigned char *apdu, size_t apdulen,
*buflen = 0; *buflen = 0;
if (DBG_CARD_IO) if (DBG_CARD_IO)
log_printhex (" APDU_data:", apdu, apdulen); log_printhex (apdu, apdulen, " APDU_data:");
if (apdulen < 4) if (apdulen < 4)
{ {
@ -2823,7 +2823,7 @@ send_le (int slot, int class, int ins, int p0, int p1,
log_debug (" response: sw=%04X datalen=%d\n", log_debug (" response: sw=%04X datalen=%d\n",
sw, (unsigned int)resultlen); sw, (unsigned int)resultlen);
if ( !retbuf && (sw == SW_SUCCESS || (sw & 0xff00) == SW_MORE_DATA)) if ( !retbuf && (sw == SW_SUCCESS || (sw & 0xff00) == SW_MORE_DATA))
log_printhex (" dump: ", result, resultlen); log_printhex (result, resultlen, " dump: ");
} }
if (sw == SW_SUCCESS || sw == SW_EOF_REACHED) if (sw == SW_SUCCESS || sw == SW_EOF_REACHED)
@ -2896,7 +2896,7 @@ send_le (int slot, int class, int ins, int p0, int p1,
log_debug (" more: sw=%04X datalen=%d\n", log_debug (" more: sw=%04X datalen=%d\n",
sw, (unsigned int)resultlen); sw, (unsigned int)resultlen);
if (!retbuf && (sw==SW_SUCCESS || (sw&0xff00)==SW_MORE_DATA)) if (!retbuf && (sw==SW_SUCCESS || (sw&0xff00)==SW_MORE_DATA))
log_printhex (" dump: ", result, resultlen); log_printhex (result, resultlen, " dump: ");
} }
if ((sw & 0xff00) == SW_MORE_DATA if ((sw & 0xff00) == SW_MORE_DATA
@ -2942,7 +2942,7 @@ send_le (int slot, int class, int ins, int p0, int p1,
xfree (result_buffer); xfree (result_buffer);
if (DBG_CARD_IO && retbuf && sw == SW_SUCCESS) if (DBG_CARD_IO && retbuf && sw == SW_SUCCESS)
log_printhex (" dump: ", *retbuf, *retbuflen); log_printhex (*retbuf, *retbuflen, " dump: ");
return sw; return sw;
} }
@ -3102,7 +3102,7 @@ apdu_send_direct (int slot, size_t extended_length,
log_debug (" response: sw=%04X datalen=%d\n", log_debug (" response: sw=%04X datalen=%d\n",
sw, (unsigned int)resultlen); sw, (unsigned int)resultlen);
if ( !retbuf && (sw == SW_SUCCESS || (sw & 0xff00) == SW_MORE_DATA)) if ( !retbuf && (sw == SW_SUCCESS || (sw & 0xff00) == SW_MORE_DATA))
log_printhex (" dump: ", result, resultlen); log_printhex (result, resultlen, " dump: ");
} }
if (handle_more && (sw & 0xff00) == SW_MORE_DATA) if (handle_more && (sw & 0xff00) == SW_MORE_DATA)
@ -3158,7 +3158,7 @@ apdu_send_direct (int slot, size_t extended_length,
log_debug (" more: sw=%04X datalen=%d\n", log_debug (" more: sw=%04X datalen=%d\n",
sw, (unsigned int)resultlen); sw, (unsigned int)resultlen);
if (!retbuf && (sw==SW_SUCCESS || (sw&0xff00)==SW_MORE_DATA)) if (!retbuf && (sw==SW_SUCCESS || (sw&0xff00)==SW_MORE_DATA))
log_printhex (" dump: ", result, resultlen); log_printhex (result, resultlen, " dump: ");
} }
if ((sw & 0xff00) == SW_MORE_DATA if ((sw & 0xff00) == SW_MORE_DATA
@ -3227,7 +3227,7 @@ apdu_send_direct (int slot, size_t extended_length,
} }
if (DBG_CARD_IO && retbuf) if (DBG_CARD_IO && retbuf)
log_printhex (" dump: ", *retbuf, *retbuflen); log_printhex (*retbuf, *retbuflen, " dump: ");
return 0; return 0;
} }

View File

@ -558,7 +558,7 @@ dump_all_do (int slot)
if (data_objects[i].binary) if (data_objects[i].binary)
{ {
log_info ("DO '%s': ", data_objects[i].desc); log_info ("DO '%s': ", data_objects[i].desc);
log_printhex ("", buffer, buflen); log_printhex (buffer, buflen, "");
} }
else else
log_info ("DO '%s': '%.*s'\n", log_info ("DO '%s': '%.*s'\n",
@ -588,7 +588,7 @@ dump_all_do (int slot)
if (valuelen > 200) if (valuelen > 200)
log_info ("[%u]\n", (unsigned int)valuelen); log_info ("[%u]\n", (unsigned int)valuelen);
else else
log_printhex ("", value, valuelen); log_printhex (value, valuelen, "");
} }
else else
log_info ("DO '%s': '%.*s'\n", log_info ("DO '%s': '%.*s'\n",
@ -4973,7 +4973,7 @@ parse_algorithm_attribute (app_t app, int keyno)
curve = ecc_curve (buffer + 1, oidlen); curve = ecc_curve (buffer + 1, oidlen);
if (!curve) if (!curve)
log_printhex ("Curve with OID not supported: ", buffer+1, buflen-1); log_printhex (buffer+1, buflen-1, "Curve with OID not supported: ");
else else
{ {
app->app_local->keyattr[keyno].key_type = KEY_TYPE_ECC; app->app_local->keyattr[keyno].key_type = KEY_TYPE_ECC;
@ -4991,7 +4991,7 @@ parse_algorithm_attribute (app_t app, int keyno)
} }
} }
else if (opt.verbose) else if (opt.verbose)
log_printhex ("", buffer, buflen); log_printhex (buffer, buflen, "");
xfree (relptr); xfree (relptr);
} }
@ -5033,7 +5033,7 @@ app_select_openpgp (app_t app)
if (opt.verbose) if (opt.verbose)
{ {
log_info ("AID: "); log_info ("AID: ");
log_printhex ("", buffer, buflen); log_printhex (buffer, buflen, "");
} }
app->card_version = buffer[6] << 8; app->card_version = buffer[6] << 8;
@ -5066,7 +5066,7 @@ app_select_openpgp (app_t app)
if (opt.verbose) if (opt.verbose)
{ {
log_info ("Historical Bytes: "); log_info ("Historical Bytes: ");
log_printhex ("", buffer, buflen); log_printhex (buffer, buflen, "");
} }
parse_historical (app->app_local, buffer, buflen); parse_historical (app->app_local, buffer, buflen);
xfree (relptr); xfree (relptr);

View File

@ -2274,7 +2274,7 @@ read_ef_tokeninfo (app_t app)
} }
memcpy (app->app_local->serialno, p, objlen); memcpy (app->app_local->serialno, p, objlen);
app->app_local->serialnolen = objlen; app->app_local->serialnolen = objlen;
log_printhex ("Serialnumber from EF(TokenInfo) is:", p, objlen); log_printhex (p, objlen, "Serialnumber from EF(TokenInfo) is:");
leave: leave:
xfree (buffer); xfree (buffer);
@ -2781,7 +2781,7 @@ micardo_mse (app_t app, unsigned short fid)
gpg_strerror (err)); gpg_strerror (err));
return err; return err;
} }
log_printhex ("keyD record:", buffer, buflen); log_printhex (buffer, buflen, "keyD record:");
p = find_tlv (buffer, buflen, 0x83, &n); p = find_tlv (buffer, buflen, 0x83, &n);
if (p && n == 4 && ((p[2]<<8)|p[3]) == fid) if (p && n == 4 && ((p[2]<<8)|p[3]) == fid)
{ {

View File

@ -374,7 +374,7 @@ gpgsm_check_cms_signature (ksba_cert_t cert, ksba_const_sexp_t sigval,
return gpg_error (GPG_ERR_BUG); return gpg_error (GPG_ERR_BUG);
} }
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("public key: ", p, n); log_printhex (p, n, "public key: ");
rc = gcry_sexp_sscan ( &s_pkey, NULL, (char*)p, n); rc = gcry_sexp_sscan ( &s_pkey, NULL, (char*)p, n);
ksba_free (p); ksba_free (p);

View File

@ -167,7 +167,7 @@ gpgsm_dump_string (const char *string)
else else
{ {
log_printf ( "[ "); log_printf ( "[ ");
log_printhex (NULL, string, strlen (string)); log_printhex (string, strlen (string), NULL);
log_printf ( " ]"); log_printf ( " ]");
} }
} }

View File

@ -72,7 +72,7 @@ prepare_decryption (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
} }
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("pkcs1 encoded session key:", seskey, seskeylen); log_printhex (seskey, seskeylen, "pkcs1 encoded session key:");
n=0; n=0;
if (seskeylen == 24 || seskeylen == 16) if (seskeylen == 24 || seskeylen == 16)
@ -115,7 +115,7 @@ prepare_decryption (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
} }
if (DBG_CRYPTO) if (DBG_CRYPTO)
log_printhex ("session key:", seskey+n, seskeylen-n); log_printhex (seskey+n, seskeylen-n, "session key:");
rc = gcry_cipher_open (&parm->hd, parm->algo, parm->mode, 0); rc = gcry_cipher_open (&parm->hd, parm->algo, parm->mode, 0);
if (rc) if (rc)

View File

@ -196,7 +196,7 @@ gpgsm_get_keygrip (ksba_cert_t cert, unsigned char *array)
return NULL; return NULL;
} }
if (DBG_X509) if (DBG_X509)
log_printhex ("keygrip=", array, 20); log_printhex (array, 20, "keygrip=");
return array; return array;
} }

View File

@ -836,7 +836,7 @@ parse_p12 (ctrl_t ctrl, ksba_reader_t reader, struct stats_s *stats)
log_error ("can't calculate keygrip\n"); log_error ("can't calculate keygrip\n");
goto leave; goto leave;
} }
log_printhex ("keygrip=", grip, 20); log_printhex (grip, 20, "keygrip=");
/* Convert to canonical encoding using a function which pads it to a /* Convert to canonical encoding using a function which pads it to a
multiple of 64 bits. We need this padding for AESWRAP. */ multiple of 64 bits. We need this padding for AESWRAP. */

View File

@ -512,10 +512,10 @@ gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, estream_t out_fp)
if (DBG_X509) if (DBG_X509)
{ {
if (msgdigest) if (msgdigest)
log_printhex ("message: ", msgdigest, msgdigestlen); log_printhex (msgdigest, msgdigestlen, "message: ");
if (s) if (s)
log_printhex ("computed: ", log_printhex (s, gcry_md_get_algo_dlen (algo),
s, gcry_md_get_algo_dlen (algo)); "computed: ");
} }
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);