libopensc: do not return 'SUCCESS' if EF.ATR do not exist ...

debug messages


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5065 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
vtarasov 2011-01-09 08:51:55 +00:00
parent 5a7f8a2d60
commit 8f2c96863a
1 changed files with 7 additions and 10 deletions

View File

@ -43,7 +43,7 @@ sc_parse_ef_atr_content(struct sc_card *card, unsigned char *buf, size_t buflen)
tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_CARD_SERVICE, &taglen); tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_CARD_SERVICE, &taglen);
if (tag && taglen >= 1) { if (tag && taglen >= 1) {
ef_atr.card_service = *tag; ef_atr.card_service = *tag;
sc_log(ctx, "From EF.ATR: card service 0x%X", ef_atr.card_service); sc_log(ctx, "EF.ATR: card service 0x%X", ef_atr.card_service);
} }
tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_PRE_ISSUING, &taglen); tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_PRE_ISSUING, &taglen);
@ -52,7 +52,7 @@ sc_parse_ef_atr_content(struct sc_card *card, unsigned char *buf, size_t buflen)
ef_atr.ic_type = *(tag + 1); ef_atr.ic_type = *(tag + 1);
ef_atr.os_version = *(tag + 2); ef_atr.os_version = *(tag + 2);
ef_atr.iasecc_version = *(tag + 3); ef_atr.iasecc_version = *(tag + 3);
sc_log(ctx, "From EF.ATR: IC manufacturer/type %X/%X, OS/IasEcc versions %X/%X", sc_log(ctx, "EF.ATR: IC manufacturer/type %X/%X, OS/IasEcc versions %X/%X",
ef_atr.ic_manufacturer, ef_atr.ic_type, ef_atr.ic_manufacturer, ef_atr.ic_type,
ef_atr.os_version, ef_atr.iasecc_version); ef_atr.os_version, ef_atr.iasecc_version);
} }
@ -62,7 +62,7 @@ sc_parse_ef_atr_content(struct sc_card *card, unsigned char *buf, size_t buflen)
ef_atr.df_selection = *(tag + 0); ef_atr.df_selection = *(tag + 0);
ef_atr.unit_size = *(tag + 1); ef_atr.unit_size = *(tag + 1);
ef_atr.card_capabilities = *(tag + 2); ef_atr.card_capabilities = *(tag + 2);
sc_log(ctx, "From EF.ATR: DF selection %X, unit_size %X, card caps %X", sc_log(ctx, "EF.ATR: DF selection %X, unit_size %X, card caps %X",
ef_atr.df_selection, ef_atr.unit_size, ef_atr.card_capabilities); ef_atr.df_selection, ef_atr.unit_size, ef_atr.card_capabilities);
} }
@ -72,8 +72,7 @@ sc_parse_ef_atr_content(struct sc_card *card, unsigned char *buf, size_t buflen)
LOG_TEST_RET(ctx, SC_ERROR_INVALID_DATA, "Invalid MF AID size"); LOG_TEST_RET(ctx, SC_ERROR_INVALID_DATA, "Invalid MF AID size");
memcpy(ef_atr.aid.value, tag, taglen); memcpy(ef_atr.aid.value, tag, taglen);
ef_atr.aid.len = taglen; ef_atr.aid.len = taglen;
sc_log(ctx, "From EF.ATR: AID(%i) %s", ef_atr.aid.len, sc_log(ctx, "EF.ATR: AID '%s'", sc_dump_hex(ef_atr.aid.value, ef_atr.aid.len));
sc_dump_hex(ef_atr.aid.value, ef_atr.aid.len));
} }
tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_IO_BUFFER_SIZES, &taglen); tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_IO_BUFFER_SIZES, &taglen);
@ -86,19 +85,19 @@ sc_parse_ef_atr_content(struct sc_card *card, unsigned char *buf, size_t buflen)
/* FIXME: tell me why '-5' */ /* FIXME: tell me why '-5' */
card->max_send_size = ef_atr.max_size_send - 5; card->max_send_size = ef_atr.max_size_send - 5;
card->max_recv_size = ef_atr.max_size_recv; card->max_recv_size = ef_atr.max_size_recv;
sc_log(ctx, "From EF.ATR: mas send/recv size %X/%X", card->max_send_size, card->max_recv_size); sc_log(ctx, "EF.ATR: max send/recv sizes %X/%X", card->max_send_size, card->max_recv_size);
} }
tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_ALLOCATION_SCHEME, &taglen); tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_ALLOCATION_SCHEME, &taglen);
if (tag && taglen < sizeof(ef_atr.allocation_oid)) { if (tag && taglen < sizeof(ef_atr.allocation_oid)) {
sc_log(ctx, "From EF.ATR: OID %s", sc_dump_hex(tag, sizeof(taglen))); sc_log(ctx, "EF.ATR: OID %s", sc_dump_hex(tag, sizeof(taglen)));
memcpy(ef_atr.allocation_oid.value, tag, taglen); memcpy(ef_atr.allocation_oid.value, tag, taglen);
} }
tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_STATUS, &taglen); tag = sc_asn1_find_tag(ctx, buf, buflen, ISO7816_TAG_II_STATUS, &taglen);
if (tag && taglen == 2) { if (tag && taglen == 2) {
ef_atr.status = *(tag + 0) * 0x100 + *(tag + 1); ef_atr.status = *(tag + 0) * 0x100 + *(tag + 1);
sc_log(ctx, "From EF.ATR: status word 0x%X", ef_atr.status); sc_log(ctx, "EF.ATR: status word 0x%X", ef_atr.status);
} }
if (!card->ef_atr) if (!card->ef_atr)
@ -125,8 +124,6 @@ int sc_parse_ef_atr(struct sc_card *card)
sc_format_path("3F002F01", &path); sc_format_path("3F002F01", &path);
rv = sc_select_file(card, &path, &file); rv = sc_select_file(card, &path, &file);
if (rv == SC_ERROR_FILE_NOT_FOUND)
LOG_FUNC_RETURN(ctx, SC_SUCCESS);
LOG_TEST_RET(ctx, rv, "Cannot select EF(ATR) file"); LOG_TEST_RET(ctx, rv, "Cannot select EF(ATR) file");
buf = malloc(file->size); buf = malloc(file->size);