Files
m241Neelima/components/ip_net2-6.9/ipeap/src/ipeap_sim_reader.h
T
2026-07-30 11:19:44 +05:30

264 lines
9.9 KiB
C

/*
******************************************************************************
* INTERPEAK INTERNAL API HEADER FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipeap_sim_reader.h,v $ $Revision: 1.3 $
* $Source: /home/interpeak/CVSRoot/ipeap/src/ipeap_sim_reader.h,v $
* $Author: dbush $ $Date: 2008-04-06 21:35:02 $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Roger Boden <roger@interpeak.se>
******************************************************************************
*/
#if !defined(IPEAP_SIM_READER_H) && \
(defined(IPEAP_USE_EAP_SIM) || defined(IPEAP_USE_EAP_AKA))
#define IPEAP_SIM_READER_H
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
****************************************************************************
* 2 CONFIGURATION
****************************************************************************
*/
#include "ipeap_config.h"
/*
****************************************************************************
* 3 INCLUDE FILES
****************************************************************************
*/
#include <ipcom_type.h>
#include <ipcom_cstyle.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
****************************************************************************
* 4 DEFINES
****************************************************************************
*/
#ifndef SCARD_S_SUCCESS
#define SCARD_S_SUCCESS 0x00000000
#define SCARD_E_CANCELLED 0x80100002
#define SCARD_E_CANT_DISPOSE 0x8010000E
#define SCARD_E_INSUFFICIENT_BUFFER 0x80100008
#define SCARD_E_INVALID_ATR 0x80100015
#define SCARD_E_INVALID_HANDLE 0x80100003
#define SCARD_E_INVALID_PARAMETER 0x80100004
#define SCARD_E_INVALID_TARGET 0x80100005
#define SCARD_E_INVALID_VALUE 0x80100011
#define SCARD_E_NO_MEMORY 0x80100006
#define SCARD_F_COMM_ERROR 0x80100013
#define SCARD_F_INTERNAL_ERROR 0x80100001
#define SCARD_F_UNKNOWN_ERROR 0x80100014
#define SCARD_F_WAITED_TOO_LONG 0x80100007
#define SCARD_E_UNKNOWN_READER 0x80100009
#define SCARD_E_TIMEOUT 0x8010000A
#define SCARD_E_SHARING_VIOLATION 0x8010000B
#define SCARD_E_NO_SMARTCARD 0x8010000C
#define SCARD_E_UNKNOWN_CARD 0x8010000D
#define SCARD_E_PROTO_MISMATCH 0x8010000F
#define SCARD_E_NOT_READY 0x80100010
#define SCARD_E_SYSTEM_CANCELLED 0x80100012
#define SCARD_E_NOT_TRANSACTED 0x80100016
#define SCARD_E_READER_UNAVAILABLE 0x80100017
#define SCARD_W_UNSUPPORTED_CARD 0x80100065
#define SCARD_W_UNRESPONSIVE_CARD 0x80100066
#define SCARD_W_UNPOWERED_CARD 0x80100067
#define SCARD_W_RESET_CARD 0x80100068
#define SCARD_W_REMOVED_CARD 0x80100069
#define SCARD_W_INSERTED_CARD 0x8010006A
#define SCARD_E_UNSUPPORTED_FEATURE 0x8010001F
#define SCARD_E_PCI_TOO_SMALL 0x80100019
#define SCARD_E_READER_UNSUPPORTED 0x8010001A
#define SCARD_E_DUPLICATE_READER 0x8010001B
#define SCARD_E_CARD_UNSUPPORTED 0x8010001C
#define SCARD_E_NO_SERVICE 0x8010001D
#define SCARD_E_SERVICE_STOPPED 0x8010001E
#endif
#ifndef SCARD_SCOPE_USER
#define SCARD_SCOPE_USER 0x0000 /* Scope in user space */
#define SCARD_SCOPE_TERMINAL 0x0001 /* Scope in terminal */
#define SCARD_SCOPE_SYSTEM 0x0002 /* Scope in system */
#define SCARD_SCOPE_GLOBAL 0x0003 /* Scope is global */
#endif
#ifndef SCARD_PROTOCOL_T0
#define SCARD_PROTOCOL_T0 0x0001 /* T=0 active protocol. */
#define SCARD_PROTOCOL_T1 0x0002 /* T=1 active protocol. */
#endif
#ifndef SCARD_SHARE_EXCLUSIVE
#define SCARD_SHARE_EXCLUSIVE 0x0001 /* Exclusive mode only */
#define SCARD_SHARE_SHARED 0x0002 /* Shared mode only */
#define SCARD_SHARE_DIRECT 0x0003 /* Raw mode only */
#endif
#ifndef SCARD_LEAVE_CARD
#define SCARD_LEAVE_CARD 0x0000 /* Do nothing on close */
#define SCARD_RESET_CARD 0x0001 /* Reset on close */
#define SCARD_UNPOWER_CARD 0x0002 /* Power down on close */
#define SCARD_EJECT_CARD 0x0003 /* Eject on close */
#endif
/*
****************************************************************************
* 5 TYPES
****************************************************************************
*/
#ifndef SCARDCONTEXT
typedef Ip_u32 SCARDCONTEXT;
typedef SCARDCONTEXT *PSCARDCONTEXT, *LPSCARDCONTEXT;
#endif
#ifndef SCARDHANDLE
typedef Ip_u32 SCARDHANDLE;
typedef SCARDHANDLE *PSCARDHANDLE, *LPSCARDHANDLE;
#endif
typedef struct
{
Ip_u32 dwProtocol; /* Protocol identifier */
Ip_u32 cbPciLength; /* Protocol Control Information Length */
} CARD_IO_REQUEST, *LPCARD_IO_REQUEST;
typedef const CARD_IO_REQUEST *LPCCARD_IO_REQUEST;
/*
****************************************************************************
* 6 FUNCTIONS
****************************************************************************
*/
/*
*===========================================================================
* ipeap_reader_establish_context
*===========================================================================
* Description: Establish a connection with PC/SC.
* Parameters: dwScope - Scope of connection
* pvReserved1 - Must be set to IP_NULL
* pvReserved2 - Must be set to IP_NULL
* phContext - Will get handle to contect if succesful.
* Returns: PC/SC error code
*/
IP_GLOBAL Ip_u32
ipeap_reader_establish_context(
Ip_u32 dwScope,
const void* pvReserved1,
const void* pvReserved2,
LPSCARDCONTEXT phContext);
/*
*===========================================================================
* ipeap_reader_release_context
*===========================================================================
* Description: Release a connection with PC/SC.
* Parameters: hContext - Handle to existing context.
* Returns: PC/SC error code
*/
IP_GLOBAL Ip_u32
ipeap_reader_release_context(
SCARDCONTEXT hContext);
/*
*===========================================================================
* ipeap_reader_list_readers
*===========================================================================
* Description: List available PC/SC readers. Will return a list of strings
* separated with 0. The last string will end with two 0. May
* ask for length of needed buffer: set mszReaders to IP_NULL.
* Parameters: hContext - Handle to existing context.
* mszGroups - Reader group.
* mszReaders - Buffer for reader strings.
* pcchReaders - Length of reader strings buffer.
* Returns: PC/SC error code
*/
IP_GLOBAL Ip_u32
ipeap_reader_list_readers(
SCARDCONTEXT hContext,
const char* mszGroups,
char* mszReaders,
Ip_u32* pcchReaders);
/*
*===========================================================================
* ipeap_reader_connect
*===========================================================================
* Description: Open a connection with a card in a PC/SC reader.
* Parameters: hContext - Handle to existing context.
* szReader - The reader name to connect.
* dwShareMode - Share mode for the connection.
* dwPreferredProtocols - Prefered protocol used for the
* connection.
* phCard - Will receive a handle to the card if successful.
* pdwActiveProtocol - Will receive the protocol used if
* successful.
* Returns: PC/SC error code
*/
IP_GLOBAL Ip_u32
ipeap_reader_connect(
SCARDCONTEXT hContext,
const char* szReader,
Ip_u32 dwShareMode,
Ip_u32 dwPreferredProtocols,
LPSCARDHANDLE phCard,
Ip_u32* pdwActiveProtocol);
/*
*===========================================================================
* ipeap_reader_disconnect
*===========================================================================
* Description: Close a connection with a card in a PC/SC reader.
* Parameters: hCard - Handle to card context.
* dwDisposition - How should the connection be closed.
* Returns: PC/SC error code
*/
IP_GLOBAL Ip_u32
ipeap_reader_disconnect(
SCARDHANDLE hCard,
Ip_u32 dwDisposition);
/*
*===========================================================================
* ipeap_reader_transmit
*===========================================================================
* Description: Transmit a command towards a card in a PC/SC reader.
* Parameters: hCard - Handle to card context.
* pioSendPci - Send protocol control information
* pbSendBuffer - Send command buffer
* cbSendLength - Send command buffer length
* pioRecvPci - Receive protocol control information
* pbRecvBuffer - Receive command buffer
* pcbRecvLength - Receive command buffer length
* Returns: PC/SC error code
*/
IP_GLOBAL Ip_u32
ipeap_reader_transmit(
SCARDHANDLE hCard,
LPCCARD_IO_REQUEST pioSendPci,
const Ip_u8* pbSendBuffer,
Ip_u32 cbSendLength,
LPCARD_IO_REQUEST pioRecvPci,
Ip_u8* pbRecvBuffer,
Ip_u32* pcbRecvLength);
#endif
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/