Make sure the right thing is always selected on the card by bypassing cache

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3142 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
martin 2007-03-21 09:33:40 +00:00
parent 62d2d6cbe0
commit 5dba203363

View File

@ -1090,6 +1090,7 @@ static int mcrd_set_security_env(sc_card_t * card,
{
struct mcrd_priv_data *priv = DRVDATA(card);
sc_apdu_t apdu;
sc_path_t tmppath;
u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
u8 *p;
int r, locked = 0;
@ -1108,7 +1109,12 @@ static int mcrd_set_security_env(sc_card_t * card,
|| env->key_ref_len != 1)
return SC_ERROR_INVALID_ARGUMENTS;
select_esteid_df(card); /* is it needed? */
/* Make sure we always start from MF */
sc_format_path ("3f00", &tmppath);
tmppath.type = SC_PATH_TYPE_PATH;
sc_select_file (card, &tmppath, NULL);
/* We now know that cache is not valid */
select_esteid_df(card);
switch (env->operation) {
case SC_SEC_OPERATION_DECIPHER:
sc_debug(card->ctx,