agent: Add option --debug-pinentry.
authorWerner Koch <wk@gnupg.org>
Mon, 11 May 2015 08:23:24 +0000 (10:23 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 11 May 2015 08:23:24 +0000 (10:23 +0200)
* agent/gpg-agent.c (oDebugPinentry): New.
(opts): Add --debug-pinentry.
(parse_rereadable_options): Set that option.
* agent/call-pinentry.c (start_pinentry): Pass option to
assuan_set_flag.
--

This option is quite useful to see the IPC between gpg-agent and
Pinentry.  Note that "debug 1024" is also required.

Signed-off-by: Werner Koch <wk@gnupg.org>
agent/agent.h
agent/call-pinentry.c
agent/gpg-agent.c
doc/gpg-agent.texi

index b374ee8..4d28eff 100644 (file)
@@ -67,6 +67,9 @@ struct
   char *startup_lc_ctype;
   char *startup_lc_messages;
 
+  /* Enable pinentry debugging (--debug 1024 should also be used).  */
+  int debug_pinentry;
+
   /* Filename of the program to start as pinentry.  */
   const char *pinentry_program;
 
index 0a0f95b..8cbb33e 100644 (file)
@@ -332,7 +332,7 @@ start_pinentry (ctrl_t ctrl)
      easier to read.  We might want to add a new debug option to enable
      pinentry logging.  */
 #ifdef ASSUAN_NO_LOGGING
-  assuan_set_flag (ctx, ASSUAN_NO_LOGGING, 1);
+  assuan_set_flag (ctx, ASSUAN_NO_LOGGING, !opt.debug_pinentry);
 #endif
 
   /* Connect to the pinentry and perform initial handshaking.  Note
index c27de89..c846ab4 100644 (file)
@@ -79,6 +79,7 @@ enum cmd_and_opt_values
   oDebugLevel,
   oDebugWait,
   oDebugQuickRandom,
+  oDebugPinentry,
   oNoGreeting,
   oNoOptions,
   oHomedir,
@@ -154,6 +155,7 @@ static ARGPARSE_OPTS opts[] = {
   ARGPARSE_s_s (oDebugLevel, "debug-level", "@"),
   ARGPARSE_s_i (oDebugWait,"  debug-wait",  "@"),
   ARGPARSE_s_n (oDebugQuickRandom, "debug-quick-random", "@"),
+  ARGPARSE_s_n (oDebugPinentry, "debug-pinentry", "@"),
 
   ARGPARSE_s_n (oNoDetach,  "no-detach", N_("do not detach from the console")),
   ARGPARSE_s_n (oNoGrab,    "no-grab",   N_("do not grab keyboard and mouse")),
@@ -539,6 +541,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
       opt.verbose = 0;
       opt.debug = 0;
       opt.no_grab = 0;
+      opt.debug_pinentry = 0;
       opt.pinentry_program = NULL;
       opt.pinentry_touch_file = NULL;
       opt.scdaemon_program = NULL;
@@ -567,6 +570,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
     case oDebug: opt.debug |= pargs->r.ret_ulong; break;
     case oDebugAll: opt.debug = ~0; break;
     case oDebugLevel: debug_level = pargs->r.ret_str; break;
+    case oDebugPinentry: opt.debug_pinentry = 1; break;
 
     case oLogFile:
       if (!reread)
index 3e77909..469c762 100644 (file)
@@ -301,6 +301,12 @@ down to standard random quality.  It is only used for testing and
 shall not be used for any production quality keys.  This option is
 only effective when given on the command line.
 
+@item --debug-pinentry
+@opindex debug-pinentry
+This option enables extra debug information pertaining to the
+Pinentry.  As of now it is only useful when used along with
+@code{--debug 1024}.
+
 @item --no-detach
 @opindex no-detach
 Don't detach the process from the console.  This is mainly useful for
@@ -753,6 +759,7 @@ This signal flushes all cached passphrases and if the program has been
 started with a configuration file, the configuration file is read
 again.  Only certain options are honored: @code{quiet},
 @code{verbose}, @code{debug}, @code{debug-all}, @code{debug-level},
+@code{debug-pinentry},
 @code{no-grab}, @code{pinentry-program}, @code{default-cache-ttl},
 @code{max-cache-ttl}, @code{ignore-cache-for-signing},
 @code{no-allow-mark-trusted}, @code{disable-scdaemon}, and