Add initial ISO7816 support (#3681)

* Add initial ISO7816 support
* Format sources and sync API Symbols version
* Debug: change VID/PID in ccid test app to opensc detectable generic one

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Filipe Paz Rodrigues
2024-06-01 11:45:27 -05:00
committed by GitHub
parent c93d164785
commit 0d4ead8fbd
10 changed files with 253 additions and 68 deletions

View File

@@ -184,6 +184,7 @@ static usbd_device* usb_dev;
static bool connected = false;
static bool smartcard_inserted = true;
static CcidCallbacks* callbacks[CCID_TOTAL_SLOTS] = {NULL};
static void* cb_ctx[CCID_TOTAL_SLOTS];
static void* ccid_set_string_descr(char* str) {
furi_check(str);
@@ -330,7 +331,9 @@ void CALLBACK_CCID_IccPowerOn(
if(smartcard_inserted) {
if(callbacks[CCID_SLOT_INDEX] != NULL) {
callbacks[CCID_SLOT_INDEX]->icc_power_on_callback(
responseDataBlock->abData, &responseDataBlock->dwLength, NULL);
responseDataBlock->abData,
&responseDataBlock->dwLength,
cb_ctx[CCID_SLOT_INDEX]);
responseDataBlock->bStatus = CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR |
CCID_ICCSTATUS_PRESENTANDACTIVE;
} else {
@@ -364,7 +367,7 @@ void CALLBACK_CCID_XfrBlock(
receivedXfrBlock->dwLength,
responseDataBlock->abData,
&responseDataBlock->dwLength,
NULL);
cb_ctx[CCID_SLOT_INDEX]);
responseDataBlock->bStatus = CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR |
CCID_ICCSTATUS_PRESENTANDACTIVE;
} else {
@@ -389,8 +392,9 @@ void furi_hal_ccid_ccid_remove_smartcard(void) {
smartcard_inserted = false;
}
void furi_hal_ccid_set_callbacks(CcidCallbacks* cb) {
void furi_hal_ccid_set_callbacks(CcidCallbacks* cb, void* context) {
callbacks[CCID_SLOT_INDEX] = cb;
cb_ctx[CCID_SLOT_INDEX] = context;
}
static void ccid_rx_ep_callback(usbd_device* dev, uint8_t event, uint8_t ep) {