Re-add pcsc-lite compile-time dependency
Win64 changed the SCARDCONTEXT from LONG to ULONG_PTR, pcsc-lite did not follow this on 64bit platforms. This breaks the pcsc module. To solve this we use installed winscard.h in order to get proper declerations. As mingw32 does not have winscard.h we keep current types. mingw64 and pcsc-lite system have winscard.h. git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3590 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
4ad85b3d91
commit
d7941bf850
20
configure.ac
20
configure.ac
|
@ -490,7 +490,17 @@ if test "${enable_openct}" = "yes"; then
|
|||
fi
|
||||
|
||||
if test "${enable_pcsc}" = "yes"; then
|
||||
AC_DEFINE([ENABLE_PCSC], [1], [Define if PC/SC is to be enabled])
|
||||
AC_ARG_VAR([PCSC_CFLAGS], [C compiler flags for pcsc])
|
||||
if test "${WIN32}" != "yes"; then
|
||||
test -z "${PCSC_CFLAGS}" && PCSC_CFLAGS="-I/usr/include/PCSC"
|
||||
fi
|
||||
|
||||
saved_CFLAGS="${CFLAGS}"
|
||||
CFLAGS="${CFLAGS} ${PCSC_CFLAGS}"
|
||||
# We must cope with mingw32 that does not have winscard.h mingw64 has it.
|
||||
AC_CHECK_HEADERS([winscard.h],,[test "${WIN32}" != "yes" && AC_MSG_ERROR([winscard.h is required for pcsc])])
|
||||
CFLAGS="${saved_CFLAGS}"
|
||||
|
||||
if test "${with_pcsc_provider}" = "detect"; then
|
||||
case "${host}" in
|
||||
*-*-darwin*)
|
||||
|
@ -507,6 +517,7 @@ if test "${enable_pcsc}" = "yes"; then
|
|||
DEFAULT_PCSC_PROVIDER="${with_pcsc_provider}"
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([DEFAULT_PCSC_PROVIDER], ["${DEFAULT_PCSC_PROVIDER}"], [Default PC/SC provider])
|
||||
AC_DEFINE([ENABLE_PCSC], [1], [Define if PC/SC is to be enabled])
|
||||
fi
|
||||
|
||||
dnl AM_PATH_LIBASSUAN([MINIMUM-VERSION,
|
||||
|
@ -545,7 +556,10 @@ if test "${enable_openct}" = "yes"; then
|
|||
OPTIONAL_OPENCT_CFLAGS="${OPENCT_CFLAGS}"
|
||||
OPTIONAL_OPENCT_LIBS="${OPENCT_LIBS}"
|
||||
fi
|
||||
test "${enable_pcsc}" = "yes" && OPENSC_FEATURES="${OPENSC_FEATURES} pcsc(${DEFAULT_PCSC_PROVIDER})"
|
||||
if test "${enable_pcsc}" = "yes"; then
|
||||
OPENSC_FEATURES="${OPENSC_FEATURES} pcsc(${DEFAULT_PCSC_PROVIDER})"
|
||||
OPTIONAL_PCSC_CFLAGS="${PCSC_CFLAGS}"
|
||||
fi
|
||||
test "${enable_nsplugin}" = "yes" && OPENSC_FEATURES="${OPENSC_FEATURES} nsplugin"
|
||||
|
||||
AC_DEFINE_UNQUOTED([OPENSC_ETC_PATH], ["${full_sysconfdir}"], [etc path for libopensc])
|
||||
|
@ -579,6 +593,7 @@ AC_SUBST([OPTIONAL_OPENSSL_CFLAGS])
|
|||
AC_SUBST([OPTIONAL_OPENSSL_LIBS])
|
||||
AC_SUBST([OPTIONAL_OPENCT_CFLAGS])
|
||||
AC_SUBST([OPTIONAL_OPENCT_LIBS])
|
||||
AC_SUBST([OPTIONAL_PCSC_CFLAGS])
|
||||
|
||||
AM_CONDITIONAL([SVN_CHECKOUT], [test "${svn_checkout}" = "yes"])
|
||||
AM_CONDITIONAL([ENABLE_MAN], [test "${enable_man}" = "yes"])
|
||||
|
@ -671,6 +686,7 @@ OPENSSL_CFLAGS: ${OPENSSL_CFLAGS}
|
|||
OPENSSL_LIBS: ${OPENSSL_LIBS}
|
||||
OPENCT_CFLAGS: ${OPENCT_CFLAGS}
|
||||
OPENCT_LIBS: ${OPENCT_LIBS}
|
||||
PCSC_CFLAGS: ${PCSC_CFLAGS}
|
||||
LIBASSUAN_CFLAGS: ${LIBASSUAN_CFLAGS}
|
||||
LIBASSUAN_LIBS: ${LIBASSUAN_LIBS}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ noinst_HEADERS = cards.h ctbcs.h internal.h esteid.h muscle.h muscle-filesystem.
|
|||
pkgconfig_DATA = libopensc.pc libpkcs15init.pc libscconf.pc
|
||||
|
||||
AM_CFLAGS = $(OPTIONAL_OPENSSL_CFLAGS) $(OPTIONAL_OPENCT_CFLAGS) \
|
||||
$(OPTIONAL_ZLIB_CFLAGS) $(LTLIB_CFLAGS)
|
||||
$(OPTIONAL_PCSC_CFLAGS) $(OPTIONAL_ZLIB_CFLAGS) $(LTLIB_CFLAGS)
|
||||
INCLUDES = -I$(top_builddir)/src/include -I$(top_srcdir)/src/common
|
||||
|
||||
libopensc_la_SOURCES = \
|
||||
|
|
|
@ -3,19 +3,6 @@
|
|||
|
||||
/* Mostly copied from pcsc-lite, this is the minimum required */
|
||||
|
||||
#ifndef _WIN32
|
||||
#ifndef BYTE
|
||||
typedef unsigned char BYTE;
|
||||
#endif
|
||||
typedef const void *LPCVOID;
|
||||
typedef void *LPVOID;
|
||||
typedef unsigned long DWORD;
|
||||
typedef long LONG;
|
||||
typedef const char *LPCSTR;
|
||||
typedef BYTE *LPBYTE;
|
||||
typedef DWORD *LPDWORD;
|
||||
typedef char *LPSTR;
|
||||
#endif
|
||||
#if defined(HAVE_INTTYPES_H)
|
||||
#include <inttypes.h>
|
||||
#elif defined(HAVE_STDINT_H)
|
||||
|
@ -28,7 +15,11 @@ typedef unsigned __int8 uint8_t;
|
|||
#warning no uint32_t type available, please contact opensc-devel@opensc-project.org
|
||||
#endif
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#ifdef HAVE_WINSCARD_H
|
||||
#include <winscard.h>
|
||||
#else
|
||||
/* mingw32 does not have winscard.h */
|
||||
|
||||
#define MAX_ATR_SIZE 33 /**< Maximum ATR size */
|
||||
|
||||
#define SCARD_PROTOCOL_T0 0x0001 /**< T=0 active protocol. */
|
||||
|
@ -64,7 +55,6 @@ typedef unsigned __int8 uint8_t;
|
|||
#define SCARD_W_REMOVED_CARD 0x80100069 /**< The smart card has been removed, so further communication is not possible. */
|
||||
#endif
|
||||
|
||||
#define SCARD_CTL_CODE(code) (0x42000000 + (code))
|
||||
|
||||
typedef const BYTE *LPCBYTE;
|
||||
typedef long SCARDCONTEXT; /**< \p hContext returned by SCardEstablishContext() */
|
||||
|
@ -92,7 +82,11 @@ typedef struct _SCARD_IO_REQUEST
|
|||
}
|
||||
SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
|
||||
|
||||
#endif /* MSC_VER */
|
||||
typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
|
||||
typedef SCARD_READERSTATE_A SCARD_READERSTATE, *PSCARD_READERSTATE_A,
|
||||
*LPSCARD_READERSTATE_A;
|
||||
|
||||
#endif /* HAVE_SCARD_H */
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define PCSC_API WINAPI
|
||||
|
@ -102,10 +96,6 @@ SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
|
|||
#define PCSC_API
|
||||
#endif
|
||||
|
||||
typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
|
||||
typedef SCARD_READERSTATE_A SCARD_READERSTATE, *PSCARD_READERSTATE_A,
|
||||
*LPSCARD_READERSTATE_A;
|
||||
|
||||
typedef LONG (PCSC_API *SCardEstablishContext_t)(DWORD dwScope, LPCVOID pvReserved1,
|
||||
LPCVOID pvReserved2, LPSCARDCONTEXT phContext);
|
||||
typedef LONG (PCSC_API *SCardReleaseContext_t)(SCARDCONTEXT hContext);
|
||||
|
@ -133,6 +123,10 @@ typedef LONG (PCSC_API *SCardListReaders_t)(SCARDCONTEXT hContext, LPCSTR mszGro
|
|||
|
||||
/* Copied from pcsc-lite reader.h */
|
||||
|
||||
#ifndef SCARD_CTL_CODE
|
||||
#define SCARD_CTL_CODE(code) (0x42000000 + (code))
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TeleTrust Class 2 reader tags
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue