103
103
#define SCARD_E_NO_SERVICE 0x8010001D
104
104
#define SCARD_E_SERVICE_STOPPED 0x8010001E
106
#define SCARD_SCOPE_USER 0x0000 /* Scope in user space */
107
#define SCARD_SCOPE_TERMINAL 0x0001 /* Scope in terminal */
108
#define SCARD_SCOPE_SYSTEM 0x0002 /* Scope in system */
110
#define SCARD_PROTOCOL_UNSET 0x0000 /* protocol not set */
111
#define SCARD_PROTOCOL_T0 0x0001 /* T=0 active protocol. */
112
#define SCARD_PROTOCOL_T1 0x0002 /* T=1 active protocol. */
113
#define SCARD_PROTOCOL_RAW 0x0004 /* Raw active protocol. */
114
#define SCARD_PROTOCOL_T15 0x0008 /* T=15 protocol. */
116
#define SCARD_PROTOCOL_ANY (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1) /* IFD determines prot. */
118
#define SCARD_SHARE_EXCLUSIVE 0x0001 /* Exclusive mode only */
119
#define SCARD_SHARE_SHARED 0x0002 /* Shared mode only */
120
#define SCARD_SHARE_DIRECT 0x0003 /* Raw mode only */
122
#define SCARD_LEAVE_CARD 0x0000 /* Do nothing on close */
123
#define SCARD_RESET_CARD 0x0001 /* Reset on close */
124
#define SCARD_UNPOWER_CARD 0x0002 /* Power down on close */
125
#define SCARD_EJECT_CARD 0x0003 /* Eject on close */
127
#define SCARD_UNKNOWN 0x0001 /* Unknown state */
128
#define SCARD_ABSENT 0x0002 /* Card is absent */
129
#define SCARD_PRESENT 0x0004 /* Card is present */
130
#define SCARD_SWALLOWED 0x0008 /* Card not powered */
131
#define SCARD_POWERED 0x0010 /* Card is powered */
132
#define SCARD_NEGOTIABLE 0x0020 /* Ready for PTS */
133
#define SCARD_SPECIFIC 0x0040 /* PTS has been set */
135
#define SCARD_STATE_UNAWARE 0x0000 /* App wants status */
136
#define SCARD_STATE_IGNORE 0x0001 /* Ignore this reader */
137
#define SCARD_STATE_CHANGED 0x0002 /* State has changed */
138
#define SCARD_STATE_UNKNOWN 0x0004 /* Reader unknown */
139
#define SCARD_STATE_UNAVAILABLE 0x0008 /* Status unavailable */
140
#define SCARD_STATE_EMPTY 0x0010 /* Card removed */
141
#define SCARD_STATE_PRESENT 0x0020 /* Card inserted */
142
#define SCARD_STATE_ATRMATCH 0x0040 /* ATR matches card */
143
#define SCARD_STATE_EXCLUSIVE 0x0080 /* Exclusive Mode */
144
#define SCARD_STATE_INUSE 0x0100 /* Shared Mode */
145
#define SCARD_STATE_MUTE 0x0200 /* Unresponsive card */
146
#define SCARD_STATE_UNPOWERED 0x0400 /* Unpowered card */
106
#define SCARD_SCOPE_USER 0x0000 /**< Scope in user space */
107
#define SCARD_SCOPE_TERMINAL 0x0001 /**< Scope in terminal */
108
#define SCARD_SCOPE_SYSTEM 0x0002 /**< Scope in system */
110
#define SCARD_PROTOCOL_UNSET 0x0000 /**< protocol not set */
111
#define SCARD_PROTOCOL_T0 0x0001 /**< T=0 active protocol. */
112
#define SCARD_PROTOCOL_T1 0x0002 /**< T=1 active protocol. */
113
#define SCARD_PROTOCOL_RAW 0x0004 /**< Raw active protocol. */
114
#define SCARD_PROTOCOL_T15 0x0008 /**< T=15 protocol. */
116
#define SCARD_PROTOCOL_ANY (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1) /**< IFD determines prot. */
118
#define SCARD_SHARE_EXCLUSIVE 0x0001 /**< Exclusive mode only */
119
#define SCARD_SHARE_SHARED 0x0002 /**< Shared mode only */
120
#define SCARD_SHARE_DIRECT 0x0003 /**< Raw mode only */
122
#define SCARD_LEAVE_CARD 0x0000 /**< Do nothing on close */
123
#define SCARD_RESET_CARD 0x0001 /**< Reset on close */
124
#define SCARD_UNPOWER_CARD 0x0002 /**< Power down on close */
125
#define SCARD_EJECT_CARD 0x0003 /**< Eject on close */
127
#define SCARD_UNKNOWN 0x0001 /**< Unknown state */
128
#define SCARD_ABSENT 0x0002 /**< Card is absent */
129
#define SCARD_PRESENT 0x0004 /**< Card is present */
130
#define SCARD_SWALLOWED 0x0008 /**< Card not powered */
131
#define SCARD_POWERED 0x0010 /**< Card is powered */
132
#define SCARD_NEGOTIABLE 0x0020 /**< Ready for PTS */
133
#define SCARD_SPECIFIC 0x0040 /**< PTS has been set */
135
#define SCARD_STATE_UNAWARE 0x0000 /**< App wants status */
136
#define SCARD_STATE_IGNORE 0x0001 /**< Ignore this reader */
137
#define SCARD_STATE_CHANGED 0x0002 /**< State has changed */
138
#define SCARD_STATE_UNKNOWN 0x0004 /**< Reader unknown */
139
#define SCARD_STATE_UNAVAILABLE 0x0008 /**< Status unavailable */
140
#define SCARD_STATE_EMPTY 0x0010 /**< Card removed */
141
#define SCARD_STATE_PRESENT 0x0020 /**< Card inserted */
142
#define SCARD_STATE_ATRMATCH 0x0040 /**< ATR matches card */
143
#define SCARD_STATE_EXCLUSIVE 0x0080 /**< Exclusive Mode */
144
#define SCARD_STATE_INUSE 0x0100 /**< Shared Mode */
145
#define SCARD_STATE_MUTE 0x0200 /**< Unresponsive card */
146
#define SCARD_STATE_UNPOWERED 0x0400 /**< Unpowered card */
150
/* PC/SC Lite specific extensions */
150
/** PC/SC Lite specific extensions */
151
151
#define SCARD_W_INSERTED_CARD 0x8010006A
152
152
#define SCARD_E_UNSUPPORTED_FEATURE 0x8010001F
154
#define SCARD_SCOPE_GLOBAL 0x0003 /* Scope is global */
156
#define SCARD_RESET 0x0001 /* Card was reset */
157
#define SCARD_INSERTED 0x0002 /* Card was inserted */
158
#define SCARD_REMOVED 0x0004 /* Card was removed */
160
#define BLOCK_STATUS_RESUME 0x00FF /* Normal resume */
161
#define BLOCK_STATUS_BLOCKING 0x00FA /* Function is blocking */
154
#define SCARD_SCOPE_GLOBAL 0x0003 /**< Scope is global */
156
#define SCARD_RESET 0x0001 /**< Card was reset */
157
#define SCARD_INSERTED 0x0002 /**< Card was inserted */
158
#define SCARD_REMOVED 0x0004 /**< Card was removed */
160
#define BLOCK_STATUS_RESUME 0x00FF /**< Normal resume */
161
#define BLOCK_STATUS_BLOCKING 0x00FA /**< Function is blocking */
163
163
#define PCSCLITE_CONFIG_DIR "@confdir_exp@"
172
172
#define PCSCLITE_PUBSHM_FILE PCSCLITE_IPC_DIR "/pcscd.pub"
173
173
#define PCSCLITE_CSOCK_NAME PCSCLITE_IPC_DIR "/pcscd.comm"
175
#define PCSCLITE_SVC_IDENTITY 0x01030000 /* Service ID */
175
#define PCSCLITE_SVC_IDENTITY 0x01030000 /**< Service ID */
178
#define INFINITE 0xFFFFFFFF /* Infinite timeout */
178
#define INFINITE 0xFFFFFFFF /**< Infinite timeout */
180
#define PCSCLITE_INFINITE_TIMEOUT 4320000 /* 50 day infinite t/o */
182
#define PCSCLITE_VERSION_NUMBER "@VERSION@" /* Current version */
183
#define PCSCLITE_CLIENT_ATTEMPTS 120 /* Attempts to reach sv */
184
#define PCSCLITE_MCLIENT_ATTEMPTS 20 /* Attempts to reach sv */
185
#define PCSCLITE_STATUS_POLL_RATE 400000 /* Status polling rate */
186
#define PCSCLITE_MSG_KEY_LEN 16 /* App ID key length */
187
#define PCSCLITE_RW_ATTEMPTS 100 /* Attempts to rd/wrt */
189
/* Maximum applications */
180
#define PCSCLITE_INFINITE_TIMEOUT 4320000 /**< 50 day infinite t/o */
182
#define PCSCLITE_VERSION_NUMBER "@VERSION@" /**< Current version */
183
#define PCSCLITE_CLIENT_ATTEMPTS 120 /**< Attempts to reach sv */
184
#define PCSCLITE_MCLIENT_ATTEMPTS 20 /**< Attempts to reach sv */
185
#define PCSCLITE_STATUS_POLL_RATE 400000 /**< Status polling rate */
186
#define PCSCLITE_MSG_KEY_LEN 16 /**< App ID key length */
187
#define PCSCLITE_RW_ATTEMPTS 100 /**< Attempts to rd/wrt */
189
/** Maximum applications */
190
190
#define PCSCLITE_MAX_APPLICATIONS 16
191
/* Maximum contexts by application */
191
/** Maximum contexts by application */
192
192
#define PCSCLITE_MAX_APPLICATION_CONTEXTS 16
193
/* Maximum of applications contexts that pcscd can accept */
193
/** Maximum of applications contexts that pcscd can accept */
194
194
#define PCSCLITE_MAX_APPLICATIONS_CONTEXTS \
195
195
PCSCLITE_MAX_APPLICATIONS * PCSCLITE_MAX_APPLICATION_CONTEXTS
196
/* Maximum channels on a reader context */
196
/** Maximum channels on a reader context */
197
197
#define PCSCLITE_MAX_READER_CONTEXT_CHANNELS 16
198
/* Maximum channels on an application context */
198
/** Maximum channels on an application context */
199
199
#define PCSCLITE_MAX_APPLICATION_CONTEXT_CHANNELS 16
200
/* Maximum readers context (a slot is count as a reader) */
200
/** Maximum readers context (a slot is count as a reader) */
201
201
#define PCSCLITE_MAX_READERS_CONTEXTS 16
203
203
/* PCSCLITE_MAX_READERS is deprecated
204
204
* use PCSCLITE_MAX_READERS_CONTEXTS instead */
205
205
/* extern int PCSCLITE_MAX_READERS __attribute__ ((deprecated)); */
207
#define PCSCLITE_MAX_THREADS 16 /* Stat change threads */
208
#define PCSCLITE_STATUS_WAIT 200000 /* Status Change Sleep */
209
#define PCSCLITE_TRANSACTION_TIMEOUT 40 /* Transaction timeout */
207
#define PCSCLITE_MAX_THREADS 16 /**< Stat change threads */
208
#define PCSCLITE_STATUS_WAIT 200000 /**< Status Change Sleep */
209
#define PCSCLITE_TRANSACTION_TIMEOUT 40 /**< Transaction timeout */
210
210
#define MAX_READERNAME 52
211
211
#define MAX_LIBNAME 100
212
212
#define MAX_DEVICENAME 255
214
214
#ifndef SCARD_ATR_LENGTH
215
#define SCARD_ATR_LENGTH MAX_ATR_SIZE /* Maximum ATR size */
215
#define SCARD_ATR_LENGTH MAX_ATR_SIZE /**< Maximum ATR size */
219
* Enhanced messaging has been added to accomodate newer devices which have
220
* more advanced capabilites, such as dedicated secure co-processors which
221
* can stream and encrypt data over USB. In order to used enhanced messaging
222
* you must define PCSCLITE_ENHANCED_MESSAGING in the framework(library),
223
* the daemon, and your application
226
#ifndef PCSCLITE_ENHANCED_MESSAGING
227
#define PCSCLITE_MAX_MESSAGE_SIZE 2048 /* Transport msg len */
228
#define MAX_BUFFER_SIZE 264 /* Maximum Tx/Rx Buffer */
229
#define PCSCLITE_SERVER_ATTEMPTS 5 /* Attempts to reach cl */
232
219
* The message and buffer sizes must be multiples of 16.
233
220
* The max message size must be at least large enough
234
221
* to accomodate the transmit_struct
236
#define PCSCLITE_MAX_MESSAGE_SIZE (1<<17) /* enhanced (128K) msg len */
237
#define MAX_BUFFER_SIZE (1<<15) /* enhanced (32K) Tx/Rx Buffer */
238
#define PCSCLITE_SERVER_ATTEMPTS 200 /* To allow larger data reads/writes */
223
#define PCSCLITE_MAX_MESSAGE_SIZE 2048 /**< Transport msg len */
224
#define MAX_BUFFER_SIZE 264 /**< Maximum Tx/Rx Buffer for short APDU */
225
#define MAX_BUFFER_SIZE_EXTENDED (4 + 3 + (1<<16) + 3) /**< enhanced (64K + APDU + Lc + Le) Tx/Rx Buffer */
226
#define PCSCLITE_SERVER_ATTEMPTS 5 /**< Attempts to reach cl */
242
229
* Gets a stringified error response