diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c index b824ef87..2a4442bd 100644 --- a/src/libopensc/pkcs15.c +++ b/src/libopensc/pkcs15.c @@ -825,9 +825,6 @@ int sc_pkcs15_bind(sc_card_t *card, goto error; } done: - /* If card driver states that it has a (P)RNG, overwrite (possibly missing) tokeninfo flags */ - if (card->caps & SC_CARD_CAP_RNG) - p15card->flags |= SC_PKCS15_CARD_FLAG_PRN_GENERATION; /* for starcos cards only: fix asn1 integers */ if (strcmp(p15card->card->driver->short_name,"starcos") == 0 diff --git a/src/pkcs11/framework-pkcs15.c b/src/pkcs11/framework-pkcs15.c index 365e87ca..92b9817e 100644 --- a/src/pkcs11/framework-pkcs15.c +++ b/src/pkcs11/framework-pkcs15.c @@ -722,8 +722,10 @@ static void pkcs15_init_slot(struct sc_pkcs15_card *p15card, if (p15card->card->reader->capabilities & SC_READER_CAP_PIN_PAD) { slot->token_info.flags |= CKF_PROTECTED_AUTHENTICATION_PATH; } - if (p15card->card->caps & SC_CARD_CAP_RNG) + + if (p15card->card->caps & SC_CARD_CAP_RNG && p15card->card->ops->get_challenge != NULL) slot->token_info.flags |= CKF_RNG; + slot->fw_data = fw_data = calloc(1, sizeof(*fw_data)); fw_data->auth_obj = auth;