|
|
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 */
1.1.1.2 ! root 29: #define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
1.1 root 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.