Hello Martin,
automatically detecting the value of max_recv_size is an option too. The
following snippet of code can manage this. But it depends on the
capabilities of the "get_challenge" operation. For CardOS it could be
enabled, because it results in a value of 300 for CardOS 4.3b with
Omnikey reader. Please note that extended APDU:s are used. Therefore a
detection of this capability is required too.
Regards
Andre
u8 buf[1024];
sc_apdu_t apdu;
sc_format_apdu(card, &apdu, SC_APDU_CASE_2_EXT, 0x84, 0x00, 0x00);
int i = 0;
while (1) {
int j = 0;
apdu.resplen = i + j;
while (apdu.resplen == i + j) {
if (j == 0)
j = 1;
else
j*=2;
apdu.le = i + j;
apdu.resp = buf;
apdu.resplen = sizeof(buf);
sc_transmit_apdu(card, &apdu);
}
if (j == 1)
break;
i+=j/2;
}
printf("max_recv_size: %d\n", i);
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel