- trying new apdu to reset retry counter in pace_test

- added pace wrapper for sm_transmit_apdu which automatically increments the ssc


git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@67 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
frankmorgner
2010-04-12 12:09:40 +00:00
parent 3a8bf5f09b
commit 835fa61102
2 changed files with 27 additions and 4 deletions

View File

@@ -828,6 +828,16 @@ int pace_test(sc_card_t *card)
SC_TEST_RET(card->ctx, EstablishPACEChannel(card, in, &out, &outlen, &sctx),
"Could not establish PACE channel.");
/* reset retry counter */
apdu.cla = 0x00;
apdu.ins = 0x2C;
apdu.p1 = 0x03;
apdu.p2 = 0x02;
apdu.cse = SC_APDU_CASE_1;
SC_TEST_RET(card->ctx, pace_transmit_apdu(&sctx, card, &apdu),
"Could not reset retry counter of CAN");
/* select CardSecurity */
apdu.cla = 0x00;
apdu.ins = 0xA4;
@@ -841,8 +851,8 @@ int pace_test(sc_card_t *card)
apdu.le = 0x00;
apdu.cse = SC_APDU_CASE_4_SHORT;
/*increment_ssc(&sctx);*/
sm_transmit_apdu(&sctx, card, &apdu);
SC_TEST_RET(card->ctx, pace_transmit_apdu(&sctx, card, &apdu),
"Could not select EF.CardSecurity");
/* read CardSecurity */
apdu.cla = 0x00;
@@ -852,8 +862,8 @@ int pace_test(sc_card_t *card)
apdu.le = 0x00;
apdu.cse = SC_APDU_CASE_2_SHORT;
increment_ssc(&sctx);
sm_transmit_apdu(&sctx, card, &apdu);
SC_TEST_RET(card->ctx, pace_transmit_apdu(&sctx, card, &apdu),
"Could not read EF.CardSecurity");
return SC_SUCCESS;
}
@@ -1140,4 +1150,14 @@ err:
SC_FUNC_RETURN(card->ctx, SC_LOG_TYPE_ERROR, r);
}
int pace_transmit_apdu(struct sm_ctx *sctx, sc_card_t *card,
sc_apdu_t *apdu)
{
SC_TEST_RET(card->ctx, sm_transmit_apdu(sctx, card, apdu),
"Could not send SM APDU");
increment_ssc(sctx);
SC_FUNC_RETURN(card->ctx, SC_LOG_TYPE_DEBUG, SC_SUCCESS);
}
#endif

View File

@@ -75,6 +75,9 @@ int EstablishPACEChannel(sc_card_t *card, const __u8 *in,
__u8 **out, size_t *outlen, struct sm_ctx *ctx);
int pace_test(sc_card_t *card);
int pace_transmit_apdu(struct sm_ctx *sctx, sc_card_t *card,
sc_apdu_t *apdu);
#ifdef __cplusplus
}
#endif