card-starcos: use transceive length from EF.ATR
fixes https://github.com/OpenSC/OpenSC/issues/765
This commit is contained in:
parent
2909ba28a9
commit
b232c9b675
|
@ -26,9 +26,10 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "internal.h"
|
|
||||||
#include "asn1.h"
|
#include "asn1.h"
|
||||||
#include "cardctl.h"
|
#include "cardctl.h"
|
||||||
|
#include "internal.h"
|
||||||
|
#include "iso7816.h"
|
||||||
|
|
||||||
static struct sc_atr_table starcos_atrs[] = {
|
static struct sc_atr_table starcos_atrs[] = {
|
||||||
{ "3B:B7:94:00:c0:24:31:fe:65:53:50:4b:32:33:90:00:b4", NULL, NULL, SC_CARD_TYPE_STARCOS_GENERIC, 0, NULL },
|
{ "3B:B7:94:00:c0:24:31:fe:65:53:50:4b:32:33:90:00:b4", NULL, NULL, SC_CARD_TYPE_STARCOS_GENERIC, 0, NULL },
|
||||||
|
@ -151,6 +152,18 @@ static int starcos_init(sc_card_t *card)
|
||||||
card->max_recv_size = 128;
|
card->max_recv_size = 128;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sc_parse_ef_atr(card) == SC_SUCCESS) {
|
||||||
|
if (card->ef_atr->card_capabilities & ISO7816_CAP_EXTENDED_LENGTH) {
|
||||||
|
card->caps |= SC_CARD_CAP_APDU_EXT;
|
||||||
|
}
|
||||||
|
if (card->ef_atr->max_response_apdu > 0) {
|
||||||
|
card->max_recv_size = card->ef_atr->max_response_apdu;
|
||||||
|
}
|
||||||
|
if (card->ef_atr->max_command_apdu > 0) {
|
||||||
|
card->max_send_size = card->ef_atr->max_command_apdu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue