summaryrefslogtreecommitdiffstats
path: root/scd/apdu.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2022-11-17 14:22:04 +0100
committerWerner Koch <wk@gnupg.org>2022-11-17 14:33:18 +0100
commit9f7ff43672478b213582125a7d288c96c5bb73b9 (patch)
tree1cd0eba02f01ca348ff28812d89ade90ff8fbdcb /scd/apdu.c
parentcommon: Remove Windows CE support in common. (diff)
downloadgnupg2-9f7ff43672478b213582125a7d288c96c5bb73b9.tar.xz
gnupg2-9f7ff43672478b213582125a7d288c96c5bb73b9.zip
scd: Redact --debug cardio output of a VERIFY APDU.
* scd/apdu.c (pcsc_send_apdu) [DBG_CARD_IO]: Detect and redact a VERIFY. (send_apdu_ccid): Ditto. -- This should handle the most common case. GnuPG-bug-id: 5085
Diffstat (limited to 'scd/apdu.c')
-rw-r--r--scd/apdu.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/scd/apdu.c b/scd/apdu.c
index e83815ba5..ffada1d78 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -773,7 +773,14 @@ pcsc_send_apdu (int slot, unsigned char *apdu, size_t apdulen,
return err;
if (DBG_CARD_IO)
- log_printhex (apdu, apdulen, " PCSC_data:");
+ {
+ /* Do not dump the PIN in a VERIFY command. */
+ if (apdulen > 5 && apdu[1] == 0x20)
+ log_debug ("PCSC_data: %02X %02X %02X %02X %02X [redacted]\n",
+ apdu[0], apdu[1], apdu[2], apdu[3], apdu[4]);
+ else
+ log_printhex (apdu, apdulen, "PCSC_data:");
+ }
if ((reader_table[slot].pcsc.protocol & PCSC_PROTOCOL_T1))
send_pci.protocol = PCSC_PROTOCOL_T1;
@@ -1555,7 +1562,14 @@ send_apdu_ccid (int slot, unsigned char *apdu, size_t apdulen,
return err;
if (DBG_CARD_IO)
- log_printhex (apdu, apdulen, " raw apdu:");
+ {
+ /* Do not dump the PIN in a VERIFY command. */
+ if (apdulen > 5 && apdu[1] == 0x20)
+ log_debug (" raw apdu: %02x%02x%02x%02x%02x [redacted]\n",
+ apdu[0], apdu[1], apdu[2], apdu[3], apdu[4]);
+ else
+ log_printhex (apdu, apdulen, " raw apdu:");
+ }
maxbuflen = *buflen;
if (pininfo)