- 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:
28
ccid/pace.c
28
ccid/pace.c
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user