globalplatform
pcsclite.h
Go to the documentation of this file.
1 /*
2  * MUSCLE SmartCard Development ( http://www.linuxnet.com )
3  *
4  * Copyright (C) 1999-2004
5  * David Corcoran <corcoran@linuxnet.com>
6  * Ludovic Rousseau <ludovic.rousseau@free.fr>
7  *
8  * $Id: pcsclite.h,v 1.1 2007-08-22 22:59:14 k_o_ Exp $
9  */
10 
16 #ifndef __pcsclite_h__
17 #define __pcsclite_h__
18 
19 #include <wintypes.h>
20 
21 #ifdef __cplusplus
22 extern "C"
23 {
24 #endif
25 
26 #ifdef WIN32
27 #include <winscard.h>
28 #else
29 typedef long SCARDCONTEXT;
30 typedef SCARDCONTEXT *PSCARDCONTEXT;
31 typedef SCARDCONTEXT *LPSCARDCONTEXT;
32 typedef long SCARDHANDLE;
33 typedef SCARDHANDLE *PSCARDHANDLE;
34 typedef SCARDHANDLE *LPSCARDHANDLE;
35 
36 #define MAX_ATR_SIZE 33
38 typedef struct
39 {
40  const char *szReader;
41  void *pvUserData;
42  unsigned long dwCurrentState;
43  unsigned long dwEventState;
44  unsigned long cbAtr;
45  unsigned char rgbAtr[MAX_ATR_SIZE];
46 }
48 
51 
52 typedef struct _SCARD_IO_REQUEST
53 {
54  unsigned long dwProtocol; /* Protocol identifier */
55  unsigned long cbPciLength; /* Protocol Control Inf Length */
56 }
58 
59 typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
60 
61 extern SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci,
62  g_rgSCardRawPci;
63 
64 #define SCARD_PCI_T0 (&g_rgSCardT0Pci)
65 #define SCARD_PCI_T1 (&g_rgSCardT1Pci)
66 #define SCARD_PCI_RAW (&g_rgSCardRawPci)
67 
68 #define SCARD_S_SUCCESS 0x00000000
69 #define SCARD_E_CANCELLED 0x80100002
70 #define SCARD_E_CANT_DISPOSE 0x8010000E
71 #define SCARD_E_INSUFFICIENT_BUFFER 0x80100008
72 #define SCARD_E_INVALID_ATR 0x80100015
73 #define SCARD_E_INVALID_HANDLE 0x80100003
74 #define SCARD_E_INVALID_PARAMETER 0x80100004
75 #define SCARD_E_INVALID_TARGET 0x80100005
76 #define SCARD_E_INVALID_VALUE 0x80100011
77 #define SCARD_E_NO_MEMORY 0x80100006
78 #define SCARD_F_COMM_ERROR 0x80100013
79 #define SCARD_F_INTERNAL_ERROR 0x80100001
80 #define SCARD_F_UNKNOWN_ERROR 0x80100014
81 #define SCARD_F_WAITED_TOO_LONG 0x80100007
82 #define SCARD_E_UNKNOWN_READER 0x80100009
83 #define SCARD_E_TIMEOUT 0x8010000A
84 #define SCARD_E_SHARING_VIOLATION 0x8010000B
85 #define SCARD_E_NO_SMARTCARD 0x8010000C
86 #define SCARD_E_UNKNOWN_CARD 0x8010000D
87 #define SCARD_E_PROTO_MISMATCH 0x8010000F
88 #define SCARD_E_NOT_READY 0x80100010
89 #define SCARD_E_SYSTEM_CANCELLED 0x80100012
90 #define SCARD_E_NOT_TRANSACTED 0x80100016
91 #define SCARD_E_READER_UNAVAILABLE 0x80100017
92 
93 #define SCARD_W_UNSUPPORTED_CARD 0x80100065
94 #define SCARD_W_UNRESPONSIVE_CARD 0x80100066
95 #define SCARD_W_UNPOWERED_CARD 0x80100067
96 #define SCARD_W_RESET_CARD 0x80100068
97 #define SCARD_W_REMOVED_CARD 0x80100069
98 
99 #define SCARD_E_PCI_TOO_SMALL 0x80100019
100 #define SCARD_E_READER_UNSUPPORTED 0x8010001A
101 #define SCARD_E_DUPLICATE_READER 0x8010001B
102 #define SCARD_E_CARD_UNSUPPORTED 0x8010001C
103 #define SCARD_E_NO_SERVICE 0x8010001D
104 #define SCARD_E_SERVICE_STOPPED 0x8010001E
105 
106 #define SCARD_SCOPE_USER 0x0000
107 #define SCARD_SCOPE_TERMINAL 0x0001
108 #define SCARD_SCOPE_SYSTEM 0x0002
110 #define SCARD_PROTOCOL_UNSET 0x0000
111 #define SCARD_PROTOCOL_T0 0x0001
112 #define SCARD_PROTOCOL_T1 0x0002
113 #define SCARD_PROTOCOL_RAW 0x0004
114 #define SCARD_PROTOCOL_T15 0x0008
116 #define SCARD_PROTOCOL_ANY (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1)
118 #define SCARD_SHARE_EXCLUSIVE 0x0001
119 #define SCARD_SHARE_SHARED 0x0002
120 #define SCARD_SHARE_DIRECT 0x0003
122 #define SCARD_LEAVE_CARD 0x0000
123 #define SCARD_RESET_CARD 0x0001
124 #define SCARD_UNPOWER_CARD 0x0002
125 #define SCARD_EJECT_CARD 0x0003
127 #define SCARD_UNKNOWN 0x0001
128 #define SCARD_ABSENT 0x0002
129 #define SCARD_PRESENT 0x0004
130 #define SCARD_SWALLOWED 0x0008
131 #define SCARD_POWERED 0x0010
132 #define SCARD_NEGOTIABLE 0x0020
133 #define SCARD_SPECIFIC 0x0040
135 #define SCARD_STATE_UNAWARE 0x0000
136 #define SCARD_STATE_IGNORE 0x0001
137 #define SCARD_STATE_CHANGED 0x0002
138 #define SCARD_STATE_UNKNOWN 0x0004
139 #define SCARD_STATE_UNAVAILABLE 0x0008
140 #define SCARD_STATE_EMPTY 0x0010
141 #define SCARD_STATE_PRESENT 0x0020
142 #define SCARD_STATE_ATRMATCH 0x0040
143 #define SCARD_STATE_EXCLUSIVE 0x0080
144 #define SCARD_STATE_INUSE 0x0100
145 #define SCARD_STATE_MUTE 0x0200
146 #define SCARD_STATE_UNPOWERED 0x0400
148 #endif
149 
151 #define SCARD_W_INSERTED_CARD 0x8010006A
152 #define SCARD_E_UNSUPPORTED_FEATURE 0x8010001F
153 
154 #define SCARD_SCOPE_GLOBAL 0x0003
156 #define SCARD_RESET 0x0001
157 #define SCARD_INSERTED 0x0002
158 #define SCARD_REMOVED 0x0004
160 #define BLOCK_STATUS_RESUME 0x00FF
161 #define BLOCK_STATUS_BLOCKING 0x00FA
163 #define PCSCLITE_CONFIG_DIR "@confdir_exp@"
164 
165 #ifndef USE_IPCDIR
166 #define PCSCLITE_IPC_DIR "/var/run"
167 #else
168 #define PCSCLITE_IPC_DIR USE_IPCDIR
169 #endif
170 
171 #define PCSCLITE_READER_CONFIG PCSCLITE_CONFIG_DIR "/reader.conf"
172 #define PCSCLITE_PUBSHM_FILE PCSCLITE_IPC_DIR "/pcscd.pub"
173 #define PCSCLITE_CSOCK_NAME PCSCLITE_IPC_DIR "/pcscd.comm"
174 
175 #define PCSCLITE_SVC_IDENTITY 0x01030000
177 #ifndef INFINITE
178 #define INFINITE 0xFFFFFFFF
179 #endif
180 #define PCSCLITE_INFINITE_TIMEOUT 4320000
182 #define PCSCLITE_VERSION_NUMBER "@VERSION@"
183 #define PCSCLITE_CLIENT_ATTEMPTS 120
184 #define PCSCLITE_MCLIENT_ATTEMPTS 20
185 #define PCSCLITE_STATUS_POLL_RATE 400000
186 #define PCSCLITE_MSG_KEY_LEN 16
187 #define PCSCLITE_RW_ATTEMPTS 100
190 #define PCSCLITE_MAX_APPLICATIONS 16
191 
192 #define PCSCLITE_MAX_APPLICATION_CONTEXTS 16
193 
194 #define PCSCLITE_MAX_APPLICATIONS_CONTEXTS \
195  PCSCLITE_MAX_APPLICATIONS * PCSCLITE_MAX_APPLICATION_CONTEXTS
196 
197 #define PCSCLITE_MAX_READER_CONTEXT_CHANNELS 16
198 
199 #define PCSCLITE_MAX_APPLICATION_CONTEXT_CHANNELS 16
200 
201 #define PCSCLITE_MAX_READERS_CONTEXTS 16
202 
203 /* PCSCLITE_MAX_READERS is deprecated
204  * use PCSCLITE_MAX_READERS_CONTEXTS instead */
205 /* extern int PCSCLITE_MAX_READERS __attribute__ ((deprecated)); */
206 
207 #define PCSCLITE_MAX_THREADS 16
208 #define PCSCLITE_STATUS_WAIT 200000
209 #define PCSCLITE_TRANSACTION_TIMEOUT 40
210 #define MAX_READERNAME 52
211 #define MAX_LIBNAME 100
212 #define MAX_DEVICENAME 255
213 
214 #ifndef SCARD_ATR_LENGTH
215 #define SCARD_ATR_LENGTH MAX_ATR_SIZE
216 #endif
217 
218 /*
219  * The message and buffer sizes must be multiples of 16.
220  * The max message size must be at least large enough
221  * to accomodate the transmit_struct
222  */
223 #define PCSCLITE_MAX_MESSAGE_SIZE 2048
224 #define MAX_BUFFER_SIZE 264
225 #define MAX_BUFFER_SIZE_EXTENDED (4 + 3 + (1<<16) + 3)
226 #define PCSCLITE_SERVER_ATTEMPTS 5
228 /*
229  * Gets a stringified error response
230  */
231 char *pcsc_stringify_error(long);
232 
233 #ifdef __cplusplus
234 }
235 #endif
236 
237 #endif
_SCARD_IO_REQUEST
Definition: pcsclite.h:52
MAX_ATR_SIZE
#define MAX_ATR_SIZE
Definition: pcsclite.h:36
winscard.h
This handles smartcard reader communications.
SCARD_READERSTATE_A
Definition: pcsclite.h:38
wintypes.h
This keeps a list of Windows(R) types.