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