|  | The Microsoft World. | 
|  |  | 
|  | The good news, to build SSLeay for the Microsft World | 
|  |  | 
|  | Windows 3.1 DLL's | 
|  | perl Configure VC-WIN16 | 
|  | nmake -f ms\w31dll.mak | 
|  |  | 
|  | Windows NT/95 DLL's | 
|  | perl Configure VC-WIN32 | 
|  | nmake -f ms\ntdll.mak | 
|  |  | 
|  | Now the bad news | 
|  | All builds were done using Microsofts Visual C++ 1.52c and [45].x. | 
|  | If you are a borland person, you are probably going to have to help me | 
|  | finish the stuff in util/pl/BC*pl | 
|  |  | 
|  | All builds were made under Windows NT - this means long filenames, so | 
|  | you may have problems under Windows 3.1 but probably not under 95. | 
|  |  | 
|  | Because file pointers don't work in DLL's under Windows 3.1 (well at | 
|  | least stdin/stdout don't and I don't like having to differentiate | 
|  | between these and other file pointers), I now use the BIO file-pointer | 
|  | module, which needs to be linked into your application.  You can either | 
|  | use the memory buffer BIO for IO, or compile bss_file.c into your | 
|  | application, it is in the apps directory and is just a copy of | 
|  | crypto/buffer/bss_file.c with #define APPS_WIN16 added. | 
|  | I have not yet automated the makefile to automatically copy it into 'out' | 
|  | for a win 3.1 build.... | 
|  |  | 
|  | All callbacks passed into SSLeay for Windows 3.1 need to be of type | 
|  | _far _loadds. | 
|  |  | 
|  | I don't support building with the pascal calling convention. | 
|  |  | 
|  | The DLL and static builds are large memory model. | 
|  |  | 
|  | To build static libraries for NT/95 or win 3.1 | 
|  |  | 
|  | perl util/mk1mf.pl VC-WIN32 > mf-stat.nt | 
|  | perl util/mk1mf.pl VC-WIN16 > mf-stat.w31 | 
|  | for DLL's | 
|  | perl util/mk1mf.pl dll VC-WIN32	> mf-dll.nt | 
|  | perl util/mk1mf.pl dll VC-WIN16 > mf-dll.w31 | 
|  |  | 
|  | Again you will notice that if you dont have perl, you cannot do this. | 
|  |  | 
|  | Now the next importaint issue.  Running Configure! | 
|  | I have small assember code files for critical big number library operation | 
|  | in crypto/bn/asm.  There is, asm code, object files and uuencode | 
|  | object files.  They are | 
|  | x86nt32.asm	- 32bit flat memory model assember - suitable Win32 | 
|  | x86w16.asm	- 16bit assember - used in the msdos build. | 
|  | x86w32.asm	- 32bit assember, win 3.1 segments, used for win16 build. | 
|  |  | 
|  | If you feel compelled to build the 16bit maths routines in the windows 3.1 | 
|  | build, | 
|  | perl Configure VC-W31-16 | 
|  | perl util/mk1mf.pl dll VC-W31-16 > mf-dll.w31 | 
|  |  | 
|  | If you hate assember and don't want anything to do with it, | 
|  | perl util/mk1mf.pl no-asm VC-WIN16 > mf-dll.w31 | 
|  | will work for any of the makefile generations. | 
|  |  | 
|  | There are more options to mk1mf.pl but these all leave the temporary | 
|  | files in 'tmp' and the output files in 'out' by default. | 
|  |  | 
|  | The NT build is done for console mode. | 
|  |  | 
|  | The Windows 3.1 version of SSLeay uses quickwin, the interface is ugly | 
|  | but it is better than nothing.  If you want ugly, try doing anything | 
|  | that involves getting a password.  I decided to be ugly instead of | 
|  | echoing characters.  For Windows 3.1 I would just sugest using the | 
|  | msdos version of the ssleay application for command line work. | 
|  | The QuickWin build is primarily for testing. | 
|  |  | 
|  | For both NT and Windows 3.1, I have not written the code so that | 
|  | s_client, s_server can take input from the keyboard.  You can happily | 
|  | start applications up in separate windows, watch them handshake, and then sit | 
|  | there for-ever.  I have not had the time to get this working, and I've | 
|  | been able to test things from a unix box to the NT box :-). | 
|  | Try running ssleay s_server on the windows box | 
|  | (with either -cert ../apps/server.pem -www) | 
|  | and run ssleay s_time from another window. | 
|  | This often stuffs up on Windows 3.1, but I'm not worried since this is | 
|  | probably a problem with my demo applications, not the libraries. | 
|  |  | 
|  | After a build of one of the version of microsoft SSLeay, | 
|  | 'cd ms' and then run 'test'.  This should check everything out and | 
|  | even does a trial run of generating certificates. | 
|  | 'test.bat' requires that perl be install, you be in the ms directory | 
|  | (not the test directory, thats for unix so stay out :-) and that the | 
|  | build output directory be ../out | 
|  |  | 
|  | On a last note, you will probably get division by zero errors and | 
|  | stuff after a build.  This is due to your own inability to follow | 
|  | instructions :-). | 
|  |  | 
|  | The reasons for the problem is probably one of the following. | 
|  |  | 
|  | 1)	You did not run Configure.  This is critical for windows 3.1 when | 
|  | using assember.  The values in crypto/bn/bn.h must match the | 
|  | ones requred for the assember code.  (remember that if you | 
|  | edit crypto/bn/bn.h by hand, it will be clobered the next time | 
|  | you run Configure by the contents of crypto/bn/bn.org). | 
|  | SSLeay version -o will list the compile options. | 
|  | For VC-WIN32 you need bn(64,32) or bn(32,32) | 
|  | For VC-W31-32/VC-WIN16 you need bn(32,32) | 
|  | For VC-W31-16 you need bn(32,16) or bn(16,16) | 
|  | For VC-MSDOS you need bn(32,16) or bn(16,16). | 
|  |  | 
|  | The first number will be 2 times bigger than the second if | 
|  | BN_LLONG is defined in bn.h and the size of the second number | 
|  | depends on the 'bits' defined at the start of bn.h.  Have a | 
|  | look, it's all reasonably clear. | 
|  | If you want to start messing with 8 bit builds and things like | 
|  | that, build without the assember by re-generating a makefile | 
|  | via 'perl util/mk1mf.pl no-asm'. | 
|  | 2)	You tried to build under MS-DOS or Windows 3.1 using the /G3 | 
|  | option.  Don't.  It is buggy (thats why you just got that | 
|  | error) and unless you want to work out which optimising flag | 
|  | to turn off, I'm not going to help you :-).  I also noticed | 
|  | that code often ran slower when compiled with /G3. | 
|  | 3)	Under NT/95, malloc goes stupid.  You are probably linking with | 
|  | the wrong library, there are problems if you mix the threaded | 
|  | and non-threaded libraries (due to the DLL being staticly | 
|  | linked with one and the applicaion using another. | 
|  |  | 
|  | Well hopefully thats most of the MS issues handled, see you in ssl-users :-). | 
|  |  | 
|  | eric 30-Aug-1996 | 
|  |  | 
|  | SSLeay 0.6.5 | 
|  | For Windows 95/NT, add CRYPTO_malloc_init() to your program before any | 
|  | calls to the SSLeay libraries.  This function will insert callbacks so that | 
|  | the SSLeay libraries will use the same malloc(), free() and realloc() as | 
|  | your application so 'problem 3)' mentioned above will go away. | 
|  |  | 
|  | There is now DES assember for Windows NT/95.  The file is | 
|  | crypto/des/asm/win32.asm and replaces crypto/des/des_enc.c in the build. | 
|  |  | 
|  | There is also Blowfish assember for Windows NT/95.  The file is | 
|  | crypto/bf/asm/win32.asm and replaces crypto/bf/bf_enc.c in the build. | 
|  |  | 
|  | eric 25-Jun-1997 | 
|  |  |