From e36c1468e5605d178acfbbf1fb10ca2bbf8dc3c4 Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Mon, 16 Jul 2018 09:26:32 +0200 Subject: [PATCH] md: derive md_read_only from PKCS#15 profile --- src/minidriver/minidriver.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/minidriver/minidriver.c b/src/minidriver/minidriver.c index c719c556..fc57ff09 100644 --- a/src/minidriver/minidriver.c +++ b/src/minidriver/minidriver.c @@ -684,8 +684,22 @@ md_is_pinpad_dlg_enable_cancel(PCARD_DATA pCardData) static BOOL md_is_read_only(PCARD_DATA pCardData) { + BOOL ret = TRUE; + logprintf(pCardData, 2, "Is read-only?\n"); - return md_get_config_bool(pCardData, "md_read_only", TRUE); + + if (pCardData && pCardData->pvVendorSpecific) { + VENDOR_SPECIFIC *vs = (VENDOR_SPECIFIC*) pCardData->pvVendorSpecific; + if (vs->p15card && vs->p15card->tokeninfo) { + if (vs->p15card->tokeninfo->flags & SC_PKCS15_TOKEN_READONLY) { + ret = TRUE; + } else { + ret = FALSE; + } + } + } + + return md_get_config_bool(pCardData, "md_read_only", ret); }