This is the first of two messages, dealing with building OpenSC on Windows
using the win32/Makefile.mak files as has been done in the past. As I had
stated before, I would like to see OpenSC built on Windows using the Windows
compiler header files and dlls. I understand some would like to convert
to using cross compilation for a number of reasons.


So I am submitting changes so OpenSC can continue to be built on Windows.
I an using Visual Studio 8 on XP. Attached is an svn diff.

  win32/makedep.pl  - changed to not export the _real@ entry created for
                      the one float number in all the source code.

  win32/version.rc  - change version number.

  win32/Make.rules.mak - change HAVE_OPENSSL and HAVE_ZLIB_H to
                         ENABLE_OPENSSL and ENABLE_ZLIB

  src/tools/opensc-tool.c - #ifdef the PACKAGE_NAME new code,
                        as it is still under development and  so I
                        build without it for now.

  src/pkcs11/pkcs11-global.c  - This tries to allocate a variable
                     size array an an automatic variable. The compiler
                     complained, so I changed it to use calloc.

  */*/Makefile.mak - Most of these have additional headers and obj
                   modules defined. I also put the names in the same
                   order as the header and source files as found
                   in Makefile.am. It is very straight forward
                   to make the conversion.

 src/include/winconfig.h - The main change is to include WinSock2.h
                   before windows.h. Google for WinSock2.h WInsock.h
                   to see why this is required. A matching change was
                   made to reader-pcsc.c.  ENABLE_PCSC, USE_WINDOWS_PCSC
                   and DEFAULT_PCSC_PROVIDER were also defined.

 src/pkcs15init/pkcs15-lib.c - don't include rutoken for now on windows.

 src/libopensc/reader-pcsc.c - read config.h early, so WinSock2.h is
                   included before windows.h

 src/libopensc/internal-winscard.h - (1) add #ifdefs for USE_WINDOWS_PCSC
                  This is set by the wincof.h It says we are uing the
                  Microsoft header files, that include many of
                  defines for PSCS that neede to be added if not using
                  the Windows headers.
                  (2) Change the typdefs for the SC_*_t routines.
                  The WINAPI had to be moved. For example from:
                    typedef PCSC_API LONG (*SCardEstablishContext_t)...
                  to:
                    typedef LONG (PCSC_API *SCardEstablishContext_t)...
                  I am not sure if this will cause problems with the
                  ming builds or not.

 src/libopensc/ctx.c - don't include rutoken for now on windows.

 src/libopensc/pkcs15-syn.c - don't include rutoken for now on windows.


Second message to follow in rutoken issues.



--

 Douglas E. Engert  <[EMAIL PROTECTED]>
 Argonne National Laboratory
 9700 South Cass Avenue
 Argonne, Illinois  60439
 (630) 252-5444
Index: win32/makedef.pl
===================================================================
--- win32/makedef.pl    (revision 3456)
+++ win32/makedef.pl    (working copy)
@@ -21,7 +21,7 @@
        split;
        $_ = $_[0];
 
-       if(!/^\?\?_G/ && !/^\?\?_E/ && !/DllMain/)
+       if(!/^\?\?_G/ && !/^\?\?_E/ && !/_real@/ && !/DllMain/)
         {
             # Stupid windows linker needs to have
             # preceding underscore for ANSI C programs
Index: win32/version.rc
===================================================================
--- win32/version.rc    (revision 3456)
+++ win32/version.rc    (working copy)
@@ -19,8 +19,8 @@
 #endif
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,11,4,0
- PRODUCTVERSION 0,11,4,0
+ FILEVERSION 0,11,4,1
+ PRODUCTVERSION 0,11,4,1
  FILEFLAGSMASK 0x3fL
  FILEFLAGS 0x0L
  FILEOS 0x40004L
@@ -32,8 +32,8 @@
         BLOCK "080904b0"
         BEGIN
             VALUE "Description", "OpenSC PKCS#11 library\0"
-            VALUE "FileVersion", "0, 11, 4, 0\0"
-            VALUE "ProductVersion", "0, 11, 4, 0\0"
+            VALUE "FileVersion", "0, 11, 4, 1\0"
+            VALUE "ProductVersion", "0, 11, 4, 1\0"
             VALUE "Licence", "LGPL\0"
             VALUE "Info", "http://www.opensc-project.org/\0";
         END
Index: win32/Make.rules.mak
===================================================================
--- win32/Make.rules.mak        (revision 3456)
+++ win32/Make.rules.mak        (working copy)
@@ -14,8 +14,8 @@
 # - uncomment the line starting with OPENSSL_DEF
 # - set the OPENSSL_INCL_DIR below to your openssl include directory, preceded 
by "/I"
 # - set the OPENSSL_LIB below to your openssl lib file
-#OPENSSL_DEF = /DHAVE_OPENSSL
-!IF "$(OPENSSL_DEF)" == "/DHAVE_OPENSSL"
+#OPENSSL_DEF = /DENABLE_OPENSSL
+!IF "$(OPENSSL_DEF)" == "/DENABLE_OPENSSL"
 OPENSSL_INCL_DIR = /IC:\openssl\include
 OPENSSL_LIB = C:\openssl\out32dll\libeay32.lib
 PROGRAMS_OPENSSL = pkcs15-init.exe cryptoflex-tool.exe netkey-tool.exe
@@ -26,8 +26,8 @@
 # - uncomment the line starting with ZLIB_DEF 
 # - set the ZLIB_INCL_DIR below to the zlib include lib proceeded by "/I"
 # - set the ZLIB_LIB  below to your zlib lib file
-#ZLIB_DEF = /DHAVE_ZLIB_H
-!IF "$(ZLIB_DEF)" == "/DHAVE_ZLIB_H"
+#ZLIB_DEF = /DENABLE_ZLIB
+!IF "$(ZLIB_DEF)" == "/DENABLE_ZLIB"
 ZLIB_INCL_DIR = /IC:\ZLIB\INCLUDE
 ZLIB_LIB = C:\ZLIB\LIB\zlib.lib 
 !ENDIF
Index: src/tools/opensc-tool.c
===================================================================
--- src/tools/opensc-tool.c     (revision 3456)
+++ src/tools/opensc-tool.c     (working copy)
@@ -84,11 +84,13 @@
 
 static int opensc_info(void)
 {
+#ifndef _WIN32
        printf (
                "%s %s ",
                PACKAGE_NAME,
                PACKAGE_VERSION
        );
+#endif
 
 #if defined(__VERSION__)
        printf (
@@ -105,7 +107,9 @@
 #else
        printf ("[Unknown compiler, please report]");
 #endif
+#ifndef _WIN32
        printf ("Enabled features:%s\n", OPENSC_FEATURES);
+#endif
        return 0;
 }
 
Index: src/pkcs11/pkcs11-global.c
===================================================================
--- src/pkcs11/pkcs11-global.c  (revision 3456)
+++ src/pkcs11/pkcs11-global.c  (working copy)
@@ -320,7 +320,7 @@
                    CK_SLOT_ID_PTR pSlotList,     /* receives the array of slot 
IDs */
                    CK_ULONG_PTR   pulCount)      /* receives the number of 
slots */
 {
-       CK_SLOT_ID found[sc_pkcs11_conf.pkcs11_max_virtual_slots];
+       CK_SLOT_ID_PTR found = NULL;
        int i;
        CK_ULONG numMatches;
        sc_pkcs11_slot_t *slot;
@@ -330,6 +330,14 @@
        if (rv != CKR_OK)
                return rv;
 
+       if (!(found = (CK_SLOT_ID_PTR) 
+                       calloc(sc_pkcs11_conf.pkcs11_max_virtual_slots, 
+                       sizeof(CK_SLOT_ID)))) {
+               rv = SC_ERROR_OUT_OF_MEMORY;
+               goto out;
+       }
+
+
        if (pulCount == NULL_PTR) {
                rv = CKR_ARGUMENTS_BAD;
                goto out;
@@ -367,6 +375,9 @@
        sc_debug(context, "returned %d slots\n", numMatches);
 
 out:   sc_pkcs11_unlock();
+       if (found) {
+               free(found);
+       }
        return rv;
 }
 
Index: src/pkcs11/Makefile.mak
===================================================================
--- src/pkcs11/Makefile.mak     (revision 3456)
+++ src/pkcs11/Makefile.mak     (working copy)
@@ -1,6 +1,6 @@
 TOPDIR = ..\..
 
-HEADERS                        = pkcs11.h
+HEADERS                        = pkcs11-opensc.h pkcs11.h sc-pkcs11.h
 
 HEADERSDIR             = $(TOPDIR)\src\include\opensc
 
@@ -10,8 +10,9 @@
 TARGET3                        = pkcs11-spy.dll
 
 OBJECTS                        = pkcs11-global.obj pkcs11-session.obj 
pkcs11-object.obj misc.obj slot.obj \
-                         secretkey.obj framework-pkcs15.obj 
framework-pkcs15init.obj mechanism.obj \
-                         openssl.obj debug.obj $(TOPDIR)\win32\version.res
+                         mechanism.obj openssl.obj secretkey.obj 
framework-pkcs15.obj \
+                         framework-pkcs15init.obj debug.obj \
+                         $(TOPDIR)\win32\version.res
 OBJECTS2               = libpkcs11.obj
 OBJECTS3               = pkcs11-spy.obj pkcs11-display.obj libpkcs11.obj
 
Index: src/include/winconfig.h
===================================================================
--- src/include/winconfig.h     (revision 3456)
+++ src/include/winconfig.h     (working copy)
@@ -2,6 +2,9 @@
 #define _OPENSC_WINCONFIG_H
 
 #include <stdio.h>
+#ifdef IF_WIN_USE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 #include <windows.h>
 #include <sys/timeb.h>
 
@@ -65,13 +68,14 @@
 #endif
 
 #define HAVE_IO_H
-#define HAVE_GETPASS
-#define HAVE_PCSC
+#define ENABLE_PCSC
+#define USE_WINDOWS_PCSC
+#define DEFAULT_PCSC_PROVIDER "winscard.dll"
 
 #define PATH_MAX _MAX_PATH
 
 #ifndef VERSION
-#define VERSION "0.11.4"
+#define VERSION "0.11.4.1"
 #endif
 
 /* src/common/getpass.c */
Index: src/common/Makefile.mak
===================================================================
--- src/common/Makefile.mak     (revision 3456)
+++ src/common/Makefile.mak     (working copy)
@@ -1,9 +1,9 @@
 TOPDIR = ..\..
 
-HEADERS = my_getopt.h strlcpy.h
+HEADERS = compat_getpass.h compat_getopt.h compat_strlcpy.h
 HEADERSDIR = $(TOPDIR)\src\include
 TARGET = common.lib
-OBJECTS = getpass.obj my_getopt.obj strlcpy.obj
+OBJECTS = compat_getpass.obj compat_getopt.obj compat_strlcpy.obj
 
 all: install-headers $(TARGET)
 
Index: src/pkcs15init/pkcs15-lib.c
===================================================================
--- src/pkcs15init/pkcs15-lib.c (revision 3456)
+++ src/pkcs15init/pkcs15-lib.c (working copy)
@@ -149,7 +149,9 @@
        const char *name;
        void *func;
 } profile_operations[] = {
+#ifndef _WIN32
        { "rutoken", (void *) sc_pkcs15init_get_rutoken_ops },
+#endif
        { "gpk", (void *) sc_pkcs15init_get_gpk_ops },
        { "miocos", (void *) sc_pkcs15init_get_miocos_ops },
        { "flex", (void *) sc_pkcs15init_get_cryptoflex_ops },
Index: src/pkcs15init/Makefile.mak
===================================================================
--- src/pkcs15init/Makefile.mak (revision 3456)
+++ src/pkcs15init/Makefile.mak (working copy)
@@ -2,11 +2,11 @@
 
 TARGET = pkcs15init.dll
 
-HEADERS = pkcs15-init.h keycache.h
+HEADERS = pkcs15-init.h profile.h keycache.h
 HEADERSDIR = $(TOPDIR)\src\include\opensc
 
-OBJECTS = profile.obj pkcs15-lib.obj keycache.obj \
-          pkcs15-miocos.obj pkcs15-gpk.obj pkcs15-cflex.obj \
+OBJECTS = pkcs15-lib.obj profile.obj keycache.obj \
+          pkcs15-gpk.obj pkcs15-miocos.obj pkcs15-cflex.obj \
           pkcs15-cardos.obj pkcs15-jcop.obj pkcs15-starcos.obj \
           pkcs15-oberthur.obj pkcs15-setcos.obj pkcs15-incrypto34.obj \
           pkcs15-muscle.obj pkcs15-asepcos.obj
Index: src/scconf/Makefile.mak
===================================================================
--- src/scconf/Makefile.mak     (revision 3456)
+++ src/scconf/Makefile.mak     (working copy)
@@ -3,7 +3,7 @@
 TARGET = scconf.lib
 HEADERS = scconf.h
 HEADERSDIR = $(TOPDIR)\src\include\opensc
-OBJECTS = parse.obj scconf.obj write.obj sclex.obj
+OBJECTS = scconf.obj parse.obj write.obj sclex.obj
 
 .SUFFIXES : .l
 
Index: src/libopensc/reader-pcsc.c
===================================================================
--- src/libopensc/reader-pcsc.c (revision 3456)
+++ src/libopensc/reader-pcsc.c (working copy)
@@ -18,6 +18,11 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#ifdef HAVE_CONFIG_H
+#define IF_WIN_USE_WINSOCK2_H
+#include <config.h>
+#endif
+
 #include "internal.h"
 #ifdef ENABLE_PCSC
 #include "ctbcs.h"
@@ -27,9 +32,7 @@
 #include <time.h>
 #include <ltdl.h>
 
-#ifdef _WIN32
-#include <winsock2.h>
-#else
+#ifndef _WIN32
 #include <arpa/inet.h>
 #endif
 
Index: src/libopensc/internal-winscard.h
===================================================================
--- src/libopensc/internal-winscard.h   (revision 3456)
+++ src/libopensc/internal-winscard.h   (working copy)
@@ -28,6 +28,8 @@
 #warning no uint32_t type available, please contact [EMAIL PROTECTED]
 #endif
 
+#ifndef USE_WINDOWS_PCSC
+
 #define MAX_ATR_SIZE                   33      /**< Maximum ATR size */
 
 #define SCARD_PROTOCOL_T0              0x0001  /**< T=0 active protocol. */
@@ -61,6 +63,8 @@
 
 #define SCARD_CTL_CODE(code) (0x42000000 + (code))
 
+#endif 
+
 #if defined(_WIN32)
 #define PCSC_API WINAPI
 #elif defined(USE_CYGWIN)
@@ -68,6 +72,8 @@
 #else
 #define PCSC_API
 #endif
+                       
+#ifndef USE_WINDOWS_PCSC
 
 typedef const BYTE *LPCBYTE;
 typedef long SCARDCONTEXT; /**< \p hContext returned by 
SCardEstablishContext() */
@@ -95,33 +101,35 @@
 }
 SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
 
+#endif /* USE_WINDOWS_PCSC */
+
 typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
 typedef SCARD_READERSTATE_A SCARD_READERSTATE, *PSCARD_READERSTATE_A,
        *LPSCARD_READERSTATE_A;
 
-typedef PCSC_API LONG (*SCardEstablishContext_t)(DWORD dwScope, LPCVOID 
pvReserved1,
+typedef LONG (PCSC_API *SCardEstablishContext_t)(DWORD dwScope, LPCVOID 
pvReserved1,
        LPCVOID pvReserved2, LPSCARDCONTEXT phContext);
-typedef PCSC_API LONG (*SCardReleaseContext_t)(SCARDCONTEXT hContext);
-typedef PCSC_API LONG (*SCardConnect_t)(SCARDCONTEXT hContext, LPCSTR 
szReader, DWORD dwShareMode,
+typedef LONG (PCSC_API  *SCardReleaseContext_t)(SCARDCONTEXT hContext);
+typedef LONG (PCSC_API *SCardConnect_t)(SCARDCONTEXT hContext, LPCSTR 
szReader, DWORD dwShareMode,
        DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD 
pdwActiveProtocol);
-typedef PCSC_API LONG (*SCardReconnect_t)(SCARDHANDLE hCard, DWORD 
dwShareMode, DWORD dwPreferredProtocols,
+typedef LONG (PCSC_API *SCardReconnect_t)(SCARDHANDLE hCard, DWORD 
dwShareMode, DWORD dwPreferredProtocols,
        DWORD dwInitialization, LPDWORD pdwActiveProtocol);
-typedef PCSC_API LONG (*SCardDisconnect_t)(SCARDHANDLE hCard, DWORD 
dwDisposition);
-typedef PCSC_API LONG (*SCardBeginTransaction_t)(SCARDHANDLE hCard);
-typedef PCSC_API LONG (*SCardEndTransaction_t)(SCARDHANDLE hCard, DWORD 
dwDisposition);
-typedef PCSC_API LONG (*SCardStatus_t)(SCARDHANDLE hCard, LPSTR 
mszReaderNames, LPDWORD pcchReaderLen,
+typedef LONG (PCSC_API *SCardDisconnect_t)(SCARDHANDLE hCard, DWORD 
dwDisposition);
+typedef LONG (PCSC_API *SCardBeginTransaction_t)(SCARDHANDLE hCard);
+typedef LONG (PCSC_API *SCardEndTransaction_t)(SCARDHANDLE hCard, DWORD 
dwDisposition);
+typedef LONG (PCSC_API *SCardStatus_t)(SCARDHANDLE hCard, LPSTR 
mszReaderNames, LPDWORD pcchReaderLen,
        LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen);
-typedef PCSC_API LONG (*SCardGetStatusChange_t)(SCARDCONTEXT hContext, DWORD 
dwTimeout,
+typedef LONG (PCSC_API *SCardGetStatusChange_t)(SCARDCONTEXT hContext, DWORD 
dwTimeout,
        LPSCARD_READERSTATE_A rgReaderStates, DWORD cReaders);
-typedef PCSC_API LONG (*SCardControlOLD_t)(SCARDHANDLE hCard, LPCVOID 
pbSendBuffer, DWORD cbSendLength,
+typedef LONG (PCSC_API *SCardControlOLD_t)(SCARDHANDLE hCard, LPCVOID 
pbSendBuffer, DWORD cbSendLength,
        LPVOID pbRecvBuffer, LPDWORD lpBytesReturned);
-typedef PCSC_API LONG (*SCardControl_t)(SCARDHANDLE hCard, DWORD 
dwControlCode, LPCVOID pbSendBuffer,
+typedef LONG (PCSC_API *SCardControl_t)(SCARDHANDLE hCard, DWORD 
dwControlCode, LPCVOID pbSendBuffer,
        DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength,
        LPDWORD lpBytesReturned);
-typedef PCSC_API LONG (*SCardTransmit_t)(SCARDHANDLE hCard, 
LPCSCARD_IO_REQUEST pioSendPci,
+typedef LONG (PCSC_API *SCardTransmit_t)(SCARDHANDLE hCard, 
LPCSCARD_IO_REQUEST pioSendPci,
        LPCBYTE pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci,
        LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength);
-typedef PCSC_API LONG (*SCardListReaders_t)(SCARDCONTEXT hContext, LPCSTR 
mszGroups,
+typedef LONG (PCSC_API *SCardListReaders_t)(SCARDCONTEXT hContext, LPCSTR 
mszGroups,
        LPSTR mszReaders, LPDWORD pcchReaders);
 
 /* Copied from pcsc-lite reader.h */
Index: src/libopensc/ctx.c
===================================================================
--- src/libopensc/ctx.c (revision 3456)
+++ src/libopensc/ctx.c (working copy)
@@ -51,7 +51,9 @@
 
 static const struct _sc_driver_entry internal_card_drivers[] = {
        /* legacy, the old name was "etoken", so we keep that for a while */
+#ifndef _WIN32
        { "rutoken",    (void *(*)(void)) sc_get_rutoken_driver },
+#endif
        { "cardos",     (void *(*)(void)) sc_get_cardos_driver },
        { "etoken",     (void *(*)(void)) sc_get_cardos_driver },
        { "flex",       (void *(*)(void)) sc_get_cryptoflex_driver },
Index: src/libopensc/Makefile.mak
===================================================================
--- src/libopensc/Makefile.mak  (revision 3456)
+++ src/libopensc/Makefile.mak  (working copy)
@@ -5,37 +5,35 @@
 
 HEADERS                        = \
        opensc.h pkcs15.h emv.h \
-       cardctl.h cards.h asn1.h \
-       log.h ui.h errors.h types.h
+       cardctl.h asn1.h log.h ui.h \
+       errors.h types.h compression.h \
+       cards.h
 
 HEADERSDIR             = $(TOPDIR)\src\include\opensc
 
 OBJECTS                        = \
        sc.obj ctx.obj ui.obj log.obj errors.obj \
-       asn1.obj base64.obj sec.obj card.obj iso7816.obj dir.obj padding.obj \
-       apdu.obj \
+       asn1.obj base64.obj sec.obj card.obj iso7816.obj dir.obj padding.obj 
apdu.obj \
        \
        pkcs15.obj pkcs15-cert.obj pkcs15-data.obj pkcs15-pin.obj \
        pkcs15-prkey.obj pkcs15-pubkey.obj pkcs15-sec.obj \
        pkcs15-wrap.obj pkcs15-algo.obj pkcs15-cache.obj pkcs15-syn.obj \
        \
-       emv.obj \
+       pkcs15-gemsafeV1.obj muscle.obj muscle-filesystem.obj \
        \
-       ctbcs.obj reader-ctapi.obj reader-pcsc.obj \
+       ctbcs.obj reader-ctapi.obj reader-pcsc.obj reader-openct.obj \
        \
        card-setcos.obj card-miocos.obj card-flex.obj card-gpk.obj \
        card-cardos.obj card-tcos.obj card-emv.obj card-default.obj \
        card-mcrd.obj card-starcos.obj card-openpgp.obj card-jcop.obj \
-       card-oberthur.obj card-belpic.obj card-atrust-acos.obj card-akis.obj \
-       card-incrypto34.obj card-piv.obj card-acos5.obj card-asepcos.obj \
-       muscle.obj card-muscle.obj muscle-filesystem.obj \
-       compression.obj p15card-helper.obj \
+       card-oberthur.obj card-belpic.obj card-atrust-acos.obj \
+       card-incrypto34.obj card-piv.obj card-muscle.obj card-acos5.obj \
+       card-asepcos.obj card-akis.obj card-gemsafeV1.obj \
        \
        pkcs15-openpgp.obj pkcs15-infocamere.obj pkcs15-starcert.obj \
-       pkcs15-tcos.obj pkcs15-esteid.obj pkcs15-postecert.obj \
-       pkcs15-gemsafe.obj pkcs15-actalis.obj pkcs15-atrust-acos.obj \
-       pkcs15-tccardos.obj pkcs15-piv.obj\
-       \
+       pkcs15-tcos.obj pkcs15-esteid.obj pkcs15-postecert.obj 
pkcs15-gemsafeGPK.obj \
+       pkcs15-actalis.obj pkcs15-atrust-acos.obj pkcs15-tccardos.obj 
pkcs15-piv.obj \
+       compression.obj p15card-helper.obj \
        $(TOPDIR)\win32\version.res
 
 all: install-headers $(TARGET)
Index: src/libopensc/pkcs15-syn.c
===================================================================
--- src/libopensc/pkcs15-syn.c  (revision 3456)
+++ src/libopensc/pkcs15-syn.c  (working copy)
@@ -52,7 +52,9 @@
                                        sc_pkcs15emu_opt_t *opts);
 extern int sc_pkcs15emu_tccardos_init_ex(sc_pkcs15_card_t *, 
sc_pkcs15emu_opt_t *);
 
+#ifndef WIN32
 extern int sc_pkcs15emu_rutoken_init_ex(sc_pkcs15_card_t *, sc_pkcs15emu_opt_t 
*);
+#endif
 
 static struct {
        const char *            name;
@@ -70,7 +72,9 @@
        { "actalis",    sc_pkcs15emu_actalis_init_ex    },
        { "atrust-acos",sc_pkcs15emu_atrust_acos_init_ex},
        { "tccardos",   sc_pkcs15emu_tccardos_init_ex   },
+#ifndef WIN32
        { "rutoken",    sc_pkcs15emu_rutoken_init_ex    },
+#endif
        { NULL, NULL }
 };
 
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to