clientpcsc_l.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: client_p.h 137 2005-11-03 13:07:50Z aquamaniac $
00005     begin       : Mon Mar 01 2004
00006     copyright   : (C) 2004 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef CHIPCARD_CLIENT_CLIENTPCSC_L_H
00015 #define CHIPCARD_CLIENT_CLIENTPCSC_L_H
00016 
00017 #include "clientpcsc.h"
00018 
00019 
00020 #include <inttypes.h>
00021 
00022 #define MAX_ATR_SIZE  33
00023 
00024 
00025 /* define some types */
00026 #ifndef OS_WIN32
00027 
00028 #ifndef BYTE
00029 typedef unsigned char BYTE;
00030 #endif
00031 
00032 /* basic types */
00033 typedef unsigned char UCHAR;
00034 typedef unsigned char *PUCHAR;
00035 typedef unsigned short USHORT;
00036 typedef unsigned long ULONG;
00037 typedef void *LPVOID;
00038 typedef short BOOL;
00039 typedef unsigned long *PULONG;
00040 typedef const void *LPCVOID;
00041 typedef unsigned long DWORD;
00042 typedef unsigned long *PDWORD;
00043 typedef unsigned short WORD;
00044 typedef long LONG;
00045 typedef long RESPONSECODE;
00046 typedef const char *LPCSTR;
00047 typedef BYTE *LPBYTE;
00048 typedef DWORD *LPDWORD;
00049 typedef char *LPSTR;
00050 
00051 typedef char *LPTSTR;
00052 typedef const char *LPCTSTR;
00053 
00054 #else
00055 # include <windows.h>
00056 # include <wtypes.h>
00057 #endif
00058 
00059 /* common basic types */
00060 typedef const BYTE *LPCBYTE;
00061 
00062 
00063 /* pc/sc types */
00064 typedef ULONG SCARDCONTEXT;
00065 typedef SCARDCONTEXT *PSCARDCONTEXT;
00066 typedef SCARDCONTEXT *LPSCARDCONTEXT;
00067 typedef ULONG SCARDHANDLE;
00068 typedef SCARDHANDLE *PSCARDHANDLE;
00069 typedef SCARDHANDLE *LPSCARDHANDLE;
00070 
00071 typedef struct _SCARD_IO_REQUEST {
00072   unsigned long dwProtocol;
00073   unsigned long cbPciLength;
00074 } SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
00075 
00076 typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
00077 
00078 
00079 #define SCARD_S_SUCCESS                 0x00000000
00080 #define SCARD_E_TIMEOUT                 0x8010000A
00081 #define SCARD_E_NO_SMARTCARD            0x8010000C
00082 #define SCARD_E_UNKNOWN_CARD            0x8010000D
00083 #define SCARD_E_PROTO_MISMATCH          0x8010000F
00084 #define SCARD_E_NOT_READY               0x80100010
00085 #define SCARD_E_READER_UNAVAILABLE      0x80100017
00086 
00087 #define SCARD_W_UNSUPPORTED_CARD        0x80100065
00088 #define SCARD_W_UNRESPONSIVE_CARD       0x80100066
00089 #define SCARD_W_UNPOWERED_CARD          0x80100067
00090 #define SCARD_W_RESET_CARD              0x80100068
00091 #define SCARD_W_REMOVED_CARD            0x80100069
00092 
00093 #define SCARD_E_READER_UNSUPPORTED      0x8010001A
00094 #define SCARD_E_CARD_UNSUPPORTED        0x8010001C
00095 
00096 #define SCARD_SCOPE_SYSTEM              0x0002
00097 #define SCARD_PROTOCOL_T0               0x0001
00098 #define SCARD_PROTOCOL_T1               0x0002
00099 
00100 #define SCARD_SHARE_EXCLUSIVE           0x0001
00101 
00102 #define SCARD_RESET_CARD                0x0001
00103 
00104 
00105 /* from PC/SC */
00106 #define SCARD_CTL_CODE(code) (0x42000000 + (code))
00107 #define CM_IOCTL_GET_FEATURE_REQUEST SCARD_CTL_CODE(3400)
00108 
00109 #define FEATURE_VERIFY_PIN_START  0x01 /* OMNIKEY Proposal */
00110 #define FEATURE_VERIFY_PIN_FINISH 0x02 /* OMNIKEY Proposal */
00111 #define FEATURE_MODIFY_PIN_START  0x03 /* OMNIKEY Proposal */
00112 #define FEATURE_MODIFY_PIN_FINISH 0x04 /* OMNIKEY Proposal */
00113 #define FEATURE_GET_KEY_PRESSED   0x05 /* OMNIKEY Proposal */
00114 #define FEATURE_VERIFY_PIN_DIRECT 0x06 /* USB CCID PIN Verify */
00115 #define FEATURE_MODIFY_PIN_DIRECT 0x07 /* USB CCID PIN Modify */
00116 #define FEATURE_MCT_READERDIRECT  0x08 /* KOBIL Proposal */
00117 #define FEATURE_MCT_UNIVERSAL     0x09 /* KOBIL Proposal */
00118 #define FEATURE_IFD_PIN_PROP      0x0A /* Gemplus Proposal */
00119 #define FEATURE_ABORT             0x0B /* SCM Proposal */
00120 
00121 
00122 /* Set structure elements aligment on bytes
00123  * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */
00124 #ifdef __APPLE__
00125 #pragma pack(1)
00126 #else
00127 #pragma pack(push, 1)
00128 #endif
00129 
00130 /* the structure must be 6-bytes long */
00131 typedef struct {
00132   uint8_t tag;
00133   uint8_t length;
00134   uint32_t value;
00135 } PCSC_TLV_STRUCTURE;
00136 
00137 #ifdef __APPLE__
00138 #pragma pack()
00139 #else
00140 #pragma pack(pop)
00141 #endif
00142 
00143 
00144 
00145 
00146 
00147 #endif /* CHIPCARD_CLIENT_CLIENTPCSC_L_H */
00148 

Generated on Sat Sep 22 04:43:21 2007 for libchipcard2 by  doxygen 1.5.3