EstEID: small fixes for working with a modified max_send/recv_size

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4666 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
martin 2010-09-01 11:46:31 +00:00
parent befff1b0d4
commit b04a1ef9f0

View File

@ -697,7 +697,7 @@ do_select(sc_card_t * card, u8 kind,
const u8 * buf, size_t buflen, sc_file_t ** file) const u8 * buf, size_t buflen, sc_file_t ** file)
{ {
sc_apdu_t apdu; sc_apdu_t apdu;
u8 resbuf[255]; u8 resbuf[SC_MAX_APDU_BUFFER_SIZE];
int r; int r;
sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0xA4, kind, 0x00); sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0xA4, kind, 0x00);
@ -706,7 +706,7 @@ do_select(sc_card_t * card, u8 kind,
apdu.lc = apdu.datalen; apdu.lc = apdu.datalen;
apdu.resp = resbuf; apdu.resp = resbuf;
apdu.resplen = sizeof(resbuf); apdu.resplen = sizeof(resbuf);
apdu.le = sizeof(resbuf); apdu.le = card->max_recv_size;
r = sc_transmit_apdu(card, &apdu); r = sc_transmit_apdu(card, &apdu);
SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed"); SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");
@ -735,7 +735,7 @@ do_select(sc_card_t * card, u8 kind,
default: default:
SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_UNKNOWN_DATA_RECEIVED); SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_UNKNOWN_DATA_RECEIVED);
} }
return 0; return SC_SUCCESS;
} }
/* Wrapper around do_select to be used when multiple selects are /* Wrapper around do_select to be used when multiple selects are
@ -1285,14 +1285,14 @@ static int mcrd_decipher(sc_card_t * card,
sc_security_env_t *env = &priv->sec_env; sc_security_env_t *env = &priv->sec_env;
sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
"Will dechiper %d (0x%02x) bytes using key %d\n", "Will dechiper %d (0x%x) bytes using key %d\n",
crgram_len, crgram_len, env->key_ref[0]); crgram_len, crgram_len, env->key_ref[0]);
/* saniti check */ /* sanity check */
if (env->operation != SC_SEC_OPERATION_DECIPHER) if (env->operation != SC_SEC_OPERATION_DECIPHER)
return SC_ERROR_INVALID_ARGUMENTS; return SC_ERROR_INVALID_ARGUMENTS;
tmp_crgram[0] = '\0'; tmp_crgram[0] = '\0'; /* No algorithm specification */
memcpy(tmp_crgram + 1, crgram, crgram_len); memcpy(tmp_crgram + 1, crgram, crgram_len);
crgram_len += 1; crgram_len += 1;