#ifndef __mscdefines_h__
#define __mscdefines_h__
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef WIN32
#include "../win32/win32_pcsclite.h"
#else
#include "pcsclite.h"
#endif
#ifndef __APPLE__
#include <winscard.h>
#else
#include <PCSC/winscard.h>
#endif
#include <stdint.h>
#ifdef MSC_ARCH_WIN32
#define MAX_BUFFER_SIZE 265
#endif
typedef uint32_t MSC_RV;
typedef char MSCChar8;
typedef uint8_t *MSCPUChar8;
typedef const uint8_t *MSCPCUChar8;
typedef uint8_t MSCUChar8;
typedef uint16_t *MSCPUShort16;
typedef uint16_t MSCUShort16;
typedef int16_t *MSCPShort16;
typedef int16_t MSCShort16;
typedef uint32_t *MSCPULong32;
typedef uint32_t MSCULong32;
typedef int32_t *MSCPLong32;
typedef int32_t MSCLong32;
typedef const void *MSCPCVoid32;
typedef void *MSCPVoid32;
typedef const char *MSCCString;
typedef char *MSCString;
typedef struct
{
MSCPVoid32 pvfWriteFramework;
MSCPVoid32 pvfInitializePlugin;
MSCPVoid32 pvfIdentifyToken;
MSCPVoid32 pvfFinalizePlugin;
MSCPVoid32 pvfGetStatus;
MSCPVoid32 pvfGetCapabilities;
MSCPVoid32 pvfExtendedFeature;
MSCPVoid32 pvfGenerateKeys;
MSCPVoid32 pvfImportKey;
MSCPVoid32 pvfExportKey;
MSCPVoid32 pvfComputeCrypt;
MSCPVoid32 pvfExtAuthenticate;
MSCPVoid32 pvfListKeys;
MSCPVoid32 pvfCreatePIN;
MSCPVoid32 pvfVerifyPIN;
MSCPVoid32 pvfChangePIN;
MSCPVoid32 pvfUnblockPIN;
MSCPVoid32 pvfListPINs;
MSCPVoid32 pvfCreateObject;
MSCPVoid32 pvfDeleteObject;
MSCPVoid32 pvfWriteObject;
MSCPVoid32 pvfReadObject;
MSCPVoid32 pvfListObjects;
MSCPVoid32 pvfLogoutAll;
MSCPVoid32 pvfGetChallenge;
}
CFDyLibPointers, *LPCFDyLibPointers;
#define MSC_MAXSIZE_TOKENAME 150
#define MSC_MAXSIZE_SVCPROV 200
#define MSC_MAXSIZE_OBJID 16
#define MSC_MAXSIZE_AID 64
#define MSC_MAXSIZE_MAC 128
#define MSC_MAXSIZE_LABEL 32
#define MSC_MAXSIZE_CERT_ISSUER 512
#define MSC_MAXSIZE_CERT_SUBJECT 512
#define MSC_MAXSIZE_CERT_SERIAL 512
#define MSC_MAXSIZE_BUFFER MAX_BUFFER_SIZE
typedef struct
{
MSCChar8 tokenName[MSC_MAXSIZE_TOKENAME];
MSCChar8 slotName[MAX_READERNAME];
MSCChar8 svProvider[MSC_MAXSIZE_SVCPROV];
MSCUChar8 tokenId[MAX_ATR_SIZE];
MSCUChar8 tokenApp[MSC_MAXSIZE_AID];
MSCULong32 tokenAppLen;
MSCULong32 tokenIdLength;
MSCULong32 tokenState;
MSCULong32 tokenType;
MSCPVoid32 addParams;
MSCULong32 addParamsSize;
}
MSCTokenInfo, *MSCLPTokenInfo;
typedef MSCULong32(*MSCCallBack) (MSCLPTokenInfo, MSCULong32,
MSCPVoid32);
typedef struct
{
MSCULong32 arraySize;
MSCLPTokenInfo tokenArray;
MSCPVoid32 appData;
MSCCallBack callBack;
}
MSCEventWaitInfo, *MSCLPEventWaitInfo;
typedef MSC_RV(*LPRWEventCallback) (MSCPVoid32, int);
typedef struct
{
MSCLong32 hContext;
MSCLong32 hCard;
LPSCARD_IO_REQUEST ioType;
MSCUChar8 pMac[MSC_MAXSIZE_MAC];
MSCULong32 macSize;
MSCPVoid32 tokenLibHandle;
CFDyLibPointers libPointers;
MSCTokenInfo tokenInfo;
MSCUChar8 loggedIDs;
MSCULong32 shareMode;
LPRWEventCallback rwCallback;
}
MSCTokenConnection, *MSCLPTokenConnection;
#define MSC_OK MSC_SUCCESS
#ifdef __cplusplus
}
#endif
#endif