Clarify digest change in HMAC_Init_ex()
[openssl.git] / util / mkdef.pl
index c7160036f06bc0745f3910136f4dbee2e88ab615..fa37ccb3e058c00bb2019a696df0bab7fae94891 100755 (executable)
@@ -1,11 +1,18 @@
-#!/usr/local/bin/perl -w
+#! /usr/bin/env perl
+# Copyright 1995-2016 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
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
 #
 # generate a .def file
 #
 # It does this by parsing the header files and looking for the
 # prototyped functions: it then prunes the output.
 #
-# Intermediary files are created, call libeay.num and ssleay.num,
+# Intermediary files are created, call libcrypto.num and libssl.num,
 # The format of these files is:
 #
 #      routine-name    nnnn    vers    info
@@ -44,8 +51,8 @@ use File::Spec::Functions;
 
 my $debug=0;
 
-my $crypto_num= catfile($config{sourcedir},"util","libeay.num");
-my $ssl_num=    catfile($config{sourcedir},"util","ssleay.num");
+my $crypto_num= catfile($config{sourcedir},"util","libcrypto.num");
+my $ssl_num=    catfile($config{sourcedir},"util","libssl.num");
 my $libname;
 
 my $do_update = 0;
@@ -61,13 +68,12 @@ my $VMSNonVAX=0;
 my $VMS=0;
 my $W32=0;
 my $NT=0;
-my $OS2=0;
 my $linux=0;
 # Set this to make typesafe STACK definitions appear in DEF
 my $safe_stack_def = 0;
 
 my @known_platforms = ( "__FreeBSD__", "PERL5",
-                       "EXPORT_VAR_AS_FUNCTION", "ZLIB"
+                       "EXPORT_VAR_AS_FUNCTION", "ZLIB", "_WIN32"
                        );
 my @known_ossl_platforms = ( "VMS", "WIN32", "WINNT", "OS2" );
 my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
@@ -75,7 +81,7 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
                         "SHA256", "SHA512", "RMD160",
                         "MDC2", "WHIRLPOOL", "RSA", "DSA", "DH", "EC", "EC2M",
                         "HMAC", "AES", "CAMELLIA", "SEED", "GOST",
-                         "SCRYPT", "CHACHA", "POLY1305",
+                         "SCRYPT", "CHACHA", "POLY1305", "BLAKE2",
                         # EC_NISTP_64_GCC_128
                         "EC_NISTP_64_GCC_128",
                         # Envelope "algorithms"
@@ -98,10 +104,11 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
                         "PSK", "SRP", "HEARTBEATS",
                         # CMS
                         "CMS",
+                         "OCSP",
                         # CryptoAPI Engine
                         "CAPIENG",
-                        # SSL v3 method
-                        "SSL3_METHOD",
+                        # SSL methods
+                        "SSL3_METHOD", "TLS1_METHOD", "TLS1_1_METHOD", "TLS1_2_METHOD", "DTLS1_METHOD", "DTLS1_2_METHOD",
                         # NEXTPROTONEG
                         "NEXTPROTONEG",
                         # Deprecated functions
@@ -116,8 +123,13 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
                         "SSL_TRACE",
                         # Unit testing
                         "UNIT_TEST",
+                        # User Interface
+                        "UI",
+                        #
+                        "TS",
                         # OCB mode
                         "OCB",
+                        "CMAC",
                          # APPLINK (win build feature?)
                          "APPLINK"
                      );
@@ -153,18 +165,17 @@ foreach (@ARGV, split(/ /, $config{options}))
                $linux=1;
        }
        $VMS=$VMSNonVAX=1 if $_ eq "VMS";
-       $OS2=1 if $_ eq "OS2";
        if ($_ eq "zlib" || $_ eq "enable-zlib" || $_ eq "zlib-dynamic"
                         || $_ eq "enable-zlib-dynamic") {
                $zlib = 1;
        }
 
-       $do_ssl=1 if $_ eq "ssleay";
+       $do_ssl=1 if $_ eq "libssl";
        if ($_ eq "ssl") {
                $do_ssl=1; 
                $libname=$_
        }
-       $do_crypto=1 if $_ eq "libeay";
+       $do_crypto=1 if $_ eq "libcrypto";
        if ($_ eq "crypto") {
                $do_crypto=1;
                $libname=$_;
@@ -202,19 +213,19 @@ foreach (@ARGV, split(/ /, $config{options}))
 
 if (!$libname) { 
        if ($do_ssl) {
-               $libname="SSLEAY";
+               $libname="LIBSSL";
        }
        if ($do_crypto) {
-               $libname="LIBEAY";
+               $libname="LIBCRYPTO";
        }
 }
 
 # If no platform is given, assume WIN32
-if ($W32 + $VMS + $OS2 + $linux == 0) {
+if ($W32 + $VMS + $linux == 0) {
        $W32 = 1;
 }
 die "Please, only one platform at a time"
-    if ($W32 + $VMS + $OS2 + $linux > 1);
+    if ($W32 + $VMS + $linux > 1);
 
 if (!$do_ssl && !$do_crypto)
        {
@@ -236,7 +247,7 @@ $ssl.=" include/openssl/srtp.h";
 my $crypto ="include/openssl/crypto.h";
 $crypto.=" include/internal/o_dir.h";
 $crypto.=" include/internal/o_str.h";
-$crypto.=" include/internal/threads.h";
+$crypto.=" include/internal/err.h";
 $crypto.=" include/openssl/des.h" ; # unless $no_des;
 $crypto.=" include/openssl/idea.h" ; # unless $no_idea;
 $crypto.=" include/openssl/rc4.h" ; # unless $no_rc4;
@@ -267,7 +278,7 @@ $crypto.=" include/openssl/engine.h"; # unless $no_engine;
 $crypto.=" include/openssl/stack.h" ; # unless $no_stack;
 $crypto.=" include/openssl/buffer.h" ; # unless $no_buffer;
 $crypto.=" include/openssl/bio.h" ; # unless $no_bio;
-$crypto.=" include/openssl/dso.h" ; # unless $no_dso;
+$crypto.=" include/internal/dso.h" ; # unless $no_dso;
 $crypto.=" include/openssl/lhash.h" ; # unless $no_lhash;
 $crypto.=" include/openssl/conf.h";
 $crypto.=" include/openssl/txt_db.h";
@@ -295,37 +306,38 @@ $crypto.=" include/openssl/srp.h";
 $crypto.=" include/openssl/modes.h";
 $crypto.=" include/openssl/async.h";
 $crypto.=" include/openssl/ct.h";
+$crypto.=" include/openssl/kdf.h";
 
 my $symhacks="include/openssl/symhacks.h";
 
-my @ssl_symbols = &do_defs("SSLEAY", $ssl, $symhacks);
-my @crypto_symbols = &do_defs("LIBEAY", $crypto, $symhacks);
+my @ssl_symbols = &do_defs("LIBSSL", $ssl, $symhacks);
+my @crypto_symbols = &do_defs("LIBCRYPTO", $crypto, $symhacks);
 
 if ($do_update) {
 
 if ($do_ssl == 1) {
 
-       &maybe_add_info("SSLEAY",*ssl_list,@ssl_symbols);
+       &maybe_add_info("LIBSSL",*ssl_list,@ssl_symbols);
        if ($do_rewrite == 1) {
                open(OUT, ">$ssl_num");
-               &rewrite_numbers(*OUT,"SSLEAY",*ssl_list,@ssl_symbols);
+               &rewrite_numbers(*OUT,"LIBSSL",*ssl_list,@ssl_symbols);
        } else {
                open(OUT, ">>$ssl_num");
        }
-       &update_numbers(*OUT,"SSLEAY",*ssl_list,$max_ssl,@ssl_symbols);
+       &update_numbers(*OUT,"LIBSSL",*ssl_list,$max_ssl,@ssl_symbols);
        close OUT;
 }
 
 if($do_crypto == 1) {
 
-       &maybe_add_info("LIBEAY",*crypto_list,@crypto_symbols);
+       &maybe_add_info("LIBCRYPTO",*crypto_list,@crypto_symbols);
        if ($do_rewrite == 1) {
                open(OUT, ">$crypto_num");
-               &rewrite_numbers(*OUT,"LIBEAY",*crypto_list,@crypto_symbols);
+               &rewrite_numbers(*OUT,"LIBCRYPTO",*crypto_list,@crypto_symbols);
        } else {
                open(OUT, ">>$crypto_num");
        }
-       &update_numbers(*OUT,"LIBEAY",*crypto_list,$max_crypto,@crypto_symbols);
+       &update_numbers(*OUT,"LIBCRYPTO",*crypto_list,$max_crypto,@crypto_symbols);
        close OUT;
 } 
 
@@ -345,10 +357,10 @@ if($do_crypto == 1) {
 int main()
 {
 EOF
-       &print_test_file(*STDOUT,"SSLEAY",*ssl_list,$do_ctestall,@ssl_symbols)
+       &print_test_file(*STDOUT,"LIBSSL",*ssl_list,$do_ctestall,@ssl_symbols)
                if $do_ssl == 1;
 
-       &print_test_file(*STDOUT,"LIBEAY",*crypto_list,$do_ctestall,@crypto_symbols)
+       &print_test_file(*STDOUT,"LIBCRYPTO",*crypto_list,$do_ctestall,@crypto_symbols)
                if $do_crypto == 1;
 
        print "}\n";
@@ -1109,8 +1121,8 @@ sub is_valid
                        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; }
-                       if ($keyword eq "OS2" && $OS2) { return 1; }
                        # Special platforms:
                        # EXPORT_VAR_AS_FUNCTION means that global variables
                        # will be represented as functions.  This currently
@@ -1199,22 +1211,8 @@ sub print_def_file
 
        if ($W32)
                { $libname.="32"; }
-       elsif ($OS2)
-               { # DLL names should not clash on the whole system.
-                 # However, they should not have any particular relationship
-                 # to the name of the static library.  Chose descriptive names
-                 # (must be at most 8 chars).
-                 my %translate = (ssl => 'open_ssl', crypto => 'cryptssl');
-                 $libname = $translate{$name} || $name;
-                 $liboptions = <<EOO;
-INITINSTANCE
-DATA MULTIPLE NONSHARED
-EOO
-                 # Vendor field can't contain colon, drat; so we omit http://
-                 $description = "\@#$http_vendor:$version#\@$what; DLL for library $name.  Build for EMX -Zmtd";
-               }
 
-        if ($W32 || $OS2)
+        if ($W32)
                 {
                 print OUT <<"EOF";
 ;
@@ -1326,12 +1324,12 @@ EOF
                                             }
                                             print OUT $symline;
                                             $symvtextcount += length($symline) - 2;
-                                       } elsif($v && !$OS2) {
-                                               printf OUT "    %s%-39s @%-8d DATA\n",
-                                                               ($W32)?"":"_",$s2,$n;
+                                       } elsif($v) {
+                                               printf OUT "    %s%-39s DATA\n",
+                                                               ($W32)?"":"_",$s2;
                                        } else {
-                                               printf OUT "    %s%-39s @%d\n",
-                                                               ($W32||$OS2)?"":"_",$s2,$n;
+                                               printf OUT "    %s%s\n",
+                                                               ($W32)?"":"_",$s2;
                                        }
                                }
                        }