#! /usr/bin/env perl
-# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# existence:platform:kind:algorithms
#
# - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is
-# found somewhere in the source,
+# found somewhere in the source,
# - "platforms" is empty if it exists on all platforms, otherwise it contains
# comma-separated list of the platform, just as they are if the symbol exists
# for those platforms, or prepended with a "!" if not. This helps resolve
my $do_ctestall = 0;
my $do_checkexist = 0;
-my $VMSVAX=0;
-my $VMSNonVAX=0;
my $VMS=0;
my $W32=0;
my $NT=0;
"CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1",
"SHA256", "SHA512", "RMD160",
"MDC2", "WHIRLPOOL", "RSA", "DSA", "DH", "EC", "EC2M",
- "HMAC", "AES", "CAMELLIA", "SEED", "GOST",
+ "HMAC", "AES", "CAMELLIA", "SEED", "GOST", "ARIA",
"SCRYPT", "CHACHA", "POLY1305", "BLAKE2",
+ "SIPHASH",
# EC_NISTP_64_GCC_128
"EC_NISTP_64_GCC_128",
# Envelope "algorithms"
"DEPRECATEDIN_0_9_8",
"DEPRECATEDIN_1_0_0",
"DEPRECATEDIN_1_1_0",
+ "DEPRECATEDIN_1_2_0",
# SCTP
"SCTP",
# SRTP
# disabled by default
$disabled_algorithms{"STATIC_ENGINE"} = 1;
+my $apiv = sprintf "%x%02x%02x", split(/\./, $config{api});
+foreach (keys %disabled_algorithms) {
+ if (/^DEPRECATEDIN_(\d+)_(\d+)_(\d+)$/) {
+ my $depv = sprintf "%x%02x%02x", $1, $2, $3;
+ $disabled_algorithms{$_} = 1 if $apiv ge $depv;
+ }
+}
+
my $zlib;
foreach (@ARGV, split(/ /, $config{options}))
$W32 = 1;
$NT = 1;
}
- if ($_ eq "VMS-VAX") {
- $VMS=1;
- $VMSVAX=1;
- }
- if ($_ eq "VMS-NonVAX") {
- $VMS=1;
- $VMSNonVAX=1;
- }
if ($_ eq "linux") {
$linux=1;
}
- $VMS=$VMSNonVAX=1 if $_ eq "VMS";
+ $VMS=1 if $_ eq "VMS";
if ($_ eq "zlib" || $_ eq "enable-zlib" || $_ eq "zlib-dynamic"
|| $_ eq "enable-zlib-dynamic") {
$zlib = 1;
$do_ssl=1 if $_ eq "libssl";
if ($_ eq "ssl") {
- $do_ssl=1;
+ $do_ssl=1;
$libname=$_
}
$do_crypto=1 if $_ eq "libcrypto";
$do_ctest=1 if $_ eq "ctest";
$do_ctestall=1 if $_ eq "ctestall";
$do_checkexist=1 if $_ eq "exist";
- if (/^--api=(\d+)\.(\d+)\.(\d+)$/) {
- my $apiv = sprintf "%x%02x%02x", $1, $2, $3;
- foreach (keys %disabled_algorithms) {
- if (/^DEPRECATEDIN_(\d+)_(\d+)_(\d+)$/) {
- my $depv = sprintf "%x%02x%02x", $1, $2, $3;
- $disabled_algorithms{$_} = 1 if $apiv ge $depv;
- }
- }
- }
- if (/^no-deprecated$/) {
- foreach (keys %disabled_algorithms) {
- if (/^DEPRECATEDIN_/) {
- $disabled_algorithms{$_} = 1;
- }
- }
- }
- elsif (/^(enable|disable|no)-(.*)$/) {
+ if (/^(enable|disable|no)-(.*)$/) {
my $alg = uc $2;
- $alg =~ tr/-/_/;
+ $alg =~ tr/-/_/;
if (exists $disabled_algorithms{$alg}) {
$disabled_algorithms{$alg} = $1 eq "enable" ? 0 : 1;
}
}
-if (!$libname) {
+if (!$libname) {
if ($do_ssl) {
$libname="LIBSSL";
}
}
&update_numbers(*OUT,"LIBCRYPTO",*crypto_list,$max_crypto,@crypto_symbols);
close OUT;
-}
+}
} elsif ($do_checkexist) {
&check_existing(*ssl_list, @ssl_symbols)
(map { "OPENSSL_SYS_".$_ => 0 } @known_ossl_platforms),
(map { "OPENSSL_NO_".$_ => 0 } @known_algorithms),
(map { "OPENSSL_USE_".$_ => 0 } @known_algorithms),
+ (grep /^DEPRECATED_/, @known_algorithms),
NOPROTO => 0,
PERL5 => 0,
_WINDLL => 0,
s/{[^{}]*}//gs; # ignore {} blocks
print STDERR "DEBUG: \$def=\"$def\"\n" if $debug && $def ne "";
print STDERR "DEBUG: \$_=\"$_\"\n" if $debug;
- if (/^\#\s*ifndef\s+(.*)/) {
+ if (/^\#\s*if\s+OPENSSL_API_COMPAT\s*(\S)\s*(0x[0-9a-fA-F]{8})L\s*$/) {
+ my $op = $1;
+ my $v = hex($2);
+ if ($op ne '<' && $op ne '>=') {
+ die "$file unacceptable operator $op: $_\n";
+ }
+ my ($one, $major, $minor) =
+ ( ($v >> 28) & 0xf,
+ ($v >> 20) & 0xff,
+ ($v >> 12) & 0xff );
+ my $t = "DEPRECATEDIN_${one}_${major}_${minor}";
+ push(@tag,"-");
+ push(@tag,$t);
+ $tag{$t}=($op eq '<' ? 1 : -1);
+ print STDERR "DEBUG: $file: found tag $t = $tag{$t}\n" if $debug;
+ } elsif (/^\#\s*ifndef\s+(.*)/) {
push(@tag,"-");
push(@tag,$1);
$tag{$1}=-1;
, grep(!/^$/,
map { $tag{"OPENSSL_USE_".$_} == 1 ? $_ : "" }
@known_algorithms);
+ push @current_algorithms,
+ grep { /^DEPRECATEDIN_/ && $tag{$_} == 1 }
+ @known_algorithms;
$def .=
"#INFO:"
.join(',',@current_platforms).":"
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
$def .= "int PEM_read_$1(void);";
$def .= "int PEM_write_$1(void);";
$def .=
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
$def .= "int PEM_write_$1(void);";
$def .=
"#INFO:"
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
$def .= "int PEM_read_$1(void);";
$def .=
"#INFO:"
.join(',',@current_platforms).":"
- .join(',',@current_algorithms).";";
+ .join(',',"STDIO",@current_algorithms).";";
# Things that are everywhere
$def .= "int PEM_read_bio_$1(void);";
next;
$platform{"PEM_write_NS_CERT_SEQ"} = "VMS";
$platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS";
$platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS";
- $platform{"EVP_sha384"} = "!VMSVAX";
- $platform{"EVP_sha512"} = "!VMSVAX";
- $platform{"SHA384_Init"} = "!VMSVAX";
- $platform{"SHA384_Transform"} = "!VMSVAX";
- $platform{"SHA384_Update"} = "!VMSVAX";
- $platform{"SHA384_Final"} = "!VMSVAX";
- $platform{"SHA384"} = "!VMSVAX";
- $platform{"SHA512_Init"} = "!VMSVAX";
- $platform{"SHA512_Transform"} = "!VMSVAX";
- $platform{"SHA512_Update"} = "!VMSVAX";
- $platform{"SHA512_Final"} = "!VMSVAX";
- $platform{"SHA512"} = "!VMSVAX";
-
# Info we know about
if ($platforms) {
# platforms
- if ($keyword eq "VMSVAX" && $VMSVAX) { return 1; }
- if ($keyword eq "VMSNonVAX" && $VMSNonVAX) { return 1; }
if ($keyword eq "VMS" && $VMS) { return 1; }
if ($keyword eq "WIN32" && $W32) { return 1; }
if ($keyword eq "_WIN32" && $W32) { return 1; }
if ($keyword eq "WINNT" && $NT) { return 1; }
# Special platforms:
# EXPORT_VAR_AS_FUNCTION means that global variables
- # will be represented as functions. This currently
- # only happens on VMS-VAX.
- if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32)) {
+ # will be represented as functions.
+ if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && $W32) {
return 1;
}
if ($keyword eq "ZLIB" && $zlib) { return 1; }
if ($cvnums ne $tvnums) {
die "Invalid version number: $testversion "
."for current version $currversion\n"
- if (substr($cvnums, -1) < substr($tvnums, -1)
- || substr($cvnums, 0, 4) ne substr($tvnums, 0, 4));
+ if (substr($cvnums, 0, 4) ne substr($tvnums, 0, 4));
return;
}
#If we get here then the base version (i.e. the numbers) are the same - they