From 51630a844e8e95e7108cb1966c5f3e21b93a463b Mon Sep 17 00:00:00 2001 From: Doug Engert Date: Thu, 15 Dec 2011 14:58:02 -0600 Subject: [PATCH] Cleanup PKCS15 PIV Card PIN flags If PIV card Discovery Object is present and Global PIN is preferred, turn off the LOCAL flag. --- src/libopensc/pkcs15-piv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libopensc/pkcs15-piv.c b/src/libopensc/pkcs15-piv.c index a4a0a930..ec58ba7b 100644 --- a/src/libopensc/pkcs15-piv.c +++ b/src/libopensc/pkcs15-piv.c @@ -353,10 +353,11 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card) static const pindata pins[] = { { "1", "PIV Card Holder pin", "", 0x80, - /* label and ref will change if using global pin */ + /* label, flag and ref will change if using global pin */ SC_PKCS15_PIN_TYPE_ASCII_NUMERIC, 8, 4, 8, SC_PKCS15_PIN_FLAG_NEEDS_PADDING | + SC_PKCS15_PIN_FLAG_INITIALIZED | SC_PKCS15_PIN_FLAG_LOCAL, -1, 0xFF, SC_PKCS15_CO_FLAG_PRIVATE }, @@ -364,6 +365,7 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card) SC_PKCS15_PIN_TYPE_ASCII_NUMERIC, 8, 4, 8, SC_PKCS15_PIN_FLAG_NEEDS_PADDING | + SC_PKCS15_PIN_FLAG_INITIALIZED | SC_PKCS15_PIN_FLAG_LOCAL | SC_PKCS15_PIN_FLAG_SO_PIN | SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN, -1, 0xFF, @@ -789,6 +791,7 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card) &pin_ref) == 0 && pin_ref == 0x00) { /* must be 80 for PIV pin, or 00 for Global PIN */ pin_info.attrs.pin.reference = pin_ref; + pin_info.attrs.pin.flags &= ~SC_PKCS15_PIN_FLAG_LOCAL; label = "Global PIN"; } sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "DEE Adding pin %d label=%s",i, label);