mirror of
https://github.com/openssl/openssl.git
synced 2024-11-27 05:21:51 +08:00
Fix the Win32 compile environment and add various changes so it will now compile
under Win32 (9X and NT) again. Note: some signed/unsigned changes recently checked in were killing the Win32 compile.
This commit is contained in:
parent
726bae3f0f
commit
06c6849124
7
CHANGES
7
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
|
||||
|
@ -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
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
7
ms/do_nt.bat
Executable file
7
ms/do_nt.bat
Executable file
@ -0,0 +1,7 @@
|
||||
|
||||
perl util\mkfiles.pl >MINFO
|
||||
perl util\mk1mf.pl VC-NT no-asm >ms\nt.mak
|
||||
perl util\mk1mf.pl VC-NT dll no-asm >ms\ntdll.mak
|
||||
|
||||
perl util\mkdef.pl NT libeay > ms\libeay32.def
|
||||
perl util\mkdef.pl NT ssleay > ms\ssleay32.def
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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 (!$NT && /BIO_new_file/)
|
||||
elsif (!$W32 && /BIO_new_file/)
|
||||
{ return(undef); }
|
||||
elsif (!$NT && /BIO_new_fp/)
|
||||
elsif (!$W32 && /BIO_new_fp/)
|
||||
{ return(undef); }
|
||||
elsif ($NT && /BIO_s_file_internal/)
|
||||
elsif ($W32 && /BIO_s_file_internal/)
|
||||
{ return(undef); }
|
||||
elsif ($NT && /BIO_new_file_internal/)
|
||||
elsif ($W32 && /BIO_new_file_internal/)
|
||||
{ return(undef); }
|
||||
elsif ($NT && /BIO_new_fp_internal/)
|
||||
elsif ($W32 && /BIO_new_fp_internal/)
|
||||
{ return(undef); }
|
||||
elsif (/SSL_add_cert_dir_to_stack/)
|
||||
{ return(undef); }
|
||||
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";
|
||||
|
@ -26,6 +26,7 @@ if ($debug)
|
||||
$lflags.=" /debug";
|
||||
$mlflags.=' /debug';
|
||||
}
|
||||
$cflags .= " -DWINNT" if $NT == 1;
|
||||
|
||||
$obj='.obj';
|
||||
$ofile="/Fo";
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user