aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-09-27 05:58:02 +0000
committerWerner Koch <[email protected]>2017-09-27 05:59:07 +0000
commit6aa4478c78cb34cf3d0ae5c752525110947bd247 (patch)
tree7345a77a543e33177143c554eac5a74a8bb5d78b
parentMerge branch 'STABLE-BRANCH-2-2' into master (diff)
downloadgnupg-6aa4478c78cb34cf3d0ae5c752525110947bd247.tar.gz
gnupg-6aa4478c78cb34cf3d0ae5c752525110947bd247.zip
gpg: Let --debug clock time sign and verify.
* configure.ac (ENABLE_LOG_CLOCK): New ac_define and option. * common/logging.c (log_clock): Use ENABLE_LOG_CLOCK to enable timestamp printing. * g10/call-agent.c (agent_pksign): Time signing. * g10/sig-check.c (check_signature_end_simple): Time verification. -- Timing for verification is limited to data signatures because this is the most common thing to evaluate. We should consider to change log_clock to printf style so that we could print the signature class and other info. Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--common/logging.c12
-rw-r--r--configure.ac15
-rw-r--r--g10/call-agent.c6
-rw-r--r--g10/sig-check.c4
4 files changed, 31 insertions, 6 deletions
diff --git a/common/logging.c b/common/logging.c
index c4eaca411..82b21e25b 100644
--- a/common/logging.c
+++ b/common/logging.c
@@ -1039,11 +1039,11 @@ log_printsexp () {}
is found in sexputils.c
*/
-
+/* Print a microsecond timestamp followed by STRING. */
void
log_clock (const char *string)
{
-#if 0
+#if ENABLE_LOG_CLOCK
static unsigned long long initial;
struct timespec tv;
unsigned long long now;
@@ -1060,10 +1060,10 @@ log_clock (const char *string)
initial = now;
log_debug ("[%6llu] %s", (now - initial)/1000, string);
-#else
- /* You need to link with -ltr to enable the above code. */
- log_debug ("[not enabled in the source] %s", string);
-#endif
+#else /*!ENABLE_LOG_CLOCK*/
+ /* You may need to link with -ltr to use the above code. */
+ log_debug ("[not enabled by configure] %s", string);
+#endif /*!ENABLE_LOG_CLOCK*/
}
diff --git a/configure.ac b/configure.ac
index b43cb60b4..c479325e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1680,6 +1680,21 @@ AC_ARG_ENABLE(optimization,
fi])
#
+# log_debug has certain requirements which might hamper portability.
+# Thus we use an option to enable it.
+#
+AC_MSG_CHECKING([whether to enable log_clock])
+AC_ARG_ENABLE(log_clock,
+ AC_HELP_STRING([--enable-log-clock],
+ [enable log_clock timestamps]),
+ enable_log_clock=$enableval, enable_log_clock=no)
+AC_MSG_RESULT($enable_log_clock)
+if test "$enable_log_clock" = yes ; then
+ AC_DEFINE(ENABLE_LOG_CLOCK,1,[Defined to use log_clock timestamps])
+fi
+
+
+#
# Configure option --enable-all-tests
#
AC_MSG_CHECKING([whether "make check" shall run all tests])
diff --git a/g10/call-agent.c b/g10/call-agent.c
index 545b2448a..3874ac181 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -1854,10 +1854,16 @@ agent_pksign (ctrl_t ctrl, const char *cache_nonce,
snprintf (line, sizeof line, "PKSIGN%s%s",
cache_nonce? " -- ":"",
cache_nonce? cache_nonce:"");
+
+ if (DBG_CLOCK)
+ log_clock ("enter signing");
err = assuan_transact (agent_ctx, line,
put_membuf_cb, &data,
default_inq_cb, &dfltparm,
NULL, NULL);
+ if (DBG_CLOCK)
+ log_clock ("leave signing");
+
if (err)
xfree (get_membuf (&data, NULL));
else
diff --git a/g10/sig-check.c b/g10/sig-check.c
index 23af12b2e..63c38a64a 100644
--- a/g10/sig-check.c
+++ b/g10/sig-check.c
@@ -510,7 +510,11 @@ check_signature_end_simple (PKT_public_key *pk, PKT_signature *sig,
return GPG_ERR_GENERAL;
/* Verify the signature. */
+ if (DBG_CLOCK && sig->sig_class <= 0x01)
+ log_clock ("enter pk_verify");
rc = pk_verify( pk->pubkey_algo, result, sig->data, pk->pkey );
+ if (DBG_CLOCK && sig->sig_class <= 0x01)
+ log_clock ("leave pk_verify");
gcry_mpi_release (result);
if( !rc && sig->flags.unknown_critical )