card-muscle: be more relaxed in card initialization
closes https://github.com/OpenSC/OpenSC/pull/1248
This commit is contained in:
parent
9858d05589
commit
f04a2654d9
|
@ -94,9 +94,11 @@ static int muscle_match_card(sc_card_t *card)
|
|||
apdu.resp = response;
|
||||
r = sc_transmit_apdu(card, &apdu);
|
||||
if (r == SC_SUCCESS && response[0] == 0x01) {
|
||||
card->type = SC_CARD_TYPE_MUSCLE_V1;
|
||||
return 1;
|
||||
card->type = SC_CARD_TYPE_MUSCLE_V1;
|
||||
} else {
|
||||
card->type = SC_CARD_TYPE_MUSCLE_GENERIC;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -476,18 +478,17 @@ static int muscle_init(sc_card_t *card)
|
|||
card->caps |= SC_CARD_CAP_RNG;
|
||||
|
||||
/* Card type detection */
|
||||
if (_sc_match_atr(card, muscle_atrs, &card->type) < 0) {
|
||||
free(priv->fs);
|
||||
free(card->drv_data);
|
||||
SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
_sc_match_atr(card, muscle_atrs, &card->type);
|
||||
if(card->type == SC_CARD_TYPE_MUSCLE_ETOKEN_72K) {
|
||||
card->caps |= SC_CARD_CAP_APDU_EXT;
|
||||
}
|
||||
if(card->type == SC_CARD_TYPE_MUSCLE_JCOP241) {
|
||||
card->caps |= SC_CARD_CAP_APDU_EXT;
|
||||
}
|
||||
if (!(card->caps & SC_CARD_CAP_APDU_EXT)) {
|
||||
card->max_recv_size = 255;
|
||||
card->max_send_size = 255;
|
||||
}
|
||||
if(card->type == SC_CARD_TYPE_MUSCLE_JCOP242R2_NO_EXT_APDU) {
|
||||
/* Tyfone JCOP v242R2 card that doesn't support extended APDUs */
|
||||
}
|
||||
|
|
|
@ -224,7 +224,7 @@ int mscfs_loadFileInfo(mscfs_t* fs, const u8 *path, int pathlen, mscfs_file_t **
|
|||
}
|
||||
*file_data = NULL;
|
||||
}
|
||||
if(*file_data == NULL && (0 == memcmp("\x3F\x00\x00\x00", fullPath.id, 4) || 0 == memcmp("\x3F\x00\x3F\x00", fullPath.id, 4 ))) {
|
||||
if(*file_data == NULL && (0 == memcmp("\x3F\x00\x00\x00", fullPath.id, 4) || 0 == memcmp("\x3F\x00\x50\x15", fullPath.id, 4 ) || 0 == memcmp("\x3F\x00\x3F\x00", fullPath.id, 4))) {
|
||||
static mscfs_file_t ROOT_FILE;
|
||||
ROOT_FILE.ef = 0;
|
||||
ROOT_FILE.size = 0;
|
||||
|
|
|
@ -3666,12 +3666,12 @@ sc_pkcs15init_verify_secret(struct sc_profile *profile, struct sc_pkcs15_card *p
|
|||
if (path && path->len) {
|
||||
struct sc_path tmp_path = *path;
|
||||
int iter;
|
||||
|
||||
r = SC_ERROR_OBJECT_NOT_FOUND;
|
||||
for (iter = tmp_path.len/2; iter >= 0 && r == SC_ERROR_OBJECT_NOT_FOUND; iter--, tmp_path.len -= 2)
|
||||
for (iter = tmp_path.len/2; iter >= 0 && r == SC_ERROR_OBJECT_NOT_FOUND; iter--, tmp_path.len -= 2) {
|
||||
r = sc_pkcs15_find_pin_by_type_and_reference(p15card,
|
||||
tmp_path.len ? &tmp_path : NULL,
|
||||
type, reference, &pin_obj);
|
||||
}
|
||||
}
|
||||
else {
|
||||
r = sc_pkcs15_find_pin_by_type_and_reference(p15card, NULL, type, reference, &pin_obj);
|
||||
|
|
Loading…
Reference in New Issue