cardmod - build fixups and mingw stuff
1. Add --enable-cardmod to autoconf to enable feature explicitly. 2. Modify opensc-cardmod.dll to always have bitness suffix eg opensc-cardmod32.dll 3. Remove complex cardmod.h detection, could not find any reason for this. 4. Make cardmod.inf a template and inject opensc version into its version string. 5. More minor autoconf/automake cleanups. 6. Remove internal-winscard.h usage in cardmod.c as cardmod.h already includes winscard.h 7. DllMain is not exportable. Notes: 1. I may caused other build not to work, will happy to work it out. 2. Cannot find reason why cardmod.inf cardmod-westcos.reg should reside in bin directory. git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4003 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
a19a966b29
commit
f636cc1862
57
configure.ac
57
configure.ac
|
@ -165,6 +165,13 @@ AC_ARG_ENABLE(
|
|||
[enable_ctapi="no"]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(
|
||||
[cardmod],
|
||||
[AS_HELP_STRING([--enable-cardmod],[enable cardmod module on Windows @<:@disabled@:>@])],
|
||||
,
|
||||
[enable_cardmod="no"]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(
|
||||
[man],
|
||||
[AS_HELP_STRING([--disable-man],[disable installation of manuals @<:@enabled for none Windows@:>@])],
|
||||
|
@ -305,6 +312,12 @@ AC_CHECK_FUNCS([ \
|
|||
setlocale getopt_long \
|
||||
strlcpy
|
||||
])
|
||||
AC_CHECK_SIZEOF(void *)
|
||||
if test "${ac_cv_sizeof_void_p}" = 8; then
|
||||
LIBRARY_BITNESS="64"
|
||||
else
|
||||
LIBRARY_BITNESS="32"
|
||||
fi
|
||||
|
||||
dnl See if socket() is found from libsocket
|
||||
AC_CHECK_LIB(
|
||||
|
@ -339,9 +352,6 @@ AC_CHECK_HEADER(
|
|||
)
|
||||
CFLAGS="${saved_CFLAGS}"
|
||||
|
||||
dnl for minidriver basecsp
|
||||
test -z "${CARDMOD}" && CARDMOD="no"
|
||||
|
||||
if test "${WIN32}" = "no"; then
|
||||
dnl Special check for pthread support.
|
||||
ACX_PTHREAD(
|
||||
|
@ -353,28 +363,16 @@ if test "${WIN32}" = "no"; then
|
|||
[AC_MSG_ERROR([POSIX thread support required])]
|
||||
)
|
||||
CC="${PTHREAD_CC}"
|
||||
else
|
||||
fi
|
||||
|
||||
if test "${enable_cardmod}" = "yes"; then
|
||||
dnl win32 special test for minidriver
|
||||
AC_CHECK_HEADER([cardmod.h])
|
||||
if test "${ac_cv_header_cardmod_h}" != "yes"; then
|
||||
saved_CFLAGS="${CFLAGS}"
|
||||
CFLAGS="${CFLAGS} -Isrc/libopensc"
|
||||
AC_MSG_CHECKING([secondary check for carmod.h presence])
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <windows.h>
|
||||
#include <internal-winscard.h>
|
||||
#include <cardmod.h>
|
||||
int main(int argc, char **argv) { return 0;}]])],
|
||||
[CARDMOD="yes"],
|
||||
[CARDMOD="no"])
|
||||
AC_MSG_RESULT(["${CARDMOD}"])
|
||||
CFLAGS="${saved_CFLAGS}"
|
||||
else
|
||||
CARDMOD="yes"
|
||||
fi
|
||||
if test "${CARDMOD}" = "yes"; then
|
||||
AC_DEFINE([HAVE_CARDMOD_H], [], [card minidriver header])
|
||||
fi
|
||||
AC_CHECK_HEADER(
|
||||
[cardmod.h],
|
||||
,
|
||||
[AC_MSG_ERROR([cardmod.h is not found and required for cardmod])]
|
||||
)
|
||||
AC_DEFINE([ENABLE_CARDMOD], [1], [Enable cardmod support])
|
||||
fi
|
||||
|
||||
AC_ARG_VAR([ZLIB_CFLAGS], [C compiler flags for zlib])
|
||||
|
@ -642,10 +640,12 @@ if test "${enable_pcsc}" = "yes"; then
|
|||
OPENSC_FEATURES="${OPENSC_FEATURES} pcsc(${DEFAULT_PCSC_PROVIDER})"
|
||||
OPTIONAL_PCSC_CFLAGS="${PCSC_CFLAGS}"
|
||||
fi
|
||||
|
||||
if test "${enable_ctapi}" = "yes"; then
|
||||
OPENSC_FEATURES="${OPENSC_FEATURES} ctapi"
|
||||
fi
|
||||
if test "${enable_cardmod}" = "yes"; then
|
||||
OPENSC_FEATURES="${OPENSC_FEATURES} cardmod"
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED([OPENSC_VERSION_MAJOR], [${OPENSC_VERSION_MAJOR}], [OpenSC version major component])
|
||||
AC_DEFINE_UNQUOTED([OPENSC_VERSION_MINOR], [${OPENSC_VERSION_MINOR}], [OpenSC version minor component])
|
||||
|
@ -680,6 +680,7 @@ AC_SUBST([OPTIONAL_OPENSSL_LIBS])
|
|||
AC_SUBST([OPTIONAL_OPENCT_CFLAGS])
|
||||
AC_SUBST([OPTIONAL_OPENCT_LIBS])
|
||||
AC_SUBST([OPTIONAL_PCSC_CFLAGS])
|
||||
AC_SUBST([LIBRARY_BITNESS])
|
||||
|
||||
AM_CONDITIONAL([SVN_CHECKOUT], [test "${svn_checkout}" = "yes"])
|
||||
AM_CONDITIONAL([ENABLE_MAN], [test "${enable_man}" = "yes"])
|
||||
|
@ -691,7 +692,7 @@ AM_CONDITIONAL([ENABLE_OPENCT], [test "${enable_openct}" = "yes"])
|
|||
AM_CONDITIONAL([ENABLE_DOC], [test "${enable_doc}" = "yes"])
|
||||
AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
|
||||
AM_CONDITIONAL([CYGWIN], [test "${CYGWIN}" = "yes"])
|
||||
AM_CONDITIONAL([CARDMOD], [test "${CARDMOD}" = "yes"])
|
||||
AM_CONDITIONAL([ENABLE_CARDMOD], [test "${enable_cardmod}" = "yes"])
|
||||
|
||||
if test "${enable_pedantic}" = "yes"; then
|
||||
enable_strict="yes";
|
||||
|
@ -728,6 +729,7 @@ AC_CONFIG_FILES([
|
|||
src/tests/regression/Makefile
|
||||
src/tools/Makefile
|
||||
src/cardmod/Makefile
|
||||
src/cardmod/cardmod.inf
|
||||
win32/Makefile
|
||||
win32/versioninfo.rc
|
||||
])
|
||||
|
@ -752,6 +754,7 @@ OpenSSL support: ${enable_openssl}
|
|||
PC/SC support: ${enable_pcsc}
|
||||
OpenCT support: ${enable_openct}
|
||||
CT-API support: ${enable_ctapi}
|
||||
cardmod support: ${enable_cardmod}
|
||||
|
||||
PC/SC default provider: ${DEFAULT_PCSC_PROVIDER}
|
||||
|
||||
|
@ -776,7 +779,5 @@ OPENCT_CFLAGS: ${OPENCT_CFLAGS}
|
|||
OPENCT_LIBS: ${OPENCT_LIBS}
|
||||
PCSC_CFLAGS: ${PCSC_CFLAGS}
|
||||
|
||||
CARDMOD: ${CARDMOD}
|
||||
|
||||
EOF
|
||||
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
include $(top_srcdir)/win32/ltrc.inc
|
||||
|
||||
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
|
||||
|
||||
EXTRA_DIST = Makefile.mak
|
||||
|
||||
lib_LTLIBRARIES =
|
||||
if ENABLE_CARDMOD
|
||||
lib_LTLIBRARIES = opensc-cardmod@LIBRARY_BITNESS@.la
|
||||
# Do we need this on bin? Why can't we
|
||||
# put it in dedicated directory
|
||||
dist_sbin_SCRIPTS = cardmod.inf cardmod-westcos.reg
|
||||
else
|
||||
dist_noinst_DATA = cardmod.inf cardmod-westcos.reg
|
||||
endif
|
||||
|
||||
INCLUDES = -I$(top_builddir)/src/include \
|
||||
-I$(top_srcdir)/src/common \
|
||||
-I$(top_srcdir)/src/libopensc
|
||||
|
||||
opensc_cardmod_la_SOURCES = cardmod.c cardmod.exports
|
||||
opensc_cardmod_la_LIBADD = $(LTLIB_LIBS) \
|
||||
$(top_builddir)/src/libopensc/libopensc.la
|
||||
opensc_cardmod_la_LDFLAGS = $(AM_LDFLAGS) \
|
||||
opensc_cardmod@LIBRARY_BITNESS@_la_SOURCES = cardmod.c cardmod.exports \
|
||||
$(top_builddir)/win32/versioninfo.rc
|
||||
opensc_cardmod@LIBRARY_BITNESS@_la_LIBADD = $(LTLIB_LIBS) \
|
||||
$(top_builddir)/src/libopensc/libopensc.la \
|
||||
-lcrypt32
|
||||
opensc_cardmod@LIBRARY_BITNESS@_la_LDFLAGS = $(AM_LDFLAGS) \
|
||||
-export-symbols "$(srcdir)/cardmod.exports" \
|
||||
-module -avoid-version -no-undefined
|
||||
|
||||
if CARDMOD
|
||||
sbin_SCRIPTS = cardmod.inf cardmod-westcos.reg
|
||||
lib_LTLIBRARIES += opensc-cardmod.la
|
||||
opensc_cardmod_la_SOURCES += $(top_builddir)/win32/versioninfo.rc
|
||||
opensc_cardmod_la_LIBADD += -lcrypt32
|
||||
if ENABLE_CARDMOD
|
||||
install-exec-hook:
|
||||
mv "$(DESTDIR)$(libdir)/opensc-cardmod.dll" "$(DESTDIR)$(bindir)/"
|
||||
else
|
||||
dist_noinst_SCRIPTS = cardmod.inf cardmod-westcos.reg
|
||||
mv "$(DESTDIR)$(libdir)/opensc-cardmod@LIBRARY_BITNESS@.dll" "$(DESTDIR)$(bindir)/"
|
||||
endif
|
||||
|
||||
|
|
|
@ -32,8 +32,7 @@
|
|||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "internal-winscard.h"
|
||||
#include "cardmod.h"
|
||||
#include <cardmod.h>
|
||||
|
||||
#include <opensc/opensc.h>
|
||||
#include <opensc/pkcs15.h>
|
||||
|
@ -44,20 +43,6 @@
|
|||
#define NULLSTR(a) (a == NULL ? "<NULL>" : a)
|
||||
#define NULLWSTR(a) (a == NULL ? L"<NULL>" : a)
|
||||
|
||||
#ifndef SCARD_E_INVALID_PARAMETER
|
||||
#define SCARD_E_INVALID_PARAMETER 0x80100004
|
||||
#define SCARD_E_NO_MEMORY 0x80100006
|
||||
#define SCARD_E_UNKNOWN_CARD 0x8010000D
|
||||
#define SCARD_F_UNKNOWN_ERROR 0x80100014
|
||||
#define SCARD_E_UNSUPPORTED_FEATURE 0x80100022
|
||||
#define SCARD_E_FILE_NOT_FOUND 0x80100024
|
||||
#define SCARD_W_WRONG_CHV 0x8010006B
|
||||
#endif
|
||||
|
||||
typedef struct _BCRYPT_PKCS1_PADDING_INFO {
|
||||
LPCWSTR pszAlgId;
|
||||
}BCRYPT_PKCS1_PADDING_INFO;
|
||||
|
||||
typedef struct _VENDOR_SPECIFIC
|
||||
{
|
||||
BYTE bPinsFreshness;
|
||||
|
|
|
@ -1,3 +1 @@
|
|||
DllMain
|
||||
CardAcquireContext
|
||||
|
||||
CardAcquireContext
|
||||
|
|
|
@ -5,7 +5,7 @@ Class=SmartCard
|
|||
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
|
||||
Provider=%ProviderName%
|
||||
CatalogFile=delta.cat
|
||||
DriverVer=05/02/2010,0.0.1.3
|
||||
DriverVer=05/02/2010,@OPENSC_VERSION_MAJOR@,@OPENSC_VERSION_MINOR@,@OPENSC_VERSION_FIX@,0
|
||||
|
||||
[Manufacturer]
|
||||
%ProviderName%=Minidriver,NTamd64,NTamd64.6.1,NTx86,NTx86.6.1
|
||||
|
@ -145,5 +145,5 @@ MediaDescription="Opensc Smart Card Minidriver Installation Disk"
|
|||
CardDeviceName="Opensc Minidriver for Smart Card"
|
||||
SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Cev Westcos"
|
||||
SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Cev Westcos"
|
||||
SmartCardCardModule="opensc-cardmod.dll"
|
||||
SmartCardCardModule="opensc-cardmod32.dll"
|
||||
SmartCardCardModule64="opensc-cardmod64.dll"
|
|
@ -95,7 +95,7 @@ static const struct _sc_driver_entry internal_card_drivers[] = {
|
|||
static const struct _sc_driver_entry internal_reader_drivers[] = {
|
||||
#ifdef ENABLE_PCSC
|
||||
{ "pcsc", (void *(*)(void)) sc_get_pcsc_driver },
|
||||
#ifdef HAVE_CARDMOD_H
|
||||
#ifdef ENABLE_CARDMOD
|
||||
{ "cardmod", (void *(*)(void)) sc_get_cardmod_driver },
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -1457,12 +1457,7 @@ struct sc_reader_driver * sc_get_pcsc_driver(void)
|
|||
return &pcsc_drv;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#ifdef HAVE_CARDMOD_H
|
||||
#ifdef ENABLE_CARDMOD
|
||||
|
||||
#define SCARD_CLASS_SYSTEM 0x7fff
|
||||
#define SCARD_ATTR_VALUE(Class, Tag) ((((ULONG)(Class)) << 16) | ((ULONG)(Tag)))
|
||||
|
|
Loading…
Reference in New Issue