Fix the Win32 compile environment and add various changes so it will now compile
authorDr. Stephen Henson <steve@openssl.org>
Wed, 3 Mar 1999 02:01:26 +0000 (02:01 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 3 Mar 1999 02:01:26 +0000 (02:01 +0000)
under Win32 (9X and NT) again. Note: some signed/unsigned changes recently
checked in were killing the Win32 compile.

13 files changed:
CHANGES
INSTALL.W32
crypto/bio/bss_log.c
crypto/evp/bio_ok.c
crypto/pkcs7/pk7_doit.c
crypto/pkcs7/pkcs7.h
ms/do_nt.bat [new file with mode: 0755]
ssl/ssl_cert.c
util/libeay.num
util/mk1mf.pl
util/mkdef.pl
util/pl/VC-32.pl
util/ssleay.num

diff --git a/CHANGES b/CHANGES
index aa6ba7859dfee64f1455cf01ebf692b90a949054..7387f3272e6070f4e3b1a0b545008d89caf7cc13 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,13 @@
 
  Changes between 0.9.1c and 0.9.2
 
+  *) Get the Win32 compile working again. Modify mkdef.pl so it can handle
+     functions that return function pointers and has support for NT specific
+     stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various
+     #ifdef WIN32 and WINNTs sprinkled about the place and some changes from
+     unsigned to signed types: this was killing the Win32 compile.
+     [Steve Henson]
+
   *) Add new certificate file to stack functions, SSL_add_cert_file_to_stack()
      and SSL_add_cert_dir_to_stack(). These largely supplant
      SSL_load_client_CA_file(), and can be used to add multiple certs easily to
index 9122410404a4aed525986dc767dc34ba813660f4..75dc7dbb832021483b330ee306e5f2e5cc8234c4 100644 (file)
@@ -4,6 +4,10 @@ Heres a few comments about building OpenSSL in Windows environments. Most of
 this is tested on Win32 but it may also work in Win 3.1 with some modification.
 See the end of this file for Eric's original comments.
 
+Note: the default Win32 environment is to leave out any Windows NT specific
+features: (currently only BIO_s_log()) if you want NT specific features see
+the "Tweaks" section later.
+
 You will need perl for Win32 (which can be got from various sources) and Visual
 C++. 
 
@@ -73,6 +77,11 @@ There are various changes you can make to the Win32 compile environment. If you
 have the MASM assembler 'ml' then you can try the assembly language code. To
 do this remove the 'no-asm' part from do_ms.bat.
 
+If you want to enable the NT specific features of OpenSSL (currently only
+the logging BIO) follow the instructions above but call the batch file
+do_nt.bat instead of do_ms.bat. If you do this then you will no longer be able
+to run the OpenSSL binaries under Windows 95 or 98.
+
 You can also build a static version of the library using the Makefile ms\nt.mak
 
 --------------------------------------------------------------------------------
index cb2779855b58f888e8c91485690d99ba4c2a031a..4ec76fa7423cb7fe4d0d5d56f5247d6158aa77d0 100644 (file)
@@ -62,6 +62,8 @@
 
 */
 
+#if !defined(WIN32) || defined(WINNT)
+
 #include <stdio.h>
 #include <errno.h>
 
@@ -242,3 +244,4 @@ static int xcloselog(BIO* bp)
        return(1);
 }
 
+#endif
index 8d7ffe28a19d9a4896834891dd5ffa5386248f79..174ecdeb3949d7ee9b795cd0dc9e201bc811cf39 100644 (file)
@@ -547,7 +547,7 @@ static void block_in(BIO* b)
        {
        BIO_OK_CTX *ctx;
        EVP_MD_CTX *md;
-       unsigned long tl= 0;
+        long tl= 0;
        unsigned char tmp[EVP_MAX_MD_SIZE];
 
        ctx=(BIO_OK_CTX *)b->ptr;
index 9d590f595c147dff7689ee5340b18624171c15e1..071ff099377c284454d99fbd3d6b1fead84cba3d 100644 (file)
@@ -715,7 +715,7 @@ PKCS7_SIGNER_INFO *si;
        if ((sk != NULL) && (sk_num(sk) != 0))
                {
                unsigned char md_dat[EVP_MAX_MD_SIZE];
-               unsigned int md_len;
+                int md_len;
                ASN1_OCTET_STRING *message_digest;
 
                EVP_DigestFinal(&mdc_tmp,md_dat,&md_len);
index 01afa5a5c3cd5bf2f53ddcd3c4db75fff2bc4c4b..6fcb63bfaf094074faca72211414afb5dc55a486 100644 (file)
@@ -419,6 +419,8 @@ int PKCS7_add_crl();
 int PKCS7_content_new();
 int PKCS7_dataVerify();
 BIO *PKCS7_dataInit();
+int PKCS7_dataFinal();
+BIO *PKCS7_dataDecode();
 PKCS7_SIGNER_INFO *PKCS7_add_signature();
 X509 *PKCS7_cert_from_signer_info();
 STACK *PKCS7_get_signer_info();
diff --git a/ms/do_nt.bat b/ms/do_nt.bat
new file mode 100755 (executable)
index 0000000..7c6b93b
--- /dev/null
@@ -0,0 +1,7 @@
+\r
+perl util\mkfiles.pl >MINFO\r
+perl util\mk1mf.pl VC-NT no-asm >ms\nt.mak\r
+perl util\mk1mf.pl VC-NT dll no-asm >ms\ntdll.mak\r
+\r
+perl util\mkdef.pl NT libeay > ms\libeay32.def\r
+perl util\mkdef.pl NT ssleay > ms\ssleay32.def\r
index 909af7c9848c58d785c35cb6b49dd708797180c1..3612486b679ca054877fb0848597ad787f2df10e 100644 (file)
@@ -58,7 +58,9 @@
 
 #include <stdio.h>
 #include <sys/types.h>
+#ifndef WIN32
 #include <dirent.h>
+#endif
 #include "objects.h"
 #include "bio.h"
 #include "pem.h"
@@ -381,7 +383,7 @@ int SSL_add_cert_file_to_stack(STACK *stack,const char *file)
 
     in=BIO_new(BIO_s_file_internal());
 
-    if (ret == NULL || in == NULL)
+    if (in == NULL)
        {
        SSLerr(SSL_F_SSL_ADD_CERT_FILE_TO_STACK,ERR_R_MALLOC_FAILURE);
        goto err;
@@ -429,6 +431,8 @@ err:
  * certs may have been added to \c stack.
  */
 
+#ifndef WIN32
+
 int SSL_add_cert_dir_to_stack(STACK *stack,const char *dir)
     {
     DIR *d=opendir(dir);
@@ -458,3 +462,5 @@ int SSL_add_cert_dir_to_stack(STACK *stack,const char *dir)
 
     return 1;
     }
+
+#endif
index e7da890357c1e3486021649cd5497db53de253fa..808ba3e28a2c6559b162f25e3206809d8b8f7bf1 100755 (executable)
@@ -1214,3 +1214,7 @@ name_cmp                                1239
 str_dup                                 1240
 i2s_ASN1_ENUMERATED                     1241
 i2s_ASN1_ENUMERATED_TABLE               1242
+BIO_s_log                               1243
+BIO_f_reliable                          1244
+PKCS7_dataFinal                         1245
+PKCS7_dataDecode                        1246
index 8da22ccb1220e7fc14bd477aa2222871a7cebbcc..18e9b041757dd969dcfa774836491fc8764b34e7 100755 (executable)
@@ -7,12 +7,13 @@
 
 $INSTALLTOP="/usr/local/ssl";
 
-$ssl_version="0.8.2";
+$ssl_version="0.9.2";
 
 $infile="MINFO";
 
 %ops=(
-       "VC-WIN32",   "Microsoft Visual C++ 4.[01] - Windows NT [34].x",
+       "VC-WIN32",   "Microsoft Visual C++ [4-6] - Windows NT or 9X",
+       "VC-NT",   "Microsoft Visual C++ [4-6] - Windows NT ONLY",
        "VC-W31-16",  "Microsoft Visual C++ 1.52 - Windows 3.1 - 286",
        "VC-WIN16",   "Alias for VC-W31-32",
        "VC-W31-32",  "Microsoft Visual C++ 1.52 - Windows 3.1 - 386+",
@@ -126,6 +127,8 @@ $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:'';
 
 # $bin_dir.=$o causes a core dump on my sparc :-(
 
+$NT=0;
+
 push(@INC,"util/pl","pl");
 if ($platform eq "VC-MSDOS")
        {
@@ -147,6 +150,7 @@ elsif (($platform eq "VC-W31-32") || ($platform eq "VC-WIN16"))
        }
 elsif (($platform eq "VC-WIN32") || ($platform eq "VC-NT"))
        {
+       $NT = 1 if $platform eq "VC-NT";
        require 'VC-32.pl';
        }
 elsif ($platform eq "BC-NT")
index e1f2ca99a10571bb911b830e5a0a4c8fd3c59c43..eec80df99ee53ade972acdeb03f5c7417934be3f 100755 (executable)
@@ -9,11 +9,16 @@
 $crypto_num="util/libeay.num";
 $ssl_num=   "util/ssleay.num";
 
-$NT=1;
+$W32=1;
+$NT=0;
 foreach (@ARGV)
        {
-       $NT=1 if $_ eq "32";
-       $NT=0 if $_ eq "16";
+       $W32=1 if $_ eq "32";
+       $W32=0 if $_ eq "16";
+       if($_ eq "NT") {
+               $W32 = 1;
+               $NT = 1;
+       }
        $do_ssl=1 if $_ eq "ssleay";
        $do_ssl=1 if $_ eq "ssl";
        $do_crypto=1 if $_ eq "libeay";
@@ -167,7 +172,7 @@ sub do_defs
                                $tag{$t}= -$tag{$t};
                                next;
                                }
-#printf STDERR "$_\n%2d %2d %2d %2d %2d $NT\n",
+#printf STDERR "$_\n%2d %2d %2d %2d %2d $W32\n",
 #$tag{'NOPROTO'},$tag{'FreeBSD'},$tag{'WIN16'},$tag{'PERL5'},$tag{'NO_FP_API'};
 
                        $t=undef;
@@ -175,14 +180,14 @@ sub do_defs
                                { $t=&do_extern($name,$_); }
                        elsif ( ($tag{'NOPROTO'} == 1) &&
                                ($tag{'FreeBSD'} != 1) &&
-                               (($NT && ($tag{'WIN16'} != 1)) ||
-                                (!$NT && ($tag{'WIN16'} != -1))) &&
+                               (($W32 && ($tag{'WIN16'} != 1)) ||
+                                (!$W32 && ($tag{'WIN16'} != -1))) &&
                                ($tag{'PERL5'} != 1) &&
 #                              ($tag{'_WINDLL'} != -1) &&
-                               ((!$NT && $tag{'_WINDLL'} != -1) ||
-                                ($NT && $tag{'_WINDLL'} != 1)) &&
-                               ((($tag{'NO_FP_API'} != 1) && $NT) ||
-                                (($tag{'NO_FP_API'} != -1) && !$NT)))
+                               ((!$W32 && $tag{'_WINDLL'} != -1) ||
+                                ($W32 && $tag{'_WINDLL'} != 1)) &&
+                               ((($tag{'NO_FP_API'} != 1) && $W32) ||
+                                (($tag{'NO_FP_API'} != -1) && !$W32)))
                                { $t=&do_line($name,$_); }
                        else
                                { $t=undef; }
@@ -216,24 +221,31 @@ sub do_line
                { return($1); }
        elsif (/(SSL_get_info_callback)/)
                { return($1); }
-       elsif ((!$NT) && /(ERR_load_CRYPTO_strings)/)
+       elsif ((!$W32) && /(ERR_load_CRYPTO_strings)/)
                { return("ERR_load_CRYPTOlib_strings"); }
-       elsif (!$NT && /BIO_s_file/)
+       elsif (!$W32 && /BIO_s_file/)
+               { return(undef); }
+       elsif (!$W32 && /BIO_new_file/)
+               { return(undef); }
+       elsif (!$W32 && /BIO_new_fp/)
                { return(undef); }
-       elsif (!$NT && /BIO_new_file/)
+       elsif ($W32 && /BIO_s_file_internal/)
                { return(undef); }
-       elsif (!$NT && /BIO_new_fp/)
+       elsif ($W32 && /BIO_new_file_internal/)
                { return(undef); }
-       elsif ($NT && /BIO_s_file_internal/)
+       elsif ($W32 && /BIO_new_fp_internal/)
                { return(undef); }
-       elsif ($NT && /BIO_new_file_internal/)
+        elsif (/SSL_add_cert_dir_to_stack/)
                { return(undef); }
-       elsif ($NT && /BIO_new_fp_internal/)
+       elsif (!$NT && /BIO_s_log/)
                { return(undef); }
        else
                {
                /\s\**(\S+)\s*\(/;
-               return($1);
+               $_ = $1;
+               tr/()*//d;
+#print STDERR "$1 : $_\n";
+               return($_);
                }
        }
 
@@ -251,7 +263,7 @@ sub print_def_file
        local(*OUT,$name,*nums,@functions)=@_;
        local($n)=1;
 
-       if ($NT)
+       if ($W32)
                { $name.="32"; }
        else
                { $name.="16"; }
@@ -267,7 +279,7 @@ DESCRIPTION     'OpenSSL $name - http://www.openssl.org/'
 
 EOF
 
-       if (!$NT)
+       if (!$W32)
                {
                print <<"EOF";
 CODE            PRELOAD MOVEABLE
@@ -298,7 +310,7 @@ EOF
                else
                        {
                        $n=$nums{$func};
-                       printf OUT "    %s%-40s@%d\n",($NT)?"":"_",$func,$n;
+                       printf OUT "    %s%-40s@%d\n",($W32)?"":"_",$func,$n;
                        }
                }
        printf OUT "\n";
index c0d57937a8206d471d01f087b329811503dc4377..9dca36b01bd7c1291637b3713500754c9c37b07b 100644 (file)
@@ -26,6 +26,7 @@ if ($debug)
        $lflags.=" /debug";
        $mlflags.=' /debug';
        }
+$cflags .= " -DWINNT" if $NT == 1;
 
 $obj='.obj';
 $ofile="/Fo";
index c158b957edde08710d1125f361909c49b2c7ca1a..2396e070e38ecab878b4e99b696b02117a45d64a 100755 (executable)
@@ -164,3 +164,6 @@ SSL_CTX_set_cert_store                  181
 SSL_want                                182
 SSL_library_init                        183
 SSL_COMP_add_compression_method         184
+SSL_add_cert_file_to_stack              185
+SSL_set_tmp_rsa_callback                186
+SSL_set_tmp_dh_callback                 187