96 lines
2.5 KiB
C
Executable file
96 lines
2.5 KiB
C
Executable file
/* ****************************************************************************
|
|
|
|
* eID Middleware Project.
|
|
* Copyright (C) 2008-2010 FedICT.
|
|
*
|
|
* This is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License version
|
|
* 3.0 as published by the Free Software Foundation.
|
|
*
|
|
* This software is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this software; if not, see
|
|
* http://www.gnu.org/licenses/.
|
|
|
|
**************************************************************************** */
|
|
|
|
/* public API => only public header file */
|
|
|
|
#ifndef SCR_H
|
|
#define SCR_H
|
|
|
|
#ifdef SCR_EXPORTS
|
|
#define SCR_API __declspec(dllexport)
|
|
#else
|
|
#define SCR_API __declspec(dllimport)
|
|
#endif
|
|
|
|
#include <winscard.h>
|
|
|
|
typedef enum {
|
|
SCR_USAGE_AUTH = 1L,
|
|
SCR_USAGE_SIGN = 2L,
|
|
SCR_USAGE_DECR = 4L,
|
|
SCR_USAGE_PREF_MODIF = 8L,
|
|
SCR_USAGE_ADMIN = 16L
|
|
} SCR_PinUsageConstants;
|
|
|
|
typedef enum {
|
|
SCR_SUPPORT_OK = 0L,
|
|
SCR_SUPPORT_INCOMPATIBLE_CALLING_VERSION = 1L,
|
|
SCR_SUPPORT_INCOMPATIBLE_FIRMWARE = 2L,
|
|
SCR_SUPPORT_INCOMPATIBLE_FIRMWARE_VERSION = 3L,
|
|
} SCR_SupportConstants;
|
|
|
|
typedef struct {
|
|
BYTE *data;
|
|
DWORD length;
|
|
} SCR_Bytes;
|
|
|
|
typedef struct {
|
|
SCARDHANDLE hCard;
|
|
char *language;
|
|
SCR_Bytes id;
|
|
void *pinFormat; /* reserved for future use */
|
|
} SCR_Card;
|
|
|
|
typedef struct {
|
|
SCR_Bytes id;
|
|
char *shortString;
|
|
char *longString;
|
|
} SCR_Application;
|
|
|
|
typedef struct {
|
|
SCR_PinUsageConstants code;
|
|
char *shortString;
|
|
char *longString;
|
|
} SCR_PinUsage;
|
|
|
|
#define SCR_I_PIN_CHECK_FAILED 0x60100E02L
|
|
#define SCR_E_UNINITIALIZED 0xE0100E01L
|
|
|
|
SCR_API LONG SCR_Init(const char *szReader, DWORD version, SCR_SupportConstants *supported);
|
|
SCR_API LONG SCR_VerifyPIN(const SCR_Card*, BYTE pinID, const SCR_PinUsage*, const SCR_Application*, BYTE *cardStatus);
|
|
SCR_API LONG SCR_ChangePIN(const SCR_Card*, BYTE pinID, const SCR_Application*, BYTE *cardStatus);
|
|
|
|
/* if really emulating pinpad reader */
|
|
/* fixme: use #ifdef */
|
|
|
|
SCR_API LONG SCR_SendAPDU(const char *buf, SCARDHANDLE hCard);
|
|
/* for CSC */
|
|
SCR_API LONG SCR_SCardTransmit(
|
|
SCARDHANDLE hCard,
|
|
LPCSCARD_IO_REQUEST pioSendPci,
|
|
LPCBYTE pbSendBuffer,
|
|
DWORD cbSendLength,
|
|
LPSCARD_IO_REQUEST pioRecvPci,
|
|
LPBYTE pbRecvBuffer,
|
|
LPDWORD pcbRecvLength
|
|
);
|
|
|
|
#endif
|