eid-mw/cardlayer/old/scr.h

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