/[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 1794 - (show annotations) (download)
Wed Jan 11 10:34:06 2006 UTC (7 years, 4 months ago) by rousseau
File MIME type: text/plain
File size: 3937 byte(s)
SecurePINModify(): bug circumvention for the GemPC Pinpad
1 /*
2 ccid.h: CCID structures
3 Copyright (C) 2003 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
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 * Default Clock
59 */
60 int dwDefaultClock;
61
62 /*
63 * Max Data Rate
64 */
65 unsigned int dwMaxDataRate;
66
67 /*
68 * Number of available slots
69 */
70 char bMaxSlotIndex;
71
72 /*
73 * Slot in use
74 */
75 char bCurrentSlotIndex;
76
77 /*
78 * The array of data rates supported by the reader
79 */
80 unsigned int *arrayOfSupportedDataRates;
81
82 /*
83 * Read communication port timeout
84 * value is seconds
85 * this value can evolve dynamically if card request it (time processing).
86 */
87 unsigned int readTimeout;
88
89 } _ccid_descriptor;
90
91 /* Features from dwFeatures */
92 #define CCID_CLASS_AUTO_CONF_ATR 0x00000002
93 #define CCID_CLASS_AUTO_VOLTAGE 0x00000008
94 #define CCID_CLASS_AUTO_BAUD 0x00000020
95 #define CCID_CLASS_AUTO_PPS_PROP 0x00000040
96 #define CCID_CLASS_AUTO_PPS_CUR 0x00000080
97 #define CCID_CLASS_AUTO_IFSD 0x00000400
98 #define CCID_CLASS_CHARACTER 0x00000000
99 #define CCID_CLASS_TPDU 0x00010000
100 #define CCID_CLASS_SHORT_APDU 0x00020000
101 #define CCID_CLASS_EXTENDED_APDU 0x00040000
102 #define CCID_CLASS_EXCHANGE_MASK 0x00070000
103
104 /* Features from bPINSupport */
105 #define CCID_CLASS_PIN_VERIFY 0x01
106 #define CCID_CLASS_PIN_MODIFY 0x02
107
108 /* See CCID specs ch. 4.2.1 */
109 #define CCID_ICC_PRESENT_ACTIVE 0x00 /* 00 0000 00 */
110 #define CCID_ICC_PRESENT_INACTIVE 0x01 /* 00 0000 01 */
111 #define CCID_ICC_ABSENT 0x02 /* 00 0000 20 */
112 #define CCID_ICC_STATUS_MASK 0x03 /* 00 0000 11 */
113
114 #define CCID_COMMAND_FAILED 0x40 /* 01 0000 00 */
115 #define CCID_TIME_EXTENSION 0x80 /* 10 0000 00 */
116
117 /* Product identification for special treatments */
118 #define GEMPC433 0x08E64433
119 #define GEMPCKEY 0x08E63438
120 #define GEMPCTWIN 0x08E63437
121 #define GEMPCPINPAD 0x08E63478
122 #define CARDMAN3121 0x076B3021
123 #define LTC31 0x07830003
124 #define SCR331DI 0x04E65111
125 #define SCR331DINTTCOM 0x04E65120
126 #define CHERRYXX33 0x046A0005
127 #define CHERRYST2000 0x046A003E
128 #define OZ776 0x0B977762
129 #define SPR532 0x04E6E003
130
131 /* Escape sequence codes */
132 #define ESC_GEMPC_SET_ISO_MODE 1
133 #define ESC_GEMPC_SET_APDU_MODE 2
134
135 /*
136 * Possible values :
137 * 3 -> 1.8V, 3V, 5V
138 * 2 -> 3V, 5V
139 * 1 -> 5V only
140 * 0 -> automatic (selection made by the reader)
141 */
142 /*
143 * To be safe we default to 5V
144 * otherwise we would have to parse the ATR and get the value of TAi (i>2) when
145 * in T=15
146 */
147 #define VOLTAGE_AUTO 0
148 #define VOLTAGE_5V 1
149 #define VOLTAGE_3V 2
150 #define VOLTAGE_1_8V 3
151
152 int ccid_open_hack(unsigned int reader_index);
153 void ccid_error(int error, char *file, int line, const char *function);
154 _ccid_descriptor *get_ccid_descriptor(unsigned int reader_index);
155
156 /* convert a 4 byte integer in USB format into an int */
157 #define dw2i(a, x) ((((((a[x+3] << 8) + a[x+2]) << 8) + a[x+1]) << 8) + a[x])
158

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.5