Attached are the latest mode to OpenSC svn 3462 to use the Makefile.mak
files to build on Windows.

I got rutoken to compile, and took out the #ifdef's I had in last week.
The rutoken programmer declared some variables in the middle of a block
rather then having all the declare statements at the beginning of a block
as is normally done in C. The Microsoft compile treats this as an error.
(Actual many errors.)

The makedef.pl is no longer needed, as the exports files can be used.
Note that in the original Makefile.mak files only opensc.def and
pkcs15init.def were created.

winconfig.h has a number of changes. As discussed last week this could
be created by autoconf. I also noted that the Active State Perl that
was required for the makedef.pl has a psed command that could be used
like sed to update winconfig.h.  I did not attempt to do this.



 win32/Make.rules.mak - Use ENABLE_OPENSSL and ENABLE_ZLIB

 src/tools/Makefile.mak - add the rutoken.tool.exe

 src/tools/eidenv.c - use PACKAGE_VERSION

 src/pkcs11/Makefile.mak - reorder the objest to match the list in the
          Makefile.am. Makes it easier to read.

 src/include/winconfig.h - The windows version of the config.h
          Changes based on discussions on the list last week.

 src/common/Makefile.mak - renamed modules.

 src/pkcs15init/Makefile.mak - reordered, and added back the rutoken modules
          replaced the use of makdef.pl to sue the exports file.

 src/scconf/Makefile.mak - reordered objects.

 src/libopensc/card-rutoken.c -
          error. Moved the declares to the beginning of blocks.

 src/libopensc/Makefile.mak - reorder names, and add rutoken.
          Use the libopensc.exports file.

 src/libopensc/pkcs15-prkey-rutoken.c - more moving of declare statements.



--

 Douglas E. Engert  <[EMAIL PROTECTED]>
 Argonne National Laboratory
 9700 South Cass Avenue
 Argonne, Illinois  60439
 (630) 252-5444
Index: win32/Make.rules.mak
===================================================================
--- win32/Make.rules.mak        (revision 3462)
+++ 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/Makefile.mak
===================================================================
--- src/tools/Makefile.mak      (revision 3462)
+++ src/tools/Makefile.mak      (working copy)
@@ -4,7 +4,7 @@
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
 TARGETS = opensc-tool.exe opensc-explorer.exe pkcs15-tool.exe pkcs15-crypt.exe 
\
-               piv-tool.exe pkcs11-tool.exe cardos-info.exe eidenv.exe \
+               pkcs11-tool.exe cardos-info.exe eidenv.exe rutoken-tool.exe \
                $(PROGRAMS_OPENSSL)
 
 all: util.obj $(TARGETS)
Index: src/tools/eidenv.c
===================================================================
--- src/tools/eidenv.c  (revision 3462)
+++ src/tools/eidenv.c  (working copy)
@@ -80,7 +80,7 @@
 static void show_version(void)
 {
        fprintf(stderr,
-               "eidenv - EstEID utility version " VERSION "\n"
+               "eidenv - EstEID utility version " PACKAGE_VERSION "\n"
                "\n"
                "Copyright (c) 2004 Martin Paljak <[EMAIL PROTECTED]>\n"
                "Licensed under GPL v2\n");
Index: src/pkcs11/Makefile.mak
===================================================================
--- src/pkcs11/Makefile.mak     (revision 3462)
+++ 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 3462)
+++ src/include/winconfig.h     (working copy)
@@ -2,8 +2,11 @@
 #define _OPENSC_WINCONFIG_H
 
 #include <stdio.h>
+#define WIN32_LEAN_AND_MEAN
 #include <windows.h>
+#include <winscard.h>
 #include <sys/timeb.h>
+#include <sys/stat.h>
 
 #ifndef strcasecmp
 #define strcasecmp stricmp
@@ -64,16 +67,33 @@
 #define F_OK  0                /* test whether exist.  */
 #endif
 
+#ifndef S_IRUSR 
+#define S_IRUSR S_IREAD
+#endif
+
+#ifndef S_IWUSR 
+#define S_IWUSR S_IWRITE
+#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"
+#ifndef PACKAGE_VERSION
+#define PACKAGE_VERSION "0.11.4.2"
 #endif
 
+#ifndef PACKAGE_NAME
+#define PACKAGE_NAME "opensc"
+#endif
+
+#ifndef OPENSC_FEATURES
+#define OPENSC_FEATURES ""
+#endif
+
 /* src/common/getpass.c */
 extern char *getpass(const char *prompt);
 
Index: src/common/Makefile.mak
===================================================================
--- src/common/Makefile.mak     (revision 3462)
+++ 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/Makefile.mak
===================================================================
--- src/pkcs15init/Makefile.mak (revision 3462)
+++ src/pkcs15init/Makefile.mak (working copy)
@@ -2,20 +2,22 @@
 
 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
+          pkcs15-muscle.obj pkcs15-asepcos.obj pkcs15-rutoken.obj
 
 all: install-headers $(TARGET)
 
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
 $(TARGET): $(OBJECTS)
-       perl $(TOPDIR)\win32\makedef.pl $*.def $* $(OBJECTS)
+       echo LIBRARY $* > $*.def
+       echo EXPORTS >> $*.def
+       type $*.exports >> $*.def
        link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:$(TARGET) 
$(OBJECTS) ..\scconf\scconf.lib ..\common\common.lib ..\libopensc\opensc.lib 
winscard.lib $(OPENSSL_LIB) gdi32.lib $(LIBLTDL_LIB)
        if EXIST $(TARGET).manifest mt -manifest $(TARGET).manifest 
-outputresource:$(TARGET);2
Index: src/scconf/Makefile.mak
===================================================================
--- src/scconf/Makefile.mak     (revision 3462)
+++ 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/card-rutoken.c
===================================================================
--- src/libopensc/card-rutoken.c        (revision 3462)
+++ src/libopensc/card-rutoken.c        (working copy)
@@ -126,6 +126,11 @@
 static int rutoken_init(sc_card_t *card)
 {
        int ret = SC_ERROR_MEMORY_FAILURE;
+       unsigned int flags = SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_PKCS1;
+                               /* SC_ALGORITHM_RSA_RAW | 
SC_ALGORITHM_RSA_HASH_SHA1
+                               | SC_ALGORITHM_RSA_HASH_MD5_SHA1
+                               | SC_ALGORITHM_RSA_PAD_NONE */
+       sc_algorithm_info_t info;
 
        SC_FUNC_CALLED(card->ctx, 1);
 
@@ -139,17 +144,12 @@
        }
        /* add algorithm 
        TODO: may nid som other flag  */
-       unsigned int flags = SC_ALGORITHM_RSA_RAW | SC_ALGORITHM_RSA_PAD_PKCS1;
-                               /* SC_ALGORITHM_RSA_RAW | 
SC_ALGORITHM_RSA_HASH_SHA1
-                               | SC_ALGORITHM_RSA_HASH_MD5_SHA1
-                               | SC_ALGORITHM_RSA_PAD_NONE */
 
        _sc_card_add_rsa_alg(card, 256, flags, 0);
        _sc_card_add_rsa_alg(card, 512, flags, 0);
        _sc_card_add_rsa_alg(card, 768, flags, 0);
        _sc_card_add_rsa_alg(card, 1024, flags, 0);
        _sc_card_add_rsa_alg(card, 2048, flags, 0);
-       sc_algorithm_info_t info;
        flags = SC_ALGORITHM_GOST_CRYPT_PZ | SC_ALGORITHM_GOST_CRYPT_GAMM
                | SC_ALGORITHM_GOST_CRYPT_GAMMOS;
        memset(&info, 0, sizeof(info));
@@ -282,11 +282,11 @@
 
 static int rutoken_list_files(sc_card_t *card, u8 *buf, size_t buflen)
 {
-       SC_FUNC_CALLED(card->ctx, 1);
        u8 rbuf[256];
        u8 previd[2];
        int r = 0, len=0;
        sc_apdu_t apdu;
+
        SC_FUNC_CALLED(card->ctx, 1);
        /*  sc_debug(card->ctx, "\n\tpath = %s\n\ttype = %d", hexdump(path, 
pathlen), in_path->type);  */
        /*  prepare & transmit APDU  */
@@ -706,12 +706,13 @@
                         const sc_security_env_t *env,
                         int se_num)
 {
-       SC_FUNC_CALLED(card->ctx, 1);
        sc_apdu_t apdu;
        auth_senv_t *senv = (auth_senv_t*)card->drv_data;
-       if (!senv || !env) return SC_ERROR_INVALID_ARGUMENTS;
        u8      data[3] = {0x83, 0x01, env->key_ref[0]};
        int ret = SC_NO_ERROR;
+
+       SC_FUNC_CALLED(card->ctx, 1);
+       if (!senv || !env) return SC_ERROR_INVALID_ARGUMENTS;
        if(env->algorithm == SC_ALGORITHM_RSA)
        {
                senv->algorithm = SC_ALGORITHM_RSA_RAW;
@@ -1195,8 +1196,9 @@
                r = RSA_private_encrypt(len, data, out, pkey->pkey.rsa, 
RSA_PKCS1_PADDING);
                if ( r < 0)
                        {
+                               char error[1024];
+
                                ret = SC_ERROR_INTERNAL;
-                               char error[1024];
                                ERR_load_crypto_strings();
                                ERR_error_string(ERR_get_error(), error);
                                sc_error(card->ctx, error);
@@ -1224,8 +1226,9 @@
                ret = RSA_private_decrypt(len, data, out, pkey->pkey.rsa, 
RSA_PKCS1_PADDING);
                if ( ret < 0)
                        {
+                       char error[1024];
+
                        ret = SC_ERROR_INTERNAL;
-                       char error[1024];
                        ERR_load_crypto_strings();
                        ERR_error_string(ERR_get_error(), error);
                        sc_error(card->ctx, error);
Index: src/libopensc/Makefile.mak
===================================================================
--- src/libopensc/Makefile.mak  (revision 3462)
+++ src/libopensc/Makefile.mak  (working copy)
@@ -4,38 +4,36 @@
 TARGET                  = opensc.dll opensc_a.lib
 
 HEADERS                        = \
-       opensc.h pkcs15.h emv.h \
-       cardctl.h cards.h asn1.h \
-       log.h ui.h errors.h types.h
+       asn1.h cardctl.h cards.h emv.h errors.h \
+       log.h opensc.h pkcs15.h rutoken.h types.h ui.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 \
+       pkcs15-gemsafeV1.obj \
        \
-       emv.obj \
+       emv.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 card-rutoken.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 \
+       pkcs15-rutoken.obj pkcs15-prkey-rutoken.obj \
+       compression.obj p15card-helper.obj \
        $(TOPDIR)\win32\version.res
 
 all: install-headers $(TARGET)
@@ -43,7 +41,9 @@
 !INCLUDE $(TOPDIR)\win32\Make.rules.mak
 
 opensc.dll: $(OBJECTS) ..\scconf\scconf.lib ..\common\common.lib
-       perl $(TOPDIR)\win32\makedef.pl $*.def $* $(OBJECTS)
+       echo LIBRARY $* > $*.def
+       echo EXPORTS >> $*.def
+       type lib$*.exports >> $*.def
        link $(LINKFLAGS) /dll /def:$*.def /implib:$*.lib /out:opensc.dll 
$(OBJECTS) ..\scconf\scconf.lib ..\common\common.lib winscard.lib 
$(OPENSSL_LIB) $(ZLIB_LIB) gdi32.lib $(LIBLTDL_LIB) advapi32.lib ws2_32.lib
        if EXIST opensc.dll.manifest mt -manifest opensc.dll.manifest 
-outputresource:opensc.dll;2
 
Index: src/libopensc/pkcs15-prkey-rutoken.c
===================================================================
--- src/libopensc/pkcs15-prkey-rutoken.c        (revision 3462)
+++ src/libopensc/pkcs15-prkey-rutoken.c        (working copy)
@@ -97,6 +97,7 @@
 {
        const u8 *tmp;
        size_t len = 2 + sizeof(pr_blob->blobheader) + 
sizeof(pr_blob->rsapubkey);
+       uint32_t bitlen;
 
        if (buf_len < len)
                return -1;
@@ -108,7 +109,7 @@
        memcpy(&pr_blob->rsapubkey, tmp, sizeof(pr_blob->rsapubkey));
        tmp += sizeof(pr_blob->rsapubkey);
 
-       uint32_t bitlen = pr_blob->rsapubkey.bitlen;
+       bitlen = pr_blob->rsapubkey.bitlen;
 
        len += bitlen/8 * 2  +  bitlen/16 * 5;
        if (buf_len < len)
@@ -271,6 +272,7 @@
 
 static int private_blob_to_bin(const RUPRIVATEKEYBLOB *pr_blob, u8 *buf, 
size_t *buf_len)
 {
+       u8 *tmp;
        size_t len = 2 + sizeof(pr_blob->blobheader) + 
sizeof(pr_blob->rsapubkey);
 
        if(*buf_len < len)
@@ -278,7 +280,7 @@
 
        buf[0] = 2;
        buf[1] = 1;
-       u8 *tmp = buf + 2;
+       tmp = buf + 2;
        memcpy(tmp, &pr_blob->blobheader, sizeof(pr_blob->blobheader));
        tmp += sizeof(pr_blob->blobheader);
 
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to