diff --git a/ccid/src/ccid.c b/ccid/src/ccid.c index 3767801..f217ecd 100644 --- a/ccid/src/ccid.c +++ b/ccid/src/ccid.c @@ -425,6 +425,10 @@ perform_PC_to_RDR_IccPowerOn(const __u8 *in, size_t inlen, __u8 **out, size_t *o if (get_ef_card_access(card_in_slot[request->bSlot], (u8 **) &ef_cardaccess, &ef_cardaccess_length) < 0) { sc_error(ctx, "Could not get EF.CardAccess."); + } else { + /* All cards with PACE support extended length + * XXX this should better be done by the card driver */ + card_in_slot[request->bSlot]->caps |= SC_CARD_CAP_APDU_EXT; } } #endif @@ -1139,6 +1143,9 @@ perform_PC_to_RDR_Secure(const __u8 *in, size_t inlen, __u8** out, size_t *outle sc_result = perform_PC_to_RDR_Secure_GetReadersPACECapabilities( &abDataOut, &abDataOutLen); + + bin_log(card_in_slot[request->bSlot], "PACE Capabilities", abDataOut, abDataOutLen); + goto err; break; case 0x20: diff --git a/ccid/src/pace.c b/ccid/src/pace.c index 2da2f52..1484779 100644 --- a/ccid/src/pace.c +++ b/ccid/src/pace.c @@ -173,7 +173,7 @@ int GetReadersPACECapabilities(u8 *bitmap) return SC_ERROR_INVALID_ARGUMENTS; /* BitMap */ - *bitmap = PACE_BITMAP_PACE|PACE_BITMAP_EID; + *bitmap = PACE_BITMAP_EID|PACE_BITMAP_EID|PACE_BITMAP_ESIGN; return SC_SUCCESS; } @@ -1257,10 +1257,6 @@ int EstablishPACEChannel(struct sm_ctx *oldpacectx, sc_card_t *card, sctx->block_length = EVP_CIPHER_block_size(pctx->cipher); sctx->active = 1; - /* All cards with PACE support extended length - * XXX this should better be done by the card driver */ - card->caps |= SC_CARD_CAP_APDU_EXT; - err: if (info) PACEInfo_free(info);