diff options
author | Werner Koch <[email protected]> | 2019-09-05 10:59:56 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-09-05 11:02:59 +0000 |
commit | 4e701953fec6efb10aaf34373e648b1dcafba054 (patch) | |
tree | 013cd3feeada4f6fef8a4cf9bad1fbd249cd0479 | |
parent | agent: Fix ask_for_card to allow a key on multiple cards. (diff) | |
download | gnupg-4e701953fec6efb10aaf34373e648b1dcafba054.tar.gz gnupg-4e701953fec6efb10aaf34373e648b1dcafba054.zip |
scd: New debug flag "app".
* scd/scdaemon.h (DBG_APP_VALUE, DBG_APP): New.
* scd/scdaemon.c (debug_flags): Add "app".
* scd/app.c (xstrapptype): New.
(app_readcert, app_readkey, app_getattr): Add debug output.
(app_setattr, app_sign, app_auth): Ditto.
(app_writecert, app_writekey, app_change_pin): Ditto.
(app_check_pin): Ditto.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | scd/app.c | 121 | ||||
-rw-r--r-- | scd/scdaemon.c | 1 | ||||
-rw-r--r-- | scd/scdaemon.h | 2 |
3 files changed, 97 insertions, 27 deletions
@@ -96,6 +96,13 @@ strapptype (apptype_t t) } +const char * +xstrapptype (app_t app) +{ + return app? strapptype (app->apptype) : "[no_app]"; +} + + /* Return the apptype for NAME. */ static apptype_t apptype_from_name (const char *name) @@ -1218,7 +1225,12 @@ app_readcert (card_t card, ctrl_t ctrl, const char *certid, else if (!card->app->fnc.readcert) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.readcert (card->app, certid, cert, certlen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling readcert(%s)\n", + card->slot, xstrapptype (card->app), certid); + err = card->app->fnc.readcert (card->app, certid, cert, certlen); + } unlock_card (card); return err; @@ -1255,7 +1267,12 @@ app_readkey (card_t card, ctrl_t ctrl, const char *keyid, unsigned int flags, else if (!card->app->fnc.readkey) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.readkey (card->app, ctrl, keyid, flags, pk, pklen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling readkey(%s)\n", + card->slot, xstrapptype (card->app), keyid); + err = card->app->fnc.readkey (card->app, ctrl, keyid, flags, pk, pklen); + } unlock_card (card); return err; @@ -1300,7 +1317,12 @@ app_getattr (card_t card, ctrl_t ctrl, const char *name) else if (!card->app->fnc.getattr) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.getattr (card->app, ctrl, name); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling getattr(%s)\n", + card->slot, xstrapptype (card->app), name); + err = card->app->fnc.getattr (card->app, ctrl, name); + } unlock_card (card); return err; @@ -1327,8 +1349,13 @@ app_setattr (card_t card, ctrl_t ctrl, const char *name, else if (!card->app->fnc.setattr) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.setattr (card->app, name, pincb, pincb_arg, - value, valuelen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling setattr(%s)\n", + card->slot, xstrapptype (card->app), name); + err = card->app->fnc.setattr (card->app, name, pincb, pincb_arg, + value, valuelen); + } unlock_card (card); return err; @@ -1358,10 +1385,15 @@ app_sign (card_t card, ctrl_t ctrl, const char *keyidstr, int hashalgo, else if (!card->app->fnc.sign) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.sign (card->app, keyidstr, hashalgo, - pincb, pincb_arg, - indata, indatalen, - outdata, outdatalen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling sign(%s)\n", + card->slot, xstrapptype (card->app), keyidstr); + err = card->app->fnc.sign (card->app, keyidstr, hashalgo, + pincb, pincb_arg, + indata, indatalen, + outdata, outdatalen); + } unlock_card (card); if (opt.verbose) @@ -1394,10 +1426,15 @@ app_auth (card_t card, ctrl_t ctrl, const char *keyidstr, else if (!card->app->fnc.auth) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.auth (card->app, keyidstr, - pincb, pincb_arg, - indata, indatalen, - outdata, outdatalen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling auth(%s)\n", + card->slot, xstrapptype (card->app), keyidstr); + err = card->app->fnc.auth (card->app, keyidstr, + pincb, pincb_arg, + indata, indatalen, + outdata, outdatalen); + } unlock_card (card); if (opt.verbose) @@ -1432,11 +1469,16 @@ app_decipher (card_t card, ctrl_t ctrl, const char *keyidstr, else if (!card->app->fnc.decipher) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.decipher (card->app, keyidstr, - pincb, pincb_arg, - indata, indatalen, - outdata, outdatalen, - r_info); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling decipher(%s)\n", + card->slot, xstrapptype (card->app), keyidstr); + err = card->app->fnc.decipher (card->app, keyidstr, + pincb, pincb_arg, + indata, indatalen, + outdata, outdatalen, + r_info); + } unlock_card (card); if (opt.verbose) @@ -1466,8 +1508,13 @@ app_writecert (card_t card, ctrl_t ctrl, else if (!card->app->fnc.writecert) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.writecert (card->app, ctrl, certidstr, - pincb, pincb_arg, data, datalen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling writecert(%s)\n", + card->slot, xstrapptype (card->app), certidstr); + err = card->app->fnc.writecert (card->app, ctrl, certidstr, + pincb, pincb_arg, data, datalen); + } unlock_card (card); if (opt.verbose) @@ -1497,8 +1544,13 @@ app_writekey (card_t card, ctrl_t ctrl, else if (!card->app->fnc.writekey) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.writekey (card->app, ctrl, keyidstr, flags, - pincb, pincb_arg, keydata, keydatalen); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling writekey(%s)\n", + card->slot, xstrapptype (card->app), keyidstr); + err = card->app->fnc.writekey (card->app, ctrl, keyidstr, flags, + pincb, pincb_arg, keydata, keydatalen); + } unlock_card (card); if (opt.verbose) @@ -1527,8 +1579,13 @@ app_genkey (card_t card, ctrl_t ctrl, const char *keynostr, else if (!card->app->fnc.genkey) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.genkey (card->app, ctrl, keynostr, keytype, flags, - createtime, pincb, pincb_arg); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling genkey(%s)\n", + card->slot, xstrapptype (card->app), keynostr); + err = card->app->fnc.genkey (card->app, ctrl, keynostr, keytype, flags, + createtime, pincb, pincb_arg); + } unlock_card (card); if (opt.verbose) @@ -1582,8 +1639,13 @@ app_change_pin (card_t card, ctrl_t ctrl, const char *chvnostr, else if (!card->app->fnc.change_pin) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.change_pin (card->app, ctrl, - chvnostr, flags, pincb, pincb_arg); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling change_pin(%s)\n", + card->slot, xstrapptype (card->app), chvnostr); + err = card->app->fnc.change_pin (card->app, ctrl, + chvnostr, flags, pincb, pincb_arg); + } unlock_card (card); if (opt.verbose) @@ -1613,7 +1675,12 @@ app_check_pin (card_t card, ctrl_t ctrl, const char *keyidstr, else if (!card->app->fnc.check_pin) err = gpg_error (GPG_ERR_UNSUPPORTED_OPERATION); else - err = card->app->fnc.check_pin (card->app, keyidstr, pincb, pincb_arg); + { + if (DBG_APP) + log_debug ("slot %d app %s: calling check_pin(%s)\n", + card->slot, xstrapptype (card->app), keyidstr); + err = card->app->fnc.check_pin (card->app, keyidstr, pincb, pincb_arg); + } unlock_card (card); if (opt.verbose) diff --git a/scd/scdaemon.c b/scd/scdaemon.c index e89569e5d..1796db386 100644 --- a/scd/scdaemon.c +++ b/scd/scdaemon.c @@ -177,6 +177,7 @@ static struct debug_flags_s debug_flags [] = { DBG_IPC_VALUE , "ipc" }, { DBG_CARD_IO_VALUE, "cardio" }, { DBG_READER_VALUE , "reader" }, + { DBG_APP_VALUE , "app" }, { 0, NULL } }; diff --git a/scd/scdaemon.h b/scd/scdaemon.h index 80c6a8cdf..3f2e3ed55 100644 --- a/scd/scdaemon.h +++ b/scd/scdaemon.h @@ -67,6 +67,7 @@ struct } opt; +#define DBG_APP_VALUE 1 /* Debug app speific stuff. */ #define DBG_MPI_VALUE 2 /* debug mpi details */ #define DBG_CRYPTO_VALUE 4 /* debug low level crypto */ #define DBG_MEMORY_VALUE 32 /* debug memory allocation stuff */ @@ -77,6 +78,7 @@ struct #define DBG_CARD_IO_VALUE 2048 #define DBG_READER_VALUE 4096 /* Trace reader related functions. */ +#define DBG_APP (opt.debug & DBG_APP_VALUE) #define DBG_CRYPTO (opt.debug & DBG_CRYPTO_VALUE) #define DBG_MEMORY (opt.debug & DBG_MEMORY_VALUE) #define DBG_CACHE (opt.debug & DBG_CACHE_VALUE) |