From f28795b615c3042f6eb7c9d941e232d0da50efbc Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 7 Apr 2020 19:09:10 +0200 Subject: [PATCH] scd: Return GPG_ERR_BAD_PIN on 0x63Cn status word. * scd/iso7816.c (map_sw): Detect 0x63Cn status code. -- I really wonder when that got lost and we ended up with a simple card error. Signed-off-by: Werner Koch --- po/POTFILES.in | 2 ++ scd/iso7816.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index 0f12f53fb..28d0f3602 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -78,6 +78,8 @@ g10/cipher-aead.c kbx/kbxutil.c +scd/app-piv.c +scd/app-p15.c scd/app-nks.c scd/app-openpgp.c scd/app-dinsig.c diff --git a/scd/iso7816.c b/scd/iso7816.c index 8f5ce5c52..75aa8de3d 100644 --- a/scd/iso7816.c +++ b/scd/iso7816.c @@ -94,6 +94,8 @@ map_sw (int sw) ec = GPG_ERR_GENERAL; /* Should not happen. */ else if ((sw & 0xff00) == SW_MORE_DATA) ec = 0; /* This should actually never been seen here. */ + else if ((sw & 0xfff0) == 0x63C0) + ec = GPG_ERR_BAD_PIN; else ec = GPG_ERR_CARD; }