|
|
1.1 ! root 1: /* ! 2: * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. ! 3: * See the COPYING.LIB file in the top-level directory. ! 4: */ ! 5: #ifndef VCARDT_H ! 6: #define VCARDT_H 1 ! 7: ! 8: /* ! 9: * these should come from some common spice header file ! 10: */ ! 11: #include <assert.h> ! 12: #ifndef MIN ! 13: #define MIN(x, y) ((x) > (y) ? (y) : (x)) ! 14: #define MAX(x, y) ((x) > (y) ? (x) : (y)) ! 15: #endif ! 16: ! 17: typedef struct VCardStruct VCard; ! 18: typedef struct VCardAPDUStruct VCardAPDU; ! 19: typedef struct VCardResponseStruct VCardResponse; ! 20: typedef struct VCardBufferResponseStruct VCardBufferResponse; ! 21: typedef struct VCardAppletStruct VCardApplet; ! 22: typedef struct VCardAppletPrivateStruct VCardAppletPrivate; ! 23: typedef struct VCardKeyStruct VCardKey; /* opaque */ ! 24: typedef struct VCardEmulStruct VCardEmul; ! 25: ! 26: #define MAX_CHANNEL 4 ! 27: ! 28: /* create an ATR with appropriate historical bytes */ ! 29: #define VCARD_ATR_PREFIX(size) 0x3b, 0x66+(size), 0x00, 0xff, \ ! 30: 'V', 'C', 'A', 'R', 'D', '_' ! 31: ! 32: ! 33: typedef enum { ! 34: VCARD_DONE, ! 35: VCARD_NEXT, ! 36: VCARD_FAIL ! 37: } VCardStatus; ! 38: ! 39: typedef enum { ! 40: VCARD_FILE_SYSTEM, ! 41: VCARD_VM, ! 42: VCARD_DIRECT ! 43: } VCardType; ! 44: ! 45: typedef enum { ! 46: VCARD_POWER_ON, ! 47: VCARD_POWER_OFF ! 48: } VCardPower; ! 49: ! 50: typedef VCardStatus (*VCardProcessAPDU)(VCard *card, VCardAPDU *apdu, ! 51: VCardResponse **response); ! 52: typedef VCardStatus (*VCardResetApplet)(VCard *card, int channel); ! 53: typedef void (*VCardAppletPrivateFree) (VCardAppletPrivate *); ! 54: typedef void (*VCardEmulFree) (VCardEmul *); ! 55: typedef void (*VCardGetAtr) (VCard *, unsigned char *atr, int *atr_len); ! 56: ! 57: struct VCardBufferResponseStruct { ! 58: unsigned char *buffer; ! 59: int buffer_len; ! 60: unsigned char *current; ! 61: int len; ! 62: }; ! 63: ! 64: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.