Hi,

Just to share some tips/fixes that make the cvs version of PKCS11 to build on Windows:

1. cvs gets pcsclite and pkcs11

mkdir pcsclite
cd pcsclite
cvs -d:pserver:[EMAIL PROTECTED]:/cvsroot/pcsclite login
cvs -z3 -d:pserver:[EMAIL PROTECTED]:/cvsroot/pcsclite co PCSC
cd ..
mkdir muscleapps
cd muscleapps
cvs -d:pserver:[EMAIL PROTECTED]:/cvsroot/muscleplugins login
cvs -z3 -d:pserver:[EMAIL PROTECTED]:/cvsroot/muscleapps co PKCS11
cd ..
mkdir libs
(copy musclecard.lib,libeay32.lib,pthreadVC.lib from
   Muscle for Win2k installer to libs)

2. Fix signed/unsigned mismatch compiler warnings
   - see p11_object.diff and p11x_object.diff

3. Fix SYS_ThreadCreate declaration mismatch in thread_generic.h
   - see thread_generic_h.diff

4. Add include paths to pkcs11.dsp

   - "..\include" for cryptoki.h
   - "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" for musclecard.h
   - "..\..\..\pcsclite\PCSC\win32" for win32_pcsclite.h

5. Add libs path "..\..\..\libs" to pkcs11.dsp

6. Add files to pkcs11.dsp:

  muscleapps\PKCS11\src\crackcert.c
  muscleapps\PKCS11\src\crackcert.h

  to fix unresolved external symbol _GetCertFields

7. Add file "..\..\..\pcsclite\PCSC\src\thread_win32.c"
   to pkcs11.dsp to fix unresolved external symbols:

p11x_thread.obj : error LNK2001: unresolved external symbol _SYS_MutexUnLock
p11x_thread.obj : error LNK2001: unresolved external symbol _SYS_MutexLock
p11x_thread.obj : error LNK2001: unresolved external symbol _SYS_MutexDestroy
p11x_thread.obj : error LNK2001: unresolved external symbol _SYS_MutexInit

8. Add post build step:
     if not exist ..\..\win32bin\*.* mkdir ..\..\win32bin
   see pkcs11.dsp


Rgds.
Martin
--- cvs\muscleapps\PKCS11\src\p11_object.c      2004-11-28 22:30:31.000000000 
+0800
+++ muscleapps\PKCS11\src\p11_object.c  2005-07-19 15:46:06.453125000 +0800
@@ -506,24 +506,24 @@
             /*        Otherwise it uses the memory pointer back into the 
calling application. */
             session->search_attrib = (CK_ATTRIBUTE *)calloc(ulCount, 
sizeof(CK_ATTRIBUTE));
             if (NULL == session->search_attrib) {
                 rv = CKR_HOST_MEMORY;
                                goto finish;
                        }
             else
             {
-               int i;
+               CK_ULONG i;
                 memcpy(session->search_attrib, pTemplate, ulCount * 
sizeof(CK_ATTRIBUTE));
                for (i=0; i<ulCount; i++) {
                    session->search_attrib[i].pValue = 
                        malloc(session->search_attrib[i].ulValueLen);
                    if (NULL == session->search_attrib[i].pValue) {
                        /* avoid leaking memory here */
-                       int k; 
+                       CK_ULONG k; 
                        for (k=0 ; k<i ; k++)
                            free(session->search_attrib[k].pValue);
 
                        free(session->search_attrib);
                        session->search_attrib = NULL;
 
                        rv = CKR_HOST_MEMORY;
                        goto finish;
@@ -677,17 +677,17 @@
     if (CKR_ERROR(rv = slot_TokenChanged()))
         rv = CKR_SESSION_HANDLE_INVALID;
     else
     {
         session->search_object = 0x00;
 
         if (session->search_attrib)
         {
-           int j;
+           CK_ULONG j;
            for (j=0 ; j<session->search_attrib_count; j++) {
                if (session->search_attrib[j].pValue) {
                    /* redundant if, actually */
                    free(session->search_attrib[j].pValue);
                    session->search_attrib[j].pValue = NULL;
                }
            }
 
--- cvs\muscleapps\PKCS11\src\p11x_object.c     2005-05-24 15:13:21.000000000 
+0800
+++ muscleapps\PKCS11\src\p11x_object.c 2005-07-19 15:46:40.312500000 +0800
@@ -706,17 +706,17 @@
              !memcmp(reverse, obj_attrib->attrib.pValue, attrib->ulValueLen)))
         {
             rv = 1;
         }
         else
         {
             {
               CK_BYTE *buf; 
-              int len = attrib->ulValueLen;
+              CK_ULONG len = attrib->ulValueLen;
 
               /* be sure object_GetAttrib() worked before dereferencing
                * obj_attrib */
               if ((rv == CKR_OK) && (obj_attrib->attrib.ulValueLen > len))
                   len = obj_attrib->attrib.ulValueLen;
  
               buf = (CK_BYTE *)malloc((len * 3) + 1);
               if (buf == NULL)
diff -u -8 -r cvs\muscleapps\PKCS11/include/thread_generic.h 
muscleapps\PKCS11/include/thread_generic.h
--- cvs\muscleapps\PKCS11/include/thread_generic.h      2003-06-05 
08:46:49.000000000 +0800
+++ muscleapps\PKCS11/include/thread_generic.h  2005-07-19 16:26:38.015625000 
+0800
@@ -38,17 +38,17 @@
 #define PCSCLITE_MUTEX                   pthread_mutex_t
 #define PCSCLITE_MUTEX_T                 pthread_mutex_t*
 #endif
 
        int SYS_MutexInit(PCSCLITE_MUTEX_T);
        int SYS_MutexDestroy(PCSCLITE_MUTEX_T);
        int SYS_MutexLock(PCSCLITE_MUTEX_T);
        int SYS_MutexUnLock(PCSCLITE_MUTEX_T);
-       int SYS_ThreadCreate(PCSCLITE_THREAD_T *, LPVOID, LPVOID, LPVOID);
+       int SYS_ThreadCreate(PCSCLITE_THREAD_T *, int, LPVOID, LPVOID);
        int SYS_ThreadCancel(PCSCLITE_THREAD_T *);
        int SYS_ThreadDetach(PCSCLITE_THREAD_T);
         int SYS_ThreadJoin(PCSCLITE_THREAD_T *, LPVOID*);
        int SYS_ThreadExit(LPVOID);
 
 
         PCSC_API int MSC_MutexInit(PCSCLITE_MUTEX_T);
        PCSC_API int MSC_MutexDestroy(PCSCLITE_MUTEX_T);
# Microsoft Developer Studio Project File - Name="PKCS11" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102

CFG=PKCS11 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "PKCS11.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "PKCS11.mak" CFG="PKCS11 - Win32 Debug"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "PKCS11 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "PKCS11 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe

!IF  "$(CFG)" == "PKCS11 - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D 
"_MBCS" /D "_USRDLL" /D "PKCS11_EXPORTS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I 
"..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" 
/D "_USRDLL" /D "PKCS11_EXPORTS" /D "CRYPTOKI_EXPORTS" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 musclecard.lib libeay32.lib pthreadVC.lib advapi32.lib /nologo 
/dll /machine:I386 /libpath:"..\..\..\libs"

!ELSEIF  "$(CFG)" == "PKCS11 - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D 
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PKCS11_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I 
"..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" 
/D "_USRDLL" /D "PKCS11_EXPORTS" /D "CRYPTOKI_EXPORTS" /FR /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 musclecard.lib libeay32.lib pthreadVC.lib advapi32.lib /nologo 
/dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libs"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Cmds=if not exist ..\..\win32bin\*.* mkdir ..\..\win32bin     copy   
Debug\PKCS11.dll  ..\..\win32bin         copy   Debug\PKCS11.lib  
..\..\win32bin 
# End Special Build Tool

!ENDIF 

# Begin Target

# Name "PKCS11 - Win32 Release"
# Name "PKCS11 - Win32 Debug"
# Begin Group "Source Files"

# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File

SOURCE=..\src\crackcert.c
# End Source File
# Begin Source File

SOURCE=..\src\p11_crypt.c

!IF  "$(CFG)" == "PKCS11 - Win32 Release"

# ADD CPP /I "..\..\..\pcsclite\libmusclecard\src\PCSC"

!ELSEIF  "$(CFG)" == "PKCS11 - Win32 Debug"

!ENDIF 

# End Source File
# Begin Source File

SOURCE=..\src\p11_digest.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_dual.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_ext.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_general.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_key.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_object.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_parallel.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_random.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_session.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_sign.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_token.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11_verify.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_async.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_error.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_log.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_msc.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_object.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_prefs.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_session.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_slot.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_state.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_thread.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_util.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\src\p11x_win32dll.c
# ADD CPP /I "..\include" /I "..\..\..\pcsclite\PCSC\libmusclecard\src\PCSC" /I 
"..\..\..\pcsclite\PCSC\win32"
# End Source File
# Begin Source File

SOURCE=..\..\..\pcsclite\PCSC\src\thread_win32.c
# End Source File
# End Group
# Begin Group "Header Files"

# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File

SOURCE=..\include\crackcert.h
# End Source File
# Begin Source File

SOURCE=..\include\cryptoki.h
# End Source File
# Begin Source File

SOURCE=..\include\cryptoki_unix.h
# End Source File
# Begin Source File

SOURCE=..\include\cryptoki_win32.h
# End Source File
# Begin Source File

SOURCE=..\include\p11x_msc.h
# End Source File
# Begin Source File

SOURCE=..\include\pkcs11.h
# End Source File
# Begin Source File

SOURCE=..\include\pkcs11f.h
# End Source File
# Begin Source File

SOURCE=..\include\pkcs11t.h
# End Source File
# Begin Source File

SOURCE=..\include\thread_generic.h
# End Source File
# End Group
# Begin Group "Resource Files"

# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project
_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle

Reply via email to