/[pcsclite]/trunk/Drivers/ccid/src/ccid.h
ViewVC logotype

Contents of /trunk/Drivers/ccid/src/ccid.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5475 - (show annotations) (download)
Tue Jan 4 09:54:34 2011 UTC (2 years, 4 months ago) by rousseau
File MIME type: text/plain
File size: 6269 byte(s)
Reenable O2MICRO_OZ776_PATCH since a new patch is now included in
revision 5473
1 /*
2 ccid.h: CCID structures
3 Copyright (C) 2003-2010 Ludovic Rousseau
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public License
16 along with this library; if not, write to the Free Software Foundation,
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 /*
21 * $Id$
22 */
23
24 typedef struct
25 {
26 /*
27 * CCID Sequence number
28 */
29 unsigned char *pbSeq;
30 unsigned char real_bSeq;
31
32 /*
33 * VendorID << 16 + ProductID
34 */
35 int readerID;
36
37 /*
38 * Maximum message length
39 */
40 unsigned int dwMaxCCIDMessageLength;
41
42 /*
43 * Maximum IFSD
44 */
45 int dwMaxIFSD;
46
47 /*
48 * Features supported by the reader (directly from Class Descriptor)
49 */
50 int dwFeatures;
51
52 /*
53 * PIN support of the reader (directly from Class Descriptor)
54 */
55 char bPINSupport;
56
57 /*
58 * Display dimensions of the reader (directly from Class Descriptor)
59 */
60 unsigned int wLcdLayout;
61
62 /*
63 * Default Clock
64 */
65 int dwDefaultClock;
66
67 /*
68 * Max Data Rate
69 */
70 unsigned int dwMaxDataRate;
71
72 /*
73 * Number of available slots
74 */
75 char bMaxSlotIndex;
76
77 /*
78 * Slot in use
79 */
80 char bCurrentSlotIndex;
81
82 /*
83 * The array of data rates supported by the reader
84 */
85 unsigned int *arrayOfSupportedDataRates;
86
87 /*
88 * Read communication port timeout
89 * value is milliseconds
90 * this value can evolve dynamically if card request it (time processing).
91 */
92 unsigned int readTimeout;
93
94 /*
95 * Card protocol
96 */
97 int cardProtocol;
98
99 /*
100 * bInterfaceProtocol (CCID, ICCD-A, ICCD-B)
101 */
102 int bInterfaceProtocol;
103
104 /*
105 * bNumEndpoints
106 */
107 int bNumEndpoints;
108
109 /*
110 * GemCore SIM PRO slot status management
111 * The reader always reports a card present even if no card is inserted.
112 * If the Power Up fails the driver will report IFD_ICC_NOT_PRESENT instead
113 * of IFD_ICC_PRESENT
114 */
115 int dwSlotStatus;
116
117 /*
118 * bVoltageSupport (bit field)
119 * 1 = 5.0V
120 * 2 = 3.0V
121 * 4 = 1.8V
122 */
123 int bVoltageSupport;
124
125 /*
126 * USB serial number of the device (if any)
127 */
128 char *sIFD_serial_number;
129 } _ccid_descriptor;
130
131 /* Features from dwFeatures */
132 #define CCID_CLASS_AUTO_CONF_ATR 0x00000002
133 #define CCID_CLASS_AUTO_VOLTAGE 0x00000008
134 #define CCID_CLASS_AUTO_BAUD 0x00000020
135 #define CCID_CLASS_AUTO_PPS_PROP 0x00000040
136 #define CCID_CLASS_AUTO_PPS_CUR 0x00000080
137 #define CCID_CLASS_AUTO_IFSD 0x00000400
138 #define CCID_CLASS_CHARACTER 0x00000000
139 #define CCID_CLASS_TPDU 0x00010000
140 #define CCID_CLASS_SHORT_APDU 0x00020000
141 #define CCID_CLASS_EXTENDED_APDU 0x00040000
142 #define CCID_CLASS_EXCHANGE_MASK 0x00070000
143
144 /* Features from bPINSupport */
145 #define CCID_CLASS_PIN_VERIFY 0x01
146 #define CCID_CLASS_PIN_MODIFY 0x02
147
148 /* See CCID specs ch. 4.2.1 */
149 #define CCID_ICC_PRESENT_ACTIVE 0x00 /* 00 0000 00 */
150 #define CCID_ICC_PRESENT_INACTIVE 0x01 /* 00 0000 01 */
151 #define CCID_ICC_ABSENT 0x02 /* 00 0000 10 */
152 #define CCID_ICC_STATUS_MASK 0x03 /* 00 0000 11 */
153
154 #define CCID_COMMAND_FAILED 0x40 /* 01 0000 00 */
155 #define CCID_TIME_EXTENSION 0x80 /* 10 0000 00 */
156
157 /* bInterfaceProtocol for ICCD */
158 #define PROTOCOL_CCID 0 /* plain CCID */
159 #define PROTOCOL_ICCD_A 1 /* ICCD Version A */
160 #define PROTOCOL_ICCD_B 2 /* ICCD Version B */
161
162 /* Product identification for special treatments */
163 #define GEMPC433 0x08E64433
164 #define GEMPCKEY 0x08E63438
165 #define GEMPCTWIN 0x08E63437
166 #define GEMPCPINPAD 0x08E63478
167 #define GEMCORESIMPRO 0x08E63480
168 #define GEMCOREPOSPRO 0x08E63479
169 #define GEMALTOPROXDU 0x08E65503
170 #define GEMALTOPROXSU 0x08E65504
171 #define CARDMAN3121 0x076B3021
172 #define LTC31 0x07830003
173 #define SCR331DI 0x04E65111
174 #define SCR331DINTTCOM 0x04E65120
175 #define SDI010 0x04E65121
176 #define CHERRYXX33 0x046A0005
177 #define CHERRYST2000 0x046A003E
178 #define OZ776 0x0B977762
179 #define OZ776_7772 0x0B977772
180 #define SPR532 0x04E6E003
181 #define MYSMARTPAD 0x09BE0002
182 #define CHERRYXX44 0x046a0010
183 #define CL1356D 0x0B810200
184 #define REINER_SCT 0x0C4B0300
185 #define SEG 0x08E68000
186 #define BLUDRIVEII_CCID 0x1B0E1078
187 #define DELLSCRK 0x413C2101
188 #define DELLSK 0x413C2100
189 #define KOBIL_TRIBANK 0x0D463010
190 #define KOBIL_MIDENTITY_VISUAL 0x0D460D46
191 #define VEGAALPHA 0x09820008
192
193 #define VENDOR_GEMALTO 0x08E6
194 #define GET_VENDOR(readerID) ((readerID >> 16) & 0xFFFF)
195
196 /*
197 * The O2Micro OZ776S reader has a wrong USB descriptor
198 * The extra[] field is associated with the last endpoint instead of the
199 * main USB descriptor
200 */
201 #define O2MICRO_OZ776_PATCH
202
203 /* Escape sequence codes */
204 #define ESC_GEMPC_SET_ISO_MODE 1
205 #define ESC_GEMPC_SET_APDU_MODE 2
206
207 /*
208 * Possible values :
209 * 3 -> 1.8V, 3V, 5V
210 * 2 -> 3V, 5V
211 * 1 -> 5V only
212 * 0 -> automatic (selection made by the reader)
213 */
214 /*
215 * To be safe we default to 5V
216 * otherwise we would have to parse the ATR and get the value of TAi (i>2) when
217 * in T=15
218 */
219 #define VOLTAGE_AUTO 0
220 #define VOLTAGE_5V 1
221 #define VOLTAGE_3V 2
222 #define VOLTAGE_1_8V 3
223
224 int ccid_open_hack_pre(unsigned int reader_index);
225 int ccid_open_hack_post(unsigned int reader_index);
226 void ccid_error(int error, const char *file, int line, const char *function);
227 _ccid_descriptor *get_ccid_descriptor(unsigned int reader_index);
228
229 /* convert a 4 byte integer in USB format into an int */
230 #define dw2i(a, x) (unsigned int)((((((a[x+3] << 8) + a[x+2]) << 8) + a[x+1]) << 8) + a[x])
231
232 /* all the data rates specified by ISO 7816-3 Fi/Di tables */
233 #define ISO_DATA_RATES 10753, 14337, 15625, 17204, \
234 20833, 21505, 23438, 25806, 28674, \
235 31250, 32258, 34409, 39063, 41667, \
236 43011, 46875, 52083, 53763, 57348, \
237 62500, 64516, 68817, 71685, 78125, \
238 83333, 86022, 93750, 104167, 107527, \
239 114695, 125000, 129032, 143369, 156250, \
240 166667, 172043, 215054, 229391, 250000, \
241 344086
242
243 /* data rates supported by the secondary slots on the GemCore Pos Pro & SIM Pro */
244 #define GEMPLUS_CUSTOM_DATA_RATES 10753, 21505, 43011, 125000
245

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.5