|
Packit Service |
aee942 |
/*
|
|
Packit Service |
aee942 |
defs.h:
|
|
Packit Service |
aee942 |
Copyright (C) 2003-2010 Ludovic Rousseau
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
This library is free software; you can redistribute it and/or
|
|
Packit Service |
aee942 |
modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
aee942 |
License as published by the Free Software Foundation; either
|
|
Packit Service |
aee942 |
version 2.1 of the License, or (at your option) any later version.
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
This library is distributed in the hope that it will be useful,
|
|
Packit Service |
aee942 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
aee942 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
aee942 |
Lesser General Public License for more details.
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
You should have received a copy of the GNU Lesser General Public License
|
|
Packit Service |
aee942 |
along with this library; if not, write to the Free Software Foundation,
|
|
Packit Service |
aee942 |
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
Packit Service |
aee942 |
*/
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#include <pcsclite.h>
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#include "openct/proto-t1.h"
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
typedef struct CCID_DESC
|
|
Packit Service |
aee942 |
{
|
|
Packit Service |
aee942 |
/*
|
|
Packit Service |
aee942 |
* ATR
|
|
Packit Service |
aee942 |
*/
|
|
Packit Service |
aee942 |
int nATRLength;
|
|
Packit Service |
aee942 |
unsigned char pcATRBuffer[MAX_ATR_SIZE];
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/*
|
|
Packit Service |
aee942 |
* Card state
|
|
Packit Service |
aee942 |
*/
|
|
Packit Service |
aee942 |
unsigned char bPowerFlags;
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/*
|
|
Packit Service |
aee942 |
* T=1 Protocol context
|
|
Packit Service |
aee942 |
*/
|
|
Packit Service |
aee942 |
t1_state_t t1;
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/* reader name passed to IFDHCreateChannelByName() */
|
|
Packit Service |
aee942 |
char *readerName;
|
|
Packit Service |
aee942 |
} CcidDesc;
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
typedef enum {
|
|
Packit Service |
aee942 |
STATUS_NO_SUCH_DEVICE = 0xF9,
|
|
Packit Service |
aee942 |
STATUS_SUCCESS = 0xFA,
|
|
Packit Service |
aee942 |
STATUS_UNSUCCESSFUL = 0xFB,
|
|
Packit Service |
aee942 |
STATUS_COMM_ERROR = 0xFC,
|
|
Packit Service |
aee942 |
STATUS_DEVICE_PROTOCOL_ERROR = 0xFD,
|
|
Packit Service |
aee942 |
STATUS_COMM_NAK = 0xFE,
|
|
Packit Service |
aee942 |
STATUS_SECONDARY_SLOT = 0xFF
|
|
Packit Service |
aee942 |
} status_t;
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/* Powerflag (used to detect quick insertion removals unnoticed by the
|
|
Packit Service |
aee942 |
* resource manager) */
|
|
Packit Service |
aee942 |
/* Initial value */
|
|
Packit Service |
aee942 |
#define POWERFLAGS_RAZ 0x00
|
|
Packit Service |
aee942 |
/* Flag set when a power up has been requested */
|
|
Packit Service |
aee942 |
#define MASK_POWERFLAGS_PUP 0x01
|
|
Packit Service |
aee942 |
/* Flag set when a power down is requested */
|
|
Packit Service |
aee942 |
#define MASK_POWERFLAGS_PDWN 0x02
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/* Communication buffer size (max=adpu+Lc+data+Le)
|
|
Packit Service |
aee942 |
* we use a 64kB for extended APDU on APDU mode readers */
|
|
Packit Service |
aee942 |
#define CMD_BUF_SIZE (4 +3 +64*1024 +3)
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/* Protocols */
|
|
Packit Service |
aee942 |
#define T_0 0
|
|
Packit Service |
aee942 |
#define T_1 1
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/* Default communication read timeout in milliseconds */
|
|
Packit Service |
aee942 |
#define DEFAULT_COM_READ_TIMEOUT (3*1000)
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/* DWORD type formating */
|
|
Packit Service |
aee942 |
#ifdef __APPLE__
|
|
Packit Service |
aee942 |
/* Apple defines DWORD as uint32_t */
|
|
Packit Service |
aee942 |
#define DWORD_X "%X"
|
|
Packit Service |
aee942 |
#define DWORD_D "%d"
|
|
Packit Service |
aee942 |
#else
|
|
Packit Service |
aee942 |
/* pcsc-lite defines DWORD as unsigned long */
|
|
Packit Service |
aee942 |
#define DWORD_X "%lX"
|
|
Packit Service |
aee942 |
#define DWORD_D "%ld"
|
|
Packit Service |
aee942 |
#endif
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
/*
|
|
Packit Service |
aee942 |
* communication ports abstraction
|
|
Packit Service |
aee942 |
*/
|
|
Packit Service |
aee942 |
#ifdef TWIN_SERIAL
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#define OpenPortByName OpenSerialByName
|
|
Packit Service |
aee942 |
#define OpenPort OpenSerial
|
|
Packit Service |
aee942 |
#define ClosePort CloseSerial
|
|
Packit Service |
aee942 |
#define ReadPort ReadSerial
|
|
Packit Service |
aee942 |
#define WritePort WriteSerial
|
|
Packit Service |
aee942 |
#include "ccid_serial.h"
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#else
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#define OpenPortByName OpenUSBByName
|
|
Packit Service |
aee942 |
#define OpenPort OpenUSB
|
|
Packit Service |
aee942 |
#define ClosePort CloseUSB
|
|
Packit Service |
aee942 |
#define ReadPort ReadUSB
|
|
Packit Service |
aee942 |
#define WritePort WriteUSB
|
|
Packit Service |
aee942 |
#include "ccid_usb.h"
|
|
Packit Service |
aee942 |
|
|
Packit Service |
aee942 |
#endif
|
|
Packit Service |
aee942 |
|