| /* |
| * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. |
| * See the COPYING.LIB file in the top-level directory. |
| */ |
| #ifndef VCARDT_H |
| #define VCARDT_H 1 |
| |
| /* |
| * these should come from some common spice header file |
| */ |
| #include <assert.h> |
| #ifndef MIN |
| #define MIN(x, y) ((x) > (y) ? (y) : (x)) |
| #define MAX(x, y) ((x) > (y) ? (x) : (y)) |
| #endif |
| |
| typedef struct VCardStruct VCard; |
| typedef struct VCardAPDUStruct VCardAPDU; |
| typedef struct VCardResponseStruct VCardResponse; |
| typedef struct VCardBufferResponseStruct VCardBufferResponse; |
| typedef struct VCardAppletStruct VCardApplet; |
| typedef struct VCardAppletPrivateStruct VCardAppletPrivate; |
| typedef struct VCardKeyStruct VCardKey; /* opaque */ |
| typedef struct VCardEmulStruct VCardEmul; |
| |
| #define MAX_CHANNEL 4 |
| |
| /* create an ATR with appropriate historical bytes */ |
| #define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \ |
| 'V', 'C', 'A', 'R', 'D', '_' |
| |
| |
| typedef enum { |
| VCARD_DONE, |
| VCARD_NEXT, |
| VCARD_FAIL |
| } VCardStatus; |
| |
| typedef enum { |
| VCARD_FILE_SYSTEM, |
| VCARD_VM, |
| VCARD_DIRECT |
| } VCardType; |
| |
| typedef enum { |
| VCARD_POWER_ON, |
| VCARD_POWER_OFF |
| } VCardPower; |
| |
| typedef VCardStatus (*VCardProcessAPDU)(VCard *card, VCardAPDU *apdu, |
| VCardResponse **response); |
| typedef VCardStatus (*VCardResetApplet)(VCard *card, int channel); |
| typedef void (*VCardAppletPrivateFree) (VCardAppletPrivate *); |
| typedef void (*VCardEmulFree) (VCardEmul *); |
| typedef void (*VCardGetAtr) (VCard *, unsigned char *atr, int *atr_len); |
| |
| struct VCardBufferResponseStruct { |
| unsigned char *buffer; |
| int buffer_len; |
| unsigned char *current; |
| int len; |
| }; |
| |
| #endif |