1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-11 22:01:08 +02:00

scd: New option --debug-assuan-log-cats.

* scd/scdaemon.c (oDebugAssuanLogCats): New.
(opts): Add option --debug-assuan-log-cats.
(main): Implement option.
* common/asshelp.c (set_libassuan_log_cats): New.

--

The old way of setting the logging categories with an environment
variable is awkward if sdaemon is spawned from a running gpg-agent.
This commit is contained in:
Werner Koch 2011-12-13 17:59:00 +01:00
parent 24e121ef26
commit 00c760f628
4 changed files with 47 additions and 19 deletions

View File

@ -97,6 +97,19 @@ setup_libassuan_logging (unsigned int *debug_var_address)
assuan_set_log_cb (my_libassuan_log_handler, debug_var_address); assuan_set_log_cb (my_libassuan_log_handler, debug_var_address);
} }
/* Change the Libassuan log categories to those given by NEWCATS.
NEWCATS is 0 the default category of ASSUAN_LOG_CONTROL is
selected. Note, that setup_libassuan_logging overrides the values
given here. */
void
set_libassuan_log_cats (unsigned int newcats)
{
if (newcats)
log_cats = newcats;
else /* Default to log the control channel. */
log_cats = (1 << (ASSUAN_LOG_CONTROL - 1));
}
static gpg_error_t static gpg_error_t

View File

@ -26,6 +26,7 @@
#include "session-env.h" #include "session-env.h"
void setup_libassuan_logging (unsigned int *debug_var_address); void setup_libassuan_logging (unsigned int *debug_var_address);
void set_libassuan_log_cats (unsigned int newcats);
gpg_error_t gpg_error_t

View File

@ -21,16 +21,16 @@
.IR dir ] .IR dir ]
.RB [ \-\-options .RB [ \-\-options
.IR file ] .IR file ]
.RI [ options ] .RI [ options ]
.B \-\-server .B \-\-server
.br .br
.B scdaemon .B scdaemon
.RB [ \-\-homedir .RB [ \-\-homedir
.IR dir ] .IR dir ]
.RB [ \-\-options .RB [ \-\-options
.IR file ] .IR file ]
.RI [ options ] .RI [ options ]
.B \-\-daemon .B \-\-daemon
.RI [ command_line ] .RI [ command_line ]
@end ifset @end ifset
@ -130,7 +130,7 @@ a numeric value or a keyword:
@item none @item none
No debugging at all. A value of less than 1 may be used instead of No debugging at all. A value of less than 1 may be used instead of
the keyword. the keyword.
@item basic @item basic
Some basic debug messages. A value between 1 and 2 may be used Some basic debug messages. A value between 1 and 2 may be used
instead of the keyword. instead of the keyword.
@item advanced @item advanced
@ -165,8 +165,8 @@ usual C-Syntax. The currently defined bits are:
@table @code @table @code
@item 0 (1) @item 0 (1)
command I/O command I/O
@item 1 (2) @item 1 (2)
values of big number integers values of big number integers
@item 2 (4) @item 2 (4)
low level crypto operations low level crypto operations
@item 5 (32) @item 5 (32)
@ -178,7 +178,7 @@ show memory statistics.
@item 9 (512) @item 9 (512)
write hashed data to files named @code{dbgmd-000*} write hashed data to files named @code{dbgmd-000*}
@item 10 (1024) @item 10 (1024)
trace Assuan protocol trace Assuan protocol. See also option @option{--debug-assuan-log-cats}.
@item 11 (2048) @item 11 (2048)
trace APDU I/O to the card. This may reveal sensitive data. trace APDU I/O to the card. This may reveal sensitive data.
@end table @end table
@ -215,6 +215,15 @@ dump. This options enables it and also changes the working directory to
@opindex debug-log-tid @opindex debug-log-tid
This option appends a thread ID to the PID in the log output. This option appends a thread ID to the PID in the log output.
@item --debug-assuan-log-cats @var{cats}
@opindex debug-assuan-log-cats
Changes the active Libassuan logging categories to @var{cats}. The
value for @var{cats} is an unsigned integer given in usual C-Syntax.
A value of of 0 switches to a default category. If this option is not
used the categories are taken from the environment variable
@samp{ASSUAN_DEBUG}. Note that this option has only an effect if the
Assuan debug flag has also been with the option @option{--debug}. For
a list of categories see the Libassuan manual.
@item --no-detach @item --no-detach
@opindex no-detach @opindex no-detach
@ -240,7 +249,7 @@ Use @var{library} to access the smartcard reader. The current default
is @file{libtowitoko.so}. Note that the use of this interface is is @file{libtowitoko.so}. Note that the use of this interface is
deprecated; it may be removed in future releases. deprecated; it may be removed in future releases.
@item --disable-ccid @item --disable-ccid
@opindex disable-ccid @opindex disable-ccid
Disable the integrated support for CCID compliant readers. This Disable the integrated support for CCID compliant readers. This
allows to fall back to one of the other drivers even if the internal allows to fall back to one of the other drivers even if the internal
@ -325,7 +334,7 @@ stripping off the two leading dashes.
This application is currently only used by @command{gpg} but may in This application is currently only used by @command{gpg} but may in
future also be useful with @command{gpgsm}. Version 1 and version 2 of future also be useful with @command{gpgsm}. Version 1 and version 2 of
the card is supported. the card is supported.
The specifications for these cards are available at The specifications for these cards are available at
@uref{http://g10code.com/docs/openpgp-card-1.0.pdf} and @uref{http://g10code.com/docs/openpgp-card-1.0.pdf} and
@ -395,7 +404,7 @@ about reader status changes. Its use is now deprecated in favor of
@end table @end table
@c @c
@c Examples @c Examples
@c @c
@mansect examples @mansect examples
@ -410,7 +419,7 @@ $ scdaemon --server -v
@c man end @c man end
@c @c
@c Assuan Protocol @c Assuan Protocol
@c @c
@manpause @manpause
@ -447,7 +456,7 @@ synchronizing access to a token between sessions.
* Scdaemon APDU:: Send a verbatim APDU to the card * Scdaemon APDU:: Send a verbatim APDU to the card
@end menu @end menu
@node Scdaemon SERIALNO @node Scdaemon SERIALNO
@subsection Return the serial number @subsection Return the serial number
This command should be used to check for the presence of a card. It is This command should be used to check for the presence of a card. It is
@ -470,7 +479,7 @@ Return the serial number of the card using a status response like:
@end example @end example
The trailing 0 should be ignored for now, it is reserved for a future The trailing 0 should be ignored for now, it is reserved for a future
extension. The serial number is the hex encoded value identified by extension. The serial number is the hex encoded value identified by
the @code{0x5A} tag in the GDO file (FIX=0x2F02). the @code{0x5A} tag in the GDO file (FIX=0x2F02).
@ -522,7 +531,7 @@ READKEY @var{hexified_certid}
@end example @end example
Return the public key for the given cert or key ID as an standard Return the public key for the given cert or key ID as an standard
S-Expression. S-Expression.
@ -619,7 +628,7 @@ TO BE WRITTEN.
@example @example
PASSWD [--reset] [--nullpin] @var{chvno} PASSWD [--reset] [--nullpin] @var{chvno}
@end example @end example
Change the PIN or reset the retry counter of the card holder Change the PIN or reset the retry counter of the card holder
verification vector number @var{chvno}. The option @option{--nullpin} verification vector number @var{chvno}. The option @option{--nullpin}
is used to initialize the PIN of TCOS cards (6 byte NullPIN only). is used to initialize the PIN of TCOS cards (6 byte NullPIN only).
@ -663,11 +672,11 @@ and only if the retry counter is still at 3.
Restart the current connection; this is a kind of warm reset. It Restart the current connection; this is a kind of warm reset. It
deletes the context used by this connection but does not actually deletes the context used by this connection but does not actually
reset the card. reset the card.
This is used by gpg-agent to reuse a primary pipe connection and This is used by gpg-agent to reuse a primary pipe connection and
may be used by clients to backup from a conflict in the serial may be used by clients to backup from a conflict in the serial
command; i.e. to select another application. command; i.e. to select another application.
@ -704,7 +713,7 @@ length up to N bytes. If N is not given a default value is used
@mansect see also @mansect see also
@ifset isman @ifset isman
@command{gpg-agent}(1), @command{gpg-agent}(1),
@command{gpgsm}(1), @command{gpgsm}(1),
@command{gpg2}(1) @command{gpg2}(1)
@end ifset @end ifset
@include see-also-note.texi @include see-also-note.texi

View File

@ -72,6 +72,7 @@ enum cmd_and_opt_values
oDebugAllowCoreDump, oDebugAllowCoreDump,
oDebugCCIDDriver, oDebugCCIDDriver,
oDebugLogTid, oDebugLogTid,
oDebugAssuanLogCats,
oNoGreeting, oNoGreeting,
oNoOptions, oNoOptions,
oHomedir, oHomedir,
@ -121,6 +122,7 @@ static ARGPARSE_OPTS opts[] = {
ARGPARSE_s_n (oDebugCCIDDriver, "debug-ccid-driver", "@"), ARGPARSE_s_n (oDebugCCIDDriver, "debug-ccid-driver", "@"),
ARGPARSE_s_n (oDebugDisableTicker, "debug-disable-ticker", "@"), ARGPARSE_s_n (oDebugDisableTicker, "debug-disable-ticker", "@"),
ARGPARSE_s_n (oDebugLogTid, "debug-log-tid", "@"), ARGPARSE_s_n (oDebugLogTid, "debug-log-tid", "@"),
ARGPARSE_p_u (oDebugAssuanLogCats, "debug-assuan-log-cats", "@"),
ARGPARSE_s_n (oNoDetach, "no-detach", N_("do not detach from the console")), ARGPARSE_s_n (oNoDetach, "no-detach", N_("do not detach from the console")),
ARGPARSE_s_s (oLogFile, "log-file", N_("|FILE|write a log to FILE")), ARGPARSE_s_s (oLogFile, "log-file", N_("|FILE|write a log to FILE")),
ARGPARSE_s_s (oReaderPort, "reader-port", ARGPARSE_s_s (oReaderPort, "reader-port",
@ -553,6 +555,9 @@ main (int argc, char **argv )
case oDebugLogTid: case oDebugLogTid:
log_set_pid_suffix_cb (tid_log_callback); log_set_pid_suffix_cb (tid_log_callback);
break; break;
case oDebugAssuanLogCats:
set_libassuan_log_cats (pargs.r.ret_ulong);
break;
case oOptions: case oOptions:
/* config files may not be nested (silently ignore them) */ /* config files may not be nested (silently ignore them) */