diff options
Diffstat (limited to 'openssl-1.1.0h/util')
40 files changed, 14475 insertions, 0 deletions
diff --git a/openssl-1.1.0h/util/build.info b/openssl-1.1.0h/util/build.info new file mode 100644 index 0000000..609be51 --- /dev/null +++ b/openssl-1.1.0h/util/build.info @@ -0,0 +1,8 @@ +IF[{- $target{build_scheme}->[1] eq "VMS" -}] + SCRIPTS_NO_INST=local_shlib.com unlocal_shlib.com + SOURCE[local_shlib.com]=local_shlib.com.in + SOURCE[unlocal_shlib.com]=unlocal_shlib.com.in +ELSIF[{- $target{build_scheme}->[1] eq "unix" -}] + SCRIPTS_NO_INST=shlib_wrap.sh + SOURCE[shlib_wrap.sh]=shlib_wrap.sh.in +ENDIF diff --git a/openssl-1.1.0h/util/ck_errf.pl b/openssl-1.1.0h/util/ck_errf.pl new file mode 100755 index 0000000..7fc5367 --- /dev/null +++ b/openssl-1.1.0h/util/ck_errf.pl @@ -0,0 +1,70 @@ +#! /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 + +# This is just a quick script to scan for cases where the 'error' +# function name in a XXXerr() macro is wrong. +#  +# Run in the top level by going +# perl util/ck_errf.pl */*.c */*/*.c +# + +my $err_strict = 0; +my $bad = 0; + +foreach $file (@ARGV) +	{ +	if ($file eq "-strict") +		{ +		$err_strict = 1; +		next; +		} +	open(IN,"<$file") || die "unable to open $file\n"; +	$func=""; +	while (<IN>) +		{ +		if (!/;$/ && /^\**([a-zA-Z_].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/) +			{ +			/^([^()]*(\([^()]*\)[^()]*)*)\(/; +			$1 =~ /([A-Za-z_0-9]*)$/; +			$func = $1; +			$func =~ tr/A-Z/a-z/; +			} +		if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/) +			{ +			$errlib=$1; +			$n=$2; + +			if ($func eq "") +				{ print "$file:$.:???:$n\n"; $bad = 1; next; } + +			if ($n !~ /([^_]+)_F_(.+)$/) +				{ +		#		print "check -$file:$.:$func:$n\n"; +				next; +				} +			$lib=$1; +			$n=$2; + +			if ($lib ne $errlib) +				{ print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; } + +			$n =~ tr/A-Z/a-z/; +			if (($n ne $func) && ($errlib ne "SYS")) +				{ print "$file:$.:$func:$n\n"; $bad = 1; next; } +	#		print "$func:$1\n"; +			} +		} +	close(IN); +        } + +if ($bad && $err_strict) +	{ +	print STDERR "FATAL: error discrepancy\n"; +	exit 1; +	} + diff --git a/openssl-1.1.0h/util/copy.pl b/openssl-1.1.0h/util/copy.pl new file mode 100644 index 0000000..01964f5 --- /dev/null +++ b/openssl-1.1.0h/util/copy.pl @@ -0,0 +1,78 @@ +#! /usr/bin/env perl +# Copyright 2005-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 + + +use Fcntl; + + +# copy.pl + +# Perl script 'copy' comment. On Windows the built in "copy" command also +# copies timestamps: this messes up Makefile dependencies. + +my $stripcr = 0; + +my $arg; + +foreach $arg (@ARGV) { +	if ($arg eq "-stripcr") +		{ +		$stripcr = 1; +		next; +		} +	$arg =~ s|\\|/|g;	# compensate for bug/feature in cygwin glob... +	$arg = qq("$arg") if ($arg =~ /\s/);	# compensate for bug in 5.10... +	foreach (glob $arg) +		{ +		push @filelist, $_; +		} +} + +$fnum = @filelist; + +if ($fnum <= 1) +	{ +	die "Need at least two filenames"; +	} + +$dest = pop @filelist; +	 +if ($fnum > 2 && ! -d $dest) +	{ +	die "Destination must be a directory"; +	} + +foreach (@filelist) +	{ +	if (-d $dest) +		{ +		$dfile = $_; +		$dfile =~ s|^.*[/\\]([^/\\]*)$|$1|; +		$dfile = "$dest/$dfile"; +		} +	else +		{ +		$dfile = $dest; +		} +	sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_"; +	sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY) +					|| die "Can't Open $dfile"; +	while (sysread IN, $buf, 10240) +		{ +		if ($stripcr) +			{ +			$buf =~ tr/\015//d; +			} +		syswrite(OUT, $buf, length($buf)); +		} +	close(IN); +	close(OUT); +	print "Copying: $_ to $dfile\n"; +	} +		 + diff --git a/openssl-1.1.0h/util/dofile.pl b/openssl-1.1.0h/util/dofile.pl new file mode 100644 index 0000000..fc72989 --- /dev/null +++ b/openssl-1.1.0h/util/dofile.pl @@ -0,0 +1,210 @@ +#! /usr/bin/env perl +# Copyright 2016-2018 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 + +# Reads one or more template files and runs it through Text::Template +# +# It is assumed that this scripts is called with -Mconfigdata, a module +# that holds configuration data in %config + +use strict; +use warnings; + +use FindBin; +use Getopt::Std; + +# We actually expect to get the following hash tables from configdata: +# +#    %config +#    %target +#    %withargs +#    %unified_info +# +# We just do a minimal test to see that we got what we expected. +# $config{target} must exist as an absolute minimum. +die "You must run this script with -Mconfigdata\n" if !exists($config{target}); + +# Make a subclass of Text::Template to override append_text_to_result, +# as recommended here: +# +# http://search.cpan.org/~mjd/Text-Template-1.46/lib/Text/Template.pm#Automatic_postprocessing_of_template_hunks + +package OpenSSL::Template; + +# Because we know that Text::Template isn't a core Perl module, we use +# a fallback in case it's not installed on the system +use File::Basename; +use File::Spec::Functions; +use lib "$FindBin::Bin/perl"; +use with_fallback qw(Text::Template); + +#use parent qw/Text::Template/; +use vars qw/@ISA/; +push @ISA, qw/Text::Template/; + +# Override constructor +sub new { +    my ($class) = shift; + +    # Call the constructor of the parent class, Person. +    my $self = $class->SUPER::new( @_ ); +    # Add few more attributes +    $self->{_output_off}   = 0;	# Default to output hunks +    bless $self, $class; +    return $self; +} + +sub append_text_to_output { +    my $self = shift; + +    if ($self->{_output_off} == 0) { +	$self->SUPER::append_text_to_output(@_); +    } + +    return; +} + +sub output_reset_on { +    my $self = shift; +    $self->{_output_off} = 0; +} + +sub output_on { +    my $self = shift; +    if (--$self->{_output_off} < 0) { +	$self->{_output_off} = 0; +    } +} + +sub output_off { +    my $self = shift; +    $self->{_output_off}++; +} + +# Come back to main + +package main; + +# Helper functions for the templates ################################# + +# It might be practical to quotify some strings and have them protected +# from possible harm.  These functions primarly quote things that might +# be interpreted wrongly by a perl eval. + +# quotify1 STRING +# This adds quotes (") around the given string, and escapes any $, @, \, +# " and ' by prepending a \ to them. +sub quotify1 { +    my $s = my $orig = shift @_; +    $s =~ s/([\$\@\\"'])/\\$1/g; +    $s ne $orig || $s =~ /\s/ ? '"'.$s.'"' : $s; +} + +# quotify_l LIST +# For each defined element in LIST (i.e. elements that aren't undef), have +# it quotified with 'quotofy1' +sub quotify_l { +    map { +        if (!defined($_)) { +            (); +        } else { +            quotify1($_); +        } +    } @_; +} + +# Error reporter ##################################################### + +# The error reporter uses %lines to figure out exactly which file the +# error happened and at what line.  Not that the line number may be +# the start of a perl snippet rather than the exact line where it +# happened.  Nothing we can do about that here. + +my %lines = (); +sub broken { +    my %args = @_; +    my $filename = "<STDIN>"; +    my $deducelines = 0; +    foreach (sort keys %lines) { +        $filename = $lines{$_}; +        last if ($_ > $args{lineno}); +        $deducelines += $_; +    } +    print STDERR $args{error}," in $filename, fragment starting at line ",$args{lineno}-$deducelines; +    undef; +} + +# Check options ###################################################### + +my %opts = (); + +# -o ORIGINATOR +#		declares ORIGINATOR as the originating script. +getopt('o', \%opts); + +my @autowarntext = ("WARNING: do not edit!", +		    "Generated" +		    . (defined($opts{o}) ? " by ".$opts{o} : "") +		    . (scalar(@ARGV) > 0 ? " from ".join(", ",@ARGV) : "")); + +# Template reading ################################################### + +# Read in all the templates into $text, while keeping track of each +# file and its size in lines, to try to help report errors with the +# correct file name and line number. + +my $prev_linecount = 0; +my $text = +    @ARGV +    ? join("", map { my $x = Text::Template::_load_text($_); +                     if (!defined($x)) { +                         die $Text::Template::ERROR, "\n"; +                     } +                     $x = "{- output_reset_on() -}" . $x; +                     my $linecount = $x =~ tr/\n//; +                     $prev_linecount = ($linecount += $prev_linecount); +                     $lines{$linecount} = $_; +                     $x } @ARGV) +    : join("", <STDIN>); + +# Engage! ############################################################ + +# Load the full template (combination of files) into Text::Template +# and fill it up with our data.  Output goes directly to STDOUT + +my $template = +    OpenSSL::Template->new(TYPE => 'STRING', +                           SOURCE => $text, +                           PREPEND => qq{use lib "$FindBin::Bin/perl";}); + +sub output_reset_on { +    $template->output_reset_on(); +    ""; +} +sub output_on { +    $template->output_on(); +    ""; +} +sub output_off { +    $template->output_off(); +    ""; +} + +$template->fill_in(OUTPUT => \*STDOUT, +                   HASH => { config => \%config, +                             target => \%target, +                             disabled => \%disabled, +                             withargs => \%withargs, +                             unified_info => \%unified_info, +                             autowarntext => \@autowarntext, +                             quotify1 => \"ify1, +                             quotify_l => \"ify_l, +                             output_reset_on => \&output_reset_on, +                             output_on => \&output_on, +                             output_off => \&output_off }, +                   DELIMITERS => [ "{-", "-}" ], +                   BROKEN => \&broken); diff --git a/openssl-1.1.0h/util/find-doc-nits b/openssl-1.1.0h/util/find-doc-nits new file mode 100755 index 0000000..598854c --- /dev/null +++ b/openssl-1.1.0h/util/find-doc-nits @@ -0,0 +1,549 @@ +#! /usr/bin/env perl +# Copyright 2002-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 + + +require 5.10.0; +use warnings; +use strict; +use Pod::Checker; +use File::Find; +use File::Basename; +use File::Spec::Functions; +use Getopt::Std; +use lib catdir(dirname($0), "perl"); +use OpenSSL::Util::Pod; + +# Options. +our($opt_d); +our($opt_h); +our($opt_l); +our($opt_n); +our($opt_p); +our($opt_s); +our($opt_u); +our($opt_c); + +sub help() +{ +    print <<EOF; +Find small errors (nits) in documentation.  Options: +    -d Detailed list of undocumented (implies -u) +    -l Print bogus links +    -n Print nits in POD pages +    -s Also print missing sections in POD pages (implies -n) +    -p Warn if non-public name documented (implies -n) +    -u List undocumented functions +    -h Print this help message +    -c List undocumented commands and options +EOF +    exit; +} + +my $temp = '/tmp/docnits.txt'; +my $OUT; +my %public; + +my %mandatory_sections = +    ( '*'    => [ 'NAME', 'DESCRIPTION', 'COPYRIGHT' ], +      1      => [ 'SYNOPSIS', 'OPTIONS' ], +      3      => [ 'SYNOPSIS', 'RETURN VALUES' ], +      5      => [ ], +      7      => [ ] ); + +# Cross-check functions in the NAME and SYNOPSIS section. +sub name_synopsis() +{ +    my $id = shift; +    my $filename = shift; +    my $contents = shift; + +    # Get NAME section and all words in it. +    return unless $contents =~ /=head1 NAME(.*)=head1 SYNOPSIS/ms; +    my $tmp = $1; +    $tmp =~ tr/\n/ /; +    print "$id trailing comma before - in NAME\n" if $tmp =~ /, *-/; +    $tmp =~ s/ -.*//g; +    $tmp =~ s/  */ /g; +    print "$id missing comma in NAME\n" if $tmp =~ /[^,] /; +    $tmp =~ s/,//g; + +    my $dirname = dirname($filename); +    my $simplename = basename($filename); +    $simplename =~ s/.pod$//; +    my $foundfilename = 0; +    my %foundfilenames = (); +    my %names; +    foreach my $n ( split ' ', $tmp ) { +        $names{$n} = 1; +        $foundfilename++ if $n eq $simplename; +        $foundfilenames{$n} = 1 +            if -f "$dirname/$n.pod" && $n ne $simplename; +    } +    print "$id the following exist as other .pod files:\n", +        join(" ", sort keys %foundfilenames), "\n" +        if %foundfilenames; +    print "$id $simplename (filename) missing from NAME section\n" +        unless $foundfilename; +    foreach my $n ( keys %names ) { +        print "$id $n is not public\n" +            if $opt_p and !defined $public{$n}; +    } + +    # Find all functions in SYNOPSIS +    return unless $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms; +    my $syn = $1; +    foreach my $line ( split /\n+/, $syn ) { +        my $sym; +        $line =~ s/STACK_OF\([^)]+\)/int/g; +        $line =~ s/__declspec\([^)]+\)//; +        if ( $line =~ /env (\S*)=/ ) { +            # environment variable env NAME=... +            $sym = $1; +        } elsif ( $line =~ /typedef.*\(\*(\S+)\)\(.*/ ) { +            # a callback function pointer: typedef ... (*NAME)(... +            $sym = $1; +        } elsif ( $line =~ /typedef.* (\S+)\(.*/ ) { +            # a callback function signature: typedef ... NAME(... +            $sym = $1; +        } elsif ( $line =~ /typedef.* (\S+);/ ) { +            # a simple typedef: typedef ... NAME; +            $sym = $1; +        } elsif ( $line =~ /enum (\S*) \{/ ) { +            # an enumeration: enum ... { +            $sym = $1; +        } elsif ( $line =~ /#define ([A-Za-z0-9_]+)/ ) { +            $sym = $1; +        } elsif ( $line =~ /([A-Za-z0-9_]+)\(/ ) { +            $sym = $1; +        } +        else { +            next; +        } +        print "$id $sym missing from NAME section\n" +            unless defined $names{$sym}; +        $names{$sym} = 2; + +        # Do some sanity checks on the prototype. +        print "$id prototype missing spaces around commas: $line\n" +            if ( $line =~ /[a-z0-9],[^ ]/ ); +    } + +    foreach my $n ( keys %names ) { +        next if $names{$n} == 2; +        print "$id $n missing from SYNOPSIS\n"; +    } +} + +sub check() +{ +    my $filename = shift; +    my $dirname = basename(dirname($filename)); + +    my $contents = ''; +    { +        local $/ = undef; +        open POD, $filename or die "Couldn't open $filename, $!"; +        $contents = <POD>; +        close POD; +    } + +    my $id = "${filename}:1:"; + +    # Find what section this page is in; assume 3. +    my $section = 3; +    $section = 1 if $dirname eq 'apps'; +    $section = $1 if ( $contents =~ /=for comment openssl_manual_section:(\d)/); + +    &name_synopsis($id, $filename, $contents) +        unless $contents =~ /=for comment generic/ +            or $section != 3; + +    print "$id doesn't start with =pod\n" +        if $contents !~ /^=pod/; +    print "$id doesn't end with =cut\n" +        if $contents !~ /=cut\n$/; +    print "$id more than one cut line.\n" +        if $contents =~ /=cut.*=cut/ms; +    print "$id missing copyright\n" +        if $contents !~ /Copyright .* The OpenSSL Project Authors/; +    print "$id copyright not last\n" +        if $contents =~ /head1 COPYRIGHT.*=head/ms; +    print "$id head2 in All uppercase\n" +        if $contents =~ /head2\s+[A-Z ]+\n/; +    print "$id extra space after head\n" +        if $contents =~ /=head\d\s\s+/; +    print "$id period in NAME section\n" +        if $contents =~ /=head1 NAME.*\.\n.*=head1 SYNOPSIS/ms; +    print "$id POD markup in NAME section\n" +        if $contents =~ /=head1 NAME.*[<>].*=head1 SYNOPSIS/ms; +    print "$id Duplicate $1 in L<>\n" +        if $contents =~ /L<([^>]*)\|([^>]*)>/ && $1 eq $2; +    print "$id Bad =over $1\n" +        if $contents =~ /=over([^ ][^24])/; +    print "$id Possible version style issue\n" +        if $contents =~ /OpenSSL version [019]/; + +    if ( $contents !~ /=for comment multiple includes/ ) { +        # Look for multiple consecutive openssl #include lines +        # (non-consecutive lines are okay; see crypto/MD5.pod). +        if ( $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms ) { +            my $count = 0; +            foreach my $line ( split /\n+/, $1 ) { +                if ( $line =~ m@include <openssl/@ ) { +                    print "$id has multiple includes\n" if ++$count == 2; +                } else { +                    $count = 0; +                } +            } +        } +    } + +    open my $OUT, '>', $temp +        or die "Can't open $temp, $!"; +    podchecker($filename, $OUT); +    close $OUT; +    open $OUT, '<', $temp +        or die "Can't read $temp, $!"; +    while ( <$OUT> ) { +        next if /\(section\) in.*deprecated/; +        print; +    } +    close $OUT; +    unlink $temp || warn "Can't remove $temp, $!"; + +    foreach ((@{$mandatory_sections{'*'}}, @{$mandatory_sections{$section}})) { +        # Skip "return values" if not -s +        next if $_ eq 'RETURN VALUES' and not $opt_s; +        print "$id: missing $_ head1 section\n" +            if $contents !~ /^=head1\s+${_}\s*$/m; +    } +} + +my %dups; + +sub parsenum() +{ +    my $file = shift; +    my @apis; + +    open my $IN, '<', $file +        or die "Can't open $file, $!, stopped"; + +    while ( <$IN> ) { +        next if /^#/; +        next if /\bNOEXIST\b/; +        next if /\bEXPORT_VAR_AS_FUNC\b/; +        my @fields = split(); +        die "Malformed line $_" +            if scalar @fields != 2 && scalar @fields != 4; +        push @apis, $fields[0]; +    } + +    close $IN; + +    print "# Found ", scalar(@apis), " in $file\n" unless $opt_p; +    return sort @apis; +} + +sub getdocced() +{ +    my $dir = shift; +    my %return; + +    foreach my $pod ( glob("$dir/*.pod") ) { +        my %podinfo = extract_pod_info($pod); +        foreach my $n ( @{$podinfo{names}} ) { +            $return{$n} = $pod; +            print "# Duplicate $n in $pod and $dups{$n}\n" +                if defined $dups{$n} && $dups{$n} ne $pod; +            $dups{$n} = $pod; +        } +    } + +    return %return; +} + +my %docced; + +sub checkmacros() +{ +    my $count = 0; + +    print "# Checking macros (approximate)\n"; +    foreach my $f ( glob('include/openssl/*.h') ) { +        # Skip some internals we don't want to document yet. +        next if $f eq 'include/openssl/asn1.h'; +        next if $f eq 'include/openssl/asn1t.h'; +        next if $f eq 'include/openssl/err.h'; +        open(IN, $f) || die "Can't open $f, $!"; +        while ( <IN> ) { +            next unless /^#\s*define\s*(\S+)\(/; +            my $macro = $1; +            next if $docced{$macro}; +            next if $macro =~ /i2d_/ +                || $macro =~ /d2i_/ +                || $macro =~ /DEPRECATEDIN/ +                || $macro =~ /IMPLEMENT_/ +                || $macro =~ /DECLARE_/; +            print "$f:$macro\n" if $opt_d; +            $count++; +        } +        close(IN); +    } +    print "# Found $count macros missing (not all should be documented)\n" +} + +sub printem() +{ +    my $libname = shift; +    my $numfile = shift; +    my $count = 0; + +    foreach my $func ( &parsenum($numfile) ) { +        next if $docced{$func}; + +        # Skip ASN1 utilities +        next if $func =~ /^ASN1_/; + +        print "$libname:$func\n" if $opt_d; +        $count++; +    } +    print "# Found $count missing from $numfile\n\n"; +} + + +# Collection of links in each POD file. +# filename => [ "foo(1)", "bar(3)", ... ] +my %link_collection = (); +# Collection of names in each POD file. +# "name(s)" => filename +my %name_collection = (); + +sub collectnames { +    my $filename = shift; +    $filename =~ m|man(\d)/|; +    my $section = $1; +    my $simplename = basename($filename, ".pod"); +    my $id = "${filename}:1:"; + +    my $contents = ''; +    { +        local $/ = undef; +        open POD, $filename or die "Couldn't open $filename, $!"; +        $contents = <POD>; +        close POD; +    } + +    $contents =~ /=head1 NAME([^=]*)=head1 /ms; +    my $tmp = $1; +    unless (defined $tmp) { +        print "$id weird name section\n"; +        return; +    } +    $tmp =~ tr/\n/ /; +    $tmp =~ s/-.*//g; + +    my @names = map { s/\s+//g; $_ } split(/,/, $tmp); +    unless (grep { $simplename eq $_ } @names) { +        print "$id missing $simplename\n"; +        push @names, $simplename; +    } +    foreach my $name (@names) { +        next if $name eq ""; +        my $name_sec = "$name($section)"; +        if (! exists $name_collection{$name_sec}) { +            $name_collection{$name_sec} = $filename; +        } else { #elsif ($filename ne $name_collection{$name_sec}) { +            print "$id $name_sec also in $name_collection{$name_sec}\n"; +        } +    } + +    my @foreign_names = +        map { map { s/\s+//g; $_ } split(/,/, $_) } +        $contents =~ /=for\s+comment\s+foreign\s+manuals:\s*(.*)\n\n/; +    foreach (@foreign_names) { +        $name_collection{$_} = undef; # It still exists! +    } + +    my @links = $contents =~ /L< +                              # if the link is of the form L<something|name(s)>, +                              # then remove 'something'.  Note that 'something' +                              # may contain POD codes as well... +                              (?:(?:[^\|]|<[^>]*>)*\|)? +                              # we're only interested in referenses that have +                              # a one digit section number +                              ([^\/>\(]+\(\d\)) +                             /gx; +    $link_collection{$filename} = [ @links ]; +} + +sub checklinks { +    foreach my $filename (sort keys %link_collection) { +        foreach my $link (@{$link_collection{$filename}}) { +            print "${filename}:1: reference to non-existing $link\n" +                unless exists $name_collection{$link}; +        } +    } +} + +sub publicize() { +    foreach my $name ( &parsenum('util/libcrypto.num') ) { +        $public{$name} = 1; +    } +    foreach my $name ( &parsenum('util/libssl.num') ) { +        $public{$name} = 1; +    } +    foreach my $name ( &parsenum('util/private.num') ) { +        $public{$name} = 1; +    } +} + +my %skips = ( +    'aes128' => 1, +    'aes192' => 1, +    'aes256' => 1, +    'aria128' => 1, +    'aria192' => 1, +    'aria256' => 1, +    'camellia128' => 1, +    'camellia192' => 1, +    'camellia256' => 1, +    'des' => 1, +    'des3' => 1, +    'idea' => 1, +    '[cipher]' => 1, +    '[digest]' => 1, +); + +sub checkflags() { +    my $cmd = shift; +    my %cmdopts; +    my %docopts; +    my $ok = 1; + +    # Get the list of options in the command. +    open CFH, "./apps/openssl list --options $cmd|" +        || die "Can list options for $cmd, $!"; +    while ( <CFH> ) { +        chop; +        s/ .$//; +        $cmdopts{$_} = 1; +    } +    close CFH; + +    # Get the list of flags from the synopsis +    open CFH, "<doc/apps/$cmd.pod" +        || die "Can't open $cmd.pod, $!"; +    while ( <CFH> ) { +        chop; +        last if /DESCRIPTION/; +        next unless /\[B<-([^ >]+)/; +        $docopts{$1} = 1; +    } +    close CFH; + +    # See what's in the command not the manpage. +    my @undocced = (); +    foreach my $k ( keys %cmdopts ) { +        push @undocced, $k unless $docopts{$k}; +    } +    if ( scalar @undocced > 0 ) { +        $ok = 0; +        foreach ( @undocced ) { +            print "doc/apps/$cmd.pod: Missing -$_\n"; +        } +    } + +    # See what's in the command not the manpage. +    my @unimpl = (); +    foreach my $k ( keys %docopts ) { +        push @unimpl, $k unless $cmdopts{$k}; +    } +    if ( scalar @unimpl > 0 ) { +        $ok = 0; +        foreach ( @unimpl ) { +            next if defined $skips{$_}; +            print "doc/apps/$cmd.pod: Not implemented -$_\n"; +        } +    } + +    return $ok; +} + +getopts('cdlnsphu'); + +&help() if $opt_h; +$opt_n = 1 if $opt_s or $opt_p; +$opt_u = 1 if $opt_d; + +die "Need one of -[cdlnspu] flags.\n" +    unless $opt_c or $opt_l or $opt_n or $opt_u; + +if ( $opt_c ) { +    my $ok = 1; +    my @commands = (); + +    # Get list of commands. +    open FH, "./apps/openssl list -1 -commands|" +        || die "Can't list commands, $!"; +    while ( <FH> ) { +        chop; +        push @commands, $_; +    } +    close FH; + +    # See if each has a manpage. +    foreach ( @commands ) { +        next if $_ eq 'help' || $_ eq 'exit'; +        if ( ! -f "doc/apps/$_.pod" ) { +            print "doc/apps/$_.pod does not exist\n"; +            $ok = 0; +        } else { +            $ok = 0 if not &checkflags($_); +        } +    } + +    # See what help is missing. +    open FH, "./apps/openssl list --missing-help |" +        || die "Can't list missing help, $!"; +    while ( <FH> ) { +        chop; +        my ($cmd, $flag) = split; +        print "$cmd has no help for -$flag\n"; +        $ok = 0; +    } +    close FH; + +    exit 1 if not $ok; +} + +if ( $opt_l ) { +    foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { +        collectnames($_); +    } +    checklinks(); +} + +if ( $opt_n ) { +    &publicize() if $opt_p; +    foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { +        &check($_); +    } +} + +if ( $opt_u ) { +    my %temp = &getdocced('doc/crypto'); +    foreach ( keys %temp ) { +        $docced{$_} = $temp{$_}; +    } +    &printem('crypto', 'util/libcrypto.num'); +    &printem('ssl', 'util/libssl.num'); +    &checkmacros(); +} + +exit; diff --git a/openssl-1.1.0h/util/find-undoc-api.pl b/openssl-1.1.0h/util/find-undoc-api.pl new file mode 100755 index 0000000..7b2cb97 --- /dev/null +++ b/openssl-1.1.0h/util/find-undoc-api.pl @@ -0,0 +1,82 @@ +#! /usr/bin/env perl +# Copyright 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 + +use strict; +use warnings; + +use File::Spec::Functions; +use File::Basename; +#use File::Copy; +#use File::Path; +use lib catdir(dirname($0), "perl"); +use OpenSSL::Util::Pod; + +my %dups; + +sub parsenum() +{ +    my $file = shift; +    my @apis; + +    open my $IN, '<', $file +        or die "Can't open $file, $!, stopped"; + +    while ( <$IN> ) { +        next if /\sNOEXIST/; +        next if /EXPORT_VAR_AS_FUNC/; +        push @apis, $1 if /([^\s]+).\s/; +    } + +    close $IN; + +    print "# Found ", scalar(@apis), " in $file\n"; +    return sort @apis; +} + +sub getdocced() +{ +    my $dir = shift; +    my %return; + +    foreach my $pod ( glob("$dir/*.pod") ) { +        next if $pod eq 'doc/crypto/crypto.pod'; +        next if $pod eq 'doc/ssl/ssl.pod'; +        my %podinfo = extract_pod_info($pod); +        foreach my $n ( @{$podinfo{names}} ) { +            $return{$n} = $pod; +            print "# Duplicate $n in $pod and $dups{$n}\n" +                if defined $dups{$n}; +            $dups{$n} = $pod; +        } +    } + +    return %return; +} + +sub printem() +{ +    my $docdir = shift; +    my $numfile = shift; +    my %docced = &getdocced($docdir); +    my $count = 0; + +    foreach my $func ( &parsenum($numfile) ) { +        next if $docced{$func}; + +        # Skip ASN1 utilities +        next if $func =~ /^ASN1_/; + +        print $func, "\n"; +        $count++; +    } +    print "# Found $count missing from $numfile\n\n"; +} + + +&printem('doc/crypto', 'util/libcrypto.num'); +&printem('doc/ssl', 'util/libssl.num'); diff --git a/openssl-1.1.0h/util/find-unused-errs b/openssl-1.1.0h/util/find-unused-errs new file mode 100755 index 0000000..68cf66b --- /dev/null +++ b/openssl-1.1.0h/util/find-unused-errs @@ -0,0 +1,35 @@ +#! /bin/bash +# Copyright 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 + +# Find unused error function-names and reason-codes, and edit them +# out of the source.  Doesn't handle line-wrapping, might have to do +# some manual cleanups to fix compile errors. + +export X1=/tmp/f.1.$$ +export X2=/tmp/f.2.$$ + +cd include/openssl || exit 1 +grep '_[RF]_' * | awk '{print $3;}' | sort -u >$X1 +cd ../.. + +for F in `cat $X1` ; do +    git grep -l --full-name -F $F >$X2 +    NUM=`wc -l <$X2` +    test $NUM -gt 2 && continue +    if grep -q $F crypto/err/openssl.ec ; then +        echo Possibly unused $F found in openssl.ec +        continue +    fi +    echo $F +    for FILE in `cat $X2` ; do +        grep -v -w $F <$FILE >$FILE.new +        mv $FILE.new $FILE +    done +done + +rm $X1 $X2 diff --git a/openssl-1.1.0h/util/fipslink.pl b/openssl-1.1.0h/util/fipslink.pl new file mode 100644 index 0000000..18a9153 --- /dev/null +++ b/openssl-1.1.0h/util/fipslink.pl @@ -0,0 +1,115 @@ +#! /usr/bin/env perl +# Copyright 2011-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 + +sub check_env +	{ +	my @ret; +	foreach (@_) +		{ +		die "Environment variable $_ not defined!\n" unless exists $ENV{$_}; +		push @ret, $ENV{$_}; +		} +	return @ret; +	} + + +my ($fips_cc,$fips_cc_args, $fips_link,$fips_target, $fips_libdir, $sha1_exe) +	 = check_env("FIPS_CC", "FIPS_CC_ARGS", "FIPS_LINK", "FIPS_TARGET", +	 	"FIPSLIB_D", "FIPS_SHA1_EXE"); + + + +if (exists $ENV{"PREMAIN_DSO_EXE"}) +	{ +	$fips_premain_dso = $ENV{"PREMAIN_DSO_EXE"}; +	} +	else +	{ +	$fips_premain_dso = ""; +	} + +check_hash($sha1_exe, "fips_premain.c"); +check_hash($sha1_exe, "fipscanister.lib"); + + +print "Integrity check OK\n"; + +if (is_premain_linked(@ARGV)) { +	print "$fips_cc $fips_cc_args $fips_libdir/fips_premain.c\n"; +	system "$fips_cc $fips_cc_args $fips_libdir/fips_premain.c"; +	die "First stage Compile failure" if $? != 0; +} elsif (!defined($ENV{FIPS_SIG})) { +	die "no fips_premain.obj linked"; +} + +print "$fips_link @ARGV\n"; +system "$fips_link @ARGV"; +die "First stage Link failure" if $? != 0; + +if (defined($ENV{FIPS_SIG})) { +	print "$ENV{FIPS_SIG} $fips_target\n"; +	system "$ENV{FIPS_SIG} $fips_target"; +	die "$ENV{FIPS_SIG} $fips_target failed" if $? != 0; +	exit; +} + +print "$fips_premain_dso $fips_target\n"; +system("$fips_premain_dso $fips_target >$fips_target.sha1"); +die "Get hash failure" if $? != 0; +open my $sha1_res, '<', $fips_target.".sha1" or die "Get hash failure"; +$fips_hash=<$sha1_res>; +close $sha1_res; +unlink $fips_target.".sha1"; +$fips_hash =~ s|\R$||;          # Better chomp +die "Get hash failure" if $? != 0; + + +print "$fips_cc -DHMAC_SHA1_SIG=\\\"$fips_hash\\\" $fips_cc_args $fips_libdir/fips_premain.c\n"; +system "$fips_cc -DHMAC_SHA1_SIG=\\\"$fips_hash\\\" $fips_cc_args $fips_libdir/fips_premain.c"; +die "Second stage Compile failure" if $? != 0; + + +print "$fips_link @ARGV\n"; +system "$fips_link @ARGV"; +die "Second stage Link failure" if $? != 0; + +sub is_premain_linked +	{ +	return 1 if (grep /fips_premain\.obj/,@_); +	foreach (@_) +		{ +		if (/^@(.*)/ && -f $1) +			{ +			open FD,$1 or die "can't open $1"; +			my $ret = (grep /fips_premain\.obj/,<FD>)?1:0; +			close FD; +			return $ret; +			} +		} +	return 0; +	} + +sub check_hash +	{ +	my ($sha1_exe, $filename) = @_; +	my ($hashfile, $hashval); + +	open(IN, "${fips_libdir}/${filename}.sha1") || die "Cannot open file hash file ${fips_libdir}/${filename}.sha1"; +	$hashfile = <IN>; +	close IN; +	$hashval = `$sha1_exe ${fips_libdir}/$filename`; +	$hashfile =~ s|\R$||;    # Better chomp +	$hashval =~ s|\R$||;     # Better chomp +	$hashfile =~ s/^.*=\s+//; +	$hashval =~ s/^.*=\s+//; +	die "Invalid hash syntax in file" if (length($hashfile) != 40); +	die "Invalid hash received for file" if (length($hashval) != 40); +	die "***HASH VALUE MISMATCH FOR FILE $filename ***" if ($hashval ne $hashfile);  +	} + + diff --git a/openssl-1.1.0h/util/incore b/openssl-1.1.0h/util/incore new file mode 100755 index 0000000..26fcf95 --- /dev/null +++ b/openssl-1.1.0h/util/incore @@ -0,0 +1,454 @@ +#! /usr/bin/env perl +# Copyright 2011-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 + +# The script embeds fingerprint into ELF executable object, either +# application binary or shared library. + +###################################################################### +# +# ELF symbol table parser by <appro@openssl.org>. The table entries +# are extended with offset within executable file... +# +{ package ELF; +  use FileHandle; + +    sub dup  { my %copy=map {$_} @_; return \%copy; } + +    sub Load { +	my $class = shift; +	my $self  = {}; +	my $FD    = FileHandle->new();	# autoclose + +	bless $self,$class; + +	sysopen($FD,shift,0) or die "$!"; +	binmode($FD); + +	################################################# +	# read and parse elf_ehdr.e_ident... +	# +	read($FD,my $elf,16) or die "$!"; + +	my %e_ident; +	@e_ident{magic,class,data,version,osabi,abiver,pad}= +		unpack("a4C*",$elf); + +	$!=42;		# signal fipsld to revert to two-step link +	die "not ELF file" if ($e_ident{magic} ne chr(0177)."ELF"); + +	my $elf_bits   = $e_ident{class}*32;	# 32 or 64 +	my $big_endian = $e_ident{data}-1;	# 0 or 1 + +	if ($elf_bits==64) { +	    if (!(((1<<31)<<1) && $big_endian==(unpack("L",pack("N",1))==1))) { +		die "ELF64 is supported only natively"; +	    } +	} + +	################################################# +	# read and parse remainder of elf_ehdr... +	# +	read($FD,my $elfhdr,64) or die "$!"; + +	my %elf_ehdr; +	@elf_ehdr{e_type,e_machine,e_version, +		e_entry,e_phoff,e_shoff,e_flags,e_ehsize, +		e_phentsize,e_phnum,e_shentsize,e_shnum,e_shstrndx} = +	$elf_bits==32 ? +		unpack($big_endian?"nnN5n6":"vvV5v6",$elfhdr) +	:	unpack("SSLQ3LS6",$elfhdr); + +	# put aside e_machine in case one has to treat specific +	# platforms differently, see EM_ constants in elf.h for +	# assortment...  +	$self->{e_machine} = $elf_ehdr{e_machine}; + +	################################################# +	# read and parse elf_shdr table... +	# +	my ($i,$sz,$symtab_idx,$blob,$strings); + +	seek($FD,$elf_ehdr{e_shoff},0) or die "$!"; +	read($FD,$blob,$elf_ehdr{e_shentsize}*$elf_ehdr{e_shnum}) or die "$!"; + +	my @sections; +	my $elf_shdr_struct=($elf_bits==32?($big_endian?"N10":"V10"):"L2Q4L2Q2"); +	for ($sz=$elf_ehdr{e_shentsize},$i=0;$i<length($blob);$i+=$sz) { +	    my %elf_shdr; + +	    @elf_shdr{sh_name,sh_type,sh_flags, +			sh_addr,sh_offset,sh_size, +			sh_link,sh_info,sh_addalign,sh_entsize} = +		unpack($elf_shdr_struct,substr($blob,$i,$sz)); + +	    push(@sections,dup(%elf_shdr)); + +	    # note SHT_SYMTAB or SHT_DYNSYM for future reference +	    if ($elf_shdr{sh_type}==2 || $elf_shdr{sh_type}==11) { +		$symtab_idx = $#sections; +	    } +	} + +	# read strings table and map section names... +	seek($FD,@sections[$elf_ehdr{e_shstrndx}]->{sh_offset},0)	or die "$!"; +	read($FD,$strings,@sections[$elf_ehdr{e_shstrndx}]->{sh_size})	or die "$!"; +	for (@sections) { +	    $_->{sh_name}=(split(chr(0),substr($strings,$_->{sh_name},64)))[0]; +	} + +	################################################# +	# read symbol strings table... +	# +	$i=@sections[$symtab_idx]->{sh_link}; +	seek($FD,@sections[$i]->{sh_offset},0)		or die "$!"; +	read($FD,$strings,@sections[$i]->{sh_size})	or die "$!"; + +	################################################# +	# read and parse elf_sym table... +	# +	seek($FD,@sections[$symtab_idx]->{sh_offset},0)		or die "$!"; +	read($FD,my $blob,@sections[$symtab_idx]->{sh_size})	or die "$!"; + +	for ($sz=@sections[$symtab_idx]->{sh_entsize},$i=0;$i<length($blob);$i+=$sz) { +	    my %elf_sym; + +	    if ($elf_bits==32) { +		@elf_sym{st_name,st_value,st_size,st_info,st_other,st_shndx} = +			unpack($big_endian?"N3CCn":"V3CCv",substr($blob,$i,$sz)); +	    } else { +		@elf_sym{st_name,st_info,st_other,st_shndx,st_value,st_size} = +			unpack("LCCSQQ",substr($blob,$i,$sz)); +	    } + +	    my $st_type = $elf_sym{st_info}&0xf; +	    my $st_bind = $elf_sym{st_info}>>4; +	    my $st_secn = $elf_sym{st_shndx}; +	    my $name; +	    #                 (STT_OBJECT  || STT_FUNC) +	    if ($st_bind<3 && ($st_type==1 || $st_type==2) +	    	&& $st_secn <= $#sections 		# sane st_shndx +		&& @sections[$st_secn]->{sh_type}	# not SHN_UNDEF +		&& ($name=(split(chr(0),substr($strings,$elf_sym{st_name},128)))[0]) +		) { +		# synthesize st_offset, ... +	    	$elf_sym{st_offset}  = $elf_sym{st_value} +				- @sections[$st_secn]->{sh_addr} +				+ @sections[$st_secn]->{sh_offset}; +		$elf_sym{st_name}    = $name; +		$elf_sym{st_section} = @sections[$st_secn]->{sh_name}; +		# ... and add to lookup table +		$self->{symbols}{$name} = dup(%elf_sym); +	    } +	} + +	return $self; +    } + +    sub Lookup { +	my $self = shift; +	my $name = shift; +	return $self->{symbols}{$name}; +    } + +    sub Traverse { +	my $self = shift; +	my $code = shift; + +	if (ref($code) eq 'CODE') { +	    for (keys(%{$self->{symbols}})) { &$code($self->{symbols}{$_}); } +	} +    } +} + +###################################################################### +# +# SHA1 and HMAC in Perl by <appro@openssl.org>. +# +{ package SHA1; +  use integer; + +    { +    ################################### SHA1 block code generator +    my @V = ('$A','$B','$C','$D','$E'); +    my $i; + +    sub XUpdate { +      my $ret; +	$ret="(\$T=\$W[($i-16)%16]^\$W[($i-14)%16]^\$W[($i-8)%16]^\$W[($i-3)%16],\n\t"; +	if ((1<<31)<<1) { +	    $ret.="    \$W[$i%16]=((\$T<<1)|(\$T>>31))&0xffffffff)\n\t  "; +	} else { +	    $ret.="    \$W[$i%16]=(\$T<<1)|((\$T>>31)&1))\n\t  "; +	} +    } +    sub tail { +      my ($a,$b,$c,$d,$e)=@V; +      my $ret; +	if ((1<<31)<<1) { +	    $ret.="(($a<<5)|($a>>27));\n\t"; +	    $ret.="$b=($b<<30)|($b>>2);	$e&=0xffffffff;	#$b&=0xffffffff;\n\t"; +	} else { +	    $ret.="(($a<<5)|($a>>27)&0x1f);\n\t"; +	    $ret.="$b=($b<<30)|($b>>2)&0x3fffffff;\n\t"; +	} +      $ret; +    } +    sub BODY_00_15 { +	my ($a,$b,$c,$d,$e)=@V; +	"$e+=\$W[$i]+0x5a827999+((($c^$d)&$b)^$d)+".tail(); +    } +    sub BODY_16_19 { +	my ($a,$b,$c,$d,$e)=@V; +	"$e+=".XUpdate()."+0x5a827999+((($c^$d)&$b)^$d)+".tail(); +    } +    sub BODY_20_39 { +	my ($a,$b,$c,$d,$e)=@V; +	"$e+=".XUpdate()."+0x6ed9eba1+($b^$c^$d)+".tail(); +    } +    sub BODY_40_59 { +	my ($a,$b,$c,$d,$e)=@V; +	"$e+=".XUpdate()."+0x8f1bbcdc+(($b&$c)|(($b|$c)&$d))+".tail(); +    } +    sub BODY_60_79 { +	my ($a,$b,$c,$d,$e)=@V; +	"$e+=".XUpdate()."+0xca62c1d6+($b^$c^$d)+".tail(); +    } + +    my $sha1_impl = +    'sub block { +	my $self = @_[0]; +	my @W    = unpack("N16",@_[1]); +	my ($A,$B,$C,$D,$E,$T) = @{$self->{H}}; +	'; + +	$sha1_impl.=' +	$A &= 0xffffffff; +	$B &= 0xffffffff; +	' if ((1<<31)<<1); + +	for($i=0;$i<16;$i++){ $sha1_impl.=BODY_00_15(); unshift(@V,pop(@V)); } +	for(;$i<20;$i++)    { $sha1_impl.=BODY_16_19(); unshift(@V,pop(@V)); } +	for(;$i<40;$i++)    { $sha1_impl.=BODY_20_39(); unshift(@V,pop(@V)); } +	for(;$i<60;$i++)    { $sha1_impl.=BODY_40_59(); unshift(@V,pop(@V)); } +	for(;$i<80;$i++)    { $sha1_impl.=BODY_60_79(); unshift(@V,pop(@V)); } + +	$sha1_impl.=' +	$self->{H}[0]+=$A;	$self->{H}[1]+=$B;	$self->{H}[2]+=$C; +	$self->{H}[3]+=$D;	$self->{H}[4]+=$E;	}'; + +    #print $sha1_impl,"\n"; +    eval($sha1_impl);		# generate code +    } + +    sub Init { +	my $class = shift;	# multiple instances... +	my $self  = {}; + +	bless $self,$class; +	$self->{H} = [0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0]; +	$self->{N} = 0; +	return $self; +    } + +    sub Update { +	my $self = shift; +	my $msg; + +	foreach $msg (@_) { +	    my $len  = length($msg); +	    my $num  = length($self->{buf}); +	    my $off  = 0; + +	    $self->{N} += $len; + +	    if (($num+$len)<64) +	    {	$self->{buf} .= $msg; next;	} +	    elsif ($num) +	    {	$self->{buf} .= substr($msg,0,($off=64-$num)); +		$self->block($self->{buf}); +	    } + +	    while(($off+64) <= $len) +	    {	$self->block(substr($msg,$off,64)); +		$off += 64; +	    } + +	    $self->{buf} = substr($msg,$off); +	} +	return $self; +    } + +    sub Final { +	my $self = shift; +	my $num  = length($self->{buf}); + +	$self->{buf} .= chr(0x80); $num++; +	if ($num>56) +	{   $self->{buf} .= chr(0)x(64-$num); +	    $self->block($self->{buf}); +	    $self->{buf}=undef; +	    $num=0; +	} +	$self->{buf} .= chr(0)x(56-$num); +	$self->{buf} .= pack("N2",($self->{N}>>29)&0x7,$self->{N}<<3); +	$self->block($self->{buf}); + +	return pack("N*",@{$self->{H}}); +    } + +    sub Selftest { +	my $hash; + +	$hash=SHA1->Init()->Update('abc')->Final(); +	die "SHA1 test#1" if (unpack("H*",$hash) ne 'a9993e364706816aba3e25717850c26c9cd0d89d'); + +	$hash=SHA1->Init()->Update('abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq')->Final(); +	die "SHA1 test#2" if (unpack("H*",$hash) ne '84983e441c3bd26ebaae4aa1f95129e5e54670f1'); + +	#$hash=SHA1->Init()->Update('a'x1000000)->Final(); +	#die "SHA1 test#3" if (unpack("H*",$hash) ne '34aa973cd4c4daa4f61eeb2bdbad27316534016f'); +    } +} + +{ package HMAC; + +    sub Init { +	my $class = shift; +	my $key   = shift; +	my $self  = {}; + +	bless $self,$class; + +	if (length($key)>64) { +	    $key = SHA1->Init()->Update($key)->Final(); +	} +	$key .= chr(0x00)x(64-length($key)); + +	my @ikey = map($_^=0x36,unpack("C*",$key)); +	($self->{hash} = SHA1->Init())->Update(pack("C*",@ikey)); +	 $self->{okey} = pack("C*",map($_^=0x36^0x5c,@ikey)); + +	return $self; +    } + +    sub Update { +	my $self = shift; +	$self->{hash}->Update(@_); +	return $self; +    } + +    sub Final { +	my $self  = shift; +	my $ihash = $self->{hash}->Final(); +	return SHA1->Init()->Update($self->{okey},$ihash)->Final(); +    } + +    sub Selftest { +	my $hmac; + +	$hmac = HMAC->Init('0123456789:;<=>?@ABC')->Update('Sample #2')->Final(); +	die "HMAC test" if (unpack("H*",$hmac) ne '0922d3405faa3d194f82a45830737d5cc6c75d24'); +    } +} + +###################################################################### +# +# main() +# +my $legacy_mode; + +if ($ARGV<0 || ($#ARGV>0 && !($legacy_mode=(@ARGV[0] =~ /^\-(dso|exe)$/)))) { +	print STDERR "usage: $0 [-dso|-exe] elfbinary\n"; +	exit(1); +} + +$exe = ELF->Load(@ARGV[$#ARGV]); + +$FIPS_text_start	= $exe->Lookup("FIPS_text_start")		or die; +$FIPS_text_end		= $exe->Lookup("FIPS_text_end")			or die; +$FIPS_rodata_start	= $exe->Lookup("FIPS_rodata_start")		or die; +$FIPS_rodata_end	= $exe->Lookup("FIPS_rodata_end")		or die; +$FIPS_signature		= $exe->Lookup("FIPS_signature")		or die; + +# new cross-compile support +$FIPS_text_startX	= $exe->Lookup("FIPS_text_startX"); +$FIPS_text_endX		= $exe->Lookup("FIPS_text_endX"); + +if (!$legacy_mode) { +    if (!$FIPS_text_startX || !$FIPS_text_endX) { +	print STDERR "@ARGV[$#ARGV] is not cross-compiler aware.\n"; +	exit(42);	# signal fipsld to revert to two-step link +    } + +    $FINGERPRINT_ascii_value +			= $exe->Lookup("FINGERPRINT_ascii_value"); + +} +if ($FIPS_text_startX && $FIPS_text_endX) { +    $FIPS_text_start = $FIPS_text_startX; +    $FIPS_text_end   = $FIPS_text_endX; +} + +sysopen(FD,@ARGV[$#ARGV],$legacy_mode?0:2) or die "$!";	# 2 is read/write +binmode(FD); + +sub HMAC_Update { +  my ($hmac,$off,$len) = @_; +  my $blob; + +    seek(FD,$off,0)	or die "$!"; +    read(FD,$blob,$len)	or die "$!"; +    $$hmac->Update($blob); +} + +# fips/fips.c:FIPS_incore_fingerprint's Perl twin +# +sub FIPS_incore_fingerprint { +  my $p1  = $FIPS_text_start->{st_offset}; +  my $p2  = $FIPS_text_end->{st_offset}; +  my $p3  = $FIPS_rodata_start->{st_offset}; +  my $p4  = $FIPS_rodata_end->{st_offset}; +  my $sig = $FIPS_signature->{st_offset}; +  my $ctx = HMAC->Init("etaonrishdlcupfm"); + +    # detect overlapping regions +    if ($p1<=$p3 && $p2>=$p3) { +	$p3 = $p1; $p4 = $p2>$p4?$p2:$p4; $p1 = 0; $p2 = 0; +    } elsif ($p3<=$p1 && $p4>=$p1) { +	$p3 = $p3; $p4 = $p2>$p4?$p2:$p4; $p1 = 0; $p2 = 0; +    } + +    if ($p1) { +	HMAC_Update (\$ctx,$p1,$p2-$p1); +    } + +    if ($sig>=$p3 && $sig<$p4) { +	# "punch" hole +	HMAC_Update(\$ctx,$p3,$sig-$p3); +	$p3 = $sig+20; +	HMAC_Update(\$ctx,$p3,$p4-$p3); +    } else { +	HMAC_Update(\$ctx,$p3,$p4-$p3); +    } + +    return $ctx->Final(); +} + +$fingerprint = FIPS_incore_fingerprint(); + +if ($legacy_mode) { +    print unpack("H*",$fingerprint); +} elsif (defined($FINGERPRINT_ascii_value)) { +    seek(FD,$FINGERPRINT_ascii_value->{st_offset},0)	or die "$!"; +    print FD unpack("H*",$fingerprint)			or die "$!"; +} else { +    seek(FD,$FIPS_signature->{st_offset},0)		or die "$!"; +    print FD $fingerprint				or die "$!"; +} + +close (FD); diff --git a/openssl-1.1.0h/util/indent.pro b/openssl-1.1.0h/util/indent.pro new file mode 100644 index 0000000..b5398ab --- /dev/null +++ b/openssl-1.1.0h/util/indent.pro @@ -0,0 +1,672 @@ +-bap +-bbo +-br +-brs +-c33 +-cd33 +-ce +-ci4 +-cli0 +-cp33 +-d0 +-di1 +-hnl +-i4 +-il1 +-ip0 +-l80 +-lp +-nbad +-nbc +-ncdb +-ncs +-nfc1 +-nfca +-npcs +-nprs +-npsl +-nsc +-ppi1  +-saf +-sai +-saw +-sob +-ss +-ts0 +-T ACCESS_DESCRIPTION +-T ADDED_OBJ +-T AES_KEY +-T APP_INFO +-T ARGS +-T ASIdOrRange +-T ASIdOrRanges +-T ASIdentifierChoice +-T ASIdentifiers +-T ASN1_ADB +-T ASN1_ADB_TABLE +-T ASN1_AUX +-T ASN1_BIT_STRING +-T ASN1_BMPSTRING +-T ASN1_BOOLEAN +-T ASN1_COMPAT_FUNCS +-T ASN1_CTX +-T ASN1_ENCODING +-T ASN1_ENUMERATED +-T ASN1_EXTERN_FUNCS +-T ASN1_GENERALIZEDTIME +-T ASN1_GENERALSTRING +-T ASN1_IA5STRING +-T ASN1_INTEGER +-T ASN1_ITEM +-T ASN1_ITEM_EXP +-T ASN1_NULL +-T ASN1_OBJECT +-T ASN1_OCTET_STRING +-T ASN1_PCTX +-T ASN1_PRIMITIVE_FUNCS +-T ASN1_PRINTABLESTRING +-T ASN1_PRINT_ARG +-T ASN1_SCTX +-T ASN1_STREAM_ARG +-T ASN1_STRING +-T ASN1_STRING_TABLE +-T ASN1_T61STRING +-T ASN1_TEMPLATE +-T ASN1_TIME +-T ASN1_TLC +-T ASN1_TYPE +-T ASN1_UNIVERSALSTRING +-T ASN1_UTCTIME +-T ASN1_UTF8STRING +-T ASN1_VALUE +-T ASN1_VISIBLESTRING +-T ASN1_const_CTX +-T AUTHORITY_INFO_ACCESS +-T AUTHORITY_KEYID +-T BASIC_CONSTRAINTS +-T BF_KEY +-T BF_LONG +-T BIGNUM +-T BIO +-T BIO_ACCEPT +-T BIO_ADDR +-T BIO_ASN1_BUF_CTX +-T BIO_ASN1_EX_FUNCS +-T BIO_B64_CTX +-T BIO_CONNECT +-T BIO_ENC_CTX +-T BIO_F_BUFFER_CTX +-T BIO_LINEBUFFER_CTX +-T BIO_METHOD +-T BIO_OK_CTX +-T BIO_SSL +-T BIT_STRING_BITNAME +-T BN_BLINDING +-T BN_CTX +-T BN_GENCB +-T BN_MONT_CTX +-T BN_POOL +-T BN_POOL_ITEM +-T BN_RECP_CTX +-T BN_STACK +-T BN_ULONG +-T BUF_MEM +-T BY_DIR +-T BY_DIR_ENTRY +-T BY_DIR_HASH +-T Bytef +-T CAMELLIA_KEY +-T CAST_KEY +-T CAST_LONG +-T CA_DB +-T CCM128_CONTEXT +-T CERT +-T CERTIFICATEPOLICIES +-T CERT_PKEY +-T CIPHER_ORDER +-T CMAC_CTX +-T CMS_AuthenticatedData +-T CMS_CertificateChoices +-T CMS_CompressedData +-T CMS_ContentInfo +-T CMS_DigestedData +-T CMS_EncapsulatedContentInfo +-T CMS_EncryptedContentInfo +-T CMS_EncryptedData +-T CMS_EnvelopedData +-T CMS_IssuerAndSerialNumber +-T CMS_KEKIdentifier +-T CMS_KEKRecipientInfo +-T CMS_KeyAgreeRecipientIdentifier +-T CMS_KeyAgreeRecipientInfo +-T CMS_KeyTransRecipientInfo +-T CMS_OriginatorIdentifierOrKey +-T CMS_OriginatorInfo +-T CMS_OriginatorPublicKey +-T CMS_OtherCertificateFormat +-T CMS_OtherKeyAttribute +-T CMS_OtherRecipientInfo +-T CMS_OtherRevocationInfoFormat +-T CMS_PasswordRecipientInfo +-T CMS_Receipt +-T CMS_ReceiptRequest +-T CMS_ReceiptsFrom +-T CMS_RecipientEncryptedKey +-T CMS_RecipientIdentifier +-T CMS_RecipientInfo +-T CMS_RecipientKeyIdentifier +-T CMS_RevocationInfoChoice +-T CMS_SignedData +-T CMS_SignerIdentifier +-T CMS_SignerInfo +-T COMP_CTX +-T COMP_METHOD +-T CONF +-T CONF_IMODULE +-T CONF_METHOD +-T CONF_MODULE +-T CONF_VALUE +-T CRYPTO_EX_DATA +-T CRYPTO_EX_DATA_FUNCS +-T CRYPTO_EX_DATA_IMPL +-T CRYPTO_EX_dup +-T CRYPTO_EX_free +-T CRYPTO_EX_new +-T CRYPTO_MEM_LEAK_CB +-T CRYPTO_THREADID +-T CRYPTO_dynlock_value +-T DB_ATTR +-T DES_LONG +-T DES_cblock +-T DES_key_schedule +-T DH +-T DH_METHOD +-T DH_PKEY_CTX +-T DIST_POINT +-T DIST_POINT_NAME +-T DRBG_CTX +-T DSA +-T DSA_METHOD +-T DSA_SIG +-T DSO +-T DSO_FUNC_TYPE +-T DSO_MERGER_FUNC +-T DSO_METHOD +-T DSO_NAME_CONVERTER_FUNC +-T DSO_VMS_INTERNAL +-T DTLS1_BITMAP +-T DTLS1_RECORD_DATA +-T DTLS1_STATE +-T Dl_info +-T ECDH_DATA +-T ECDH_METHOD +-T ECDSA_DATA +-T ECDSA_METHOD +-T ECDSA_SIG +-T ECPARAMETERS +-T ECPKPARAMETERS +-T EC_EXTRA_DATA +-T EC_GROUP +-T EC_KEY +-T EC_METHOD +-T EC_POINT +-T EC_PRE_COMP +-T EC_PRIVATEKEY +-T EC_builtin_curve +-T EDIPARTYNAME +-T ENGINE +-T ENGINE_CIPHERS_PTR +-T ENGINE_CLEANUP_CB +-T ENGINE_CLEANUP_ITEM +-T ENGINE_CMD_DEFN +-T ENGINE_CTRL_FUNC_PTR +-T ENGINE_DIGESTS_PTR +-T ENGINE_GEN_FUNC_PTR +-T ENGINE_GEN_INT_FUNC_PTR +-T ENGINE_LOAD_KEY_PTR +-T ENGINE_PILE +-T ENGINE_PILE_DOALL +-T ENGINE_PKEY_ASN1_METHS_PTR +-T ENGINE_PKEY_METHS_PTR +-T ENGINE_SSL_CLIENT_CERT_PTR +-T ENGINE_TABLE +-T ENUMERATED_NAMES +-T ERR_STATE +-T ERR_STRING_DATA +-T ESS_CERT_ID +-T ESS_ISSUER_SERIAL +-T ESS_SIGNING_CERT +-T EVP_AES_HMAC_SHA1 +-T EVP_AES_HMAC_SHA256 +-T EVP_CIPHER +-T EVP_CIPHER_CTX +-T EVP_CIPHER_INFO +-T EVP_ENCODE_CTX +-T EVP_MD +-T EVP_MD_CTX +-T EVP_PBE_CTL +-T EVP_PBE_KEYGEN +-T EVP_PKEY +-T EVP_PKEY_ASN1_METHOD +-T EVP_PKEY_CTX +-T EVP_PKEY_METHOD +-T EVP_PKEY_gen_cb +-T EX_CLASS_ITEM +-T E_GMP_RSA_CTX +-T E_RSAX_MOD_CTX +-T FILE +-T F_DIGITALSIGNATUREVERIFY +-T F_PUBLICKEYEXTRACT +-T GCM128_CONTEXT +-T GENERAL_NAME +-T GENERAL_NAMES +-T GENERAL_SUBTREE +-T GEN_SESSION_CB +-T HASH_CTX +-T HEAPENTRY32 +-T HEAPLIST32 +-T HEARTBEAT_TEST_FIXTURE +-T HMAC_CTX +-T IDEA_KEY_SCHEDULE +-T IPAddrBlocks +-T IPAddressFamily +-T IPAddressOrRange +-T IPAddressOrRanges +-T ISSUING_DIST_POINT +-T KEY_TABLE_TYPE +-T LHASH +-T LHASH_COMP_FN_TYPE +-T LHASH_DOALL_ARG_FN_TYPE +-T LHASH_DOALL_FN_TYPE +-T LHASH_HASH_FN_TYPE +-T LHASH_NODE +-T LPDIR_CTX +-T LPHEAPENTRY32 +-T LPHEAPLIST32 +-T LPMODULEENTRY32 +-T LPMODULEENTRY32W +-T LPPROCESSENTRY32 +-T LPPROCESSENTRY32W +-T LPTHREADENTRY32 +-T LP_DIR_CTX +-T MD2_CTX +-T MD4_CTX +-T MD5_CTX +-T MDC2_CTX +-T MD_DATA +-T MEM +-T MEM_LEAK +-T MEM_OBJECT_DATA +-T MIME_HEADER +-T MIME_PARAM +-T MODULEENTRY32 +-T MODULEENTRY32W +-T MS_FAR +-T NAME_CONSTRAINTS +-T NAME_FUNCS +-T NBIO_TEST +-T NDEF_SUPPORT +-T NETSCAPE_CERT_SEQUENCE +-T NETSCAPE_ENCRYPTED_PKEY +-T NETSCAPE_PKEY +-T NETSCAPE_SPKAC +-T NETSCAPE_SPKI +-T NETSCAPE_X509 +-T NET_API_FUNCTION +-T NOTICEREF +-T OBJ_NAME +-T OCB128_CONTEXT +-T OCB_BLOCK +-T OCSP_BASICRESP +-T OCSP_CERTID +-T OCSP_CERTSTATUS +-T OCSP_CRLID +-T OCSP_ONEREQ +-T OCSP_REQINFO +-T OCSP_REQUEST +-T OCSP_REQ_CTX +-T OCSP_RESPBYTES +-T OCSP_RESPDATA +-T OCSP_RESPID +-T OCSP_RESPONSE +-T OCSP_REVOKEDINFO +-T OCSP_SERVICELOC +-T OCSP_SIGNATURE +-T OCSP_SINGLERESP +-T OCSP_TBLSTR +-T OPENSSL_BLOCK +-T OPENSSL_CSTRING +-T OPENSSL_DIR_CTX +-T OPENSSL_ITEM +-T OPENSSL_PSTRING +-T OPENSSL_STRING +-T OSSL_ASYNC_FD +-T OTHERNAME +-T P256_POINT +-T P256_POINT_AFFINE +-T PBE2PARAM +-T PBEPARAM +-T PBKDF2PARAM +-T PCRYPTO_MEM_LEAK_CB +-T PEM_CTX +-T PEM_ENCODE_SEAL_CTX +-T PEM_USER +-T PHEAPENTRY32 +-T PHEAPLIST32 +-T PKCS12 +-T PKCS12_BAGS +-T PKCS12_SAFEBAG +-T PKCS7 +-T PKCS7_DIGEST +-T PKCS7_ENCRYPT +-T PKCS7_ENC_CONTENT +-T PKCS7_ENVELOPE +-T PKCS7_ISSUER_AND_SERIAL +-T PKCS7_RECIP_INFO +-T PKCS7_SIGNED +-T PKCS7_SIGNER_INFO +-T PKCS7_SIGN_ENVELOPE +-T PKCS8_PRIV_KEY_INFO +-T PKEY_USAGE_PERIOD +-T PMODULEENTRY32 +-T PMODULEENTRY32W +-T POLICYINFO +-T POLICYQUALINFO +-T POLICY_CONSTRAINTS +-T POLICY_MAPPING +-T POLICY_MAPPINGS +-T PPROCESSENTRY32 +-T PPROCESSENTRY32W +-T PRECOMP256_ROW +-T PROCESSENTRY32 +-T PROCESSENTRY32W +-T PROXY_CERT_INFO_EXTENSION +-T PROXY_POLICY +-T PTHREADENTRY32 +-T PW_CB_DATA +-T RAND_METHOD +-T RC2_KEY +-T RC4_KEY +-T RC5_32_KEY +-T RIPEMD160_CTX +-T RSA +-T RSA_METHOD +-T RSA_OAEP_PARAMS +-T RSA_PKEY_CTX +-T RSA_PSS_PARAMS +-T SCT +-T SEED_KEY_SCHEDULE +-T SESS_CERT +-T SHA256_CTX +-T SHA512_CTX +-T SHA_CTX +-T SRP_ARG +-T SRP_CLIENT_ARG +-T SRP_CTX +-T SRP_SERVER_ARG +-T SRP_VBASE +-T SRP_gN_cache +-T SRP_user_pwd +-T SRTP_PROTECTION_PROFILE +-T SSL +-T SSL2_STATE +-T SSL3_BUFFER +-T SSL3_COMP +-T SSL3_ENC_METHOD +-T SSL3_RECORD +-T SSL3_STATE +-T SSL_CIPHER +-T SSL_COMP +-T SSL_CONF_CTX +-T SSL_CTX +-T SSL_DANE +-T SSL_EXCERT +-T SSL_METHOD +-T SSL_SESSION +-T SSL_SESSION_ASN1 +-T STACK_OF +-T SXNET +-T SXNETID +-T TCHAR +-T TEST_INFO +-T THREADENTRY32 +-T TIMEOUT_PARAM +-T TLS_SESSION_TICKET_EXT +-T TLS_SIGALGS +-T TS_ACCURACY +-T TS_MSG_IMPRINT +-T TS_REQ +-T TS_RESP +-T TS_RESP_CTX +-T TS_STATUS_INFO +-T TS_TST_INFO +-T TS_VERIFY_CTX +-T TXT_DB +-T UI +-T UINT64 +-T UI_METHOD +-T UI_STRING +-T USERNOTICE +-T WCHAR +-T WHIRLPOOL_CTX +-T WINAPI +-T WSAAPI +-T X509 +-T X509V3_CONF_METHOD +-T X509V3_CTX +-T X509V3_EXT_D2I +-T X509V3_EXT_FREE +-T X509V3_EXT_I2D +-T X509V3_EXT_I2R +-T X509V3_EXT_I2S +-T X509V3_EXT_METHOD +-T X509V3_EXT_NEW +-T X509V3_EXT_R2I +-T X509V3_EXT_S2I +-T X509V3_EXT_V2I +-T X509_ALGOR +-T X509_ATTRIBUTE +-T X509_CERT_AUX +-T X509_CERT_FILE_CTX +-T X509_CERT_PAIR +-T X509_CINF +-T X509_CRL +-T X509_CRL_INFO +-T X509_CRL_METHOD +-T X509_EXTENSION +-T X509_INFO +-T X509_LOOKUP +-T X509_LOOKUP_METHOD +-T X509_NAME +-T X509_NAME_ENTRY +-T X509_OBJECT +-T X509_OBJECTS +-T X509_PKEY +-T X509_POLICY_CACHE +-T X509_POLICY_DATA +-T X509_POLICY_LEVEL +-T X509_POLICY_NODE +-T X509_POLICY_TREE +-T X509_PUBKEY +-T X509_PURPOSE +-T X509_REQ +-T X509_REQ_INFO +-T X509_REVOKED +-T X509_SIG +-T X509_STORE +-T X509_STORE_CTX +-T X509_TRUST +-T X509_VAL +-T X509_VERIFY_PARAM +-T X509_VERIFY_PARAM_ID +-T X9_62_CHARACTERISTIC_TWO +-T X9_62_CURVE +-T X9_62_FIELDID +-T X9_62_PENTANOMIAL +-T XTS128_CONTEXT +-T ZEN_MD_DATA +-T _LHASH +-T _STACK +-T __int64 +-T _ossl_old_des_cblock +-T asn1_ps_func +-T bio_dgram_data +-T bio_info_cb +-T BIO_info_cb +-T BIO_callback_fn +-T char_io +-T conf_finish_func +-T conf_init_func +-T const_DES_cblock +-T d2i_of_void +-T des_cblock +-T dynamic_data_ctx +-T dynamic_fns +-T engine_table_doall_cb +-T i2d_of_void +-T int_dhx942_dh +-T nid_triple +-T pem_password_cb +-T pitem +-T piterator +-T pqueue_s +-T session_op +-T size_t +-T tag_exp_arg +-T testdata +-T time_t +-T time_t +-T u32 +-T u64 +-T u8 +-T v3_ext_ctx +-T v3_ext_method +-T STACK_OF_ACCESS_DESCRIPTION_ +-T STACK_OF_ASIdOrRange_ +-T STACK_OF_ASN1_ADB_TABLE_ +-T STACK_OF_ASN1_INTEGER_ +-T STACK_OF_ASN1_OBJECT_ +-T STACK_OF_ASN1_STRING_TABLE_ +-T STACK_OF_ASN1_TYPE_ +-T STACK_OF_ASN1_UTF8STRING_ +-T STACK_OF_ASN1_VALUE_ +-T STACK_OF_BIO_ +-T STACK_OF_BY_DIR_ENTRY_ +-T STACK_OF_BY_DIR_HASH_ +-T STACK_OF_CMS_CertificateChoices_ +-T STACK_OF_CMS_RecipientEncryptedKey_ +-T STACK_OF_CMS_RecipientInfo_ +-T STACK_OF_CMS_RevocationInfoChoice_ +-T STACK_OF_CMS_SignerInfo_ +-T STACK_OF_CONF_IMODULE_ +-T STACK_OF_CONF_MODULE_ +-T STACK_OF_CONF_VALUE_ +-T STACK_OF_CRYPTO_EX_DATA_FUNCS_ +-T STACK_OF_CRYPTO_dynlock_ +-T STACK_OF_DIST_POINT_ +-T STACK_OF_ENGINE_ +-T STACK_OF_ENGINE_CLEANUP_ITEM_ +-T STACK_OF_ESS_CERT_ID_ +-T STACK_OF_EVP_PBE_CTL_ +-T STACK_OF_EVP_PKEY_ASN1_METHOD_ +-T STACK_OF_EVP_PKEY_METHOD_ +-T STACK_OF_GENERAL_NAMES_ +-T STACK_OF_GENERAL_NAME_ +-T STACK_OF_GENERAL_SUBTREE_ +-T STACK_OF_IPAddressFamily_ +-T STACK_OF_IPAddressOrRange_ +-T STACK_OF_MEM_OBJECT_DATA_ +-T STACK_OF_MIME_HEADER_ +-T STACK_OF_MIME_PARAM_ +-T STACK_OF_NAME_FUNCS_ +-T STACK_OF_OCSP_CERTID_ +-T STACK_OF_OCSP_ONEREQ_ +-T STACK_OF_OCSP_RESPID_ +-T STACK_OF_OCSP_SINGLERESP_ +-T STACK_OF_OPENSSL_BLOCK_ +-T STACK_OF_OPENSSL_PSTRING_ +-T STACK_OF_OPENSSL_STRING_ +-T STACK_OF_PKCS12_SAFEBAG_ +-T STACK_OF_PKCS7_ +-T STACK_OF_PKCS7_RECIP_INFO_ +-T STACK_OF_PKCS7_SIGNER_INFO_ +-T STACK_OF_POLICYINFO_ +-T STACK_OF_POLICYQUALINFO_ +-T STACK_OF_POLICY_MAPPING_ +-T STACK_OF_Request_ +-T STACK_OF_SCT_ +-T STACK_OF_SRP_gN_ +-T STACK_OF_SRP_gN_cache_ +-T STACK_OF_SRP_user_pwd_ +-T STACK_OF_SRTP_PROTECTION_PROFILE_ +-T STACK_OF_SSL_CIPHER_ +-T STACK_OF_SSL_COMP_ +-T STACK_OF_STRING_ +-T STACK_OF_SXNETID_ +-T STACK_OF_SingleResponse_ +-T STACK_OF_UI_STRING_ +-T STACK_OF_X509V3_EXT_METHOD_ +-T STACK_OF_X509_ +-T STACK_OF_X509_ALGOR_ +-T STACK_OF_X509_ATTRIBUTE_ +-T STACK_OF_X509_CRL_ +-T STACK_OF_X509_EXTENSION_ +-T STACK_OF_X509_INFO_ +-T STACK_OF_X509_LOOKUP_ +-T STACK_OF_X509_NAME_ +-T STACK_OF_X509_NAME_ENTRY_ +-T STACK_OF_X509_OBJECT_ +-T STACK_OF_X509_POLICY_DATA_ +-T STACK_OF_X509_POLICY_NODE_ +-T STACK_OF_X509_PURPOSE_ +-T STACK_OF_X509_REVOKED_ +-T STACK_OF_X509_TRUST_ +-T STACK_OF_X509_VERIFY_PARAM_ +-T STACK_OF_nid_triple_ +-T STACK_OF_void_ +-T LHASH_OF_ADDED_OBJ_ +-T LHASH_OF_APP_INFO_ +-T LHASH_OF_CONF_VALUE_ +-T LHASH_OF_ENGINE_PILE_ +-T LHASH_OF_ERR_STATE_ +-T LHASH_OF_ERR_STRING_DATA_ +-T LHASH_OF_EX_CLASS_ITEM_ +-T LHASH_OF_FUNCTION_ +-T LHASH_OF_MEM_ +-T LHASH_OF_OBJ_NAME_ +-T LHASH_OF_OPENSSL_STRING_ +-T LHASH_OF_SSL_SESSION_ +-T LHASH_OF_STRING_ +-T clock_t +-T custom_ext_methods +-T hm_fragment +-T record_pqueue +-T ssl_ctx_st +-T ssl_flag_tbl +-T ssl_st +-T ssl_trace_tbl +-T _stdcall +-T tls12_lookup +-T OPTIONS +-T OPT_PAIR +-T uint64_t +-T int64_t +-T uint32_t +-T int32_t +-T uint16_t +-T int16_t +-T uint8_t +-T int8_t +-T STRINT_PAIR +-T felem +-T felem_bytearray +-T SH_LIST +-T PACKET +-T RECORD_LAYER +-T ASYNC_FIBRE +-T ASYNC_CTX +-T ASYNC_JOB +-T intmax_t +-T uintmax_t +-T pqueue +-T danetls_record diff --git a/openssl-1.1.0h/util/libcrypto.num b/openssl-1.1.0h/util/libcrypto.num new file mode 100644 index 0000000..8414d97 --- /dev/null +++ b/openssl-1.1.0h/util/libcrypto.num @@ -0,0 +1,4236 @@ +d2i_EC_PUBKEY                           1	1_1_0	EXIST::FUNCTION:EC +b2i_PVK_bio                             2	1_1_0	EXIST::FUNCTION:DSA,RC4 +PEM_read_bio_NETSCAPE_CERT_SEQUENCE     3	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_chain               4	1_1_0	EXIST::FUNCTION: +COMP_expand_block                       5	1_1_0	EXIST::FUNCTION:COMP +X509V3_get_string                       6	1_1_0	EXIST::FUNCTION: +TS_MSG_IMPRINT_free                     7	1_1_0	EXIST::FUNCTION:TS +DES_xcbc_encrypt                        8	1_1_0	EXIST::FUNCTION:DES +TS_RESP_CTX_new                         9	1_1_0	EXIST::FUNCTION:TS +PKCS5_PBE_add                           10	1_1_0	EXIST::FUNCTION: +i2d_DSAparams                           11	1_1_0	EXIST::FUNCTION:DSA +X509_NAME_get0_der                      12	1_1_0	EXIST::FUNCTION: +i2d_ESS_ISSUER_SERIAL                   13	1_1_0	EXIST::FUNCTION:TS +X509at_get_attr_by_NID                  14	1_1_0	EXIST::FUNCTION: +X509_PUBKEY_set0_param                  15	1_1_0	EXIST::FUNCTION: +PKCS12_it                               16	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS12_it                               16	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +i2d_ASN1_OCTET_STRING                   17	1_1_0	EXIST::FUNCTION: +EC_KEY_set_private_key                  18	1_1_0	EXIST::FUNCTION:EC +SRP_VBASE_get_by_user                   19	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SRP +Camellia_cfb128_encrypt                 21	1_1_0	EXIST::FUNCTION:CAMELLIA +DES_ncbc_encrypt                        22	1_1_0	EXIST::FUNCTION:DES +TS_REQ_get_ext_count                    23	1_1_0	EXIST::FUNCTION:TS +EVP_aes_128_ocb                         24	1_1_0	EXIST::FUNCTION:OCB +ASN1_item_d2i_fp                        25	1_1_0	EXIST::FUNCTION:STDIO +BN_lshift                               26	1_1_0	EXIST::FUNCTION: +X509_NAME_add_entry_by_NID              27	1_1_0	EXIST::FUNCTION: +X509V3_add_value_bool                   28	1_1_0	EXIST::FUNCTION: +GENERAL_NAME_get0_otherName             29	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_get_uint64                 30	1_1_0	EXIST::FUNCTION: +EVP_DigestInit_ex                       31	1_1_0	EXIST::FUNCTION: +CTLOG_new                               32	1_1_0	EXIST::FUNCTION:CT +UI_get_result_minsize                   33	1_1_0	EXIST::FUNCTION:UI +EVP_PBE_alg_add_type                    34	1_1_0	EXIST::FUNCTION: +EVP_cast5_ofb                           35	1_1_0	EXIST::FUNCTION:CAST +d2i_PUBKEY_fp                           36	1_1_0	EXIST::FUNCTION:STDIO +PKCS7_set_cipher                        37	1_1_0	EXIST::FUNCTION: +BF_decrypt                              38	1_1_0	EXIST::FUNCTION:BF +PEM_read_bio_PUBKEY                     39	1_1_0	EXIST::FUNCTION: +X509_NAME_delete_entry                  40	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_verify_recover        41	1_1_0	EXIST::FUNCTION: +UI_set_method                           42	1_1_0	EXIST::FUNCTION:UI +PKCS7_ISSUER_AND_SERIAL_it              43	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_ISSUER_AND_SERIAL_it              43	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EC_GROUP_method_of                      44	1_1_0	EXIST::FUNCTION:EC +RSA_blinding_on                         45	1_1_0	EXIST::FUNCTION:RSA +X509_get0_signature                     47	1_1_0	EXIST::FUNCTION: +X509_REVOKED_get0_extensions            48	1_1_0	EXIST::FUNCTION: +NETSCAPE_SPKI_verify                    49	1_1_0	EXIST::FUNCTION: +i2d_OCSP_RESPONSE                       50	1_1_0	EXIST::FUNCTION:OCSP +ERR_peek_error                          51	1_1_0	EXIST::FUNCTION: +X509v3_asid_validate_resource_set       52	1_1_0	EXIST::FUNCTION:RFC3779 +PEM_write_bio_Parameters                53	1_1_0	EXIST::FUNCTION: +CMS_SignerInfo_verify                   54	1_1_0	EXIST::FUNCTION:CMS +X509v3_asid_is_canonical                55	1_1_0	EXIST::FUNCTION:RFC3779 +ASN1_ENUMERATED_get                     56	1_1_0	EXIST::FUNCTION: +EVP_MD_do_all_sorted                    57	1_1_0	EXIST::FUNCTION: +OCSP_crl_reason_str                     58	1_1_0	EXIST::FUNCTION:OCSP +ENGINE_ctrl_cmd_string                  59	1_1_0	EXIST::FUNCTION:ENGINE +ENGINE_finish                           60	1_1_0	EXIST::FUNCTION:ENGINE +SRP_Calc_client_key                     61	1_1_0	EXIST::FUNCTION:SRP +X509_PUBKEY_free                        62	1_1_0	EXIST::FUNCTION: +BIO_free_all                            63	1_1_0	EXIST::FUNCTION: +EVP_idea_ofb                            64	1_1_0	EXIST::FUNCTION:IDEA +DSO_bind_func                           65	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_copy                  66	1_1_0	EXIST::FUNCTION: +RSA_up_ref                              67	1_1_0	EXIST::FUNCTION:RSA +EVP_PKEY_meth_set_ctrl                  68	1_1_0	EXIST::FUNCTION: +OCSP_basic_sign                         69	1_1_0	EXIST::FUNCTION:OCSP +BN_GENCB_set                            70	1_1_0	EXIST::FUNCTION: +BN_generate_prime                       71	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8 +d2i_DSAPrivateKey_fp                    72	1_1_0	EXIST::FUNCTION:DSA,STDIO +BIO_nread0                              73	1_1_0	EXIST::FUNCTION: +NETSCAPE_SPKI_print                     74	1_1_0	EXIST::FUNCTION: +X509_set_pubkey                         75	1_1_0	EXIST::FUNCTION: +ASN1_item_print                         76	1_1_0	EXIST::FUNCTION: +CONF_set_nconf                          77	1_1_0	EXIST::FUNCTION: +RAND_set_rand_method                    78	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod_mul                         79	1_1_0	EXIST::FUNCTION:EC2M +UI_add_input_boolean                    80	1_1_0	EXIST::FUNCTION:UI +ASN1_TIME_adj                           81	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_get0_info                 82	1_1_0	EXIST::FUNCTION: +BN_add_word                             83	1_1_0	EXIST::FUNCTION: +EVP_des_ede                             84	1_1_0	EXIST::FUNCTION:DES +EVP_PKEY_add1_attr_by_OBJ               85	1_1_0	EXIST::FUNCTION: +ASYNC_WAIT_CTX_get_all_fds              86	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_meth_set_do_cipher           87	1_1_0	EXIST::FUNCTION: +EVP_set_pw_prompt                       88	1_1_0	EXIST::FUNCTION:UI +d2i_OCSP_RESPBYTES                      89	1_1_0	EXIST::FUNCTION:OCSP +TS_REQ_get_ext_by_NID                   90	1_1_0	EXIST::FUNCTION:TS +ASN1_item_ndef_i2d                      91	1_1_0	EXIST::FUNCTION: +OCSP_archive_cutoff_new                 92	1_1_0	EXIST::FUNCTION:OCSP +DSA_size                                93	1_1_0	EXIST::FUNCTION:DSA +IPAddressRange_free                     94	1_1_0	EXIST::FUNCTION:RFC3779 +CMS_ContentInfo_free                    95	1_1_0	EXIST::FUNCTION:CMS +BIO_accept                              96	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SOCK +X509_VERIFY_PARAM_set1_policies         97	1_1_0	EXIST::FUNCTION: +SCT_set0_extensions                     98	1_1_0	EXIST::FUNCTION:CT +PKCS5_pbe2_set_scrypt                   99	1_1_0	EXIST::FUNCTION:SCRYPT +X509_find_by_subject                    100	1_1_0	EXIST::FUNCTION: +DSAparams_print                         101	1_1_0	EXIST::FUNCTION:DSA +BF_set_key                              102	1_1_0	EXIST::FUNCTION:BF +d2i_DHparams                            103	1_1_0	EXIST::FUNCTION:DH +i2d_PKCS7_ENC_CONTENT                   104	1_1_0	EXIST::FUNCTION: +DH_generate_key                         105	1_1_0	EXIST::FUNCTION:DH +ENGINE_add_conf_module                  106	1_1_0	EXIST::FUNCTION:ENGINE +BIO_new_socket                          107	1_1_0	EXIST::FUNCTION:SOCK +ASN1_OBJECT_free                        108	1_1_0	EXIST::FUNCTION: +X509_REQ_get_extensions                 109	1_1_0	EXIST::FUNCTION: +X509_get_version                        110	1_1_0	EXIST::FUNCTION: +OCSP_CERTID_dup                         111	1_1_0	EXIST::FUNCTION:OCSP +RSA_PSS_PARAMS_free                     112	1_1_0	EXIST::FUNCTION:RSA +i2d_TS_MSG_IMPRINT                      113	1_1_0	EXIST::FUNCTION:TS +EC_POINT_mul                            114	1_1_0	EXIST::FUNCTION:EC +WHIRLPOOL_Final                         115	1_1_0	EXIST::FUNCTION:WHIRLPOOL +CMS_get1_ReceiptRequest                 116	1_1_0	EXIST::FUNCTION:CMS +BIO_sock_non_fatal_error                117	1_1_0	EXIST::FUNCTION:SOCK +HMAC_Update                             118	1_1_0	EXIST::FUNCTION: +i2d_PKCS12                              119	1_1_0	EXIST::FUNCTION: +EVP_BytesToKey                          120	1_1_0	EXIST::FUNCTION: +ENGINE_set_default_pkey_asn1_meths      121	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_BASICRESP_add1_ext_i2d             122	1_1_0	EXIST::FUNCTION:OCSP +EVP_camellia_128_ctr                    123	1_1_0	EXIST::FUNCTION:CAMELLIA +EVP_CIPHER_impl_ctx_size                124	1_1_0	EXIST::FUNCTION: +X509_CRL_get_nextUpdate                 125	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +PKCS12_free                             126	1_1_0	EXIST::FUNCTION: +CMS_signed_get_attr                     127	1_1_0	EXIST::FUNCTION:CMS +ENGINE_set_destroy_function             128	1_1_0	EXIST::FUNCTION:ENGINE +ASN1_STRING_TABLE_add                   129	1_1_0	EXIST::FUNCTION: +d2i_ASIdentifiers                       130	1_1_0	EXIST::FUNCTION:RFC3779 +i2d_PKCS12_bio                          131	1_1_0	EXIST::FUNCTION: +X509_to_X509_REQ                        132	1_1_0	EXIST::FUNCTION: +OCSP_basic_add1_nonce                   133	1_1_0	EXIST::FUNCTION:OCSP +d2i_OCSP_BASICRESP                      134	1_1_0	EXIST::FUNCTION:OCSP +X509v3_add_ext                          135	1_1_0	EXIST::FUNCTION: +X509v3_addr_subset                      136	1_1_0	EXIST::FUNCTION:RFC3779 +CRYPTO_strndup                          137	1_1_0	EXIST::FUNCTION: +OCSP_REQ_CTX_free                       138	1_1_0	EXIST::FUNCTION:OCSP +X509_STORE_new                          140	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_free                          141	1_1_0	EXIST::FUNCTION: +PKCS12_BAGS_new                         142	1_1_0	EXIST::FUNCTION: +CMAC_CTX_new                            143	1_1_0	EXIST::FUNCTION:CMAC +ASIdentifierChoice_new                  144	1_1_0	EXIST::FUNCTION:RFC3779 +EVP_PKEY_asn1_set_public                145	1_1_0	EXIST::FUNCTION: +IDEA_set_decrypt_key                    146	1_1_0	EXIST::FUNCTION:IDEA +X509_STORE_CTX_set_flags                147	1_1_0	EXIST::FUNCTION: +BIO_ADDR_rawmake                        148	1_1_0	EXIST::FUNCTION:SOCK +EVP_PKEY_asn1_set_ctrl                  149	1_1_0	EXIST::FUNCTION: +EC_POINTs_mul                           150	1_1_0	EXIST::FUNCTION:EC +ASN1_get_object                         151	1_1_0	EXIST::FUNCTION: +i2d_IPAddressFamily                     152	1_1_0	EXIST::FUNCTION:RFC3779 +ENGINE_get_ctrl_function                153	1_1_0	EXIST::FUNCTION:ENGINE +X509_REVOKED_get_ext_count              154	1_1_0	EXIST::FUNCTION: +BN_is_prime_fasttest_ex                 155	1_1_0	EXIST::FUNCTION: +ERR_load_PKCS12_strings                 156	1_1_0	EXIST::FUNCTION: +EVP_sha384                              157	1_1_0	EXIST::FUNCTION: +i2d_DHparams                            158	1_1_0	EXIST::FUNCTION:DH +TS_VERIFY_CTX_set_store                 159	1_1_0	EXIST::FUNCTION:TS +PKCS12_verify_mac                       160	1_1_0	EXIST::FUNCTION: +X509v3_addr_canonize                    161	1_1_0	EXIST::FUNCTION:RFC3779 +ASN1_item_ex_i2d                        162	1_1_0	EXIST::FUNCTION: +ENGINE_set_digests                      163	1_1_0	EXIST::FUNCTION:ENGINE +PEM_ASN1_read_bio                       164	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_free                 165	1_1_0	EXIST::FUNCTION:CT +CMS_RecipientInfo_kari_get0_ctx         166	1_1_0	EXIST::FUNCTION:CMS +PKCS7_set_attributes                    167	1_1_0	EXIST::FUNCTION: +d2i_POLICYQUALINFO                      168	1_1_0	EXIST::FUNCTION: +EVP_MD_type                             170	1_1_0	EXIST::FUNCTION: +EVP_PKCS82PKEY                          171	1_1_0	EXIST::FUNCTION: +BN_generate_prime_ex                    172	1_1_0	EXIST::FUNCTION: +EVP_EncryptInit                         173	1_1_0	EXIST::FUNCTION: +RAND_OpenSSL                            174	1_1_0	EXIST::FUNCTION: +BN_uadd                                 175	1_1_0	EXIST::FUNCTION: +EVP_PKEY_derive_init                    176	1_1_0	EXIST::FUNCTION: +PEM_write_bio_ASN1_stream               177	1_1_0	EXIST::FUNCTION: +EVP_PKEY_delete_attr                    178	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_key_length               179	1_1_0	EXIST::FUNCTION: +BIO_clear_flags                         180	1_1_0	EXIST::FUNCTION: +i2d_DISPLAYTEXT                         181	1_1_0	EXIST::FUNCTION: +OCSP_response_status                    182	1_1_0	EXIST::FUNCTION:OCSP +i2d_ASN1_PRINTABLESTRING                183	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set_hostflags         184	1_1_0	EXIST::FUNCTION: +SCT_get0_log_id                         185	1_1_0	EXIST::FUNCTION:CT +ASN1_IA5STRING_it                       186	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_IA5STRING_it                       186	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PEM_write_bio_ECPrivateKey              187	1_1_0	EXIST::FUNCTION:EC +BN_consttime_swap                       188	1_1_0	EXIST::FUNCTION: +BIO_f_buffer                            189	1_1_0	EXIST::FUNCTION: +CMS_SignerInfo_get0_signer_id           190	1_1_0	EXIST::FUNCTION:CMS +TS_TST_INFO_new                         191	1_1_0	EXIST::FUNCTION:TS +X509_REQ_check_private_key              192	1_1_0	EXIST::FUNCTION: +EVP_DigestInit                          193	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_find                      194	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_get_count             195	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_get_bit                 196	1_1_0	EXIST::FUNCTION: +EVP_PKEY_cmp                            197	1_1_0	EXIST::FUNCTION: +d2i_X509_ALGORS                         198	1_1_0	EXIST::FUNCTION: +EVP_PKEY2PKCS8                          199	1_1_0	EXIST::FUNCTION: +BN_nist_mod_256                         200	1_1_0	EXIST::FUNCTION: +OCSP_request_add0_id                    201	1_1_0	EXIST::FUNCTION:OCSP +EVP_seed_cfb128                         202	1_1_0	EXIST::FUNCTION:SEED +BASIC_CONSTRAINTS_free                  203	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_flags                        204	1_1_0	EXIST::FUNCTION: +PEM_write_bio_ECPKParameters            205	1_1_0	EXIST::FUNCTION:EC +SCT_set_version                         206	1_1_0	EXIST::FUNCTION:CT +CMS_add1_ReceiptRequest                 207	1_1_0	EXIST::FUNCTION:CMS +d2i_CRL_DIST_POINTS                     208	1_1_0	EXIST::FUNCTION: +X509_CRL_INFO_free                      209	1_1_0	EXIST::FUNCTION: +ERR_load_UI_strings                     210	1_1_0	EXIST::FUNCTION:UI +ERR_load_strings                        211	1_1_0	EXIST::FUNCTION: +RSA_X931_hash_id                        212	1_1_0	EXIST::FUNCTION:RSA +EC_KEY_set_method                       213	1_1_0	EXIST::FUNCTION:EC +PEM_write_PKCS8_PRIV_KEY_INFO           214	1_1_0	EXIST::FUNCTION:STDIO +X509at_get0_data_by_OBJ                 215	1_1_0	EXIST::FUNCTION: +b2i_PublicKey_bio                       216	1_1_0	EXIST::FUNCTION:DSA +s2i_ASN1_OCTET_STRING                   217	1_1_0	EXIST::FUNCTION: +POLICYINFO_it                           218	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +POLICYINFO_it                           218	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OBJ_create                              219	1_1_0	EXIST::FUNCTION: +d2i_NOTICEREF                           220	1_1_0	EXIST::FUNCTION: +BN_get_rfc2409_prime_768                221	1_1_0	EXIST::FUNCTION: +PEM_read_bio_PKCS8                      222	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_new                      223	1_1_0	EXIST::FUNCTION: +ASN1_STRING_TABLE_cleanup               224	1_1_0	EXIST::FUNCTION: +ASN1_put_eoc                            225	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_input_blocksize         226	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_get0_attrs               227	1_1_0	EXIST::FUNCTION: +PKCS8_get_attr                          228	1_1_0	EXIST::FUNCTION: +DSAparams_print_fp                      229	1_1_0	EXIST::FUNCTION:DSA,STDIO +EC_POINT_set_Jprojective_coordinates_GFp 230	1_1_0	EXIST::FUNCTION:EC +DIST_POINT_NAME_new                     231	1_1_0	EXIST::FUNCTION: +X509_LOOKUP_file                        232	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_decrypt               233	1_1_0	EXIST::FUNCTION: +EVP_rc2_ecb                             234	1_1_0	EXIST::FUNCTION:RC2 +i2b_PublicKey_bio                       235	1_1_0	EXIST::FUNCTION:DSA +d2i_ASN1_SET_ANY                        236	1_1_0	EXIST::FUNCTION: +ASN1_item_i2d                           238	1_1_0	EXIST::FUNCTION: +OCSP_copy_nonce                         239	1_1_0	EXIST::FUNCTION:OCSP +OBJ_txt2nid                             240	1_1_0	EXIST::FUNCTION: +SEED_set_key                            241	1_1_0	EXIST::FUNCTION:SEED +EC_KEY_clear_flags                      242	1_1_0	EXIST::FUNCTION:EC +CMS_RecipientInfo_ktri_get0_algs        243	1_1_0	EXIST::FUNCTION:CMS +i2d_EC_PUBKEY                           244	1_1_0	EXIST::FUNCTION:EC +MDC2                                    245	1_1_0	EXIST::FUNCTION:MDC2 +BN_clear_free                           246	1_1_0	EXIST::FUNCTION: +ENGINE_get_pkey_asn1_meths              247	1_1_0	EXIST::FUNCTION:ENGINE +DSO_merge                               248	1_1_0	EXIST::FUNCTION: +RSA_get_ex_data                         249	1_1_0	EXIST::FUNCTION:RSA +EVP_PKEY_meth_get_decrypt               250	1_1_0	EXIST::FUNCTION: +DES_cfb_encrypt                         251	1_1_0	EXIST::FUNCTION:DES +CMS_SignerInfo_set1_signer_cert         252	1_1_0	EXIST::FUNCTION:CMS +X509_CRL_http_nbio                      253	1_1_0	EXIST::FUNCTION:OCSP +ENGINE_register_all_ciphers             254	1_1_0	EXIST::FUNCTION:ENGINE +SXNET_new                               255	1_1_0	EXIST::FUNCTION: +EVP_camellia_256_ctr                    256	1_1_0	EXIST::FUNCTION:CAMELLIA +d2i_PKCS8_PRIV_KEY_INFO                 257	1_1_0	EXIST::FUNCTION: +EVP_md2                                 259	1_1_0	EXIST::FUNCTION:MD2 +RC2_ecb_encrypt                         260	1_1_0	EXIST::FUNCTION:RC2 +ENGINE_register_DH                      261	1_1_0	EXIST::FUNCTION:ENGINE +ASN1_NULL_free                          262	1_1_0	EXIST::FUNCTION: +EC_KEY_copy                             263	1_1_0	EXIST::FUNCTION:EC +EVP_des_ede3                            264	1_1_0	EXIST::FUNCTION:DES +PKCS7_add1_attrib_digest                265	1_1_0	EXIST::FUNCTION: +EC_POINT_get_affine_coordinates_GFp     266	1_1_0	EXIST::FUNCTION:EC +EVP_seed_ecb                            267	1_1_0	EXIST::FUNCTION:SEED +BIO_dgram_sctp_wait_for_dry             268	1_1_0	EXIST::FUNCTION:DGRAM,SCTP +ASN1_OCTET_STRING_NDEF_it               269	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_OCTET_STRING_NDEF_it               269	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_PKEY_asn1_get_count                 270	1_1_0	EXIST::FUNCTION: +WHIRLPOOL_Init                          271	1_1_0	EXIST::FUNCTION:WHIRLPOOL +EVP_OpenInit                            272	1_1_0	EXIST::FUNCTION:RSA +OCSP_response_get1_basic                273	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_gcm128_tag                       274	1_1_0	EXIST::FUNCTION: +OCSP_parse_url                          275	1_1_0	EXIST::FUNCTION:OCSP +UI_get0_test_string                     276	1_1_0	EXIST::FUNCTION:UI +CRYPTO_secure_free                      277	1_1_0	EXIST::FUNCTION: +DSA_print_fp                            278	1_1_0	EXIST::FUNCTION:DSA,STDIO +X509_get_ext_d2i                        279	1_1_0	EXIST::FUNCTION: +d2i_PKCS7_ENC_CONTENT                   280	1_1_0	EXIST::FUNCTION: +BUF_MEM_grow                            281	1_1_0	EXIST::FUNCTION: +TS_REQ_free                             282	1_1_0	EXIST::FUNCTION:TS +PEM_read_DHparams                       283	1_1_0	EXIST::FUNCTION:DH,STDIO +RSA_private_decrypt                     284	1_1_0	EXIST::FUNCTION:RSA +X509V3_EXT_get_nid                      285	1_1_0	EXIST::FUNCTION: +BIO_s_log                               286	1_1_0	EXIST:!WIN32,!macintosh:FUNCTION: +EC_POINT_set_to_infinity                287	1_1_0	EXIST::FUNCTION:EC +EVP_des_ede_ofb                         288	1_1_0	EXIST::FUNCTION:DES +ECDH_KDF_X9_62                          289	1_1_0	EXIST::FUNCTION:EC +ASN1_UNIVERSALSTRING_to_string          290	1_1_0	EXIST::FUNCTION: +CRYPTO_gcm128_setiv                     291	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_set_oid_flags                 292	1_1_0	EXIST::FUNCTION: +d2i_ASN1_INTEGER                        293	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_ENCRYPT                       294	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_set1_issuer          295	1_1_0	EXIST::FUNCTION:CT +X509_NAME_ENTRY_set                     296	1_1_0	EXIST::FUNCTION: +PKCS8_set0_pbe                          297	1_1_0	EXIST::FUNCTION: +PEM_write_bio_DSA_PUBKEY                298	1_1_0	EXIST::FUNCTION:DSA +PEM_X509_INFO_read_bio                  299	1_1_0	EXIST::FUNCTION: +EC_GROUP_get0_order                     300	1_1_0	EXIST::FUNCTION:EC +OCSP_BASICRESP_delete_ext               301	1_1_0	EXIST::FUNCTION:OCSP +PKCS12_get_attr_gen                     302	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_get0_safes               303	1_1_0	EXIST::FUNCTION: +EVP_PKEY_derive                         304	1_1_0	EXIST::FUNCTION: +OCSP_BASICRESP_get_ext_by_NID           305	1_1_0	EXIST::FUNCTION:OCSP +OBJ_dup                                 306	1_1_0	EXIST::FUNCTION: +CMS_signed_get_attr_count               307	1_1_0	EXIST::FUNCTION:CMS +EC_get_builtin_curves                   308	1_1_0	EXIST::FUNCTION:EC +i2d_ASN1_IA5STRING                      309	1_1_0	EXIST::FUNCTION: +OCSP_check_nonce                        310	1_1_0	EXIST::FUNCTION:OCSP +X509_STORE_CTX_init                     311	1_1_0	EXIST::FUNCTION: +OCSP_RESPONSE_free                      312	1_1_0	EXIST::FUNCTION:OCSP +ENGINE_set_DH                           313	1_1_0	EXIST::FUNCTION:ENGINE +EVP_CIPHER_CTX_set_flags                314	1_1_0	EXIST::FUNCTION: +err_free_strings_int                    315	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PKCS7_stream              316	1_1_0	EXIST::FUNCTION: +d2i_X509_CERT_AUX                       317	1_1_0	EXIST::FUNCTION: +UI_process                              318	1_1_0	EXIST::FUNCTION:UI +X509_get_subject_name                   319	1_1_0	EXIST::FUNCTION: +DH_get_1024_160                         320	1_1_0	EXIST::FUNCTION:DH +i2d_ASN1_UNIVERSALSTRING                321	1_1_0	EXIST::FUNCTION: +d2i_OCSP_RESPID                         322	1_1_0	EXIST::FUNCTION:OCSP +BIO_s_accept                            323	1_1_0	EXIST::FUNCTION:SOCK +EVP_whirlpool                           324	1_1_0	EXIST::FUNCTION:WHIRLPOOL +OCSP_ONEREQ_get1_ext_d2i                325	1_1_0	EXIST::FUNCTION:OCSP +d2i_ESS_SIGNING_CERT                    326	1_1_0	EXIST::FUNCTION:TS +EC_KEY_set_default_method               327	1_1_0	EXIST::FUNCTION:EC +X509_OBJECT_up_ref_count                328	1_1_0	EXIST::FUNCTION: +RAND_load_file                          329	1_1_0	EXIST::FUNCTION: +BIO_ctrl_reset_read_request             330	1_1_0	EXIST::FUNCTION: +CRYPTO_ccm128_tag                       331	1_1_0	EXIST::FUNCTION: +BIO_new_dgram_sctp                      332	1_1_0	EXIST::FUNCTION:DGRAM,SCTP +d2i_RSAPrivateKey_fp                    333	1_1_0	EXIST::FUNCTION:RSA,STDIO +s2i_ASN1_IA5STRING                      334	1_1_0	EXIST::FUNCTION: +UI_get_ex_data                          335	1_1_0	EXIST::FUNCTION:UI +EVP_EncryptUpdate                       336	1_1_0	EXIST::FUNCTION: +SRP_create_verifier                     337	1_1_0	EXIST::FUNCTION:SRP +TS_TST_INFO_print_bio                   338	1_1_0	EXIST::FUNCTION:TS +X509_NAME_get_index_by_OBJ              339	1_1_0	EXIST::FUNCTION: +BIO_get_host_ip                         340	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SOCK +PKCS7_add_certificate                   341	1_1_0	EXIST::FUNCTION: +TS_REQ_get_ext                          342	1_1_0	EXIST::FUNCTION:TS +X509_NAME_cmp                           343	1_1_0	EXIST::FUNCTION: +DIST_POINT_it                           344	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +DIST_POINT_it                           344	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PEM_read_X509_CRL                       345	1_1_0	EXIST::FUNCTION:STDIO +OPENSSL_sk_sort                         346	1_1_0	EXIST::FUNCTION: +CTLOG_STORE_load_file                   347	1_1_0	EXIST::FUNCTION:CT +ASN1_SEQUENCE_it                        348	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_SEQUENCE_it                        348	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_RESP_CTX_get_tst_info                349	1_1_0	EXIST::FUNCTION:TS +RC4                                     350	1_1_0	EXIST::FUNCTION:RC4 +PKCS7_stream                            352	1_1_0	EXIST::FUNCTION: +i2t_ASN1_OBJECT                         353	1_1_0	EXIST::FUNCTION: +EC_GROUP_get0_generator                 354	1_1_0	EXIST::FUNCTION:EC +RSA_padding_add_PKCS1_PSS_mgf1          355	1_1_0	EXIST::FUNCTION:RSA +EVP_MD_meth_set_init                    356	1_1_0	EXIST::FUNCTION: +X509_get_issuer_name                    357	1_1_0	EXIST::FUNCTION: +EVP_SignFinal                           358	1_1_0	EXIST::FUNCTION: +PKCS12_mac_present                      359	1_1_0	EXIST::FUNCTION: +d2i_PUBKEY_bio                          360	1_1_0	EXIST::FUNCTION: +BN_asc2bn                               361	1_1_0	EXIST::FUNCTION: +EVP_desx_cbc                            362	1_1_0	EXIST::FUNCTION:DES +SXNETID_it                              363	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +SXNETID_it                              363	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CRYPTO_gcm128_encrypt                   364	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_ctrl_str                   365	1_1_0	EXIST::FUNCTION: +CMS_signed_add1_attr_by_txt             366	1_1_0	EXIST::FUNCTION:CMS +i2d_NETSCAPE_SPKAC                      367	1_1_0	EXIST::FUNCTION: +X509V3_add_value_bool_nf                368	1_1_0	EXIST::FUNCTION: +ASN1_item_verify                        369	1_1_0	EXIST::FUNCTION: +SEED_ecb_encrypt                        370	1_1_0	EXIST::FUNCTION:SEED +X509_PUBKEY_get0_param                  371	1_1_0	EXIST::FUNCTION: +ASN1_i2d_fp                             372	1_1_0	EXIST::FUNCTION:STDIO +BIO_new_mem_buf                         373	1_1_0	EXIST::FUNCTION: +UI_get_input_flags                      374	1_1_0	EXIST::FUNCTION:UI +X509V3_EXT_REQ_add_nconf                375	1_1_0	EXIST::FUNCTION: +X509v3_asid_subset                      376	1_1_0	EXIST::FUNCTION:RFC3779 +RSA_check_key_ex                        377	1_1_0	EXIST::FUNCTION:RSA +d2i_TS_MSG_IMPRINT_bio                  378	1_1_0	EXIST::FUNCTION:TS +i2d_ASN1_TYPE                           379	1_1_0	EXIST::FUNCTION: +EVP_aes_256_wrap_pad                    380	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_kekri_id_cmp          381	1_1_0	EXIST::FUNCTION:CMS +X509_VERIFY_PARAM_get0_peername         382	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_get_oid_flags                 383	1_1_0	EXIST::FUNCTION: +CONF_free                               384	1_1_0	EXIST::FUNCTION: +DSO_get_filename                        385	1_1_0	EXIST::FUNCTION: +i2d_ASN1_SEQUENCE_ANY                   387	1_1_0	EXIST::FUNCTION: +OPENSSL_strlcpy                         388	1_1_0	EXIST::FUNCTION: +BIO_get_port                            389	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SOCK +DISPLAYTEXT_free                        390	1_1_0	EXIST::FUNCTION: +BN_div                                  391	1_1_0	EXIST::FUNCTION: +RIPEMD160_Update                        392	1_1_0	EXIST::FUNCTION:RMD160 +PEM_write_bio_CMS                       393	1_1_0	EXIST::FUNCTION:CMS +ASN1_OBJECT_new                         394	1_1_0	EXIST::FUNCTION: +EVP_des_ede3_cfb8                       395	1_1_0	EXIST::FUNCTION:DES +BIO_dump_indent_fp                      396	1_1_0	EXIST::FUNCTION:STDIO +X509_NAME_ENTRY_get_data                397	1_1_0	EXIST::FUNCTION: +BIO_socket                              398	1_1_0	EXIST::FUNCTION:SOCK +EVP_PKEY_meth_get_derive                399	1_1_0	EXIST::FUNCTION: +ASN1_STRING_clear_free                  400	1_1_0	EXIST::FUNCTION: +d2i_OCSP_REVOKEDINFO                    401	1_1_0	EXIST::FUNCTION:OCSP +ASN1_STRING_print_ex_fp                 402	1_1_0	EXIST::FUNCTION:STDIO +PKCS7_SIGNED_new                        403	1_1_0	EXIST::FUNCTION: +CMS_get0_eContentType                   404	1_1_0	EXIST::FUNCTION:CMS +HMAC_Final                              405	1_1_0	EXIST::FUNCTION: +X509_CRL_delete_ext                     406	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_ordering                407	1_1_0	EXIST::FUNCTION:TS +X509_get_extended_key_usage             408	1_1_0	EXIST::FUNCTION: +ERR_print_errors                        409	1_1_0	EXIST::FUNCTION: +X509_REVOKED_set_revocationDate         410	1_1_0	EXIST::FUNCTION: +EVP_CipherFinal_ex                      411	1_1_0	EXIST::FUNCTION: +d2i_DSA_PUBKEY                          412	1_1_0	EXIST::FUNCTION:DSA +BN_CTX_get                              413	1_1_0	EXIST::FUNCTION: +BN_to_montgomery                        414	1_1_0	EXIST::FUNCTION: +X509_OBJECT_get0_X509_CRL               415	1_1_0	EXIST::FUNCTION: +EVP_camellia_128_cfb8                   416	1_1_0	EXIST::FUNCTION:CAMELLIA +EC_KEY_METHOD_free                      417	1_1_0	EXIST::FUNCTION:EC +TS_TST_INFO_set_policy_id               418	1_1_0	EXIST::FUNCTION:TS +d2i_EXTENDED_KEY_USAGE                  419	1_1_0	EXIST::FUNCTION: +ASYNC_unblock_pause                     420	1_1_0	EXIST::FUNCTION: +i2d_X509_VAL                            421	1_1_0	EXIST::FUNCTION: +ASN1_SCTX_get_flags                     422	1_1_0	EXIST::FUNCTION: +RIPEMD160                               423	1_1_0	EXIST::FUNCTION:RMD160 +CRYPTO_ocb128_setiv                     424	1_1_0	EXIST::FUNCTION:OCB +X509_CRL_digest                         425	1_1_0	EXIST::FUNCTION: +EVP_aes_128_cbc_hmac_sha1               426	1_1_0	EXIST::FUNCTION: +ERR_load_CMS_strings                    427	1_1_0	EXIST::FUNCTION:CMS +EVP_MD_CTX_md                           428	1_1_0	EXIST::FUNCTION: +X509_REVOKED_get_ext                    429	1_1_0	EXIST::FUNCTION: +d2i_RSA_PSS_PARAMS                      430	1_1_0	EXIST::FUNCTION:RSA +USERNOTICE_free                         431	1_1_0	EXIST::FUNCTION: +MD4_Transform                           432	1_1_0	EXIST::FUNCTION:MD4 +EVP_CIPHER_block_size                   433	1_1_0	EXIST::FUNCTION: +CERTIFICATEPOLICIES_new                 434	1_1_0	EXIST::FUNCTION: +BIO_dump_fp                             435	1_1_0	EXIST::FUNCTION:STDIO +BIO_set_flags                           436	1_1_0	EXIST::FUNCTION: +BN_is_one                               437	1_1_0	EXIST::FUNCTION: +TS_CONF_set_def_policy                  438	1_1_0	EXIST::FUNCTION:TS +DSA_free                                439	1_1_0	EXIST::FUNCTION:DSA +BN_GENCB_new                            440	1_1_0	EXIST::FUNCTION: +X509_VAL_new                            441	1_1_0	EXIST::FUNCTION: +NCONF_load                              442	1_1_0	EXIST::FUNCTION: +ASN1_put_object                         443	1_1_0	EXIST::FUNCTION: +d2i_OCSP_RESPONSE                       444	1_1_0	EXIST::FUNCTION:OCSP +d2i_PublicKey                           445	1_1_0	EXIST::FUNCTION: +ENGINE_set_ex_data                      446	1_1_0	EXIST::FUNCTION:ENGINE +X509_get_default_private_dir            447	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set0_dane                448	1_1_0	EXIST::FUNCTION: +EVP_des_ecb                             449	1_1_0	EXIST::FUNCTION:DES +OCSP_resp_get0                          450	1_1_0	EXIST::FUNCTION:OCSP +RSA_X931_generate_key_ex                452	1_1_0	EXIST::FUNCTION:RSA +X509_get_serialNumber                   453	1_1_0	EXIST::FUNCTION: +BIO_sock_should_retry                   454	1_1_0	EXIST::FUNCTION:SOCK +ENGINE_get_digests                      455	1_1_0	EXIST::FUNCTION:ENGINE +TS_MSG_IMPRINT_get_algo                 456	1_1_0	EXIST::FUNCTION:TS +DH_new_method                           457	1_1_0	EXIST::FUNCTION:DH +BF_ecb_encrypt                          458	1_1_0	EXIST::FUNCTION:BF +PEM_write_bio_DHparams                  459	1_1_0	EXIST::FUNCTION:DH +EVP_DigestFinal                         460	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE 461	1_1_0	EXIST::FUNCTION:CT +X509v3_asid_add_id_or_range             462	1_1_0	EXIST::FUNCTION:RFC3779 +X509_NAME_ENTRY_create_by_NID           463	1_1_0	EXIST::FUNCTION: +EC_KEY_METHOD_get_init                  464	1_1_0	EXIST::FUNCTION:EC +ASN1_INTEGER_to_BN                      465	1_1_0	EXIST::FUNCTION: +OPENSSL_memcmp                          466	1_1_0	EXIST::FUNCTION: +BUF_MEM_new                             467	1_1_0	EXIST::FUNCTION: +DSO_set_filename                        468	1_1_0	EXIST::FUNCTION: +DH_new                                  469	1_1_0	EXIST::FUNCTION:DH +OCSP_RESPID_free                        470	1_1_0	EXIST::FUNCTION:OCSP +PKCS5_pbe2_set                          471	1_1_0	EXIST::FUNCTION: +SCT_set_signature_nid                   473	1_1_0	EXIST::FUNCTION:CT +i2d_RSA_PUBKEY_fp                       474	1_1_0	EXIST::FUNCTION:RSA,STDIO +PKCS12_BAGS_it                          475	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS12_BAGS_it                          475	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_pubkey_digest                      476	1_1_0	EXIST::FUNCTION: +ENGINE_register_all_RSA                 477	1_1_0	EXIST::FUNCTION:ENGINE +CRYPTO_THREAD_set_local                 478	1_1_0	EXIST::FUNCTION: +X509_get_default_cert_dir_env           479	1_1_0	EXIST::FUNCTION: +X509_CRL_sort                           480	1_1_0	EXIST::FUNCTION: +i2d_RSA_PUBKEY_bio                      481	1_1_0	EXIST::FUNCTION:RSA +ASN1_T61STRING_free                     482	1_1_0	EXIST::FUNCTION: +PEM_write_CMS                           483	1_1_0	EXIST::FUNCTION:CMS,STDIO +OPENSSL_sk_find                         484	1_1_0	EXIST::FUNCTION: +ENGINE_get_ciphers                      485	1_1_0	EXIST::FUNCTION:ENGINE +EVP_rc2_ofb                             486	1_1_0	EXIST::FUNCTION:RC2 +EVP_PKEY_set1_RSA                       487	1_1_0	EXIST::FUNCTION:RSA +CMS_SignerInfo_get0_md_ctx              488	1_1_0	EXIST::FUNCTION:CMS +X509_STORE_set_trust                    489	1_1_0	EXIST::FUNCTION: +d2i_POLICYINFO                          490	1_1_0	EXIST::FUNCTION: +DES_cbc_encrypt                         491	1_1_0	EXIST::FUNCTION:DES +BN_GF2m_mod_sqr_arr                     492	1_1_0	EXIST::FUNCTION:EC2M +ASN1_PRINTABLESTRING_it                 493	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_PRINTABLESTRING_it                 493	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BIO_f_cipher                            494	1_1_0	EXIST::FUNCTION: +UI_destroy_method                       495	1_1_0	EXIST::FUNCTION:UI +BN_get_rfc3526_prime_3072               496	1_1_0	EXIST::FUNCTION: +X509_INFO_new                           497	1_1_0	EXIST::FUNCTION: +OCSP_RESPDATA_it                        498	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_RESPDATA_it                        498	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +X509_CRL_print                          499	1_1_0	EXIST::FUNCTION: +WHIRLPOOL_Update                        500	1_1_0	EXIST::FUNCTION:WHIRLPOOL +DSA_get_ex_data                         501	1_1_0	EXIST::FUNCTION:DSA +BN_copy                                 502	1_1_0	EXIST::FUNCTION: +FIPS_mode_set                           503	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_add0_policy           504	1_1_0	EXIST::FUNCTION: +PKCS7_cert_from_signer_info             505	1_1_0	EXIST::FUNCTION: +X509_TRUST_get_trust                    506	1_1_0	EXIST::FUNCTION: +DES_string_to_key                       507	1_1_0	EXIST::FUNCTION:DES +ERR_error_string                        508	1_1_0	EXIST::FUNCTION: +BIO_new_connect                         509	1_1_0	EXIST::FUNCTION:SOCK +DSA_new_method                          511	1_1_0	EXIST::FUNCTION:DSA +OCSP_CERTID_new                         512	1_1_0	EXIST::FUNCTION:OCSP +X509_CRL_get_signature_nid              513	1_1_0	EXIST::FUNCTION: +X509_policy_level_node_count            514	1_1_0	EXIST::FUNCTION: +d2i_OCSP_CERTSTATUS                     515	1_1_0	EXIST::FUNCTION:OCSP +X509V3_add1_i2d                         516	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_set_serial                  517	1_1_0	EXIST::FUNCTION:TS +OCSP_RESPBYTES_new                      518	1_1_0	EXIST::FUNCTION:OCSP +OCSP_SINGLERESP_delete_ext              519	1_1_0	EXIST::FUNCTION:OCSP +EVP_MD_CTX_test_flags                   521	1_1_0	EXIST::FUNCTION: +X509v3_addr_validate_path               522	1_1_0	EXIST::FUNCTION:RFC3779 +BIO_new_fp                              523	1_1_0	EXIST::FUNCTION:STDIO +EC_GROUP_set_generator                  524	1_1_0	EXIST::FUNCTION:EC +CRYPTO_memdup                           525	1_1_0	EXIST::FUNCTION: +DH_generate_parameters                  526	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8,DH +BN_set_negative                         527	1_1_0	EXIST::FUNCTION: +i2d_TS_RESP_bio                         528	1_1_0	EXIST::FUNCTION:TS +ASYNC_WAIT_CTX_set_wait_fd              529	1_1_0	EXIST::FUNCTION: +ERR_func_error_string                   530	1_1_0	EXIST::FUNCTION: +ASN1_STRING_data                        531	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +X509_CRL_add1_ext_i2d                   532	1_1_0	EXIST::FUNCTION: +i2d_TS_TST_INFO                         533	1_1_0	EXIST::FUNCTION:TS +OBJ_sigid_free                          534	1_1_0	EXIST::FUNCTION: +TS_STATUS_INFO_get0_status              535	1_1_0	EXIST::FUNCTION:TS +EC_KEY_get_flags                        536	1_1_0	EXIST::FUNCTION:EC +ASN1_TYPE_cmp                           537	1_1_0	EXIST::FUNCTION: +i2d_RSAPublicKey                        538	1_1_0	EXIST::FUNCTION:RSA +EC_GROUP_get_trinomial_basis            539	1_1_0	EXIST::FUNCTION:EC,EC2M +BIO_ADDRINFO_protocol                   540	1_1_0	EXIST::FUNCTION:SOCK +i2d_PBKDF2PARAM                         541	1_1_0	EXIST::FUNCTION: +ENGINE_unregister_RAND                  542	1_1_0	EXIST::FUNCTION:ENGINE +PEM_write_bio_RSAPrivateKey             543	1_1_0	EXIST::FUNCTION:RSA +CONF_get_number                         544	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_get_object               545	1_1_0	EXIST::FUNCTION: +X509_EXTENSIONS_it                      546	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_EXTENSIONS_it                      546	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EC_POINT_set_compressed_coordinates_GF2m 547	1_1_0	EXIST::FUNCTION:EC,EC2M +RSA_sign_ASN1_OCTET_STRING              548	1_1_0	EXIST::FUNCTION:RSA +d2i_X509_CRL_fp                         549	1_1_0	EXIST::FUNCTION:STDIO +i2d_RSA_PUBKEY                          550	1_1_0	EXIST::FUNCTION:RSA +EVP_aes_128_ccm                         551	1_1_0	EXIST::FUNCTION: +ECParameters_print                      552	1_1_0	EXIST::FUNCTION:EC +OCSP_SINGLERESP_get1_ext_d2i            553	1_1_0	EXIST::FUNCTION:OCSP +RAND_status                             554	1_1_0	EXIST::FUNCTION: +EVP_ripemd160                           555	1_1_0	EXIST::FUNCTION:RMD160 +EVP_MD_meth_set_final                   556	1_1_0	EXIST::FUNCTION: +ENGINE_get_cmd_defns                    557	1_1_0	EXIST::FUNCTION:ENGINE +d2i_PKEY_USAGE_PERIOD                   558	1_1_0	EXIST::FUNCTION: +RSAPublicKey_dup                        559	1_1_0	EXIST::FUNCTION:RSA +RAND_write_file                         560	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod                             561	1_1_0	EXIST::FUNCTION:EC2M +EC_GROUP_get_pentanomial_basis          562	1_1_0	EXIST::FUNCTION:EC,EC2M +X509_CINF_free                          563	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_free                     564	1_1_0	EXIST::FUNCTION: +EVP_DigestSignInit                      565	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_get0_issuer          566	1_1_0	EXIST::FUNCTION:CT +TLS_FEATURE_new                         567	1_1_0	EXIST::FUNCTION: +RSA_get_default_method                  568	1_1_0	EXIST::FUNCTION:RSA +CRYPTO_cts128_encrypt_block             569	1_1_0	EXIST::FUNCTION: +ASN1_digest                             570	1_1_0	EXIST::FUNCTION: +ERR_load_X509V3_strings                 571	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_cleanup               572	1_1_0	EXIST::FUNCTION: +d2i_X509                                574	1_1_0	EXIST::FUNCTION: +a2i_ASN1_STRING                         575	1_1_0	EXIST::FUNCTION: +EC_GROUP_get_mont_data                  576	1_1_0	EXIST::FUNCTION:EC +CMAC_CTX_copy                           577	1_1_0	EXIST::FUNCTION:CMAC +EVP_camellia_128_cfb128                 579	1_1_0	EXIST::FUNCTION:CAMELLIA +DH_compute_key_padded                   580	1_1_0	EXIST::FUNCTION:DH +ERR_load_CONF_strings                   581	1_1_0	EXIST::FUNCTION: +ESS_ISSUER_SERIAL_dup                   582	1_1_0	EXIST::FUNCTION:TS +BN_GF2m_mod_exp_arr                     583	1_1_0	EXIST::FUNCTION:EC2M +ASN1_UTF8STRING_free                    584	1_1_0	EXIST::FUNCTION: +BN_X931_generate_prime_ex               585	1_1_0	EXIST::FUNCTION: +ENGINE_get_RAND                         586	1_1_0	EXIST::FUNCTION:ENGINE +EVP_DecryptInit                         587	1_1_0	EXIST::FUNCTION: +BN_bin2bn                               588	1_1_0	EXIST::FUNCTION: +X509_subject_name_hash                  589	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_meth_set_flags               590	1_1_0	EXIST::FUNCTION: +TS_CONF_set_clock_precision_digits      591	1_1_0	EXIST::FUNCTION:TS +ASN1_TYPE_set                           592	1_1_0	EXIST::FUNCTION: +i2d_PKCS8_PRIV_KEY_INFO                 593	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_bio                           594	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_get_copy                    595	1_1_0	EXIST::FUNCTION: +RAND_query_egd_bytes                    596	1_1_0	EXIST::FUNCTION:EGD +i2d_ASN1_PRINTABLE                      597	1_1_0	EXIST::FUNCTION: +ENGINE_cmd_is_executable                598	1_1_0	EXIST::FUNCTION:ENGINE +BIO_puts                                599	1_1_0	EXIST::FUNCTION: +RSAPublicKey_it                         601	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA +RSAPublicKey_it                         601	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA +ISSUING_DIST_POINT_new                  602	1_1_0	EXIST::FUNCTION: +X509_VAL_it                             603	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_VAL_it                             603	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_DigestVerifyInit                    604	1_1_0	EXIST::FUNCTION: +i2d_IPAddressChoice                     605	1_1_0	EXIST::FUNCTION:RFC3779 +EVP_md5                                 606	1_1_0	EXIST::FUNCTION:MD5 +ASRange_new                             607	1_1_0	EXIST::FUNCTION:RFC3779 +BN_GF2m_mod_mul_arr                     608	1_1_0	EXIST::FUNCTION:EC2M +d2i_RSA_OAEP_PARAMS                     609	1_1_0	EXIST::FUNCTION:RSA +BIO_s_bio                               610	1_1_0	EXIST::FUNCTION: +OBJ_NAME_add                            611	1_1_0	EXIST::FUNCTION: +BIO_fd_non_fatal_error                  612	1_1_0	EXIST::FUNCTION: +EVP_PKEY_set_type                       613	1_1_0	EXIST::FUNCTION: +ENGINE_get_next                         614	1_1_0	EXIST::FUNCTION:ENGINE +BN_is_negative                          615	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get_attr_count                 616	1_1_0	EXIST::FUNCTION: +X509_REVOKED_get_ext_by_critical        617	1_1_0	EXIST::FUNCTION: +X509at_get_attr                         618	1_1_0	EXIST::FUNCTION: +X509_PUBKEY_it                          619	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_PUBKEY_it                          619	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +DES_ede3_ofb64_encrypt                  620	1_1_0	EXIST::FUNCTION:DES +EC_KEY_METHOD_get_compute_key           621	1_1_0	EXIST::FUNCTION:EC +RC2_cfb64_encrypt                       622	1_1_0	EXIST::FUNCTION:RC2 +EVP_EncryptFinal_ex                     623	1_1_0	EXIST::FUNCTION: +ERR_load_RSA_strings                    624	1_1_0	EXIST::FUNCTION:RSA +CRYPTO_secure_malloc_done               625	1_1_0	EXIST::FUNCTION: +RSA_OAEP_PARAMS_new                     626	1_1_0	EXIST::FUNCTION:RSA +X509_NAME_free                          627	1_1_0	EXIST::FUNCTION: +PKCS12_set_mac                          628	1_1_0	EXIST::FUNCTION: +UI_get0_result_string                   629	1_1_0	EXIST::FUNCTION:UI +TS_RESP_CTX_add_policy                  630	1_1_0	EXIST::FUNCTION:TS +X509_REQ_dup                            631	1_1_0	EXIST::FUNCTION: +d2i_DSA_PUBKEY_fp                       633	1_1_0	EXIST::FUNCTION:DSA,STDIO +OCSP_REQ_CTX_nbio_d2i                   634	1_1_0	EXIST::FUNCTION:OCSP +d2i_X509_REQ_fp                         635	1_1_0	EXIST::FUNCTION:STDIO +DH_OpenSSL                              636	1_1_0	EXIST::FUNCTION:DH +BN_get_rfc3526_prime_8192               637	1_1_0	EXIST::FUNCTION: +X509_REVOKED_it                         638	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_REVOKED_it                         638	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CRYPTO_THREAD_write_lock                639	1_1_0	EXIST::FUNCTION: +X509V3_NAME_from_section                640	1_1_0	EXIST::FUNCTION: +EC_POINT_set_compressed_coordinates_GFp 641	1_1_0	EXIST::FUNCTION:EC +OCSP_SINGLERESP_get0_id                 642	1_1_0	EXIST::FUNCTION:OCSP +UI_add_info_string                      643	1_1_0	EXIST::FUNCTION:UI +OBJ_NAME_remove                         644	1_1_0	EXIST::FUNCTION: +UI_get_method                           645	1_1_0	EXIST::FUNCTION:UI +CONF_modules_unload                     646	1_1_0	EXIST::FUNCTION: +CRYPTO_ccm128_encrypt_ccm64             647	1_1_0	EXIST::FUNCTION: +CRYPTO_secure_malloc_init               648	1_1_0	EXIST::FUNCTION: +DSAparams_dup                           649	1_1_0	EXIST::FUNCTION:DSA +PKCS8_PRIV_KEY_INFO_new                 650	1_1_0	EXIST::FUNCTION: +TS_RESP_verify_token                    652	1_1_0	EXIST::FUNCTION:TS +PEM_read_bio_CMS                        653	1_1_0	EXIST::FUNCTION:CMS +PEM_get_EVP_CIPHER_INFO                 654	1_1_0	EXIST::FUNCTION: +X509V3_EXT_print                        655	1_1_0	EXIST::FUNCTION: +i2d_OCSP_SINGLERESP                     656	1_1_0	EXIST::FUNCTION:OCSP +ESS_CERT_ID_free                        657	1_1_0	EXIST::FUNCTION:TS +PEM_SignInit                            658	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_set_key_length           659	1_1_0	EXIST::FUNCTION: +X509_delete_ext                         660	1_1_0	EXIST::FUNCTION: +OCSP_resp_get0_produced_at              661	1_1_0	EXIST::FUNCTION:OCSP +IDEA_encrypt                            662	1_1_0	EXIST::FUNCTION:IDEA +CRYPTO_nistcts128_encrypt_block         663	1_1_0	EXIST::FUNCTION: +EVP_MD_do_all                           664	1_1_0	EXIST::FUNCTION: +EC_KEY_oct2priv                         665	1_1_0	EXIST::FUNCTION:EC +CONF_parse_list                         666	1_1_0	EXIST::FUNCTION: +ENGINE_set_table_flags                  667	1_1_0	EXIST::FUNCTION:ENGINE +EVP_MD_meth_get_ctrl                    668	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_get_int_octetstring           669	1_1_0	EXIST::FUNCTION: +PKCS5_pbe_set0_algor                    670	1_1_0	EXIST::FUNCTION: +ENGINE_get_table_flags                  671	1_1_0	EXIST::FUNCTION:ENGINE +PKCS12_MAC_DATA_new                     672	1_1_0	EXIST::FUNCTION: +X509_chain_up_ref                       673	1_1_0	EXIST::FUNCTION: +OCSP_REQINFO_it                         674	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_REQINFO_it                         674	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +PKCS12_add_localkeyid                   675	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_get0_type                676	1_1_0	EXIST::FUNCTION: +X509_TRUST_set_default                  677	1_1_0	EXIST::FUNCTION: +TXT_DB_read                             678	1_1_0	EXIST::FUNCTION: +BN_sub                                  679	1_1_0	EXIST::FUNCTION: +ASRange_free                            680	1_1_0	EXIST::FUNCTION:RFC3779 +EVP_aes_192_cfb8                        681	1_1_0	EXIST::FUNCTION: +DSO_global_lookup                       682	1_1_0	EXIST::FUNCTION: +PKCS7_SIGNER_INFO_it                    683	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_SIGNER_INFO_it                    683	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CRYPTO_ocb128_copy_ctx                  684	1_1_0	EXIST::FUNCTION:OCB +TS_REQ_get_ext_d2i                      685	1_1_0	EXIST::FUNCTION:TS +AES_ige_encrypt                         686	1_1_0	EXIST::FUNCTION: +d2i_SXNET                               687	1_1_0	EXIST::FUNCTION: +CTLOG_get0_log_id                       688	1_1_0	EXIST::FUNCTION:CT +CMS_RecipientInfo_ktri_get0_signer_id   689	1_1_0	EXIST::FUNCTION:CMS +OCSP_REQUEST_add1_ext_i2d               690	1_1_0	EXIST::FUNCTION:OCSP +EVP_PBE_CipherInit                      691	1_1_0	EXIST::FUNCTION: +DSA_dup_DH                              692	1_1_0	EXIST::FUNCTION:DH,DSA +CONF_imodule_get_value                  693	1_1_0	EXIST::FUNCTION: +OCSP_id_issuer_cmp                      694	1_1_0	EXIST::FUNCTION:OCSP +ASN1_INTEGER_free                       695	1_1_0	EXIST::FUNCTION: +BN_get0_nist_prime_224                  696	1_1_0	EXIST::FUNCTION: +OPENSSL_isservice                       697	1_1_0	EXIST::FUNCTION: +DH_compute_key                          698	1_1_0	EXIST::FUNCTION:DH +TS_RESP_CTX_set_signer_key              699	1_1_0	EXIST::FUNCTION:TS +i2d_DSAPrivateKey_bio                   700	1_1_0	EXIST::FUNCTION:DSA +ASN1_item_d2i                           702	1_1_0	EXIST::FUNCTION: +BIO_int_ctrl                            703	1_1_0	EXIST::FUNCTION: +CMS_ReceiptRequest_it                   704	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:CMS +CMS_ReceiptRequest_it                   704	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:CMS +X509_ATTRIBUTE_get0_type                705	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_copy                    706	1_1_0	EXIST::FUNCTION: +d2i_ASN1_ENUMERATED                     707	1_1_0	EXIST::FUNCTION: +d2i_ASIdOrRange                         708	1_1_0	EXIST::FUNCTION:RFC3779 +i2s_ASN1_OCTET_STRING                   709	1_1_0	EXIST::FUNCTION: +X509_add1_reject_object                 710	1_1_0	EXIST::FUNCTION: +ERR_set_mark                            711	1_1_0	EXIST::FUNCTION: +d2i_ASN1_VISIBLESTRING                  712	1_1_0	EXIST::FUNCTION: +X509_NAME_ENTRY_dup                     714	1_1_0	EXIST::FUNCTION: +X509_certificate_type                   715	1_1_0	EXIST::FUNCTION: +PKCS7_add_signature                     716	1_1_0	EXIST::FUNCTION: +OBJ_ln2nid                              717	1_1_0	EXIST::FUNCTION: +CRYPTO_128_unwrap                       718	1_1_0	EXIST::FUNCTION: +BIO_new_PKCS7                           719	1_1_0	EXIST::FUNCTION: +UI_get0_user_data                       720	1_1_0	EXIST::FUNCTION:UI +TS_RESP_get_token                       721	1_1_0	EXIST::FUNCTION:TS +OCSP_RESPID_new                         722	1_1_0	EXIST::FUNCTION:OCSP +ASN1_SET_ANY_it                         723	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_SET_ANY_it                         723	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +d2i_TS_RESP_bio                         724	1_1_0	EXIST::FUNCTION:TS +PEM_write_X509_REQ                      725	1_1_0	EXIST::FUNCTION:STDIO +BIO_snprintf                            726	1_1_0	EXIST::FUNCTION: +EC_POINT_hex2point                      727	1_1_0	EXIST::FUNCTION:EC +X509v3_get_ext_by_critical              728	1_1_0	EXIST::FUNCTION: +ENGINE_get_default_RSA                  729	1_1_0	EXIST::FUNCTION:ENGINE +DSA_sign_setup                          730	1_1_0	EXIST::FUNCTION:DSA +OPENSSL_sk_new_null                     731	1_1_0	EXIST::FUNCTION: +PEM_read_PKCS8                          732	1_1_0	EXIST::FUNCTION:STDIO +BN_mod_sqr                              733	1_1_0	EXIST::FUNCTION: +CAST_ofb64_encrypt                      734	1_1_0	EXIST::FUNCTION:CAST +TXT_DB_write                            735	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_get1_ext_d2i               736	1_1_0	EXIST::FUNCTION:OCSP +CMS_unsigned_add1_attr_by_NID           737	1_1_0	EXIST::FUNCTION:CMS +BN_mod_exp_mont                         738	1_1_0	EXIST::FUNCTION: +d2i_DHxparams                           739	1_1_0	EXIST::FUNCTION:DH +DH_size                                 740	1_1_0	EXIST::FUNCTION:DH +CONF_imodule_get_name                   741	1_1_0	EXIST::FUNCTION: +ENGINE_get_pkey_meth_engine             742	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_BASICRESP_free                     743	1_1_0	EXIST::FUNCTION:OCSP +BN_set_params                           744	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8 +BN_add                                  745	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_free                         746	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_ext_d2i                 747	1_1_0	EXIST::FUNCTION:TS +RSA_check_key                           748	1_1_0	EXIST::FUNCTION:RSA +TS_MSG_IMPRINT_set_algo                 749	1_1_0	EXIST::FUNCTION:TS +BN_nist_mod_521                         750	1_1_0	EXIST::FUNCTION: +CRYPTO_THREAD_get_local                 751	1_1_0	EXIST::FUNCTION: +PKCS7_to_TS_TST_INFO                    752	1_1_0	EXIST::FUNCTION:TS +X509_STORE_CTX_new                      753	1_1_0	EXIST::FUNCTION: +CTLOG_STORE_new                         754	1_1_0	EXIST::FUNCTION:CT +EVP_CIPHER_meth_set_cleanup             755	1_1_0	EXIST::FUNCTION: +d2i_PKCS12_SAFEBAG                      756	1_1_0	EXIST::FUNCTION: +EVP_MD_pkey_type                        757	1_1_0	EXIST::FUNCTION: +X509_policy_node_get0_qualifiers        758	1_1_0	EXIST::FUNCTION: +OCSP_cert_status_str                    759	1_1_0	EXIST::FUNCTION:OCSP +EVP_MD_meth_get_flags                   760	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_set                     761	1_1_0	EXIST::FUNCTION: +UI_UTIL_read_pw                         762	1_1_0	EXIST::FUNCTION:UI +PKCS7_ENC_CONTENT_free                  763	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_type                  764	1_1_0	EXIST::FUNCTION:CMS +OCSP_BASICRESP_get_ext                  765	1_1_0	EXIST::FUNCTION:OCSP +BN_lebin2bn                             766	1_1_0	EXIST::FUNCTION: +AES_decrypt                             767	1_1_0	EXIST::FUNCTION: +BIO_fd_should_retry                     768	1_1_0	EXIST::FUNCTION: +ASN1_STRING_new                         769	1_1_0	EXIST::FUNCTION: +ENGINE_init                             770	1_1_0	EXIST::FUNCTION:ENGINE +TS_RESP_CTX_add_flags                   771	1_1_0	EXIST::FUNCTION:TS +BIO_gethostbyname                       772	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SOCK +X509V3_EXT_add                          773	1_1_0	EXIST::FUNCTION: +UI_add_verify_string                    774	1_1_0	EXIST::FUNCTION:UI +EVP_rc5_32_12_16_cfb64                  775	1_1_0	EXIST::FUNCTION:RC5 +PKCS7_dataVerify                        776	1_1_0	EXIST::FUNCTION: +PKCS7_SIGNER_INFO_free                  777	1_1_0	EXIST::FUNCTION: +PKCS7_add_attrib_smimecap               778	1_1_0	EXIST::FUNCTION: +ERR_peek_last_error_line_data           779	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_sign                  780	1_1_0	EXIST::FUNCTION: +ASN1_i2d_bio                            781	1_1_0	EXIST::FUNCTION: +DSA_verify                              782	1_1_0	EXIST::FUNCTION:DSA +i2a_ASN1_OBJECT                         783	1_1_0	EXIST::FUNCTION: +i2d_PKEY_USAGE_PERIOD                   784	1_1_0	EXIST::FUNCTION: +DSA_new                                 785	1_1_0	EXIST::FUNCTION:DSA +PEM_read_bio_X509_CRL                   786	1_1_0	EXIST::FUNCTION: +PKCS7_dataDecode                        787	1_1_0	EXIST::FUNCTION: +DSA_up_ref                              788	1_1_0	EXIST::FUNCTION:DSA +EVP_DecryptInit_ex                      789	1_1_0	EXIST::FUNCTION: +CONF_get1_default_config_file           790	1_1_0	EXIST::FUNCTION: +CRYPTO_ocb128_encrypt                   791	1_1_0	EXIST::FUNCTION:OCB +EXTENDED_KEY_USAGE_new                  792	1_1_0	EXIST::FUNCTION: +EVP_EncryptFinal                        793	1_1_0	EXIST::FUNCTION: +PEM_write_ECPrivateKey                  794	1_1_0	EXIST::FUNCTION:EC,STDIO +EVP_CIPHER_meth_set_get_asn1_params     796	1_1_0	EXIST::FUNCTION: +PKCS7_dataInit                          797	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_set_app_data               798	1_1_0	EXIST::FUNCTION: +a2i_GENERAL_NAME                        799	1_1_0	EXIST::FUNCTION: +SXNETID_new                             800	1_1_0	EXIST::FUNCTION: +RC4_options                             801	1_1_0	EXIST::FUNCTION:RC4 +BIO_f_null                              802	1_1_0	EXIST::FUNCTION: +EC_GROUP_set_curve_name                 803	1_1_0	EXIST::FUNCTION:EC +d2i_PBE2PARAM                           804	1_1_0	EXIST::FUNCTION: +EVP_PKEY_security_bits                  805	1_1_0	EXIST::FUNCTION: +PKCS12_unpack_p7encdata                 806	1_1_0	EXIST::FUNCTION: +X509V3_EXT_i2d                          807	1_1_0	EXIST::FUNCTION: +X509V3_get_value_bool                   808	1_1_0	EXIST::FUNCTION: +X509_verify_cert_error_string           809	1_1_0	EXIST::FUNCTION: +d2i_X509_PUBKEY                         810	1_1_0	EXIST::FUNCTION: +i2a_ASN1_ENUMERATED                     811	1_1_0	EXIST::FUNCTION: +PKCS7_ISSUER_AND_SERIAL_new             812	1_1_0	EXIST::FUNCTION: +d2i_USERNOTICE                          813	1_1_0	EXIST::FUNCTION: +X509_cmp                                814	1_1_0	EXIST::FUNCTION: +EVP_PKEY_set1_EC_KEY                    815	1_1_0	EXIST::FUNCTION:EC +ECPKParameters_print_fp                 816	1_1_0	EXIST::FUNCTION:EC,STDIO +GENERAL_SUBTREE_free                    817	1_1_0	EXIST::FUNCTION: +RSA_blinding_off                        818	1_1_0	EXIST::FUNCTION:RSA +i2d_OCSP_REVOKEDINFO                    819	1_1_0	EXIST::FUNCTION:OCSP +X509V3_add_standard_extensions          820	1_1_0	EXIST::FUNCTION: +PEM_write_bio_RSA_PUBKEY                821	1_1_0	EXIST::FUNCTION:RSA +i2d_ASN1_UTF8STRING                     822	1_1_0	EXIST::FUNCTION: +TS_REQ_delete_ext                       823	1_1_0	EXIST::FUNCTION:TS +PKCS7_DIGEST_free                       824	1_1_0	EXIST::FUNCTION: +OBJ_nid2ln                              825	1_1_0	EXIST::FUNCTION: +COMP_CTX_new                            826	1_1_0	EXIST::FUNCTION:COMP +BIO_ADDR_family                         827	1_1_0	EXIST::FUNCTION:SOCK +OCSP_RESPONSE_it                        828	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_RESPONSE_it                        828	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +BIO_ADDRINFO_socktype                   829	1_1_0	EXIST::FUNCTION:SOCK +d2i_X509_REQ_bio                        830	1_1_0	EXIST::FUNCTION: +EVP_PBE_cleanup                         831	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_current_crl         832	1_1_0	EXIST::FUNCTION: +CMS_get0_SignerInfos                    833	1_1_0	EXIST::FUNCTION:CMS +EVP_PKEY_paramgen                       834	1_1_0	EXIST::FUNCTION: +PEM_write_PKCS8PrivateKey_nid           835	1_1_0	EXIST::FUNCTION:STDIO +PKCS7_ATTR_VERIFY_it                    836	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_ATTR_VERIFY_it                    836	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OCSP_response_status_str                837	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_gcm128_new                       838	1_1_0	EXIST::FUNCTION: +SMIME_read_PKCS7                        839	1_1_0	EXIST::FUNCTION: +EC_GROUP_copy                           840	1_1_0	EXIST::FUNCTION:EC +ENGINE_set_ciphers                      841	1_1_0	EXIST::FUNCTION:ENGINE +OPENSSL_LH_doall_arg                    842	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_get_ext_by_NID             843	1_1_0	EXIST::FUNCTION:OCSP +X509_REQ_get_attr_by_NID                844	1_1_0	EXIST::FUNCTION: +PBE2PARAM_new                           845	1_1_0	EXIST::FUNCTION: +DES_ecb_encrypt                         846	1_1_0	EXIST::FUNCTION:DES +EVP_camellia_256_ecb                    847	1_1_0	EXIST::FUNCTION:CAMELLIA +PEM_read_RSA_PUBKEY                     848	1_1_0	EXIST::FUNCTION:RSA,STDIO +d2i_NETSCAPE_SPKAC                      849	1_1_0	EXIST::FUNCTION: +ASN1_TIME_check                         851	1_1_0	EXIST::FUNCTION: +PKCS7_DIGEST_new                        852	1_1_0	EXIST::FUNCTION: +i2d_TS_TST_INFO_fp                      853	1_1_0	EXIST::FUNCTION:STDIO,TS +d2i_PKCS8_fp                            854	1_1_0	EXIST::FUNCTION:STDIO +EVP_PKEY_keygen                         855	1_1_0	EXIST::FUNCTION: +X509_CRL_dup                            856	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_get_cb                     857	1_1_0	EXIST::FUNCTION: +X509_STORE_free                         858	1_1_0	EXIST::FUNCTION: +ECDSA_sign_ex                           859	1_1_0	EXIST::FUNCTION:EC +TXT_DB_insert                           860	1_1_0	EXIST::FUNCTION: +EC_POINTs_make_affine                   861	1_1_0	EXIST::FUNCTION:EC +RSA_padding_add_PKCS1_PSS               862	1_1_0	EXIST::FUNCTION:RSA +BF_options                              863	1_1_0	EXIST::FUNCTION:BF +OCSP_BASICRESP_it                       864	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_BASICRESP_it                       864	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +X509_VERIFY_PARAM_get0_name             865	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_signer_digest           866	1_1_0	EXIST::FUNCTION:TS +X509_VERIFY_PARAM_set1_email            867	1_1_0	EXIST::FUNCTION: +BIO_sock_error                          868	1_1_0	EXIST::FUNCTION:SOCK +RSA_set_default_method                  869	1_1_0	EXIST::FUNCTION:RSA +BN_GF2m_mod_sqrt_arr                    870	1_1_0	EXIST::FUNCTION:EC2M +X509_get0_extensions                    871	1_1_0	EXIST::FUNCTION: +TS_STATUS_INFO_set_status               872	1_1_0	EXIST::FUNCTION:TS +RSA_verify                              873	1_1_0	EXIST::FUNCTION:RSA +ASN1_FBOOLEAN_it                        874	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_FBOOLEAN_it                        874	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +d2i_ASN1_TIME                           875	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_signctx               876	1_1_0	EXIST::FUNCTION: +EC_KEY_METHOD_set_compute_key           877	1_1_0	EXIST::FUNCTION:EC +X509_REQ_INFO_free                      878	1_1_0	EXIST::FUNCTION: +CMS_ReceiptRequest_create0              879	1_1_0	EXIST::FUNCTION:CMS +EVP_MD_meth_set_cleanup                 880	1_1_0	EXIST::FUNCTION: +EVP_aes_128_xts                         881	1_1_0	EXIST::FUNCTION: +TS_RESP_verify_signature                883	1_1_0	EXIST::FUNCTION:TS +ENGINE_set_pkey_meths                   884	1_1_0	EXIST::FUNCTION:ENGINE +CMS_EncryptedData_decrypt               885	1_1_0	EXIST::FUNCTION:CMS +CONF_module_add                         886	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_print                      887	1_1_0	EXIST::FUNCTION: +X509_REQ_verify                         888	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set_purpose           889	1_1_0	EXIST::FUNCTION: +i2d_TS_MSG_IMPRINT_bio                  890	1_1_0	EXIST::FUNCTION:TS +X509_EXTENSION_set_object               891	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_get_app_data             892	1_1_0	EXIST::FUNCTION: +CRL_DIST_POINTS_it                      893	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +CRL_DIST_POINTS_it                      893	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +DIRECTORYSTRING_new                     894	1_1_0	EXIST::FUNCTION: +ERR_load_ASYNC_strings                  895	1_1_0	EXIST::FUNCTION: +EVP_bf_cfb64                            896	1_1_0	EXIST::FUNCTION:BF +PKCS7_sign_add_signer                   897	1_1_0	EXIST::FUNCTION: +X509_print_ex                           898	1_1_0	EXIST::FUNCTION: +PKCS7_add_recipient                     899	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_add_ext                 900	1_1_0	EXIST::FUNCTION:OCSP +d2i_X509_SIG                            901	1_1_0	EXIST::FUNCTION: +X509_NAME_set                           902	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_pop                          903	1_1_0	EXIST::FUNCTION: +ENGINE_register_ciphers                 904	1_1_0	EXIST::FUNCTION:ENGINE +PKCS5_pbe2_set_iv                       905	1_1_0	EXIST::FUNCTION: +ASN1_add_stable_module                  906	1_1_0	EXIST::FUNCTION: +EVP_camellia_128_cbc                    907	1_1_0	EXIST::FUNCTION:CAMELLIA +COMP_zlib                               908	1_1_0	EXIST::FUNCTION:COMP +EVP_read_pw_string                      909	1_1_0	EXIST::FUNCTION:UI +i2d_ASN1_NULL                           910	1_1_0	EXIST::FUNCTION: +DES_encrypt1                            911	1_1_0	EXIST::FUNCTION:DES +BN_mod_lshift1_quick                    912	1_1_0	EXIST::FUNCTION: +BN_get_rfc3526_prime_6144               913	1_1_0	EXIST::FUNCTION: +OBJ_obj2txt                             914	1_1_0	EXIST::FUNCTION: +UI_set_result                           915	1_1_0	EXIST::FUNCTION:UI +EVP_EncodeUpdate                        916	1_1_0	EXIST::FUNCTION: +PEM_write_bio_X509_CRL                  917	1_1_0	EXIST::FUNCTION: +BN_cmp                                  918	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_get0_log_store       919	1_1_0	EXIST::FUNCTION:CT +CONF_set_default_method                 920	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_get_nm_flags                  921	1_1_0	EXIST::FUNCTION: +X509_add1_ext_i2d                       922	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_RECIP_INFO                    924	1_1_0	EXIST::FUNCTION: +PKCS1_MGF1                              925	1_1_0	EXIST::FUNCTION:RSA +BIO_vsnprintf                           926	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_current_issuer      927	1_1_0	EXIST::FUNCTION: +CRYPTO_secure_malloc_initialized        928	1_1_0	EXIST::FUNCTION: +o2i_SCT_LIST                            929	1_1_0	EXIST::FUNCTION:CT +ASN1_PCTX_get_cert_flags                930	1_1_0	EXIST::FUNCTION: +X509at_add1_attr_by_NID                 931	1_1_0	EXIST::FUNCTION: +DHparams_dup                            932	1_1_0	EXIST::FUNCTION:DH +X509_get_ext                            933	1_1_0	EXIST::FUNCTION: +X509_issuer_and_serial_hash             934	1_1_0	EXIST::FUNCTION: +ASN1_BMPSTRING_it                       935	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_BMPSTRING_it                       935	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PEM_read_EC_PUBKEY                      936	1_1_0	EXIST::FUNCTION:EC,STDIO +d2i_ASN1_IA5STRING                      937	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_ext_free                    938	1_1_0	EXIST::FUNCTION:TS +i2d_X509_CRL_fp                         939	1_1_0	EXIST::FUNCTION:STDIO +PKCS7_get0_signers                      940	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_ex_data              941	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTS_set_certs                 942	1_1_0	EXIST::FUNCTION:TS +BN_MONT_CTX_copy                        943	1_1_0	EXIST::FUNCTION: +OPENSSL_INIT_new                        945	1_1_0	EXIST::FUNCTION: +TS_ACCURACY_dup                         946	1_1_0	EXIST::FUNCTION:TS +i2d_ECPrivateKey                        947	1_1_0	EXIST::FUNCTION:EC +X509_NAME_ENTRY_create_by_OBJ           948	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTX_cleanup                   949	1_1_0	EXIST::FUNCTION:TS +ASN1_INTEGER_get                        950	1_1_0	EXIST::FUNCTION: +ASN1_PRINTABLE_it                       951	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_PRINTABLE_it                       951	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_VerifyFinal                         952	1_1_0	EXIST::FUNCTION: +TS_ASN1_INTEGER_print_bio               953	1_1_0	EXIST::FUNCTION:TS +X509_NAME_ENTRY_set_object              954	1_1_0	EXIST::FUNCTION: +BIO_s_socket                            955	1_1_0	EXIST::FUNCTION:SOCK +EVP_rc5_32_12_16_ecb                    956	1_1_0	EXIST::FUNCTION:RC5 +i2d_PKCS8_bio                           957	1_1_0	EXIST::FUNCTION: +v2i_ASN1_BIT_STRING                     958	1_1_0	EXIST::FUNCTION: +PKEY_USAGE_PERIOD_new                   959	1_1_0	EXIST::FUNCTION: +OBJ_NAME_init                           960	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_keygen                961	1_1_0	EXIST::FUNCTION: +RSA_PSS_PARAMS_new                      962	1_1_0	EXIST::FUNCTION:RSA +RSA_sign                                963	1_1_0	EXIST::FUNCTION:RSA +EVP_DigestVerifyFinal                   964	1_1_0	EXIST::FUNCTION: +d2i_RSA_PUBKEY_bio                      965	1_1_0	EXIST::FUNCTION:RSA +TS_RESP_dup                             966	1_1_0	EXIST::FUNCTION:TS +ERR_set_error_data                      967	1_1_0	EXIST::FUNCTION: +BN_RECP_CTX_new                         968	1_1_0	EXIST::FUNCTION: +DES_options                             969	1_1_0	EXIST::FUNCTION:DES +IPAddressChoice_it                      970	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +IPAddressChoice_it                      970	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +ASN1_UNIVERSALSTRING_it                 971	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_UNIVERSALSTRING_it                 971	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +d2i_DSAPublicKey                        972	1_1_0	EXIST::FUNCTION:DSA +ENGINE_get_name                         973	1_1_0	EXIST::FUNCTION:ENGINE +CRYPTO_THREAD_read_lock                 974	1_1_0	EXIST::FUNCTION: +ASIdentifierChoice_free                 975	1_1_0	EXIST::FUNCTION:RFC3779 +BIO_dgram_sctp_msg_waiting              976	1_1_0	EXIST::FUNCTION:DGRAM,SCTP +BN_is_bit_set                           978	1_1_0	EXIST::FUNCTION: +AES_ofb128_encrypt                      979	1_1_0	EXIST::FUNCTION: +X509_STORE_add_lookup                   980	1_1_0	EXIST::FUNCTION: +ASN1_GENERALSTRING_new                  981	1_1_0	EXIST::FUNCTION: +IDEA_options                            982	1_1_0	EXIST::FUNCTION:IDEA +d2i_X509_REQ                            983	1_1_0	EXIST::FUNCTION: +i2d_TS_STATUS_INFO                      984	1_1_0	EXIST::FUNCTION:TS +X509_PURPOSE_get_by_id                  985	1_1_0	EXIST::FUNCTION: +X509_get1_ocsp                          986	1_1_0	EXIST::FUNCTION: +ISSUING_DIST_POINT_free                 987	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_free                       988	1_1_0	EXIST::FUNCTION: +ERR_load_TS_strings                     989	1_1_0	EXIST::FUNCTION:TS +BN_nist_mod_func                        990	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_new                         991	1_1_0	EXIST::FUNCTION:OCSP +DSA_SIG_new                             992	1_1_0	EXIST::FUNCTION:DSA +DH_get_default_method                   993	1_1_0	EXIST::FUNCTION:DH +PEM_proc_type                           994	1_1_0	EXIST::FUNCTION: +BIO_printf                              995	1_1_0	EXIST::FUNCTION: +a2i_IPADDRESS                           996	1_1_0	EXIST::FUNCTION: +ERR_peek_error_line_data                997	1_1_0	EXIST::FUNCTION: +ERR_unload_strings                      998	1_1_0	EXIST::FUNCTION: +SEED_cfb128_encrypt                     999	1_1_0	EXIST::FUNCTION:SEED +ASN1_BIT_STRING_it                      1000	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_BIT_STRING_it                      1000	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PKCS12_decrypt_skey                     1001	1_1_0	EXIST::FUNCTION: +ENGINE_register_EC                      1002	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_RESPONSE_new                       1003	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_cbc128_encrypt                   1004	1_1_0	EXIST::FUNCTION: +i2d_RSAPublicKey_bio                    1005	1_1_0	EXIST::FUNCTION:RSA +X509_chain_check_suiteb                 1006	1_1_0	EXIST::FUNCTION: +i2d_OCSP_REQUEST                        1007	1_1_0	EXIST::FUNCTION:OCSP +BN_X931_generate_Xpq                    1008	1_1_0	EXIST::FUNCTION: +ASN1_item_digest                        1009	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set_trust             1010	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_error                1011	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_encrypt               1012	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_it                         1013	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_UTCTIME_it                         1013	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +i2d_DSA_PUBKEY_fp                       1014	1_1_0	EXIST::FUNCTION:DSA,STDIO +X509at_get_attr_by_OBJ                  1015	1_1_0	EXIST::FUNCTION: +EVP_MD_CTX_copy_ex                      1016	1_1_0	EXIST::FUNCTION: +UI_dup_error_string                     1017	1_1_0	EXIST::FUNCTION:UI +OPENSSL_LH_num_items                    1018	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_cmp                        1020	1_1_0	EXIST::FUNCTION: +X509_NAME_entry_count                   1021	1_1_0	EXIST::FUNCTION: +UI_method_set_closer                    1022	1_1_0	EXIST::FUNCTION:UI +OPENSSL_LH_get_down_load                1023	1_1_0	EXIST::FUNCTION: +EVP_md4                                 1024	1_1_0	EXIST::FUNCTION:MD4 +X509_set_subject_name                   1025	1_1_0	EXIST::FUNCTION: +i2d_PKCS8PrivateKey_nid_bio             1026	1_1_0	EXIST::FUNCTION: +ERR_put_error                           1027	1_1_0	EXIST::FUNCTION: +ERR_add_error_data                      1028	1_1_0	EXIST::FUNCTION: +X509_ALGORS_it                          1029	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_ALGORS_it                          1029	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +MD5_Update                              1030	1_1_0	EXIST::FUNCTION:MD5 +X509_policy_check                       1031	1_1_0	EXIST::FUNCTION: +X509_CRL_METHOD_new                     1032	1_1_0	EXIST::FUNCTION: +ASN1_ANY_it                             1033	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_ANY_it                             1033	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +d2i_DSA_SIG                             1034	1_1_0	EXIST::FUNCTION:DSA +DH_free                                 1035	1_1_0	EXIST::FUNCTION:DH +ENGINE_register_all_DSA                 1036	1_1_0	EXIST::FUNCTION:ENGINE +TS_REQ_set_msg_imprint                  1037	1_1_0	EXIST::FUNCTION:TS +BN_mod_sub_quick                        1038	1_1_0	EXIST::FUNCTION: +SMIME_write_CMS                         1039	1_1_0	EXIST::FUNCTION:CMS +i2d_DSAPublicKey                        1040	1_1_0	EXIST::FUNCTION:DSA +SMIME_text                              1042	1_1_0	EXIST::FUNCTION: +PKCS7_add_recipient_info                1043	1_1_0	EXIST::FUNCTION: +BN_get_word                             1044	1_1_0	EXIST::FUNCTION: +EVP_CipherFinal                         1045	1_1_0	EXIST::FUNCTION: +i2d_X509_bio                            1046	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_new                      1047	1_1_0	EXIST::FUNCTION: +X509_getm_notAfter                      1048	1_1_0	EXIST::FUNCTION: +X509_ALGOR_dup                          1049	1_1_0	EXIST::FUNCTION: +d2i_X509_REQ_INFO                       1050	1_1_0	EXIST::FUNCTION: +d2i_EC_PUBKEY_bio                       1051	1_1_0	EXIST::FUNCTION:EC +X509_STORE_CTX_set_error                1052	1_1_0	EXIST::FUNCTION: +EC_KEY_METHOD_set_keygen                1053	1_1_0	EXIST::FUNCTION:EC +CRYPTO_free                             1054	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod_exp                         1055	1_1_0	EXIST::FUNCTION:EC2M +OPENSSL_buf2hexstr                      1056	1_1_0	EXIST::FUNCTION: +DES_encrypt2                            1057	1_1_0	EXIST::FUNCTION:DES +DH_up_ref                               1058	1_1_0	EXIST::FUNCTION:DH +RC2_ofb64_encrypt                       1059	1_1_0	EXIST::FUNCTION:RC2 +PKCS12_pbe_crypt                        1060	1_1_0	EXIST::FUNCTION: +ASIdentifiers_free                      1061	1_1_0	EXIST::FUNCTION:RFC3779 +X509_VERIFY_PARAM_get0                  1062	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_get_input_blocksize         1063	1_1_0	EXIST::FUNCTION: +TS_ACCURACY_get_micros                  1064	1_1_0	EXIST::FUNCTION:TS +PKCS12_SAFEBAG_create_cert              1065	1_1_0	EXIST::FUNCTION: +CRYPTO_mem_debug_malloc                 1066	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG +RAND_seed                               1067	1_1_0	EXIST::FUNCTION: +NETSCAPE_SPKAC_free                     1068	1_1_0	EXIST::FUNCTION: +X509_CRL_diff                           1069	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set_flags             1070	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_set_data                 1071	1_1_0	EXIST::FUNCTION: +ENGINE_get_EC                           1072	1_1_0	EXIST::FUNCTION:ENGINE +ASN1_STRING_copy                        1073	1_1_0	EXIST::FUNCTION: +EVP_PKEY_encrypt_old                    1074	1_1_0	EXIST::FUNCTION: +OPENSSL_LH_free                         1075	1_1_0	EXIST::FUNCTION: +DES_is_weak_key                         1076	1_1_0	EXIST::FUNCTION:DES +EVP_PKEY_verify                         1077	1_1_0	EXIST::FUNCTION: +ERR_load_BIO_strings                    1078	1_1_0	EXIST::FUNCTION: +BIO_nread                               1079	1_1_0	EXIST::FUNCTION: +PEM_read_bio_RSAPrivateKey              1080	1_1_0	EXIST::FUNCTION:RSA +OBJ_nid2obj                             1081	1_1_0	EXIST::FUNCTION: +CRYPTO_ofb128_encrypt                   1082	1_1_0	EXIST::FUNCTION: +ENGINE_set_init_function                1083	1_1_0	EXIST::FUNCTION:ENGINE +NCONF_default                           1084	1_1_0	EXIST::FUNCTION: +ENGINE_remove                           1085	1_1_0	EXIST::FUNCTION:ENGINE +ASYNC_get_current_job                   1086	1_1_0	EXIST::FUNCTION: +OBJ_nid2sn                              1087	1_1_0	EXIST::FUNCTION: +X509_gmtime_adj                         1088	1_1_0	EXIST::FUNCTION: +X509_add_ext                            1089	1_1_0	EXIST::FUNCTION: +ENGINE_set_DSA                          1090	1_1_0	EXIST::FUNCTION:ENGINE +EC_KEY_METHOD_set_sign                  1091	1_1_0	EXIST::FUNCTION:EC +d2i_TS_MSG_IMPRINT                      1092	1_1_0	EXIST::FUNCTION:TS +X509_print_ex_fp                        1093	1_1_0	EXIST::FUNCTION:STDIO +ERR_load_PEM_strings                    1094	1_1_0	EXIST::FUNCTION: +ENGINE_unregister_pkey_asn1_meths       1095	1_1_0	EXIST::FUNCTION:ENGINE +IPAddressFamily_free                    1096	1_1_0	EXIST::FUNCTION:RFC3779 +UI_method_get_prompt_constructor        1097	1_1_0	EXIST::FUNCTION:UI +ASN1_NULL_it                            1098	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_NULL_it                            1098	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_REQ_get_pubkey                     1099	1_1_0	EXIST::FUNCTION: +X509_CRL_set1_nextUpdate                1100	1_1_0	EXIST::FUNCTION: +EVP_des_ede3_cfb64                      1101	1_1_0	EXIST::FUNCTION:DES +BN_to_ASN1_INTEGER                      1102	1_1_0	EXIST::FUNCTION: +EXTENDED_KEY_USAGE_free                 1103	1_1_0	EXIST::FUNCTION: +PEM_read_bio_EC_PUBKEY                  1104	1_1_0	EXIST::FUNCTION:EC +BN_MONT_CTX_set                         1105	1_1_0	EXIST::FUNCTION: +TS_CONF_set_serial                      1106	1_1_0	EXIST::FUNCTION:TS +X509_NAME_ENTRY_new                     1107	1_1_0	EXIST::FUNCTION: +RSA_security_bits                       1108	1_1_0	EXIST::FUNCTION:RSA +X509v3_addr_add_prefix                  1109	1_1_0	EXIST::FUNCTION:RFC3779 +X509_REQ_print_fp                       1110	1_1_0	EXIST::FUNCTION:STDIO +ASN1_item_ex_new                        1111	1_1_0	EXIST::FUNCTION: +BIO_s_datagram                          1112	1_1_0	EXIST::FUNCTION:DGRAM +PEM_write_bio_PKCS8                     1113	1_1_0	EXIST::FUNCTION: +ASN1_str2mask                           1114	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_get                           1115	1_1_0	EXIST::FUNCTION: +i2d_X509_EXTENSIONS                     1116	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_store               1117	1_1_0	EXIST::FUNCTION: +PKCS12_pack_p7data                      1118	1_1_0	EXIST::FUNCTION: +RSA_print_fp                            1119	1_1_0	EXIST::FUNCTION:RSA,STDIO +OPENSSL_INIT_set_config_appname         1120	1_1_0	EXIST::FUNCTION:STDIO +EC_KEY_print_fp                         1121	1_1_0	EXIST::FUNCTION:EC,STDIO +BIO_dup_chain                           1122	1_1_0	EXIST::FUNCTION: +PKCS8_PRIV_KEY_INFO_it                  1123	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS8_PRIV_KEY_INFO_it                  1123	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +RSA_OAEP_PARAMS_free                    1124	1_1_0	EXIST::FUNCTION:RSA +ASN1_item_new                           1125	1_1_0	EXIST::FUNCTION: +CRYPTO_cts128_encrypt                   1126	1_1_0	EXIST::FUNCTION: +RC2_encrypt                             1127	1_1_0	EXIST::FUNCTION:RC2 +PEM_write                               1128	1_1_0	EXIST::FUNCTION:STDIO +EVP_CIPHER_meth_get_get_asn1_params     1129	1_1_0	EXIST::FUNCTION: +i2d_OCSP_RESPBYTES                      1130	1_1_0	EXIST::FUNCTION:OCSP +d2i_ASN1_UTF8STRING                     1131	1_1_0	EXIST::FUNCTION: +EXTENDED_KEY_USAGE_it                   1132	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +EXTENDED_KEY_USAGE_it                   1132	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_CipherInit                          1133	1_1_0	EXIST::FUNCTION: +PKCS12_add_safe                         1134	1_1_0	EXIST::FUNCTION: +ENGINE_get_digest                       1135	1_1_0	EXIST::FUNCTION:ENGINE +EC_GROUP_have_precompute_mult           1136	1_1_0	EXIST::FUNCTION:EC +OPENSSL_gmtime                          1137	1_1_0	EXIST::FUNCTION: +X509_set_issuer_name                    1138	1_1_0	EXIST::FUNCTION: +RSA_new                                 1139	1_1_0	EXIST::FUNCTION:RSA +ASN1_STRING_set_by_NID                  1140	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PKCS7                     1141	1_1_0	EXIST::FUNCTION: +MDC2_Final                              1142	1_1_0	EXIST::FUNCTION:MDC2 +SMIME_crlf_copy                         1143	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_get_ext_count              1144	1_1_0	EXIST::FUNCTION:OCSP +OCSP_REQ_CTX_new                        1145	1_1_0	EXIST::FUNCTION:OCSP +X509_load_cert_crl_file                 1146	1_1_0	EXIST::FUNCTION: +EVP_PKEY_new_mac_key                    1147	1_1_0	EXIST::FUNCTION: +DIST_POINT_new                          1148	1_1_0	EXIST::FUNCTION: +BN_is_prime_fasttest                    1149	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8 +EC_POINT_dup                            1150	1_1_0	EXIST::FUNCTION:EC +PKCS5_v2_scrypt_keyivgen                1151	1_1_0	EXIST::FUNCTION:SCRYPT +X509_STORE_CTX_set0_param               1152	1_1_0	EXIST::FUNCTION: +DES_check_key_parity                    1153	1_1_0	EXIST::FUNCTION:DES +EVP_aes_256_ocb                         1154	1_1_0	EXIST::FUNCTION:OCB +X509_VAL_free                           1155	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get1_certs               1156	1_1_0	EXIST::FUNCTION: +PEM_write_RSA_PUBKEY                    1157	1_1_0	EXIST::FUNCTION:RSA,STDIO +PKCS12_SAFEBAG_get0_p8inf               1158	1_1_0	EXIST::FUNCTION: +X509_CRL_set_issuer_name                1159	1_1_0	EXIST::FUNCTION: +CMS_EncryptedData_encrypt               1160	1_1_0	EXIST::FUNCTION:CMS +ASN1_tag2str                            1161	1_1_0	EXIST::FUNCTION: +BN_zero_ex                              1162	1_1_0	EXIST::FUNCTION: +X509_NAME_dup                           1163	1_1_0	EXIST::FUNCTION: +SCT_LIST_print                          1164	1_1_0	EXIST::FUNCTION:CT +NOTICEREF_it                            1165	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +NOTICEREF_it                            1165	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CMS_add0_crl                            1166	1_1_0	EXIST::FUNCTION:CMS +d2i_DSAparams                           1167	1_1_0	EXIST::FUNCTION:DSA +EVP_CIPHER_CTX_set_app_data             1168	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_param_to_asn1                1169	1_1_0	EXIST::FUNCTION: +TS_CONF_set_certs                       1170	1_1_0	EXIST::FUNCTION:TS +BN_security_bits                        1171	1_1_0	EXIST::FUNCTION: +X509_PURPOSE_get0_name                  1172	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_serial                  1173	1_1_0	EXIST::FUNCTION:TS +ASN1_PCTX_get_str_flags                 1174	1_1_0	EXIST::FUNCTION: +SHA256                                  1175	1_1_0	EXIST::FUNCTION: +X509_LOOKUP_hash_dir                    1176	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_check                   1177	1_1_0	EXIST::FUNCTION: +ENGINE_set_default_RAND                 1178	1_1_0	EXIST::FUNCTION:ENGINE +BIO_connect                             1179	1_1_0	EXIST::FUNCTION:SOCK +TS_TST_INFO_add_ext                     1180	1_1_0	EXIST::FUNCTION:TS +EVP_aes_192_ccm                         1181	1_1_0	EXIST::FUNCTION: +X509V3_add_value                        1182	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_set0_keygen_info           1183	1_1_0	EXIST::FUNCTION: +ENGINE_unregister_digests               1184	1_1_0	EXIST::FUNCTION:ENGINE +IPAddressOrRange_new                    1185	1_1_0	EXIST::FUNCTION:RFC3779 +EVP_aes_256_ofb                         1186	1_1_0	EXIST::FUNCTION: +CRYPTO_mem_debug_push                   1187	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG +X509_PKEY_new                           1188	1_1_0	EXIST::FUNCTION: +X509_get_key_usage                      1189	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_create_by_txt            1190	1_1_0	EXIST::FUNCTION: +PEM_SignFinal                           1191	1_1_0	EXIST::FUNCTION: +PEM_bytes_read_bio                      1192	1_1_0	EXIST::FUNCTION: +X509_signature_dump                     1193	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_def_policy              1194	1_1_0	EXIST::FUNCTION:TS +RAND_pseudo_bytes                       1195	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +DES_ofb_encrypt                         1196	1_1_0	EXIST::FUNCTION:DES +EVP_add_digest                          1197	1_1_0	EXIST::FUNCTION: +ASN1_item_sign_ctx                      1198	1_1_0	EXIST::FUNCTION: +BIO_dump_indent_cb                      1199	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set_depth             1200	1_1_0	EXIST::FUNCTION: +DES_ecb3_encrypt                        1201	1_1_0	EXIST::FUNCTION:DES +OBJ_obj2nid                             1202	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_free                     1203	1_1_0	EXIST::FUNCTION: +EVP_cast5_cfb64                         1204	1_1_0	EXIST::FUNCTION:CAST +OPENSSL_uni2asc                         1205	1_1_0	EXIST::FUNCTION: +SCT_validation_status_string            1206	1_1_0	EXIST::FUNCTION:CT +PKCS7_add_attribute                     1207	1_1_0	EXIST::FUNCTION: +ENGINE_register_DSA                     1208	1_1_0	EXIST::FUNCTION:ENGINE +OPENSSL_LH_node_stats                   1209	1_1_0	EXIST::FUNCTION:STDIO +X509_policy_tree_free                   1210	1_1_0	EXIST::FUNCTION: +EC_GFp_simple_method                    1211	1_1_0	EXIST::FUNCTION:EC +X509_it                                 1212	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_it                                 1212	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +d2i_PROXY_POLICY                        1213	1_1_0	EXIST::FUNCTION: +MDC2_Update                             1214	1_1_0	EXIST::FUNCTION:MDC2 +EC_KEY_new_by_curve_name                1215	1_1_0	EXIST::FUNCTION:EC +X509_CRL_free                           1216	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_SIGN_ENVELOPE                 1217	1_1_0	EXIST::FUNCTION: +OCSP_CERTSTATUS_it                      1218	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_CERTSTATUS_it                      1218	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +BIO_f_reliable                          1219	1_1_0	EXIST::FUNCTION: +OCSP_resp_count                         1220	1_1_0	EXIST::FUNCTION:OCSP +i2d_X509_AUX                            1221	1_1_0	EXIST::FUNCTION: +RSA_verify_PKCS1_PSS_mgf1               1222	1_1_0	EXIST::FUNCTION:RSA +X509_time_adj                           1223	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_find_str                  1224	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_get_flags             1225	1_1_0	EXIST::FUNCTION: +OPENSSL_DIR_end                         1226	1_1_0	EXIST::FUNCTION: +EC_GROUP_new                            1227	1_1_0	EXIST::FUNCTION:EC +CMS_SignerInfo_get0_pkey_ctx            1228	1_1_0	EXIST::FUNCTION:CMS +d2i_ASN1_PRINTABLESTRING                1229	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_ktri_cert_cmp         1230	1_1_0	EXIST::FUNCTION:CMS +CMS_decrypt_set1_pkey                   1231	1_1_0	EXIST::FUNCTION:CMS +PKCS7_RECIP_INFO_set                    1232	1_1_0	EXIST::FUNCTION: +EC_POINT_is_on_curve                    1233	1_1_0	EXIST::FUNCTION:EC +PKCS12_add_cert                         1234	1_1_0	EXIST::FUNCTION: +X509_NAME_hash_old                      1235	1_1_0	EXIST::FUNCTION: +PBKDF2PARAM_free                        1236	1_1_0	EXIST::FUNCTION: +i2d_CMS_ContentInfo                     1237	1_1_0	EXIST::FUNCTION:CMS +EVP_CIPHER_meth_set_ctrl                1238	1_1_0	EXIST::FUNCTION: +RSA_public_decrypt                      1239	1_1_0	EXIST::FUNCTION:RSA +ENGINE_get_id                           1240	1_1_0	EXIST::FUNCTION:ENGINE +PKCS12_item_decrypt_d2i                 1241	1_1_0	EXIST::FUNCTION: +PEM_read_bio_DSAparams                  1242	1_1_0	EXIST::FUNCTION:DSA +X509_CRL_cmp                            1243	1_1_0	EXIST::FUNCTION: +DSO_METHOD_openssl                      1244	1_1_0	EXIST::FUNCTION: +d2i_PrivateKey_fp                       1245	1_1_0	EXIST::FUNCTION:STDIO +i2d_NETSCAPE_CERT_SEQUENCE              1246	1_1_0	EXIST::FUNCTION: +EC_POINT_oct2point                      1248	1_1_0	EXIST::FUNCTION:EC +EVP_CIPHER_CTX_buf_noconst              1249	1_1_0	EXIST::FUNCTION: +OPENSSL_DIR_read                        1250	1_1_0	EXIST::FUNCTION: +CMS_add_smimecap                        1251	1_1_0	EXIST::FUNCTION:CMS +X509_check_email                        1252	1_1_0	EXIST::FUNCTION: +CRYPTO_cts128_decrypt_block             1253	1_1_0	EXIST::FUNCTION: +UI_method_get_opener                    1254	1_1_0	EXIST::FUNCTION:UI +EVP_aes_192_gcm                         1255	1_1_0	EXIST::FUNCTION: +TS_CONF_set_tsa_name                    1256	1_1_0	EXIST::FUNCTION:TS +X509_email_free                         1257	1_1_0	EXIST::FUNCTION: +BIO_get_callback                        1258	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_shift                        1259	1_1_0	EXIST::FUNCTION: +i2d_X509_REVOKED                        1260	1_1_0	EXIST::FUNCTION: +CMS_sign                                1261	1_1_0	EXIST::FUNCTION:CMS +X509_STORE_add_cert                     1262	1_1_0	EXIST::FUNCTION: +EC_GROUP_precompute_mult                1263	1_1_0	EXIST::FUNCTION:EC +d2i_DISPLAYTEXT                         1265	1_1_0	EXIST::FUNCTION: +HMAC_CTX_copy                           1266	1_1_0	EXIST::FUNCTION: +CRYPTO_gcm128_init                      1267	1_1_0	EXIST::FUNCTION: +i2d_X509_CINF                           1268	1_1_0	EXIST::FUNCTION: +X509_REVOKED_delete_ext                 1269	1_1_0	EXIST::FUNCTION: +RC5_32_cfb64_encrypt                    1270	1_1_0	EXIST::FUNCTION:RC5 +TS_REQ_set_cert_req                     1271	1_1_0	EXIST::FUNCTION:TS +TXT_DB_get_by_index                     1272	1_1_0	EXIST::FUNCTION: +X509_check_ca                           1273	1_1_0	EXIST::FUNCTION: +DH_get_2048_224                         1274	1_1_0	EXIST::FUNCTION:DH +X509_http_nbio                          1275	1_1_0	EXIST::FUNCTION:OCSP +i2d_AUTHORITY_INFO_ACCESS               1276	1_1_0	EXIST::FUNCTION: +EVP_get_cipherbyname                    1277	1_1_0	EXIST::FUNCTION: +CONF_dump_fp                            1278	1_1_0	EXIST::FUNCTION:STDIO +d2i_DIST_POINT_NAME                     1279	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_set_int64                  1280	1_1_0	EXIST::FUNCTION: +ASN1_TIME_free                          1281	1_1_0	EXIST::FUNCTION: +i2o_SCT_LIST                            1282	1_1_0	EXIST::FUNCTION:CT +AES_encrypt                             1283	1_1_0	EXIST::FUNCTION: +MD5_Init                                1284	1_1_0	EXIST::FUNCTION:MD5 +UI_add_error_string                     1285	1_1_0	EXIST::FUNCTION:UI +X509_TRUST_cleanup                      1286	1_1_0	EXIST::FUNCTION: +PEM_read_X509                           1287	1_1_0	EXIST::FUNCTION:STDIO +EC_KEY_new_method                       1288	1_1_0	EXIST::FUNCTION:EC +i2d_RSAPublicKey_fp                     1289	1_1_0	EXIST::FUNCTION:RSA,STDIO +CRYPTO_ctr128_encrypt_ctr32             1290	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_move_peername         1291	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_it                      1292	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_SINGLERESP_it                      1292	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +BN_num_bits                             1293	1_1_0	EXIST::FUNCTION: +X509_CRL_METHOD_free                    1294	1_1_0	EXIST::FUNCTION: +PEM_read_NETSCAPE_CERT_SEQUENCE         1295	1_1_0	EXIST::FUNCTION:STDIO +OPENSSL_load_builtin_modules            1296	1_1_0	EXIST::FUNCTION: +X509_set_version                        1297	1_1_0	EXIST::FUNCTION: +i2d_EC_PUBKEY_bio                       1298	1_1_0	EXIST::FUNCTION:EC +X509_REQ_get_attr_count                 1299	1_1_0	EXIST::FUNCTION: +CMS_set1_signers_certs                  1300	1_1_0	EXIST::FUNCTION:CMS +TS_ACCURACY_free                        1301	1_1_0	EXIST::FUNCTION:TS +PEM_write_DSA_PUBKEY                    1302	1_1_0	EXIST::FUNCTION:DSA,STDIO +BN_rshift1                              1303	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_ENVELOPE                      1304	1_1_0	EXIST::FUNCTION: +PBKDF2PARAM_it                          1305	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PBKDF2PARAM_it                          1305	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +UI_get_result_maxsize                   1306	1_1_0	EXIST::FUNCTION:UI +PBEPARAM_it                             1307	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PBEPARAM_it                             1307	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_ACCURACY_set_seconds                 1308	1_1_0	EXIST::FUNCTION:TS +UI_get0_action_string                   1309	1_1_0	EXIST::FUNCTION:UI +RC2_decrypt                             1310	1_1_0	EXIST::FUNCTION:RC2 +OPENSSL_atexit                          1311	1_1_0	EXIST::FUNCTION: +CMS_add_standard_smimecap               1312	1_1_0	EXIST::FUNCTION:CMS +PKCS7_add_attrib_content_type           1313	1_1_0	EXIST::FUNCTION: +BN_BLINDING_set_flags                   1314	1_1_0	EXIST::FUNCTION: +ERR_peek_last_error                     1315	1_1_0	EXIST::FUNCTION: +ENGINE_set_cmd_defns                    1316	1_1_0	EXIST::FUNCTION:ENGINE +d2i_ASN1_NULL                           1317	1_1_0	EXIST::FUNCTION: +RAND_event                              1318	1_1_0	EXIST:_WIN32:FUNCTION:DEPRECATEDIN_1_1_0 +i2d_PKCS12_fp                           1319	1_1_0	EXIST::FUNCTION:STDIO +EVP_PKEY_meth_get_init                  1320	1_1_0	EXIST::FUNCTION: +X509_check_trust                        1321	1_1_0	EXIST::FUNCTION: +b2i_PrivateKey                          1322	1_1_0	EXIST::FUNCTION:DSA +HMAC_Init_ex                            1323	1_1_0	EXIST::FUNCTION: +SMIME_read_CMS                          1324	1_1_0	EXIST::FUNCTION:CMS +X509_subject_name_cmp                   1325	1_1_0	EXIST::FUNCTION: +CRYPTO_ocb128_finish                    1326	1_1_0	EXIST::FUNCTION:OCB +EVP_CIPHER_do_all                       1327	1_1_0	EXIST::FUNCTION: +POLICY_MAPPINGS_it                      1328	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +POLICY_MAPPINGS_it                      1328	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +SCT_set0_log_id                         1329	1_1_0	EXIST::FUNCTION:CT +CRYPTO_cfb128_encrypt                   1330	1_1_0	EXIST::FUNCTION: +RSA_padding_add_PKCS1_type_2            1331	1_1_0	EXIST::FUNCTION:RSA +TS_CONF_set_signer_cert                 1332	1_1_0	EXIST::FUNCTION:TS +i2d_ASN1_OBJECT                         1333	1_1_0	EXIST::FUNCTION: +d2i_PKCS8_PRIV_KEY_INFO_bio             1334	1_1_0	EXIST::FUNCTION: +X509V3_add_value_int                    1335	1_1_0	EXIST::FUNCTION: +TS_REQ_set_nonce                        1336	1_1_0	EXIST::FUNCTION:TS +Camellia_ctr128_encrypt                 1337	1_1_0	EXIST::FUNCTION:CAMELLIA +X509_LOOKUP_new                         1338	1_1_0	EXIST::FUNCTION: +AUTHORITY_INFO_ACCESS_new               1339	1_1_0	EXIST::FUNCTION: +CRYPTO_mem_leaks_fp                     1340	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG,STDIO +DES_set_key_unchecked                   1341	1_1_0	EXIST::FUNCTION:DES +BN_free                                 1342	1_1_0	EXIST::FUNCTION: +EVP_aes_128_cfb1                        1343	1_1_0	EXIST::FUNCTION: +EC_KEY_get0_group                       1344	1_1_0	EXIST::FUNCTION:EC +PEM_write_bio_CMS_stream                1345	1_1_0	EXIST::FUNCTION:CMS +BIO_f_linebuffer                        1346	1_1_0	EXIST::FUNCTION: +ASN1_item_d2i_bio                       1347	1_1_0	EXIST::FUNCTION: +ENGINE_get_flags                        1348	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_resp_find                          1349	1_1_0	EXIST::FUNCTION:OCSP +OPENSSL_LH_node_usage_stats_bio         1350	1_1_0	EXIST::FUNCTION: +EVP_PKEY_encrypt                        1351	1_1_0	EXIST::FUNCTION: +CRYPTO_cfb128_8_encrypt                 1352	1_1_0	EXIST::FUNCTION: +SXNET_get_id_INTEGER                    1353	1_1_0	EXIST::FUNCTION: +CRYPTO_clear_free                       1354	1_1_0	EXIST::FUNCTION: +i2v_GENERAL_NAME                        1355	1_1_0	EXIST::FUNCTION: +PKCS7_ENC_CONTENT_new                   1356	1_1_0	EXIST::FUNCTION: +CRYPTO_realloc                          1357	1_1_0	EXIST::FUNCTION: +BIO_ctrl_pending                        1358	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_new                         1360	1_1_0	EXIST::FUNCTION: +X509_sign_ctx                           1361	1_1_0	EXIST::FUNCTION: +BN_is_odd                               1362	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_current_cert         1363	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_get_int64               1364	1_1_0	EXIST::FUNCTION: +ASN1_SCTX_get_app_data                  1365	1_1_0	EXIST::FUNCTION: +X509_get_default_cert_file_env          1366	1_1_0	EXIST::FUNCTION: +X509v3_addr_validate_resource_set       1367	1_1_0	EXIST::FUNCTION:RFC3779 +d2i_X509_VAL                            1368	1_1_0	EXIST::FUNCTION: +CRYPTO_gcm128_decrypt_ctr32             1370	1_1_0	EXIST::FUNCTION: +DHparams_print                          1371	1_1_0	EXIST::FUNCTION:DH +OPENSSL_sk_unshift                      1372	1_1_0	EXIST::FUNCTION: +BN_GENCB_set_old                        1373	1_1_0	EXIST::FUNCTION: +PEM_write_bio_X509                      1374	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_free                      1375	1_1_0	EXIST::FUNCTION: +ENGINE_unregister_DH                    1376	1_1_0	EXIST::FUNCTION:ENGINE +PROXY_CERT_INFO_EXTENSION_it            1377	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PROXY_CERT_INFO_EXTENSION_it            1377	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CT_POLICY_EVAL_CTX_set1_cert            1378	1_1_0	EXIST::FUNCTION:CT +X509_NAME_hash                          1379	1_1_0	EXIST::FUNCTION: +SCT_set_timestamp                       1380	1_1_0	EXIST::FUNCTION:CT +UI_new                                  1381	1_1_0	EXIST::FUNCTION:UI +TS_REQ_get_msg_imprint                  1382	1_1_0	EXIST::FUNCTION:TS +i2d_PKCS12_BAGS                         1383	1_1_0	EXIST::FUNCTION: +CERTIFICATEPOLICIES_free                1385	1_1_0	EXIST::FUNCTION: +X509V3_get_section                      1386	1_1_0	EXIST::FUNCTION: +BIO_parse_hostserv                      1387	1_1_0	EXIST::FUNCTION:SOCK +EVP_PKEY_meth_set_cleanup               1388	1_1_0	EXIST::FUNCTION: +PROXY_CERT_INFO_EXTENSION_free          1389	1_1_0	EXIST::FUNCTION: +X509_dup                                1390	1_1_0	EXIST::FUNCTION: +EDIPARTYNAME_free                       1391	1_1_0	EXIST::FUNCTION: +X509_CRL_add0_revoked                   1393	1_1_0	EXIST::FUNCTION: +GENERAL_NAME_set0_value                 1394	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_dup                      1395	1_1_0	EXIST::FUNCTION: +EC_GROUP_check_discriminant             1396	1_1_0	EXIST::FUNCTION:EC +PKCS12_MAC_DATA_free                    1397	1_1_0	EXIST::FUNCTION: +PEM_read_bio_PrivateKey                 1398	1_1_0	EXIST::FUNCTION: +d2i_PKCS7_ENCRYPT                       1399	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_ctrl                       1400	1_1_0	EXIST::FUNCTION: +X509_REQ_set_pubkey                     1401	1_1_0	EXIST::FUNCTION: +UI_create_method                        1402	1_1_0	EXIST::FUNCTION:UI +X509_REQ_add_extensions_nid             1403	1_1_0	EXIST::FUNCTION: +PEM_X509_INFO_write_bio                 1404	1_1_0	EXIST::FUNCTION: +BIO_dump_cb                             1405	1_1_0	EXIST::FUNCTION: +v2i_GENERAL_NAMES                       1406	1_1_0	EXIST::FUNCTION: +EVP_des_ede3_ofb                        1407	1_1_0	EXIST::FUNCTION:DES +EVP_MD_meth_get_cleanup                 1408	1_1_0	EXIST::FUNCTION: +SRP_Calc_server_key                     1409	1_1_0	EXIST::FUNCTION:SRP +BN_mod_exp_simple                       1410	1_1_0	EXIST::FUNCTION: +BIO_set_ex_data                         1411	1_1_0	EXIST::FUNCTION: +SHA512                                  1412	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_explicit_policy      1413	1_1_0	EXIST::FUNCTION: +EVP_DecodeBlock                         1414	1_1_0	EXIST::FUNCTION: +OCSP_REQ_CTX_http                       1415	1_1_0	EXIST::FUNCTION:OCSP +EVP_MD_CTX_reset                        1416	1_1_0	EXIST::FUNCTION: +X509_NAME_new                           1417	1_1_0	EXIST::FUNCTION: +ASN1_item_pack                          1418	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_set_asc                 1419	1_1_0	EXIST::FUNCTION: +d2i_GENERAL_NAME                        1420	1_1_0	EXIST::FUNCTION: +i2d_ESS_CERT_ID                         1421	1_1_0	EXIST::FUNCTION:TS +X509_TRUST_get_by_id                    1422	1_1_0	EXIST::FUNCTION: +d2i_RSA_PUBKEY_fp                       1423	1_1_0	EXIST::FUNCTION:RSA,STDIO +EVP_PBE_get                             1424	1_1_0	EXIST::FUNCTION: +CRYPTO_nistcts128_encrypt               1425	1_1_0	EXIST::FUNCTION: +CONF_modules_finish                     1426	1_1_0	EXIST::FUNCTION: +BN_value_one                            1427	1_1_0	EXIST::FUNCTION: +RSA_padding_add_SSLv23                  1428	1_1_0	EXIST::FUNCTION:RSA +OCSP_RESPBYTES_it                       1429	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_RESPBYTES_it                       1429	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +EVP_aes_192_wrap                        1430	1_1_0	EXIST::FUNCTION: +OCSP_CERTID_it                          1431	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_CERTID_it                          1431	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +ENGINE_get_RSA                          1432	1_1_0	EXIST::FUNCTION:ENGINE +RAND_get_rand_method                    1433	1_1_0	EXIST::FUNCTION: +ERR_load_DSA_strings                    1434	1_1_0	EXIST::FUNCTION:DSA +ASN1_check_infinite_end                 1435	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_DIGEST                        1436	1_1_0	EXIST::FUNCTION: +ERR_lib_error_string                    1437	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_set1_object              1438	1_1_0	EXIST::FUNCTION: +i2d_ECPrivateKey_bio                    1439	1_1_0	EXIST::FUNCTION:EC +BN_GENCB_free                           1440	1_1_0	EXIST::FUNCTION: +HMAC_size                               1441	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get0_DH                        1442	1_1_0	EXIST::FUNCTION:DH +d2i_OCSP_CRLID                          1443	1_1_0	EXIST::FUNCTION:OCSP +EVP_CIPHER_CTX_set_padding              1444	1_1_0	EXIST::FUNCTION: +CTLOG_new_from_base64                   1445	1_1_0	EXIST::FUNCTION:CT +AES_bi_ige_encrypt                      1446	1_1_0	EXIST::FUNCTION: +ERR_pop_to_mark                         1447	1_1_0	EXIST::FUNCTION: +CRL_DIST_POINTS_new                     1449	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get0_asn1                      1450	1_1_0	EXIST::FUNCTION: +EVP_camellia_192_ctr                    1451	1_1_0	EXIST::FUNCTION:CAMELLIA +EVP_PKEY_free                           1452	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_count                    1453	1_1_0	EXIST::FUNCTION: +BIO_new_dgram                           1454	1_1_0	EXIST::FUNCTION:DGRAM +CMS_RecipientInfo_kari_get0_reks        1455	1_1_0	EXIST::FUNCTION:CMS +BASIC_CONSTRAINTS_new                   1456	1_1_0	EXIST::FUNCTION: +PEM_read_bio_X509_REQ                   1457	1_1_0	EXIST::FUNCTION: +BIO_sock_init                           1458	1_1_0	EXIST::FUNCTION:SOCK +BN_nist_mod_192                         1459	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_ISSUER_AND_SERIAL             1460	1_1_0	EXIST::FUNCTION: +X509V3_EXT_nconf                        1461	1_1_0	EXIST::FUNCTION: +X509v3_addr_inherits                    1462	1_1_0	EXIST::FUNCTION:RFC3779 +NETSCAPE_SPKI_sign                      1463	1_1_0	EXIST::FUNCTION: +BN_BLINDING_update                      1464	1_1_0	EXIST::FUNCTION: +BN_gcd                                  1465	1_1_0	EXIST::FUNCTION: +CMS_dataInit                            1466	1_1_0	EXIST::FUNCTION:CMS +TS_CONF_get_tsa_section                 1467	1_1_0	EXIST::FUNCTION:TS +i2d_PKCS7_SIGNER_INFO                   1468	1_1_0	EXIST::FUNCTION: +EVP_get_pw_prompt                       1469	1_1_0	EXIST::FUNCTION:UI +BN_bn2bin                               1470	1_1_0	EXIST::FUNCTION: +d2i_ASN1_BIT_STRING                     1471	1_1_0	EXIST::FUNCTION: +OCSP_CERTSTATUS_new                     1472	1_1_0	EXIST::FUNCTION:OCSP +ENGINE_register_RAND                    1473	1_1_0	EXIST::FUNCTION:ENGINE +X509V3_section_free                     1474	1_1_0	EXIST::FUNCTION: +CRYPTO_mem_debug_free                   1475	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG +d2i_OCSP_REQUEST                        1476	1_1_0	EXIST::FUNCTION:OCSP +ENGINE_get_cipher_engine                1477	1_1_0	EXIST::FUNCTION:ENGINE +SHA384_Final                            1478	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_certs                   1479	1_1_0	EXIST::FUNCTION:TS +BN_MONT_CTX_free                        1480	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod_solve_quad_arr              1481	1_1_0	EXIST::FUNCTION:EC2M +UI_add_input_string                     1482	1_1_0	EXIST::FUNCTION:UI +TS_TST_INFO_get_version                 1483	1_1_0	EXIST::FUNCTION:TS +BIO_accept_ex                           1484	1_1_0	EXIST::FUNCTION:SOCK +CRYPTO_get_mem_functions                1485	1_1_0	EXIST::FUNCTION: +PEM_read_bio                            1486	1_1_0	EXIST::FUNCTION: +OCSP_BASICRESP_get_ext_by_critical      1487	1_1_0	EXIST::FUNCTION:OCSP +SXNET_it                                1488	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +SXNET_it                                1488	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BIO_indent                              1489	1_1_0	EXIST::FUNCTION: +i2d_X509_fp                             1490	1_1_0	EXIST::FUNCTION:STDIO +d2i_ASN1_TYPE                           1491	1_1_0	EXIST::FUNCTION: +CTLOG_STORE_free                        1492	1_1_0	EXIST::FUNCTION:CT +ENGINE_get_pkey_meths                   1493	1_1_0	EXIST::FUNCTION:ENGINE +i2d_TS_REQ_bio                          1494	1_1_0	EXIST::FUNCTION:TS +EVP_PKEY_CTX_get_operation              1495	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_ctrl                    1496	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_set_critical             1497	1_1_0	EXIST::FUNCTION: +BIO_ADDR_clear                          1498	1_1_0	EXIST::FUNCTION:SOCK +ENGINE_get_DSA                          1499	1_1_0	EXIST::FUNCTION:ENGINE +ASYNC_get_wait_ctx                      1500	1_1_0	EXIST::FUNCTION: +ENGINE_set_load_privkey_function        1501	1_1_0	EXIST::FUNCTION:ENGINE +CRYPTO_ccm128_setiv                     1502	1_1_0	EXIST::FUNCTION: +PKCS7_dataFinal                         1503	1_1_0	EXIST::FUNCTION: +SHA1_Final                              1504	1_1_0	EXIST::FUNCTION: +i2a_ASN1_STRING                         1505	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_rand_key                 1506	1_1_0	EXIST::FUNCTION: +AES_set_encrypt_key                     1507	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_new                        1508	1_1_0	EXIST::FUNCTION: +AES_cbc_encrypt                         1509	1_1_0	EXIST::FUNCTION: +OCSP_RESPDATA_free                      1510	1_1_0	EXIST::FUNCTION:OCSP +EVP_PKEY_asn1_find                      1511	1_1_0	EXIST::FUNCTION: +d2i_ASN1_GENERALIZEDTIME                1512	1_1_0	EXIST::FUNCTION: +OPENSSL_cleanup                         1513	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_create                   1514	1_1_0	EXIST::FUNCTION: +SCT_get_source                          1515	1_1_0	EXIST::FUNCTION:CT +EVP_PKEY_verify_init                    1516	1_1_0	EXIST::FUNCTION: +ASN1_TIME_set_string                    1517	1_1_0	EXIST::FUNCTION: +BIO_free                                1518	1_1_0	EXIST::FUNCTION: +i2d_X509_ALGOR                          1519	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set0_crls                1520	1_1_0	EXIST::FUNCTION: +ASYNC_pause_job                         1521	1_1_0	EXIST::FUNCTION: +OCSP_BASICRESP_new                      1522	1_1_0	EXIST::FUNCTION:OCSP +EVP_camellia_256_ofb                    1523	1_1_0	EXIST::FUNCTION:CAMELLIA +PKCS12_item_i2d_encrypt                 1524	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_copy                  1525	1_1_0	EXIST::FUNCTION: +EC_POINT_clear_free                     1526	1_1_0	EXIST::FUNCTION:EC +i2s_ASN1_ENUMERATED_TABLE               1527	1_1_0	EXIST::FUNCTION: +PKCS7_verify                            1528	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_add0_table            1529	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_cert                 1530	1_1_0	EXIST::FUNCTION: +ASN1_GENERALSTRING_free                 1531	1_1_0	EXIST::FUNCTION: +BN_MONT_CTX_set_locked                  1532	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_set_num                  1533	1_1_0	EXIST::FUNCTION: +CONF_load                               1534	1_1_0	EXIST::FUNCTION: +EC_KEY_METHOD_get_keygen                1535	1_1_0	EXIST::FUNCTION:EC +EVP_PKEY_add1_attr_by_txt               1536	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_set_uint64                 1537	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get_attr_by_OBJ                1538	1_1_0	EXIST::FUNCTION: +ASN1_add_oid_module                     1539	1_1_0	EXIST::FUNCTION: +BN_div_recp                             1540	1_1_0	EXIST::FUNCTION: +SRP_Verify_B_mod_N                      1541	1_1_0	EXIST::FUNCTION:SRP +SXNET_free                              1542	1_1_0	EXIST::FUNCTION: +CMS_get0_content                        1543	1_1_0	EXIST::FUNCTION:CMS +BN_is_word                              1544	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_key_length                   1545	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_asn1_to_param                1546	1_1_0	EXIST::FUNCTION: +OCSP_request_onereq_get0                1547	1_1_0	EXIST::FUNCTION:OCSP +ERR_load_PKCS7_strings                  1548	1_1_0	EXIST::FUNCTION: +X509_PUBKEY_get                         1549	1_1_0	EXIST::FUNCTION: +EC_KEY_free                             1550	1_1_0	EXIST::FUNCTION:EC +BIO_read                                1551	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get_attr_by_NID                1552	1_1_0	EXIST::FUNCTION: +BIO_get_accept_socket                   1553	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SOCK +CMS_SignerInfo_sign                     1554	1_1_0	EXIST::FUNCTION:CMS +ASN1_item_i2d_bio                       1555	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_block_size               1556	1_1_0	EXIST::FUNCTION: +DIRECTORYSTRING_free                    1557	1_1_0	EXIST::FUNCTION: +TS_CONF_set_default_engine              1558	1_1_0	EXIST::FUNCTION:ENGINE,TS +BN_set_bit                              1559	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_app_datasize            1560	1_1_0	EXIST::FUNCTION: +DSO_free                                1561	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_tsa                     1562	1_1_0	EXIST::FUNCTION:TS +EC_GROUP_check                          1563	1_1_0	EXIST::FUNCTION:EC +OPENSSL_sk_delete                       1564	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_extension_cb            1565	1_1_0	EXIST::FUNCTION:TS +EVP_CIPHER_CTX_nid                      1566	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_add_md                      1567	1_1_0	EXIST::FUNCTION:TS +DES_set_key                             1568	1_1_0	EXIST::FUNCTION:DES +X509V3_extensions_print                 1569	1_1_0	EXIST::FUNCTION: +PEM_do_header                           1570	1_1_0	EXIST::FUNCTION: +i2d_re_X509_CRL_tbs                     1571	1_1_0	EXIST::FUNCTION: +BIO_method_name                         1572	1_1_0	EXIST::FUNCTION: +i2d_OCSP_CRLID                          1573	1_1_0	EXIST::FUNCTION:OCSP +OCSP_request_set1_name                  1574	1_1_0	EXIST::FUNCTION:OCSP +d2i_X509_NAME_ENTRY                     1575	1_1_0	EXIST::FUNCTION: +X509_trusted                            1576	1_1_0	EXIST::FUNCTION: +X509_TRUST_get_flags                    1577	1_1_0	EXIST::FUNCTION: +PKCS7_set_content                       1578	1_1_0	EXIST::FUNCTION: +PEM_write_X509_REQ_NEW                  1579	1_1_0	EXIST::FUNCTION:STDIO +CONF_imodule_set_usr_data               1580	1_1_0	EXIST::FUNCTION: +d2i_TS_RESP_fp                          1581	1_1_0	EXIST::FUNCTION:STDIO,TS +X509_policy_tree_get0_user_policies     1582	1_1_0	EXIST::FUNCTION: +DSA_do_sign                             1584	1_1_0	EXIST::FUNCTION:DSA +EVP_CIPHER_CTX_reset                    1585	1_1_0	EXIST::FUNCTION: +OCSP_REVOKEDINFO_new                    1586	1_1_0	EXIST::FUNCTION:OCSP +SRP_Verify_A_mod_N                      1587	1_1_0	EXIST::FUNCTION:SRP +SRP_VBASE_free                          1588	1_1_0	EXIST::FUNCTION:SRP +PKCS7_add0_attrib_signing_time          1589	1_1_0	EXIST::FUNCTION: +X509_STORE_set_flags                    1590	1_1_0	EXIST::FUNCTION: +UI_get0_output_string                   1591	1_1_0	EXIST::FUNCTION:UI +ERR_get_error_line_data                 1592	1_1_0	EXIST::FUNCTION: +CTLOG_get0_name                         1593	1_1_0	EXIST::FUNCTION:CT +ASN1_TBOOLEAN_it                        1594	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_TBOOLEAN_it                        1594	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +RC2_set_key                             1595	1_1_0	EXIST::FUNCTION:RC2 +X509_REVOKED_get_ext_by_NID             1596	1_1_0	EXIST::FUNCTION: +RSA_padding_add_none                    1597	1_1_0	EXIST::FUNCTION:RSA +EVP_rc5_32_12_16_cbc                    1599	1_1_0	EXIST::FUNCTION:RC5 +PEM_dek_info                            1600	1_1_0	EXIST::FUNCTION: +ASN1_SCTX_get_template                  1601	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_get0                      1602	1_1_0	EXIST::FUNCTION: +X509_verify                             1603	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_get_request                 1604	1_1_0	EXIST::FUNCTION:TS +EVP_cast5_cbc                           1605	1_1_0	EXIST::FUNCTION:CAST +PEM_read_bio_X509_AUX                   1606	1_1_0	EXIST::FUNCTION: +TS_ext_print_bio                        1607	1_1_0	EXIST::FUNCTION:TS +SCT_set1_log_id                         1608	1_1_0	EXIST::FUNCTION:CT +X509_get0_pubkey_bitstr                 1609	1_1_0	EXIST::FUNCTION: +ENGINE_register_all_RAND                1610	1_1_0	EXIST::FUNCTION:ENGINE +EVP_MD_meth_get_result_size             1612	1_1_0	EXIST::FUNCTION: +BIO_ADDRINFO_address                    1613	1_1_0	EXIST::FUNCTION:SOCK +ASN1_STRING_print_ex                    1614	1_1_0	EXIST::FUNCTION: +i2d_CMS_ReceiptRequest                  1615	1_1_0	EXIST::FUNCTION:CMS +d2i_TS_REQ_fp                           1616	1_1_0	EXIST::FUNCTION:STDIO,TS +OCSP_REQ_CTX_i2d                        1617	1_1_0	EXIST::FUNCTION:OCSP +EVP_PKEY_get_default_digest_nid         1618	1_1_0	EXIST::FUNCTION: +ASIdOrRange_new                         1619	1_1_0	EXIST::FUNCTION:RFC3779 +ASN1_SCTX_new                           1620	1_1_0	EXIST::FUNCTION: +X509V3_EXT_get                          1621	1_1_0	EXIST::FUNCTION: +OCSP_id_cmp                             1622	1_1_0	EXIST::FUNCTION:OCSP +NCONF_dump_bio                          1623	1_1_0	EXIST::FUNCTION: +X509_NAME_get_entry                     1624	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get1_DH                        1625	1_1_0	EXIST::FUNCTION:DH +CRYPTO_gcm128_aad                       1626	1_1_0	EXIST::FUNCTION: +EVP_des_cfb8                            1627	1_1_0	EXIST::FUNCTION:DES +BN_BLINDING_convert                     1628	1_1_0	EXIST::FUNCTION: +CRYPTO_ocb128_cleanup                   1629	1_1_0	EXIST::FUNCTION:OCB +EVP_des_ede_cbc                         1630	1_1_0	EXIST::FUNCTION:DES +i2d_ASN1_TIME                           1631	1_1_0	EXIST::FUNCTION: +ENGINE_register_all_pkey_asn1_meths     1632	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_set_max_response_length            1633	1_1_0	EXIST::FUNCTION:OCSP +d2i_ISSUING_DIST_POINT                  1634	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_set0_key              1635	1_1_0	EXIST::FUNCTION:CMS +NCONF_new                               1636	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_free                    1637	1_1_0	EXIST::FUNCTION:OCSP +PKCS7_ENCRYPT_free                      1638	1_1_0	EXIST::FUNCTION: +i2d_DIST_POINT                          1639	1_1_0	EXIST::FUNCTION: +EVP_PKEY_paramgen_init                  1640	1_1_0	EXIST::FUNCTION: +TS_MSG_IMPRINT_dup                      1641	1_1_0	EXIST::FUNCTION:TS +CMS_ContentInfo_it                      1642	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:CMS +CMS_ContentInfo_it                      1642	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:CMS +OCSP_resp_get0_signature                1643	1_1_0	EXIST::FUNCTION:OCSP +X509_STORE_CTX_get1_issuer              1644	1_1_0	EXIST::FUNCTION: +EVP_Digest                              1645	1_1_0	EXIST::FUNCTION: +CRYPTO_set_ex_data                      1646	1_1_0	EXIST::FUNCTION: +BN_bn2hex                               1647	1_1_0	EXIST::FUNCTION: +BN_lshift1                              1648	1_1_0	EXIST::FUNCTION: +i2d_EDIPARTYNAME                        1649	1_1_0	EXIST::FUNCTION: +X509_policy_tree_get0_policies          1650	1_1_0	EXIST::FUNCTION: +X509at_add1_attr                        1651	1_1_0	EXIST::FUNCTION: +X509_get_ex_data                        1653	1_1_0	EXIST::FUNCTION: +RSA_set_method                          1654	1_1_0	EXIST::FUNCTION:RSA +X509_REVOKED_dup                        1655	1_1_0	EXIST::FUNCTION: +ASN1_TIME_new                           1656	1_1_0	EXIST::FUNCTION: +PEM_write_NETSCAPE_CERT_SEQUENCE        1657	1_1_0	EXIST::FUNCTION:STDIO +PEM_read_X509_REQ                       1658	1_1_0	EXIST::FUNCTION:STDIO +EC_GROUP_free                           1659	1_1_0	EXIST::FUNCTION:EC +X509_CRL_get_meth_data                  1660	1_1_0	EXIST::FUNCTION: +X509V3_add_value_uchar                  1661	1_1_0	EXIST::FUNCTION: +BIO_asn1_get_suffix                     1662	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_clear_flags           1663	1_1_0	EXIST::FUNCTION: +X509_NAME_add_entry_by_txt              1664	1_1_0	EXIST::FUNCTION: +DES_ede3_cfb_encrypt                    1665	1_1_0	EXIST::FUNCTION:DES +i2d_CMS_bio_stream                      1667	1_1_0	EXIST::FUNCTION:CMS +DES_quad_cksum                          1668	1_1_0	EXIST::FUNCTION:DES +X509_ATTRIBUTE_create_by_NID            1669	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTX_free                      1670	1_1_0	EXIST::FUNCTION:TS +EC_KEY_up_ref                           1671	1_1_0	EXIST::FUNCTION:EC +EC_GROUP_get_basis_type                 1672	1_1_0	EXIST::FUNCTION:EC +OCSP_crlID_new                          1673	1_1_0	EXIST:!VMS:FUNCTION:OCSP +OCSP_crlID2_new                         1673	1_1_0	EXIST:VMS:FUNCTION:OCSP +PEM_write_PKCS7                         1674	1_1_0	EXIST::FUNCTION:STDIO +PKCS7_add_signer                        1675	1_1_0	EXIST::FUNCTION: +X509_SIG_it                             1676	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_SIG_it                             1676	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASYNC_start_job                         1677	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_dup                         1678	1_1_0	EXIST::FUNCTION:TS +EVP_aes_192_ctr                         1679	1_1_0	EXIST::FUNCTION: +PKCS12_pack_authsafes                   1680	1_1_0	EXIST::FUNCTION: +PKCS7_get_attribute                     1681	1_1_0	EXIST::FUNCTION: +OPENSSL_config                          1682	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +s2i_ASN1_INTEGER                        1683	1_1_0	EXIST::FUNCTION: +CMS_signed_add1_attr_by_OBJ             1684	1_1_0	EXIST::FUNCTION:CMS +CRYPTO_128_wrap_pad                     1685	1_1_0	EXIST::FUNCTION: +CMS_EncryptedData_set1_key              1686	1_1_0	EXIST::FUNCTION:CMS +OBJ_find_sigid_by_algs                  1687	1_1_0	EXIST::FUNCTION: +ASN1_generate_nconf                     1688	1_1_0	EXIST::FUNCTION: +CMS_add0_recipient_password             1689	1_1_0	EXIST::FUNCTION:CMS +UI_get_string_type                      1690	1_1_0	EXIST::FUNCTION:UI +PEM_read_bio_ECPrivateKey               1691	1_1_0	EXIST::FUNCTION:EC +EVP_PKEY_get_attr                       1692	1_1_0	EXIST::FUNCTION: +PEM_read_bio_ECPKParameters             1693	1_1_0	EXIST::FUNCTION:EC +d2i_PKCS12_MAC_DATA                     1694	1_1_0	EXIST::FUNCTION: +ENGINE_ctrl_cmd                         1695	1_1_0	EXIST::FUNCTION:ENGINE +PKCS12_SAFEBAG_get_bag_nid              1696	1_1_0	EXIST::FUNCTION: +TS_CONF_set_digests                     1697	1_1_0	EXIST::FUNCTION:TS +PKCS7_SIGNED_it                         1698	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_SIGNED_it                         1698	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +b2i_PublicKey                           1699	1_1_0	EXIST::FUNCTION:DSA +X509_PURPOSE_cleanup                    1700	1_1_0	EXIST::FUNCTION: +ESS_SIGNING_CERT_dup                    1701	1_1_0	EXIST::FUNCTION:TS +ENGINE_set_default_DSA                  1702	1_1_0	EXIST::FUNCTION:ENGINE +X509_REVOKED_new                        1703	1_1_0	EXIST::FUNCTION: +NCONF_WIN32                             1704	1_1_0	EXIST::FUNCTION: +RSA_padding_check_PKCS1_OAEP_mgf1       1705	1_1_0	EXIST::FUNCTION:RSA +X509_policy_tree_get0_level             1706	1_1_0	EXIST::FUNCTION: +ASN1_parse_dump                         1708	1_1_0	EXIST::FUNCTION: +BIO_vfree                               1709	1_1_0	EXIST::FUNCTION: +CRYPTO_cbc128_decrypt                   1710	1_1_0	EXIST::FUNCTION: +UI_dup_verify_string                    1711	1_1_0	EXIST::FUNCTION:UI +d2i_PKCS7_bio                           1712	1_1_0	EXIST::FUNCTION: +ENGINE_set_default_digests              1713	1_1_0	EXIST::FUNCTION:ENGINE +i2d_PublicKey                           1714	1_1_0	EXIST::FUNCTION: +RC5_32_set_key                          1715	1_1_0	EXIST::FUNCTION:RC5 +AES_unwrap_key                          1716	1_1_0	EXIST::FUNCTION: +EVP_Cipher                              1717	1_1_0	EXIST::FUNCTION: +AES_set_decrypt_key                     1718	1_1_0	EXIST::FUNCTION: +BF_ofb64_encrypt                        1719	1_1_0	EXIST::FUNCTION:BF +d2i_TS_TST_INFO_fp                      1720	1_1_0	EXIST::FUNCTION:STDIO,TS +X509_find_by_issuer_and_serial          1721	1_1_0	EXIST::FUNCTION: +EVP_PKEY_type                           1722	1_1_0	EXIST::FUNCTION: +ENGINE_ctrl                             1723	1_1_0	EXIST::FUNCTION:ENGINE +EVP_cast5_ecb                           1724	1_1_0	EXIST::FUNCTION:CAST +BIO_nwrite0                             1725	1_1_0	EXIST::FUNCTION: +CAST_encrypt                            1726	1_1_0	EXIST::FUNCTION:CAST +a2d_ASN1_OBJECT                         1727	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_delete_ext                  1728	1_1_0	EXIST::FUNCTION:OCSP +UI_method_get_reader                    1729	1_1_0	EXIST::FUNCTION:UI +CMS_unsigned_get_attr                   1730	1_1_0	EXIST::FUNCTION:CMS +EVP_aes_256_cbc                         1731	1_1_0	EXIST::FUNCTION: +X509_check_ip_asc                       1732	1_1_0	EXIST::FUNCTION: +PEM_write_bio_X509_AUX                  1733	1_1_0	EXIST::FUNCTION: +RC2_cbc_encrypt                         1734	1_1_0	EXIST::FUNCTION:RC2 +TS_MSG_IMPRINT_new                      1735	1_1_0	EXIST::FUNCTION:TS +EVP_ENCODE_CTX_new                      1736	1_1_0	EXIST::FUNCTION: +BIO_f_base64                            1737	1_1_0	EXIST::FUNCTION: +CMS_verify                              1738	1_1_0	EXIST::FUNCTION:CMS +i2d_PrivateKey                          1739	1_1_0	EXIST::FUNCTION: +i2d_OCSP_ONEREQ                         1740	1_1_0	EXIST::FUNCTION:OCSP +OPENSSL_issetugid                       1741	1_1_0	EXIST::FUNCTION: +d2i_ASN1_OBJECT                         1742	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_flags                   1743	1_1_0	EXIST::FUNCTION: +EVP_idea_cbc                            1744	1_1_0	EXIST::FUNCTION:IDEA +EC_POINT_cmp                            1745	1_1_0	EXIST::FUNCTION:EC +ASN1_buf_print                          1746	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_hex2ctrl                   1747	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PKCS8PrivateKey           1748	1_1_0	EXIST::FUNCTION: +CMAC_Update                             1749	1_1_0	EXIST::FUNCTION:CMAC +d2i_ASN1_UTCTIME                        1750	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_insert                       1751	1_1_0	EXIST::FUNCTION: +DSO_up_ref                              1752	1_1_0	EXIST::FUNCTION: +EVP_rc2_cbc                             1753	1_1_0	EXIST::FUNCTION:RC2 +i2d_NETSCAPE_SPKI                       1754	1_1_0	EXIST::FUNCTION: +ASYNC_init_thread                       1755	1_1_0	EXIST::FUNCTION: +OCSP_BASICRESP_get_ext_by_OBJ           1756	1_1_0	EXIST::FUNCTION:OCSP +X509_reject_clear                       1757	1_1_0	EXIST::FUNCTION: +DH_security_bits                        1758	1_1_0	EXIST::FUNCTION:DH +LONG_it                                 1759	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +LONG_it                                 1759	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASN1_dup                                1760	1_1_0	EXIST::FUNCTION: +TS_RESP_new                             1761	1_1_0	EXIST::FUNCTION:TS +i2d_PKCS8PrivateKeyInfo_fp              1762	1_1_0	EXIST::FUNCTION:STDIO +X509_alias_get0                         1763	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_free                     1764	1_1_0	EXIST::FUNCTION: +d2i_X509_bio                            1765	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_exts                    1766	1_1_0	EXIST::FUNCTION:TS +EVP_aes_256_ecb                         1767	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_name_print              1768	1_1_0	EXIST::FUNCTION: +d2i_X509_EXTENSIONS                     1769	1_1_0	EXIST::FUNCTION: +ASN1_OCTET_STRING_free                  1770	1_1_0	EXIST::FUNCTION: +PKCS7_RECIP_INFO_free                   1771	1_1_0	EXIST::FUNCTION: +ASN1_tag2bit                            1772	1_1_0	EXIST::FUNCTION: +TS_REQ_add_ext                          1773	1_1_0	EXIST::FUNCTION:TS +X509_digest                             1776	1_1_0	EXIST::FUNCTION: +CRYPTO_THREAD_cleanup_local             1777	1_1_0	EXIST::FUNCTION: +NETSCAPE_CERT_SEQUENCE_it               1778	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +NETSCAPE_CERT_SEQUENCE_it               1778	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_aes_128_wrap                        1779	1_1_0	EXIST::FUNCTION: +X509V3_conf_free                        1780	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_ext_by_NID              1781	1_1_0	EXIST::FUNCTION:TS +EVP_aes_256_cfb1                        1782	1_1_0	EXIST::FUNCTION: +X509_issuer_name_cmp                    1783	1_1_0	EXIST::FUNCTION: +CMS_RecipientEncryptedKey_get0_id       1784	1_1_0	EXIST::FUNCTION:CMS +EVP_PKEY_meth_get_verify_recover        1785	1_1_0	EXIST::FUNCTION: +NAME_CONSTRAINTS_check                  1786	1_1_0	EXIST::FUNCTION: +X509_CERT_AUX_it                        1787	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_CERT_AUX_it                        1787	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_get_X509_PUBKEY                    1789	1_1_0	EXIST::FUNCTION: +TXT_DB_create_index                     1790	1_1_0	EXIST::FUNCTION: +RAND_set_rand_engine                    1791	1_1_0	EXIST::FUNCTION:ENGINE +X509_set_serialNumber                   1792	1_1_0	EXIST::FUNCTION: +BN_mod_exp_mont_consttime               1793	1_1_0	EXIST::FUNCTION: +X509V3_parse_list                       1794	1_1_0	EXIST::FUNCTION: +ACCESS_DESCRIPTION_new                  1795	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_clear_flags              1796	1_1_0	EXIST::FUNCTION: +ECDSA_size                              1797	1_1_0	EXIST::FUNCTION:EC +X509_ALGOR_get0                         1798	1_1_0	EXIST::FUNCTION: +d2i_ACCESS_DESCRIPTION                  1799	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_get_ext_by_NID          1800	1_1_0	EXIST::FUNCTION:OCSP +a2i_IPADDRESS_NC                        1801	1_1_0	EXIST::FUNCTION: +CTLOG_STORE_load_default_file           1802	1_1_0	EXIST::FUNCTION:CT +PKCS12_SAFEBAG_create_pkcs8_encrypt     1803	1_1_0	EXIST::FUNCTION: +RAND_screen                             1804	1_1_0	EXIST:_WIN32:FUNCTION:DEPRECATEDIN_1_1_0 +CONF_get_string                         1805	1_1_0	EXIST::FUNCTION: +X509_cmp_current_time                   1806	1_1_0	EXIST::FUNCTION: +i2d_DSAPrivateKey                       1807	1_1_0	EXIST::FUNCTION:DSA +ASN1_BIT_STRING_new                     1808	1_1_0	EXIST::FUNCTION: +BIO_new_file                            1809	1_1_0	EXIST::FUNCTION: +PKCS7_SIGNER_INFO_get0_algs             1810	1_1_0	EXIST::FUNCTION: +TS_RESP_set_status_info                 1811	1_1_0	EXIST::FUNCTION:TS +OPENSSL_LH_delete                       1812	1_1_0	EXIST::FUNCTION: +TS_STATUS_INFO_dup                      1813	1_1_0	EXIST::FUNCTION:TS +X509v3_addr_get_range                   1814	1_1_0	EXIST::FUNCTION:RFC3779 +X509_EXTENSION_get_data                 1815	1_1_0	EXIST::FUNCTION: +RC5_32_encrypt                          1816	1_1_0	EXIST::FUNCTION:RC5 +DIST_POINT_set_dpname                   1817	1_1_0	EXIST::FUNCTION: +BIO_sock_info                           1818	1_1_0	EXIST::FUNCTION:SOCK +OPENSSL_hexstr2buf                      1819	1_1_0	EXIST::FUNCTION: +EVP_add_cipher                          1820	1_1_0	EXIST::FUNCTION: +X509V3_EXT_add_list                     1821	1_1_0	EXIST::FUNCTION: +CMS_compress                            1822	1_1_0	EXIST::FUNCTION:CMS +X509_get_ext_by_critical                1823	1_1_0	EXIST::FUNCTION: +ASYNC_WAIT_CTX_clear_fd                 1824	1_1_0	EXIST::FUNCTION: +ZLONG_it                                1825	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ZLONG_it                                1825	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OPENSSL_sk_find_ex                      1826	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_to_BN                   1827	1_1_0	EXIST::FUNCTION: +X509_CRL_get_ext_d2i                    1828	1_1_0	EXIST::FUNCTION: +i2d_AUTHORITY_KEYID                     1829	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_time                    1830	1_1_0	EXIST::FUNCTION:TS +ASN1_VISIBLESTRING_it                   1831	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_VISIBLESTRING_it                   1831	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509V3_EXT_REQ_add_conf                 1832	1_1_0	EXIST::FUNCTION: +ASN1_STRING_to_UTF8                     1833	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_update                  1835	1_1_0	EXIST::FUNCTION: +EVP_camellia_192_cbc                    1836	1_1_0	EXIST::FUNCTION:CAMELLIA +OPENSSL_LH_stats_bio                    1837	1_1_0	EXIST::FUNCTION: +PKCS7_set_signed_attributes             1838	1_1_0	EXIST::FUNCTION: +EC_KEY_priv2buf                         1839	1_1_0	EXIST::FUNCTION:EC +BN_BLINDING_free                        1840	1_1_0	EXIST::FUNCTION: +IPAddressChoice_new                     1841	1_1_0	EXIST::FUNCTION:RFC3779 +X509_CRL_get_ext_count                  1842	1_1_0	EXIST::FUNCTION: +PKCS12_add_key                          1843	1_1_0	EXIST::FUNCTION: +EVP_camellia_128_cfb1                   1844	1_1_0	EXIST::FUNCTION:CAMELLIA +BIO_find_type                           1845	1_1_0	EXIST::FUNCTION: +ISSUING_DIST_POINT_it                   1846	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ISSUING_DIST_POINT_it                   1846	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BIO_ctrl_wpending                       1847	1_1_0	EXIST::FUNCTION: +X509_ALGOR_cmp                          1848	1_1_0	EXIST::FUNCTION: +i2d_ASN1_bio_stream                     1849	1_1_0	EXIST::FUNCTION: +CRYPTO_THREAD_init_local                1850	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_serial_cb               1851	1_1_0	EXIST::FUNCTION:TS +POLICY_MAPPING_it                       1852	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +POLICY_MAPPING_it                       1852	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ERR_load_KDF_strings                    1853	1_1_0	EXIST::FUNCTION: +UI_method_set_reader                    1854	1_1_0	EXIST::FUNCTION:UI +BIO_next                                1855	1_1_0	EXIST::FUNCTION: +ASN1_STRING_set_default_mask_asc        1856	1_1_0	EXIST::FUNCTION: +X509_CRL_new                            1857	1_1_0	EXIST::FUNCTION: +i2b_PrivateKey_bio                      1858	1_1_0	EXIST::FUNCTION:DSA +ASN1_STRING_length_set                  1859	1_1_0	EXIST::FUNCTION: +PEM_write_PKCS8                         1860	1_1_0	EXIST::FUNCTION:STDIO +PKCS7_digest_from_attributes            1861	1_1_0	EXIST::FUNCTION: +EC_GROUP_set_curve_GFp                  1862	1_1_0	EXIST::FUNCTION:EC +X509_PURPOSE_get0                       1863	1_1_0	EXIST::FUNCTION: +EVP_PKEY_set1_DSA                       1864	1_1_0	EXIST::FUNCTION:DSA +X509_NAME_it                            1865	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_NAME_it                            1865	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OBJ_add_object                          1866	1_1_0	EXIST::FUNCTION: +DSA_generate_key                        1867	1_1_0	EXIST::FUNCTION:DSA +EVP_DigestUpdate                        1868	1_1_0	EXIST::FUNCTION: +X509_get_ext_by_OBJ                     1869	1_1_0	EXIST::FUNCTION: +PBEPARAM_new                            1870	1_1_0	EXIST::FUNCTION: +EVP_aes_128_cbc                         1871	1_1_0	EXIST::FUNCTION: +CRYPTO_dup_ex_data                      1872	1_1_0	EXIST::FUNCTION: +OCSP_single_get0_status                 1873	1_1_0	EXIST::FUNCTION:OCSP +d2i_AUTHORITY_INFO_ACCESS               1874	1_1_0	EXIST::FUNCTION: +PEM_read_RSAPrivateKey                  1875	1_1_0	EXIST::FUNCTION:RSA,STDIO +BIO_closesocket                         1876	1_1_0	EXIST::FUNCTION:SOCK +RSA_verify_ASN1_OCTET_STRING            1877	1_1_0	EXIST::FUNCTION:RSA +SCT_set_log_entry_type                  1878	1_1_0	EXIST::FUNCTION:CT +BN_new                                  1879	1_1_0	EXIST::FUNCTION: +X509_OBJECT_retrieve_by_subject         1880	1_1_0	EXIST::FUNCTION: +MD5_Final                               1881	1_1_0	EXIST::FUNCTION:MD5 +X509_STORE_set_verify_cb                1882	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_print                      1883	1_1_0	EXIST::FUNCTION:OCSP +CMS_add1_crl                            1884	1_1_0	EXIST::FUNCTION:CMS +d2i_EDIPARTYNAME                        1885	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set0_trusted_stack       1886	1_1_0	EXIST::FUNCTION: +BIO_ADDR_service_string                 1887	1_1_0	EXIST::FUNCTION:SOCK +ASN1_BOOLEAN_it                         1888	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_BOOLEAN_it                         1888	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_RESP_CTX_set_time_cb                 1889	1_1_0	EXIST::FUNCTION:TS +IDEA_cbc_encrypt                        1890	1_1_0	EXIST::FUNCTION:IDEA +BN_CTX_secure_new                       1891	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_add_ext                     1892	1_1_0	EXIST::FUNCTION:OCSP +CMS_uncompress                          1893	1_1_0	EXIST::FUNCTION:CMS +CRYPTO_mem_debug_pop                    1895	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG +EVP_aes_192_cfb128                      1896	1_1_0	EXIST::FUNCTION: +OCSP_REQ_CTX_nbio                       1897	1_1_0	EXIST::FUNCTION:OCSP +EVP_CIPHER_CTX_copy                     1898	1_1_0	EXIST::FUNCTION: +CRYPTO_secure_allocated                 1899	1_1_0	EXIST::FUNCTION: +UI_UTIL_read_pw_string                  1900	1_1_0	EXIST::FUNCTION:UI +NOTICEREF_free                          1901	1_1_0	EXIST::FUNCTION: +AES_cfb1_encrypt                        1902	1_1_0	EXIST::FUNCTION: +X509v3_get_ext                          1903	1_1_0	EXIST::FUNCTION: +CRYPTO_gcm128_encrypt_ctr32             1905	1_1_0	EXIST::FUNCTION: +SCT_set1_signature                      1906	1_1_0	EXIST::FUNCTION:CT +CONF_imodule_get_module                 1907	1_1_0	EXIST::FUNCTION: +NAME_CONSTRAINTS_new                    1908	1_1_0	EXIST::FUNCTION: +BN_usub                                 1909	1_1_0	EXIST::FUNCTION: +SRP_Calc_B                              1910	1_1_0	EXIST::FUNCTION:SRP +CMS_decrypt_set1_key                    1911	1_1_0	EXIST::FUNCTION:CMS +EC_GROUP_get_degree                     1912	1_1_0	EXIST::FUNCTION:EC +X509_ALGOR_set0                         1913	1_1_0	EXIST::FUNCTION: +OPENSSL_LH_set_down_load                1914	1_1_0	EXIST::FUNCTION: +X509v3_asid_inherits                    1915	1_1_0	EXIST::FUNCTION:RFC3779 +EVP_MD_meth_get_app_datasize            1916	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_num_untrusted        1917	1_1_0	EXIST::FUNCTION: +RAND_poll                               1918	1_1_0	EXIST::FUNCTION: +EVP_PKEY_print_public                   1919	1_1_0	EXIST::FUNCTION: +CMS_SignedData_init                     1920	1_1_0	EXIST::FUNCTION:CMS +X509_REQ_free                           1921	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_set                        1922	1_1_0	EXIST::FUNCTION: +EVP_DecodeFinal                         1923	1_1_0	EXIST::FUNCTION: +MD5_Transform                           1925	1_1_0	EXIST::FUNCTION:MD5 +SRP_create_verifier_BN                  1926	1_1_0	EXIST::FUNCTION:SRP +ENGINE_register_all_EC                  1927	1_1_0	EXIST::FUNCTION:ENGINE +EVP_camellia_128_ofb                    1928	1_1_0	EXIST::FUNCTION:CAMELLIA +PEM_write_X509_AUX                      1929	1_1_0	EXIST::FUNCTION:STDIO +X509_LOOKUP_by_subject                  1930	1_1_0	EXIST::FUNCTION: +X509_REQ_add_extensions                 1931	1_1_0	EXIST::FUNCTION: +Camellia_cbc_encrypt                    1932	1_1_0	EXIST::FUNCTION:CAMELLIA +EC_KEY_METHOD_new                       1933	1_1_0	EXIST::FUNCTION:EC +RSA_flags                               1934	1_1_0	EXIST::FUNCTION:RSA +X509_NAME_add_entry                     1935	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_get_asn1_iv                  1936	1_1_0	EXIST::FUNCTION: +i2d_RSAPrivateKey_bio                   1937	1_1_0	EXIST::FUNCTION:RSA +PKCS5_PBE_keyivgen                      1938	1_1_0	EXIST::FUNCTION: +i2d_OCSP_SERVICELOC                     1939	1_1_0	EXIST::FUNCTION:OCSP +EC_POINT_copy                           1940	1_1_0	EXIST::FUNCTION:EC +X509V3_EXT_CRL_add_nconf                1941	1_1_0	EXIST::FUNCTION: +SHA256_Init                             1942	1_1_0	EXIST::FUNCTION: +X509_NAME_ENTRY_get_object              1943	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_free                    1944	1_1_0	EXIST::FUNCTION: +X509_CRL_set_meth_data                  1945	1_1_0	EXIST::FUNCTION: +EVP_aes_192_cfb1                        1946	1_1_0	EXIST::FUNCTION: +EVP_MD_CTX_set_flags                    1947	1_1_0	EXIST::FUNCTION: +EVP_seed_cbc                            1948	1_1_0	EXIST::FUNCTION:SEED +d2i_PKCS12                              1949	1_1_0	EXIST::FUNCTION: +X509_policy_node_get0_policy            1950	1_1_0	EXIST::FUNCTION: +PKCS12_unpack_p7data                    1951	1_1_0	EXIST::FUNCTION: +ECDSA_sign                              1952	1_1_0	EXIST::FUNCTION:EC +d2i_PKCS12_fp                           1953	1_1_0	EXIST::FUNCTION:STDIO +CMS_unsigned_get_attr_by_NID            1954	1_1_0	EXIST::FUNCTION:CMS +UI_add_user_data                        1955	1_1_0	EXIST::FUNCTION:UI +BN_bntest_rand                          1956	1_1_0	EXIST::FUNCTION: +X509_get_pubkey                         1957	1_1_0	EXIST::FUNCTION: +i2d_X509_NAME                           1958	1_1_0	EXIST::FUNCTION: +EVP_PKEY_add1_attr                      1959	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_purpose_inherit          1960	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_keygen                1961	1_1_0	EXIST::FUNCTION: +ENGINE_get_pkey_asn1_meth               1962	1_1_0	EXIST::FUNCTION:ENGINE +SHA256_Update                           1963	1_1_0	EXIST::FUNCTION: +d2i_PKCS7_ISSUER_AND_SERIAL             1964	1_1_0	EXIST::FUNCTION: +PKCS12_unpack_authsafes                 1965	1_1_0	EXIST::FUNCTION: +X509_CRL_it                             1966	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_CRL_it                             1966	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +d2i_X509_ALGOR                          1967	1_1_0	EXIST::FUNCTION: +PKCS12_PBE_keyivgen                     1968	1_1_0	EXIST::FUNCTION: +BIO_test_flags                          1969	1_1_0	EXIST::FUNCTION: +EC_POINT_get_affine_coordinates_GF2m    1970	1_1_0	EXIST::FUNCTION:EC,EC2M +EVP_ENCODE_CTX_num                      1971	1_1_0	EXIST::FUNCTION: +Camellia_cfb1_encrypt                   1972	1_1_0	EXIST::FUNCTION:CAMELLIA +NCONF_load_fp                           1973	1_1_0	EXIST::FUNCTION:STDIO +i2d_OCSP_REQINFO                        1974	1_1_0	EXIST::FUNCTION:OCSP +EVP_PKEY_sign                           1975	1_1_0	EXIST::FUNCTION: +TS_REQ_get_ext_by_critical              1976	1_1_0	EXIST::FUNCTION:TS +EC_KEY_key2buf                          1977	1_1_0	EXIST::FUNCTION:EC +X509_EXTENSION_it                       1978	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_EXTENSION_it                       1978	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +i2d_PKCS8_fp                            1979	1_1_0	EXIST::FUNCTION:STDIO +UTF8_getc                               1980	1_1_0	EXIST::FUNCTION: +ASN1_IA5STRING_free                     1981	1_1_0	EXIST::FUNCTION: +EC_KEY_METHOD_get_verify                1982	1_1_0	EXIST::FUNCTION:EC +OBJ_NAME_do_all                         1983	1_1_0	EXIST::FUNCTION: +d2i_TS_MSG_IMPRINT_fp                   1984	1_1_0	EXIST::FUNCTION:STDIO,TS +X509_CRL_verify                         1985	1_1_0	EXIST::FUNCTION: +X509_get0_uids                          1986	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get0_DSA                       1987	1_1_0	EXIST::FUNCTION:DSA +d2i_CMS_ContentInfo                     1988	1_1_0	EXIST::FUNCTION:CMS +EVP_CIPHER_meth_get_do_cipher           1989	1_1_0	EXIST::FUNCTION: +i2d_DSA_PUBKEY                          1990	1_1_0	EXIST::FUNCTION:DSA +GENERAL_NAME_it                         1991	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +GENERAL_NAME_it                         1991	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_des_ede_ecb                         1992	1_1_0	EXIST::FUNCTION:DES +i2d_CRL_DIST_POINTS                     1993	1_1_0	EXIST::FUNCTION: +PEM_write_bio_X509_REQ_NEW              1994	1_1_0	EXIST::FUNCTION: +RC5_32_ofb64_encrypt                    1995	1_1_0	EXIST::FUNCTION:RC5 +i2d_PKCS7                               1996	1_1_0	EXIST::FUNCTION: +BN_mod_lshift_quick                     1997	1_1_0	EXIST::FUNCTION: +DIST_POINT_NAME_it                      1998	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +DIST_POINT_NAME_it                      1998	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PEM_read_PrivateKey                     1999	1_1_0	EXIST::FUNCTION:STDIO +X509V3_get_d2i                          2000	1_1_0	EXIST::FUNCTION: +PKCS7_SIGNER_INFO_sign                  2001	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_free                        2002	1_1_0	EXIST::FUNCTION:TS +DSA_security_bits                       2003	1_1_0	EXIST::FUNCTION:DSA +X509v3_addr_is_canonical                2004	1_1_0	EXIST::FUNCTION:RFC3779 +BN_mod_mul_reciprocal                   2005	1_1_0	EXIST::FUNCTION: +TS_REQ_get_version                      2006	1_1_0	EXIST::FUNCTION:TS +BN_exp                                  2007	1_1_0	EXIST::FUNCTION: +i2d_SXNET                               2008	1_1_0	EXIST::FUNCTION: +OBJ_bsearch_                            2009	1_1_0	EXIST::FUNCTION: +OPENSSL_LH_new                          2010	1_1_0	EXIST::FUNCTION: +ENGINE_register_all_pkey_meths          2011	1_1_0	EXIST::FUNCTION:ENGINE +ENGINE_get_init_function                2012	1_1_0	EXIST::FUNCTION:ENGINE +EC_POINT_point2hex                      2013	1_1_0	EXIST::FUNCTION:EC +ENGINE_get_default_DSA                  2014	1_1_0	EXIST::FUNCTION:ENGINE +ENGINE_register_all_complete            2015	1_1_0	EXIST::FUNCTION:ENGINE +SRP_get_default_gN                      2016	1_1_0	EXIST::FUNCTION:SRP +UI_dup_input_boolean                    2017	1_1_0	EXIST::FUNCTION:UI +PKCS7_dup                               2018	1_1_0	EXIST::FUNCTION: +i2d_TS_REQ_fp                           2019	1_1_0	EXIST::FUNCTION:STDIO,TS +i2d_OTHERNAME                           2020	1_1_0	EXIST::FUNCTION: +EC_KEY_get0_private_key                 2021	1_1_0	EXIST::FUNCTION:EC +SCT_get0_extensions                     2022	1_1_0	EXIST::FUNCTION:CT +OPENSSL_LH_node_stats_bio               2023	1_1_0	EXIST::FUNCTION: +i2d_DIRECTORYSTRING                     2024	1_1_0	EXIST::FUNCTION: +BN_X931_derive_prime_ex                 2025	1_1_0	EXIST::FUNCTION: +ENGINE_get_pkey_asn1_meth_str           2026	1_1_0	EXIST::FUNCTION:ENGINE +PKCS7_signatureVerify                   2027	1_1_0	EXIST::FUNCTION: +CRYPTO_ocb128_new                       2028	1_1_0	EXIST::FUNCTION:OCB +EC_curve_nist2nid                       2029	1_1_0	EXIST::FUNCTION:EC +UI_get0_result                          2030	1_1_0	EXIST::FUNCTION:UI +OCSP_request_add1_nonce                 2031	1_1_0	EXIST::FUNCTION:OCSP +UI_construct_prompt                     2032	1_1_0	EXIST::FUNCTION:UI +ENGINE_unregister_RSA                   2033	1_1_0	EXIST::FUNCTION:ENGINE +EC_GROUP_order_bits                     2034	1_1_0	EXIST::FUNCTION:EC +d2i_CMS_bio                             2035	1_1_0	EXIST::FUNCTION:CMS +OPENSSL_sk_num                          2036	1_1_0	EXIST::FUNCTION: +_shadow_DES_check_key                   2037	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DES +_shadow_DES_check_key                   2037	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DES +CMS_RecipientInfo_set0_pkey             2038	1_1_0	EXIST::FUNCTION:CMS +X509_STORE_CTX_set_default              2039	1_1_0	EXIST::FUNCTION: +AES_wrap_key                            2040	1_1_0	EXIST::FUNCTION: +EVP_md_null                             2041	1_1_0	EXIST::FUNCTION: +i2d_SCT_LIST                            2042	1_1_0	EXIST::FUNCTION:CT +PKCS7_get_issuer_and_serial             2043	1_1_0	EXIST::FUNCTION: +PKCS7_SIGN_ENVELOPE_it                  2044	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_SIGN_ENVELOPE_it                  2044	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASN1_d2i_fp                             2045	1_1_0	EXIST::FUNCTION:STDIO +EVP_DecryptFinal                        2046	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_it                      2047	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_ENUMERATED_it                      2047	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +o2i_ECPublicKey                         2048	1_1_0	EXIST::FUNCTION:EC +ERR_load_BUF_strings                    2049	1_1_0	EXIST::FUNCTION: +PEM_read_bio_RSA_PUBKEY                 2050	1_1_0	EXIST::FUNCTION:RSA +OCSP_SINGLERESP_new                     2051	1_1_0	EXIST::FUNCTION:OCSP +ASN1_SCTX_free                          2052	1_1_0	EXIST::FUNCTION: +i2d_ECPrivateKey_fp                     2053	1_1_0	EXIST::FUNCTION:EC,STDIO +EVP_CIPHER_CTX_original_iv              2054	1_1_0	EXIST::FUNCTION: +PKCS7_SIGNED_free                       2055	1_1_0	EXIST::FUNCTION: +X509_TRUST_get0_name                    2056	1_1_0	EXIST::FUNCTION: +ENGINE_get_load_pubkey_function         2057	1_1_0	EXIST::FUNCTION:ENGINE +UI_get_default_method                   2058	1_1_0	EXIST::FUNCTION:UI +PKCS12_add_CSPName_asc                  2059	1_1_0	EXIST::FUNCTION: +PEM_write_PUBKEY                        2060	1_1_0	EXIST::FUNCTION:STDIO +UI_method_set_prompt_constructor        2061	1_1_0	EXIST::FUNCTION:UI +OBJ_length                              2062	1_1_0	EXIST::FUNCTION: +BN_GENCB_get_arg                        2063	1_1_0	EXIST::FUNCTION: +EVP_MD_CTX_clear_flags                  2064	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_verifyctx             2065	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_get0_cert            2066	1_1_0	EXIST::FUNCTION:CT +PEM_write_DHparams                      2067	1_1_0	EXIST::FUNCTION:DH,STDIO +DH_set_ex_data                          2068	1_1_0	EXIST::FUNCTION:DH +OCSP_SIGNATURE_free                     2069	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_128_unwrap_pad                   2070	1_1_0	EXIST::FUNCTION: +BIO_new_CMS                             2071	1_1_0	EXIST::FUNCTION:CMS +i2d_ASN1_ENUMERATED                     2072	1_1_0	EXIST::FUNCTION: +PEM_read_DSAparams                      2073	1_1_0	EXIST::FUNCTION:DSA,STDIO +TS_TST_INFO_set_ordering                2074	1_1_0	EXIST::FUNCTION:TS +MDC2_Init                               2075	1_1_0	EXIST::FUNCTION:MDC2 +i2o_SCT                                 2076	1_1_0	EXIST::FUNCTION:CT +d2i_TS_STATUS_INFO                      2077	1_1_0	EXIST::FUNCTION:TS +ERR_error_string_n                      2078	1_1_0	EXIST::FUNCTION: +HMAC                                    2079	1_1_0	EXIST::FUNCTION: +BN_mul                                  2080	1_1_0	EXIST::FUNCTION: +BN_get0_nist_prime_384                  2081	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set1_ip_asc           2082	1_1_0	EXIST::FUNCTION: +CONF_modules_load                       2083	1_1_0	EXIST::FUNCTION: +d2i_RSAPublicKey                        2084	1_1_0	EXIST::FUNCTION:RSA +i2d_ASN1_GENERALSTRING                  2085	1_1_0	EXIST::FUNCTION: +POLICYQUALINFO_new                      2086	1_1_0	EXIST::FUNCTION: +PKCS7_RECIP_INFO_get0_alg               2087	1_1_0	EXIST::FUNCTION: +EVP_PKEY_base_id                        2088	1_1_0	EXIST::FUNCTION: +UI_method_set_opener                    2089	1_1_0	EXIST::FUNCTION:UI +X509v3_get_ext_by_NID                   2090	1_1_0	EXIST::FUNCTION: +TS_CONF_set_policies                    2091	1_1_0	EXIST::FUNCTION:TS +CMS_SignerInfo_cert_cmp                 2092	1_1_0	EXIST::FUNCTION:CMS +PEM_read                                2093	1_1_0	EXIST::FUNCTION:STDIO +X509_STORE_set_depth                    2094	1_1_0	EXIST::FUNCTION: +EC_KEY_METHOD_get_sign                  2095	1_1_0	EXIST::FUNCTION:EC +EVP_CIPHER_CTX_iv                       2096	1_1_0	EXIST::FUNCTION: +i2d_ESS_SIGNING_CERT                    2097	1_1_0	EXIST::FUNCTION:TS +TS_RESP_set_tst_info                    2098	1_1_0	EXIST::FUNCTION:TS +EVP_PKEY_CTX_set_data                   2099	1_1_0	EXIST::FUNCTION: +CMS_EnvelopedData_create                2100	1_1_0	EXIST::FUNCTION:CMS +SCT_new                                 2101	1_1_0	EXIST::FUNCTION:CT +X509_REQ_add1_attr                      2102	1_1_0	EXIST::FUNCTION: +X509_get_ext_count                      2103	1_1_0	EXIST::FUNCTION: +CRYPTO_cts128_decrypt                   2104	1_1_0	EXIST::FUNCTION: +ASYNC_WAIT_CTX_get_fd                   2105	1_1_0	EXIST::FUNCTION: +i2d_TS_REQ                              2106	1_1_0	EXIST::FUNCTION:TS +OCSP_ONEREQ_add1_ext_i2d                2107	1_1_0	EXIST::FUNCTION:OCSP +ENGINE_register_pkey_meths              2108	1_1_0	EXIST::FUNCTION:ENGINE +ENGINE_load_public_key                  2109	1_1_0	EXIST::FUNCTION:ENGINE +ASIdOrRange_it                          2110	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +ASIdOrRange_it                          2110	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +DHparams_print_fp                       2111	1_1_0	EXIST::FUNCTION:DH,STDIO +ERR_load_CRYPTO_strings                 2112	1_1_0	EXIST:!VMS:FUNCTION: +ERR_load_CRYPTOlib_strings              2112	1_1_0	EXIST:VMS:FUNCTION: +X509_REQ_set_version                    2113	1_1_0	EXIST::FUNCTION: +d2i_ASN1_GENERALSTRING                  2114	1_1_0	EXIST::FUNCTION: +i2d_ASIdentifiers                       2115	1_1_0	EXIST::FUNCTION:RFC3779 +X509V3_EXT_cleanup                      2116	1_1_0	EXIST::FUNCTION: +CAST_ecb_encrypt                        2117	1_1_0	EXIST::FUNCTION:CAST +BIO_s_file                              2118	1_1_0	EXIST::FUNCTION: +RSA_X931_derive_ex                      2119	1_1_0	EXIST::FUNCTION:RSA +EVP_PKEY_decrypt_init                   2120	1_1_0	EXIST::FUNCTION: +ENGINE_get_destroy_function             2121	1_1_0	EXIST::FUNCTION:ENGINE +SHA224_Init                             2122	1_1_0	EXIST::FUNCTION: +X509V3_EXT_add_conf                     2123	1_1_0	EXIST::FUNCTION: +ASN1_object_size                        2124	1_1_0	EXIST::FUNCTION: +X509_REVOKED_free                       2125	1_1_0	EXIST::FUNCTION: +BN_mod_exp_recp                         2126	1_1_0	EXIST::FUNCTION: +EVP_mdc2                                2127	1_1_0	EXIST::FUNCTION:MDC2 +EVP_des_cfb64                           2128	1_1_0	EXIST::FUNCTION:DES +PKCS7_sign                              2129	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_get_ext_by_critical     2130	1_1_0	EXIST::FUNCTION:OCSP +EDIPARTYNAME_it                         2131	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +EDIPARTYNAME_it                         2131	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ERR_print_errors_fp                     2132	1_1_0	EXIST::FUNCTION:STDIO +BN_GF2m_mod_div_arr                     2133	1_1_0	EXIST::FUNCTION:EC2M +PKCS12_SAFEBAG_get0_attr                2134	1_1_0	EXIST::FUNCTION: +BIO_s_mem                               2135	1_1_0	EXIST::FUNCTION: +OCSP_RESPDATA_new                       2136	1_1_0	EXIST::FUNCTION:OCSP +ASN1_item_i2d_fp                        2137	1_1_0	EXIST::FUNCTION:STDIO +BN_GF2m_mod_sqr                         2138	1_1_0	EXIST::FUNCTION:EC2M +ASN1_PRINTABLE_new                      2139	1_1_0	EXIST::FUNCTION: +OBJ_NAME_new_index                      2140	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_add_alias                 2141	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get1_DSA                       2142	1_1_0	EXIST::FUNCTION:DSA +SEED_cbc_encrypt                        2143	1_1_0	EXIST::FUNCTION:SEED +EVP_rc2_40_cbc                          2144	1_1_0	EXIST::FUNCTION:RC2 +ECDSA_SIG_new                           2145	1_1_0	EXIST::FUNCTION:EC +i2d_PKCS8PrivateKey_nid_fp              2146	1_1_0	EXIST::FUNCTION:STDIO +X509_NAME_ENTRY_it                      2147	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_NAME_ENTRY_it                      2147	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CRYPTO_THREAD_compare_id                2148	1_1_0	EXIST::FUNCTION: +d2i_IPAddressChoice                     2149	1_1_0	EXIST::FUNCTION:RFC3779 +IPAddressFamily_it                      2150	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +IPAddressFamily_it                      2150	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +ERR_load_OCSP_strings                   2151	1_1_0	EXIST::FUNCTION:OCSP +BIO_push                                2152	1_1_0	EXIST::FUNCTION: +ASN1_BMPSTRING_new                      2153	1_1_0	EXIST::FUNCTION: +COMP_get_type                           2154	1_1_0	EXIST::FUNCTION:COMP +d2i_ASIdentifierChoice                  2155	1_1_0	EXIST::FUNCTION:RFC3779 +i2d_ASN1_T61STRING                      2156	1_1_0	EXIST::FUNCTION: +X509_add1_trust_object                  2157	1_1_0	EXIST::FUNCTION: +PEM_write_X509                          2158	1_1_0	EXIST::FUNCTION:STDIO +BN_CTX_free                             2159	1_1_0	EXIST::FUNCTION: +EC_GROUP_get_curve_GF2m                 2160	1_1_0	EXIST::FUNCTION:EC,EC2M +EVP_MD_flags                            2161	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_set                          2162	1_1_0	EXIST::FUNCTION: +OCSP_request_sign                       2163	1_1_0	EXIST::FUNCTION:OCSP +BN_GF2m_mod_solve_quad                  2164	1_1_0	EXIST::FUNCTION:EC2M +EC_POINT_method_of                      2165	1_1_0	EXIST::FUNCTION:EC +PKCS7_ENCRYPT_it                        2166	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_ENCRYPT_it                        2166	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +AUTHORITY_INFO_ACCESS_it                2167	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +AUTHORITY_INFO_ACCESS_it                2167	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_EXTENSION_create_by_NID            2168	1_1_0	EXIST::FUNCTION: +i2d_RSAPrivateKey                       2169	1_1_0	EXIST::FUNCTION:RSA +d2i_CERTIFICATEPOLICIES                 2170	1_1_0	EXIST::FUNCTION: +CMAC_CTX_get0_cipher_ctx                2171	1_1_0	EXIST::FUNCTION:CMAC +X509_STORE_load_locations               2172	1_1_0	EXIST::FUNCTION: +OBJ_find_sigid_algs                     2173	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_accuracy                2174	1_1_0	EXIST::FUNCTION:TS +NETSCAPE_SPKI_get_pubkey                2175	1_1_0	EXIST::FUNCTION: +ECDSA_do_sign_ex                        2176	1_1_0	EXIST::FUNCTION:EC +OCSP_ONEREQ_get_ext                     2177	1_1_0	EXIST::FUNCTION:OCSP +BN_get_rfc3526_prime_4096               2179	1_1_0	EXIST::FUNCTION: +d2i_PKCS7_fp                            2180	1_1_0	EXIST::FUNCTION:STDIO +PEM_write_bio_NETSCAPE_CERT_SEQUENCE    2181	1_1_0	EXIST::FUNCTION: +PKCS12_AUTHSAFES_it                     2182	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS12_AUTHSAFES_it                     2182	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_MD_CTX_free                         2183	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_kari_orig_id_cmp      2184	1_1_0	EXIST::FUNCTION:CMS +NETSCAPE_SPKI_b64_encode                2185	1_1_0	EXIST::FUNCTION: +d2i_PrivateKey                          2186	1_1_0	EXIST::FUNCTION: +EVP_MD_CTX_new                          2187	1_1_0	EXIST::FUNCTION: +X509_get0_tbs_sigalg                    2189	1_1_0	EXIST::FUNCTION: +ASN1_GENERALIZEDTIME_new                2190	1_1_0	EXIST::FUNCTION: +d2i_ECDSA_SIG                           2191	1_1_0	EXIST::FUNCTION:EC +d2i_OTHERNAME                           2192	1_1_0	EXIST::FUNCTION: +i2d_TS_RESP_fp                          2193	1_1_0	EXIST::FUNCTION:STDIO,TS +OCSP_BASICRESP_get_ext_count            2194	1_1_0	EXIST::FUNCTION:OCSP +ASN1_T61STRING_new                      2195	1_1_0	EXIST::FUNCTION: +BN_kronecker                            2196	1_1_0	EXIST::FUNCTION: +i2d_ACCESS_DESCRIPTION                  2197	1_1_0	EXIST::FUNCTION: +EVP_camellia_192_cfb8                   2198	1_1_0	EXIST::FUNCTION:CAMELLIA +X509_STORE_CTX_set_depth                2199	1_1_0	EXIST::FUNCTION: +X509v3_delete_ext                       2200	1_1_0	EXIST::FUNCTION: +ASN1_STRING_set0                        2201	1_1_0	EXIST::FUNCTION: +BN_GF2m_add                             2202	1_1_0	EXIST::FUNCTION:EC2M +CMAC_resume                             2203	1_1_0	EXIST::FUNCTION:CMAC +TS_ACCURACY_set_millis                  2204	1_1_0	EXIST::FUNCTION:TS +X509V3_EXT_conf                         2205	1_1_0	EXIST::FUNCTION: +i2d_DHxparams                           2206	1_1_0	EXIST::FUNCTION:DH +EVP_CIPHER_CTX_free                     2207	1_1_0	EXIST::FUNCTION: +WHIRLPOOL_BitUpdate                     2208	1_1_0	EXIST::FUNCTION:WHIRLPOOL +EVP_idea_ecb                            2209	1_1_0	EXIST::FUNCTION:IDEA +i2d_TS_ACCURACY                         2210	1_1_0	EXIST::FUNCTION:TS +ASN1_VISIBLESTRING_free                 2211	1_1_0	EXIST::FUNCTION: +NCONF_load_bio                          2212	1_1_0	EXIST::FUNCTION: +DSA_get_default_method                  2213	1_1_0	EXIST::FUNCTION:DSA +OPENSSL_LH_retrieve                     2214	1_1_0	EXIST::FUNCTION: +CRYPTO_ccm128_decrypt_ccm64             2215	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_clock_precision_digits  2216	1_1_0	EXIST::FUNCTION:TS +SCT_LIST_validate                       2217	1_1_0	EXIST::FUNCTION:CT +X509_PURPOSE_get_id                     2218	1_1_0	EXIST::FUNCTION: +EC_KEY_get_ex_data                      2219	1_1_0	EXIST::FUNCTION:EC +EVP_MD_size                             2220	1_1_0	EXIST::FUNCTION: +CRYPTO_malloc                           2221	1_1_0	EXIST::FUNCTION: +ERR_load_ASN1_strings                   2222	1_1_0	EXIST::FUNCTION: +X509_REQ_get_extension_nids             2223	1_1_0	EXIST::FUNCTION: +TS_REQ_get_ext_by_OBJ                   2224	1_1_0	EXIST::FUNCTION:TS +i2d_X509                                2225	1_1_0	EXIST::FUNCTION: +PEM_read_X509_AUX                       2226	1_1_0	EXIST::FUNCTION:STDIO +TS_VERIFY_CTX_set_flags                 2227	1_1_0	EXIST::FUNCTION:TS +IPAddressRange_new                      2228	1_1_0	EXIST::FUNCTION:RFC3779 +TS_REQ_get_exts                         2229	1_1_0	EXIST::FUNCTION:TS +POLICY_CONSTRAINTS_new                  2230	1_1_0	EXIST::FUNCTION: +OTHERNAME_new                           2231	1_1_0	EXIST::FUNCTION: +BN_rshift                               2232	1_1_0	EXIST::FUNCTION: +i2d_GENERAL_NAMES                       2233	1_1_0	EXIST::FUNCTION: +EC_METHOD_get_field_type                2234	1_1_0	EXIST::FUNCTION:EC +ENGINE_set_name                         2235	1_1_0	EXIST::FUNCTION:ENGINE +TS_TST_INFO_get_policy_id               2236	1_1_0	EXIST::FUNCTION:TS +PKCS7_SIGNER_INFO_set                   2237	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PKCS8_PRIV_KEY_INFO       2238	1_1_0	EXIST::FUNCTION: +EC_GROUP_set_curve_GF2m                 2239	1_1_0	EXIST::FUNCTION:EC,EC2M +ENGINE_load_builtin_engines             2240	1_1_0	EXIST::FUNCTION:ENGINE +SRP_VBASE_init                          2241	1_1_0	EXIST::FUNCTION:SRP +SHA224_Final                            2242	1_1_0	EXIST::FUNCTION: +OCSP_CERTSTATUS_free                    2243	1_1_0	EXIST::FUNCTION:OCSP +d2i_TS_TST_INFO                         2244	1_1_0	EXIST::FUNCTION:TS +IPAddressOrRange_it                     2245	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +IPAddressOrRange_it                     2245	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +ENGINE_get_cipher                       2246	1_1_0	EXIST::FUNCTION:ENGINE +TS_TST_INFO_delete_ext                  2247	1_1_0	EXIST::FUNCTION:TS +TS_OBJ_print_bio                        2248	1_1_0	EXIST::FUNCTION:TS +X509_time_adj_ex                        2249	1_1_0	EXIST::FUNCTION: +OCSP_request_add1_cert                  2250	1_1_0	EXIST::FUNCTION:OCSP +ERR_load_X509_strings                   2251	1_1_0	EXIST::FUNCTION: +SHA1_Transform                          2252	1_1_0	EXIST::FUNCTION: +CMS_signed_get_attr_by_NID              2253	1_1_0	EXIST::FUNCTION:CMS +X509_STORE_CTX_get_by_subject           2254	1_1_0	EXIST::FUNCTION: +ASN1_OCTET_STRING_it                    2255	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_OCTET_STRING_it                    2255	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OPENSSL_sk_set_cmp_func                 2256	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_table_cleanup         2257	1_1_0	EXIST::FUNCTION: +i2d_re_X509_REQ_tbs                     2258	1_1_0	EXIST::FUNCTION: +CONF_load_bio                           2259	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_get0_object              2260	1_1_0	EXIST::FUNCTION: +EVP_PKEY_missing_parameters             2261	1_1_0	EXIST::FUNCTION: +X509_REQ_INFO_new                       2262	1_1_0	EXIST::FUNCTION: +EVP_rc2_cfb64                           2263	1_1_0	EXIST::FUNCTION:RC2 +PKCS7_get_smimecap                      2264	1_1_0	EXIST::FUNCTION: +ERR_get_state                           2265	1_1_0	EXIST::FUNCTION: +d2i_DSAPrivateKey_bio                   2266	1_1_0	EXIST::FUNCTION:DSA +X509_PURPOSE_get_trust                  2267	1_1_0	EXIST::FUNCTION: +EC_GROUP_get_point_conversion_form      2268	1_1_0	EXIST::FUNCTION:EC +ASN1_OBJECT_it                          2269	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_OBJECT_it                          2269	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BN_mod_add_quick                        2270	1_1_0	EXIST::FUNCTION: +NCONF_free                              2271	1_1_0	EXIST::FUNCTION: +NETSCAPE_SPKI_b64_decode                2272	1_1_0	EXIST::FUNCTION: +BIO_f_md                                2273	1_1_0	EXIST::FUNCTION: +EVP_MD_CTX_pkey_ctx                     2274	1_1_0	EXIST::FUNCTION: +ENGINE_set_default_EC                   2275	1_1_0	EXIST::FUNCTION:ENGINE +CMS_ReceiptRequest_free                 2276	1_1_0	EXIST::FUNCTION:CMS +TS_STATUS_INFO_get0_text                2277	1_1_0	EXIST::FUNCTION:TS +CRYPTO_get_ex_new_index                 2278	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_set_flags                     2279	1_1_0	EXIST::FUNCTION: +PEM_write_X509_CRL                      2280	1_1_0	EXIST::FUNCTION:STDIO +BF_cbc_encrypt                          2281	1_1_0	EXIST::FUNCTION:BF +BN_num_bits_word                        2282	1_1_0	EXIST::FUNCTION: +EVP_DecodeInit                          2283	1_1_0	EXIST::FUNCTION: +BN_ucmp                                 2284	1_1_0	EXIST::FUNCTION: +SXNET_get_id_asc                        2285	1_1_0	EXIST::FUNCTION: +SCT_set1_extensions                     2286	1_1_0	EXIST::FUNCTION:CT +PKCS12_SAFEBAG_new                      2287	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_set_nonce                   2288	1_1_0	EXIST::FUNCTION:TS +PEM_read_ECPrivateKey                   2289	1_1_0	EXIST::FUNCTION:EC,STDIO +RSA_free                                2290	1_1_0	EXIST::FUNCTION:RSA +X509_CRL_INFO_new                       2291	1_1_0	EXIST::FUNCTION: +AES_cfb8_encrypt                        2292	1_1_0	EXIST::FUNCTION: +d2i_ASN1_SEQUENCE_ANY                   2293	1_1_0	EXIST::FUNCTION: +PKCS12_create                           2294	1_1_0	EXIST::FUNCTION: +X509at_get_attr_count                   2295	1_1_0	EXIST::FUNCTION: +PKCS12_init                             2296	1_1_0	EXIST::FUNCTION: +CRYPTO_free_ex_data                     2297	1_1_0	EXIST::FUNCTION: +EVP_aes_128_cfb8                        2298	1_1_0	EXIST::FUNCTION: +ESS_ISSUER_SERIAL_free                  2299	1_1_0	EXIST::FUNCTION:TS +BN_mod_exp_mont_word                    2300	1_1_0	EXIST::FUNCTION: +X509V3_EXT_nconf_nid                    2301	1_1_0	EXIST::FUNCTION: +UTF8_putc                               2302	1_1_0	EXIST::FUNCTION: +RSA_private_encrypt                     2303	1_1_0	EXIST::FUNCTION:RSA +X509_LOOKUP_shutdown                    2304	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_set_accuracy                2305	1_1_0	EXIST::FUNCTION:TS +OCSP_basic_verify                       2306	1_1_0	EXIST::FUNCTION:OCSP +X509at_add1_attr_by_OBJ                 2307	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_add0                      2308	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_get1_crl                 2309	1_1_0	EXIST::FUNCTION: +ASN1_STRING_get_default_mask            2310	1_1_0	EXIST::FUNCTION: +X509_alias_set1                         2311	1_1_0	EXIST::FUNCTION: +ASN1_item_unpack                        2312	1_1_0	EXIST::FUNCTION: +HMAC_CTX_free                           2313	1_1_0	EXIST::FUNCTION: +EC_POINT_new                            2314	1_1_0	EXIST::FUNCTION:EC +PKCS7_ISSUER_AND_SERIAL_digest          2315	1_1_0	EXIST::FUNCTION: +EVP_des_ofb                             2316	1_1_0	EXIST::FUNCTION:DES +DSA_set_method                          2317	1_1_0	EXIST::FUNCTION:DSA +EVP_PKEY_get1_RSA                       2318	1_1_0	EXIST::FUNCTION:RSA +EC_KEY_OpenSSL                          2319	1_1_0	EXIST::FUNCTION:EC +EVP_camellia_192_ofb                    2320	1_1_0	EXIST::FUNCTION:CAMELLIA +ASN1_STRING_length                      2321	1_1_0	EXIST::FUNCTION: +PKCS7_set_digest                        2322	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PUBKEY                    2323	1_1_0	EXIST::FUNCTION: +PEM_read_PKCS7                          2324	1_1_0	EXIST::FUNCTION:STDIO +DH_get_2048_256                         2325	1_1_0	EXIST::FUNCTION:DH +X509at_delete_attr                      2326	1_1_0	EXIST::FUNCTION: +PEM_write_bio                           2327	1_1_0	EXIST::FUNCTION: +CMS_signed_get_attr_by_OBJ              2329	1_1_0	EXIST::FUNCTION:CMS +X509_REVOKED_add_ext                    2330	1_1_0	EXIST::FUNCTION: +EVP_CipherUpdate                        2331	1_1_0	EXIST::FUNCTION: +Camellia_cfb8_encrypt                   2332	1_1_0	EXIST::FUNCTION:CAMELLIA +EVP_aes_256_xts                         2333	1_1_0	EXIST::FUNCTION: +EVP_DigestSignFinal                     2334	1_1_0	EXIST::FUNCTION: +ASN1_STRING_cmp                         2335	1_1_0	EXIST::FUNCTION: +EVP_chacha20_poly1305                   2336	1_1_0	EXIST::FUNCTION:CHACHA,POLY1305 +OPENSSL_sk_zero                         2337	1_1_0	EXIST::FUNCTION: +ASN1_PRINTABLE_type                     2338	1_1_0	EXIST::FUNCTION: +TS_CONF_set_ess_cert_id_chain           2339	1_1_0	EXIST::FUNCTION:TS +PEM_read_DSAPrivateKey                  2340	1_1_0	EXIST::FUNCTION:DSA,STDIO +DH_generate_parameters_ex               2341	1_1_0	EXIST::FUNCTION:DH +UI_dup_input_string                     2342	1_1_0	EXIST::FUNCTION:UI +X509_keyid_set1                         2343	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set1                  2344	1_1_0	EXIST::FUNCTION: +EC_GROUP_get_asn1_flag                  2345	1_1_0	EXIST::FUNCTION:EC +CMS_decrypt_set1_password               2346	1_1_0	EXIST::FUNCTION:CMS +BIO_copy_next_retry                     2347	1_1_0	EXIST::FUNCTION: +X509_POLICY_NODE_print                  2348	1_1_0	EXIST::FUNCTION: +ASN1_TIME_diff                          2349	1_1_0	EXIST::FUNCTION: +BIO_s_fd                                2350	1_1_0	EXIST::FUNCTION: +i2d_CMS_bio                             2351	1_1_0	EXIST::FUNCTION:CMS +CRYPTO_gcm128_decrypt                   2352	1_1_0	EXIST::FUNCTION: +EVP_aes_256_ctr                         2353	1_1_0	EXIST::FUNCTION: +EVP_PKEY_bits                           2354	1_1_0	EXIST::FUNCTION: +BN_BLINDING_new                         2355	1_1_0	EXIST::FUNCTION: +ASN1_GENERALIZEDTIME_check              2356	1_1_0	EXIST::FUNCTION: +BN_clear_bit                            2357	1_1_0	EXIST::FUNCTION: +BN_bn2lebinpad                          2358	1_1_0	EXIST::FUNCTION: +EVP_PKEY_up_ref                         2359	1_1_0	EXIST::FUNCTION: +X509_getm_notBefore                     2360	1_1_0	EXIST::FUNCTION: +BN_nist_mod_224                         2361	1_1_0	EXIST::FUNCTION: +DES_decrypt3                            2362	1_1_0	EXIST::FUNCTION:DES +OTHERNAME_it                            2363	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +OTHERNAME_it                            2363	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509at_add1_attr_by_txt                 2364	1_1_0	EXIST::FUNCTION: +PKCS7_SIGN_ENVELOPE_free                2365	1_1_0	EXIST::FUNCTION: +BIO_dgram_is_sctp                       2366	1_1_0	EXIST::FUNCTION:DGRAM,SCTP +DH_check                                2367	1_1_0	EXIST::FUNCTION:DH +Camellia_set_key                        2368	1_1_0	EXIST::FUNCTION:CAMELLIA +X509_LOOKUP_by_issuer_serial            2369	1_1_0	EXIST::FUNCTION: +ASN1_BMPSTRING_free                     2370	1_1_0	EXIST::FUNCTION: +BIO_new_accept                          2371	1_1_0	EXIST::FUNCTION:SOCK +GENERAL_NAME_new                        2372	1_1_0	EXIST::FUNCTION: +DES_encrypt3                            2373	1_1_0	EXIST::FUNCTION:DES +PKCS7_get_signer_info                   2374	1_1_0	EXIST::FUNCTION: +ASN1_OCTET_STRING_set                   2375	1_1_0	EXIST::FUNCTION: +BN_mask_bits                            2376	1_1_0	EXIST::FUNCTION: +ASN1_UTF8STRING_it                      2377	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_UTF8STRING_it                      2377	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASN1_SCTX_set_app_data                  2378	1_1_0	EXIST::FUNCTION: +CMS_add0_cert                           2379	1_1_0	EXIST::FUNCTION:CMS +i2d_GENERAL_NAME                        2380	1_1_0	EXIST::FUNCTION: +BIO_ADDR_new                            2381	1_1_0	EXIST::FUNCTION:SOCK +ENGINE_get_pkey_asn1_meth_engine        2382	1_1_0	EXIST::FUNCTION:ENGINE +d2i_ASN1_BMPSTRING                      2383	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_create0_p8inf            2384	1_1_0	EXIST::FUNCTION: +OBJ_cmp                                 2385	1_1_0	EXIST::FUNCTION: +MD2                                     2386	1_1_0	EXIST::FUNCTION:MD2 +X509_PUBKEY_new                         2387	1_1_0	EXIST::FUNCTION: +BN_CTX_end                              2388	1_1_0	EXIST::FUNCTION: +BIO_get_retry_BIO                       2389	1_1_0	EXIST::FUNCTION: +X509_REQ_add1_attr_by_OBJ               2390	1_1_0	EXIST::FUNCTION: +ASN1_item_ex_free                       2391	1_1_0	EXIST::FUNCTION: +X509_SIG_new                            2392	1_1_0	EXIST::FUNCTION: +BN_sqr                                  2393	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_set_time                    2394	1_1_0	EXIST::FUNCTION:TS +OPENSSL_die                             2395	1_1_0	EXIST::FUNCTION: +X509_LOOKUP_by_alias                    2396	1_1_0	EXIST::FUNCTION: +EC_KEY_set_conv_form                    2397	1_1_0	EXIST::FUNCTION:EC +X509_TRUST_get_count                    2399	1_1_0	EXIST::FUNCTION: +IPAddressOrRange_free                   2400	1_1_0	EXIST::FUNCTION:RFC3779 +RSA_padding_add_PKCS1_OAEP              2401	1_1_0	EXIST::FUNCTION:RSA +EC_KEY_set_ex_data                      2402	1_1_0	EXIST::FUNCTION:EC +SRP_VBASE_new                           2403	1_1_0	EXIST::FUNCTION:SRP +i2d_ECDSA_SIG                           2404	1_1_0	EXIST::FUNCTION:EC +BIO_dump_indent                         2405	1_1_0	EXIST::FUNCTION: +ENGINE_set_pkey_asn1_meths              2406	1_1_0	EXIST::FUNCTION:ENGINE +OPENSSL_gmtime_diff                     2407	1_1_0	EXIST::FUNCTION: +TS_CONF_set_crypto_device               2408	1_1_0	EXIST::FUNCTION:ENGINE,TS +COMP_CTX_get_method                     2409	1_1_0	EXIST::FUNCTION:COMP +EC_GROUP_get_cofactor                   2410	1_1_0	EXIST::FUNCTION:EC +EVP_rc5_32_12_16_ofb                    2411	1_1_0	EXIST::FUNCTION:RC5 +EVP_MD_CTX_md_data                      2412	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_set_nm_flags                  2413	1_1_0	EXIST::FUNCTION: +BIO_ctrl                                2414	1_1_0	EXIST::FUNCTION: +X509_CRL_set_default_method             2415	1_1_0	EXIST::FUNCTION: +d2i_RSAPublicKey_fp                     2417	1_1_0	EXIST::FUNCTION:RSA,STDIO +UI_method_get_flusher                   2418	1_1_0	EXIST::FUNCTION:UI +EC_POINT_dbl                            2419	1_1_0	EXIST::FUNCTION:EC +i2d_X509_CRL_INFO                       2420	1_1_0	EXIST::FUNCTION: +i2d_OCSP_CERTSTATUS                     2421	1_1_0	EXIST::FUNCTION:OCSP +X509_REVOKED_get0_revocationDate        2422	1_1_0	EXIST::FUNCTION: +PKCS7_add_crl                           2423	1_1_0	EXIST::FUNCTION: +ECDSA_do_sign                           2424	1_1_0	EXIST::FUNCTION:EC +ASN1_GENERALIZEDTIME_it                 2425	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_GENERALIZEDTIME_it                 2425	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PKCS8_pkey_get0                         2426	1_1_0	EXIST::FUNCTION: +OCSP_sendreq_new                        2427	1_1_0	EXIST::FUNCTION:OCSP +EVP_aes_256_cfb128                      2428	1_1_0	EXIST::FUNCTION: +RSA_set_ex_data                         2429	1_1_0	EXIST::FUNCTION:RSA +BN_GENCB_call                           2430	1_1_0	EXIST::FUNCTION: +X509V3_EXT_add_nconf_sk                 2431	1_1_0	EXIST::FUNCTION: +i2d_TS_MSG_IMPRINT_fp                   2432	1_1_0	EXIST::FUNCTION:STDIO,TS +PKCS12_new                              2433	1_1_0	EXIST::FUNCTION: +X509_REVOKED_set_serialNumber           2434	1_1_0	EXIST::FUNCTION: +EVP_get_digestbyname                    2435	1_1_0	EXIST::FUNCTION: +X509_CRL_get_lastUpdate                 2436	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +OBJ_create_objects                      2437	1_1_0	EXIST::FUNCTION: +EVP_enc_null                            2438	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_get_ext_by_critical         2439	1_1_0	EXIST::FUNCTION:OCSP +OCSP_request_onereq_count               2440	1_1_0	EXIST::FUNCTION:OCSP +BN_hex2bn                               2441	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_meth_set_impl_ctx_size       2442	1_1_0	EXIST::FUNCTION: +ASIdentifiers_new                       2443	1_1_0	EXIST::FUNCTION:RFC3779 +CONF_imodule_get_flags                  2444	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_it                       2445	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS12_SAFEBAG_it                       2445	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_CIPHER_meth_set_set_asn1_params     2446	1_1_0	EXIST::FUNCTION: +EC_KEY_get_enc_flags                    2447	1_1_0	EXIST::FUNCTION:EC +X509_OBJECT_idx_by_subject              2448	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_copy                      2449	1_1_0	EXIST::FUNCTION: +NETSCAPE_CERT_SEQUENCE_new              2450	1_1_0	EXIST::FUNCTION: +CRYPTO_ocb128_decrypt                   2451	1_1_0	EXIST::FUNCTION:OCB +ASYNC_WAIT_CTX_free                     2452	1_1_0	EXIST::FUNCTION: +d2i_PKCS7_DIGEST                        2453	1_1_0	EXIST::FUNCTION: +d2i_TS_TST_INFO_bio                     2454	1_1_0	EXIST::FUNCTION:TS +BIGNUM_it                               2455	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +BIGNUM_it                               2455	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BN_BLINDING_get_flags                   2456	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_get_critical             2457	1_1_0	EXIST::FUNCTION: +DSA_set_default_method                  2458	1_1_0	EXIST::FUNCTION:DSA +PEM_write_bio_DHxparams                 2459	1_1_0	EXIST::FUNCTION:DH +DSA_set_ex_data                         2460	1_1_0	EXIST::FUNCTION:DSA +BIO_s_datagram_sctp                     2461	1_1_0	EXIST::FUNCTION:DGRAM,SCTP +SXNET_add_id_asc                        2462	1_1_0	EXIST::FUNCTION: +X509_print_fp                           2463	1_1_0	EXIST::FUNCTION:STDIO +TS_REQ_set_version                      2464	1_1_0	EXIST::FUNCTION:TS +OCSP_REQINFO_new                        2465	1_1_0	EXIST::FUNCTION:OCSP +Camellia_decrypt                        2466	1_1_0	EXIST::FUNCTION:CAMELLIA +X509_signature_print                    2467	1_1_0	EXIST::FUNCTION: +EVP_camellia_128_ecb                    2468	1_1_0	EXIST::FUNCTION:CAMELLIA +MD2_Final                               2469	1_1_0	EXIST::FUNCTION:MD2 +OCSP_REQ_CTX_add1_header                2470	1_1_0	EXIST::FUNCTION:OCSP +NETSCAPE_SPKAC_it                       2471	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +NETSCAPE_SPKAC_it                       2471	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASIdOrRange_free                        2472	1_1_0	EXIST::FUNCTION:RFC3779 +EC_POINT_get_Jprojective_coordinates_GFp 2473	1_1_0	EXIST::FUNCTION:EC +EVP_aes_128_cbc_hmac_sha256             2474	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_SIGNED                        2475	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTX_set_data                  2476	1_1_0	EXIST::FUNCTION:TS +BN_pseudo_rand_range                    2477	1_1_0	EXIST::FUNCTION: +X509V3_EXT_add_nconf                    2478	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_ctrl                     2479	1_1_0	EXIST::FUNCTION: +ASN1_T61STRING_it                       2480	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_T61STRING_it                       2480	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ENGINE_get_prev                         2481	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_accept_responses_new               2482	1_1_0	EXIST::FUNCTION:OCSP +ERR_load_EC_strings                     2483	1_1_0	EXIST::FUNCTION:EC +X509V3_string_free                      2484	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_paramgen              2485	1_1_0	EXIST::FUNCTION: +ENGINE_set_load_ssl_client_cert_function 2486	1_1_0	EXIST::FUNCTION:ENGINE +EVP_ENCODE_CTX_free                     2487	1_1_0	EXIST::FUNCTION: +i2d_ASN1_BIT_STRING                     2488	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_verifyctx             2489	1_1_0	EXIST::FUNCTION: +X509_TRUST_add                          2490	1_1_0	EXIST::FUNCTION: +BUF_MEM_free                            2491	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_accuracy                2492	1_1_0	EXIST::FUNCTION:TS +TS_REQ_dup                              2493	1_1_0	EXIST::FUNCTION:TS +ASN1_STRING_type_new                    2494	1_1_0	EXIST::FUNCTION: +TS_STATUS_INFO_free                     2495	1_1_0	EXIST::FUNCTION:TS +BN_mod_mul                              2496	1_1_0	EXIST::FUNCTION: +CMS_add0_recipient_key                  2497	1_1_0	EXIST::FUNCTION:CMS +BIO_f_zlib                              2498	1_1_0	EXIST:ZLIB:FUNCTION:COMP +AES_cfb128_encrypt                      2499	1_1_0	EXIST::FUNCTION: +ENGINE_set_EC                           2500	1_1_0	EXIST::FUNCTION:ENGINE +d2i_ECPKParameters                      2501	1_1_0	EXIST::FUNCTION:EC +IDEA_ofb64_encrypt                      2502	1_1_0	EXIST::FUNCTION:IDEA +CAST_decrypt                            2503	1_1_0	EXIST::FUNCTION:CAST +TS_STATUS_INFO_get0_failure_info        2504	1_1_0	EXIST::FUNCTION:TS +ENGINE_unregister_pkey_meths            2506	1_1_0	EXIST::FUNCTION:ENGINE +DISPLAYTEXT_new                         2507	1_1_0	EXIST::FUNCTION: +CMS_final                               2508	1_1_0	EXIST::FUNCTION:CMS +BIO_nwrite                              2509	1_1_0	EXIST::FUNCTION: +GENERAL_NAME_free                       2510	1_1_0	EXIST::FUNCTION: +PKCS12_pack_p7encdata                   2511	1_1_0	EXIST::FUNCTION: +BN_generate_dsa_nonce                   2512	1_1_0	EXIST::FUNCTION: +X509_verify_cert                        2513	1_1_0	EXIST::FUNCTION: +X509_policy_level_get0_node             2514	1_1_0	EXIST::FUNCTION: +X509_REQ_get_attr                       2515	1_1_0	EXIST::FUNCTION: +SHA1                                    2516	1_1_0	EXIST::FUNCTION: +X509_print                              2517	1_1_0	EXIST::FUNCTION: +d2i_AutoPrivateKey                      2518	1_1_0	EXIST::FUNCTION: +X509_REQ_new                            2519	1_1_0	EXIST::FUNCTION: +PKCS12_add_safes                        2520	1_1_0	EXIST::FUNCTION: +PKCS12_parse                            2521	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod_div                         2522	1_1_0	EXIST::FUNCTION:EC2M +i2d_USERNOTICE                          2523	1_1_0	EXIST::FUNCTION: +d2i_NETSCAPE_SPKI                       2524	1_1_0	EXIST::FUNCTION: +CRYPTO_mem_leaks                        2525	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG +BN_get_rfc3526_prime_1536               2526	1_1_0	EXIST::FUNCTION: +DSA_sign                                2527	1_1_0	EXIST::FUNCTION:DSA +RAND_egd                                2528	1_1_0	EXIST::FUNCTION:EGD +ASN1_d2i_bio                            2529	1_1_0	EXIST::FUNCTION: +X509_REQ_digest                         2531	1_1_0	EXIST::FUNCTION: +X509_set1_notAfter                      2532	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_type                         2533	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_set_octetstring               2534	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_set_free                  2535	1_1_0	EXIST::FUNCTION: +CMS_signed_get0_data_by_OBJ             2536	1_1_0	EXIST::FUNCTION:CMS +X509_PURPOSE_add                        2537	1_1_0	EXIST::FUNCTION: +PKCS7_ENVELOPE_free                     2538	1_1_0	EXIST::FUNCTION: +PKCS12_key_gen_uni                      2539	1_1_0	EXIST::FUNCTION: +WHIRLPOOL                               2540	1_1_0	EXIST::FUNCTION:WHIRLPOOL +UI_set_default_method                   2542	1_1_0	EXIST::FUNCTION:UI +EC_POINT_is_at_infinity                 2543	1_1_0	EXIST::FUNCTION:EC +i2d_NOTICEREF                           2544	1_1_0	EXIST::FUNCTION: +EC_KEY_new                              2545	1_1_0	EXIST::FUNCTION:EC +EVP_chacha20                            2546	1_1_0	EXIST::FUNCTION:CHACHA +BN_bn2dec                               2547	1_1_0	EXIST::FUNCTION: +X509_REQ_print_ex                       2548	1_1_0	EXIST::FUNCTION: +PEM_read_CMS                            2549	1_1_0	EXIST::FUNCTION:CMS,STDIO +d2i_NETSCAPE_CERT_SEQUENCE              2550	1_1_0	EXIST::FUNCTION: +X509_CRL_set_version                    2551	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_set_cert_flags                2552	1_1_0	EXIST::FUNCTION: +PKCS8_PRIV_KEY_INFO_free                2553	1_1_0	EXIST::FUNCTION: +SHA224_Update                           2554	1_1_0	EXIST::FUNCTION: +EC_GROUP_new_by_curve_name              2555	1_1_0	EXIST::FUNCTION:EC +X509_STORE_set_purpose                  2556	1_1_0	EXIST::FUNCTION: +X509_CRL_get0_signature                 2557	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_get_keygen_info            2558	1_1_0	EXIST::FUNCTION: +d2i_ASN1_UINTEGER                       2559	1_1_0	EXIST::FUNCTION: +i2s_ASN1_INTEGER                        2560	1_1_0	EXIST::FUNCTION: +d2i_EC_PUBKEY_fp                        2561	1_1_0	EXIST::FUNCTION:EC,STDIO +i2d_OCSP_SIGNATURE                      2562	1_1_0	EXIST::FUNCTION:OCSP +i2d_X509_EXTENSION                      2563	1_1_0	EXIST::FUNCTION: +PEM_read_bio_X509                       2564	1_1_0	EXIST::FUNCTION: +DES_key_sched                           2565	1_1_0	EXIST::FUNCTION:DES +GENERAL_NAME_dup                        2566	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get1_crls                2567	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_verify                2568	1_1_0	EXIST::FUNCTION: +EVP_sha256                              2569	1_1_0	EXIST::FUNCTION: +CMS_unsigned_delete_attr                2570	1_1_0	EXIST::FUNCTION:CMS +EVP_md5_sha1                            2571	1_1_0	EXIST::FUNCTION:MD5 +EVP_PKEY_sign_init                      2572	1_1_0	EXIST::FUNCTION: +OPENSSL_LH_insert                       2573	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_meth_get_cleanup             2574	1_1_0	EXIST::FUNCTION: +ASN1_item_ex_d2i                        2575	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_free                        2576	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_new                       2577	1_1_0	EXIST::FUNCTION: +RSA_padding_check_PKCS1_OAEP            2578	1_1_0	EXIST::FUNCTION:RSA +OCSP_SERVICELOC_it                      2579	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_SERVICELOC_it                      2579	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +PKCS12_SAFEBAG_get_nid                  2580	1_1_0	EXIST::FUNCTION: +EVP_MD_CTX_set_update_fn                2581	1_1_0	EXIST::FUNCTION: +BIO_f_asn1                              2582	1_1_0	EXIST::FUNCTION: +BIO_dump                                2583	1_1_0	EXIST::FUNCTION: +ENGINE_load_ssl_client_cert             2584	1_1_0	EXIST::FUNCTION:ENGINE +X509_STORE_CTX_set_verify_cb            2585	1_1_0	EXIST::FUNCTION: +CRYPTO_clear_realloc                    2586	1_1_0	EXIST::FUNCTION: +OPENSSL_strnlen                         2587	1_1_0	EXIST::FUNCTION: +IDEA_ecb_encrypt                        2588	1_1_0	EXIST::FUNCTION:IDEA +ASN1_STRING_set_default_mask            2589	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTX_add_flags                 2590	1_1_0	EXIST::FUNCTION:TS +FIPS_mode                               2591	1_1_0	EXIST::FUNCTION: +d2i_ASN1_UNIVERSALSTRING                2592	1_1_0	EXIST::FUNCTION: +NAME_CONSTRAINTS_free                   2593	1_1_0	EXIST::FUNCTION: +EC_GROUP_get_order                      2594	1_1_0	EXIST::FUNCTION:EC +X509_REVOKED_add1_ext_i2d               2595	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_add1_host             2596	1_1_0	EXIST::FUNCTION: +i2d_PUBKEY_bio                          2597	1_1_0	EXIST::FUNCTION: +MD4_Update                              2598	1_1_0	EXIST::FUNCTION:MD4 +X509_STORE_CTX_set_time                 2599	1_1_0	EXIST::FUNCTION: +ENGINE_set_default_DH                   2600	1_1_0	EXIST::FUNCTION:ENGINE +X509_ocspid_print                       2601	1_1_0	EXIST::FUNCTION: +DH_set_method                           2602	1_1_0	EXIST::FUNCTION:DH +EVP_rc2_64_cbc                          2603	1_1_0	EXIST::FUNCTION:RC2 +CRYPTO_THREAD_get_current_id            2604	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_set_cb                     2605	1_1_0	EXIST::FUNCTION: +PROXY_POLICY_it                         2606	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PROXY_POLICY_it                         2606	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ENGINE_register_complete                2607	1_1_0	EXIST::FUNCTION:ENGINE +EVP_DecodeUpdate                        2609	1_1_0	EXIST::FUNCTION: +ENGINE_get_default_RAND                 2610	1_1_0	EXIST::FUNCTION:ENGINE +ERR_peek_last_error_line                2611	1_1_0	EXIST::FUNCTION: +ENGINE_get_ssl_client_cert_function     2612	1_1_0	EXIST::FUNCTION:ENGINE +OPENSSL_LH_node_usage_stats             2613	1_1_0	EXIST::FUNCTION:STDIO +DIRECTORYSTRING_it                      2614	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +DIRECTORYSTRING_it                      2614	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BIO_write                               2615	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_get_ext_by_OBJ              2616	1_1_0	EXIST::FUNCTION:OCSP +SEED_encrypt                            2617	1_1_0	EXIST::FUNCTION:SEED +IPAddressRange_it                       2618	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +IPAddressRange_it                       2618	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +PEM_read_bio_DSAPrivateKey              2619	1_1_0	EXIST::FUNCTION:DSA +CMS_get0_type                           2620	1_1_0	EXIST::FUNCTION:CMS +ASN1_PCTX_free                          2621	1_1_0	EXIST::FUNCTION: +ESS_SIGNING_CERT_new                    2622	1_1_0	EXIST::FUNCTION:TS +X509V3_EXT_conf_nid                     2623	1_1_0	EXIST::FUNCTION: +EC_KEY_check_key                        2624	1_1_0	EXIST::FUNCTION:EC +PKCS5_PBKDF2_HMAC                       2625	1_1_0	EXIST::FUNCTION: +CONF_get_section                        2626	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_kari_decrypt          2627	1_1_0	EXIST::FUNCTION:CMS +OBJ_add_sigid                           2628	1_1_0	EXIST::FUNCTION: +d2i_SXNETID                             2629	1_1_0	EXIST::FUNCTION: +CMS_get1_certs                          2630	1_1_0	EXIST::FUNCTION:CMS +X509_CRL_check_suiteb                   2631	1_1_0	EXIST::FUNCTION: +PKCS7_ENVELOPE_it                       2632	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_ENVELOPE_it                       2632	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASIdentifierChoice_it                   2633	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +ASIdentifierChoice_it                   2633	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +CMS_RecipientEncryptedKey_cert_cmp      2634	1_1_0	EXIST::FUNCTION:CMS +EVP_PKEY_CTX_get_app_data               2635	1_1_0	EXIST::FUNCTION: +EC_GROUP_clear_free                     2636	1_1_0	EXIST::FUNCTION:EC +BN_get_rfc2409_prime_1024               2637	1_1_0	EXIST::FUNCTION: +CRYPTO_set_mem_functions                2638	1_1_0	EXIST::FUNCTION: +i2d_ASN1_VISIBLESTRING                  2639	1_1_0	EXIST::FUNCTION: +d2i_PBKDF2PARAM                         2640	1_1_0	EXIST::FUNCTION: +ERR_load_COMP_strings                   2641	1_1_0	EXIST::FUNCTION:COMP +EVP_PKEY_meth_add0                      2642	1_1_0	EXIST::FUNCTION: +EVP_rc4_40                              2643	1_1_0	EXIST::FUNCTION:RC4 +RSA_bits                                2645	1_1_0	EXIST::FUNCTION:RSA +ASN1_item_dup                           2646	1_1_0	EXIST::FUNCTION: +GENERAL_NAMES_it                        2647	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +GENERAL_NAMES_it                        2647	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_issuer_name_hash                   2648	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_nonce                   2649	1_1_0	EXIST::FUNCTION:TS +MD4_Init                                2650	1_1_0	EXIST::FUNCTION:MD4 +X509_EXTENSION_create_by_OBJ            2651	1_1_0	EXIST::FUNCTION: +EVP_aes_256_cbc_hmac_sha1               2652	1_1_0	EXIST::FUNCTION: +SCT_validate                            2653	1_1_0	EXIST::FUNCTION:CT +EC_GROUP_dup                            2654	1_1_0	EXIST::FUNCTION:EC +EVP_sha1                                2655	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_new                          2656	1_1_0	EXIST::FUNCTION: +BN_dup                                  2657	1_1_0	EXIST::FUNCTION: +TS_MSG_IMPRINT_print_bio                2658	1_1_0	EXIST::FUNCTION:TS +CONF_module_set_usr_data                2659	1_1_0	EXIST::FUNCTION: +EC_KEY_generate_key                     2660	1_1_0	EXIST::FUNCTION:EC +BIO_ctrl_get_write_guarantee            2661	1_1_0	EXIST::FUNCTION: +EVP_PKEY_assign                         2662	1_1_0	EXIST::FUNCTION: +EVP_aes_128_ofb                         2663	1_1_0	EXIST::FUNCTION: +CMS_data                                2664	1_1_0	EXIST::FUNCTION:CMS +X509_load_cert_file                     2665	1_1_0	EXIST::FUNCTION: +EC_GFp_nistp521_method                  2667	1_1_0	EXIST::FUNCTION:EC,EC_NISTP_64_GCC_128 +ECDSA_SIG_free                          2668	1_1_0	EXIST::FUNCTION:EC +d2i_PKCS12_BAGS                         2669	1_1_0	EXIST::FUNCTION: +RSA_public_encrypt                      2670	1_1_0	EXIST::FUNCTION:RSA +X509_CRL_get0_extensions                2671	1_1_0	EXIST::FUNCTION: +CMS_digest_verify                       2672	1_1_0	EXIST::FUNCTION:CMS +ASN1_GENERALIZEDTIME_set                2673	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTX_set_imprint               2674	1_1_0	EXIST::FUNCTION:TS +BN_RECP_CTX_set                         2675	1_1_0	EXIST::FUNCTION: +CRYPTO_secure_zalloc                    2676	1_1_0	EXIST::FUNCTION: +i2d_EXTENDED_KEY_USAGE                  2677	1_1_0	EXIST::FUNCTION: +PEM_write_bio_DSAparams                 2678	1_1_0	EXIST::FUNCTION:DSA +X509_cmp_time                           2679	1_1_0	EXIST::FUNCTION: +d2i_CMS_ReceiptRequest                  2680	1_1_0	EXIST::FUNCTION:CMS +X509_CRL_INFO_it                        2681	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_CRL_INFO_it                        2681	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BUF_reverse                             2682	1_1_0	EXIST::FUNCTION: +d2i_OCSP_SIGNATURE                      2683	1_1_0	EXIST::FUNCTION:OCSP +X509_REQ_delete_attr                    2684	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_signer_cert             2685	1_1_0	EXIST::FUNCTION:TS +X509V3_EXT_d2i                          2686	1_1_0	EXIST::FUNCTION: +ASN1_GENERALSTRING_it                   2687	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_GENERALSTRING_it                   2687	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +POLICYQUALINFO_free                     2688	1_1_0	EXIST::FUNCTION: +EC_KEY_set_group                        2689	1_1_0	EXIST::FUNCTION:EC +OCSP_check_validity                     2690	1_1_0	EXIST::FUNCTION:OCSP +PEM_write_ECPKParameters                2691	1_1_0	EXIST::FUNCTION:EC,STDIO +X509_VERIFY_PARAM_lookup                2692	1_1_0	EXIST::FUNCTION: +X509_LOOKUP_by_fingerprint              2693	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_meth_free                    2694	1_1_0	EXIST::FUNCTION: +PKCS7_RECIP_INFO_new                    2695	1_1_0	EXIST::FUNCTION: +d2i_ECPrivateKey_fp                     2696	1_1_0	EXIST::FUNCTION:EC,STDIO +TS_CONF_set_ordering                    2697	1_1_0	EXIST::FUNCTION:TS +X509_CRL_get_ext                        2698	1_1_0	EXIST::FUNCTION: +X509_CRL_get_ext_by_OBJ                 2699	1_1_0	EXIST::FUNCTION: +OCSP_basic_add1_cert                    2700	1_1_0	EXIST::FUNCTION:OCSP +ASN1_PRINTABLESTRING_new                2701	1_1_0	EXIST::FUNCTION: +i2d_PBEPARAM                            2702	1_1_0	EXIST::FUNCTION: +NETSCAPE_SPKI_new                       2703	1_1_0	EXIST::FUNCTION: +AES_options                             2704	1_1_0	EXIST::FUNCTION: +POLICYINFO_free                         2705	1_1_0	EXIST::FUNCTION: +PEM_read_bio_Parameters                 2706	1_1_0	EXIST::FUNCTION: +BN_abs_is_word                          2707	1_1_0	EXIST::FUNCTION: +BIO_set_callback_arg                    2708	1_1_0	EXIST::FUNCTION: +CONF_modules_load_file                  2709	1_1_0	EXIST::FUNCTION: +X509_trust_clear                        2710	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_test_flags               2711	1_1_0	EXIST::FUNCTION: +PKCS12_BAGS_free                        2712	1_1_0	EXIST::FUNCTION: +PEM_X509_INFO_read                      2713	1_1_0	EXIST::FUNCTION:STDIO +d2i_DSAPrivateKey                       2714	1_1_0	EXIST::FUNCTION:DSA +i2d_PKCS8_PRIV_KEY_INFO_fp              2715	1_1_0	EXIST::FUNCTION:STDIO +TS_RESP_print_bio                       2716	1_1_0	EXIST::FUNCTION:TS +X509_STORE_set_default_paths            2717	1_1_0	EXIST::FUNCTION: +d2i_TS_REQ                              2718	1_1_0	EXIST::FUNCTION:TS +i2d_TS_TST_INFO_bio                     2719	1_1_0	EXIST::FUNCTION:TS +CMS_sign_receipt                        2720	1_1_0	EXIST::FUNCTION:CMS +ENGINE_set_RAND                         2721	1_1_0	EXIST::FUNCTION:ENGINE +X509_REVOKED_get_ext_by_OBJ             2722	1_1_0	EXIST::FUNCTION: +SEED_decrypt                            2723	1_1_0	EXIST::FUNCTION:SEED +PEM_write_PKCS8PrivateKey               2724	1_1_0	EXIST::FUNCTION:STDIO +ENGINE_new                              2725	1_1_0	EXIST::FUNCTION:ENGINE +X509_check_issued                       2726	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_iv_length                2727	1_1_0	EXIST::FUNCTION: +DES_string_to_2keys                     2728	1_1_0	EXIST::FUNCTION:DES +EVP_PKEY_copy_parameters                2729	1_1_0	EXIST::FUNCTION: +CMS_ContentInfo_print_ctx               2730	1_1_0	EXIST::FUNCTION:CMS +d2i_PKCS7_SIGNED                        2731	1_1_0	EXIST::FUNCTION: +GENERAL_NAMES_free                      2732	1_1_0	EXIST::FUNCTION: +SCT_get_timestamp                       2733	1_1_0	EXIST::FUNCTION:CT +OCSP_SIGNATURE_it                       2734	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_SIGNATURE_it                       2734	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +CMS_verify_receipt                      2735	1_1_0	EXIST::FUNCTION:CMS +CRYPTO_THREAD_lock_new                  2736	1_1_0	EXIST::FUNCTION: +BIO_get_ex_data                         2737	1_1_0	EXIST::FUNCTION: +CMS_digest_create                       2738	1_1_0	EXIST::FUNCTION:CMS +EC_KEY_METHOD_set_verify                2739	1_1_0	EXIST::FUNCTION:EC +PEM_read_RSAPublicKey                   2740	1_1_0	EXIST::FUNCTION:RSA,STDIO +ENGINE_pkey_asn1_find_str               2741	1_1_0	EXIST::FUNCTION:ENGINE +ENGINE_get_load_privkey_function        2742	1_1_0	EXIST::FUNCTION:ENGINE +d2i_IPAddressRange                      2743	1_1_0	EXIST::FUNCTION:RFC3779 +ERR_remove_state                        2744	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_0_0 +X509_CRL_print_fp                       2745	1_1_0	EXIST::FUNCTION:STDIO +TS_CONF_load_key                        2746	1_1_0	EXIST::FUNCTION:TS +d2i_OCSP_REQINFO                        2747	1_1_0	EXIST::FUNCTION:OCSP +d2i_X509_CINF                           2748	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_get_ext_by_critical        2749	1_1_0	EXIST::FUNCTION:OCSP +X509_REQ_to_X509                        2750	1_1_0	EXIST::FUNCTION: +EVP_aes_192_wrap_pad                    2751	1_1_0	EXIST::FUNCTION: +PKCS7_SIGN_ENVELOPE_new                 2752	1_1_0	EXIST::FUNCTION: +TS_REQ_get_policy_id                    2753	1_1_0	EXIST::FUNCTION:TS +RC5_32_cbc_encrypt                      2754	1_1_0	EXIST::FUNCTION:RC5 +BN_is_zero                              2755	1_1_0	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_new                  2756	1_1_0	EXIST::FUNCTION:CT +NETSCAPE_SPKI_it                        2757	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +NETSCAPE_SPKI_it                        2757	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CRYPTO_THREAD_unlock                    2758	1_1_0	EXIST::FUNCTION: +UI_method_set_writer                    2759	1_1_0	EXIST::FUNCTION:UI +UI_dup_info_string                      2760	1_1_0	EXIST::FUNCTION:UI +OPENSSL_init                            2761	1_1_0	EXIST::FUNCTION: +TS_RESP_get_tst_info                    2762	1_1_0	EXIST::FUNCTION:TS +X509_VERIFY_PARAM_get_depth             2763	1_1_0	EXIST::FUNCTION: +EVP_SealFinal                           2764	1_1_0	EXIST::FUNCTION:RSA +BIO_set                                 2765	1_1_0	NOEXIST::FUNCTION: +CONF_imodule_set_flags                  2766	1_1_0	EXIST::FUNCTION: +i2d_ASN1_SET_ANY                        2767	1_1_0	EXIST::FUNCTION: +EVP_PKEY_decrypt                        2768	1_1_0	EXIST::FUNCTION: +OCSP_RESPID_it                          2769	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_RESPID_it                          2769	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +EVP_des_ede3_cbc                        2770	1_1_0	EXIST::FUNCTION:DES +X509_up_ref                             2771	1_1_0	EXIST::FUNCTION: +OBJ_NAME_do_all_sorted                  2772	1_1_0	EXIST::FUNCTION: +ENGINE_unregister_DSA                   2773	1_1_0	EXIST::FUNCTION:ENGINE +ASN1_bn_print                           2774	1_1_0	EXIST::FUNCTION: +CMS_is_detached                         2775	1_1_0	EXIST::FUNCTION:CMS +X509_REQ_INFO_it                        2776	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_REQ_INFO_it                        2776	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +RSAPrivateKey_it                        2777	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA +RSAPrivateKey_it                        2777	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA +X509_NAME_ENTRY_free                    2778	1_1_0	EXIST::FUNCTION: +BIO_new_fd                              2779	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_value                        2781	1_1_0	EXIST::FUNCTION: +NCONF_get_section                       2782	1_1_0	EXIST::FUNCTION: +PKCS12_MAC_DATA_it                      2783	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS12_MAC_DATA_it                      2783	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_REQ_add1_attr_by_NID               2784	1_1_0	EXIST::FUNCTION: +ASN1_sign                               2785	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_encrypt               2786	1_1_0	EXIST::FUNCTION:CMS +X509_get_pubkey_parameters              2787	1_1_0	EXIST::FUNCTION: +PKCS12_setup_mac                        2788	1_1_0	EXIST::FUNCTION: +PEM_read_bio_PKCS7                      2789	1_1_0	EXIST::FUNCTION: +SHA512_Final                            2790	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set1_host             2791	1_1_0	EXIST::FUNCTION: +OCSP_resp_find_status                   2792	1_1_0	EXIST::FUNCTION:OCSP +d2i_ASN1_T61STRING                      2793	1_1_0	EXIST::FUNCTION: +DES_pcbc_encrypt                        2794	1_1_0	EXIST::FUNCTION:DES +EVP_PKEY_print_params                   2795	1_1_0	EXIST::FUNCTION: +BN_get0_nist_prime_192                  2796	1_1_0	EXIST::FUNCTION: +EVP_SealInit                            2798	1_1_0	EXIST::FUNCTION:RSA +X509_REQ_get0_signature                 2799	1_1_0	EXIST::FUNCTION: +PKEY_USAGE_PERIOD_free                  2800	1_1_0	EXIST::FUNCTION: +EC_GROUP_set_point_conversion_form      2801	1_1_0	EXIST::FUNCTION:EC +CMS_dataFinal                           2802	1_1_0	EXIST::FUNCTION:CMS +ASN1_TIME_it                            2803	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_TIME_it                            2803	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ENGINE_get_static_state                 2804	1_1_0	EXIST::FUNCTION:ENGINE +EC_KEY_set_asn1_flag                    2805	1_1_0	EXIST::FUNCTION:EC +EC_GFp_mont_method                      2806	1_1_0	EXIST::FUNCTION:EC +OPENSSL_asc2uni                         2807	1_1_0	EXIST::FUNCTION: +TS_REQ_new                              2808	1_1_0	EXIST::FUNCTION:TS +ENGINE_register_all_DH                  2809	1_1_0	EXIST::FUNCTION:ENGINE +ERR_clear_error                         2810	1_1_0	EXIST::FUNCTION: +EC_KEY_dup                              2811	1_1_0	EXIST::FUNCTION:EC +X509_LOOKUP_init                        2812	1_1_0	EXIST::FUNCTION: +i2b_PVK_bio                             2813	1_1_0	EXIST::FUNCTION:DSA,RC4 +OCSP_ONEREQ_free                        2814	1_1_0	EXIST::FUNCTION:OCSP +X509V3_EXT_print_fp                     2815	1_1_0	EXIST::FUNCTION:STDIO +OBJ_bsearch_ex_                         2816	1_1_0	EXIST::FUNCTION: +DES_ofb64_encrypt                       2817	1_1_0	EXIST::FUNCTION:DES +i2d_IPAddressOrRange                    2818	1_1_0	EXIST::FUNCTION:RFC3779 +CRYPTO_secure_used                      2819	1_1_0	EXIST::FUNCTION: +d2i_X509_CRL_INFO                       2820	1_1_0	EXIST::FUNCTION: +X509_CRL_get_issuer                     2821	1_1_0	EXIST::FUNCTION: +d2i_SCT_LIST                            2822	1_1_0	EXIST::FUNCTION:CT +EC_GFp_nist_method                      2823	1_1_0	EXIST::FUNCTION:EC +SCT_free                                2824	1_1_0	EXIST::FUNCTION:CT +TS_TST_INFO_get_msg_imprint             2825	1_1_0	EXIST::FUNCTION:TS +X509v3_addr_add_range                   2826	1_1_0	EXIST::FUNCTION:RFC3779 +PKCS12_get_friendlyname                 2827	1_1_0	EXIST::FUNCTION: +X509_CRL_add_ext                        2829	1_1_0	EXIST::FUNCTION: +X509_REQ_get_signature_nid              2830	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_ext                     2831	1_1_0	EXIST::FUNCTION:TS +i2d_OCSP_RESPID                         2832	1_1_0	EXIST::FUNCTION:OCSP +EVP_camellia_256_cfb8                   2833	1_1_0	EXIST::FUNCTION:CAMELLIA +EC_KEY_get0_public_key                  2834	1_1_0	EXIST::FUNCTION:EC +SRP_Calc_x                              2835	1_1_0	EXIST::FUNCTION:SRP +a2i_ASN1_ENUMERATED                     2836	1_1_0	EXIST::FUNCTION: +CONF_module_get_usr_data                2837	1_1_0	EXIST::FUNCTION: +i2d_X509_NAME_ENTRY                     2838	1_1_0	EXIST::FUNCTION: +SCT_LIST_free                           2839	1_1_0	EXIST::FUNCTION:CT +PROXY_POLICY_new                        2840	1_1_0	EXIST::FUNCTION: +X509_ALGOR_set_md                       2841	1_1_0	EXIST::FUNCTION: +PKCS7_print_ctx                         2842	1_1_0	EXIST::FUNCTION: +ASN1_UTF8STRING_new                     2843	1_1_0	EXIST::FUNCTION: +EVP_des_cbc                             2844	1_1_0	EXIST::FUNCTION:DES +i2v_ASN1_BIT_STRING                     2845	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_set1                          2846	1_1_0	EXIST::FUNCTION: +d2i_X509_CRL_bio                        2847	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAG_get1_cert                2848	1_1_0	EXIST::FUNCTION: +ASN1_UNIVERSALSTRING_free               2849	1_1_0	EXIST::FUNCTION: +EC_KEY_precompute_mult                  2850	1_1_0	EXIST::FUNCTION:EC +CRYPTO_mem_debug_realloc                2851	1_1_0	EXIST::FUNCTION:CRYPTO_MDEBUG +PKCS7_new                               2852	1_1_0	EXIST::FUNCTION: +BASIC_CONSTRAINTS_it                    2853	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +BASIC_CONSTRAINTS_it                    2853	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASN1_generate_v3                        2854	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PrivateKey                2855	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_check                      2856	1_1_0	EXIST::FUNCTION: +ACCESS_DESCRIPTION_it                   2857	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ACCESS_DESCRIPTION_it                   2857	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_MSG_IMPRINT_get_msg                  2859	1_1_0	EXIST::FUNCTION:TS +PKCS8_add_keyusage                      2860	1_1_0	EXIST::FUNCTION: +X509_EXTENSION_dup                      2861	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_new                       2862	1_1_0	EXIST::FUNCTION: +BIO_socket_nbio                         2863	1_1_0	EXIST::FUNCTION:SOCK +EVP_CIPHER_set_asn1_iv                  2864	1_1_0	EXIST::FUNCTION: +EC_GFp_nistp224_method                  2865	1_1_0	EXIST::FUNCTION:EC,EC_NISTP_64_GCC_128 +BN_swap                                 2866	1_1_0	EXIST::FUNCTION: +d2i_ECParameters                        2867	1_1_0	EXIST::FUNCTION:EC +X509_NAME_add_entry_by_OBJ              2868	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_get_ext_count               2869	1_1_0	EXIST::FUNCTION:TS +i2d_OCSP_CERTID                         2870	1_1_0	EXIST::FUNCTION:OCSP +BN_CTX_start                            2871	1_1_0	EXIST::FUNCTION: +BN_print                                2872	1_1_0	EXIST::FUNCTION: +EC_KEY_set_flags                        2873	1_1_0	EXIST::FUNCTION:EC +EVP_PKEY_get0                           2874	1_1_0	EXIST::FUNCTION: +ENGINE_set_default                      2875	1_1_0	EXIST::FUNCTION:ENGINE +NCONF_get_number_e                      2876	1_1_0	EXIST::FUNCTION: +OPENSSL_cleanse                         2877	1_1_0	EXIST::FUNCTION: +SCT_set0_signature                      2878	1_1_0	EXIST::FUNCTION:CT +X509_CRL_sign                           2879	1_1_0	EXIST::FUNCTION: +X509_CINF_it                            2880	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_CINF_it                            2880	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_CONF_set_accuracy                    2881	1_1_0	EXIST::FUNCTION:TS +DES_crypt                               2882	1_1_0	EXIST::FUNCTION:DES +BN_BLINDING_create_param                2883	1_1_0	EXIST::FUNCTION: +OCSP_SERVICELOC_free                    2884	1_1_0	EXIST::FUNCTION:OCSP +DIST_POINT_NAME_free                    2885	1_1_0	EXIST::FUNCTION: +BIO_listen                              2886	1_1_0	EXIST::FUNCTION:SOCK +BIO_ADDR_path_string                    2887	1_1_0	EXIST::FUNCTION:SOCK +POLICY_CONSTRAINTS_it                   2888	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +POLICY_CONSTRAINTS_it                   2888	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +NCONF_free_data                         2889	1_1_0	EXIST::FUNCTION: +BIO_asn1_set_prefix                     2890	1_1_0	EXIST::FUNCTION: +PEM_SignUpdate                          2891	1_1_0	EXIST::FUNCTION: +PEM_write_bio_EC_PUBKEY                 2892	1_1_0	EXIST::FUNCTION:EC +CMS_add_simple_smimecap                 2893	1_1_0	EXIST::FUNCTION:CMS +IPAddressChoice_free                    2894	1_1_0	EXIST::FUNCTION:RFC3779 +d2i_X509_AUX                            2895	1_1_0	EXIST::FUNCTION: +X509_get_default_cert_area              2896	1_1_0	EXIST::FUNCTION: +ERR_load_DSO_strings                    2897	1_1_0	EXIST::FUNCTION: +ASIdentifiers_it                        2898	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +ASIdentifiers_it                        2898	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +BN_mod_lshift                           2899	1_1_0	EXIST::FUNCTION: +ENGINE_get_last                         2900	1_1_0	EXIST::FUNCTION:ENGINE +EVP_PKEY_encrypt_init                   2901	1_1_0	EXIST::FUNCTION: +i2d_RSAPrivateKey_fp                    2902	1_1_0	EXIST::FUNCTION:RSA,STDIO +X509_REQ_print                          2903	1_1_0	EXIST::FUNCTION: +RSA_size                                2904	1_1_0	EXIST::FUNCTION:RSA +EVP_CIPHER_CTX_iv_noconst               2905	1_1_0	EXIST::FUNCTION: +DH_set_default_method                   2906	1_1_0	EXIST::FUNCTION:DH +X509_ALGOR_new                          2907	1_1_0	EXIST::FUNCTION: +EVP_aes_192_ofb                         2908	1_1_0	EXIST::FUNCTION: +EVP_des_ede3_cfb1                       2909	1_1_0	EXIST::FUNCTION:DES +TS_REQ_to_TS_VERIFY_CTX                 2910	1_1_0	EXIST::FUNCTION:TS +d2i_PBEPARAM                            2911	1_1_0	EXIST::FUNCTION: +BN_get0_nist_prime_521                  2912	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_get_ext_by_NID              2913	1_1_0	EXIST::FUNCTION:OCSP +X509_PUBKEY_get0                        2914	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_parent_ctx          2915	1_1_0	EXIST::FUNCTION: +EC_GROUP_set_seed                       2916	1_1_0	EXIST::FUNCTION:EC +X509_STORE_CTX_free                     2917	1_1_0	EXIST::FUNCTION: +AUTHORITY_KEYID_it                      2918	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +AUTHORITY_KEYID_it                      2918	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509V3_get_value_int                    2919	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_set_string                 2920	1_1_0	EXIST::FUNCTION: +RC5_32_decrypt                          2921	1_1_0	EXIST::FUNCTION:RC5 +i2d_X509_REQ_INFO                       2922	1_1_0	EXIST::FUNCTION: +EVP_des_cfb1                            2923	1_1_0	EXIST::FUNCTION:DES +OBJ_NAME_cleanup                        2924	1_1_0	EXIST::FUNCTION: +OCSP_BASICRESP_get1_ext_d2i             2925	1_1_0	EXIST::FUNCTION:OCSP +DES_cfb64_encrypt                       2926	1_1_0	EXIST::FUNCTION:DES +CAST_cfb64_encrypt                      2927	1_1_0	EXIST::FUNCTION:CAST +EVP_PKEY_asn1_set_param                 2928	1_1_0	EXIST::FUNCTION: +BN_RECP_CTX_free                        2929	1_1_0	EXIST::FUNCTION: +BN_with_flags                           2930	1_1_0	EXIST::FUNCTION: +DSO_ctrl                                2931	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_get_final                   2932	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_get_octetstring               2933	1_1_0	EXIST::FUNCTION: +ENGINE_by_id                            2934	1_1_0	EXIST::FUNCTION:ENGINE +d2i_PKCS7_SIGNER_INFO                   2935	1_1_0	EXIST::FUNCTION: +EVP_aes_192_cbc                         2936	1_1_0	EXIST::FUNCTION: +PKCS8_pkey_set0                         2937	1_1_0	EXIST::FUNCTION: +X509_get1_email                         2938	1_1_0	EXIST::FUNCTION: +EC_POINT_point2oct                      2939	1_1_0	EXIST::FUNCTION:EC +EC_GROUP_get_curve_GFp                  2940	1_1_0	EXIST::FUNCTION:EC +ASYNC_block_pause                       2941	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_get_ext                 2942	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_strdup                           2943	1_1_0	EXIST::FUNCTION: +i2d_X509_CRL_bio                        2945	1_1_0	EXIST::FUNCTION: +EVP_PKEY_asn1_set_item                  2946	1_1_0	EXIST::FUNCTION: +CRYPTO_ccm128_encrypt                   2947	1_1_0	EXIST::FUNCTION: +X509v3_addr_get_afi                     2948	1_1_0	EXIST::FUNCTION:RFC3779 +X509_STORE_CTX_get0_param               2949	1_1_0	EXIST::FUNCTION: +EVP_add_alg_module                      2950	1_1_0	EXIST::FUNCTION: +X509_check_purpose                      2951	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_delete_ext                 2952	1_1_0	EXIST::FUNCTION:OCSP +X509_PURPOSE_get_count                  2953	1_1_0	EXIST::FUNCTION: +d2i_PKCS12_bio                          2954	1_1_0	EXIST::FUNCTION: +ASN1_item_free                          2955	1_1_0	EXIST::FUNCTION: +PKCS7_content_new                       2956	1_1_0	EXIST::FUNCTION: +X509_keyid_get0                         2957	1_1_0	EXIST::FUNCTION: +COMP_get_name                           2958	1_1_0	EXIST::FUNCTION:COMP +EC_GROUP_new_curve_GF2m                 2959	1_1_0	EXIST::FUNCTION:EC,EC2M +X509_SIG_free                           2960	1_1_0	EXIST::FUNCTION: +PEM_ASN1_write                          2961	1_1_0	EXIST::FUNCTION:STDIO +ENGINE_get_digest_engine                2962	1_1_0	EXIST::FUNCTION:ENGINE +BN_CTX_new                              2963	1_1_0	EXIST::FUNCTION: +EC_curve_nid2nist                       2964	1_1_0	EXIST::FUNCTION:EC +ENGINE_get_finish_function              2965	1_1_0	EXIST::FUNCTION:ENGINE +EC_POINT_add                            2966	1_1_0	EXIST::FUNCTION:EC +EC_KEY_oct2key                          2967	1_1_0	EXIST::FUNCTION:EC +SHA384_Init                             2968	1_1_0	EXIST::FUNCTION: +ASN1_UNIVERSALSTRING_new                2969	1_1_0	EXIST::FUNCTION: +EVP_PKEY_print_private                  2970	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_new                        2971	1_1_0	EXIST::FUNCTION: +NAME_CONSTRAINTS_it                     2972	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +NAME_CONSTRAINTS_it                     2972	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_REQ_get_cert_req                     2973	1_1_0	EXIST::FUNCTION:TS +BIO_pop                                 2974	1_1_0	EXIST::FUNCTION: +SHA256_Final                            2975	1_1_0	EXIST::FUNCTION: +EVP_PKEY_set1_DH                        2976	1_1_0	EXIST::FUNCTION:DH +DH_get_ex_data                          2977	1_1_0	EXIST::FUNCTION:DH +CRYPTO_secure_malloc                    2978	1_1_0	EXIST::FUNCTION: +TS_RESP_get_status_info                 2979	1_1_0	EXIST::FUNCTION:TS +HMAC_CTX_new                            2980	1_1_0	EXIST::FUNCTION: +ENGINE_get_default_DH                   2981	1_1_0	EXIST::FUNCTION:ENGINE +ECDSA_do_verify                         2982	1_1_0	EXIST::FUNCTION:EC +DSO_flags                               2983	1_1_0	EXIST::FUNCTION: +RAND_add                                2984	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_do_all_sorted                2985	1_1_0	EXIST::FUNCTION: +PKCS7_encrypt                           2986	1_1_0	EXIST::FUNCTION: +i2d_DSA_SIG                             2987	1_1_0	EXIST::FUNCTION:DSA +CMS_set_detached                        2988	1_1_0	EXIST::FUNCTION:CMS +X509_REQ_get_attr_by_OBJ                2989	1_1_0	EXIST::FUNCTION: +i2d_ASRange                             2990	1_1_0	EXIST::FUNCTION:RFC3779 +EC_GROUP_set_asn1_flag                  2991	1_1_0	EXIST::FUNCTION:EC +EVP_PKEY_new                            2992	1_1_0	EXIST::FUNCTION: +i2d_POLICYINFO                          2993	1_1_0	EXIST::FUNCTION: +BN_get_flags                            2994	1_1_0	EXIST::FUNCTION: +SHA384                                  2995	1_1_0	EXIST::FUNCTION: +NCONF_get_string                        2996	1_1_0	EXIST::FUNCTION: +d2i_PROXY_CERT_INFO_EXTENSION           2997	1_1_0	EXIST::FUNCTION: +EC_POINT_point2buf                      2998	1_1_0	EXIST::FUNCTION:EC +RSA_padding_add_PKCS1_OAEP_mgf1         2999	1_1_0	EXIST::FUNCTION:RSA +COMP_CTX_get_type                       3000	1_1_0	EXIST::FUNCTION:COMP +TS_RESP_CTX_set_status_info             3001	1_1_0	EXIST::FUNCTION:TS +BIO_f_nbio_test                         3002	1_1_0	EXIST::FUNCTION: +SEED_ofb128_encrypt                     3003	1_1_0	EXIST::FUNCTION:SEED +d2i_RSAPrivateKey_bio                   3004	1_1_0	EXIST::FUNCTION:RSA +DH_KDF_X9_42                            3005	1_1_0	EXIST::FUNCTION:CMS,DH +EVP_PKEY_meth_set_signctx               3006	1_1_0	EXIST::FUNCTION: +X509_CRL_get_version                    3007	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get0_info                 3008	1_1_0	EXIST::FUNCTION: +PEM_read_bio_RSAPublicKey               3009	1_1_0	EXIST::FUNCTION:RSA +EVP_PKEY_asn1_set_private               3010	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get0_RSA                       3011	1_1_0	EXIST::FUNCTION:RSA +DES_ede3_cfb64_encrypt                  3012	1_1_0	EXIST::FUNCTION:DES +POLICY_MAPPING_free                     3014	1_1_0	EXIST::FUNCTION: +EVP_aes_128_gcm                         3015	1_1_0	EXIST::FUNCTION: +BIO_dgram_non_fatal_error               3016	1_1_0	EXIST::FUNCTION:DGRAM +OCSP_request_is_signed                  3017	1_1_0	EXIST::FUNCTION:OCSP +i2d_BASIC_CONSTRAINTS                   3018	1_1_0	EXIST::FUNCTION: +EC_KEY_get_method                       3019	1_1_0	EXIST::FUNCTION:EC +EC_POINT_bn2point                       3021	1_1_0	EXIST::FUNCTION:EC +PBE2PARAM_it                            3022	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PBE2PARAM_it                            3022	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BN_rand                                 3023	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_unpack_sequence               3024	1_1_0	EXIST::FUNCTION: +X509_CRL_sign_ctx                       3025	1_1_0	EXIST::FUNCTION: +X509_STORE_add_crl                      3026	1_1_0	EXIST::FUNCTION: +PEM_write_RSAPrivateKey                 3027	1_1_0	EXIST::FUNCTION:RSA,STDIO +RC4_set_key                             3028	1_1_0	EXIST::FUNCTION:RC4 +EVP_CIPHER_CTX_cipher                   3029	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PKCS8PrivateKey_nid       3030	1_1_0	EXIST::FUNCTION: +BN_MONT_CTX_new                         3031	1_1_0	EXIST::FUNCTION: +CRYPTO_free_ex_index                    3032	1_1_0	EXIST::FUNCTION: +ASYNC_WAIT_CTX_new                      3033	1_1_0	EXIST::FUNCTION: +PKCS7_it                                3034	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_it                                3034	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CMS_unsigned_get_attr_by_OBJ            3035	1_1_0	EXIST::FUNCTION:CMS +BN_clear                                3036	1_1_0	EXIST::FUNCTION: +BIO_socket_ioctl                        3037	1_1_0	EXIST::FUNCTION:SOCK +GENERAL_NAME_cmp                        3038	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_purpose              3039	1_1_0	EXIST::FUNCTION: +X509_REVOKED_get_ext_d2i                3040	1_1_0	EXIST::FUNCTION: +X509V3_set_conf_lhash                   3041	1_1_0	EXIST::FUNCTION: +PKCS7_ENC_CONTENT_it                    3042	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_ENC_CONTENT_it                    3042	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PKCS12_item_pack_safebag                3043	1_1_0	EXIST::FUNCTION: +i2d_OCSP_RESPDATA                       3044	1_1_0	EXIST::FUNCTION:OCSP +i2d_X509_PUBKEY                         3045	1_1_0	EXIST::FUNCTION: +EVP_DecryptUpdate                       3046	1_1_0	EXIST::FUNCTION: +CAST_cbc_encrypt                        3047	1_1_0	EXIST::FUNCTION:CAST +BN_BLINDING_invert                      3048	1_1_0	EXIST::FUNCTION: +SHA512_Update                           3049	1_1_0	EXIST::FUNCTION: +ESS_ISSUER_SERIAL_new                   3050	1_1_0	EXIST::FUNCTION:TS +PKCS12_SAFEBAG_get0_pkcs8               3051	1_1_0	EXIST::FUNCTION: +X509_get_ext_by_NID                     3052	1_1_0	EXIST::FUNCTION: +d2i_IPAddressFamily                     3053	1_1_0	EXIST::FUNCTION:RFC3779 +X509_check_private_key                  3054	1_1_0	EXIST::FUNCTION: +GENERAL_NAME_get0_value                 3055	1_1_0	EXIST::FUNCTION: +X509_check_akid                         3056	1_1_0	EXIST::FUNCTION: +PKCS12_key_gen_asc                      3057	1_1_0	EXIST::FUNCTION: +EVP_bf_ofb                              3058	1_1_0	EXIST::FUNCTION:BF +AUTHORITY_KEYID_free                    3059	1_1_0	EXIST::FUNCTION: +EVP_seed_ofb                            3060	1_1_0	EXIST::FUNCTION:SEED +OBJ_NAME_get                            3061	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_set                        3062	1_1_0	EXIST::FUNCTION: +X509_NAME_ENTRY_set_data                3063	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_set_str_flags                 3064	1_1_0	EXIST::FUNCTION: +i2a_ASN1_INTEGER                        3065	1_1_0	EXIST::FUNCTION: +d2i_TS_RESP                             3066	1_1_0	EXIST::FUNCTION:TS +EVP_des_ede_cfb64                       3067	1_1_0	EXIST::FUNCTION:DES +d2i_RSAPrivateKey                       3068	1_1_0	EXIST::FUNCTION:RSA +ERR_load_BN_strings                     3069	1_1_0	EXIST::FUNCTION: +BF_encrypt                              3070	1_1_0	EXIST::FUNCTION:BF +MD5                                     3071	1_1_0	EXIST::FUNCTION:MD5 +BN_GF2m_arr2poly                        3072	1_1_0	EXIST::FUNCTION:EC2M +EVP_PKEY_meth_get_ctrl                  3073	1_1_0	EXIST::FUNCTION: +i2d_X509_REQ_bio                        3074	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set1_name             3075	1_1_0	EXIST::FUNCTION: +d2i_RSAPublicKey_bio                    3076	1_1_0	EXIST::FUNCTION:RSA +X509_REQ_get_X509_PUBKEY                3077	1_1_0	EXIST::FUNCTION: +ENGINE_load_private_key                 3078	1_1_0	EXIST::FUNCTION:ENGINE +GENERAL_NAMES_new                       3079	1_1_0	EXIST::FUNCTION: +i2d_POLICYQUALINFO                      3080	1_1_0	EXIST::FUNCTION: +EC_GF2m_simple_method                   3081	1_1_0	EXIST::FUNCTION:EC,EC2M +RSA_get_method                          3082	1_1_0	EXIST::FUNCTION:RSA +d2i_ASRange                             3083	1_1_0	EXIST::FUNCTION:RFC3779 +CMS_ContentInfo_new                     3084	1_1_0	EXIST::FUNCTION:CMS +OPENSSL_init_crypto                     3085	1_1_0	EXIST::FUNCTION: +X509_TRUST_set                          3086	1_1_0	EXIST::FUNCTION: +EVP_camellia_192_ecb                    3087	1_1_0	EXIST::FUNCTION:CAMELLIA +d2i_X509_REVOKED                        3088	1_1_0	EXIST::FUNCTION: +d2i_IPAddressOrRange                    3089	1_1_0	EXIST::FUNCTION:RFC3779 +TS_TST_INFO_set_version                 3090	1_1_0	EXIST::FUNCTION:TS +PKCS12_get0_mac                         3091	1_1_0	EXIST::FUNCTION: +EVP_EncodeInit                          3092	1_1_0	EXIST::FUNCTION: +X509_get0_trust_objects                 3093	1_1_0	EXIST::FUNCTION: +d2i_ECPrivateKey_bio                    3094	1_1_0	EXIST::FUNCTION:EC +BIO_s_secmem                            3095	1_1_0	EXIST::FUNCTION: +ENGINE_get_default_EC                   3096	1_1_0	EXIST::FUNCTION:ENGINE +TS_RESP_create_response                 3097	1_1_0	EXIST::FUNCTION:TS +BIO_ADDR_rawaddress                     3098	1_1_0	EXIST::FUNCTION:SOCK +PKCS7_ENCRYPT_new                       3099	1_1_0	EXIST::FUNCTION: +i2d_PKCS8PrivateKey_fp                  3100	1_1_0	EXIST::FUNCTION:STDIO +SRP_user_pwd_free                       3101	1_1_0	EXIST::FUNCTION:SRP +Camellia_encrypt                        3102	1_1_0	EXIST::FUNCTION:CAMELLIA +BIO_ADDR_hostname_string                3103	1_1_0	EXIST::FUNCTION:SOCK +USERNOTICE_new                          3104	1_1_0	EXIST::FUNCTION: +POLICY_MAPPING_new                      3105	1_1_0	EXIST::FUNCTION: +CRYPTO_gcm128_release                   3106	1_1_0	EXIST::FUNCTION: +BIO_new                                 3107	1_1_0	EXIST::FUNCTION: +d2i_GENERAL_NAMES                       3108	1_1_0	EXIST::FUNCTION: +PKCS7_SIGNER_INFO_new                   3109	1_1_0	EXIST::FUNCTION: +PEM_read_DSA_PUBKEY                     3110	1_1_0	EXIST::FUNCTION:DSA,STDIO +X509_get0_subject_key_id                3111	1_1_0	EXIST::FUNCTION: +i2s_ASN1_ENUMERATED                     3112	1_1_0	EXIST::FUNCTION: +X509v3_get_ext_by_OBJ                   3113	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_free                       3114	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_ocb128_aad                       3115	1_1_0	EXIST::FUNCTION:OCB +OPENSSL_sk_deep_copy                    3116	1_1_0	EXIST::FUNCTION: +i2d_RSA_PSS_PARAMS                      3117	1_1_0	EXIST::FUNCTION:RSA +EVP_aes_128_wrap_pad                    3118	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_set                     3119	1_1_0	EXIST::FUNCTION: +PKCS5_PBKDF2_HMAC_SHA1                  3120	1_1_0	EXIST::FUNCTION: +RSA_padding_check_PKCS1_type_2          3121	1_1_0	EXIST::FUNCTION:RSA +EVP_des_ede3_ecb                        3122	1_1_0	EXIST::FUNCTION:DES +CBIGNUM_it                              3123	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +CBIGNUM_it                              3123	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BIO_new_NDEF                            3124	1_1_0	EXIST::FUNCTION: +EVP_aes_256_wrap                        3125	1_1_0	EXIST::FUNCTION: +ASN1_STRING_print                       3126	1_1_0	EXIST::FUNCTION: +CRYPTO_THREAD_lock_free                 3127	1_1_0	EXIST::FUNCTION: +TS_ACCURACY_get_seconds                 3128	1_1_0	EXIST::FUNCTION:TS +BN_options                              3129	1_1_0	EXIST::FUNCTION: +BIO_debug_callback                      3130	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_get_update                  3131	1_1_0	EXIST::FUNCTION: +GENERAL_NAME_set0_othername             3132	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_set_bit                 3133	1_1_0	EXIST::FUNCTION: +EVP_aes_256_ccm                         3134	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_get0_pkey                  3135	1_1_0	EXIST::FUNCTION: +CONF_load_fp                            3136	1_1_0	EXIST::FUNCTION:STDIO +BN_to_ASN1_ENUMERATED                   3137	1_1_0	EXIST::FUNCTION: +i2d_ISSUING_DIST_POINT                  3138	1_1_0	EXIST::FUNCTION: +TXT_DB_free                             3139	1_1_0	EXIST::FUNCTION: +ASN1_STRING_set                         3140	1_1_0	EXIST::FUNCTION: +d2i_ESS_CERT_ID                         3141	1_1_0	EXIST::FUNCTION:TS +EVP_PKEY_meth_set_derive                3142	1_1_0	EXIST::FUNCTION: +OPENSSL_LH_stats                        3143	1_1_0	EXIST::FUNCTION:STDIO +NCONF_dump_fp                           3144	1_1_0	EXIST::FUNCTION:STDIO +TS_STATUS_INFO_print_bio                3145	1_1_0	EXIST::FUNCTION:TS +OPENSSL_sk_dup                          3146	1_1_0	EXIST::FUNCTION: +BF_cfb64_encrypt                        3147	1_1_0	EXIST::FUNCTION:BF +ASN1_GENERALIZEDTIME_adj                3148	1_1_0	EXIST::FUNCTION: +ECDSA_verify                            3149	1_1_0	EXIST::FUNCTION:EC +EVP_camellia_256_cfb128                 3150	1_1_0	EXIST::FUNCTION:CAMELLIA +CMAC_Init                               3151	1_1_0	EXIST::FUNCTION:CMAC +OCSP_basic_add1_status                  3152	1_1_0	EXIST::FUNCTION:OCSP +X509_CRL_get0_by_cert                   3153	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_set_tsa                     3154	1_1_0	EXIST::FUNCTION:TS +i2d_ASN1_GENERALIZEDTIME                3155	1_1_0	EXIST::FUNCTION: +EVP_PKEY_derive_set_peer                3156	1_1_0	EXIST::FUNCTION: +X509V3_EXT_CRL_add_conf                 3157	1_1_0	EXIST::FUNCTION: +CRYPTO_ccm128_init                      3158	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set_time              3159	1_1_0	EXIST::FUNCTION: +BN_reciprocal                           3160	1_1_0	EXIST::FUNCTION: +d2i_PKCS7_SIGN_ENVELOPE                 3161	1_1_0	EXIST::FUNCTION: +X509_NAME_digest                        3162	1_1_0	EXIST::FUNCTION: +d2i_OCSP_SERVICELOC                     3163	1_1_0	EXIST::FUNCTION:OCSP +GENERAL_NAME_print                      3164	1_1_0	EXIST::FUNCTION: +CMS_ReceiptRequest_get0_values          3165	1_1_0	EXIST::FUNCTION:CMS +a2i_ASN1_INTEGER                        3166	1_1_0	EXIST::FUNCTION: +OCSP_sendreq_bio                        3167	1_1_0	EXIST::FUNCTION:OCSP +PKCS12_SAFEBAG_create_crl               3168	1_1_0	EXIST::FUNCTION: +d2i_X509_NAME                           3169	1_1_0	EXIST::FUNCTION: +IDEA_cfb64_encrypt                      3170	1_1_0	EXIST::FUNCTION:IDEA +BN_mod_sub                              3171	1_1_0	EXIST::FUNCTION: +ASN1_NULL_new                           3172	1_1_0	EXIST::FUNCTION: +HMAC_Init                               3173	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +EVP_MD_CTX_update_fn                    3174	1_1_0	EXIST::FUNCTION: +EVP_aes_128_ecb                         3175	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_bio_stream                    3176	1_1_0	EXIST::FUNCTION: +i2a_ACCESS_DESCRIPTION                  3178	1_1_0	EXIST::FUNCTION: +EC_KEY_set_enc_flags                    3179	1_1_0	EXIST::FUNCTION:EC +i2d_PUBKEY_fp                           3180	1_1_0	EXIST::FUNCTION:STDIO +b2i_PrivateKey_bio                      3181	1_1_0	EXIST::FUNCTION:DSA +OCSP_REQUEST_add_ext                    3182	1_1_0	EXIST::FUNCTION:OCSP +SXNET_add_id_INTEGER                    3183	1_1_0	EXIST::FUNCTION: +CTLOG_get0_public_key                   3184	1_1_0	EXIST::FUNCTION:CT +OCSP_REQUEST_get_ext_by_OBJ             3185	1_1_0	EXIST::FUNCTION:OCSP +X509_NAME_oneline                       3186	1_1_0	EXIST::FUNCTION: +X509V3_set_nconf                        3187	1_1_0	EXIST::FUNCTION: +RSAPrivateKey_dup                       3188	1_1_0	EXIST::FUNCTION:RSA +BN_mod_add                              3189	1_1_0	EXIST::FUNCTION: +EC_POINT_set_affine_coordinates_GFp     3190	1_1_0	EXIST::FUNCTION:EC +X509_get_default_cert_file              3191	1_1_0	EXIST::FUNCTION: +UI_method_set_flusher                   3192	1_1_0	EXIST::FUNCTION:UI +RSA_new_method                          3193	1_1_0	EXIST::FUNCTION:RSA +OCSP_request_verify                     3194	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_THREAD_run_once                  3195	1_1_0	EXIST::FUNCTION: +TS_REQ_print_bio                        3196	1_1_0	EXIST::FUNCTION:TS +SCT_get_version                         3197	1_1_0	EXIST::FUNCTION:CT +IDEA_set_encrypt_key                    3198	1_1_0	EXIST::FUNCTION:IDEA +ENGINE_get_DH                           3199	1_1_0	EXIST::FUNCTION:ENGINE +i2d_ASIdentifierChoice                  3200	1_1_0	EXIST::FUNCTION:RFC3779 +SRP_Calc_A                              3201	1_1_0	EXIST::FUNCTION:SRP +OCSP_BASICRESP_add_ext                  3202	1_1_0	EXIST::FUNCTION:OCSP +EVP_idea_cfb64                          3203	1_1_0	EXIST::FUNCTION:IDEA +PKCS12_newpass                          3204	1_1_0	EXIST::FUNCTION: +EVP_aes_256_cbc_hmac_sha256             3205	1_1_0	EXIST::FUNCTION: +TS_ACCURACY_get_millis                  3206	1_1_0	EXIST::FUNCTION:TS +X509_CRL_get_REVOKED                    3207	1_1_0	EXIST::FUNCTION: +X509_issuer_name_hash_old               3208	1_1_0	EXIST::FUNCTION:MD5 +i2d_PKCS12_SAFEBAG                      3209	1_1_0	EXIST::FUNCTION: +BN_rand_range                           3210	1_1_0	EXIST::FUNCTION: +SMIME_write_ASN1                        3211	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_new                      3212	1_1_0	EXIST::FUNCTION: +MD4_Final                               3213	1_1_0	EXIST::FUNCTION:MD4 +EVP_PKEY_id                             3214	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_get0_pkey_ctx         3215	1_1_0	EXIST::FUNCTION:CMS +OCSP_REQINFO_free                       3216	1_1_0	EXIST::FUNCTION:OCSP +AUTHORITY_KEYID_new                     3217	1_1_0	EXIST::FUNCTION: +i2d_DIST_POINT_NAME                     3218	1_1_0	EXIST::FUNCTION: +OpenSSL_version_num                     3219	1_1_0	EXIST::FUNCTION: +OCSP_CERTID_free                        3220	1_1_0	EXIST::FUNCTION:OCSP +BIO_hex_string                          3221	1_1_0	EXIST::FUNCTION: +X509_REQ_sign_ctx                       3222	1_1_0	EXIST::FUNCTION: +CRYPTO_ocb128_init                      3223	1_1_0	EXIST::FUNCTION:OCB +EVP_PKEY_get1_EC_KEY                    3224	1_1_0	EXIST::FUNCTION:EC +ASN1_PRINTABLESTRING_free               3225	1_1_0	EXIST::FUNCTION: +BIO_get_retry_reason                    3226	1_1_0	EXIST::FUNCTION: +X509_NAME_print                         3227	1_1_0	EXIST::FUNCTION: +ACCESS_DESCRIPTION_free                 3228	1_1_0	EXIST::FUNCTION: +BN_nist_mod_384                         3229	1_1_0	EXIST::FUNCTION: +i2d_EC_PUBKEY_fp                        3230	1_1_0	EXIST::FUNCTION:EC,STDIO +ENGINE_set_default_pkey_meths           3231	1_1_0	EXIST::FUNCTION:ENGINE +DH_bits                                 3232	1_1_0	EXIST::FUNCTION:DH +i2d_X509_ALGORS                         3233	1_1_0	EXIST::FUNCTION: +EVP_camellia_192_cfb1                   3234	1_1_0	EXIST::FUNCTION:CAMELLIA +TS_RESP_CTX_add_failure_info            3235	1_1_0	EXIST::FUNCTION:TS +EVP_PBE_alg_add                         3236	1_1_0	EXIST::FUNCTION: +ESS_CERT_ID_dup                         3237	1_1_0	EXIST::FUNCTION:TS +CMS_SignerInfo_get0_signature           3238	1_1_0	EXIST::FUNCTION:CMS +EVP_PKEY_verify_recover                 3239	1_1_0	EXIST::FUNCTION: +i2d_PUBKEY                              3240	1_1_0	EXIST::FUNCTION: +ERR_load_EVP_strings                    3241	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_set1_data                3242	1_1_0	EXIST::FUNCTION: +d2i_X509_fp                             3243	1_1_0	EXIST::FUNCTION:STDIO +MD2_Init                                3244	1_1_0	EXIST::FUNCTION:MD2 +ERR_get_error_line                      3245	1_1_0	EXIST::FUNCTION: +X509_CRL_get_ext_by_NID                 3246	1_1_0	EXIST::FUNCTION: +OPENSSL_INIT_free                       3247	1_1_0	EXIST::FUNCTION: +PBE2PARAM_free                          3248	1_1_0	EXIST::FUNCTION: +EVP_aes_192_ecb                         3249	1_1_0	EXIST::FUNCTION: +ASN1_OCTET_STRING_new                   3250	1_1_0	EXIST::FUNCTION: +CMS_set1_eContentType                   3251	1_1_0	EXIST::FUNCTION:CMS +EVP_des_ede3_wrap                       3252	1_1_0	EXIST::FUNCTION:DES +GENERAL_SUBTREE_it                      3253	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +GENERAL_SUBTREE_it                      3253	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_read_pw_string_min                  3254	1_1_0	EXIST::FUNCTION:UI +X509_set1_notBefore                     3255	1_1_0	EXIST::FUNCTION: +MD4                                     3256	1_1_0	EXIST::FUNCTION:MD4 +EVP_PKEY_CTX_dup                        3257	1_1_0	EXIST::FUNCTION: +ENGINE_setup_bsd_cryptodev              3258	1_1_0	EXIST:__FreeBSD__:FUNCTION:DEPRECATEDIN_1_1_0,ENGINE +PEM_read_bio_DHparams                   3259	1_1_0	EXIST::FUNCTION:DH +CMS_SharedInfo_encode                   3260	1_1_0	EXIST::FUNCTION:CMS +ASN1_OBJECT_create                      3261	1_1_0	EXIST::FUNCTION: +i2d_ECParameters                        3262	1_1_0	EXIST::FUNCTION:EC +BN_GF2m_mod_arr                         3263	1_1_0	EXIST::FUNCTION:EC2M +ENGINE_set_finish_function              3264	1_1_0	EXIST::FUNCTION:ENGINE +d2i_ASN1_OCTET_STRING                   3265	1_1_0	EXIST::FUNCTION: +ENGINE_set_load_pubkey_function         3266	1_1_0	EXIST::FUNCTION:ENGINE +BIO_vprintf                             3267	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_decrypt               3268	1_1_0	EXIST::FUNCTION:CMS +RSA_generate_key                        3269	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8,RSA +PKCS7_set0_type_other                   3270	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_new                        3271	1_1_0	EXIST::FUNCTION:OCSP +BIO_lookup                              3272	1_1_0	EXIST::FUNCTION:SOCK +EC_GROUP_get0_cofactor                  3273	1_1_0	EXIST::FUNCTION:EC +SCT_print                               3275	1_1_0	EXIST::FUNCTION:CT +X509_PUBKEY_set                         3276	1_1_0	EXIST::FUNCTION: +POLICY_CONSTRAINTS_free                 3277	1_1_0	EXIST::FUNCTION: +EVP_aes_256_cfb8                        3278	1_1_0	EXIST::FUNCTION: +d2i_DSA_PUBKEY_bio                      3279	1_1_0	EXIST::FUNCTION:DSA +X509_NAME_get_text_by_OBJ               3280	1_1_0	EXIST::FUNCTION: +RSA_padding_check_none                  3281	1_1_0	EXIST::FUNCTION:RSA +CRYPTO_set_mem_debug                    3282	1_1_0	EXIST::FUNCTION: +TS_VERIFY_CTX_init                      3283	1_1_0	EXIST::FUNCTION:TS +OCSP_cert_id_new                        3284	1_1_0	EXIST::FUNCTION:OCSP +GENERAL_SUBTREE_new                     3285	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_push                         3286	1_1_0	EXIST::FUNCTION: +X509_LOOKUP_ctrl                        3287	1_1_0	EXIST::FUNCTION: +SRP_check_known_gN_param                3288	1_1_0	EXIST::FUNCTION:SRP +d2i_DIST_POINT                          3289	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_free                       3290	1_1_0	EXIST::FUNCTION: +PBEPARAM_free                           3291	1_1_0	EXIST::FUNCTION: +NETSCAPE_SPKI_set_pubkey                3292	1_1_0	EXIST::FUNCTION: +EVP_sha512                              3293	1_1_0	EXIST::FUNCTION: +X509_CRL_match                          3294	1_1_0	EXIST::FUNCTION: +i2s_ASN1_IA5STRING                      3295	1_1_0	EXIST::FUNCTION: +EC_KEY_get_default_method               3296	1_1_0	EXIST::FUNCTION:EC +PKCS8_decrypt                           3297	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_get_data                   3298	1_1_0	EXIST::FUNCTION: +POLICYQUALINFO_it                       3299	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +POLICYQUALINFO_it                       3299	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PKCS7_ISSUER_AND_SERIAL_free            3300	1_1_0	EXIST::FUNCTION: +DSA_SIG_free                            3301	1_1_0	EXIST::FUNCTION:DSA +BIO_asn1_set_suffix                     3302	1_1_0	EXIST::FUNCTION: +EVP_PKEY_set_type_str                   3303	1_1_0	EXIST::FUNCTION: +i2d_X509_SIG                            3304	1_1_0	EXIST::FUNCTION: +OPENSSL_LH_strhash                      3305	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_trust                3306	1_1_0	EXIST::FUNCTION: +TS_ACCURACY_set_micros                  3307	1_1_0	EXIST::FUNCTION:TS +EVP_DigestFinal_ex                      3308	1_1_0	EXIST::FUNCTION: +X509_get0_pubkey                        3309	1_1_0	EXIST::FUNCTION: +X509_check_ip                           3310	1_1_0	EXIST::FUNCTION: +PKCS7_get_signed_attribute              3311	1_1_0	EXIST::FUNCTION: +ASN1_GENERALIZEDTIME_free               3312	1_1_0	EXIST::FUNCTION: +COMP_compress_block                     3313	1_1_0	EXIST::FUNCTION:COMP +ASN1_STRING_dup                         3314	1_1_0	EXIST::FUNCTION: +X509_LOOKUP_free                        3315	1_1_0	EXIST::FUNCTION: +EC_GROUP_cmp                            3316	1_1_0	EXIST::FUNCTION:EC +TS_TST_INFO_get_ext_by_critical         3317	1_1_0	EXIST::FUNCTION:TS +ECParameters_print_fp                   3318	1_1_0	EXIST::FUNCTION:EC,STDIO +X509_REQ_sign                           3319	1_1_0	EXIST::FUNCTION: +CRYPTO_xts128_encrypt                   3320	1_1_0	EXIST::FUNCTION: +PEM_def_callback                        3321	1_1_0	EXIST::FUNCTION: +PKCS12_add_friendlyname_uni             3322	1_1_0	EXIST::FUNCTION: +X509_policy_tree_level_count            3323	1_1_0	EXIST::FUNCTION: +OBJ_sn2nid                              3324	1_1_0	EXIST::FUNCTION: +CTLOG_free                              3325	1_1_0	EXIST::FUNCTION:CT +EVP_CIPHER_meth_dup                     3326	1_1_0	EXIST::FUNCTION: +CMS_get1_crls                           3327	1_1_0	EXIST::FUNCTION:CMS +X509_aux_print                          3328	1_1_0	EXIST::FUNCTION: +OPENSSL_thread_stop                     3330	1_1_0	EXIST::FUNCTION: +X509_policy_node_get0_parent            3331	1_1_0	EXIST::FUNCTION: +X509_PKEY_free                          3332	1_1_0	EXIST::FUNCTION: +OCSP_CRLID_new                          3333	1_1_0	EXIST::FUNCTION:OCSP +CONF_dump_bio                           3334	1_1_0	EXIST::FUNCTION: +d2i_PKCS8PrivateKey_fp                  3335	1_1_0	EXIST::FUNCTION:STDIO +RSA_setup_blinding                      3336	1_1_0	EXIST::FUNCTION:RSA +ERR_peek_error_line                     3337	1_1_0	EXIST::FUNCTION: +d2i_PKCS7                               3338	1_1_0	EXIST::FUNCTION: +ERR_reason_error_string                 3339	1_1_0	EXIST::FUNCTION: +ERR_remove_thread_state                 3340	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +PEM_write_PrivateKey                    3341	1_1_0	EXIST::FUNCTION:STDIO +EVP_PKEY_CTX_str2ctrl                   3342	1_1_0	EXIST::FUNCTION: +CMS_SignerInfo_verify_content           3343	1_1_0	EXIST::FUNCTION:CMS +ASN1_INTEGER_get_int64                  3344	1_1_0	EXIST::FUNCTION: +ASN1_item_sign                          3345	1_1_0	EXIST::FUNCTION: +OCSP_SERVICELOC_new                     3346	1_1_0	EXIST::FUNCTION:OCSP +ASN1_VISIBLESTRING_new                  3347	1_1_0	EXIST::FUNCTION: +BN_set_flags                            3348	1_1_0	EXIST::FUNCTION: +d2i_PrivateKey_bio                      3349	1_1_0	EXIST::FUNCTION: +ASN1_SEQUENCE_ANY_it                    3350	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_SEQUENCE_ANY_it                    3350	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ASN1_UTCTIME_adj                        3351	1_1_0	EXIST::FUNCTION: +BN_mod_sqrt                             3352	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_is_sorted                    3353	1_1_0	EXIST::FUNCTION: +OCSP_SIGNATURE_new                      3354	1_1_0	EXIST::FUNCTION:OCSP +EVP_PKEY_meth_get_paramgen              3355	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_create_by_OBJ            3356	1_1_0	EXIST::FUNCTION: +RSA_generate_key_ex                     3357	1_1_0	EXIST::FUNCTION:RSA +CMS_SignerInfo_get0_algs                3358	1_1_0	EXIST::FUNCTION:CMS +DIST_POINT_free                         3359	1_1_0	EXIST::FUNCTION: +ESS_SIGNING_CERT_free                   3360	1_1_0	EXIST::FUNCTION:TS +SCT_new_from_base64                     3361	1_1_0	EXIST::FUNCTION:CT +OpenSSL_version                         3362	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_get_ext_by_OBJ          3363	1_1_0	EXIST::FUNCTION:OCSP +ECDSA_SIG_get0                          3364	1_1_0	EXIST::FUNCTION:EC +BN_set_word                             3365	1_1_0	EXIST::FUNCTION: +ENGINE_set_flags                        3366	1_1_0	EXIST::FUNCTION:ENGINE +DSA_OpenSSL                             3367	1_1_0	EXIST::FUNCTION:DSA +CMS_RecipientInfo_kari_get0_alg         3368	1_1_0	EXIST::FUNCTION:CMS +PKCS7_ENVELOPE_new                      3369	1_1_0	EXIST::FUNCTION: +EDIPARTYNAME_new                        3370	1_1_0	EXIST::FUNCTION: +CMS_add1_cert                           3371	1_1_0	EXIST::FUNCTION:CMS +DSO_convert_filename                    3372	1_1_0	EXIST::FUNCTION: +RSA_padding_check_SSLv23                3373	1_1_0	EXIST::FUNCTION:RSA +CRYPTO_gcm128_finish                    3374	1_1_0	EXIST::FUNCTION: +PKCS12_SAFEBAGS_it                      3375	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS12_SAFEBAGS_it                      3375	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PKCS12_PBE_add                          3376	1_1_0	EXIST::FUNCTION: +EC_KEY_set_public_key_affine_coordinates 3377	1_1_0	EXIST::FUNCTION:EC +EVP_EncryptInit_ex                      3378	1_1_0	EXIST::FUNCTION: +ENGINE_add                              3379	1_1_0	EXIST::FUNCTION:ENGINE +OPENSSL_LH_error                        3380	1_1_0	EXIST::FUNCTION: +PKCS7_DIGEST_it                         3381	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_DIGEST_it                         3381	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_CINF_new                           3382	1_1_0	EXIST::FUNCTION: +EVP_PKEY_keygen_init                    3383	1_1_0	EXIST::FUNCTION: +EVP_aes_192_ocb                         3384	1_1_0	EXIST::FUNCTION:OCB +EVP_camellia_256_cfb1                   3385	1_1_0	EXIST::FUNCTION:CAMELLIA +CRYPTO_secure_actual_size               3387	1_1_0	EXIST::FUNCTION: +COMP_CTX_free                           3388	1_1_0	EXIST::FUNCTION:COMP +i2d_PBE2PARAM                           3389	1_1_0	EXIST::FUNCTION: +EC_POINT_make_affine                    3390	1_1_0	EXIST::FUNCTION:EC +DSA_generate_parameters                 3391	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8,DSA +ASN1_BIT_STRING_num_asc                 3392	1_1_0	EXIST::FUNCTION: +X509_INFO_free                          3394	1_1_0	EXIST::FUNCTION: +d2i_PKCS8_PRIV_KEY_INFO_fp              3395	1_1_0	EXIST::FUNCTION:STDIO +X509_OBJECT_retrieve_match              3396	1_1_0	EXIST::FUNCTION: +EVP_aes_128_ctr                         3397	1_1_0	EXIST::FUNCTION: +EVP_PBE_find                            3398	1_1_0	EXIST::FUNCTION: +SHA512_Transform                        3399	1_1_0	EXIST::FUNCTION: +ERR_add_error_vdata                     3400	1_1_0	EXIST::FUNCTION: +OCSP_REQUEST_get_ext                    3401	1_1_0	EXIST::FUNCTION:OCSP +NETSCAPE_SPKAC_new                      3402	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_verify                3403	1_1_0	EXIST::FUNCTION: +CRYPTO_128_wrap                         3404	1_1_0	EXIST::FUNCTION: +X509_STORE_set_lookup_crls              3405	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_meth_get_ctrl                3406	1_1_0	EXIST::FUNCTION: +OCSP_REQ_CTX_set1_req                   3407	1_1_0	EXIST::FUNCTION:OCSP +CONF_imodule_get_usr_data               3408	1_1_0	EXIST::FUNCTION: +CRYPTO_new_ex_data                      3409	1_1_0	EXIST::FUNCTION: +PEM_read_PKCS8_PRIV_KEY_INFO            3410	1_1_0	EXIST::FUNCTION:STDIO +TS_VERIFY_CTX_new                       3411	1_1_0	EXIST::FUNCTION:TS +BUF_MEM_new_ex                          3412	1_1_0	EXIST::FUNCTION: +RSA_padding_add_X931                    3413	1_1_0	EXIST::FUNCTION:RSA +BN_get0_nist_prime_256                  3414	1_1_0	EXIST::FUNCTION: +CRYPTO_memcmp                           3415	1_1_0	EXIST::FUNCTION: +DH_check_pub_key                        3416	1_1_0	EXIST::FUNCTION:DH +ASN1_mbstring_copy                      3417	1_1_0	EXIST::FUNCTION: +PKCS7_set_type                          3418	1_1_0	EXIST::FUNCTION: +BIO_gets                                3419	1_1_0	EXIST::FUNCTION: +RSA_padding_check_PKCS1_type_1          3420	1_1_0	EXIST::FUNCTION:RSA +UI_ctrl                                 3421	1_1_0	EXIST::FUNCTION:UI +i2d_X509_REQ_fp                         3422	1_1_0	EXIST::FUNCTION:STDIO +BN_BLINDING_convert_ex                  3423	1_1_0	EXIST::FUNCTION: +ASN1_GENERALIZEDTIME_print              3424	1_1_0	EXIST::FUNCTION: +BIO_s_null                              3425	1_1_0	EXIST::FUNCTION: +PEM_ASN1_read                           3426	1_1_0	EXIST::FUNCTION:STDIO +SCT_get_log_entry_type                  3427	1_1_0	EXIST::FUNCTION:CT +EVP_CIPHER_meth_get_init                3428	1_1_0	EXIST::FUNCTION: +X509_ALGOR_free                         3429	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_get_ext_count           3430	1_1_0	EXIST::FUNCTION:OCSP +EC_POINT_free                           3431	1_1_0	EXIST::FUNCTION:EC +EVP_OpenFinal                           3432	1_1_0	EXIST::FUNCTION:RSA +RAND_egd_bytes                          3433	1_1_0	EXIST::FUNCTION:EGD +UI_method_get_writer                    3434	1_1_0	EXIST::FUNCTION:UI +BN_secure_new                           3435	1_1_0	EXIST::FUNCTION: +SHA1_Update                             3437	1_1_0	EXIST::FUNCTION: +BIO_s_connect                           3438	1_1_0	EXIST::FUNCTION:SOCK +EVP_MD_meth_get_init                    3439	1_1_0	EXIST::FUNCTION: +ASN1_BIT_STRING_free                    3440	1_1_0	EXIST::FUNCTION: +i2d_PROXY_CERT_INFO_EXTENSION           3441	1_1_0	EXIST::FUNCTION: +ASN1_IA5STRING_new                      3442	1_1_0	EXIST::FUNCTION: +X509_CRL_up_ref                         3443	1_1_0	EXIST::FUNCTION: +EVP_EncodeFinal                         3444	1_1_0	EXIST::FUNCTION: +X509_set_ex_data                        3445	1_1_0	EXIST::FUNCTION: +ERR_get_next_error_library              3446	1_1_0	EXIST::FUNCTION: +OCSP_RESPONSE_print                     3447	1_1_0	EXIST::FUNCTION:OCSP +BN_get_rfc3526_prime_2048               3448	1_1_0	EXIST::FUNCTION: +BIO_new_bio_pair                        3449	1_1_0	EXIST::FUNCTION: +EC_GFp_nistp256_method                  3450	1_1_0	EXIST::FUNCTION:EC,EC_NISTP_64_GCC_128 +BIO_method_type                         3451	1_1_0	EXIST::FUNCTION: +ECPKParameters_print                    3452	1_1_0	EXIST::FUNCTION:EC +EVP_rc4                                 3453	1_1_0	EXIST::FUNCTION:RC4 +CMS_data_create                         3454	1_1_0	EXIST::FUNCTION:CMS +EC_POINT_point2bn                       3455	1_1_0	EXIST::FUNCTION:EC +CMS_unsigned_get0_data_by_OBJ           3456	1_1_0	EXIST::FUNCTION:CMS +ASN1_OCTET_STRING_cmp                   3457	1_1_0	EXIST::FUNCTION: +X509_NAME_print_ex                      3458	1_1_0	EXIST::FUNCTION: +ASN1_parse                              3459	1_1_0	EXIST::FUNCTION: +EC_KEY_priv2oct                         3460	1_1_0	EXIST::FUNCTION:EC +PKCS7_simple_smimecap                   3461	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_set_int_octetstring           3462	1_1_0	EXIST::FUNCTION: +BIO_number_written                      3463	1_1_0	EXIST::FUNCTION: +TS_TST_INFO_set_msg_imprint             3464	1_1_0	EXIST::FUNCTION:TS +CRYPTO_get_ex_data                      3465	1_1_0	EXIST::FUNCTION: +X509_PURPOSE_get0_sname                 3466	1_1_0	EXIST::FUNCTION: +RSA_verify_PKCS1_PSS                    3467	1_1_0	EXIST::FUNCTION:RSA +HMAC_CTX_reset                          3468	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_set_init                  3469	1_1_0	EXIST::FUNCTION: +X509_REQ_extension_nid                  3470	1_1_0	EXIST::FUNCTION: +ENGINE_up_ref                           3471	1_1_0	EXIST::FUNCTION:ENGINE +BN_BLINDING_invert_ex                   3472	1_1_0	EXIST::FUNCTION: +RIPEMD160_Init                          3473	1_1_0	EXIST::FUNCTION:RMD160 +ASYNC_WAIT_CTX_get_changed_fds          3474	1_1_0	EXIST::FUNCTION: +EVP_PKEY_save_parameters                3475	1_1_0	EXIST::FUNCTION: +SCT_set_source                          3476	1_1_0	EXIST::FUNCTION:CT +DES_set_odd_parity                      3477	1_1_0	EXIST::FUNCTION:DES +CMAC_CTX_free                           3478	1_1_0	EXIST::FUNCTION:CMAC +d2i_ESS_ISSUER_SERIAL                   3479	1_1_0	EXIST::FUNCTION:TS +HMAC_CTX_set_flags                      3480	1_1_0	EXIST::FUNCTION: +d2i_PKCS8_bio                           3481	1_1_0	EXIST::FUNCTION: +OCSP_ONEREQ_get_ext_count               3482	1_1_0	EXIST::FUNCTION:OCSP +PEM_read_bio_PKCS8_PRIV_KEY_INFO        3483	1_1_0	EXIST::FUNCTION: +i2d_OCSP_BASICRESP                      3484	1_1_0	EXIST::FUNCTION:OCSP +CMAC_Final                              3485	1_1_0	EXIST::FUNCTION:CMAC +X509V3_EXT_add_alias                    3486	1_1_0	EXIST::FUNCTION: +BN_get_params                           3487	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8 +PKCS5_pbkdf2_set                        3488	1_1_0	EXIST::FUNCTION: +d2i_PKCS8PrivateKey_bio                 3489	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_new                     3490	1_1_0	EXIST::FUNCTION: +ENGINE_register_digests                 3491	1_1_0	EXIST::FUNCTION:ENGINE +X509_NAME_get_text_by_NID               3492	1_1_0	EXIST::FUNCTION: +SMIME_read_ASN1                         3493	1_1_0	EXIST::FUNCTION: +X509_REQ_set_subject_name               3494	1_1_0	EXIST::FUNCTION: +BN_sub_word                             3495	1_1_0	EXIST::FUNCTION: +DSO_load                                3496	1_1_0	EXIST::FUNCTION: +BN_mod_exp                              3497	1_1_0	EXIST::FUNCTION: +X509_get_signature_type                 3498	1_1_0	EXIST::FUNCTION: +BIO_ptr_ctrl                            3499	1_1_0	EXIST::FUNCTION: +EVP_rc4_hmac_md5                        3500	1_1_0	EXIST::FUNCTION:MD5,RC4 +OPENSSL_strlcat                         3501	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_new                   3502	1_1_0	EXIST::FUNCTION: +BIO_ADDR_rawport                        3503	1_1_0	EXIST::FUNCTION:SOCK +BUF_MEM_grow_clean                      3504	1_1_0	EXIST::FUNCTION: +X509_NAME_print_ex_fp                   3505	1_1_0	EXIST::FUNCTION:STDIO +X509_check_host                         3506	1_1_0	EXIST::FUNCTION: +PEM_read_ECPKParameters                 3507	1_1_0	EXIST::FUNCTION:EC,STDIO +X509_ATTRIBUTE_get0_data                3508	1_1_0	EXIST::FUNCTION: +CMS_add1_signer                         3509	1_1_0	EXIST::FUNCTION:CMS +BN_pseudo_rand                          3510	1_1_0	EXIST::FUNCTION: +d2i_DIRECTORYSTRING                     3511	1_1_0	EXIST::FUNCTION: +d2i_ASN1_PRINTABLE                      3512	1_1_0	EXIST::FUNCTION: +EVP_PKEY_add1_attr_by_NID               3513	1_1_0	EXIST::FUNCTION: +i2d_PKCS8_PRIV_KEY_INFO_bio             3514	1_1_0	EXIST::FUNCTION: +X509_NAME_get_index_by_NID              3515	1_1_0	EXIST::FUNCTION: +ENGINE_get_first                        3516	1_1_0	EXIST::FUNCTION:ENGINE +CERTIFICATEPOLICIES_it                  3517	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +CERTIFICATEPOLICIES_it                  3517	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_MD_CTX_ctrl                         3518	1_1_0	EXIST::FUNCTION: +PKCS7_final                             3519	1_1_0	EXIST::FUNCTION: +EVP_PKEY_size                           3520	1_1_0	EXIST::FUNCTION: +EVP_DecryptFinal_ex                     3521	1_1_0	EXIST::FUNCTION: +SCT_get_signature_nid                   3522	1_1_0	EXIST::FUNCTION:CT +PROXY_CERT_INFO_EXTENSION_new           3523	1_1_0	EXIST::FUNCTION: +EVP_bf_cbc                              3524	1_1_0	EXIST::FUNCTION:BF +DSA_do_verify                           3525	1_1_0	EXIST::FUNCTION:DSA +EC_GROUP_get_seed_len                   3526	1_1_0	EXIST::FUNCTION:EC +EC_POINT_set_affine_coordinates_GF2m    3527	1_1_0	EXIST::FUNCTION:EC,EC2M +TS_REQ_set_policy_id                    3528	1_1_0	EXIST::FUNCTION:TS +BIO_callback_ctrl                       3529	1_1_0	EXIST::FUNCTION: +v2i_GENERAL_NAME                        3530	1_1_0	EXIST::FUNCTION: +ERR_print_errors_cb                     3531	1_1_0	EXIST::FUNCTION: +ENGINE_set_default_string               3532	1_1_0	EXIST::FUNCTION:ENGINE +BIO_number_read                         3533	1_1_0	EXIST::FUNCTION: +CRYPTO_zalloc                           3534	1_1_0	EXIST::FUNCTION: +EVP_PKEY_cmp_parameters                 3535	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_new_id                     3537	1_1_0	EXIST::FUNCTION: +TLS_FEATURE_free                        3538	1_1_0	EXIST::FUNCTION: +d2i_BASIC_CONSTRAINTS                   3539	1_1_0	EXIST::FUNCTION: +X509_CERT_AUX_new                       3540	1_1_0	EXIST::FUNCTION: +ENGINE_register_pkey_asn1_meths         3541	1_1_0	EXIST::FUNCTION:ENGINE +CRYPTO_ocb128_tag                       3542	1_1_0	EXIST::FUNCTION:OCB +ERR_load_OBJ_strings                    3544	1_1_0	EXIST::FUNCTION: +BIO_ctrl_get_read_request               3545	1_1_0	EXIST::FUNCTION: +BN_from_montgomery                      3546	1_1_0	EXIST::FUNCTION: +DSO_new                                 3547	1_1_0	EXIST::FUNCTION: +AES_ecb_encrypt                         3548	1_1_0	EXIST::FUNCTION: +BN_dec2bn                               3549	1_1_0	EXIST::FUNCTION: +CMS_decrypt                             3550	1_1_0	EXIST::FUNCTION:CMS +BN_mpi2bn                               3551	1_1_0	EXIST::FUNCTION: +EVP_aes_128_cfb128                      3552	1_1_0	EXIST::FUNCTION: +RC5_32_ecb_encrypt                      3554	1_1_0	EXIST::FUNCTION:RC5 +EVP_CIPHER_meth_new                     3555	1_1_0	EXIST::FUNCTION: +i2d_RSA_OAEP_PARAMS                     3556	1_1_0	EXIST::FUNCTION:RSA +SXNET_get_id_ulong                      3557	1_1_0	EXIST::FUNCTION: +BIO_get_callback_arg                    3558	1_1_0	EXIST::FUNCTION: +ENGINE_register_RSA                     3559	1_1_0	EXIST::FUNCTION:ENGINE +i2v_GENERAL_NAMES                       3560	1_1_0	EXIST::FUNCTION: +PKCS7_decrypt                           3562	1_1_0	EXIST::FUNCTION: +X509_STORE_set1_param                   3563	1_1_0	EXIST::FUNCTION: +RAND_file_name                          3564	1_1_0	EXIST::FUNCTION: +EVP_CipherInit_ex                       3566	1_1_0	EXIST::FUNCTION: +BIO_dgram_sctp_notification_cb          3567	1_1_0	EXIST::FUNCTION:DGRAM,SCTP +ERR_load_RAND_strings                   3568	1_1_0	EXIST::FUNCTION: +X509_ATTRIBUTE_it                       3569	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_ATTRIBUTE_it                       3569	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +X509_ALGOR_it                           3570	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_ALGOR_it                           3570	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OCSP_CRLID_free                         3571	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_ccm128_aad                       3572	1_1_0	EXIST::FUNCTION: +IPAddressFamily_new                     3573	1_1_0	EXIST::FUNCTION:RFC3779 +d2i_TS_ACCURACY                         3574	1_1_0	EXIST::FUNCTION:TS +X509_load_crl_file                      3575	1_1_0	EXIST::FUNCTION: +SXNET_add_id_ulong                      3576	1_1_0	EXIST::FUNCTION: +EVP_camellia_256_cbc                    3577	1_1_0	EXIST::FUNCTION:CAMELLIA +i2d_PROXY_POLICY                        3578	1_1_0	EXIST::FUNCTION: +X509_subject_name_hash_old              3579	1_1_0	EXIST::FUNCTION:MD5 +PEM_read_bio_DSA_PUBKEY                 3580	1_1_0	EXIST::FUNCTION:DSA +OCSP_cert_to_id                         3581	1_1_0	EXIST::FUNCTION:OCSP +PEM_write_DSAparams                     3582	1_1_0	EXIST::FUNCTION:DSA,STDIO +ASN1_TIME_to_generalizedtime            3583	1_1_0	EXIST::FUNCTION: +X509_CRL_get_ext_by_critical            3584	1_1_0	EXIST::FUNCTION: +ASN1_STRING_type                        3585	1_1_0	EXIST::FUNCTION: +X509_REQ_add1_attr_by_txt               3586	1_1_0	EXIST::FUNCTION: +PEM_write_RSAPublicKey                  3587	1_1_0	EXIST::FUNCTION:RSA,STDIO +EVP_MD_meth_dup                         3588	1_1_0	EXIST::FUNCTION: +ENGINE_unregister_ciphers               3589	1_1_0	EXIST::FUNCTION:ENGINE +X509_issuer_and_serial_cmp              3590	1_1_0	EXIST::FUNCTION: +OCSP_response_create                    3591	1_1_0	EXIST::FUNCTION:OCSP +SHA224                                  3592	1_1_0	EXIST::FUNCTION: +MD2_options                             3593	1_1_0	EXIST::FUNCTION:MD2 +X509_REQ_it                             3595	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +X509_REQ_it                             3595	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +RAND_bytes                              3596	1_1_0	EXIST::FUNCTION: +PKCS7_free                              3597	1_1_0	EXIST::FUNCTION: +X509_NAME_ENTRY_create_by_txt           3598	1_1_0	EXIST::FUNCTION: +DES_cbc_cksum                           3599	1_1_0	EXIST::FUNCTION:DES +UI_free                                 3600	1_1_0	EXIST::FUNCTION:UI +BN_is_prime                             3601	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_0_9_8 +CMS_get0_signers                        3602	1_1_0	EXIST::FUNCTION:CMS +i2d_PrivateKey_fp                       3603	1_1_0	EXIST::FUNCTION:STDIO +OTHERNAME_cmp                           3604	1_1_0	EXIST::FUNCTION: +SMIME_write_PKCS7                       3605	1_1_0	EXIST::FUNCTION: +EC_KEY_set_public_key                   3606	1_1_0	EXIST::FUNCTION:EC +d2i_X509_EXTENSION                      3607	1_1_0	EXIST::FUNCTION: +CMS_add1_recipient_cert                 3608	1_1_0	EXIST::FUNCTION:CMS +CMS_RecipientInfo_kekri_get0_id         3609	1_1_0	EXIST::FUNCTION:CMS +BN_mod_word                             3610	1_1_0	EXIST::FUNCTION: +ASN1_PCTX_new                           3611	1_1_0	EXIST::FUNCTION: +BN_is_prime_ex                          3612	1_1_0	EXIST::FUNCTION: +PKCS5_v2_PBE_keyivgen                   3613	1_1_0	EXIST::FUNCTION: +CRYPTO_ctr128_encrypt                   3614	1_1_0	EXIST::FUNCTION: +CMS_unsigned_add1_attr_by_OBJ           3615	1_1_0	EXIST::FUNCTION:CMS +PEM_write_EC_PUBKEY                     3616	1_1_0	EXIST::FUNCTION:EC,STDIO +X509v3_asid_add_inherit                 3617	1_1_0	EXIST::FUNCTION:RFC3779 +ERR_get_error                           3618	1_1_0	EXIST::FUNCTION: +TS_CONF_set_signer_digest               3619	1_1_0	EXIST::FUNCTION:TS +OBJ_new_nid                             3620	1_1_0	EXIST::FUNCTION: +CMS_ReceiptRequest_new                  3621	1_1_0	EXIST::FUNCTION:CMS +SRP_VBASE_get1_by_user                  3622	1_1_0	EXIST::FUNCTION:SRP +UI_method_get_closer                    3623	1_1_0	EXIST::FUNCTION:UI +ENGINE_get_ex_data                      3624	1_1_0	EXIST::FUNCTION:ENGINE +BN_print_fp                             3625	1_1_0	EXIST::FUNCTION:STDIO +MD2_Update                              3626	1_1_0	EXIST::FUNCTION:MD2 +ENGINE_free                             3628	1_1_0	EXIST::FUNCTION:ENGINE +d2i_X509_ATTRIBUTE                      3629	1_1_0	EXIST::FUNCTION: +TS_RESP_free                            3630	1_1_0	EXIST::FUNCTION:TS +PKCS5_pbe_set                           3631	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_free                        3632	1_1_0	EXIST::FUNCTION:TS +d2i_PUBKEY                              3633	1_1_0	EXIST::FUNCTION: +ASYNC_cleanup_thread                    3634	1_1_0	EXIST::FUNCTION: +SHA384_Update                           3635	1_1_0	EXIST::FUNCTION: +CRYPTO_cfb128_1_encrypt                 3636	1_1_0	EXIST::FUNCTION: +BIO_set_cipher                          3637	1_1_0	EXIST::FUNCTION: +PEM_read_PUBKEY                         3638	1_1_0	EXIST::FUNCTION:STDIO +RSA_PKCS1_OpenSSL                       3639	1_1_0	EXIST::FUNCTION:RSA +AUTHORITY_INFO_ACCESS_free              3640	1_1_0	EXIST::FUNCTION: +SCT_get0_signature                      3641	1_1_0	EXIST::FUNCTION:CT +DISPLAYTEXT_it                          3643	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +DISPLAYTEXT_it                          3643	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +OPENSSL_gmtime_adj                      3644	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_dup                        3645	1_1_0	EXIST::FUNCTION: +DSA_print                               3646	1_1_0	EXIST::FUNCTION:DSA +X509_REQ_set_extension_nids             3647	1_1_0	EXIST::FUNCTION: +X509_free                               3648	1_1_0	EXIST::FUNCTION: +ERR_load_ERR_strings                    3649	1_1_0	EXIST::FUNCTION: +ASN1_const_check_infinite_end           3650	1_1_0	EXIST::FUNCTION: +RSA_null_method                         3651	1_1_0	EXIST::FUNCTION:RSA +TS_REQ_ext_free                         3652	1_1_0	EXIST::FUNCTION:TS +EVP_PKEY_meth_get_encrypt               3653	1_1_0	EXIST::FUNCTION: +Camellia_ecb_encrypt                    3654	1_1_0	EXIST::FUNCTION:CAMELLIA +ENGINE_set_default_RSA                  3655	1_1_0	EXIST::FUNCTION:ENGINE +EVP_EncodeBlock                         3656	1_1_0	EXIST::FUNCTION: +SXNETID_free                            3657	1_1_0	EXIST::FUNCTION: +SHA1_Init                               3658	1_1_0	EXIST::FUNCTION: +CRYPTO_atomic_add                       3659	1_1_0	EXIST::FUNCTION: +TS_CONF_load_certs                      3660	1_1_0	EXIST::FUNCTION:TS +PEM_write_bio_DSAPrivateKey             3661	1_1_0	EXIST::FUNCTION:DSA +CMS_encrypt                             3662	1_1_0	EXIST::FUNCTION:CMS +CRYPTO_nistcts128_decrypt               3663	1_1_0	EXIST::FUNCTION: +ERR_load_DH_strings                     3664	1_1_0	EXIST::FUNCTION:DH +EVP_MD_block_size                       3665	1_1_0	EXIST::FUNCTION: +TS_X509_ALGOR_print_bio                 3666	1_1_0	EXIST::FUNCTION:TS +d2i_PKCS7_ENVELOPE                      3667	1_1_0	EXIST::FUNCTION: +ESS_CERT_ID_new                         3669	1_1_0	EXIST::FUNCTION:TS +EC_POINT_invert                         3670	1_1_0	EXIST::FUNCTION:EC +CAST_set_key                            3671	1_1_0	EXIST::FUNCTION:CAST +ENGINE_get_pkey_meth                    3672	1_1_0	EXIST::FUNCTION:ENGINE +BIO_ADDRINFO_free                       3673	1_1_0	EXIST::FUNCTION:SOCK +DES_ede3_cbc_encrypt                    3674	1_1_0	EXIST::FUNCTION:DES +X509v3_asid_canonize                    3675	1_1_0	EXIST::FUNCTION:RFC3779 +i2d_ASIdOrRange                         3676	1_1_0	EXIST::FUNCTION:RFC3779 +OCSP_url_svcloc_new                     3677	1_1_0	EXIST::FUNCTION:OCSP +CRYPTO_mem_ctrl                         3678	1_1_0	EXIST::FUNCTION: +ASN1_verify                             3679	1_1_0	EXIST::FUNCTION: +DSA_generate_parameters_ex              3680	1_1_0	EXIST::FUNCTION:DSA +X509_sign                               3681	1_1_0	EXIST::FUNCTION: +SHA256_Transform                        3682	1_1_0	EXIST::FUNCTION: +BIO_ADDR_free                           3683	1_1_0	EXIST::FUNCTION:SOCK +ASN1_STRING_free                        3684	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_inherit               3685	1_1_0	EXIST::FUNCTION: +EC_GROUP_get_curve_name                 3686	1_1_0	EXIST::FUNCTION:EC +RSA_print                               3687	1_1_0	EXIST::FUNCTION:RSA +i2d_ASN1_BMPSTRING                      3688	1_1_0	EXIST::FUNCTION: +EVP_PKEY_decrypt_old                    3689	1_1_0	EXIST::FUNCTION: +ASN1_UTCTIME_cmp_time_t                 3690	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_set1_ip               3691	1_1_0	EXIST::FUNCTION: +OTHERNAME_free                          3692	1_1_0	EXIST::FUNCTION: +OCSP_REVOKEDINFO_free                   3693	1_1_0	EXIST::FUNCTION:OCSP +EVP_CIPHER_CTX_encrypting               3694	1_1_0	EXIST::FUNCTION: +EC_KEY_can_sign                         3695	1_1_0	EXIST::FUNCTION:EC +PEM_write_bio_RSAPublicKey              3696	1_1_0	EXIST::FUNCTION:RSA +X509_CRL_set1_lastUpdate                3697	1_1_0	EXIST::FUNCTION: +OCSP_sendreq_nbio                       3698	1_1_0	EXIST::FUNCTION:OCSP +PKCS8_encrypt                           3699	1_1_0	EXIST::FUNCTION: +i2d_PKCS7_fp                            3700	1_1_0	EXIST::FUNCTION:STDIO +i2d_X509_REQ                            3701	1_1_0	EXIST::FUNCTION: +OCSP_CRLID_it                           3702	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_CRLID_it                           3702	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +PEM_ASN1_write_bio                      3703	1_1_0	EXIST::FUNCTION: +X509_get0_reject_objects                3704	1_1_0	EXIST::FUNCTION: +BIO_set_tcp_ndelay                      3705	1_1_0	EXIST::FUNCTION:SOCK +CMS_add0_CertificateChoices             3706	1_1_0	EXIST::FUNCTION:CMS +POLICYINFO_new                          3707	1_1_0	EXIST::FUNCTION: +X509_CRL_get0_by_serial                 3708	1_1_0	EXIST::FUNCTION: +PKCS12_add_friendlyname_asc             3709	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get1_chain               3710	1_1_0	EXIST::FUNCTION: +ASN1_mbstring_ncopy                     3711	1_1_0	EXIST::FUNCTION: +PKCS7_RECIP_INFO_it                     3712	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_RECIP_INFO_it                     3712	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ENGINE_register_all_digests             3713	1_1_0	EXIST::FUNCTION:ENGINE +X509_REQ_get_version                    3714	1_1_0	EXIST::FUNCTION: +i2d_ASN1_UTCTIME                        3715	1_1_0	EXIST::FUNCTION: +TS_STATUS_INFO_new                      3716	1_1_0	EXIST::FUNCTION:TS +UI_set_ex_data                          3717	1_1_0	EXIST::FUNCTION:UI +ASN1_TIME_set                           3718	1_1_0	EXIST::FUNCTION: +TS_RESP_verify_response                 3719	1_1_0	EXIST::FUNCTION:TS +X509_REVOKED_get0_serialNumber          3720	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_free                  3721	1_1_0	EXIST::FUNCTION: +ASN1_TYPE_new                           3722	1_1_0	EXIST::FUNCTION: +CMAC_CTX_cleanup                        3723	1_1_0	EXIST::FUNCTION:CMAC +i2d_PKCS7_NDEF                          3724	1_1_0	EXIST::FUNCTION: +OPENSSL_sk_pop_free                     3725	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_policy_tree         3726	1_1_0	EXIST::FUNCTION: +DES_set_key_checked                     3727	1_1_0	EXIST::FUNCTION:DES +EVP_PKEY_meth_free                      3728	1_1_0	EXIST::FUNCTION: +EVP_sha224                              3729	1_1_0	EXIST::FUNCTION: +ENGINE_set_id                           3730	1_1_0	EXIST::FUNCTION:ENGINE +d2i_ECPrivateKey                        3731	1_1_0	EXIST::FUNCTION:EC +CMS_signed_add1_attr_by_NID             3732	1_1_0	EXIST::FUNCTION:CMS +i2d_DSAPrivateKey_fp                    3733	1_1_0	EXIST::FUNCTION:DSA,STDIO +EVP_CIPHER_meth_get_set_asn1_params     3734	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_ex_data              3735	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_kari_set0_pkey        3736	1_1_0	EXIST::FUNCTION:CMS +X509v3_addr_add_inherit                 3737	1_1_0	EXIST::FUNCTION:RFC3779 +SRP_Calc_u                              3738	1_1_0	EXIST::FUNCTION:SRP +i2d_PKCS8PrivateKey_bio                 3739	1_1_0	EXIST::FUNCTION: +X509_get_extension_flags                3740	1_1_0	EXIST::FUNCTION: +X509V3_EXT_val_prn                      3741	1_1_0	EXIST::FUNCTION: +SCT_get_validation_status               3742	1_1_0	EXIST::FUNCTION:CT +NETSCAPE_CERT_SEQUENCE_free             3743	1_1_0	EXIST::FUNCTION: +EVP_PBE_scrypt                          3744	1_1_0	EXIST::FUNCTION:SCRYPT +d2i_TS_REQ_bio                          3745	1_1_0	EXIST::FUNCTION:TS +ENGINE_set_default_ciphers              3746	1_1_0	EXIST::FUNCTION:ENGINE +X509_get_signature_nid                  3747	1_1_0	EXIST::FUNCTION: +DES_fcrypt                              3748	1_1_0	EXIST::FUNCTION:DES +PEM_write_bio_X509_REQ                  3749	1_1_0	EXIST::FUNCTION: +EVP_PKEY_meth_get_sign                  3750	1_1_0	EXIST::FUNCTION: +TS_REQ_get_nonce                        3751	1_1_0	EXIST::FUNCTION:TS +ENGINE_unregister_EC                    3752	1_1_0	EXIST::FUNCTION:ENGINE +X509v3_get_ext_count                    3753	1_1_0	EXIST::FUNCTION: +UI_OpenSSL                              3754	1_1_0	EXIST::FUNCTION:UI +CRYPTO_ccm128_decrypt                   3755	1_1_0	EXIST::FUNCTION: +d2i_OCSP_RESPDATA                       3756	1_1_0	EXIST::FUNCTION:OCSP +BIO_set_callback                        3757	1_1_0	EXIST::FUNCTION: +BN_GF2m_poly2arr                        3758	1_1_0	EXIST::FUNCTION:EC2M +CMS_unsigned_get_attr_count             3759	1_1_0	EXIST::FUNCTION:CMS +EVP_aes_256_gcm                         3760	1_1_0	EXIST::FUNCTION: +RSA_padding_check_X931                  3761	1_1_0	EXIST::FUNCTION:RSA +ECDH_compute_key                        3762	1_1_0	EXIST::FUNCTION:EC +ASN1_TIME_print                         3763	1_1_0	EXIST::FUNCTION: +EVP_PKEY_CTX_get0_peerkey               3764	1_1_0	EXIST::FUNCTION: +BN_mod_lshift1                          3765	1_1_0	EXIST::FUNCTION: +BIO_ADDRINFO_family                     3766	1_1_0	EXIST::FUNCTION:SOCK +PEM_write_DHxparams                     3767	1_1_0	EXIST::FUNCTION:DH,STDIO +BN_mod_exp2_mont                        3768	1_1_0	EXIST::FUNCTION: +ASN1_PRINTABLE_free                     3769	1_1_0	EXIST::FUNCTION: +PKCS7_ATTR_SIGN_it                      3771	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKCS7_ATTR_SIGN_it                      3771	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +EVP_MD_CTX_copy                         3772	1_1_0	EXIST::FUNCTION: +ENGINE_set_ctrl_function                3773	1_1_0	EXIST::FUNCTION:ENGINE +OCSP_id_get0_info                       3774	1_1_0	EXIST::FUNCTION:OCSP +BIO_ADDRINFO_next                       3775	1_1_0	EXIST::FUNCTION:SOCK +OCSP_RESPBYTES_free                     3776	1_1_0	EXIST::FUNCTION:OCSP +EC_KEY_METHOD_set_init                  3777	1_1_0	EXIST::FUNCTION:EC +EVP_PKEY_asn1_copy                      3778	1_1_0	EXIST::FUNCTION: +RSA_PSS_PARAMS_it                       3779	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA +RSA_PSS_PARAMS_it                       3779	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA +X509_STORE_CTX_get_error_depth          3780	1_1_0	EXIST::FUNCTION: +ASN1_GENERALIZEDTIME_set_string         3781	1_1_0	EXIST::FUNCTION: +EC_GROUP_new_curve_GFp                  3782	1_1_0	EXIST::FUNCTION:EC +UI_new_method                           3783	1_1_0	EXIST::FUNCTION:UI +Camellia_ofb128_encrypt                 3784	1_1_0	EXIST::FUNCTION:CAMELLIA +X509_new                                3785	1_1_0	EXIST::FUNCTION: +EC_KEY_get_conv_form                    3786	1_1_0	EXIST::FUNCTION:EC +CTLOG_STORE_get0_log_by_id              3787	1_1_0	EXIST::FUNCTION:CT +CMS_signed_add1_attr                    3788	1_1_0	EXIST::FUNCTION:CMS +EVP_CIPHER_meth_set_iv_length           3789	1_1_0	EXIST::FUNCTION: +X509v3_asid_validate_path               3790	1_1_0	EXIST::FUNCTION:RFC3779 +CMS_RecipientInfo_set0_password         3791	1_1_0	EXIST::FUNCTION:CMS +TS_CONF_load_cert                       3792	1_1_0	EXIST::FUNCTION:TS +i2d_ECPKParameters                      3793	1_1_0	EXIST::FUNCTION:EC +X509_TRUST_get0                         3794	1_1_0	EXIST::FUNCTION: +CMS_get0_RecipientInfos                 3795	1_1_0	EXIST::FUNCTION:CMS +EVP_PKEY_CTX_new                        3796	1_1_0	EXIST::FUNCTION: +i2d_DSA_PUBKEY_bio                      3797	1_1_0	EXIST::FUNCTION:DSA +X509_REQ_get_subject_name               3798	1_1_0	EXIST::FUNCTION: +BN_div_word                             3799	1_1_0	EXIST::FUNCTION: +TS_CONF_set_signer_key                  3800	1_1_0	EXIST::FUNCTION:TS +BN_GF2m_mod_sqrt                        3801	1_1_0	EXIST::FUNCTION:EC2M +EVP_CIPHER_nid                          3802	1_1_0	EXIST::FUNCTION: +OBJ_txt2obj                             3803	1_1_0	EXIST::FUNCTION: +CMS_RecipientInfo_kari_get0_orig_id     3804	1_1_0	EXIST::FUNCTION:CMS +EVP_bf_ecb                              3805	1_1_0	EXIST::FUNCTION:BF +v2i_GENERAL_NAME_ex                     3806	1_1_0	EXIST::FUNCTION: +CMS_signed_delete_attr                  3807	1_1_0	EXIST::FUNCTION:CMS +ASN1_TYPE_pack_sequence                 3808	1_1_0	EXIST::FUNCTION: +USERNOTICE_it                           3809	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +USERNOTICE_it                           3809	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +PKEY_USAGE_PERIOD_it                    3810	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +PKEY_USAGE_PERIOD_it                    3810	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +BN_mul_word                             3811	1_1_0	EXIST::FUNCTION: +i2d_IPAddressRange                      3813	1_1_0	EXIST::FUNCTION:RFC3779 +CMS_unsigned_add1_attr_by_txt           3814	1_1_0	EXIST::FUNCTION:CMS +d2i_RSA_PUBKEY                          3815	1_1_0	EXIST::FUNCTION:RSA +PKCS12_gen_mac                          3816	1_1_0	EXIST::FUNCTION: +ERR_load_ENGINE_strings                 3817	1_1_0	EXIST::FUNCTION:ENGINE +ERR_load_CT_strings                     3818	1_1_0	EXIST::FUNCTION:CT +OCSP_ONEREQ_it                          3819	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_ONEREQ_it                          3819	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +X509_PURPOSE_get_by_sname               3820	1_1_0	EXIST::FUNCTION: +X509_PURPOSE_set                        3821	1_1_0	EXIST::FUNCTION: +BN_mod_inverse                          3822	1_1_0	EXIST::FUNCTION: +ASN1_STRING_TABLE_get                   3823	1_1_0	EXIST::FUNCTION: +BN_bn2binpad                            3824	1_1_0	EXIST::FUNCTION: +X509_supported_extension                3825	1_1_0	EXIST::FUNCTION: +ECDSA_sign_setup                        3826	1_1_0	EXIST::FUNCTION:EC +EVP_camellia_192_cfb128                 3827	1_1_0	EXIST::FUNCTION:CAMELLIA +d2i_AUTHORITY_KEYID                     3828	1_1_0	EXIST::FUNCTION: +RIPEMD160_Transform                     3829	1_1_0	EXIST::FUNCTION:RMD160 +DES_random_key                          3830	1_1_0	EXIST::FUNCTION:DES +i2d_PKCS12_MAC_DATA                     3831	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get0_EC_KEY                    3832	1_1_0	EXIST::FUNCTION:EC +ASN1_SCTX_get_item                      3833	1_1_0	EXIST::FUNCTION: +NOTICEREF_new                           3834	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod_inv                         3835	1_1_0	EXIST::FUNCTION:EC2M +X509_CERT_AUX_free                      3836	1_1_0	EXIST::FUNCTION: +BN_GF2m_mod_inv_arr                     3837	1_1_0	EXIST::FUNCTION:EC2M +X509_REQ_get1_email                     3838	1_1_0	EXIST::FUNCTION: +EC_KEY_print                            3839	1_1_0	EXIST::FUNCTION:EC +i2d_ASN1_INTEGER                        3840	1_1_0	EXIST::FUNCTION: +OCSP_SINGLERESP_add1_ext_i2d            3841	1_1_0	EXIST::FUNCTION:OCSP +PKCS7_add_signed_attribute              3842	1_1_0	EXIST::FUNCTION: +i2d_PrivateKey_bio                      3843	1_1_0	EXIST::FUNCTION: +RSA_padding_add_PKCS1_type_1            3844	1_1_0	EXIST::FUNCTION:RSA +i2d_re_X509_tbs                         3845	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_iv_length                    3846	1_1_0	EXIST::FUNCTION: +OCSP_REQ_CTX_get0_mem_bio               3847	1_1_0	EXIST::FUNCTION:OCSP +i2d_PKCS8PrivateKeyInfo_bio             3848	1_1_0	EXIST::FUNCTION: +d2i_OCSP_CERTID                         3849	1_1_0	EXIST::FUNCTION:OCSP +EVP_CIPHER_meth_set_init                3850	1_1_0	EXIST::FUNCTION: +RIPEMD160_Final                         3851	1_1_0	EXIST::FUNCTION:RMD160 +NETSCAPE_SPKI_free                      3852	1_1_0	EXIST::FUNCTION: +BIO_asn1_get_prefix                     3853	1_1_0	EXIST::FUNCTION: +d2i_OCSP_ONEREQ                         3854	1_1_0	EXIST::FUNCTION:OCSP +EVP_PKEY_asn1_set_security_bits         3855	1_1_0	EXIST::FUNCTION: +i2d_CERTIFICATEPOLICIES                 3856	1_1_0	EXIST::FUNCTION: +i2d_X509_CERT_AUX                       3857	1_1_0	EXIST::FUNCTION: +i2o_ECPublicKey                         3858	1_1_0	EXIST::FUNCTION:EC +PKCS12_SAFEBAG_create0_pkcs8            3859	1_1_0	EXIST::FUNCTION: +OBJ_get0_data                           3860	1_1_0	EXIST::FUNCTION: +EC_GROUP_get0_seed                      3861	1_1_0	EXIST::FUNCTION:EC +OCSP_REQUEST_it                         3862	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_REQUEST_it                         3862	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +ASRange_it                              3863	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779 +ASRange_it                              3863	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779 +i2d_TS_RESP                             3864	1_1_0	EXIST::FUNCTION:TS +TS_TST_INFO_get_ext_by_OBJ              3865	1_1_0	EXIST::FUNCTION:TS +d2i_PKCS7_RECIP_INFO                    3866	1_1_0	EXIST::FUNCTION: +d2i_X509_CRL                            3867	1_1_0	EXIST::FUNCTION: +ASN1_OCTET_STRING_dup                   3868	1_1_0	EXIST::FUNCTION: +CRYPTO_nistcts128_decrypt_block         3869	1_1_0	EXIST::FUNCTION: +CMS_stream                              3870	1_1_0	EXIST::FUNCTION:CMS +RSA_OAEP_PARAMS_it                      3871	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA +RSA_OAEP_PARAMS_it                      3871	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA +BN_bn2mpi                               3872	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_cleanup                  3873	1_1_0	EXIST::FUNCTION: +OCSP_onereq_get0_id                     3874	1_1_0	EXIST::FUNCTION:OCSP +X509_get_default_cert_dir               3875	1_1_0	EXIST::FUNCTION: +PROXY_POLICY_free                       3877	1_1_0	EXIST::FUNCTION: +PEM_write_DSAPrivateKey                 3878	1_1_0	EXIST::FUNCTION:DSA,STDIO +OPENSSL_sk_delete_ptr                   3879	1_1_0	EXIST::FUNCTION: +CMS_add0_RevocationInfoChoice           3880	1_1_0	EXIST::FUNCTION:CMS +ASN1_PCTX_get_flags                     3881	1_1_0	EXIST::FUNCTION: +EVP_MD_meth_set_result_size             3882	1_1_0	EXIST::FUNCTION: +i2d_X509_CRL                            3883	1_1_0	EXIST::FUNCTION: +ASN1_INTEGER_it                         3885	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ASN1_INTEGER_it                         3885	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +TS_ACCURACY_new                         3886	1_1_0	EXIST::FUNCTION:TS +i2d_SXNETID                             3887	1_1_0	EXIST::FUNCTION: +BN_mod_mul_montgomery                   3888	1_1_0	EXIST::FUNCTION: +BN_nnmod                                3889	1_1_0	EXIST::FUNCTION: +TS_RESP_CTX_set_status_info_cond        3890	1_1_0	EXIST::FUNCTION:TS +PBKDF2PARAM_new                         3891	1_1_0	EXIST::FUNCTION: +ENGINE_set_RSA                          3892	1_1_0	EXIST::FUNCTION:ENGINE +i2d_X509_ATTRIBUTE                      3893	1_1_0	EXIST::FUNCTION: +PKCS7_ctrl                              3894	1_1_0	EXIST::FUNCTION: +OCSP_REVOKEDINFO_it                     3895	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:OCSP +OCSP_REVOKEDINFO_it                     3895	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:OCSP +X509V3_set_ctx                          3896	1_1_0	EXIST::FUNCTION: +ASN1_ENUMERATED_set_int64               3897	1_1_0	EXIST::FUNCTION: +o2i_SCT                                 3898	1_1_0	EXIST::FUNCTION:CT +CRL_DIST_POINTS_free                    3899	1_1_0	EXIST::FUNCTION: +d2i_OCSP_SINGLERESP                     3900	1_1_0	EXIST::FUNCTION:OCSP +EVP_CIPHER_CTX_num                      3901	1_1_0	EXIST::FUNCTION: +EVP_PKEY_verify_recover_init            3902	1_1_0	EXIST::FUNCTION: +SHA512_Init                             3903	1_1_0	EXIST::FUNCTION: +TS_MSG_IMPRINT_set_msg                  3904	1_1_0	EXIST::FUNCTION:TS +CMS_unsigned_add1_attr                  3905	1_1_0	EXIST::FUNCTION:CMS +OPENSSL_LH_doall                        3906	1_1_0	EXIST::FUNCTION: +PKCS8_pkey_get0_attrs                   3907	1_1_0	EXIST::FUNCTION: +PKCS8_pkey_add1_attr_by_NID             3908	1_1_0	EXIST::FUNCTION: +ASYNC_is_capable                        3909	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_set_cipher_data          3910	1_1_0	EXIST::FUNCTION: +EVP_CIPHER_CTX_get_cipher_data          3911	1_1_0	EXIST::FUNCTION: +BIO_up_ref                              3912	1_1_0	EXIST::FUNCTION: +X509_STORE_up_ref                       3913	1_1_0	EXIST::FUNCTION: +DSA_SIG_get0                            3914	1_1_0	EXIST::FUNCTION:DSA +BN_BLINDING_is_current_thread           3915	1_1_0	EXIST::FUNCTION: +BN_BLINDING_set_current_thread          3916	1_1_0	EXIST::FUNCTION: +BN_BLINDING_lock                        3917	1_1_0	EXIST::FUNCTION: +BN_BLINDING_unlock                      3918	1_1_0	EXIST::FUNCTION: +EC_GROUP_new_from_ecpkparameters        3919	1_1_0	EXIST::FUNCTION:EC +EC_GROUP_get_ecpkparameters             3920	1_1_0	EXIST::FUNCTION:EC +EC_GROUP_new_from_ecparameters          3921	1_1_0	EXIST::FUNCTION:EC +ECPARAMETERS_it                         3922	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:EC +ECPARAMETERS_it                         3922	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:EC +ECPKPARAMETERS_it                       3923	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:EC +ECPKPARAMETERS_it                       3923	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:EC +EC_GROUP_get_ecparameters               3924	1_1_0	EXIST::FUNCTION:EC +DHparams_it                             3925	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DH +DHparams_it                             3925	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DH +EVP_blake2s256                          3926	1_1_0	EXIST::FUNCTION:BLAKE2 +EVP_blake2b512                          3927	1_1_0	EXIST::FUNCTION:BLAKE2 +X509_SIG_get0                           3928	1_1_0	EXIST::FUNCTION: +BIO_meth_new                            3929	1_1_0	EXIST::FUNCTION: +BIO_meth_get_puts                       3930	1_1_0	EXIST::FUNCTION: +BIO_meth_get_ctrl                       3931	1_1_0	EXIST::FUNCTION: +BIO_meth_get_gets                       3932	1_1_0	EXIST::FUNCTION: +BIO_get_data                            3933	1_1_0	EXIST::FUNCTION: +BIO_set_init                            3934	1_1_0	EXIST::FUNCTION: +BIO_meth_set_puts                       3935	1_1_0	EXIST::FUNCTION: +BIO_get_shutdown                        3936	1_1_0	EXIST::FUNCTION: +BIO_get_init                            3937	1_1_0	EXIST::FUNCTION: +BIO_meth_set_ctrl                       3938	1_1_0	EXIST::FUNCTION: +BIO_meth_set_read                       3939	1_1_0	EXIST::FUNCTION: +BIO_set_shutdown                        3940	1_1_0	EXIST::FUNCTION: +BIO_meth_set_create                     3941	1_1_0	EXIST::FUNCTION: +BIO_meth_get_write                      3942	1_1_0	EXIST::FUNCTION: +BIO_meth_set_callback_ctrl              3943	1_1_0	EXIST::FUNCTION: +BIO_meth_get_create                     3944	1_1_0	EXIST::FUNCTION: +BIO_set_next                            3945	1_1_0	EXIST::FUNCTION: +BIO_set_data                            3946	1_1_0	EXIST::FUNCTION: +BIO_meth_set_write                      3947	1_1_0	EXIST::FUNCTION: +BIO_meth_set_destroy                    3948	1_1_0	EXIST::FUNCTION: +BIO_meth_set_gets                       3949	1_1_0	EXIST::FUNCTION: +BIO_meth_get_callback_ctrl              3950	1_1_0	EXIST::FUNCTION: +BIO_meth_get_destroy                    3951	1_1_0	EXIST::FUNCTION: +BIO_meth_get_read                       3952	1_1_0	EXIST::FUNCTION: +BIO_set_retry_reason                    3953	1_1_0	EXIST::FUNCTION: +BIO_meth_free                           3954	1_1_0	EXIST::FUNCTION: +DSA_meth_set_bn_mod_exp                 3955	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_init                       3956	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_free                           3957	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_mod_exp                    3958	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_sign                       3959	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_finish                     3960	1_1_0	EXIST::FUNCTION:DSA +DSA_set_flags                           3961	1_1_0	EXIST::FUNCTION:DSA +DSA_get0_pqg                            3962	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get0_app_data                  3963	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_keygen                     3964	1_1_0	EXIST::FUNCTION:DSA +DSA_clear_flags                         3965	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get0_name                      3966	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_paramgen                   3967	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_sign                       3968	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_paramgen                   3969	1_1_0	EXIST::FUNCTION:DSA +DSA_test_flags                          3970	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set0_app_data                  3971	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set1_name                      3972	1_1_0	EXIST::FUNCTION:DSA +DSA_get0_key                            3973	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_mod_exp                    3974	1_1_0	EXIST::FUNCTION:DSA +DSA_set0_pqg                            3975	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_flags                      3976	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_verify                     3977	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_verify                     3978	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_finish                     3979	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_keygen                     3980	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_dup                            3981	1_1_0	EXIST::FUNCTION:DSA +DSA_set0_key                            3982	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_init                       3983	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_sign_setup                 3984	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_bn_mod_exp                 3985	1_1_0	EXIST::FUNCTION:DSA +DSA_get_method                          3986	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_new                            3987	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_set_flags                      3988	1_1_0	EXIST::FUNCTION:DSA +DSA_meth_get_sign_setup                 3989	1_1_0	EXIST::FUNCTION:DSA +DSA_get0_engine                         3990	1_1_0	EXIST::FUNCTION:DSA +X509_VERIFY_PARAM_set_auth_level        3991	1_1_0	EXIST::FUNCTION: +X509_VERIFY_PARAM_get_auth_level        3992	1_1_0	EXIST::FUNCTION: +X509_REQ_get0_pubkey                    3993	1_1_0	EXIST::FUNCTION: +RSA_set0_key                            3994	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_flags                      3995	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_finish                     3996	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_priv_dec                   3997	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_sign                       3998	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_bn_mod_exp                 3999	1_1_0	EXIST::FUNCTION:RSA +RSA_test_flags                          4000	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_new                            4001	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get0_app_data                  4002	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_dup                            4003	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set1_name                      4004	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set0_app_data                  4005	1_1_0	EXIST::FUNCTION:RSA +RSA_set_flags                           4006	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_sign                       4007	1_1_0	EXIST::FUNCTION:RSA +RSA_clear_flags                         4008	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_keygen                     4009	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_keygen                     4010	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_pub_dec                    4011	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_finish                     4012	1_1_0	EXIST::FUNCTION:RSA +RSA_get0_key                            4013	1_1_0	EXIST::FUNCTION:RSA +RSA_get0_engine                         4014	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_priv_enc                   4015	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_verify                     4016	1_1_0	EXIST::FUNCTION:RSA +RSA_get0_factors                        4017	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get0_name                      4018	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_mod_exp                    4019	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_flags                      4020	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_pub_dec                    4021	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_bn_mod_exp                 4022	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_init                       4023	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_free                           4024	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_pub_enc                    4025	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_mod_exp                    4026	1_1_0	EXIST::FUNCTION:RSA +RSA_set0_factors                        4027	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_pub_enc                    4028	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_priv_dec                   4029	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_verify                     4030	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_set_init                       4031	1_1_0	EXIST::FUNCTION:RSA +RSA_meth_get_priv_enc                   4032	1_1_0	EXIST::FUNCTION:RSA +RSA_set0_crt_params                     4037	1_1_0	EXIST::FUNCTION:RSA +RSA_get0_crt_params                     4038	1_1_0	EXIST::FUNCTION:RSA +DH_set0_pqg                             4039	1_1_0	EXIST::FUNCTION:DH +DH_clear_flags                          4041	1_1_0	EXIST::FUNCTION:DH +DH_get0_key                             4042	1_1_0	EXIST::FUNCTION:DH +DH_get0_engine                          4043	1_1_0	EXIST::FUNCTION:DH +DH_set0_key                             4044	1_1_0	EXIST::FUNCTION:DH +DH_set_length                           4045	1_1_0	EXIST::FUNCTION:DH +DH_test_flags                           4046	1_1_0	EXIST::FUNCTION:DH +DH_get_length                           4047	1_1_0	EXIST::FUNCTION:DH +DH_get0_pqg                             4048	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_compute_key                 4049	1_1_0	EXIST::FUNCTION:DH +DH_meth_set1_name                       4050	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_init                        4051	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_finish                      4052	1_1_0	EXIST::FUNCTION:DH +DH_meth_get0_name                       4053	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_generate_params             4054	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_compute_key                 4055	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_flags                       4056	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_generate_params             4057	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_flags                       4058	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_finish                      4059	1_1_0	EXIST::FUNCTION:DH +DH_meth_get0_app_data                   4060	1_1_0	EXIST::FUNCTION:DH +DH_meth_set0_app_data                   4061	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_init                        4062	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_bn_mod_exp                  4063	1_1_0	EXIST::FUNCTION:DH +DH_meth_new                             4064	1_1_0	EXIST::FUNCTION:DH +DH_meth_dup                             4065	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_bn_mod_exp                  4066	1_1_0	EXIST::FUNCTION:DH +DH_meth_set_generate_key                4067	1_1_0	EXIST::FUNCTION:DH +DH_meth_free                            4068	1_1_0	EXIST::FUNCTION:DH +DH_meth_get_generate_key                4069	1_1_0	EXIST::FUNCTION:DH +DH_set_flags                            4070	1_1_0	EXIST::FUNCTION:DH +X509_STORE_CTX_get_obj_by_subject       4071	1_1_0	EXIST::FUNCTION: +X509_OBJECT_free                        4072	1_1_0	EXIST::FUNCTION: +X509_OBJECT_get0_X509                   4073	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_untrusted           4074	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_error_depth          4075	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get0_cert                4076	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_verify               4077	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set_current_cert         4078	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_verify               4079	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_verify_cb            4080	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set0_verified_chain      4081	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_set0_untrusted           4082	1_1_0	EXIST::FUNCTION: +OPENSSL_hexchar2int                     4083	1_1_0	EXIST::FUNCTION: +X509_STORE_set_ex_data                  4084	1_1_0	EXIST::FUNCTION: +X509_STORE_get_ex_data                  4085	1_1_0	EXIST::FUNCTION: +X509_STORE_get0_objects                 4086	1_1_0	EXIST::FUNCTION: +X509_OBJECT_get_type                    4087	1_1_0	EXIST::FUNCTION: +X509_STORE_set_verify                   4088	1_1_0	EXIST::FUNCTION: +X509_OBJECT_new                         4089	1_1_0	EXIST::FUNCTION: +X509_STORE_get0_param                   4090	1_1_0	EXIST::FUNCTION: +PEM_write_bio_PrivateKey_traditional    4091	1_1_0	EXIST::FUNCTION: +X509_get_pathlen                        4092	1_1_0	EXIST::FUNCTION: +ECDSA_SIG_set0                          4093	1_1_0	EXIST::FUNCTION:EC +DSA_SIG_set0                            4094	1_1_0	EXIST::FUNCTION:DSA +EVP_PKEY_get0_hmac                      4095	1_1_0	EXIST::FUNCTION: +HMAC_CTX_get_md                         4096	1_1_0	EXIST::FUNCTION: +NAME_CONSTRAINTS_check_CN               4097	1_1_0	EXIST::FUNCTION: +OCSP_resp_get0_id                       4098	1_1_0	EXIST::FUNCTION:OCSP +OCSP_resp_get0_certs                    4099	1_1_0	EXIST::FUNCTION:OCSP +X509_set_proxy_flag                     4100	1_1_0	EXIST::FUNCTION: +EVP_ENCODE_CTX_copy                     4101	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_check_issued         4102	1_1_0	EXIST::FUNCTION: +X509_STORE_set_lookup_certs             4103	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_check_crl            4104	1_1_0	EXIST::FUNCTION: +X509_STORE_get_cleanup                  4105	1_1_0	EXIST::FUNCTION: +X509_STORE_get_lookup_crls              4106	1_1_0	EXIST::FUNCTION: +X509_STORE_get_cert_crl                 4107	1_1_0	EXIST::FUNCTION: +X509_STORE_get_lookup_certs             4108	1_1_0	EXIST::FUNCTION: +X509_STORE_get_check_revocation         4109	1_1_0	EXIST::FUNCTION: +X509_STORE_set_get_crl                  4110	1_1_0	EXIST::FUNCTION: +X509_STORE_set_check_issued             4111	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_check_policy         4112	1_1_0	EXIST::FUNCTION: +X509_STORE_get_check_crl                4113	1_1_0	EXIST::FUNCTION: +X509_STORE_set_check_crl                4114	1_1_0	EXIST::FUNCTION: +X509_STORE_get_check_issued             4115	1_1_0	EXIST::FUNCTION: +X509_STORE_get_get_issuer               4116	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_get_crl              4117	1_1_0	EXIST::FUNCTION: +X509_STORE_set_get_issuer               4118	1_1_0	EXIST::FUNCTION: +X509_STORE_set_cleanup                  4119	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_cleanup              4120	1_1_0	EXIST::FUNCTION: +X509_STORE_get_get_crl                  4121	1_1_0	EXIST::FUNCTION: +X509_STORE_set_check_revocation         4122	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_cert_crl             4123	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_lookup_certs         4124	1_1_0	EXIST::FUNCTION: +X509_STORE_set_check_policy             4125	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_get_issuer           4126	1_1_0	EXIST::FUNCTION: +X509_STORE_get_check_policy             4127	1_1_0	EXIST::FUNCTION: +X509_STORE_set_cert_crl                 4128	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_check_revocation     4129	1_1_0	EXIST::FUNCTION: +X509_STORE_get_verify_cb                4130	1_1_0	EXIST::FUNCTION: +X509_STORE_CTX_get_lookup_crls          4131	1_1_0	EXIST::FUNCTION: +X509_STORE_get_verify                   4132	1_1_0	EXIST::FUNCTION: +X509_STORE_unlock                       4133	1_1_0	EXIST::FUNCTION: +X509_STORE_lock                         4134	1_1_0	EXIST::FUNCTION: +X509_set_proxy_pathlen                  4135	1_1_0	EXIST::FUNCTION: +X509_get_proxy_pathlen                  4136	1_1_0	EXIST::FUNCTION: +DSA_bits                                4137	1_1_0	EXIST::FUNCTION:DSA +EVP_PKEY_set1_tls_encodedpoint          4138	1_1_0	EXIST::FUNCTION: +EVP_PKEY_get1_tls_encodedpoint          4139	1_1_0	EXIST::FUNCTION: +ASN1_STRING_get0_data                   4140	1_1_0	EXIST::FUNCTION: +X509_SIG_getm                           4141	1_1_0	EXIST::FUNCTION: +X509_get0_serialNumber                  4142	1_1_0	EXIST::FUNCTION: +PKCS12_get_attr                         4143	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +X509_CRL_get0_lastUpdate                4144	1_1_0	EXIST::FUNCTION: +X509_get0_notBefore                     4145	1_1_0	EXIST::FUNCTION: +X509_get0_notAfter                      4146	1_1_0	EXIST::FUNCTION: +X509_CRL_get0_nextUpdate                4147	1_1_0	EXIST::FUNCTION: +BIO_get_new_index                       4148	1_1_0	EXIST::FUNCTION: +OPENSSL_utf82uni                        4149	1_1_0	EXIST::FUNCTION: +PKCS12_add_friendlyname_utf8            4150	1_1_0	EXIST::FUNCTION: +OPENSSL_uni2utf8                        4151	1_1_0	EXIST::FUNCTION: +PKCS12_key_gen_utf8                     4152	1_1_0	EXIST::FUNCTION: +ECPKPARAMETERS_free                     4153	1_1_0	EXIST::FUNCTION:EC +ECPARAMETERS_free                       4154	1_1_0	EXIST::FUNCTION:EC +ECPKPARAMETERS_new                      4155	1_1_0	EXIST::FUNCTION:EC +ECPARAMETERS_new                        4156	1_1_0	EXIST::FUNCTION:EC +OCSP_RESPID_set_by_name                 4157	1_1_0a	EXIST::FUNCTION:OCSP +OCSP_RESPID_set_by_key                  4158	1_1_0a	EXIST::FUNCTION:OCSP +OCSP_RESPID_match                       4159	1_1_0a	EXIST::FUNCTION:OCSP +DSO_pathbyaddr                          4170	1_1_0c	EXIST::FUNCTION: +DSO_dsobyaddr                           4171	1_1_0c	EXIST::FUNCTION: +CT_POLICY_EVAL_CTX_get_time             4172	1_1_0d	EXIST::FUNCTION:CT +CT_POLICY_EVAL_CTX_set_time             4173	1_1_0d	EXIST::FUNCTION:CT +X509_VERIFY_PARAM_set_inh_flags         4174	1_1_0d	EXIST::FUNCTION: +X509_VERIFY_PARAM_get_inh_flags         4175	1_1_0d	EXIST::FUNCTION: +X509_VERIFY_PARAM_get_time              4181	1_1_0d	EXIST::FUNCTION: +DH_check_params                         4183	1_1_0d	EXIST::FUNCTION:DH +INT32_it                                4208	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +INT32_it                                4208	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +UINT64_it                               4209	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +UINT64_it                               4209	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ZINT32_it                               4210	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ZINT32_it                               4210	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ZUINT64_it                              4211	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ZUINT64_it                              4211	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +INT64_it                                4212	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +INT64_it                                4212	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ZUINT32_it                              4213	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ZUINT32_it                              4213	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +UINT32_it                               4214	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +UINT32_it                               4214	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +ZINT64_it                               4215	1_1_0f	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: +ZINT64_it                               4215	1_1_0f	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: +CRYPTO_secure_clear_free                4315	1_1_0g	EXIST::FUNCTION: +EVP_PKEY_set1_engine                    4347	1_1_0g	EXIST::FUNCTION:ENGINE +OCSP_resp_get0_signer                   4374	1_1_0h	EXIST::FUNCTION:OCSP +X509_get0_authority_key_id              4448	1_1_0h	EXIST::FUNCTION: diff --git a/openssl-1.1.0h/util/libssl.num b/openssl-1.1.0h/util/libssl.num new file mode 100644 index 0000000..7b9b3c2 --- /dev/null +++ b/openssl-1.1.0h/util/libssl.num @@ -0,0 +1,407 @@ +SSL_get_selected_srtp_profile           1	1_1_0	EXIST::FUNCTION:SRTP +SSL_set_read_ahead                      2	1_1_0	EXIST::FUNCTION: +SSL_set_accept_state                    3	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_cipher_list                 4	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_srp_client_pwd_callback     5	1_1_0	EXIST::FUNCTION:SRP +SSL_copy_session_id                     6	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_srp_password                7	1_1_0	EXIST::FUNCTION:SRP +SSL_shutdown                            8	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_msg_callback                9	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get0_ticket                 11	1_1_0	EXIST::FUNCTION: +SSL_get1_supported_ciphers              12	1_1_0	EXIST::FUNCTION: +SSL_state_string_long                   13	1_1_0	EXIST::FUNCTION: +SSL_CTX_get0_certificate                14	1_1_0	EXIST::FUNCTION: +SSL_SESSION_set_ex_data                 15	1_1_0	EXIST::FUNCTION: +SSL_get_verify_depth                    16	1_1_0	EXIST::FUNCTION: +SSL_get0_dane                           17	1_1_0	EXIST::FUNCTION: +SSL_CTX_sess_get_get_cb                 18	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_default_passwd_cb_userdata  19	1_1_0	EXIST::FUNCTION: +SSL_set_tmp_dh_callback                 20	1_1_0	EXIST::FUNCTION:DH +SSL_CTX_get_verify_depth                21	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_RSAPrivateKey_file          22	1_1_0	EXIST::FUNCTION:RSA +SSL_use_PrivateKey_file                 23	1_1_0	EXIST::FUNCTION: +SSL_set_generate_session_id             24	1_1_0	EXIST::FUNCTION: +SSL_get_ex_data_X509_STORE_CTX_idx      25	1_1_0	EXIST::FUNCTION: +SSL_get_quiet_shutdown                  26	1_1_0	EXIST::FUNCTION: +SSL_dane_enable                         27	1_1_0	EXIST::FUNCTION: +SSL_COMP_add_compression_method         28	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_RSAPrivateKey               29	1_1_0	EXIST::FUNCTION:RSA +SSL_CTX_sess_get_new_cb                 30	1_1_0	EXIST::FUNCTION: +d2i_SSL_SESSION                         31	1_1_0	EXIST::FUNCTION: +SSL_use_PrivateKey_ASN1                 32	1_1_0	EXIST::FUNCTION: +PEM_write_SSL_SESSION                   33	1_1_0	EXIST::FUNCTION:STDIO +SSL_CTX_set_session_id_context          34	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_get_cipher_nid               35	1_1_0	EXIST::FUNCTION: +SSL_get_srp_g                           36	1_1_0	EXIST::FUNCTION:SRP +SSL_want                                37	1_1_0	EXIST::FUNCTION: +SSL_get_cipher_list                     38	1_1_0	EXIST::FUNCTION: +SSL_get_verify_result                   39	1_1_0	EXIST::FUNCTION: +SSL_renegotiate                         40	1_1_0	EXIST::FUNCTION: +SSL_get_privatekey                      41	1_1_0	EXIST::FUNCTION: +SSL_peek                                42	1_1_0	EXIST::FUNCTION: +SRP_Calc_A_param                        43	1_1_0	EXIST::FUNCTION:SRP +SSL_SESSION_get_ticket_lifetime_hint    44	1_1_0	EXIST::FUNCTION: +SSL_SRP_CTX_free                        45	1_1_0	EXIST::FUNCTION:SRP +SSL_CTX_set_client_CA_list              46	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_next_proto_select_cb        47	1_1_0	EXIST::FUNCTION:NEXTPROTONEG +BIO_ssl_copy_session_id                 48	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_security_callback           49	1_1_0	EXIST::FUNCTION: +SSL_CONF_cmd_value_type                 50	1_1_0	EXIST::FUNCTION: +SSL_CTX_remove_session                  51	1_1_0	EXIST::FUNCTION: +SSL_SESSION_new                         52	1_1_0	EXIST::FUNCTION: +TLSv1_2_server_method                   53	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD +BIO_new_buffer_ssl_connect              54	1_1_0	EXIST::FUNCTION: +SSL_CTX_set0_security_ex_data           55	1_1_0	EXIST::FUNCTION: +SSL_alert_desc_string                   56	1_1_0	EXIST::FUNCTION: +SSL_get0_dane_authority                 57	1_1_0	EXIST::FUNCTION: +SSL_set_purpose                         58	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_PrivateKey_file             59	1_1_0	EXIST::FUNCTION: +SSL_get_rfd                             60	1_1_0	EXIST::FUNCTION: +DTLSv1_listen                           61	1_1_0	EXIST::FUNCTION:SOCK +SSL_set_ssl_method                      62	1_1_0	EXIST::FUNCTION: +SSL_get0_security_ex_data               63	1_1_0	EXIST::FUNCTION: +SSLv3_client_method                     64	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD +SSL_set_security_level                  65	1_1_0	EXIST::FUNCTION: +DTLSv1_2_method                         66	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD +SSL_get_fd                              67	1_1_0	EXIST::FUNCTION: +SSL_get1_session                        68	1_1_0	EXIST::FUNCTION: +SSL_use_RSAPrivateKey                   69	1_1_0	EXIST::FUNCTION:RSA +SSL_CTX_set_srp_cb_arg                  70	1_1_0	EXIST::FUNCTION:SRP +SSL_CTX_add_session                     71	1_1_0	EXIST::FUNCTION: +SSL_get_srp_N                           72	1_1_0	EXIST::FUNCTION:SRP +SSL_has_matching_session_id             73	1_1_0	EXIST::FUNCTION: +PEM_read_SSL_SESSION                    74	1_1_0	EXIST::FUNCTION:STDIO +SSL_get_shared_ciphers                  75	1_1_0	EXIST::FUNCTION: +SSL_add1_host                           76	1_1_0	EXIST::FUNCTION: +SSL_CONF_cmd_argv                       77	1_1_0	EXIST::FUNCTION: +SSL_version                             78	1_1_0	EXIST::FUNCTION: +SSL_SESSION_print                       79	1_1_0	EXIST::FUNCTION: +SSL_get_client_ciphers                  80	1_1_0	EXIST::FUNCTION: +SSL_get_srtp_profiles                   81	1_1_0	EXIST::FUNCTION:SRTP +SSL_use_certificate_ASN1                82	1_1_0	EXIST::FUNCTION: +SSL_get_peer_certificate                83	1_1_0	EXIST::FUNCTION: +DTLSv1_2_server_method                  84	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD +SSL_set_cert_cb                         85	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_cookie_verify_cb            86	1_1_0	EXIST::FUNCTION: +SSL_get_shared_sigalgs                  87	1_1_0	EXIST::FUNCTION: +SSL_config                              88	1_1_0	EXIST::FUNCTION: +TLSv1_1_client_method                   89	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD +SSL_CIPHER_standard_name                90	1_1_0	EXIST::FUNCTION:SSL_TRACE +SSL_CTX_get_verify_mode                 91	1_1_0	EXIST::FUNCTION: +SSL_get_all_async_fds                   92	1_1_0	EXIST::FUNCTION: +SSL_CTX_check_private_key               93	1_1_0	EXIST::FUNCTION: +SSL_set_wfd                             94	1_1_0	EXIST::FUNCTION:SOCK +SSL_get_client_CA_list                  95	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_set_flags                  96	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_srp_username_callback       97	1_1_0	EXIST::FUNCTION:SRP +SSL_connect                             98	1_1_0	EXIST::FUNCTION: +SSL_get_psk_identity                    99	1_1_0	EXIST::FUNCTION:PSK +SSL_CTX_use_certificate_file            100	1_1_0	EXIST::FUNCTION: +SSL_set_session_ticket_ext              101	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_psk_server_callback         102	1_1_0	EXIST::FUNCTION:PSK +SSL_get_sigalgs                         103	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_next_protos_advertised_cb   104	1_1_0	EXIST::FUNCTION:NEXTPROTONEG +SSL_CTX_set_trust                       105	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_verify                      106	1_1_0	EXIST::FUNCTION: +SSL_set_rfd                             107	1_1_0	EXIST::FUNCTION:SOCK +SSL_SESSION_set_timeout                 108	1_1_0	EXIST::FUNCTION: +SSL_set_psk_client_callback             109	1_1_0	EXIST::FUNCTION:PSK +SSL_get_client_random                   110	1_1_0	EXIST::FUNCTION: +TLS_method                              111	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_clear_flags                112	1_1_0	EXIST::FUNCTION: +TLSv1_client_method                     113	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD +SSL_CIPHER_get_bits                     114	1_1_0	EXIST::FUNCTION: +SSL_test_functions                      115	1_1_0	EXIST::FUNCTION:UNIT_TEST +SSL_get_SSL_CTX                         116	1_1_0	EXIST::FUNCTION: +SSL_get_session                         117	1_1_0	EXIST::FUNCTION: +SSL_CTX_callback_ctrl                   118	1_1_0	EXIST::FUNCTION: +SSL_get_finished                        119	1_1_0	EXIST::FUNCTION: +SSL_add_dir_cert_subjects_to_stack      120	1_1_0	EXIST::FUNCTION: +SSL_get_state                           121	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_finish                     122	1_1_0	EXIST::FUNCTION: +SSL_CTX_add_server_custom_ext           123	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get_ex_data                 124	1_1_0	EXIST::FUNCTION: +SSL_get_srp_username                    125	1_1_0	EXIST::FUNCTION:SRP +SSL_CTX_set_purpose                     126	1_1_0	EXIST::FUNCTION: +SSL_clear                               127	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_cert_store                  128	1_1_0	EXIST::FUNCTION: +TLSv1_2_method                          129	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD +SSL_session_reused                      130	1_1_0	EXIST::FUNCTION: +SSL_free                                131	1_1_0	EXIST::FUNCTION: +BIO_ssl_shutdown                        132	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_client_CA_list              133	1_1_0	EXIST::FUNCTION: +SSL_CTX_sessions                        134	1_1_0	EXIST::FUNCTION: +SSL_get_options                         135	1_1_0	EXIST::FUNCTION: +SSL_set_verify_depth                    136	1_1_0	EXIST::FUNCTION: +SSL_get_error                           137	1_1_0	EXIST::FUNCTION: +SSL_get_servername                      138	1_1_0	EXIST::FUNCTION: +SSL_get_version                         139	1_1_0	EXIST::FUNCTION: +SSL_state_string                        140	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get_timeout                 141	1_1_0	EXIST::FUNCTION: +SSL_CTX_sess_get_remove_cb              142	1_1_0	EXIST::FUNCTION: +SSL_get_current_cipher                  143	1_1_0	EXIST::FUNCTION: +SSL_up_ref                              144	1_1_0	EXIST::FUNCTION: +SSL_export_keying_material              145	1_1_0	EXIST::FUNCTION: +SSL_callback_ctrl                       146	1_1_0	EXIST::FUNCTION: +SSL_set_security_callback               147	1_1_0	EXIST::FUNCTION: +SSL_SRP_CTX_init                        148	1_1_0	EXIST::FUNCTION:SRP +ERR_load_SSL_strings                    149	1_1_0	EXIST::FUNCTION: +SSL_CTX_SRP_CTX_init                    150	1_1_0	EXIST::FUNCTION:SRP +SSL_SESSION_set_time                    151	1_1_0	EXIST::FUNCTION: +i2d_SSL_SESSION                         152	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get_master_key              153	1_1_0	EXIST::FUNCTION: +SSL_COMP_get_compression_methods        154	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_alpn_select_cb              155	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_tmp_dh_callback             156	1_1_0	EXIST::FUNCTION:DH +SSL_CTX_get_default_passwd_cb           157	1_1_0	EXIST::FUNCTION: +TLSv1_server_method                     158	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD +DTLS_server_method                      159	1_1_0	EXIST::FUNCTION: +SSL_set0_rbio                           160	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_options                     161	1_1_0	EXIST::FUNCTION: +SSL_set_msg_callback                    162	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_free                       163	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_ssl_method                  164	1_1_0	EXIST::FUNCTION: +SSL_get_server_random                   165	1_1_0	EXIST::FUNCTION: +SSL_set_shutdown                        166	1_1_0	EXIST::FUNCTION: +SSL_CTX_add_client_CA                   167	1_1_0	EXIST::FUNCTION: +TLSv1_1_server_method                   168	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD +PEM_write_bio_SSL_SESSION               169	1_1_0	EXIST::FUNCTION: +SSL_write                               170	1_1_0	EXIST::FUNCTION: +SSL_set1_host                           171	1_1_0	EXIST::FUNCTION: +SSL_use_RSAPrivateKey_file              172	1_1_0	EXIST::FUNCTION:RSA +SSL_CTX_get_info_callback               173	1_1_0	EXIST::FUNCTION: +SSL_get0_peername                       174	1_1_0	EXIST::FUNCTION: +SSL_set_srp_server_param                175	1_1_0	EXIST::FUNCTION:SRP +TLS_server_method                       176	1_1_0	EXIST::FUNCTION: +SSL_get_psk_identity_hint               177	1_1_0	EXIST::FUNCTION:PSK +SSL_set_session                         178	1_1_0	EXIST::FUNCTION: +SSL_get0_param                          179	1_1_0	EXIST::FUNCTION: +SSL_set_default_passwd_cb               180	1_1_0	EXIST::FUNCTION: +SSL_get_read_ahead                      181	1_1_0	EXIST::FUNCTION: +SSL_dup_CA_list                         182	1_1_0	EXIST::FUNCTION: +SSL_get_verify_callback                 183	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_default_passwd_cb           184	1_1_0	EXIST::FUNCTION: +SSL_get_servername_type                 185	1_1_0	EXIST::FUNCTION: +TLSv1_2_client_method                   186	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_2_METHOD +SSL_add_client_CA                       187	1_1_0	EXIST::FUNCTION: +SSL_CTX_get0_security_ex_data           188	1_1_0	EXIST::FUNCTION: +SSL_get_ex_data                         189	1_1_0	EXIST::FUNCTION: +SSL_CTX_flush_sessions                  190	1_1_0	EXIST::FUNCTION: +SSL_use_PrivateKey                      191	1_1_0	EXIST::FUNCTION: +DTLSv1_client_method                    192	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD +SSL_CTX_dane_mtype_set                  193	1_1_0	EXIST::FUNCTION: +SSL_get_wfd                             194	1_1_0	EXIST::FUNCTION: +SSL_get_ssl_method                      195	1_1_0	EXIST::FUNCTION: +SSL_set_verify_result                   196	1_1_0	EXIST::FUNCTION: +SSL_use_RSAPrivateKey_ASN1              197	1_1_0	EXIST::FUNCTION:RSA +SSL_CIPHER_get_name                     198	1_1_0	EXIST::FUNCTION: +OPENSSL_init_ssl                        199	1_1_0	EXIST::FUNCTION: +SSL_dup                                 200	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_serverinfo                  201	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_serverinfo_file             202	1_1_0	EXIST::FUNCTION: +SSL_set_options                         203	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_default_verify_dir          204	1_1_0	EXIST::FUNCTION: +SSL_do_handshake                        205	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_ex_data                     206	1_1_0	EXIST::FUNCTION: +SSL_is_init_finished                    207	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_default_verify_file         208	1_1_0	EXIST::FUNCTION: +SSLv3_method                            209	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD +SSL_CTX_set_cookie_generate_cb          210	1_1_0	EXIST::FUNCTION: +SSL_certs_clear                         211	1_1_0	EXIST::FUNCTION: +SSL_set_connect_state                   212	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_ex_data                     213	1_1_0	EXIST::FUNCTION: +SSL_rstate_string                       214	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get0_peer                   215	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get_compress_id             216	1_1_0	EXIST::FUNCTION: +SSL_get_peer_cert_chain                 217	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_cert_cb                     218	1_1_0	EXIST::FUNCTION: +PEM_read_bio_SSL_SESSION                219	1_1_0	EXIST::FUNCTION: +SSL_set_info_callback                   220	1_1_0	EXIST::FUNCTION: +SSL_CTX_sess_set_new_cb                 221	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_security_level              222	1_1_0	EXIST::FUNCTION: +SSL_CTX_ctrl                            223	1_1_0	EXIST::FUNCTION: +SSL_set_alpn_protos                     224	1_1_0	EXIST::FUNCTION: +SSL_set_ex_data                         225	1_1_0	EXIST::FUNCTION: +SSL_rstate_string_long                  226	1_1_0	EXIST::FUNCTION: +SSL_ctrl                                227	1_1_0	EXIST::FUNCTION: +SSL_get_current_compression             228	1_1_0	EXIST::FUNCTION: +SSL_SESSION_has_ticket                  229	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_cert_verify_callback        230	1_1_0	EXIST::FUNCTION: +SSL_set_session_secret_cb               231	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_client_cert_engine          232	1_1_0	EXIST::FUNCTION:ENGINE +SSL_CTX_get0_param                      233	1_1_0	EXIST::FUNCTION: +SSL_CTX_set1_param                      234	1_1_0	EXIST::FUNCTION: +SSL_get_certificate                     235	1_1_0	EXIST::FUNCTION: +DTLSv1_server_method                    236	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD +SSL_set_fd                              237	1_1_0	EXIST::FUNCTION:SOCK +SSL_use_certificate                     238	1_1_0	EXIST::FUNCTION: +DTLSv1_method                           239	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_METHOD +SSL_set0_wbio                           240	1_1_0	EXIST::FUNCTION: +SSL_read                                241	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_options                     242	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_ssl_version                 243	1_1_0	EXIST::FUNCTION: +SSL_set_SSL_CTX                         244	1_1_0	EXIST::FUNCTION: +SSL_renegotiate_abbreviated             245	1_1_0	EXIST::FUNCTION: +SSL_get_verify_mode                     246	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_get_id                       247	1_1_0	EXIST::FUNCTION: +SSL_SESSION_print_keylog                248	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_psk_client_callback         249	1_1_0	EXIST::FUNCTION:PSK +SSL_SESSION_get_time                    250	1_1_0	EXIST::FUNCTION: +SSL_set_debug                           251	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0 +SSL_get_security_level                  252	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_description                  253	1_1_0	EXIST::FUNCTION: +SSL_set_default_passwd_cb_userdata      254	1_1_0	EXIST::FUNCTION: +SSL_get_srp_userinfo                    255	1_1_0	EXIST::FUNCTION:SRP +SSL_extension_supported                 256	1_1_0	EXIST::FUNCTION: +SSL_dane_tlsa_add                       257	1_1_0	EXIST::FUNCTION: +SSL_srp_server_param_with_username      258	1_1_0	EXIST::FUNCTION:SRP +SSL_CIPHER_get_version                  259	1_1_0	EXIST::FUNCTION: +SSL_get0_verified_chain                 260	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_find                         261	1_1_0	EXIST::FUNCTION: +SSL_get_rbio                            262	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_set_ssl                    263	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_verify_depth                264	1_1_0	EXIST::FUNCTION: +SSL_get_ciphers                         265	1_1_0	EXIST::FUNCTION: +SSL_CTX_config                          266	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_set_ssl_ctx                267	1_1_0	EXIST::FUNCTION: +SSL_CONF_cmd                            268	1_1_0	EXIST::FUNCTION: +SSL_add_ssl_module                      269	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_verify_callback             270	1_1_0	EXIST::FUNCTION: +SSL_set1_param                          271	1_1_0	EXIST::FUNCTION: +SSL_use_certificate_file                272	1_1_0	EXIST::FUNCTION: +SSL_get_changed_async_fds               273	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_client_cert_cb              274	1_1_0	EXIST::FUNCTION: +DTLS_client_method                      275	1_1_0	EXIST::FUNCTION: +SSL_set_trust                           276	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_security_callback           277	1_1_0	EXIST::FUNCTION: +SSL_CTX_clear_options                   278	1_1_0	EXIST::FUNCTION: +SSL_check_chain                         279	1_1_0	EXIST::FUNCTION: +SSL_CTX_sess_set_remove_cb              280	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_info_callback               281	1_1_0	EXIST::FUNCTION: +SSL_pending                             282	1_1_0	EXIST::FUNCTION: +SSL_set_bio                             283	1_1_0	EXIST::FUNCTION: +BIO_new_ssl_connect                     284	1_1_0	EXIST::FUNCTION: +SSL_waiting_for_async                   285	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_srp_strength                286	1_1_0	EXIST::FUNCTION:SRP +SSL_CTX_get_quiet_shutdown              287	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_certificate_chain_file      288	1_1_0	EXIST::FUNCTION: +SSL_CTX_dane_enable                     289	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_new                        290	1_1_0	EXIST::FUNCTION: +SSL_get0_alpn_selected                  291	1_1_0	EXIST::FUNCTION: +SSL_get0_next_proto_negotiated          292	1_1_0	EXIST::FUNCTION:NEXTPROTONEG +SSL_set0_security_ex_data               293	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_tlsext_use_srtp             294	1_1_0	EXIST::FUNCTION:SRTP +SSL_COMP_set0_compression_methods       295	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_not_resumable_session_callback 296	1_1_0	EXIST::FUNCTION: +SSL_accept                              297	1_1_0	EXIST::FUNCTION: +SSL_use_psk_identity_hint               298	1_1_0	EXIST::FUNCTION:PSK +SSL_trace                               299	1_1_0	EXIST::FUNCTION:SSL_TRACE +DTLS_method                             300	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_srp_verify_param_callback   301	1_1_0	EXIST::FUNCTION:SRP +SSL_CTX_set_timeout                     302	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_security_level              303	1_1_0	EXIST::FUNCTION: +TLS_client_method                       304	1_1_0	EXIST::FUNCTION: +SSL_set_quiet_shutdown                  305	1_1_0	EXIST::FUNCTION: +SSL_CTX_up_ref                          306	1_1_0	EXIST::FUNCTION: +SSL_check_private_key                   307	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_quiet_shutdown              308	1_1_0	EXIST::FUNCTION: +SSL_select_next_proto                   309	1_1_0	EXIST::FUNCTION: +SSL_load_client_CA_file                 310	1_1_0	EXIST::FUNCTION: +SSL_set_srp_server_param_pw             311	1_1_0	EXIST::FUNCTION:SRP +SSL_renegotiate_pending                 312	1_1_0	EXIST::FUNCTION: +SSL_CTX_new                             313	1_1_0	EXIST::FUNCTION: +SSL_set_session_ticket_ext_cb           314	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_timeout                     315	1_1_0	EXIST::FUNCTION: +SSL_use_certificate_chain_file          316	1_1_0	EXIST::FUNCTION: +SSL_set_not_resumable_session_callback  317	1_1_0	EXIST::FUNCTION: +SSL_CTX_SRP_CTX_free                    318	1_1_0	EXIST::FUNCTION:SRP +SSL_get_current_expansion               319	1_1_0	EXIST::FUNCTION: +SSL_clear_options                       320	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_PrivateKey                  321	1_1_0	EXIST::FUNCTION: +SSL_get_info_callback                   322	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_psk_identity_hint           323	1_1_0	EXIST::FUNCTION:PSK +SSL_CTX_use_RSAPrivateKey_ASN1          324	1_1_0	EXIST::FUNCTION:RSA +SSL_CTX_use_PrivateKey_ASN1             325	1_1_0	EXIST::FUNCTION: +SSL_CTX_get0_privatekey                 326	1_1_0	EXIST::FUNCTION: +BIO_f_ssl                               327	1_1_0	EXIST::FUNCTION: +SSLv3_server_method                     328	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SSL3_METHOD +SSL_SESSION_free                        329	1_1_0	EXIST::FUNCTION: +SSL_get_shutdown                        330	1_1_0	EXIST::FUNCTION: +SSL_get_peer_finished                   331	1_1_0	EXIST::FUNCTION: +SSL_set_tlsext_use_srtp                 332	1_1_0	EXIST::FUNCTION:SRTP +TLSv1_method                            333	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_METHOD +SSL_set_psk_server_callback             334	1_1_0	EXIST::FUNCTION:PSK +SSL_CTX_set_alpn_protos                 335	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_default_verify_paths        336	1_1_0	EXIST::FUNCTION: +SSL_CTX_sess_set_get_cb                 337	1_1_0	EXIST::FUNCTION: +SSL_add_file_cert_subjects_to_stack     338	1_1_0	EXIST::FUNCTION: +SSL_get_default_passwd_cb_userdata      339	1_1_0	EXIST::FUNCTION: +SSL_get_security_callback               340	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_srp_username                341	1_1_0	EXIST::FUNCTION:SRP +SSL_COMP_get_name                       342	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_default_passwd_cb_userdata  343	1_1_0	EXIST::FUNCTION: +SSL_set_verify                          344	1_1_0	EXIST::FUNCTION: +SSL_in_before                           345	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_get_digest_nid               346	1_1_0	EXIST::FUNCTION: +SSL_CTX_add_client_custom_ext           347	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_certificate                 348	1_1_0	EXIST::FUNCTION: +SSL_set_cipher_list                     349	1_1_0	EXIST::FUNCTION: +SSL_get_wbio                            350	1_1_0	EXIST::FUNCTION: +SSL_set_hostflags                       351	1_1_0	EXIST::FUNCTION: +SSL_alert_desc_string_long              352	1_1_0	EXIST::FUNCTION: +SSL_get_default_timeout                 353	1_1_0	EXIST::FUNCTION: +SSL_set_session_id_context              354	1_1_0	EXIST::FUNCTION: +SSL_new                                 355	1_1_0	EXIST::FUNCTION: +TLSv1_1_method                          356	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,TLS1_1_METHOD +SSL_CTX_get_cert_store                  357	1_1_0	EXIST::FUNCTION: +SSL_CTX_load_verify_locations           358	1_1_0	EXIST::FUNCTION: +SSL_SESSION_print_fp                    359	1_1_0	EXIST::FUNCTION:STDIO +SSL_get0_dane_tlsa                      360	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_generate_session_id         361	1_1_0	EXIST::FUNCTION: +SSL_alert_type_string_long              362	1_1_0	EXIST::FUNCTION: +SSL_CONF_CTX_set1_prefix                363	1_1_0	EXIST::FUNCTION: +SSL_in_init                             364	1_1_0	EXIST::FUNCTION: +BIO_new_ssl                             365	1_1_0	EXIST::FUNCTION: +SSL_CTX_get_client_cert_cb              366	1_1_0	EXIST::FUNCTION: +SSL_CTX_use_certificate_ASN1            367	1_1_0	EXIST::FUNCTION: +SSL_set_client_CA_list                  368	1_1_0	EXIST::FUNCTION: +SSL_CTX_free                            369	1_1_0	EXIST::FUNCTION: +SSL_get_default_passwd_cb               370	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get_id                      371	1_1_0	EXIST::FUNCTION: +SSL_SESSION_set1_id_context             372	1_1_0	EXIST::FUNCTION: +SSL_is_server                           373	1_1_0	EXIST::FUNCTION: +SSL_alert_type_string                   374	1_1_0	EXIST::FUNCTION: +DTLSv1_2_client_method                  375	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD +SSL_CTX_set_ctlog_list_file             376	1_1_0	EXIST::FUNCTION:CT +SSL_set_ct_validation_callback          377	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_set_default_ctlog_list_file     378	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_has_client_custom_ext           379	1_1_0	EXIST::FUNCTION: +SSL_ct_is_enabled                       380	1_1_0	EXIST::FUNCTION:CT +SSL_get0_peer_scts                      381	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_set_ct_validation_callback      382	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_ct_is_enabled                   383	1_1_0	EXIST::FUNCTION:CT +SSL_set_default_read_buffer_len         384	1_1_0	EXIST::FUNCTION: +SSL_CTX_set_default_read_buffer_len     385	1_1_0	EXIST::FUNCTION: +SSL_has_pending                         386	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_get_auth_nid                 387	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_get_kx_nid                   388	1_1_0	EXIST::FUNCTION: +SSL_CIPHER_is_aead                      389	1_1_0	EXIST::FUNCTION: +SSL_SESSION_up_ref                      390	1_1_0	EXIST::FUNCTION: +SSL_CTX_set0_ctlog_store                391	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_get0_ctlog_store                392	1_1_0	EXIST::FUNCTION:CT +SSL_enable_ct                           393	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_enable_ct                       394	1_1_0	EXIST::FUNCTION:CT +SSL_CTX_get_ciphers                     395	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get0_hostname               396	1_1_0	EXIST::FUNCTION: +SSL_client_version                      397	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get_protocol_version        398	1_1_0	EXIST::FUNCTION: +SSL_is_dtls                             399	1_1_0	EXIST::FUNCTION: +SSL_CTX_dane_set_flags                  400	1_1_0	EXIST::FUNCTION: +SSL_dane_set_flags                      401	1_1_0	EXIST::FUNCTION: +SSL_CTX_dane_clear_flags                402	1_1_0	EXIST::FUNCTION: +SSL_dane_clear_flags                    403	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get0_cipher                 404	1_1_0	EXIST::FUNCTION: +SSL_SESSION_get0_id_context             405	1_1_0	EXIST::FUNCTION: +SSL_SESSION_set1_id                     406	1_1_0	EXIST::FUNCTION: +SSL_COMP_get_id                         412	1_1_0d	EXIST::FUNCTION: +SSL_COMP_get0_name                      413	1_1_0d	EXIST::FUNCTION: diff --git a/openssl-1.1.0h/util/local_shlib.com.in b/openssl-1.1.0h/util/local_shlib.com.in new file mode 100644 index 0000000..e49aa15 --- /dev/null +++ b/openssl-1.1.0h/util/local_shlib.com.in @@ -0,0 +1,30 @@ +${- +  use File::Spec::Functions qw(rel2abs); + +  my $bldtop = rel2abs($config{builddir}); +  our %names = ( map { $_ => $bldtop.$_.".EXE" } +                 map { $unified_info{sharednames}->{$_} || () } +                 @{$unified_info{libraries}} ); +  "" -} +$       ! Create a local environment with the shared library logical names +$       ! properly set.  Undo this with unlocal_shlib.com +$ +$       OPENSSL_NAMES := OPENSSL_NAMES_'F$GETJPI("","PID")' +$       CREATE/NAME_TABLE/PARENT_TABLE=LNM$PROCESS_DIRECTORY 'OPENSSL_NAMES' +$       DEFINE/TABLE='OPENSSL_NAMES' OSSL_FLAG YES +$ +$       NAMES := {- join(",", keys %names); -} +{- +  join("\n", map { "\$       __$_ = \"".$names{$_}."\"" } keys %names); +-}       +$       I = 0 +$       LOOP: +$           E = F$ELEMENT(I,",",NAMES) +$           I = I + 1 +$           IF E .EQS. "," THEN GOTO ENDLOOP +$           EV = __'E' +$           OLDV = F$TRNLNM(E,"LNM$PROCESS") +$           IF OLDV .NES. "" THEN DEFINE/TABLE='OPENSSL_NAMES' 'E' 'OLDV' +$           DEFINE 'E' 'EV' +$           GOTO LOOP +$       ENDLOOP: diff --git a/openssl-1.1.0h/util/mkbuildinf.pl b/openssl-1.1.0h/util/mkbuildinf.pl new file mode 100755 index 0000000..5bf0168 --- /dev/null +++ b/openssl-1.1.0h/util/mkbuildinf.pl @@ -0,0 +1,41 @@ +#! /usr/bin/env perl +# Copyright 2014-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 + + +my ($cflags, $platform) = @ARGV; + +$cflags = "compiler: $cflags"; +$date = localtime(); +print <<"END_OUTPUT"; +/* auto-generated by util/mkbuildinf.pl for crypto/cversion.c */ +#define CFLAGS cflags +/* + * Generate CFLAGS as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char cflags[] = { +END_OUTPUT +my $ctr = 0; +foreach my $c (split //, $cflags) { +    $c =~ s|([\\'])|\\$1|; +    # Max 16 characters per line +    if  (($ctr++ % 16) == 0) { +        if ($ctr != 1) { +            print "\n"; +        } +        print "    "; +    } +    print "'$c',"; +} +print <<"END_OUTPUT"; +'\\0' +}; +#define PLATFORM "platform: $platform" +#define DATE "built on: $date" +END_OUTPUT diff --git a/openssl-1.1.0h/util/mkcerts.sh b/openssl-1.1.0h/util/mkcerts.sh new file mode 100755 index 0000000..e4a9892 --- /dev/null +++ b/openssl-1.1.0h/util/mkcerts.sh @@ -0,0 +1,220 @@ +#!/bin/sh + +# This script will re-make all the required certs. +# cd apps +# sh ../util/mkcerts.sh +# mv ca-cert.pem pca-cert.pem ../certs +# cd .. +# cat certs/*.pem >>apps/server.pem +# cat certs/*.pem >>apps/server2.pem +# SSLEAY=`pwd`/apps/ssleay; export SSLEAY +# sh tools/c_rehash certs +# +  +CAbits=1024 +SSLEAY="../apps/openssl" +CONF="-config ../apps/openssl.cnf" + +# create pca request. +echo creating $CAbits bit PCA cert request +$SSLEAY req $CONF \ +	-new -sha256 -newkey $CAbits \ +	-keyout pca-key.pem \ +	-out pca-req.pem -nodes >/dev/null <<EOF +AU +Queensland +. +CryptSoft Pty Ltd +. +Test PCA (1024 bit) + + + +EOF + +if [ $? != 0 ]; then +	echo problems generating PCA request +	exit 1 +fi + +#sign it. +echo +echo self signing PCA +$SSLEAY x509 -sha256 -days 36525 \ +	-req -signkey pca-key.pem \ +	-CAcreateserial -CAserial pca-cert.srl \ +	-in pca-req.pem -out pca-cert.pem + +if [ $? != 0 ]; then +	echo problems self signing PCA cert +	exit 1 +fi +echo + +# create ca request. +echo creating $CAbits bit CA cert request +$SSLEAY req $CONF \ +	-new -sha256 -newkey $CAbits \ +	-keyout ca-key.pem \ +	-out ca-req.pem -nodes >/dev/null <<EOF +AU +Queensland +. +CryptSoft Pty Ltd +. +Test CA (1024 bit) + + + +EOF + +if [ $? != 0 ]; then +	echo problems generating CA request +	exit 1 +fi + +#sign it. +echo +echo signing CA +$SSLEAY x509 -sha256 -days 36525 \ +	-req \ +	-CAcreateserial -CAserial pca-cert.srl \ +	-CA pca-cert.pem -CAkey pca-key.pem \ +	-in ca-req.pem -out ca-cert.pem + +if [ $? != 0 ]; then +	echo problems signing CA cert +	exit 1 +fi +echo + +# create server request. +echo creating 512 bit server cert request +$SSLEAY req $CONF \ +	-new -sha256 -newkey 512 \ +	-keyout s512-key.pem \ +	-out s512-req.pem -nodes >/dev/null <<EOF +AU +Queensland +. +CryptSoft Pty Ltd +. +Server test cert (512 bit) + + + +EOF + +if [ $? != 0 ]; then +	echo problems generating 512 bit server cert request +	exit 1 +fi + +#sign it. +echo +echo signing 512 bit server cert +$SSLEAY x509 -sha256 -days 36525 \ +	-req \ +	-CAcreateserial -CAserial ca-cert.srl \ +	-CA ca-cert.pem -CAkey ca-key.pem \ +	-in s512-req.pem -out server.pem + +if [ $? != 0 ]; then +	echo problems signing 512 bit server cert +	exit 1 +fi +echo + +# create 1024 bit server request. +echo creating 1024 bit server cert request +$SSLEAY req $CONF \ +	-new -sha256 -newkey 1024 \ +	-keyout s1024key.pem \ +	-out s1024req.pem -nodes >/dev/null <<EOF +AU +Queensland +. +CryptSoft Pty Ltd +. +Server test cert (1024 bit) + + + +EOF + +if [ $? != 0 ]; then +	echo problems generating 1024 bit server cert request +	exit 1 +fi + +#sign it. +echo +echo signing 1024 bit server cert +$SSLEAY x509 -sha256 -days 36525 \ +	-req \ +	-CAcreateserial -CAserial ca-cert.srl \ +	-CA ca-cert.pem -CAkey ca-key.pem \ +	-in s1024req.pem -out server2.pem + +if [ $? != 0 ]; then +	echo problems signing 1024 bit server cert +	exit 1 +fi +echo + +# create 512 bit client request. +echo creating 512 bit client cert request +$SSLEAY req $CONF \ +	-new -sha256 -newkey 512 \ +	-keyout c512-key.pem \ +	-out c512-req.pem -nodes >/dev/null <<EOF +AU +Queensland +. +CryptSoft Pty Ltd +. +Client test cert (512 bit) + + + +EOF + +if [ $? != 0 ]; then +	echo problems generating 512 bit client cert request +	exit 1 +fi + +#sign it. +echo +echo signing 512 bit client cert +$SSLEAY x509 -sha256 -days 36525 \ +	-req \ +	-CAcreateserial -CAserial ca-cert.srl \ +	-CA ca-cert.pem -CAkey ca-key.pem \ +	-in c512-req.pem -out client.pem + +if [ $? != 0 ]; then +	echo problems signing 512 bit client cert +	exit 1 +fi + +echo cleanup + +cat pca-key.pem  >> pca-cert.pem +cat ca-key.pem   >> ca-cert.pem +cat s512-key.pem >> server.pem +cat s1024key.pem >> server2.pem +cat c512-key.pem >> client.pem + +for i in pca-cert.pem ca-cert.pem server.pem server2.pem client.pem +do +$SSLEAY x509 -issuer -subject -in $i -noout >$$ +cat $$ +/bin/cat $i >>$$ +/bin/mv $$ $i +done + +#/bin/rm -f *key.pem *req.pem *.srl + +echo Finished + diff --git a/openssl-1.1.0h/util/mkdef.pl b/openssl-1.1.0h/util/mkdef.pl new file mode 100755 index 0000000..66db26c --- /dev/null +++ b/openssl-1.1.0h/util/mkdef.pl @@ -0,0 +1,1685 @@ +#! /usr/bin/env perl +# Copyright 1995-2018 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 libcrypto.num and libssl.num, +# The format of these files is: +# +#	routine-name	nnnn	vers	info +# +# The "nnnn" and "vers" fields are the numeric id and version for the symbol +# respectively. The "info" part is actually a colon-separated string of fields +# with the following meaning: +# +#	existence:platform:kind:algorithms +# +# - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is +#   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 +#   symbol name variants for platforms where the names are too long for the +#   compiler or linker, or if the systems is case insensitive and there is a +#   clash, or the symbol is implemented differently (see +#   EXPORT_VAR_AS_FUNCTION).  This script assumes renaming of symbols is found +#   in the file crypto/symhacks.h. +#   The semantics for the platforms is that every item is checked against the +#   environment.  For the negative items ("!FOO"), if any of them is false +#   (i.e. "FOO" is true) in the environment, the corresponding symbol can't be +#   used.  For the positive itms, if all of them are false in the environment, +#   the corresponding symbol can't be used.  Any combination of positive and +#   negative items are possible, and of course leave room for some redundancy. +# - "kind" is "FUNCTION" or "VARIABLE".  The meaning of that is obvious. +# - "algorithms" is a comma-separated list of algorithm names.  This helps +#   exclude symbols that are part of an algorithm that some user wants to +#   exclude. +# + +use lib "."; +use configdata; +use File::Spec::Functions; +use File::Basename; +use FindBin; +use lib "$FindBin::Bin/perl"; +use OpenSSL::Glob; + +# When building a "variant" shared library, with a custom SONAME, also customize +# all the symbol versions.  This produces a shared object that can coexist +# without conflict in the same address space as a default build, or an object +# with a different variant tag. +# +# For example, with a target definition that includes: +# +#         shlib_variant => "-opt", +# +# we build the following objects: +# +# $ perl -le ' +#     for (@ARGV) { +#         if ($l = readlink) { +#             printf "%s -> %s\n", $_, $l +#         } else { +#             print +#         } +#     }' *.so* +# libcrypto-opt.so.1.1 +# libcrypto.so -> libcrypto-opt.so.1.1 +# libssl-opt.so.1.1 +# libssl.so -> libssl-opt.so.1.1 +# +# whose SONAMEs and dependencies are: +# +# $ for l in *.so; do +#     echo $l +#     readelf -d $l | egrep 'SONAME|NEEDED.*(ssl|crypto)' +#   done +# libcrypto.so +#  0x000000000000000e (SONAME)             Library soname: [libcrypto-opt.so.1.1] +# libssl.so +#  0x0000000000000001 (NEEDED)             Shared library: [libcrypto-opt.so.1.1] +#  0x000000000000000e (SONAME)             Library soname: [libssl-opt.so.1.1] +# +# We case-fold the variant tag to upper case and replace all non-alnum +# characters with "_".  This yields the following symbol versions: +# +# $ nm libcrypto.so | grep -w A +# 0000000000000000 A OPENSSL_OPT_1_1_0 +# 0000000000000000 A OPENSSL_OPT_1_1_0a +# 0000000000000000 A OPENSSL_OPT_1_1_0c +# 0000000000000000 A OPENSSL_OPT_1_1_0d +# 0000000000000000 A OPENSSL_OPT_1_1_0f +# 0000000000000000 A OPENSSL_OPT_1_1_0g +# $ nm libssl.so | grep -w A +# 0000000000000000 A OPENSSL_OPT_1_1_0 +# 0000000000000000 A OPENSSL_OPT_1_1_0d +# +(my $SO_VARIANT = qq{\U$target{"shlib_variant"}}) =~ s/\W/_/g; + +my $debug=0; +my $trace=0; +my $verbose=0; + +my $crypto_num= catfile($config{sourcedir},"util","libcrypto.num"); +my $ssl_num=    catfile($config{sourcedir},"util","libssl.num"); +my $libname; + +my $do_update = 0; +my $do_rewrite = 1; +my $do_crypto = 0; +my $do_ssl = 0; +my $do_ctest = 0; +my $do_ctestall = 0; +my $do_checkexist = 0; + +my $VMS=0; +my $W32=0; +my $NT=0; +my $UNIX=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", "_WIN32" +			); +my @known_ossl_platforms = ( "UNIX", "VMS", "WIN32", "WINNT", "OS2" ); +my @known_algorithms = ( # These are algorithms we know are guarded in relevant +			 # header files, but aren't actually disablable. +			 # Without these, this script will warn a lot. +			 "RSA", "MD5", +			 # @disablables comes from configdata.pm +			 map { (my $x = uc $_) =~ s|-|_|g; $x; } @disablables, +			 # Deprecated functions.  Not really algorithmss, but +			 # treated as such here for the sake of simplicity +			 "DEPRECATEDIN_0_9_8", +			 "DEPRECATEDIN_1_0_0", +			 "DEPRECATEDIN_1_1_0", +                     ); + +# %disabled comes from configdata.pm +my %disabled_algorithms = +    map { (my $x = uc $_) =~ s|-|_|g; $x => 1; } keys %disabled; + +my $zlib; + +foreach (@ARGV, split(/ /, $config{options})) +	{ +	$debug=1 if $_ eq "debug"; +	$trace=1 if $_ eq "trace"; +	$verbose=1 if $_ eq "verbose"; +	$W32=1 if $_ eq "32"; +	die "win16 not supported" if $_ eq "16"; +	if($_ eq "NT") { +		$W32 = 1; +		$NT = 1; +	} +	if ($_ eq "linux") { +		$linux=1; +		$UNIX=1; +	} +	$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;  +		$libname=$_ +	} +	$do_crypto=1 if $_ eq "libcrypto"; +	if ($_ eq "crypto") { +		$do_crypto=1; +		$libname=$_; +	} +	$do_update=1 if $_ eq "update"; +	$do_rewrite=1 if $_ eq "rewrite"; +	$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 (@known_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 (@known_algorithms) { +			if (/^DEPRECATEDIN_/) { +				$disabled_algorithms{$_} = 1; +			} +		} +	} +	elsif (/^(enable|disable|no)-(.*)$/) { +		my $alg = uc $2; +        $alg =~ tr/-/_/; +		if (exists $disabled_algorithms{$alg}) { +			$disabled_algorithms{$alg} = $1 eq "enable" ? 0 : 1; +		} +	} + +	} + +if (!$libname) {  +	if ($do_ssl) { +		$libname="LIBSSL"; +	} +	if ($do_crypto) { +		$libname="LIBCRYPTO"; +	} +} + +# If no platform is given, assume WIN32 +if ($W32 + $VMS + $linux == 0) { +	$W32 = 1; +} +die "Please, only one platform at a time" +    if ($W32 + $VMS + $linux > 1); + +if (!$do_ssl && !$do_crypto) +	{ +	print STDERR "usage: $0 ( ssl | crypto ) [ 16 | 32 | NT | OS2 | linux | VMS ]\n"; +	exit(1); +	} + +%ssl_list=&load_numbers($ssl_num); +$max_ssl = $max_num; +%crypto_list=&load_numbers($crypto_num); +$max_crypto = $max_num; + +my $ssl="include/openssl/ssl.h"; +$ssl.=" include/openssl/tls1.h"; +$ssl.=" include/openssl/srtp.h"; + +# We use headers found in include/openssl and include/internal only. +# The latter is needed so libssl.so/.dll/.exe can link properly. +my $crypto ="include/openssl/crypto.h"; +$crypto.=" include/internal/o_dir.h"; +$crypto.=" include/internal/o_str.h"; +$crypto.=" include/internal/err.h"; +$crypto.=" include/internal/asn1t.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; +$crypto.=" include/openssl/rc5.h" ; # unless $no_rc5; +$crypto.=" include/openssl/rc2.h" ; # unless $no_rc2; +$crypto.=" include/openssl/blowfish.h" ; # unless $no_bf; +$crypto.=" include/openssl/cast.h" ; # unless $no_cast; +$crypto.=" include/openssl/whrlpool.h" ; +$crypto.=" include/openssl/md2.h" ; # unless $no_md2; +$crypto.=" include/openssl/md4.h" ; # unless $no_md4; +$crypto.=" include/openssl/md5.h" ; # unless $no_md5; +$crypto.=" include/openssl/mdc2.h" ; # unless $no_mdc2; +$crypto.=" include/openssl/sha.h" ; # unless $no_sha; +$crypto.=" include/openssl/ripemd.h" ; # unless $no_ripemd; +$crypto.=" include/openssl/aes.h" ; # unless $no_aes; +$crypto.=" include/openssl/camellia.h" ; # unless $no_camellia; +$crypto.=" include/openssl/seed.h"; # unless $no_seed; + +$crypto.=" include/openssl/bn.h"; +$crypto.=" include/openssl/rsa.h" ; # unless $no_rsa; +$crypto.=" include/openssl/dsa.h" ; # unless $no_dsa; +$crypto.=" include/openssl/dh.h" ; # unless $no_dh; +$crypto.=" include/openssl/ec.h" ; # unless $no_ec; +$crypto.=" include/openssl/hmac.h" ; # unless $no_hmac; +$crypto.=" include/openssl/cmac.h" ; + +$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/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"; + +$crypto.=" include/openssl/evp.h" ; # unless $no_evp; +$crypto.=" include/openssl/objects.h"; +$crypto.=" include/openssl/pem.h"; +#$crypto.=" include/openssl/meth.h"; +$crypto.=" include/openssl/asn1.h"; +$crypto.=" include/openssl/asn1t.h"; +$crypto.=" include/openssl/err.h" ; # unless $no_err; +$crypto.=" include/openssl/pkcs7.h"; +$crypto.=" include/openssl/pkcs12.h"; +$crypto.=" include/openssl/x509.h"; +$crypto.=" include/openssl/x509_vfy.h"; +$crypto.=" include/openssl/x509v3.h"; +$crypto.=" include/openssl/ts.h"; +$crypto.=" include/openssl/rand.h"; +$crypto.=" include/openssl/comp.h" ; # unless $no_comp; +$crypto.=" include/openssl/ocsp.h"; +$crypto.=" include/openssl/ui.h"; +#$crypto.=" include/openssl/store.h"; +$crypto.=" include/openssl/cms.h"; +$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("LIBSSL", $ssl, $symhacks); +my @crypto_symbols = &do_defs("LIBCRYPTO", $crypto, $symhacks); + +if ($do_update) { + +if ($do_ssl == 1) { + +	&maybe_add_info("LIBSSL",*ssl_list,@ssl_symbols); +	if ($do_rewrite == 1) { +		open(OUT, ">$ssl_num"); +		&rewrite_numbers(*OUT,"LIBSSL",*ssl_list,@ssl_symbols); +	} else { +		open(OUT, ">>$ssl_num"); +	} +	&update_numbers(*OUT,"LIBSSL",*ssl_list,$max_ssl,@ssl_symbols); +	close OUT; +} + +if($do_crypto == 1) { + +	&maybe_add_info("LIBCRYPTO",*crypto_list,@crypto_symbols); +	if ($do_rewrite == 1) { +		open(OUT, ">$crypto_num"); +		&rewrite_numbers(*OUT,"LIBCRYPTO",*crypto_list,@crypto_symbols); +	} else { +		open(OUT, ">>$crypto_num"); +	} +	&update_numbers(*OUT,"LIBCRYPTO",*crypto_list,$max_crypto,@crypto_symbols); +	close OUT; +}  + +} elsif ($do_checkexist) { +	&check_existing(*ssl_list, @ssl_symbols) +		if $do_ssl == 1; +	&check_existing(*crypto_list, @crypto_symbols) +		if $do_crypto == 1; +} elsif ($do_ctest || $do_ctestall) { + +	print <<"EOF"; + +/* Test file to check all DEF file symbols are present by trying + * to link to all of them. This is *not* intended to be run! + */ + +int main() +{ +EOF +	&print_test_file(*STDOUT,"LIBSSL",*ssl_list,$do_ctestall,@ssl_symbols) +		if $do_ssl == 1; + +	&print_test_file(*STDOUT,"LIBCRYPTO",*crypto_list,$do_ctestall,@crypto_symbols) +		if $do_crypto == 1; + +	print "}\n"; + +} else { + +	&print_def_file(*STDOUT,$libname,*ssl_list,@ssl_symbols) +		if $do_ssl == 1; + +	&print_def_file(*STDOUT,$libname,*crypto_list,@crypto_symbols) +		if $do_crypto == 1; + +} + + +sub do_defs +{ +	my($name,$files,$symhacksfile)=@_; +	my $file; +	my @ret; +	my %syms; +	my %platform;		# For anything undefined, we assume "" +	my %kind;		# For anything undefined, we assume "FUNCTION" +	my %algorithm;		# For anything undefined, we assume "" +	my %variant; +	my %variant_cnt;	# To be able to allocate "name{n}" if "name" +				# is the same name as the original. +	my $cpp; +	my %unknown_algorithms = (); +	my $parens = 0; + +	foreach $file (split(/\s+/,$symhacksfile." ".$files)) +		{ +		my $fn = catfile($config{sourcedir},$file); +		print STDERR "TRACE: start reading $fn\n" if $trace; +		open(IN,"<$fn") || die "unable to open $fn:$!\n"; +		my $line = "", my $def= ""; +		my %tag = ( +			(map { $_ => 0 } @known_platforms), +			(map { "OPENSSL_SYS_".$_ => 0 } @known_ossl_platforms), +			(map { "OPENSSL_NO_".$_ => 0 } @known_algorithms), +			(map { "OPENSSL_USE_".$_ => 0 } @known_algorithms), +			NOPROTO		=> 0, +			PERL5		=> 0, +			_WINDLL		=> 0, +			CONST_STRICT	=> 0, +			TRUE		=> 1, +		); +		my $symhacking = $file eq $symhacksfile; +		my @current_platforms = (); +		my @current_algorithms = (); + +		# params: symbol, alias, platforms, kind +		# The reason to put this subroutine in a variable is that +		# it will otherwise create it's own, unshared, version of +		# %tag and %variant... +		my $make_variant = sub +		{ +			my ($s, $a, $p, $k) = @_; +			my ($a1, $a2); + +			print STDERR "DEBUG: make_variant: Entered with ",$s,", ",$a,", ",(defined($p)?$p:""),", ",(defined($k)?$k:""),"\n" if $debug; +			if (defined($p)) +			{ +				$a1 = join(",",$p, +					   grep(!/^$/, +						map { $tag{$_} == 1 ? $_ : "" } +						@known_platforms)); +			} +			else +			{ +				$a1 = join(",", +					   grep(!/^$/, +						map { $tag{$_} == 1 ? $_ : "" } +						@known_platforms)); +			} +			$a2 = join(",", +				   grep(!/^$/, +					map { $tag{"OPENSSL_SYS_".$_} == 1 ? $_ : "" } +					@known_ossl_platforms)); +			print STDERR "DEBUG: make_variant: a1 = $a1; a2 = $a2\n" if $debug; +			if ($a1 eq "") { $a1 = $a2; } +			elsif ($a1 ne "" && $a2 ne "") { $a1 .= ",".$a2; } +			if ($a eq $s) +			{ +				if (!defined($variant_cnt{$s})) +				{ +					$variant_cnt{$s} = 0; +				} +				$variant_cnt{$s}++; +				$a .= "{$variant_cnt{$s}}"; +			} +			my $toadd = $a.":".$a1.(defined($k)?":".$k:""); +			my $togrep = $s.'(\{[0-9]+\})?:'.$a1.(defined($k)?":".$k:""); +			if (!grep(/^$togrep$/, +				  split(/;/, defined($variant{$s})?$variant{$s}:""))) { +				if (defined($variant{$s})) { $variant{$s} .= ";"; } +				$variant{$s} .= $toadd; +			} +			print STDERR "DEBUG: make_variant: Exit with variant of ",$s," = ",$variant{$s},"\n" if $debug; +		}; + +		print STDERR "DEBUG: parsing ----------\n" if $debug; +		while(<IN>) { +			s|\R$||; # Better chomp +			if($parens > 0) { +				#Inside a DEPRECATEDIN +				$stored_multiline .= $_; +				print STDERR "DEBUG: Continuing multiline DEPRECATEDIN: $stored_multiline\n" if $debug; +				$parens = count_parens($stored_multiline); +				if ($parens == 0) { +					$def .= do_deprecated($stored_multiline, +							\@current_platforms, +							\@current_algorithms); +				} +				next; +			} +			if (/\/\* Error codes for the \w+ functions\. \*\//) +				{ +				undef @tag; +				last; +				} +			if ($line ne '') { +				$_ = $line . $_; +				$line = ''; +			} + +			if (/\\$/) { +				$line = $`; # keep what was before the backslash +				next; +			} + +			if(/\/\*/) { +				if (not /\*\//) {	# multiline comment... +					$line = $_;	# ... just accumulate +					next; +				} else { +					s/\/\*.*?\*\///gs;# wipe it +				} +			} + +			if ($cpp) { +				$cpp++ if /^#\s*if/; +				$cpp-- if /^#\s*endif/; +				next; +			} +			if (/^#.*ifdef.*cplusplus/) { +				$cpp = 1; +				next; +			} + +			s/{[^{}]*}//gs;                      # ignore {} blocks +			print STDERR "DEBUG: \$def=\"$def\"\n" if $debug && $def ne ""; +			print STDERR "DEBUG: \$_=\"$_\"\n" if $debug; +			if (/^\#\s*ifndef\s+(.*)/) { +				push(@tag,"-"); +				push(@tag,$1); +				$tag{$1}=-1; +				print STDERR "DEBUG: $file: found tag $1 = -1\n" if $debug; +			} elsif (/^\#\s*if\s+!defined\s*\(([^\)]+)\)/) { +				push(@tag,"-"); +				if (/^\#\s*if\s+(!defined\s*\(([^\)]+)\)(\s+\&\&\s+!defined\s*\(([^\)]+)\))*)$/) { +					my $tmp_1 = $1; +					my $tmp_; +					foreach $tmp_ (split '\&\&',$tmp_1) { +						$tmp_ =~ /!defined\s*\(([^\)]+)\)/; +						print STDERR "DEBUG: $file: found tag $1 = -1\n" if $debug; +						push(@tag,$1); +						$tag{$1}=-1; +					} +				} else { +					print STDERR "Warning: $file: taking only '!defined($1)' of complicated expression: $_" if $verbose; # because it is O... +					print STDERR "DEBUG: $file: found tag $1 = -1\n" if $debug; +					push(@tag,$1); +					$tag{$1}=-1; +				} +			} elsif (/^\#\s*ifdef\s+(\S*)/) { +				push(@tag,"-"); +				push(@tag,$1); +				$tag{$1}=1; +				print STDERR "DEBUG: $file: found tag $1 = 1\n" if $debug; +			} elsif (/^\#\s*if\s+defined\s*\(([^\)]+)\)/) { +				push(@tag,"-"); +				if (/^\#\s*if\s+(defined\s*\(([^\)]+)\)(\s+\|\|\s+defined\s*\(([^\)]+)\))*)$/) { +					my $tmp_1 = $1; +					my $tmp_; +					foreach $tmp_ (split '\|\|',$tmp_1) { +						$tmp_ =~ /defined\s*\(([^\)]+)\)/; +						print STDERR "DEBUG: $file: found tag $1 = 1\n" if $debug; +						push(@tag,$1); +						$tag{$1}=1; +					} +				} else { +					print STDERR "Warning: $file: taking only 'defined($1)' of complicated expression: $_\n" if $verbose; # because it is O... +					print STDERR "DEBUG: $file: found tag $1 = 1\n" if $debug; +					push(@tag,$1); +					$tag{$1}=1; +				} +			} elsif (/^\#\s*error\s+(\w+) is disabled\./) { +				my $tag_i = $#tag; +				while($tag[$tag_i] ne "-") { +					if ($tag[$tag_i] eq "OPENSSL_NO_".$1) { +						$tag{$tag[$tag_i]}=2; +						print STDERR "DEBUG: $file: chaged tag $1 = 2\n" if $debug; +					} +					$tag_i--; +				} +			} elsif (/^\#\s*endif/) { +				my $tag_i = $#tag; +				while($tag_i > 0 && $tag[$tag_i] ne "-") { +					my $t=$tag[$tag_i]; +					print STDERR "DEBUG: \$t=\"$t\"\n" if $debug; +					if ($tag{$t}==2) { +						$tag{$t}=-1; +					} else { +						$tag{$t}=0; +					} +					print STDERR "DEBUG: $file: changed tag ",$t," = ",$tag{$t},"\n" if $debug; +					pop(@tag); +					if ($t =~ /^OPENSSL_NO_([A-Z0-9_]+)$/) { +						$t=$1; +					} elsif($t =~ /^OPENSSL_USE_([A-Z0-9_]+)$/) { +						$t=$1; +					} else { +						$t=""; +					} +					if ($t ne "" +					    && !grep(/^$t$/, @known_algorithms)) { +						$unknown_algorithms{$t} = 1; +						#print STDERR "DEBUG: Added as unknown algorithm: $t\n" if $debug; +					} +					$tag_i--; +				} +				pop(@tag); +			} elsif (/^\#\s*else/) { +				my $tag_i = $#tag; +				die "$file unmatched else\n" if $tag_i < 0; +				while($tag[$tag_i] ne "-") { +					my $t=$tag[$tag_i]; +					$tag{$t}= -$tag{$t}; +					print STDERR "DEBUG: $file: changed tag ",$t," = ",$tag{$t},"\n" if $debug; +					$tag_i--; +				} +			} elsif (/^\#\s*if\s+1/) { +				push(@tag,"-"); +				# Dummy tag +				push(@tag,"TRUE"); +				$tag{"TRUE"}=1; +				print STDERR "DEBUG: $file: found 1\n" if $debug; +			} elsif (/^\#\s*if\s+0/) { +				push(@tag,"-"); +				# Dummy tag +				push(@tag,"TRUE"); +				$tag{"TRUE"}=-1; +				print STDERR "DEBUG: $file: found 0\n" if $debug; +			} elsif (/^\#\s*if\s+/) { +				#Some other unrecognized "if" style +				push(@tag,"-"); +				print STDERR "Warning: $file: ignoring unrecognized expression: $_\n" if $verbose; # because it is O... +			} elsif (/^\#\s*define\s+(\w+)\s+(\w+)/ +				 && $symhacking && $tag{'TRUE'} != -1) { +				# This is for aliasing.  When we find an alias, +				# we have to invert +				&$make_variant($1,$2); +				print STDERR "DEBUG: $file: defined $1 = $2\n" if $debug; +			} +			if (/^\#/) { +				@current_platforms = +				    grep(!/^$/, +					 map { $tag{$_} == 1 ? $_ : +						   $tag{$_} == -1 ? "!".$_  : "" } +					 @known_platforms); +				push @current_platforms +				    , grep(!/^$/, +					   map { $tag{"OPENSSL_SYS_".$_} == 1 ? $_ : +						     $tag{"OPENSSL_SYS_".$_} == -1 ? "!".$_  : "" } +					   @known_ossl_platforms); +				@current_algorithms = (); +				@current_algorithms = +				    grep(!/^$/, +					 map { $tag{"OPENSSL_NO_".$_} == -1 ? $_ : "" } +					 @known_algorithms); +				push @current_algorithms +				    , grep(!/^$/, +					 map { $tag{"OPENSSL_USE_".$_} == 1 ? $_ : "" } +					 @known_algorithms); +				$def .= +				    "#INFO:" +					.join(',',@current_platforms).":" +					    .join(',',@current_algorithms).";"; +				next; +			} +			if ($tag{'TRUE'} != -1) { +				if (/^\s*DEFINE_STACK_OF\s*\(\s*(\w*)\s*\)/ +						|| /^\s*DEFINE_STACK_OF_CONST\s*\(\s*(\w*)\s*\)/) { +					next; +				} elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) { +					$def .= "int d2i_$3(void);"; +					$def .= "int i2d_$3(void);"; +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int $2_it;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("$2_it","$2_it", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +					next; +				} elsif (/^\s*DECLARE_ASN1_FUNCTIONS_fname\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) { +					$def .= "int d2i_$3(void);"; +					$def .= "int i2d_$3(void);"; +					$def .= "int $3_free(void);"; +					$def .= "int $3_new(void);"; +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int $2_it;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("$2_it","$2_it", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +					next; +				} elsif (/^\s*DECLARE_ASN1_FUNCTIONS\s*\(\s*(\w*)\s*\)/ || +					 /^\s*DECLARE_ASN1_FUNCTIONS_const\s*\(\s*(\w*)\s*\)/) { +					$def .= "int d2i_$1(void);"; +					$def .= "int i2d_$1(void);"; +					$def .= "int $1_free(void);"; +					$def .= "int $1_new(void);"; +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int $1_it;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("$1_it","$1_it", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +					next; +				} elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS_const\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) { +					$def .= "int d2i_$2(void);"; +					$def .= "int i2d_$2(void);"; +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int $2_it;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("$2_it","$2_it", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +					next; +				} elsif (/^\s*DECLARE_ASN1_ALLOC_FUNCTIONS\s*\(\s*(\w*)\s*\)/) { +					$def .= "int $1_free(void);"; +					$def .= "int $1_new(void);"; +					next; +				} elsif (/^\s*DECLARE_ASN1_FUNCTIONS_name\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) { +					$def .= "int d2i_$2(void);"; +					$def .= "int i2d_$2(void);"; +					$def .= "int $2_free(void);"; +					$def .= "int $2_new(void);"; +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int $2_it;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("$2_it","$2_it", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +					next; +				} elsif (/^\s*DECLARE_ASN1_ITEM\s*\(\s*(\w*)\s*\)/) { +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int $1_it;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("$1_it","$1_it", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +					next; +				} elsif (/^\s*DECLARE_ASN1_NDEF_FUNCTION\s*\(\s*(\w*)\s*\)/) { +					$def .= "int i2d_$1_NDEF(void);"; +				} elsif (/^\s*DECLARE_ASN1_SET_OF\s*\(\s*(\w*)\s*\)/) { +					next; +				} elsif (/^\s*DECLARE_ASN1_PRINT_FUNCTION\s*\(\s*(\w*)\s*\)/) { +					$def .= "int $1_print_ctx(void);"; +					next; +				} elsif (/^\s*DECLARE_ASN1_PRINT_FUNCTION_name\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) { +					$def .= "int $2_print_ctx(void);"; +					next; +				} elsif (/^\s*DECLARE_PKCS12_STACK_OF\s*\(\s*(\w*)\s*\)/) { +					next; +				} elsif (/^DECLARE_PEM_rw\s*\(\s*(\w*)\s*,/ || +					 /^DECLARE_PEM_rw_cb\s*\(\s*(\w*)\s*,/ || +					 /^DECLARE_PEM_rw_const\s*\(\s*(\w*)\s*,/ ) { +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',"STDIO",@current_algorithms).";"; +					$def .= "int PEM_read_$1(void);"; +					$def .= "int PEM_write_$1(void);"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Things that are everywhere +					$def .= "int PEM_read_bio_$1(void);"; +					$def .= "int PEM_write_bio_$1(void);"; +					next; +				} elsif (/^DECLARE_PEM_write\s*\(\s*(\w*)\s*,/ || +					/^DECLARE_PEM_write_const\s*\(\s*(\w*)\s*,/ || +					 /^DECLARE_PEM_write_cb\s*\(\s*(\w*)\s*,/ ) { +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',"STDIO",@current_algorithms).";"; +					$def .= "int PEM_write_$1(void);"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Things that are everywhere +					$def .= "int PEM_write_bio_$1(void);"; +					next; +				} elsif (/^DECLARE_PEM_read\s*\(\s*(\w*)\s*,/ || +					 /^DECLARE_PEM_read_cb\s*\(\s*(\w*)\s*,/ ) { +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',"STDIO",@current_algorithms).";"; +					$def .= "int PEM_read_$1(void);"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',"STDIO",@current_algorithms).";"; +					# Things that are everywhere +					$def .= "int PEM_read_bio_$1(void);"; +					next; +				} elsif (/^OPENSSL_DECLARE_GLOBAL\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) { +					# Variant for platforms that do not +					# have to access globale variables +					# in shared libraries through functions +					$def .= +					    "#INFO:" +						.join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					$def .= "OPENSSL_EXTERN int _shadow_$2;"; +					$def .= +					    "#INFO:" +						.join(',',@current_platforms).":" +						    .join(',',@current_algorithms).";"; +					# Variant for platforms that have to +					# access globale variables in shared +					# libraries through functions +					&$make_variant("_shadow_$2","_shadow_$2", +						      "EXPORT_VAR_AS_FUNCTION", +						      "FUNCTION"); +				} elsif (/^\s*DEPRECATEDIN/) { +					$parens = count_parens($_); +					if ($parens == 0) { +						$def .= do_deprecated($_, +							\@current_platforms, +							\@current_algorithms); +					} else { +						$stored_multiline = $_; +						print STDERR "DEBUG: Found multiline DEPRECATEDIN starting with: $stored_multiline\n" if $debug; +						next; +					} +				} elsif ($tag{'CONST_STRICT'} != 1) { +					if (/\{|\/\*|\([^\)]*$/) { +						$line = $_; +					} else { +						$def .= $_; +					} +				} +			} +		} +		close(IN); +		die "$file: Unmatched tags\n" if $#tag >= 0; + +		my $algs; +		my $plays; + +		print STDERR "DEBUG: postprocessing ----------\n" if $debug; +		foreach (split /;/, $def) { +			my $s; my $k = "FUNCTION"; my $p; my $a; +			s/^[\n\s]*//g; +			s/[\n\s]*$//g; +			next if(/\#undef/); +			next if(/typedef\W/); +			next if(/\#define/); + +			print STDERR "TRACE: processing $_\n" if $trace && !/^\#INFO:/; +			# Reduce argument lists to empty () +			# fold round brackets recursively: (t(*v)(t),t) -> (t{}{},t) -> {} +			my $nsubst = 1; # prevent infinite loop, e.g., on  int fn() +			while($nsubst && /\(.*\)/s) { +				$nsubst = s/\([^\(\)]+\)/\{\}/gs; +				$nsubst+= s/\(\s*\*\s*(\w+)\s*\{\}\s*\)/$1/gs;	#(*f{}) -> f +			} +			# pretend as we didn't use curly braces: {} -> () +			s/\{\}/\(\)/gs; + +			s/STACK_OF\(\)/void/gs; +			s/LHASH_OF\(\)/void/gs; + +			print STDERR "DEBUG: \$_ = \"$_\"\n" if $debug; +			if (/^\#INFO:([^:]*):(.*)$/) { +				$plats = $1; +				$algs = $2; +				print STDERR "DEBUG: found info on platforms ($plats) and algorithms ($algs)\n" if $debug; +				next; +			} elsif (/^\s*OPENSSL_EXTERN\s.*?(\w+(\{[0-9]+\})?)(\[[0-9]*\])*\s*$/) { +				$s = $1; +				$k = "VARIABLE"; +				print STDERR "DEBUG: found external variable $s\n" if $debug; +			} elsif (/TYPEDEF_\w+_OF/s) { +				next; +			} elsif (/(\w+)\s*\(\).*/s) {	# first token prior [first] () is +				$s = $1;		# a function name! +				print STDERR "DEBUG: found function $s\n" if $debug; +			} elsif (/\(/ and not (/=/)) { +				print STDERR "File $file: cannot parse: $_;\n"; +				next; +			} else { +				next; +			} + +			$syms{$s} = 1; +			$kind{$s} = $k; + +			$p = $plats; +			$a = $algs; + +			$platform{$s} = +			    &reduce_platforms((defined($platform{$s})?$platform{$s}.',':"").$p); +			$algorithm{$s} .= ','.$a; + +			if (defined($variant{$s})) { +				foreach $v (split /;/,$variant{$s}) { +					(my $r, my $p, my $k) = split(/:/,$v); +					my $ip = join ',',map({ /^!(.*)$/ ? $1 : "!".$_ } split /,/, $p); +					$syms{$r} = 1; +					if (!defined($k)) { $k = $kind{$s}; } +					$kind{$r} = $k."(".$s.")"; +					$algorithm{$r} = $algorithm{$s}; +					$platform{$r} = &reduce_platforms($platform{$s}.",".$p.",".$p); +					$platform{$s} = &reduce_platforms($platform{$s}.','.$ip.','.$ip); +					print STDERR "DEBUG: \$variant{\"$s\"} = ",$v,"; \$r = $r; \$p = ",$platform{$r},"; \$a = ",$algorithm{$r},"; \$kind = ",$kind{$r},"\n" if $debug; +				} +			} +			print STDERR "DEBUG: \$s = $s; \$p = ",$platform{$s},"; \$a = ",$algorithm{$s},"; \$kind = ",$kind{$s},"\n" if $debug; +		} +	} + +	# Prune the returned symbols + +        delete $syms{"bn_dump1"}; +	$platform{"BIO_s_log"} .= ",!WIN32,!macintosh"; + +	$platform{"PEM_read_NS_CERT_SEQ"} = "VMS"; +	$platform{"PEM_write_NS_CERT_SEQ"} = "VMS"; +	$platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS"; +	$platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS"; + +	# Info we know about + +	push @ret, map { $_."\\".&info_string($_,"EXIST", +					      $platform{$_}, +					      $kind{$_}, +					      $algorithm{$_}) } keys %syms; + +	if (keys %unknown_algorithms) { +		print STDERR "WARNING: mkdef.pl doesn't know the following algorithms:\n"; +		print STDERR "\t",join("\n\t",keys %unknown_algorithms),"\n"; +	} +	return(@ret); +} + +# Param: string of comma-separated platform-specs. +sub reduce_platforms +{ +	my ($platforms) = @_; +	my $pl = defined($platforms) ? $platforms : ""; +	my %p = map { $_ => 0 } split /,/, $pl; +	my $ret; + +	print STDERR "DEBUG: Entered reduce_platforms with \"$platforms\"\n" +	    if $debug; +	# We do this, because if there's code like the following, it really +	# means the function exists in all cases and should therefore be +	# everywhere.  By increasing and decreasing, we may attain 0: +	# +	# ifndef WIN16 +	#    int foo(); +	# else +	#    int _fat foo(); +	# endif +	foreach $platform (split /,/, $pl) { +		if ($platform =~ /^!(.*)$/) { +			$p{$1}--; +		} else { +			$p{$platform}++; +		} +	} +	foreach $platform (keys %p) { +		if ($p{$platform} == 0) { delete $p{$platform}; } +	} + +	delete $p{""}; + +	$ret = join(',',sort(map { $p{$_} < 0 ? "!".$_ : $_ } keys %p)); +	print STDERR "DEBUG: Exiting reduce_platforms with \"$ret\"\n" +	    if $debug; +	return $ret; +} + +sub info_string +{ +	(my $symbol, my $exist, my $platforms, my $kind, my $algorithms) = @_; + +	my %a = defined($algorithms) ? +	    map { $_ => 1 } split /,/, $algorithms : (); +	my $k = defined($kind) ? $kind : "FUNCTION"; +	my $ret; +	my $p = &reduce_platforms($platforms); + +	delete $a{""}; + +	$ret = $exist; +	$ret .= ":".$p; +	$ret .= ":".$k; +	$ret .= ":".join(',',sort keys %a); +	return $ret; +} + +sub maybe_add_info +{ +	(my $name, *nums, my @symbols) = @_; +	my $sym; +	my $new_info = 0; +	my %syms=(); + +	foreach $sym (@symbols) { +		(my $s, my $i) = split /\\/, $sym; +		if (defined($nums{$s})) { +			$i =~ s/^(.*?:.*?:\w+)(\(\w+\))?/$1/; +			(my $n, my $vers, my $dummy) = split /\\/, $nums{$s}; +			if (!defined($dummy) || $i ne $dummy) { +				$nums{$s} = $n."\\".$vers."\\".$i; +				$new_info++; +				print STDERR "DEBUG: maybe_add_info for $s: \"$dummy\" => \"$i\"\n" if $debug; +			} +		} +		$syms{$s} = 1; +	} + +	my @s=sort { &parse_number($nums{$a},"n") <=> &parse_number($nums{$b},"n") } keys %nums; +	foreach $sym (@s) { +		(my $n, my $vers, my $i) = split /\\/, $nums{$sym}; +		if (!defined($syms{$sym}) && $i !~ /^NOEXIST:/) { +			$new_info++; +			print STDERR "DEBUG: maybe_add_info for $sym: -> undefined\n" if $debug; +		} +	} +	if ($new_info) { +		print STDERR "$name: $new_info old symbols have updated info\n"; +		if (!$do_rewrite) { +			print STDERR "You should do a rewrite to fix this.\n"; +		} +	} else { +	} +} + +# Param: string of comma-separated keywords, each possibly prefixed with a "!" +sub is_valid +{ +	my ($keywords_txt,$platforms) = @_; +	my (@keywords) = split /,/,$keywords_txt; +	my ($falsesum, $truesum) = (0, 1); + +	# Param: one keyword +	sub recognise +	{ +		my ($keyword,$platforms) = @_; + +		if ($platforms) { +			# platforms +			if ($keyword eq "UNIX" && $UNIX) { 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. +			if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && $W32) { +				return 1; +			} +			if ($keyword eq "ZLIB" && $zlib) { return 1; } +			return 0; +		} else { +			# algorithms +			if ($disabled_algorithms{$keyword} == 1) { return 0;} + +			# Nothing recognise as true +			return 1; +		} +	} + +	foreach $k (@keywords) { +		if ($k =~ /^!(.*)$/) { +			$falsesum += &recognise($1,$platforms); +		} else { +			$truesum *= &recognise($k,$platforms); +		} +	} +	print STDERR "DEBUG: [",$#keywords,",",$#keywords < 0,"] is_valid($keywords_txt) => (\!$falsesum) && $truesum = ",(!$falsesum) && $truesum,"\n" if $debug; +	return (!$falsesum) && $truesum; +} + +sub print_test_file +{ +	(*OUT,my $name,*nums,my $testall,my @symbols)=@_; +	my $n = 1; my @e; my @r; +	my $sym; my $prev = ""; my $prefSSLeay; + +	(@e)=grep(/^SSLeay(\{[0-9]+\})?\\.*?:.*?:.*/,@symbols); +	(@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:.*/ && !/^SSLeay(\{[0-9]+\})?\\.*?:.*?:.*/,@symbols); +	@symbols=((sort @e),(sort @r)); + +	foreach $sym (@symbols) { +		(my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/; +		my $v = 0; +		$v = 1 if $i=~ /^.*?:.*?:VARIABLE/; +		my $p = ($i =~ /^[^:]*:([^:]*):/,$1); +		my $a = ($i =~ /^[^:]*:[^:]*:[^:]*:([^:]*)/,$1); +		if (!defined($nums{$s})) { +			print STDERR "Warning: $s does not have a number assigned\n" +			    if(!$do_update); +		} elsif (is_valid($p,1) && is_valid($a,0)) { +			my $s2 = ($s =~ /^(.*?)(\{[0-9]+\})?$/, $1); +			if ($prev eq $s2) { +				print OUT "\t/* The following has already appeared previously */\n"; +				print STDERR "Warning: Symbol '",$s2,"' redefined. old=",($nums{$prev} =~ /^(.*?)\\/,$1),", new=",($nums{$s2} =~ /^(.*?)\\/,$1),"\n"; +			} +			$prev = $s2;	# To warn about duplicates... + +			(my $nn, my $vers, my $ni) = split /\\/, $nums{$s2}; +			if ($v) { +				print OUT "\textern int $s2; /* type unknown */ /* $nn $ni */\n"; +			} else { +				print OUT "\textern int $s2(); /* type unknown */ /* $nn $ni */\n"; +			} +		} +	} +} + +sub get_version +{ +   return $config{version}; +} + +sub print_def_file +{ +	(*OUT,my $name,*nums,my @symbols)=@_; +	my $n = 1; my @e; my @r; my @v; my $prev=""; +	my $liboptions=""; +	my $libname = $name; +	my $http_vendor = 'www.openssl.org/'; +	my $version = get_version(); +	my $what = "OpenSSL: implementation of Secure Socket Layer"; +	my $description = "$what $version, $name - http://$http_vendor"; +	my $prevsymversion = "", $prevprevsymversion = ""; +        # For VMS +        my $prevnum = 0; +        my $symvtextcount = 0; + +	if ($W32) +		{ $libname.="32"; } + +        if ($W32) +                { +                print OUT <<"EOF"; +; +; Definition file for the DLL version of the $name library from OpenSSL +; + +LIBRARY         $libname	$liboptions + +EOF + +		print "EXPORTS\n"; +                } +        elsif ($VMS) +                { +                print OUT <<"EOF"; +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(- +EOF +                $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-" +                } + +	(@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:FUNCTION/,@symbols); +	(@v)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:VARIABLE/,@symbols); +        if ($VMS) { +            # VMS needs to have the symbols on slot number order +            @symbols=(map { $_->[1] } +                      sort { $a->[0] <=> $b->[0] } +                      map { (my $s, my $i) = $_ =~ /^(.*?)\\(.*)$/; +                            die "Error: $s doesn't have a number assigned\n" +                                if !defined($nums{$s}); +                            (my $n, my @rest) = split /\\/, $nums{$s}; +                            [ $n, $_ ] } (@e, @r, @v)); +        } else { +            @symbols=((sort @e),(sort @r), (sort @v)); +        } + +	my ($baseversion, $currversion) = get_openssl_version(); +	my $thisversion; +	do { +		if (!defined($thisversion)) { +			$thisversion = $baseversion; +		} else { +			$thisversion = get_next_version($thisversion); +		} +		foreach $sym (@symbols) { +			(my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/; +			my $v = 0; +			$v = 1 if $i =~ /^.*?:.*?:VARIABLE/; +			if (!defined($nums{$s})) { +				die "Error: $s does not have a number assigned\n" +					if(!$do_update); +			} else { +				(my $n, my $symversion, my $dummy) = split /\\/, $nums{$s}; +				my %pf = (); +				my $p = ($i =~ /^[^:]*:([^:]*):/,$1); +				my $a = ($i =~ /^[^:]*:[^:]*:[^:]*:([^:]*)/,$1); +				if (is_valid($p,1) && is_valid($a,0)) { +					my $s2 = ($s =~ /^(.*?)(\{[0-9]+\})?$/, $1); +					if ($prev eq $s2) { +						print STDERR "Warning: Symbol '",$s2, +							"' redefined. old=",($nums{$prev} =~ /^(.*?)\\/,$1), +							", new=",($nums{$s2} =~ /^(.*?)\\/,$1),"\n"; +					} +					$prev = $s2;	# To warn about duplicates... +					if($linux) { +						next if $symversion ne $thisversion; +						if ($symversion ne $prevsymversion) { +							if ($prevsymversion ne "") { +								if ($prevprevsymversion ne "") { +									print OUT "} OPENSSL${SO_VARIANT}_" +												."$prevprevsymversion;\n\n"; +								} else { +									print OUT "};\n\n"; +								} +							} +							print OUT "OPENSSL${SO_VARIANT}_$symversion {\n    global:\n"; +							$prevprevsymversion = $prevsymversion; +							$prevsymversion = $symversion; +						} +						print OUT "        $s2;\n"; +                                        } elsif ($VMS) { +                                            while(++$prevnum < $n) { +                                                my $symline=" ,SPARE -\n  ,SPARE -\n"; +                                                if ($symvtextcount + length($symline) - 2 > 1024) { +                                                    print OUT ")\nSYMBOL_VECTOR=(-\n"; +                                                    $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-" +                                                } +                                                if ($symvtextcount == 16) { +                                                    # Take away first comma +                                                    $symline =~ s/,//; +                                                } +                                                print OUT $symline; +                                                $symvtextcount += length($symline) - 2; +                                            } +                                            (my $s_uc = $s) =~ tr/a-z/A-Z/; +                                            my $symtype= +                                                $v ? "DATA" : "PROCEDURE"; +                                            my $symline= +                                                ($s_uc ne $s +                                                 ? " ,$s_uc/$s=$symtype -\n  ,$s=$symtype -\n" +                                                 : " ,$s=$symtype -\n  ,SPARE -\n"); +                                            if ($symvtextcount + length($symline) - 2 > 1024) { +                                                print OUT ")\nSYMBOL_VECTOR=(-\n"; +                                                $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-" +                                            } +                                            if ($symvtextcount == 16) { +                                                # Take away first comma +                                                $symline =~ s/,//; +                                            } +                                            print OUT $symline; +                                            $symvtextcount += length($symline) - 2; +					} elsif($v) { +						printf OUT "    %s%-39s DATA\n", +								($W32)?"":"_",$s2; +					} else { +						printf OUT "    %s%s\n", +								($W32)?"":"_",$s2; +					} +				} +			} +		} +	} while ($linux && $thisversion ne $currversion); +	if ($linux) { +		if ($prevprevsymversion ne "") { +			print OUT "    local: *;\n} OPENSSL${SO_VARIANT}_$prevprevsymversion;\n\n"; +		} else { +			print OUT "    local: *;\n};\n\n"; +		} +	} elsif ($VMS) { +            print OUT ")\n"; +            (my $libvmaj, my $libvmin, my $libvedit) = +                $currversion =~ /^(\d+)_(\d+)_(\d+)$/; +            # The reason to multiply the edit number with 100 is to make space +            # for the possibility that we want to encode the patch letters +            print OUT "GSMATCH=LEQUAL,",($libvmaj * 100 + $libvmin),",",($libvedit * 100),"\n"; +        } +	printf OUT "\n"; +} + +sub load_numbers +{ +	my($name)=@_; +	my(@a,%ret); +	my $prevversion; + +	$max_num = 0; +	$num_noinfo = 0; +	$prev = ""; +	$prev_cnt = 0; + +	my ($baseversion, $currversion) = get_openssl_version(); + +	open(IN,"<$name") || die "unable to open $name:$!\n"; +	while (<IN>) { +		s|\R$||;        # Better chomp +		s/#.*$//; +		next if /^\s*$/; +		@a=split; +		if (defined $ret{$a[0]}) { +			# This is actually perfectly OK +			#print STDERR "Warning: Symbol '",$a[0],"' redefined. old=",$ret{$a[0]},", new=",$a[1],"\n"; +		} +		if ($max_num > $a[1]) { +			print STDERR "Warning: Number decreased from ",$max_num," to ",$a[1],"\n"; +		} +		elsif ($max_num == $a[1]) { +			# This is actually perfectly OK +			#print STDERR "Warning: Symbol ",$a[0]," has same number as previous ",$prev,": ",$a[1],"\n"; +			if ($a[0] eq $prev) { +				$prev_cnt++; +				$a[0] .= "{$prev_cnt}"; +			} +		} +		else { +			$prev_cnt = 0; +		} +		if ($#a < 2) { +			# Existence will be proven later, in do_defs +			$ret{$a[0]}=$a[1]; +			$num_noinfo++; +		} else { +			#Sanity check the version number +			if (defined $prevversion) { +				check_version_lte($prevversion, $a[2]); +			} +			check_version_lte($a[2], $currversion); +			$prevversion = $a[2]; +			$ret{$a[0]}=$a[1]."\\".$a[2]."\\".$a[3]; # \\ is a special marker +		} +		$max_num = $a[1] if $a[1] > $max_num; +		$prev=$a[0]; +	} +	if ($num_noinfo) { +		print STDERR "Warning: $num_noinfo symbols were without info." if $verbose || !$do_rewrite; +		if ($do_rewrite) { +			printf STDERR "  The rewrite will fix this.\n" if $verbose; +		} else { +			printf STDERR "  You should do a rewrite to fix this.\n"; +		} +	} +	close(IN); +	return(%ret); +} + +sub parse_number +{ +	(my $str, my $what) = @_; +	(my $n, my $v, my $i) = split(/\\/,$str); +	if ($what eq "n") { +		return $n; +	} else { +		return $i; +	} +} + +sub rewrite_numbers +{ +	(*OUT,$name,*nums,@symbols)=@_; +	my $thing; + +	my @r = grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:\w+\(\w+\)/,@symbols); +	my $r; my %r; my %rsyms; +	foreach $r (@r) { +		(my $s, my $i) = split /\\/, $r; +		my $a = $1 if $i =~ /^.*?:.*?:\w+\((\w+)\)/; +		$i =~ s/^(.*?:.*?:\w+)\(\w+\)/$1/; +		$r{$a} = $s."\\".$i; +		$rsyms{$s} = 1; +	} + +	my %syms = (); +	foreach $_ (@symbols) { +		(my $n, my $i) = split /\\/; +		$syms{$n} = 1; +	} + +	my @s=sort { +	    &parse_number($nums{$a},"n") <=> &parse_number($nums{$b},"n") +	    || $a cmp $b +	} keys %nums; +	foreach $sym (@s) { +		(my $n, my $vers, my $i) = split /\\/, $nums{$sym}; +		next if defined($i) && $i =~ /^.*?:.*?:\w+\(\w+\)/; +		next if defined($rsyms{$sym}); +		print STDERR "DEBUG: rewrite_numbers for sym = ",$sym,": i = ",$i,", n = ",$n,", rsym{sym} = ",$rsyms{$sym},"syms{sym} = ",$syms{$sym},"\n" if $debug; +		$i="NOEXIST::FUNCTION:" +			if !defined($i) || $i eq "" || !defined($syms{$sym}); +		my $s2 = $sym; +		$s2 =~ s/\{[0-9]+\}$//; +		printf OUT "%s%-39s %d\t%s\t%s\n","",$s2,$n,$vers,$i; +		if (exists $r{$sym}) { +			(my $s, $i) = split /\\/,$r{$sym}; +			my $s2 = $s; +			$s2 =~ s/\{[0-9]+\}$//; +			printf OUT "%s%-39s %d\t%s\t%s\n","",$s2,$n,$vers,$i; +		} +	} +} + +sub update_numbers +{ +	(*OUT,$name,*nums,my $start_num, my @symbols)=@_; +	my $new_syms = 0; +	my $basevers; +	my $vers; + +	($basevers, $vers) = get_openssl_version(); + +	my @r = grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:\w+\(\w+\)/,@symbols); +	my $r; my %r; my %rsyms; +	foreach $r (@r) { +		(my $s, my $i) = split /\\/, $r; +		my $a = $1 if $i =~ /^.*?:.*?:\w+\((\w+)\)/; +		$i =~ s/^(.*?:.*?:\w+)\(\w+\)/$1/; +		$r{$a} = $s."\\".$i; +		$rsyms{$s} = 1; +	} + +	foreach $sym (@symbols) { +		(my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/; +		next if $i =~ /^.*?:.*?:\w+\(\w+\)/; +		next if defined($rsyms{$sym}); +		die "ERROR: Symbol $sym had no info attached to it." +		    if $i eq ""; +		if (!exists $nums{$s}) { +			$new_syms++; +			my $s2 = $s; +			$s2 =~ s/\{[0-9]+\}$//; +			printf OUT "%s%-39s %d\t%s\t%s\n","",$s2, ++$start_num,$vers,$i; +			if (exists $r{$s}) { +				($s, $i) = split /\\/,$r{$s}; +				$s =~ s/\{[0-9]+\}$//; +				printf OUT "%s%-39s %d\t%s\t%s\n","",$s, $start_num,$vers,$i; +			} +		} +	} +	if($new_syms) { +		print STDERR "$name: Added $new_syms new symbols\n"; +	} else { +		print STDERR "$name: No new symbols added\n"; +	} +} + +sub check_existing +{ +	(*nums, my @symbols)=@_; +	my %existing; my @remaining; +	@remaining=(); +	foreach $sym (@symbols) { +		(my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/; +		$existing{$s}=1; +	} +	foreach $sym (keys %nums) { +		if (!exists $existing{$sym}) { +			push @remaining, $sym; +		} +	} +	if(@remaining) { +		print STDERR "The following symbols do not seem to exist:\n"; +		foreach $sym (@remaining) { +			print STDERR "\t",$sym,"\n"; +		} +	} +} + +sub count_parens +{ +	my $line = shift(@_); + +	my $open = $line =~ tr/\(//; +	my $close = $line =~ tr/\)//; + +	return $open - $close; +} + +#Parse opensslv.h to get the current version number. Also work out the base +#version, i.e. the lowest version number that is binary compatible with this +#version +sub get_openssl_version() +{ +	my $fn = catfile($config{sourcedir},"include","openssl","opensslv.h"); +	open (IN, "$fn") || die "Can't open opensslv.h"; + +	while(<IN>) { +		if (/OPENSSL_VERSION_TEXT\s+"OpenSSL (\d\.\d\.)(\d[a-z]*)(-| )/) { +			my $suffix = $2; +			(my $baseversion = $1) =~ s/\./_/g; +			close IN; +			return ($baseversion."0", $baseversion.$suffix); +		} +	} +	die "Can't find OpenSSL version number\n"; +} + +#Given an OpenSSL version number, calculate the next version number. If the +#version number gets to a.b.czz then we go to a.b.(c+1) +sub get_next_version() +{ +	my $thisversion = shift; + +	my ($base, $letter) = $thisversion =~ /^(\d_\d_\d)([a-z]{0,2})$/; + +	if ($letter eq "zz") { +		my $lastnum = substr($base, -1); +		return substr($base, 0, length($base)-1).(++$lastnum); +	} +	return $base.get_next_letter($letter); +} + +#Given the letters off the end of an OpenSSL version string, calculate what +#the letters for the next release would be. +sub get_next_letter() +{ +	my $thisletter = shift; +	my $baseletter = ""; +	my $endletter; + +	if ($thisletter eq "") { +		return "a"; +	} +	if ((length $thisletter) > 1) { +		($baseletter, $endletter) = $thisletter =~ /([a-z]+)([a-z])/; +	} else { +		$endletter = $thisletter; +	} + +	if ($endletter eq "z") { +		return $thisletter."a"; +	} else { +		return $baseletter.(++$endletter); +	} +} + +#Check if a version is less than or equal to the current version. Its a fatal +#error if not. They must also only differ in letters, or the last number (i.e. +#the first two numbers must be the same) +sub check_version_lte() +{ +	my ($testversion, $currversion) = @_; +	my $lentv; +	my $lencv; +	my $cvbase; + +	my ($cvnums) = $currversion =~ /^(\d_\d_\d)[a-z]*$/; +	my ($tvnums) = $testversion =~ /^(\d_\d_\d)[a-z]*$/; + +	#Die if we can't parse the version numbers or they don't look sane +	die "Invalid version number: $testversion and $currversion\n" +		if (!defined($cvnums) || !defined($tvnums) +			|| length($cvnums) != 5 +			|| length($tvnums) != 5); + +	#If the base versions (without letters) don't match check they only differ +	#in the last number +	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)); +		return; +	} +	#If we get here then the base version (i.e. the numbers) are the same - they +	#only differ in the letters + +	$lentv = length $testversion; +	$lencv = length $currversion; + +	#If the testversion has more letters than the current version then it must +	#be later (or malformed) +	if ($lentv > $lencv) { +		die "Invalid version number: $testversion " +			."is greater than $currversion\n"; +	} + +	#Get the last letter from the current version +	my ($cvletter) = $currversion =~ /([a-z])$/; +	if (defined $cvletter) { +		($cvbase) = $currversion =~ /(\d_\d_\d[a-z]*)$cvletter$/; +	} else { +		$cvbase = $currversion; +	} +	die "Unable to parse version number $currversion" if (!defined $cvbase); +	my $tvbase; +	my ($tvletter) = $testversion =~ /([a-z])$/; +	if (defined $tvletter) { +		($tvbase) = $testversion =~ /(\d_\d_\d[a-z]*)$tvletter$/; +	} else { +		$tvbase = $testversion; +	} +	die "Unable to parse version number $testversion" if (!defined $tvbase); + +	if ($lencv > $lentv) { +		#If current version has more letters than testversion then testversion +		#minus the final letter must be a substring of the current version +		die "Invalid version number $testversion " +			."is greater than $currversion or is invalid\n" +			if (index($cvbase, $tvbase) != 0); +	} else { +		#If both versions have the same number of letters then they must be +		#equal up to the last letter, and the last letter in testversion must +		#be less than or equal to the last letter in current version. +		die "Invalid version number $testversion " +			."is greater than $currversion\n" +			if (($cvbase ne $tvbase) && ($tvletter gt $cvletter)); +	} +} + +sub do_deprecated() +{ +	my ($decl, $plats, $algs) = @_; +	$decl =~ /^\s*(DEPRECATEDIN_\d+_\d+_\d+)\s*\((.*)\)\s*$/ +            or die "Bad DEPRECTEDIN: $decl\n"; +	my $info1 .= "#INFO:"; +	$info1 .= join(',', @{$plats}) . ":"; +	my $info2 = $info1; +	$info1 .= join(',',@{$algs}, $1) . ";"; +	$info2 .= join(',',@{$algs}) . ";"; +	return $info1 . $2 . ";" . $info2; +} diff --git a/openssl-1.1.0h/util/mkdir-p.pl b/openssl-1.1.0h/util/mkdir-p.pl new file mode 100755 index 0000000..3280602 --- /dev/null +++ b/openssl-1.1.0h/util/mkdir-p.pl @@ -0,0 +1,44 @@ +#! /usr/bin/env perl +# Copyright 1999-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 + +# On some systems, the -p option to mkdir (= also create any missing parent +# directories) is not available. + +my $arg; + +foreach $arg (@ARGV) { +  $arg =~ tr|\\|/|; +  &do_mkdir_p($arg); +} + + +sub do_mkdir_p { +  local($dir) = @_; + +  $dir =~ s|/*\Z(?!\n)||s; + +  if (-d $dir) { +    return; +  } + +  if ($dir =~ m|[^/]/|s) { +    local($parent) = $dir; +    $parent =~ s|[^/]*\Z(?!\n)||s; + +    do_mkdir_p($parent); +  } + +  unless (mkdir($dir, 0777)) { +    if (-d $dir) { +      # We raced against another instance doing the same thing. +      return; +    } +    die "Cannot create directory $dir: $!\n"; +  } +  print "created directory `$dir'\n"; +} diff --git a/openssl-1.1.0h/util/mkerr.pl b/openssl-1.1.0h/util/mkerr.pl new file mode 100644 index 0000000..79c8cfc --- /dev/null +++ b/openssl-1.1.0h/util/mkerr.pl @@ -0,0 +1,771 @@ +#! /usr/bin/env perl +# Copyright 1999-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 + +my $config = "crypto/err/openssl.ec"; +my $debug = 0; +my $unref = 0; +my $rebuild = 0; +my $static = 1; +my $recurse = 0; +my $reindex = 0; +my $dowrite = 0; +my $staticloader = ""; +my @t = localtime(); +my $YEAR = @t[5] + 1900; + +my $pack_errcode; +my $load_errcode; + +my $errcount; +my $year = (localtime)[5] + 1900; + +while (@ARGV) { +	my $arg = $ARGV[0]; +	if($arg eq "-conf") { +		shift @ARGV; +		$config = shift @ARGV; +	} elsif($arg eq "-hprefix") { +		shift @ARGV; +		$hprefix = shift @ARGV; +	} elsif($arg eq "-debug") { +		$debug = 1; +		$unref = 1; +		shift @ARGV; +	} elsif($arg eq "-rebuild") { +		$rebuild = 1; +		shift @ARGV; +	} elsif($arg eq "-recurse") { +		$recurse = 1; +		shift @ARGV; +	} elsif($arg eq "-reindex") { +		$reindex = 1; +		shift @ARGV; +	} elsif($arg eq "-nostatic") { +		$static = 0; +		shift @ARGV; +	} elsif($arg eq "-staticloader") { +		$staticloader = "static "; +		shift @ARGV; +	} elsif($arg eq "-unref") { +		$unref = 1; +		shift @ARGV; +	} elsif($arg eq "-write") { +		$dowrite = 1; +		shift @ARGV; +	} elsif($arg eq "-help" || $arg eq "-h" || $arg eq "-?" || $arg eq "--help") { +		print STDERR <<"EOF"; +mkerr.pl [options] ... + +Options: + +  -conf F       Use the config file F instead of the default one: +                  crypto/err/openssl.ec + +  -hprefix P    Prepend the filenames in generated #include <header> +                statements with prefix P. Default: 'openssl/' (without +                the quotes, naturally) +                NOTE: not used any more because our include directory +                structure has changed. + +  -debug        Turn on debugging verbose output on stderr. + +  -rebuild      Rebuild all header and C source files, irrespective of the +                fact if any error or function codes have been added/removed. +                Default: only update files for libraries which saw change +                         (of course, this requires '-write' as well, or no +                          files will be touched!) + +  -recurse      scan a preconfigured set of directories / files for error and +                function codes: +                  (<crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, <apps/*.c>) +                When this option is NOT specified, the filelist is taken from +                the commandline instead. Here, wildcards may be embedded. (Be +                sure to escape those to prevent the shell from expanding them +                for you when you wish mkerr.pl to do so instead.) +                Default: take file list to scan from the command line. + +  -reindex      Discard the numeric values previously assigned to the error +                and function codes as extracted from the scanned header files; +                instead renumber all of them starting from 100. (Note that +                the numbers assigned through 'R' records in the config file +                remain intact.) +                Default: keep previously assigned numbers. (You are warned +                         when collisions are detected.) + +  -nostatic     Generates a different source code, where these additional  +                functions are generated for each library specified in the +                config file: +                  void ERR_load_<LIB>_strings(void); +                  void ERR_unload_<LIB>_strings(void); +                  void ERR_<LIB>_error(int f, int r, char *fn, int ln); +                  #define <LIB>err(f,r) ERR_<LIB>_error(f,r,OPENSSL_FILE,OPENSSL_LINE) +                while the code facilitates the use of these in an environment +                where the error support routines are dynamically loaded at  +                runtime. +                Default: 'static' code generation. + +  -staticloader Prefix generated functions with the 'static' scope modifier. +                Default: don't write any scope modifier prefix. + +  -unref        Print out unreferenced function and reason codes. + +  -write        Actually (over)write the generated code to the header and C  +                source files as assigned to each library through the config  +                file. +                Default: don't write. + +  -help / -h / -? / --help            Show this help text. + +  ...           Additional arguments are added to the file list to scan, +                assuming '-recurse' was NOT specified on the command line. + +EOF +		exit 1; +	} else { +		last; +	} +} + +if($recurse) { +	@source = ( <crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, <ssl/*/*.c> ) +} else { +	@source = @ARGV; +} + +# Read in the config file + +open(IN, "<$config") || die "Can't open config file $config"; + +# Parse config file + +while(<IN>) +{ +	if(/^L\s+(\S+)\s+(\S+)\s+(\S+)/) { +		$hinc{$1} = $2; +		$libinc{$2} = $1; +		$cskip{$3} = $1; +		if($3 ne "NONE") { +			$csrc{$1} = $3; +			$fmax{$1} = 100; +			$rmax{$1} = 100; +			$fassigned{$1} = ":"; +			$rassigned{$1} = ":"; +			$fnew{$1} = 0; +			$rnew{$1} = 0; +		} +	} elsif (/^F\s+(\S+)/) { +	# Add extra function with $1 +	} elsif (/^R\s+(\S+)\s+(\S+)/) { +		$rextra{$1} = $2; +		$rcodes{$1} = $2; +	} +} + +close IN; + +# Scan each header file in turn and make a list of error codes +# and function names + +while (($hdr, $lib) = each %libinc) +{ +	next if($hdr eq "NONE"); +	print STDERR "Scanning header file $hdr\n" if $debug; +	my $line = "", $def= "", $linenr = 0, $gotfile = 0, $cpp = 0; +	if (open(IN, "<$hdr")) { +	    $gotfile = 1; +	    while(<IN>) { +		$linenr++; +		print STDERR "line: $linenr\r" if $debug; + +		last if(/BEGIN\s+ERROR\s+CODES/); +		if ($line ne '') { +		    $_ = $line . $_; +		    $line = ''; +		} + +		if (/\\$/) { +		    $line = $_; +		    next; +		} + +		if(/\/\*/) { +		    if (not /\*\//) {		# multiline comment... +			$line = $_;		# ... just accumulate +			next;  +		    } else { +			s/\/\*.*?\*\///gs;	# wipe it +		    } +		} + +		if ($cpp) { +		    $cpp++ if /^#\s*if/; +		    $cpp-- if /^#\s*endif/; +		    next; +		} +		$cpp = 1 if /^#.*ifdef.*cplusplus/;  # skip "C" declaration + +		next if (/^\#/);                      # skip preprocessor directives + +		s/{[^{}]*}//gs;                      # ignore {} blocks + +		if (/\{|\/\*/) { # Add a } so editor works... +		    $line = $_; +		} else { +		    $def .= $_; +		} +	    } +	} + +	print STDERR "                                  \r" if $debug; +        $defnr = 0; +	# Delete any DECLARE_ macros +	$def =~ s/DECLARE_\w+\([\w,\s]+\)//gs; +	foreach (split /;/, $def) { +	    $defnr++; +	    print STDERR "def: $defnr\r" if $debug; + +	    # The goal is to collect function names from function declarations. + +	    s/^[\n\s]*//g; +	    s/[\n\s]*$//g; + +	    # Skip over recognized non-function declarations +	    next if(/typedef\W/ or /DECLARE_STACK_OF/ or /TYPEDEF_.*_OF/); + +	    # Remove STACK_OF(foo) +	    s/STACK_OF\(\w+\)/void/; + +	    # Reduce argument lists to empty () +	    # fold round brackets recursively: (t(*v)(t),t) -> (t{}{},t) -> {} +	    while(/\(.*\)/s) { +		s/\([^\(\)]+\)/\{\}/gs; +		s/\(\s*\*\s*(\w+)\s*\{\}\s*\)/$1/gs;	#(*f{}) -> f +	    } +	    # pretend as we didn't use curly braces: {} -> () +	    s/\{\}/\(\)/gs; + +	    if (/(\w+)\s*\(\).*/s) {	# first token prior [first] () is +		my $name = $1;		# a function name! +		$name =~ tr/[a-z]/[A-Z]/; +		$ftrans{$name} = $1; +	    } elsif (/[\(\)]/ and not (/=/)) { +		print STDERR "Header $hdr: cannot parse: $_;\n"; +	    } +	} + +	print STDERR "                                  \r" if $debug; + +	next if $reindex; + +	# Scan function and reason codes and store them: keep a note of the +	# maximum code used. + +	if ($gotfile) { +	  while(<IN>) { +		if(/^\#\s*define\s+(\S+)\s+(\S+)/) { +			$name = $1; +			$code = $2; +			next if $name =~ /^${lib}err/; +			unless($name =~ /^${lib}_([RF])_(\w+)$/) { +				print STDERR "Invalid error code $name\n"; +				next; +			} +			if($1 eq "R") { +				$rcodes{$name} = $code; +				if ($rassigned{$lib} =~ /:$code:/) { +					print STDERR "!! ERROR: $lib reason code $code assigned twice (collision at $name)\n"; +					++$errcount; +				} +				$rassigned{$lib} .= "$code:"; +				if(!(exists $rextra{$name}) && +					 ($code > $rmax{$lib}) ) { +					$rmax{$lib} = $code; +				} +			} else { +				if ($fassigned{$lib} =~ /:$code:/) { +					print STDERR "!! ERROR: $lib function code $code assigned twice (collision at $name)\n"; +					++$errcount; +				} +				$fassigned{$lib} .= "$code:"; +				if($code > $fmax{$lib}) { +					$fmax{$lib} = $code; +				} +				$fcodes{$name} = $code; +			} +		} +	  } +	} + +	if ($debug) { +		if (defined($fmax{$lib})) { +			print STDERR "Max function code fmax" . "{" . "$lib" . "} = $fmax{$lib}\n"; +			$fassigned{$lib} =~ m/^:(.*):$/; +			@fassigned = sort {$a <=> $b} split(":", $1); +			print STDERR "  @fassigned\n"; +		} +		if (defined($rmax{$lib})) { +			print STDERR "Max reason code rmax" . "{" . "$lib" . "} = $rmax{$lib}\n"; +			$rassigned{$lib} =~ m/^:(.*):$/; +			@rassigned = sort {$a <=> $b} split(":", $1); +			print STDERR "  @rassigned\n"; +		} +	} + +	if ($lib eq "SSL") { +		if ($rmax{$lib} >= 1000) { +			print STDERR "!! ERROR: SSL error codes 1000+ are reserved for alerts.\n"; +			print STDERR "!!        Any new alerts must be added to $config.\n"; +			++$errcount; +			print STDERR "\n"; +		} +	} +	close IN; +} + +# Scan each C source file and look for function and reason codes +# This is done by looking for strings that "look like" function or +# reason codes: basically anything consisting of all upper case and +# numerics which has _F_ or _R_ in it and which has the name of an +# error library at the start. This seems to work fine except for the +# oddly named structure BIO_F_CTX which needs to be ignored. +# If a code doesn't exist in list compiled from headers then mark it +# with the value "X" as a place holder to give it a value later. +# Store all function and reason codes found in %ufcodes and %urcodes +# so all those unreferenced can be printed out. + + +foreach $file (@source) { +	# Don't parse the error source file. +	next if exists $cskip{$file}; +	print STDERR "File loaded: ".$file."\r" if $debug; +	open(IN, "<$file") || die "Can't open source file $file\n"; +	my $func; +	my $linenr = 0; +	while(<IN>) { +		# skip obsoleted source files entirely! +		last if(/^#error\s+obsolete/); +		$linenr++; +		if (!/;$/ && /^\**([a-zA-Z_].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/) +			{ +			/^([^()]*(\([^()]*\)[^()]*)*)\(/; +			$1 =~ /([A-Za-z_0-9]*)$/; +			$func = $1; +			} + +		if(/(([A-Z0-9]+)_F_([A-Z0-9_]+))/) { +			next unless exists $csrc{$2}; +			next if($1 eq "BIO_F_BUFFER_CTX"); +			$ufcodes{$1} = 1; +			if(!exists $fcodes{$1}) { +				$fcodes{$1} = "X"; +				$fnew{$2}++; +			} +			$ftrans{$3} = $func unless exists $ftrans{$3}; +            if (uc $func ne $3) { +                print STDERR "ERROR: mismatch $file:$linenr $func:$3\n"; +                $errcount++; +            } +			print STDERR "Function: $1\t= $fcodes{$1} (lib: $2, name: $3)\n" if $debug;  +		} +		if(/(([A-Z0-9]+)_R_[A-Z0-9_]+)/) { +			next unless exists $csrc{$2}; +			$urcodes{$1} = 1; +			if(!exists $rcodes{$1}) { +				$rcodes{$1} = "X"; +				$rnew{$2}++; +			} +			print STDERR "Reason: $1\t= $rcodes{$1} (lib: $2)\n" if $debug;  +		}  +	} +	close IN; +} +print STDERR "                                  \n" if $debug; + +# Now process each library in turn. + +foreach $lib (keys %csrc) +{ +	my $hfile = $hinc{$lib}; +	my $cfile = $csrc{$lib}; +	if(!$fnew{$lib} && !$rnew{$lib}) { +		next unless $rebuild; +	} else { +		print STDERR "$lib:\t\t$fnew{$lib} New Functions,"; +		print STDERR " $rnew{$lib} New Reasons.\n"; +		next unless $dowrite; +	} + +	# If we get here then we have some new error codes so we +	# need to rebuild the header file and C file. + +	# Make a sorted list of error and reason codes for later use. + +	my @function = sort grep(/^${lib}_/,keys %fcodes); +	my @reasons = sort grep(/^${lib}_/,keys %rcodes); + +	# Rewrite the header file + +	$cpp = 0; +	$cplusplus = 0; +	if (open(IN, "<$hfile")) { +	    # Copy across the old file +	    while(<IN>) { +		$cplusplus = $cpp if /^#.*ifdef.*cplusplus/; +		$cpp++ if /^#\s*if/; +		$cpp-- if /^#\s*endif/; +		push @out, $_; +		last if (/BEGIN ERROR CODES/); +	    } +	    close IN; +	} else { +	    $cpp = 1; +	    $cplusplus = 1; +	    push @out, +"/*\n", +" * Copyright 1995-$YEAR The OpenSSL Project Authors. All Rights Reserved.\n", +" *\n", +" * Licensed under the OpenSSL license (the \"License\").  You may not use\n", +" * this file except in compliance with the License.  You can obtain a copy\n", +" * in the file LICENSE in the source distribution or at\n", +" * https://www.openssl.org/source/license.html\n", +" */\n", +"\n", +"#ifndef HEADER_${lib}_ERR_H\n", +"# define HEADER_${lib}_ERR_H\n", +"\n", +"# ifdef  __cplusplus\n", +"extern \"C\" {\n", +"# endif\n", +"\n", +"/* BEGIN ERROR CODES */\n"; +	} +	open (OUT, ">$hfile") || die "Can't Open File $hfile for writing\n"; + +	print OUT @out; +	undef @out; +	print OUT <<"EOF"; +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +EOF +	if($static) { +		print OUT <<"EOF"; +${staticloader}int ERR_load_${lib}_strings(void); + +EOF +	} else { +		print OUT <<"EOF"; +${staticloader}int ERR_load_${lib}_strings(void); +${staticloader}void ERR_unload_${lib}_strings(void); +${staticloader}void ERR_${lib}_error(int function, int reason, char *file, int line); +# define ${lib}err(f,r) ERR_${lib}_error((f),(r),OPENSSL_FILE,OPENSSL_LINE) + +EOF +	} +	print OUT <<"EOF"; +/* Error codes for the $lib functions. */ + +/* Function codes. */ +EOF + +	foreach $i (@function) { +		$z=48 - length($i); +		if($fcodes{$i} eq "X") { +			$fassigned{$lib} =~ m/^:([^:]*):/; +			$findcode = $1; +			if (!defined($findcode)) { +				$findcode = $fmax{$lib}; +			} +			while ($fassigned{$lib} =~ m/:$findcode:/) { +				$findcode++; +			} +			$fcodes{$i} = $findcode; +			$fassigned{$lib} .= "$findcode:"; +			print STDERR "New Function code $i\n" if $debug; +		} +		printf OUT "# define $i%s $fcodes{$i}\n"," " x $z; +	} + +	print OUT "\n/* Reason codes. */\n"; + +	foreach $i (@reasons) { +		$z=48 - length($i); +		if($rcodes{$i} eq "X") { +			$rassigned{$lib} =~ m/^:([^:]*):/; +			$findcode = $1; +			if (!defined($findcode)) { +				$findcode = $rmax{$lib}; +			} +			while ($rassigned{$lib} =~ m/:$findcode:/) { +				$findcode++; +			} +			$rcodes{$i} = $findcode; +			$rassigned{$lib} .= "$findcode:"; +			print STDERR "New Reason code   $i\n" if $debug; +		} +		printf OUT "# define $i%s $rcodes{$i}\n"," " x $z; +	} +	print OUT <<"EOF"; + +EOF +	do { +	    if ($cplusplus == $cpp) { +		print OUT "#", " "x$cpp, "ifdef  __cplusplus\n"; +		print OUT "}\n"; +		print OUT "#", " "x$cpp, "endif\n"; +	    } +	    if ($cpp-- > 0) { +		print OUT "#", " "x$cpp, "endif\n"; +	    } +	} while ($cpp); +	close OUT; + +	# Rewrite the C source file containing the error details. + +	# First, read any existing reason string definitions: +	my %err_reason_strings; +	if (open(IN,"<$cfile")) { +		my $line = ""; +		while (<IN>) { +			s|\R$||; # Better chomp +			$_ = $line . $_; +			$line = ""; +			if (/{ERR_(FUNC|REASON)\(/) { +				if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) { +					$err_reason_strings{$1} = $2; +				} elsif (/\b${lib}_F_(\w*)\b.*\"(.*)\"/) { +					if (!exists $ftrans{$1} && ($1 ne $2)) { +						print STDERR "WARNING: Mismatched function string $2\n"; +						$ftrans{$1} = $2; +					} +				} else { +					$line = $_; +				} +			} +		} +		close(IN); +	} + + +	my $hincf; +	if($static) { +		$hincf = $hfile; +		$hincf =~ s|.*include/||; +		if ($hincf =~ m|^openssl/|) { +			$hincf = "<${hincf}>"; +		} else { +			$hincf = "\"${hincf}\""; +		} +	} else { +		$hincf = "\"$hfile\""; +	} + +	# If static we know the error code at compile time so use it +	# in error definitions. + +	if ($static) +		{ +		$pack_errcode = "ERR_LIB_${lib}"; +		$load_errcode = "0"; +		} +	else +		{ +		$pack_errcode = "0"; +		$load_errcode = "ERR_LIB_${lib}"; +		} + + +	open (OUT,">$cfile") || die "Can't open $cfile for writing"; + +	print OUT <<"EOF"; +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-$YEAR 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 + */ + +#include <stdio.h> +#include <openssl/err.h> +#include $hincf + +/* BEGIN ERROR CODES */ +#ifndef OPENSSL_NO_ERR + +# define ERR_FUNC(func) ERR_PACK($pack_errcode,func,0) +# define ERR_REASON(reason) ERR_PACK($pack_errcode,0,reason) + +static ERR_STRING_DATA ${lib}_str_functs[] = { +EOF +	# Add each function code: if a function name is found then use it. +	foreach $i (@function) { +		my $fn; +		$i =~ /^${lib}_F_(\S+)$/; +		$fn = $1; +		if(exists $ftrans{$fn}) { +			$fn = $ftrans{$fn}; +		} +#		print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n"; +		if(length($i) + length($fn) > 57) { +			print OUT "    {ERR_FUNC($i),\n     \"$fn\"},\n"; +		} else { +			print OUT "    {ERR_FUNC($i), \"$fn\"},\n"; +		} +	} +	print OUT <<"EOF"; +    {0, NULL} +}; + +static ERR_STRING_DATA ${lib}_str_reasons[] = { +EOF +	# Add each reason code. +	foreach $i (@reasons) { +		my $rn; +		my $rstr = "ERR_REASON($i)"; +		if (exists $err_reason_strings{$i}) { +			$rn = $err_reason_strings{$i}; +		} else { +			$i =~ /^${lib}_R_(\S+)$/; +			$rn = $1; +			$rn =~ tr/_[A-Z]/ [a-z]/; +		} +		if(length($i) + length($rn) > 55) { +			print OUT "    {${rstr},\n     \"$rn\"},\n"; +		} else { +			print OUT "    {${rstr}, \"$rn\"},\n"; +		} +	} +if($static) { +	print OUT <<"EOF"; +    {0, NULL} +}; + +#endif + +${staticloader}int ERR_load_${lib}_strings(void) +{ +#ifndef OPENSSL_NO_ERR + +    if (ERR_func_error_string(${lib}_str_functs[0].error) == NULL) { +        ERR_load_strings($load_errcode, ${lib}_str_functs); +        ERR_load_strings($load_errcode, ${lib}_str_reasons); +    } +#endif +    return 1; +} +EOF +} else { +	print OUT <<"EOF"; +    {0, NULL} +}; + +#endif + +#ifdef ${lib}_LIB_NAME +static ERR_STRING_DATA ${lib}_lib_name[] = { +    {0, ${lib}_LIB_NAME}, +    {0, NULL} +}; +#endif + +static int ${lib}_lib_error_code = 0; +static int ${lib}_error_init = 1; + +${staticloader}int ERR_load_${lib}_strings(void) +{ +    if (${lib}_lib_error_code == 0) +        ${lib}_lib_error_code = ERR_get_next_error_library(); + +    if (${lib}_error_init) { +        ${lib}_error_init = 0; +#ifndef OPENSSL_NO_ERR +        ERR_load_strings(${lib}_lib_error_code, ${lib}_str_functs); +        ERR_load_strings(${lib}_lib_error_code, ${lib}_str_reasons); +#endif + +#ifdef ${lib}_LIB_NAME +        ${lib}_lib_name->error = ERR_PACK(${lib}_lib_error_code, 0, 0); +        ERR_load_strings(0, ${lib}_lib_name); +#endif +    } +    return 1; +} + +${staticloader}void ERR_unload_${lib}_strings(void) +{ +    if (${lib}_error_init == 0) { +#ifndef OPENSSL_NO_ERR +        ERR_unload_strings(${lib}_lib_error_code, ${lib}_str_functs); +        ERR_unload_strings(${lib}_lib_error_code, ${lib}_str_reasons); +#endif + +#ifdef ${lib}_LIB_NAME +        ERR_unload_strings(0, ${lib}_lib_name); +#endif +        ${lib}_error_init = 1; +    } +} + +${staticloader}void ERR_${lib}_error(int function, int reason, char *file, int line) +{ +    if (${lib}_lib_error_code == 0) +        ${lib}_lib_error_code = ERR_get_next_error_library(); +    ERR_PUT_error(${lib}_lib_error_code, function, reason, file, line); +} +EOF + +} + +	close OUT; +	undef %err_reason_strings; +} + +if($debug && %notrans) { +	print STDERR "The following function codes were not translated:\n"; +	foreach(sort keys %notrans) +	{ +		print STDERR "$_\n"; +	} +} + +# Make a list of unreferenced function and reason codes + +foreach (keys %fcodes) { +	push (@funref, $_) unless exists $ufcodes{$_}; +} + +foreach (keys %rcodes) { +	push (@runref, $_) unless exists $urcodes{$_}; +} + +if($unref && @funref) { +	print STDERR "The following function codes were not referenced:\n"; +	foreach(sort @funref) +	{ +		print STDERR "$_\n"; +	} +} + +if($unref && @runref) { +	print STDERR "The following reason codes were not referenced:\n"; +	foreach(sort @runref) +	{ +		print STDERR "$_\n"; +	} +} + +if($errcount) { +	print STDERR "There were errors, failing...\n\n"; +	exit $errcount; +} + diff --git a/openssl-1.1.0h/util/mkrc.pl b/openssl-1.1.0h/util/mkrc.pl new file mode 100755 index 0000000..c177349 --- /dev/null +++ b/openssl-1.1.0h/util/mkrc.pl @@ -0,0 +1,83 @@ +#! /usr/bin/env perl +# Copyright 2006-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 + +use lib "."; +use configdata; +use File::Spec::Functions; + +my $versionfile = catfile($config{sourcedir},"include/openssl/opensslv.h"); + +open FD, $versionfile or die "Couldn't open include/openssl/opensslv.h: $!\n"; +while(<FD>) { +    if (/OPENSSL_VERSION_NUMBER\s+(0x[0-9a-f]+)/i) { +	$ver = hex($1); +	$v1 = ($ver>>28); +	$v2 = ($ver>>20)&0xff; +	$v3 = ($ver>>12)&0xff; +	$v4 = ($ver>> 4)&0xff; +	$beta = $ver&0xf; +	$version = "$v1.$v2.$v3"; +	if ($beta==0xf)	{ $version .= chr(ord('a')+$v4-1) if ($v4);	} +	elsif ($beta==0){ $version .= "-dev";				} +	else		{ $version .= "-beta$beta";			} +	last; +    } +} +close(FD); + +$filename = $ARGV[0]; $filename =~ /(.*)\.([^.]+)$/; +$basename = $1; +$extname  = $2; + +if ($extname =~ /dll/i)	{ $description = "OpenSSL shared library"; } +else			{ $description = "OpenSSL application";    } + +print <<___; +#include <winver.h> + +LANGUAGE 0x09,0x01 + +1 VERSIONINFO +  FILEVERSION $v1,$v2,$v3,$v4 +  PRODUCTVERSION $v1,$v2,$v3,$v4 +  FILEFLAGSMASK 0x3fL +#ifdef _DEBUG +  FILEFLAGS 0x01L +#else +  FILEFLAGS 0x00L +#endif +  FILEOS VOS__WINDOWS32 +  FILETYPE VFT_DLL +  FILESUBTYPE 0x0L +BEGIN +    BLOCK "StringFileInfo" +    BEGIN +        BLOCK "040904b0" +        BEGIN +            // Required: +            VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0" +            VALUE "FileDescription", "$description\\0" +            VALUE "FileVersion", "$version\\0" +            VALUE "InternalName", "$basename\\0" +            VALUE "OriginalFilename", "$filename\\0" +            VALUE "ProductName", "The OpenSSL Toolkit\\0" +            VALUE "ProductVersion", "$version\\0" +            // Optional: +            //VALUE "Comments", "\\0" +            VALUE "LegalCopyright", "Copyright 1998-2016 The OpenSSL Authors. All rights reserved.\\0" +            //VALUE "LegalTrademarks", "\\0" +            //VALUE "PrivateBuild", "\\0" +            //VALUE "SpecialBuild", "\\0" +        END +    END +    BLOCK "VarFileInfo" +    BEGIN +        VALUE "Translation", 0x409, 0x4b0 +    END +END +___ diff --git a/openssl-1.1.0h/util/openssl-format-source b/openssl-1.1.0h/util/openssl-format-source new file mode 100755 index 0000000..3dcc128 --- /dev/null +++ b/openssl-1.1.0h/util/openssl-format-source @@ -0,0 +1,175 @@ +#!/bin/sh +# +# Copyright 2015-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 + +# +# openssl-format-source  +# - format source tree according to OpenSSL coding style using indent +# +# usage: +#   openssl-format-source [-v] [-n] [file|directory] ... +# +# note: the indent options assume GNU indent v2.2.10 which was released +#       Feb-2009 so if you have an older indent the options may not  +#	match what is expected +# +# any marked block comment blocks have to be moved to align manually after +# the reformatting has been completed as marking a block causes indent to  +# not move it at all ... +# + +PATH=/usr/local/bin:/bin:/usr/bin:$PATH +export PATH +HERE="`dirname $0`" + +set -e + +INDENT=indent +uname -s | grep BSD > /dev/null && type gindent > /dev/null 2>&1 && INDENT=gindent + +if [ $# -eq 0 ]; then +  echo "usage: $0 [-v] [-n] [-c] [sourcefile|sourcedir] ..." >&2 +  exit 1 +fi + +VERBOSE=false +DONT=false +STOPARGS=false +COMMENTS=false +CHANGED=false +DEBUG="" + +# for this exercise, we want to force the openssl style, so we roll +# our own indent profile, which is at a well known location +INDENT_PROFILE="$HERE/indent.pro" +export INDENT_PROFILE +if [ ! -f "$INDENT_PROFILE" ]; then +  echo "$0: unable to locate the openssl indent.pro file" >&2 +  exit 1 +fi + +# Extra arguments; for adding the comment-formatting +INDENT_ARGS="" +for i  +do +  if [ "$STOPARGS" != "true" ]; then +    case $i in +      --) STOPARGS="true"; continue;; +      -n) DONT="true"; continue;; +      -v) VERBOSE="true";  +	  echo "INDENT_PROFILE=$INDENT_PROFILE"; +	  continue;; +      -c) COMMENTS="true";  +      	  INDENT_ARGS="-fc1 -fca -cdb -sc";  +	  continue;; +      -nc) COMMENTS="true"; +	  continue;; +      -d) DEBUG='eval tee "$j.pre" |' +	  continue;; +    esac +  fi + +  if [ -d "$i" ]; then +    LIST=`find "$i" -name '*.[ch]' -print` +  else  +    if [ ! -f "$i" ]; then +      echo "$0: source file not found: $i" >&2 +      exit 1 +    fi +    LIST="$i" +  fi +   +  for j in $LIST +  do +    # ignore symlinks - we only ever process the base file - so if we +    # expand a directory tree we need to ignore any located symlinks +    if [ -d "$i" ]; then +      if [ -h "$j" ]; then +	continue; +      fi +    fi + +    if [ "$DONT" = "false" ]; then +      tmp=$(mktemp /tmp/indent.XXXXXX) +      trap 'rm -f "$tmp"' HUP INT TERM EXIT + +      case `basename $j` in  +	# the list of files that indent is unable to handle correctly +	# that we simply leave alone for manual formatting now +	obj_dat.h|aes_core.c|aes_x86core.c|ecp_nistz256.c) +	  echo "skipping $j" +	  ;; +	*) +	  if [ "$COMMENTS" = "true" ]; then +	    # we have to mark single line comments as /*- ...*/ to stop indent +	    # messing with them, run expand then indent as usual but with the +	    # the process-comments options and then undo that marking, and then  +	    # finally re-run indent without process-comments so the marked-to- +	    # be-ignored comments we did automatically end up getting moved  +	    # into the right possition within the code as indent leaves marked  +	    # comments entirely untouched - we appear to have no way to avoid  +	    # the double processing and get the desired output +	    cat "$j" | \ +	    expand | \ +	    perl -0 -np \ +	      -e 's/(\n#[ \t]*ifdef[ \t]+__cplusplus\n[^\n]*\n#[ \t]*endif\n)/\n\/**INDENT-OFF**\/$1\/**INDENT-ON**\/\n/g;' \ +	      -e 's/(\n\/\*\!)/\n\/**/g;' \ +	      -e 's/(STACK_OF|LHASH_OF)\(([^ \t,\)]+)\)( |\n)/$1_$2_$3/g;' \ +	      | \ +	    perl -np \ +	      -e 's/^([ \t]*)\/\*([ \t]+.*)\*\/[ \t]*$/my ($x1,$x2) = ($1, $2); if (length("$x1$x2")<75 && $x2 !~ m#^\s*\*INDENT-(ON|OFF)\*\s*$#) {$c="-"}else{$c=""}; "$x1\/*$c$x2*\/"/e;' \ +	      -e 's/^\/\* ((Copyright|=|----).*)$/\/*-$1/;' \ +	      -e 's/^((DECLARE|IMPLEMENT)_.*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ +	      -e 's/^([ \t]*(make_dh|make_dh_bn|make_rfc5114_td)\(.*\)[ \t,]*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ +	      -e 's/^(ASN1_ADB_TEMPLATE\(.*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ +	      -e 's/^((ASN1|ADB)_.*_(end|END)\(.*[\){=,;]+[ \t]*)$/$1\n\/**INDENT-ON**\//;' \ +	      -e '/ASN1_(ITEM_ref|ITEM_ptr|ITEM_rptr|PCTX)/ || s/^((ASN1|ADB)_[^\*]*[){=,]+[ \t]*)$/\/**INDENT-OFF**\/\n$1/;' \ +	      -e 's/^(} (ASN1|ADB)_[^\*]*[\){=,;]+)$/$1\n\/**INDENT-ON**\//;' \ +	      | \ +	      $DEBUG $INDENT $INDENT_ARGS | \ +	      perl -np \ +		-e 's/^([ \t]*)\/\*-(.*)\*\/[ \t]*$/$1\/*$2*\//;' \ +		-e 's/^\/\*-((Copyright|=|----).*)$/\/* $1/;' \ +	      | $INDENT | \ +	      perl -0 -np \ +		-e 's/\/\*\*INDENT-(ON|OFF)\*\*\/\n//g;' \ +	      | perl -np \ +	        -e 's/(STACK_OF|LHASH_OF)_([^ \t,]+)_( |\/)/$1($2)$3/g;' \ +	        -e 's/(STACK_OF|LHASH_OF)_([^ \t,]+)_$/$1($2)/g;' \ +	      | perl "$HERE"/su-filter.pl \ +	      > "$tmp" +	  else +	    expand "$j" | $INDENT $INDENT_ARGS > "$tmp" +	  fi; +	  if cmp -s "$tmp" "$j"; then +	    if [ "$VERBOSE" = "true" ]; then +	      echo "$j unchanged" +	    fi +	    rm "$tmp" +	  else +	    if [ "$VERBOSE" = "true" ]; then +	      echo "$j changed" +	    fi +	    CHANGED=true +	    mv "$tmp" "$j" +	  fi +	  ;; +      esac +    fi +  done +done + + +if [ "$VERBOSE" = "true" ]; then +  echo +  if [ "$CHANGED" = "true" ]; then +    echo "SOURCE WAS MODIFIED" +  else +    echo "SOURCE WAS NOT MODIFIED" +  fi +fi diff --git a/openssl-1.1.0h/util/opensslwrap.sh b/openssl-1.1.0h/util/opensslwrap.sh new file mode 100755 index 0000000..b27cbb8 --- /dev/null +++ b/openssl-1.1.0h/util/opensslwrap.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +HERE="`echo $0 | sed -e 's|[^/]*$||'`" +OPENSSL="${HERE}../apps/openssl" + +if [ -d "${HERE}../engines" -a "x$OPENSSL_ENGINES" = "x" ]; then +	OPENSSL_ENGINES="${HERE}../engines"; export OPENSSL_ENGINES +fi + +if [ -x "${OPENSSL}.exe" ]; then +	# The original reason for this script existence is to work around +	# certain caveats in run-time linker behaviour. On Windows platforms +	# adjusting $PATH used to be sufficient, but with introduction of +	# SafeDllSearchMode in XP/2003 the only way to get it right in +	# *all* possible situations is to copy newly built .DLLs to apps/ +	# and test/, which is now done elsewhere... The $PATH is adjusted +	# for backward compatibility (and nostagical reasons:-). +	if [ "$OSTYPE" != msdosdjgpp ]; then +		PATH="${HERE}..:$PATH"; export PATH +	fi +	exec "${OPENSSL}.exe" "$@" +elif [ -x "${OPENSSL}" -a -x "${HERE}shlib_wrap.sh" ]; then +	exec "${HERE}shlib_wrap.sh" "${OPENSSL}" "$@" +else +	exec "${OPENSSL}" "$@"	# hope for the best... +fi diff --git a/openssl-1.1.0h/util/perl/OpenSSL/Glob.pm b/openssl-1.1.0h/util/perl/OpenSSL/Glob.pm new file mode 100644 index 0000000..ec87da4 --- /dev/null +++ b/openssl-1.1.0h/util/perl/OpenSSL/Glob.pm @@ -0,0 +1,21 @@ +package OpenSSL::Glob; + +use strict; +use warnings; + +use File::Glob; + +use Exporter; +use vars qw($VERSION @ISA @EXPORT); + +$VERSION = '0.1'; +@ISA = qw(Exporter); +@EXPORT = qw(glob); + +sub glob { +    goto &File::Glob::bsd_glob if $^O ne "VMS"; +    goto &CORE::glob; +} + +1; +__END__ diff --git a/openssl-1.1.0h/util/perl/OpenSSL/Test.pm b/openssl-1.1.0h/util/perl/OpenSSL/Test.pm new file mode 100644 index 0000000..5de7b58 --- /dev/null +++ b/openssl-1.1.0h/util/perl/OpenSSL/Test.pm @@ -0,0 +1,1051 @@ +# Copyright 2016-2018 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 + +package OpenSSL::Test; + +use strict; +use warnings; + +use Test::More 0.96; + +use Exporter; +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +$VERSION = "0.8"; +@ISA = qw(Exporter); +@EXPORT = (@Test::More::EXPORT, qw(setup indir app fuzz  perlapp test perltest +                                   run)); +@EXPORT_OK = (@Test::More::EXPORT_OK, qw(bldtop_dir bldtop_file +                                         srctop_dir srctop_file +                                         data_file +                                         pipe with cmdstr quotify)); + +=head1 NAME + +OpenSSL::Test - a private extension of Test::More + +=head1 SYNOPSIS + +  use OpenSSL::Test; + +  setup("my_test_name"); + +  ok(run(app(["openssl", "version"])), "check for openssl presence"); + +  indir "subdir" => sub { +    ok(run(test(["sometest", "arg1"], stdout => "foo.txt")), +       "run sometest with output to foo.txt"); +  }; + +=head1 DESCRIPTION + +This module is a private extension of L<Test::More> for testing OpenSSL. +In addition to the Test::More functions, it also provides functions that +easily find the diverse programs within a OpenSSL build tree, as well as +some other useful functions. + +This module I<depends> on the environment variables C<$TOP> or C<$SRCTOP> +and C<$BLDTOP>.  Without one of the combinations it refuses to work. +See L</ENVIRONMENT> below. + +With each test recipe, a parallel data directory with (almost) the same name +as the recipe is possible in the source directory tree.  For example, for a +recipe C<$SRCTOP/test/recipes/99-foo.t>, there could be a directory +C<$SRCTOP/test/recipes/99-foo_data/>. + +=cut + +use File::Copy; +use File::Spec::Functions qw/file_name_is_absolute curdir canonpath splitdir +                             catdir catfile splitpath catpath devnull abs2rel +                             rel2abs/; +use File::Path 2.00 qw/rmtree mkpath/; +use File::Basename; + + +# The name of the test.  This is set by setup() and is used in the other +# functions to verify that setup() has been used. +my $test_name = undef; + +# Directories we want to keep track of TOP, APPS, TEST and RESULTS are the +# ones we're interested in, corresponding to the environment variables TOP +# (mandatory), BIN_D, TEST_D, UTIL_D and RESULT_D. +my %directories = (); + +# The environment variables that gave us the contents in %directories.  These +# get modified whenever we change directories, so that subprocesses can use +# the values of those environment variables as well +my @direnv = (); + +# A bool saying if we shall stop all testing if the current recipe has failing +# tests or not.  This is set by setup() if the environment variable STOPTEST +# is defined with a non-empty value. +my $end_with_bailout = 0; + +# A set of hooks that is affected by with() and may be used in diverse places. +# All hooks are expected to be CODE references. +my %hooks = ( + +    # exit_checker is used by run() directly after completion of a command. +    # it receives the exit code from that command and is expected to return +    # 1 (for success) or 0 (for failure).  This is the value that will be +    # returned by run(). +    # NOTE: When run() gets the option 'capture => 1', this hook is ignored. +    exit_checker => sub { return shift == 0 ? 1 : 0 }, + +    ); + +# Debug flag, to be set manually when needed +my $debug = 0; + +# Declare some utility functions that are defined at the end +sub bldtop_file; +sub bldtop_dir; +sub srctop_file; +sub srctop_dir; +sub quotify; + +# Declare some private functions that are defined at the end +sub __env; +sub __cwd; +sub __apps_file; +sub __results_file; +sub __fixup_cmd; +sub __build_cmd; + +=head2 Main functions + +The following functions are exported by default when using C<OpenSSL::Test>. + +=cut + +=over 4 + +=item B<setup "NAME"> + +C<setup> is used for initial setup, and it is mandatory that it's used. +If it's not used in a OpenSSL test recipe, the rest of the recipe will +most likely refuse to run. + +C<setup> checks for environment variables (see L</ENVIRONMENT> below), +checks that C<$TOP/Configure> or C<$SRCTOP/Configure> exists, C<chdir> +into the results directory (defined by the C<$RESULT_D> environment +variable if defined, otherwise C<$BLDTOP/test> or C<$TOP/test>, whichever +is defined). + +=back + +=cut + +sub setup { +    my $old_test_name = $test_name; +    $test_name = shift; + +    BAIL_OUT("setup() must receive a name") unless $test_name; +    warn "setup() detected test name change.  Innocuous, so we continue...\n" +        if $old_test_name && $old_test_name ne $test_name; + +    return if $old_test_name; + +    BAIL_OUT("setup() needs \$TOP or \$SRCTOP and \$BLDTOP to be defined") +        unless $ENV{TOP} || ($ENV{SRCTOP} && $ENV{BLDTOP}); +    BAIL_OUT("setup() found both \$TOP and \$SRCTOP or \$BLDTOP...") +        if $ENV{TOP} && ($ENV{SRCTOP} || $ENV{BLDTOP}); + +    __env(); + +    BAIL_OUT("setup() expects the file Configure in the source top directory") +        unless -f srctop_file("Configure"); + +    __cwd($directories{RESULTS}); +} + +=over 4 + +=item B<indir "SUBDIR" =E<gt> sub BLOCK, OPTS> + +C<indir> is used to run a part of the recipe in a different directory than +the one C<setup> moved into, usually a subdirectory, given by SUBDIR. +The part of the recipe that's run there is given by the codeblock BLOCK. + +C<indir> takes some additional options OPTS that affect the subdirectory: + +=over 4 + +=item B<create =E<gt> 0|1> + +When set to 1 (or any value that perl preceives as true), the subdirectory +will be created if it doesn't already exist.  This happens before BLOCK +is executed. + +=item B<cleanup =E<gt> 0|1> + +When set to 1 (or any value that perl preceives as true), the subdirectory +will be cleaned out and removed.  This happens both before and after BLOCK +is executed. + +=back + +An example: + +  indir "foo" => sub { +      ok(run(app(["openssl", "version"]), stdout => "foo.txt")); +      if (ok(open(RESULT, "foo.txt"), "reading foo.txt")) { +          my $line = <RESULT>; +          close RESULT; +          is($line, qr/^OpenSSL 1\./, +             "check that we're using OpenSSL 1.x.x"); +      } +  }, create => 1, cleanup => 1; + +=back + +=cut + +sub indir { +    my $subdir = shift; +    my $codeblock = shift; +    my %opts = @_; + +    my $reverse = __cwd($subdir,%opts); +    BAIL_OUT("FAILURE: indir, \"$subdir\" wasn't possible to move into") +	unless $reverse; + +    $codeblock->(); + +    __cwd($reverse); + +    if ($opts{cleanup}) { +	rmtree($subdir, { safe => 0 }); +    } +} + +=over 4 + +=item B<app ARRAYREF, OPTS> + +=item B<test ARRAYREF, OPTS> + +Both of these functions take a reference to a list that is a command and +its arguments, and some additional options (described further on). + +C<app> expects to find the given command (the first item in the given list +reference) as an executable in C<$BIN_D> (if defined, otherwise C<$TOP/apps> +or C<$BLDTOP/apps>). + +C<test> expects to find the given command (the first item in the given list +reference) as an executable in C<$TEST_D> (if defined, otherwise C<$TOP/test> +or C<$BLDTOP/test>). + +Both return a CODEREF to be used by C<run>, C<pipe> or C<cmdstr>. + +The options that both C<app> and C<test> can take are in the form of hash +values: + +=over 4 + +=item B<stdin =E<gt> PATH> + +=item B<stdout =E<gt> PATH> + +=item B<stderr =E<gt> PATH> + +In all three cases, the corresponding standard input, output or error is +redirected from (for stdin) or to (for the others) a file given by the +string PATH, I<or>, if the value is C<undef>, C</dev/null> or similar. + +=back + +=item B<perlapp ARRAYREF, OPTS> + +=item B<perltest ARRAYREF, OPTS> + +Both these functions function the same way as B<app> and B<test>, except +that they expect the command to be a perl script.  Also, they support one +more option: + +=over 4 + +=item B<interpreter_args =E<gt> ARRAYref> + +The array reference is a set of arguments for perl rather than the script. +Take care so that none of them can be seen as a script!  Flags and their +eventual arguments only! + +=back + +An example: + +  ok(run(perlapp(["foo.pl", "arg1"], +                 interpreter_args => [ "-I", srctop_dir("test") ]))); + +=back + +=cut + +sub app { +    my $cmd = shift; +    my %opts = @_; +    return sub { my $num = shift; +		 return __build_cmd($num, \&__apps_file, $cmd, %opts); } +} + +sub fuzz { +    my $cmd = shift; +    my %opts = @_; +    return sub { my $num = shift; +		 return __build_cmd($num, \&__fuzz_file, $cmd, %opts); } +} + +sub test { +    my $cmd = shift; +    my %opts = @_; +    return sub { my $num = shift; +		 return __build_cmd($num, \&__test_file, $cmd, %opts); } +} + +sub perlapp { +    my $cmd = shift; +    my %opts = @_; +    return sub { my $num = shift; +		 return __build_cmd($num, \&__perlapps_file, $cmd, %opts); } +} + +sub perltest { +    my $cmd = shift; +    my %opts = @_; +    return sub { my $num = shift; +		 return __build_cmd($num, \&__perltest_file, $cmd, %opts); } +} + +=over 4 + +=item B<run CODEREF, OPTS> + +This CODEREF is expected to be the value return by C<app> or C<test>, +anything else will most likely cause an error unless you know what you're +doing. + +C<run> executes the command returned by CODEREF and return either the +resulting output (if the option C<capture> is set true) or a boolean indicating +if the command succeeded or not. + +The options that C<run> can take are in the form of hash values: + +=over 4 + +=item B<capture =E<gt> 0|1> + +If true, the command will be executed with a perl backtick, and C<run> will +return the resulting output as an array of lines.  If false or not given, +the command will be executed with C<system()>, and C<run> will return 1 if +the command was successful or 0 if it wasn't. + +=back + +For further discussion on what is considered a successful command or not, see +the function C<with> further down. + +=back + +=cut + +sub run { +    my ($cmd, $display_cmd) = shift->(0); +    my %opts = @_; + +    return () if !$cmd; + +    my $prefix = ""; +    if ( $^O eq "VMS" ) {	# VMS +	$prefix = "pipe "; +    } + +    my @r = (); +    my $r = 0; +    my $e = 0; + +    # In non-verbose, we want to shut up the command interpreter, in case +    # it has something to complain about.  On VMS, it might complain both +    # on stdout and stderr +    my $save_STDOUT; +    my $save_STDERR; +    if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) { +        open $save_STDOUT, '>&', \*STDOUT or die "Can't dup STDOUT: $!"; +        open $save_STDERR, '>&', \*STDERR or die "Can't dup STDERR: $!"; +        open STDOUT, ">", devnull(); +        open STDERR, ">", devnull(); +    } + +    # The dance we do with $? is the same dance the Unix shells appear to +    # do.  For example, a program that gets aborted (and therefore signals +    # SIGABRT = 6) will appear to exit with the code 134.  We mimic this +    # to make it easier to compare with a manual run of the command. +    if ($opts{capture}) { +	@r = `$prefix$cmd`; +	$e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8); +    } else { +	system("$prefix$cmd"); +	$e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8); +	$r = $hooks{exit_checker}->($e); +    } + +    if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) { +        close STDOUT; +        close STDERR; +        open STDOUT, '>&', $save_STDOUT or die "Can't restore STDOUT: $!"; +        open STDERR, '>&', $save_STDERR or die "Can't restore STDERR: $!"; +    } + +    print STDERR "$prefix$display_cmd => $e\n" +        if !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}; + +    # At this point, $? stops being interesting, and unfortunately, +    # there are Test::More versions that get picky if we leave it +    # non-zero. +    $? = 0; + +    if ($opts{capture}) { +	return @r; +    } else { +	return $r; +    } +} + +END { +    my $tb = Test::More->builder; +    my $failure = scalar(grep { $_ == 0; } $tb->summary); +    if ($failure && $end_with_bailout) { +	BAIL_OUT("Stoptest!"); +    } +} + +=head2 Utility functions + +The following functions are exported on request when using C<OpenSSL::Test>. + +  # To only get the bldtop_file and srctop_file functions. +  use OpenSSL::Test qw/bldtop_file srctop_file/; + +  # To only get the bldtop_file function in addition to the default ones. +  use OpenSSL::Test qw/:DEFAULT bldtop_file/; + +=cut + +# Utility functions, exported on request + +=over 4 + +=item B<bldtop_dir LIST> + +LIST is a list of directories that make up a path from the top of the OpenSSL +build directory (as indicated by the environment variable C<$TOP> or +C<$BLDTOP>). +C<bldtop_dir> returns the resulting directory as a string, adapted to the local +operating system. + +=back + +=cut + +sub bldtop_dir { +    return __bldtop_dir(@_);	# This caters for operating systems that have +				# a very distinct syntax for directories. +} + +=over 4 + +=item B<bldtop_file LIST, FILENAME> + +LIST is a list of directories that make up a path from the top of the OpenSSL +build directory (as indicated by the environment variable C<$TOP> or +C<$BLDTOP>) and FILENAME is the name of a file located in that directory path. +C<bldtop_file> returns the resulting file path as a string, adapted to the local +operating system. + +=back + +=cut + +sub bldtop_file { +    return __bldtop_file(@_); +} + +=over 4 + +=item B<srctop_dir LIST> + +LIST is a list of directories that make up a path from the top of the OpenSSL +source directory (as indicated by the environment variable C<$TOP> or +C<$SRCTOP>). +C<srctop_dir> returns the resulting directory as a string, adapted to the local +operating system. + +=back + +=cut + +sub srctop_dir { +    return __srctop_dir(@_);	# This caters for operating systems that have +				# a very distinct syntax for directories. +} + +=over 4 + +=item B<srctop_file LIST, FILENAME> + +LIST is a list of directories that make up a path from the top of the OpenSSL +source directory (as indicated by the environment variable C<$TOP> or +C<$SRCTOP>) and FILENAME is the name of a file located in that directory path. +C<srctop_file> returns the resulting file path as a string, adapted to the local +operating system. + +=back + +=cut + +sub srctop_file { +    return __srctop_file(@_); +} + +=over 4 + +=item B<data_file LIST, FILENAME> + +LIST is a list of directories that make up a path from the data directory +associated with the test (see L</DESCRIPTION> above) and FILENAME is the name +of a file located in that directory path.  C<data_file> returns the resulting +file path as a string, adapted to the local operating system. + +=back + +=cut + +sub data_file { +    return __data_file(@_); +} + +=over 4 + +=item B<pipe LIST> + +LIST is a list of CODEREFs returned by C<app> or C<test>, from which C<pipe> +creates a new command composed of all the given commands put together in a +pipe.  C<pipe> returns a new CODEREF in the same manner as C<app> or C<test>, +to be passed to C<run> for execution. + +=back + +=cut + +sub pipe { +    my @cmds = @_; +    return +	sub { +	    my @cs  = (); +	    my @dcs = (); +	    my @els = (); +	    my $counter = 0; +	    foreach (@cmds) { +		my ($c, $dc, @el) = $_->(++$counter); + +		return () if !$c; + +		push @cs, $c; +		push @dcs, $dc; +		push @els, @el; +	    } +	    return ( +		join(" | ", @cs), +		join(" | ", @dcs), +		@els +		); +    }; +} + +=over 4 + +=item B<with HASHREF, CODEREF> + +C<with> will temporarly install hooks given by the HASHREF and then execute +the given CODEREF.  Hooks are usually expected to have a coderef as value. + +The currently available hoosk are: + +=over 4 + +=item B<exit_checker =E<gt> CODEREF> + +This hook is executed after C<run> has performed its given command.  The +CODEREF receives the exit code as only argument and is expected to return +1 (if the exit code indicated success) or 0 (if the exit code indicated +failure). + +=back + +=back + +=cut + +sub with { +    my $opts = shift; +    my %opts = %{$opts}; +    my $codeblock = shift; + +    my %saved_hooks = (); + +    foreach (keys %opts) { +	$saved_hooks{$_} = $hooks{$_}	if exists($hooks{$_}); +	$hooks{$_} = $opts{$_}; +    } + +    $codeblock->(); + +    foreach (keys %saved_hooks) { +	$hooks{$_} = $saved_hooks{$_}; +    } +} + +=over 4 + +=item B<cmdstr CODEREF, OPTS> + +C<cmdstr> takes a CODEREF from C<app> or C<test> and simply returns the +command as a string. + +C<cmdstr> takes some additiona options OPTS that affect the string returned: + +=over 4 + +=item B<display =E<gt> 0|1> + +When set to 0, the returned string will be with all decorations, such as a +possible redirect of stderr to the null device.  This is suitable if the +string is to be used directly in a recipe. + +When set to 1, the returned string will be without extra decorations.  This +is suitable for display if that is desired (doesn't confuse people with all +internal stuff), or if it's used to pass a command down to a subprocess. + +Default: 0 + +=back + +=back + +=cut + +sub cmdstr { +    my ($cmd, $display_cmd) = shift->(0); +    my %opts = @_; + +    if ($opts{display}) { +        return $display_cmd; +    } else { +        return $cmd; +    } +} + +=over 4 + +=item B<quotify LIST> + +LIST is a list of strings that are going to be used as arguments for a +command, and makes sure to inject quotes and escapes as necessary depending +on the content of each string. + +This can also be used to put quotes around the executable of a command. +I<This must never ever be done on VMS.> + +=back + +=cut + +sub quotify { +    # Unix setup (default if nothing else is mentioned) +    my $arg_formatter = +	sub { $_ = shift; +	      ($_ eq '' || /\s|[\{\}\\\$\[\]\*\?\|\&:;<>]/) ? "'$_'" : $_ }; + +    if ( $^O eq "VMS") {	# VMS setup +	$arg_formatter = sub { +	    $_ = shift; +	    if ($_ eq '' || /\s|["[:upper:]]/) { +		s/"/""/g; +		'"'.$_.'"'; +	    } else { +		$_; +	    } +	}; +    } elsif ( $^O eq "MSWin32") { # MSWin setup +	$arg_formatter = sub { +	    $_ = shift; +	    if ($_ eq '' || /\s|["\|\&\*\;<>]/) { +		s/(["\\])/\\$1/g; +		'"'.$_.'"'; +	    } else { +		$_; +	    } +	}; +    } + +    return map { $arg_formatter->($_) } @_; +} + +###################################################################### +# private functions.  These are never exported. + +=head1 ENVIRONMENT + +OpenSSL::Test depends on some environment variables. + +=over 4 + +=item B<TOP> + +This environment variable is mandatory.  C<setup> will check that it's +defined and that it's a directory that contains the file C<Configure>. +If this isn't so, C<setup> will C<BAIL_OUT>. + +=item B<BIN_D> + +If defined, its value should be the directory where the openssl application +is located.  Defaults to C<$TOP/apps> (adapted to the operating system). + +=item B<TEST_D> + +If defined, its value should be the directory where the test applications +are located.  Defaults to C<$TOP/test> (adapted to the operating system). + +=item B<STOPTEST> + +If defined, it puts testing in a different mode, where a recipe with +failures will result in a C<BAIL_OUT> at the end of its run. + +=back + +=cut + +sub __env { +    (my $recipe_datadir = basename($0)) =~ s/\.t$/_data/i; + +    $directories{SRCTOP}  = $ENV{SRCTOP} || $ENV{TOP}; +    $directories{BLDTOP}  = $ENV{BLDTOP} || $ENV{TOP}; +    $directories{BLDAPPS} = $ENV{BIN_D}  || __bldtop_dir("apps"); +    $directories{SRCAPPS} =                 __srctop_dir("apps"); +    $directories{BLDFUZZ} =                 __bldtop_dir("fuzz"); +    $directories{SRCFUZZ} =                 __srctop_dir("fuzz"); +    $directories{BLDTEST} = $ENV{TEST_D} || __bldtop_dir("test"); +    $directories{SRCTEST} =                 __srctop_dir("test"); +    $directories{SRCDATA} =                 __srctop_dir("test", "recipes", +                                                         $recipe_datadir); +    $directories{RESULTS} = $ENV{RESULT_D} || $directories{BLDTEST}; + +    push @direnv, "TOP"       if $ENV{TOP}; +    push @direnv, "SRCTOP"    if $ENV{SRCTOP}; +    push @direnv, "BLDTOP"    if $ENV{BLDTOP}; +    push @direnv, "BIN_D"     if $ENV{BIN_D}; +    push @direnv, "TEST_D"    if $ENV{TEST_D}; +    push @direnv, "RESULT_D"  if $ENV{RESULT_D}; + +    $end_with_bailout	  = $ENV{STOPTEST} ? 1 : 0; +}; + +sub __srctop_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    return catfile($directories{SRCTOP},@_,$f); +} + +sub __srctop_dir { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    return catdir($directories{SRCTOP},@_); +} + +sub __bldtop_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    return catfile($directories{BLDTOP},@_,$f); +} + +sub __bldtop_dir { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    return catdir($directories{BLDTOP},@_); +} + +sub __exeext { +    my $ext = ""; +    if ($^O eq "VMS" ) {	# VMS +	$ext = ".exe"; +    } elsif ($^O eq "MSWin32") { # Windows +	$ext = ".exe"; +    } +    return $ENV{"EXE_EXT"} || $ext; +} + +sub __test_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    my $out = catfile($directories{BLDTEST},@_,$f . __exeext()); +    $out = catfile($directories{SRCTEST},@_,$f) unless -x $out; +    return $out; +} + +sub __perltest_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    my $out = catfile($directories{BLDTEST},@_,$f); +    $out = catfile($directories{SRCTEST},@_,$f) unless -f $out; +    return ($^X, $out); +} + +sub __apps_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    my $out = catfile($directories{BLDAPPS},@_,$f . __exeext()); +    $out = catfile($directories{SRCAPPS},@_,$f) unless -x $out; +    return $out; +} + +sub __fuzz_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    my $out = catfile($directories{BLDFUZZ},@_,$f . __exeext()); +    $out = catfile($directories{SRCFUZZ},@_,$f) unless -x $out; +    return $out; +} + +sub __perlapps_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    my $out = catfile($directories{BLDAPPS},@_,$f); +    $out = catfile($directories{SRCAPPS},@_,$f) unless -f $out; +    return ($^X, $out); +} + +sub __data_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    return catfile($directories{SRCDATA},@_,$f); +} + +sub __results_file { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $f = pop; +    return catfile($directories{RESULTS},@_,$f); +} + +sub __cwd { +    my $dir = catdir(shift); +    my %opts = @_; +    my $abscurdir = rel2abs(curdir()); +    my $absdir = rel2abs($dir); +    my $reverse = abs2rel($abscurdir, $absdir); + +    # PARANOIA: if we're not moving anywhere, we do nothing more +    if ($abscurdir eq $absdir) { +	return $reverse; +    } + +    # Do not support a move to a different volume for now.  Maybe later. +    BAIL_OUT("FAILURE: \"$dir\" moves to a different volume, not supported") +	if $reverse eq $abscurdir; + +    # If someone happened to give a directory that leads back to the current, +    # it's extremely silly to do anything more, so just simulate that we did +    # move. +    # In this case, we won't even clean it out, for safety's sake. +    return "." if $reverse eq ""; + +    $dir = canonpath($dir); +    if ($opts{create}) { +	mkpath($dir); +    } + +    # We are recalculating the directories we keep track of, but need to save +    # away the result for after having moved into the new directory. +    my %tmp_directories = (); +    my %tmp_ENV = (); + +    # For each of these directory variables, figure out where they are relative +    # to the directory we want to move to if they aren't absolute (if they are, +    # they don't change!) +    my @dirtags = sort keys %directories; +    foreach (@dirtags) { +	if (!file_name_is_absolute($directories{$_})) { +	    my $newpath = abs2rel(rel2abs($directories{$_}), rel2abs($dir)); +	    $tmp_directories{$_} = $newpath; +	} +    } + +    # Treat each environment variable that was used to get us the values in +    # %directories the same was as the paths in %directories, so any sub +    # process can use their values properly as well +    foreach (@direnv) { +	if (!file_name_is_absolute($ENV{$_})) { +	    my $newpath = abs2rel(rel2abs($ENV{$_}), rel2abs($dir)); +	    $tmp_ENV{$_} = $newpath; +	} +    } + +    # Should we just bail out here as well?  I'm unsure. +    return undef unless chdir($dir); + +    if ($opts{cleanup}) { +	rmtree(".", { safe => 0, keep_root => 1 }); +    } + +    # We put back new values carefully.  Doing the obvious +    # %directories = ( %tmp_irectories ) +    # will clear out any value that happens to be an absolute path +    foreach (keys %tmp_directories) { +        $directories{$_} = $tmp_directories{$_}; +    } +    foreach (keys %tmp_ENV) { +        $ENV{$_} = $tmp_ENV{$_}; +    } + +    if ($debug) { +	print STDERR "DEBUG: __cwd(), directories and files:\n"; +	print STDERR "  \$directories{BLDTEST} = \"$directories{BLDTEST}\"\n"; +	print STDERR "  \$directories{SRCTEST} = \"$directories{SRCTEST}\"\n"; +	print STDERR "  \$directories{SRCDATA} = \"$directories{SRCDATA}\"\n"; +	print STDERR "  \$directories{RESULTS} = \"$directories{RESULTS}\"\n"; +	print STDERR "  \$directories{BLDAPPS} = \"$directories{BLDAPPS}\"\n"; +	print STDERR "  \$directories{SRCAPPS} = \"$directories{SRCAPPS}\"\n"; +	print STDERR "  \$directories{SRCTOP}  = \"$directories{SRCTOP}\"\n"; +	print STDERR "  \$directories{BLDTOP}  = \"$directories{BLDTOP}\"\n"; +	print STDERR "\n"; +	print STDERR "  current directory is \"",curdir(),"\"\n"; +	print STDERR "  the way back is \"$reverse\"\n"; +    } + +    return $reverse; +} + +sub __fixup_cmd { +    my $prog = shift; +    my $exe_shell = shift; + +    my $prefix = __bldtop_file("util", "shlib_wrap.sh")." "; + +    if (defined($exe_shell)) { +	$prefix = "$exe_shell "; +    } elsif ($^O eq "VMS" ) {	# VMS +	$prefix = ($prog =~ /^(?:[\$a-z0-9_]+:)?[<\[]/i ? "mcr " : "mcr []"); +    } elsif ($^O eq "MSWin32") { # Windows +	$prefix = ""; +    } + +    # We test both with and without extension.  The reason +    # is that we might be passed a complete file spec, with +    # extension. +    if ( ! -x $prog ) { +	my $prog = "$prog"; +	if ( ! -x $prog ) { +	    $prog = undef; +	} +    } + +    if (defined($prog)) { +	# Make sure to quotify the program file on platforms that may +	# have spaces or similar in their path name. +	# To our knowledge, VMS is the exception where quotifying should +	# never happen. +	($prog) = quotify($prog) unless $^O eq "VMS"; +	return $prefix.$prog; +    } + +    print STDERR "$prog not found\n"; +    return undef; +} + +sub __build_cmd { +    BAIL_OUT("Must run setup() first") if (! $test_name); + +    my $num = shift; +    my $path_builder = shift; +    # Make a copy to not destroy the caller's array +    my @cmdarray = ( @{$_[0]} ); shift; +    my %opts = @_; + +    # We do a little dance, as $path_builder might return a list of +    # more than one.  If so, only the first is to be considered a +    # program to fix up, the rest is part of the arguments.  This +    # happens for perl scripts, where $path_builder will return +    # a list of two, $^X and the script name. +    # Also, if $path_builder returned more than one, we don't apply +    # the EXE_SHELL environment variable. +    my @prog = ($path_builder->(shift @cmdarray)); +    my $first = shift @prog; +    my $exe_shell = @prog ? undef : $ENV{EXE_SHELL}; +    my $cmd = __fixup_cmd($first, $exe_shell); +    if (@prog) { +	if ( ! -f $prog[0] ) { +	    print STDERR "$prog[0] not found\n"; +	    $cmd = undef; +	} +    } +    my @args = (@prog, @cmdarray); +    if (defined($opts{interpreter_args})) { +        unshift @args, @{$opts{interpreter_args}}; +    } + +    return () if !$cmd; + +    my $arg_str = ""; +    my $null = devnull(); + + +    $arg_str = " ".join(" ", quotify @args) if @args; + +    my $fileornull = sub { $_[0] ? $_[0] : $null; }; +    my $stdin = ""; +    my $stdout = ""; +    my $stderr = ""; +    my $saved_stderr = undef; +    $stdin = " < ".$fileornull->($opts{stdin})  if exists($opts{stdin}); +    $stdout= " > ".$fileornull->($opts{stdout}) if exists($opts{stdout}); +    $stderr=" 2> ".$fileornull->($opts{stderr}) if exists($opts{stderr}); + +    my $display_cmd = "$cmd$arg_str$stdin$stdout$stderr"; + +    $stderr=" 2> ".$null +        unless $stderr || !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}; + +    $cmd .= "$arg_str$stdin$stdout$stderr"; + +    if ($debug) { +	print STDERR "DEBUG[__build_cmd]: \$cmd = \"$cmd\"\n"; +	print STDERR "DEBUG[__build_cmd]: \$display_cmd = \"$display_cmd\"\n"; +    } + +    return ($cmd, $display_cmd); +} + +=head1 SEE ALSO + +L<Test::More>, L<Test::Harness> + +=head1 AUTHORS + +Richard Levitte E<lt>levitte@openssl.orgE<gt> with assitance and +inspiration from Andy Polyakov E<lt>appro@openssl.org<gt>. + +=cut + +1; diff --git a/openssl-1.1.0h/util/perl/OpenSSL/Test/Simple.pm b/openssl-1.1.0h/util/perl/OpenSSL/Test/Simple.pm new file mode 100644 index 0000000..c5a84d5 --- /dev/null +++ b/openssl-1.1.0h/util/perl/OpenSSL/Test/Simple.pm @@ -0,0 +1,91 @@ +# Copyright 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 + +package OpenSSL::Test::Simple; + +use strict; +use warnings; + +use Exporter; +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +$VERSION = "0.2"; +@ISA = qw(Exporter); +@EXPORT = qw(simple_test); + +=head1 NAME + +OpenSSL::Test::Simple - a few very simple test functions + +=head1 SYNOPSIS + +  use OpenSSL::Test::Simple; + +  simple_test("my_test_name", "destest", "des"); + +=head1 DESCRIPTION + +Sometimes, the functions in L<OpenSSL::Test> are quite tedious for some +repetitive tasks.  This module provides functions to make life easier. +You could call them hacks if you wish. + +=cut + +use OpenSSL::Test; +use OpenSSL::Test::Utils; + +=over 4 + +=item B<simple_test NAME, PROGRAM, ALGORITHM> + +Runs a test named NAME, running the program PROGRAM with no arguments, +to test the algorithm ALGORITHM. + +A complete recipe looks like this: + +  use OpenSSL::Test::Simple; + +  simple_test("test_bf", "bftest", "bf"); + +=back + +=cut + +# args: +#  name			(used with setup()) +#  algorithm		(used to check if it's at all supported) +#  name of binary	(the program that does the actual test) +sub simple_test { +    my ($name, $prgr, @algos) = @_; + +    setup($name); + +    if (scalar(disabled(@algos))) { +	if (scalar(@algos) == 1) { +	    plan skip_all => $algos[0]." is not supported by this OpenSSL build"; +	} else { +	    my $last = pop @algos; +	    plan skip_all => join(", ", @algos)." and $last are not supported by this OpenSSL build"; +	} +    } + +    plan tests => 1; + +    ok(run(test([$prgr])), "running $prgr"); +} + +=head1 SEE ALSO + +L<OpenSSL::Test> + +=head1 AUTHORS + +Richard Levitte E<lt>levitte@openssl.orgE<gt> with inspiration +from Rich Salz E<lt>rsalz@openssl.orgE<gt>. + +=cut + +1; diff --git a/openssl-1.1.0h/util/perl/OpenSSL/Test/Utils.pm b/openssl-1.1.0h/util/perl/OpenSSL/Test/Utils.pm new file mode 100644 index 0000000..7b0a705 --- /dev/null +++ b/openssl-1.1.0h/util/perl/OpenSSL/Test/Utils.pm @@ -0,0 +1,240 @@ +# Copyright 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 + +package OpenSSL::Test::Utils; + +use strict; +use warnings; + +use Exporter; +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +$VERSION = "0.1"; +@ISA = qw(Exporter); +@EXPORT = qw(alldisabled anydisabled disabled config available_protocols +             have_IPv4 have_IPv6); + +=head1 NAME + +OpenSSL::Test::Utils - test utility functions + +=head1 SYNOPSIS + +  use OpenSSL::Test::Utils; + +  my @tls = available_protocols("tls"); +  my @dtls = available_protocols("dtls"); +  alldisabled("dh", "dsa"); +  anydisabled("dh", "dsa"); + +  config("fips"); + +  have_IPv4(); +  have_IPv6(); + +=head1 DESCRIPTION + +This module provides utility functions for the testing framework. + +=cut + +use OpenSSL::Test qw/:DEFAULT bldtop_file/; + +=over 4 + +=item B<available_protocols STRING> + +Returns a list of strings for all the available SSL/TLS versions if +STRING is "tls", or for all the available DTLS versions if STRING is +"dtls".  Otherwise, it returns the empty list.  The strings in the +returned list can be used with B<alldisabled> and B<anydisabled>. + +=item B<alldisabled ARRAY> +=item B<anydisabled ARRAY> + +In an array context returns an array with each element set to 1 if the +corresponding feature is disabled and 0 otherwise. + +In a scalar context, alldisabled returns 1 if all of the features in +ARRAY are disabled, while anydisabled returns 1 if any of them are +disabled. + +=item B<config STRING> + +Returns an item from the %config hash in \$TOP/configdata.pm. + +=item B<have_IPv4> +=item B<have_IPv6> + +Return true if IPv4 / IPv6 is possible to use on the current system. + +=back + +=cut + +our %available_protocols; +our %disabled; +our %config; +my $configdata_loaded = 0; + +sub load_configdata { +    # We eval it so it doesn't run at compile time of this file. +    # The latter would have bldtop_file() complain that setup() hasn't +    # been run yet. +    my $configdata = bldtop_file("configdata.pm"); +    eval { require $configdata; +	   %available_protocols = %configdata::available_protocols; +	   %disabled = %configdata::disabled; +	   %config = %configdata::config; +    }; +    $configdata_loaded = 1; +} + +# args +#  list of 1s and 0s, coming from check_disabled() +sub anyof { +    my $x = 0; +    foreach (@_) { $x += $_ } +    return $x > 0; +} + +# args +#  list of 1s and 0s, coming from check_disabled() +sub allof { +    my $x = 1; +    foreach (@_) { $x *= $_ } +    return $x > 0; +} + +# args +#  list of strings, all of them should be names of features +#  that can be disabled. +# returns a list of 1s (if the corresponding feature is disabled) +#  and 0s (if it isn't) +sub check_disabled { +    return map { exists $disabled{lc $_} ? 1 : 0 } @_; +} + +# Exported functions ################################################# + +# args: +#  list of features to check +sub anydisabled { +    load_configdata() unless $configdata_loaded; +    my @ret = check_disabled(@_); +    return @ret if wantarray; +    return anyof(@ret); +} + +# args: +#  list of features to check +sub alldisabled { +    load_configdata() unless $configdata_loaded; +    my @ret = check_disabled(@_); +    return @ret if wantarray; +    return allof(@ret); +} + +# !!! Kept for backward compatibility +# args: +#  single string +sub disabled { +    anydisabled(@_); +} + +sub available_protocols { +    load_configdata() unless $configdata_loaded; +    my $protocol_class = shift; +    if (exists $available_protocols{lc $protocol_class}) { +	return @{$available_protocols{lc $protocol_class}} +    } +    return (); +} + +sub config { +    load_configdata() unless $configdata_loaded; +    return $config{$_[0]}; +} + +# IPv4 / IPv6 checker +my $have_IPv4 = -1; +my $have_IPv6 = -1; +my $IP_factory; +sub check_IP { +    my $listenaddress = shift; + +    eval { +        require IO::Socket::IP; +        my $s = IO::Socket::IP->new( +            LocalAddr => $listenaddress, +            LocalPort => 0, +            Listen=>1, +            ); +        $s or die "\n"; +        $s->close(); +    }; +    if ($@ eq "") { +        return 1; +    } + +    eval { +        require IO::Socket::INET6; +        my $s = IO::Socket::INET6->new( +            LocalAddr => $listenaddress, +            LocalPort => 0, +            Listen=>1, +            ); +        $s or die "\n"; +        $s->close(); +    }; +    if ($@ eq "") { +        return 1; +    } + +    eval { +        require IO::Socket::INET; +        my $s = IO::Socket::INET->new( +            LocalAddr => $listenaddress, +            LocalPort => 0, +            Listen=>1, +            ); +        $s or die "\n"; +        $s->close(); +    }; +    if ($@ eq "") { +        return 1; +    } + +    return 0; +} + +sub have_IPv4 { +    if ($have_IPv4 < 0) { +        $have_IPv4 = check_IP("127.0.0.1"); +    } +    return $have_IPv4; +} + +sub have_IPv6 { +    if ($have_IPv6 < 0) { +        $have_IPv6 = check_IP("::1"); +    } +    return $have_IPv6; +} + + +=head1 SEE ALSO + +L<OpenSSL::Test> + +=head1 AUTHORS + +Stephen Henson E<lt>steve@openssl.orgE<gt> and +Richard Levitte E<lt>levitte@openssl.orgE<gt> + +=cut + +1; diff --git a/openssl-1.1.0h/util/perl/OpenSSL/Util/Pod.pm b/openssl-1.1.0h/util/perl/OpenSSL/Util/Pod.pm new file mode 100644 index 0000000..5c0af95 --- /dev/null +++ b/openssl-1.1.0h/util/perl/OpenSSL/Util/Pod.pm @@ -0,0 +1,158 @@ +# Copyright 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 + +package OpenSSL::Util::Pod; + +use strict; +use warnings; + +use Exporter; +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +$VERSION = "0.1"; +@ISA = qw(Exporter); +@EXPORT = qw(extract_pod_info); +@EXPORT_OK = qw(); + +=head1 NAME + +OpenSSL::Util::Pod - utilities to manipulate .pod files + +=head1 SYNOPSIS + +  use OpenSSL::Util::Pod; + +  my %podinfo = extract_pod_info("foo.pod"); + +  # or if the file is already opened...  Note that this consumes the +  # remainder of the file. + +  my %podinfo = extract_pod_info(\*STDIN); + +=head1 DESCRIPTION + +=over + +=item B<extract_pod_info "FILENAME", HASHREF> + +=item B<extract_pod_info "FILENAME"> + +=item B<extract_pod_info GLOB, HASHREF> + +=item B<extract_pod_info GLOB> + +Extracts information from a .pod file, given a STRING (file name) or a +GLOB (a file handle).  The result is given back as a hash table. + +The additional hash is for extra parameters: + +=over + +=item B<section =E<gt> N> + +The value MUST be a number, and will be the default man section number +to be used with the given .pod file.  This number can be altered if +the .pod file has a line like this: + +  =for comment openssl_manual_section: 4 + +=item B<debug =E<gt> 0|1> + +If set to 1, extra debug text will be printed on STDERR + +=back + +=back + +=head1 RETURN VALUES + +=over + +=item B<extract_pod_info> returns a hash table with the following +items: + +=over + +=item B<section =E<gt> N> + +The man section number this .pod file belongs to.  Often the same as +was given as input. + +=item B<names =E<gt> [ "name", ... ]> + +All the names extracted from the NAME section. + +=back + +=back + +=cut + +sub extract_pod_info { +    my $input = shift; +    my $defaults_ref = shift || {}; +    my %defaults = ( debug => 0, section => 0, %$defaults_ref ); +    my $fh = undef; +    my $filename = undef; + +    # If not a file handle, then it's assume to be a file path (a string) +    unless (ref $input eq "GLOB") { +        $filename = $input; +        open $fh, $input or die "Trying to read $filename: $!\n"; +        print STDERR "DEBUG: Reading $input\n" if $defaults{debug}; +        $input = $fh; +    } + +    my %podinfo = ( section => $defaults{section}); +    while(<$input>) { +        s|\R$||; +        if (m|^=for\s+comment\s+openssl_manual_section:\s*([0-9])\s*$|) { +            print STDERR "DEBUG: Found man section number $1\n" +                if $defaults{debug}; +            $podinfo{section} = $1; +        } + +        # Stop reading when we have reached past the NAME section. +        last if (m|^=head1| +                 && defined $podinfo{lastsect} +                 && $podinfo{lastsect} eq "NAME"); + +        # Collect the section name +        if (m|^=head1\s*(.*)|) { +            $podinfo{lastsect} = $1; +            $podinfo{lastsect} =~ s/\s+$//; +            print STDERR "DEBUG: Found new pod section $1\n" +                if $defaults{debug}; +            print STDERR "DEBUG: Clearing pod section text\n" +                if $defaults{debug}; +            $podinfo{lastsecttext} = ""; +        } + +        next if (m|^=| || m|^\s*$|); + +        # Collect the section text +        print STDERR "DEBUG: accumulating pod section text \"$_\"\n" +            if $defaults{debug}; +        $podinfo{lastsecttext} .= " " if $podinfo{lastsecttext}; +        $podinfo{lastsecttext} .= $_; +    } + + +    if (defined $fh) { +        close $fh; +        print STDERR "DEBUG: Done reading $filename\n" if $defaults{debug}; +    } + +    $podinfo{lastsecttext} =~ s| - .*$||; + +    my @names = +        map { s|\s+||g; $_ } +        split(m|,|, $podinfo{lastsecttext}); + +    return ( section => $podinfo{section}, names => [ @names ] ); +} + +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/ClientHello.pm b/openssl-1.1.0h/util/perl/TLSProxy/ClientHello.pm new file mode 100644 index 0000000..ec739d2 --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/ClientHello.pm @@ -0,0 +1,242 @@ +# Copyright 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 + +use strict; + +package TLSProxy::ClientHello; + +use vars '@ISA'; +push @ISA, 'TLSProxy::Message'; + +sub new +{ +    my $class = shift; +    my ($server, +        $data, +        $records, +        $startoffset, +        $message_frag_lens) = @_; + +    my $self = $class->SUPER::new( +        $server, +        1, +        $data, +        $records, +        $startoffset, +        $message_frag_lens); + +    $self->{client_version} = 0; +    $self->{random} = []; +    $self->{session_id_len} = 0; +    $self->{session} = ""; +    $self->{ciphersuite_len} = 0; +    $self->{ciphersuites} = []; +    $self->{comp_meth_len} = 0; +    $self->{comp_meths} = []; +    $self->{extensions_len} = 0; +    $self->{extension_data} = ""; + +    return $self; +} + +sub parse +{ +    my $self = shift; +    my $ptr = 2; +    my ($client_version) = unpack('n', $self->data); +    my $random = substr($self->data, $ptr, 32); +    $ptr += 32; +    my $session_id_len = unpack('C', substr($self->data, $ptr)); +    $ptr++; +    my $session = substr($self->data, $ptr, $session_id_len); +    $ptr += $session_id_len; +    my $ciphersuite_len = unpack('n', substr($self->data, $ptr)); +    $ptr += 2; +    my @ciphersuites = unpack('n*', substr($self->data, $ptr, +                                           $ciphersuite_len)); +    $ptr += $ciphersuite_len; +    my $comp_meth_len = unpack('C', substr($self->data, $ptr)); +    $ptr++; +    my @comp_meths = unpack('C*', substr($self->data, $ptr, $comp_meth_len)); +    $ptr += $comp_meth_len; +    my $extensions_len = unpack('n', substr($self->data, $ptr)); +    $ptr += 2; +    #For now we just deal with this as a block of data. In the future we will +    #want to parse this +    my $extension_data = substr($self->data, $ptr); + +    if (length($extension_data) != $extensions_len) { +        die "Invalid extension length\n"; +    } +    my %extensions = (); +    while (length($extension_data) >= 4) { +        my ($type, $size) = unpack("nn", $extension_data); +        my $extdata = substr($extension_data, 4, $size); +        $extension_data = substr($extension_data, 4 + $size); +        $extensions{$type} = $extdata; +    } + +    $self->client_version($client_version); +    $self->random($random); +    $self->session_id_len($session_id_len); +    $self->session($session); +    $self->ciphersuite_len($ciphersuite_len); +    $self->ciphersuites(\@ciphersuites); +    $self->comp_meth_len($comp_meth_len); +    $self->comp_meths(\@comp_meths); +    $self->extensions_len($extensions_len); +    $self->extension_data(\%extensions); + +    $self->process_extensions(); + +    print "    Client Version:".$client_version."\n"; +    print "    Session ID Len:".$session_id_len."\n"; +    print "    Ciphersuite len:".$ciphersuite_len."\n"; +    print "    Compression Method Len:".$comp_meth_len."\n"; +    print "    Extensions Len:".$extensions_len."\n"; +} + +#Perform any actions necessary based on the extensions we've seen +sub process_extensions +{ +    my $self = shift; +    my %extensions = %{$self->extension_data}; + +    #Clear any state from a previous run +    TLSProxy::Record->etm(0); + +    if (exists $extensions{TLSProxy::Message::EXT_ENCRYPT_THEN_MAC}) { +        TLSProxy::Record->etm(1); +    } +} + +#Reconstruct the on-the-wire message data following changes +sub set_message_contents +{ +    my $self = shift; +    my $data; +    my $extensions = ""; + +    $data = pack('n', $self->client_version); +    $data .= $self->random; +    $data .= pack('C', $self->session_id_len); +    $data .= $self->session; +    $data .= pack('n', $self->ciphersuite_len); +    $data .= pack("n*", @{$self->ciphersuites}); +    $data .= pack('C', $self->comp_meth_len); +    $data .= pack("C*", @{$self->comp_meths}); + +    foreach my $key (keys %{$self->extension_data}) { +        my $extdata = ${$self->extension_data}{$key}; +        $extensions .= pack("n", $key); +        $extensions .= pack("n", length($extdata)); +        $extensions .= $extdata; +        if ($key == TLSProxy::Message::EXT_DUPLICATE_EXTENSION) { +          $extensions .= pack("n", $key); +          $extensions .= pack("n", length($extdata)); +          $extensions .= $extdata; +        } +    } + +    $data .= pack('n', length($extensions)); +    $data .= $extensions; + +    $self->data($data); +} + +#Read/write accessors +sub client_version +{ +    my $self = shift; +    if (@_) { +      $self->{client_version} = shift; +    } +    return $self->{client_version}; +} +sub random +{ +    my $self = shift; +    if (@_) { +      $self->{random} = shift; +    } +    return $self->{random}; +} +sub session_id_len +{ +    my $self = shift; +    if (@_) { +      $self->{session_id_len} = shift; +    } +    return $self->{session_id_len}; +} +sub session +{ +    my $self = shift; +    if (@_) { +      $self->{session} = shift; +    } +    return $self->{session}; +} +sub ciphersuite_len +{ +    my $self = shift; +    if (@_) { +      $self->{ciphersuite_len} = shift; +    } +    return $self->{ciphersuite_len}; +} +sub ciphersuites +{ +    my $self = shift; +    if (@_) { +      $self->{ciphersuites} = shift; +    } +    return $self->{ciphersuites}; +} +sub comp_meth_len +{ +    my $self = shift; +    if (@_) { +      $self->{comp_meth_len} = shift; +    } +    return $self->{comp_meth_len}; +} +sub comp_meths +{ +    my $self = shift; +    if (@_) { +      $self->{comp_meths} = shift; +    } +    return $self->{comp_meths}; +} +sub extensions_len +{ +    my $self = shift; +    if (@_) { +      $self->{extensions_len} = shift; +    } +    return $self->{extensions_len}; +} +sub extension_data +{ +    my $self = shift; +    if (@_) { +      $self->{extension_data} = shift; +    } +    return $self->{extension_data}; +} +sub set_extension +{ +    my ($self, $ext_type, $ext_data) = @_; +    $self->{extension_data}{$ext_type} = $ext_data; +} +sub delete_extension +{ +    my ($self, $ext_type) = @_; +    delete $self->{extension_data}{$ext_type}; +} +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/Message.pm b/openssl-1.1.0h/util/perl/TLSProxy/Message.pm new file mode 100644 index 0000000..0821bde --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/Message.pm @@ -0,0 +1,456 @@ +# Copyright 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 + +use strict; + +package TLSProxy::Message; + +use constant TLS_MESSAGE_HEADER_LENGTH => 4; + +#Message types +use constant { +    MT_HELLO_REQUEST => 0, +    MT_CLIENT_HELLO => 1, +    MT_SERVER_HELLO => 2, +    MT_NEW_SESSION_TICKET => 4, +    MT_CERTIFICATE => 11, +    MT_SERVER_KEY_EXCHANGE => 12, +    MT_CERTIFICATE_REQUEST => 13, +    MT_SERVER_HELLO_DONE => 14, +    MT_CERTIFICATE_VERIFY => 15, +    MT_CLIENT_KEY_EXCHANGE => 16, +    MT_FINISHED => 20, +    MT_CERTIFICATE_STATUS => 22, +    MT_NEXT_PROTO => 67 +}; + +#Alert levels +use constant { +    AL_LEVEL_WARN => 1, +    AL_LEVEL_FATAL => 2 +}; + +#Alert descriptions +use constant { +    AL_DESC_CLOSE_NOTIFY => 0, +    AL_DESC_UNEXPECTED_MESSAGE => 10, +    AL_DESC_NO_RENEGOTIATION => 100 +}; + +my %message_type = ( +    MT_HELLO_REQUEST, "HelloRequest", +    MT_CLIENT_HELLO, "ClientHello", +    MT_SERVER_HELLO, "ServerHello", +    MT_NEW_SESSION_TICKET, "NewSessionTicket", +    MT_CERTIFICATE, "Certificate", +    MT_SERVER_KEY_EXCHANGE, "ServerKeyExchange", +    MT_CERTIFICATE_REQUEST, "CertificateRequest", +    MT_SERVER_HELLO_DONE, "ServerHelloDone", +    MT_CERTIFICATE_VERIFY, "CertificateVerify", +    MT_CLIENT_KEY_EXCHANGE, "ClientKeyExchange", +    MT_FINISHED, "Finished", +    MT_CERTIFICATE_STATUS, "CertificateStatus", +    MT_NEXT_PROTO, "NextProto" +); + +use constant { +    EXT_STATUS_REQUEST => 5, +    EXT_ENCRYPT_THEN_MAC => 22, +    EXT_EXTENDED_MASTER_SECRET => 23, +    EXT_SESSION_TICKET => 35, +    # This extension does not exist and isn't recognised by OpenSSL. +    # We use it to test handling of duplicate extensions. +    EXT_DUPLICATE_EXTENSION => 1234 +}; + +my $payload = ""; +my $messlen = -1; +my $mt; +my $startoffset = -1; +my $server = 0; +my $success = 0; +my $end = 0; +my @message_rec_list = (); +my @message_frag_lens = (); +my $ciphersuite = 0; + +sub clear +{ +    $payload = ""; +    $messlen = -1; +    $startoffset = -1; +    $server = 0; +    $success = 0; +    $end = 0; +    @message_rec_list = (); +    @message_frag_lens = (); +} + +#Class method to extract messages from a record +sub get_messages +{ +    my $class = shift; +    my $serverin = shift; +    my $record = shift; +    my @messages = (); +    my $message; + +    @message_frag_lens = (); + +    if ($serverin != $server && length($payload) != 0) { +        die "Changed peer, but we still have fragment data\n"; +    } +    $server = $serverin; + +    if ($record->content_type == TLSProxy::Record::RT_CCS) { +        if ($payload ne "") { +            #We can't handle this yet +            die "CCS received before message data complete\n"; +        } +        if ($server) { +            TLSProxy::Record->server_ccs_seen(1); +        } else { +            TLSProxy::Record->client_ccs_seen(1); +        } +    } elsif ($record->content_type == TLSProxy::Record::RT_HANDSHAKE) { +        if ($record->len == 0 || $record->len_real == 0) { +            print "  Message truncated\n"; +        } else { +            my $recoffset = 0; + +            if (length $payload > 0) { +                #We are continuing processing a message started in a previous +                #record. Add this record to the list associated with this +                #message +                push @message_rec_list, $record; + +                if ($messlen <= length($payload)) { +                    #Shouldn't happen +                    die "Internal error: invalid messlen: ".$messlen +                        ." payload length:".length($payload)."\n"; +                } +                if (length($payload) + $record->decrypt_len >= $messlen) { +                    #We can complete the message with this record +                    $recoffset = $messlen - length($payload); +                    $payload .= substr($record->decrypt_data, 0, $recoffset); +                    push @message_frag_lens, $recoffset; +                    $message = create_message($server, $mt, $payload, +                                              $startoffset); +                    push @messages, $message; + +                    $payload = ""; +                } else { +                    #This is just part of the total message +                    $payload .= $record->decrypt_data; +                    $recoffset = $record->decrypt_len; +                    push @message_frag_lens, $record->decrypt_len; +                } +                print "  Partial message data read: ".$recoffset." bytes\n"; +            } + +            while ($record->decrypt_len > $recoffset) { +                #We are at the start of a new message +                if ($record->decrypt_len - $recoffset < 4) { +                    #Whilst technically probably valid we can't cope with this +                    die "End of record in the middle of a message header\n"; +                } +                @message_rec_list = ($record); +                my $lenhi; +                my $lenlo; +                ($mt, $lenhi, $lenlo) = unpack('CnC', +                                               substr($record->decrypt_data, +                                                      $recoffset)); +                $messlen = ($lenhi << 8) | $lenlo; +                print "  Message type: $message_type{$mt}\n"; +                print "  Message Length: $messlen\n"; +                $startoffset = $recoffset; +                $recoffset += 4; +                $payload = ""; +                 +                if ($recoffset <= $record->decrypt_len) { +                    #Some payload data is present in this record +                    if ($record->decrypt_len - $recoffset >= $messlen) { +                        #We can complete the message with this record +                        $payload .= substr($record->decrypt_data, $recoffset, +                                           $messlen); +                        $recoffset += $messlen; +                        push @message_frag_lens, $messlen; +                        $message = create_message($server, $mt, $payload, +                                                  $startoffset); +                        push @messages, $message; + +                        $payload = ""; +                    } else { +                        #This is just part of the total message +                        $payload .= substr($record->decrypt_data, $recoffset, +                                           $record->decrypt_len - $recoffset); +                        $recoffset = $record->decrypt_len; +                        push @message_frag_lens, $recoffset; +                    } +                } +            } +        } +    } elsif ($record->content_type == TLSProxy::Record::RT_APPLICATION_DATA) { +        print "  [ENCRYPTED APPLICATION DATA]\n"; +        print "  [".$record->decrypt_data."]\n"; +    } elsif ($record->content_type == TLSProxy::Record::RT_ALERT) { +        my ($alertlev, $alertdesc) = unpack('CC', $record->decrypt_data); +        #A CloseNotify from the client indicates we have finished successfully +        #(we assume) +        if (!$end && !$server && $alertlev == AL_LEVEL_WARN +            && $alertdesc == AL_DESC_CLOSE_NOTIFY) { +            $success = 1; +        } +        #All alerts end the test +        $end = 1; +    } + +    return @messages; +} + +#Function to work out which sub-class we need to create and then +#construct it +sub create_message +{ +    my ($server, $mt, $data, $startoffset) = @_; +    my $message; + +    #We only support ClientHello in this version...needs to be extended for +    #others +    if ($mt == MT_CLIENT_HELLO) { +        $message = TLSProxy::ClientHello->new( +            $server, +            $data, +            [@message_rec_list], +            $startoffset, +            [@message_frag_lens] +        ); +        $message->parse(); +    } elsif ($mt == MT_SERVER_HELLO) { +        $message = TLSProxy::ServerHello->new( +            $server, +            $data, +            [@message_rec_list], +            $startoffset, +            [@message_frag_lens] +        ); +        $message->parse(); +    } elsif ($mt == MT_SERVER_KEY_EXCHANGE) { +        $message = TLSProxy::ServerKeyExchange->new( +            $server, +            $data, +            [@message_rec_list], +            $startoffset, +            [@message_frag_lens] +        ); +        $message->parse(); +    } elsif ($mt == MT_NEW_SESSION_TICKET) { +        $message = TLSProxy::NewSessionTicket->new( +            $server, +            $data, +            [@message_rec_list], +            $startoffset, +            [@message_frag_lens] +        ); +        $message->parse(); +    } else { +        #Unknown message type +        $message = TLSProxy::Message->new( +            $server, +            $mt, +            $data, +            [@message_rec_list], +            $startoffset, +            [@message_frag_lens] +        ); +    } + +    return $message; +} + +sub end +{ +    my $class = shift; +    return $end; +} +sub success +{ +    my $class = shift; +    return $success; +} +sub fail +{ +    my $class = shift; +    return !$success && $end; +} +sub new +{ +    my $class = shift; +    my ($server, +        $mt, +        $data, +        $records, +        $startoffset, +        $message_frag_lens) = @_; +     +    my $self = { +        server => $server, +        data => $data, +        records => $records, +        mt => $mt, +        startoffset => $startoffset, +        message_frag_lens => $message_frag_lens +    }; + +    return bless $self, $class; +} + +sub ciphersuite +{ +    my $class = shift; +    if (@_) { +      $ciphersuite = shift; +    } +    return $ciphersuite; +} + +#Update all the underlying records with the modified data from this message +#Note: Does not currently support re-encrypting +sub repack +{ +    my $self = shift; +    my $msgdata; + +    my $numrecs = $#{$self->records}; + +    $self->set_message_contents(); + +    my $lenhi; +    my $lenlo; + +    $lenlo = length($self->data) & 0xff; +    $lenhi = length($self->data) >> 8; +    $msgdata = pack('CnC', $self->mt, $lenhi, $lenlo).$self->data; + +    if ($numrecs == 0) { +        #The message is fully contained within one record +        my ($rec) = @{$self->records}; +        my $recdata = $rec->decrypt_data; + +        my $old_length; + +        # We use empty message_frag_lens to indicates that pre-repacking, +        # the message wasn't present. The first fragment length doesn't include +        # the TLS header, so we need to check and compute the right length. +        if (@{$self->message_frag_lens}) { +            $old_length = ${$self->message_frag_lens}[0] + +              TLS_MESSAGE_HEADER_LENGTH; +        } else { +            $old_length = 0; +        } + +        my $prefix = substr($recdata, 0, $self->startoffset); +        my $suffix = substr($recdata, $self->startoffset + $old_length); + +        $rec->decrypt_data($prefix.($msgdata).($suffix)); +        # TODO(openssl-team): don't keep explicit lengths. +        # (If a length override is ever needed to construct invalid packets, +        #  use an explicit override field instead.) +        $rec->decrypt_len(length($rec->decrypt_data)); +        $rec->len($rec->len + length($msgdata) - $old_length); +        # Don't support re-encryption. +        $rec->data($rec->decrypt_data); + +        #Update the fragment len in case we changed it above +        ${$self->message_frag_lens}[0] = length($msgdata) +                                         - TLS_MESSAGE_HEADER_LENGTH; +        return; +    } + +    #Note we don't currently support changing a fragmented message length +    my $recctr = 0; +    my $datadone = 0; +    foreach my $rec (@{$self->records}) { +        my $recdata = $rec->decrypt_data; +        if ($recctr == 0) { +            #This is the first record +            my $remainlen = length($recdata) - $self->startoffset; +            $rec->data(substr($recdata, 0, $self->startoffset) +                       .substr(($msgdata), 0, $remainlen)); +            $datadone += $remainlen; +        } elsif ($recctr + 1 == $numrecs) { +            #This is the last record +            $rec->data(substr($msgdata, $datadone)); +        } else { +            #This is a middle record +            $rec->data(substr($msgdata, $datadone, length($rec->data))); +            $datadone += length($rec->data); +        } +        $recctr++; +    } +} + +#To be overridden by sub-classes +sub set_message_contents +{ +} + +#Read only accessors +sub server +{ +    my $self = shift; +    return $self->{server}; +} + +#Read/write accessors +sub mt +{ +    my $self = shift; +    if (@_) { +      $self->{mt} = shift; +    } +    return $self->{mt}; +} +sub data +{ +    my $self = shift; +    if (@_) { +      $self->{data} = shift; +    } +    return $self->{data}; +} +sub records +{ +    my $self = shift; +    if (@_) { +      $self->{records} = shift; +    } +    return $self->{records}; +} +sub startoffset +{ +    my $self = shift; +    if (@_) { +      $self->{startoffset} = shift; +    } +    return $self->{startoffset}; +} +sub message_frag_lens +{ +    my $self = shift; +    if (@_) { +      $self->{message_frag_lens} = shift; +    } +    return $self->{message_frag_lens}; +} +sub encoded_length +{ +    my $self = shift; +    return TLS_MESSAGE_HEADER_LENGTH + length($self->data); +} + +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/NewSessionTicket.pm b/openssl-1.1.0h/util/perl/TLSProxy/NewSessionTicket.pm new file mode 100644 index 0000000..e509985 --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/NewSessionTicket.pm @@ -0,0 +1,81 @@ +# Copyright 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 + +use strict; + +package TLSProxy::NewSessionTicket; + +use vars '@ISA'; +push @ISA, 'TLSProxy::Message'; + +sub new +{ +    my $class = shift; +    my ($server, +        $data, +        $records, +        $startoffset, +        $message_frag_lens) = @_; + +    my $self = $class->SUPER::new( +        $server, +        TLSProxy::Message::MT_NEW_SESSION_TICKET, +        $data, +        $records, +        $startoffset, +        $message_frag_lens); + +    $self->{ticket_lifetime_hint} = 0; +    $self->{ticket} = ""; + +    return $self; +} + +sub parse +{ +    my $self = shift; + +    my $ticket_lifetime_hint = unpack('N', $self->data); +    my $ticket_len = unpack('n', $self->data); +    my $ticket = substr($self->data, 6, $ticket_len); + +    $self->ticket_lifetime_hint($ticket_lifetime_hint); +    $self->ticket($ticket); +} + + +#Reconstruct the on-the-wire message data following changes +sub set_message_contents +{ +    my $self = shift; +    my $data; + +    $data = pack('N', $self->ticket_lifetime_hint); +    $data .= pack('n', length($self->ticket)); +    $data .= $self->ticket; + +    $self->data($data); +} + +#Read/write accessors +sub ticket_lifetime_hint +{ +    my $self = shift; +    if (@_) { +      $self->{ticket_lifetime_hint} = shift; +    } +    return $self->{ticket_lifetime_hint}; +} +sub ticket +{ +    my $self = shift; +    if (@_) { +      $self->{ticket} = shift; +    } +    return $self->{ticket}; +} +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/Proxy.pm b/openssl-1.1.0h/util/perl/TLSProxy/Proxy.pm new file mode 100644 index 0000000..de14362 --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/Proxy.pm @@ -0,0 +1,553 @@ +# Copyright 2016-2018 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 + +use strict; +use POSIX ":sys_wait_h"; + +package TLSProxy::Proxy; + +use File::Spec; +use IO::Socket; +use IO::Select; +use TLSProxy::Record; +use TLSProxy::Message; +use TLSProxy::ClientHello; +use TLSProxy::ServerHello; +use TLSProxy::ServerKeyExchange; +use TLSProxy::NewSessionTicket; +use Time::HiRes qw/usleep/; + +my $have_IPv6 = 0; +my $IP_factory; + +sub new +{ +    my $class = shift; +    my ($filter, +        $execute, +        $cert, +        $debug) = @_; + +    my $self = { +        #Public read/write +        proxy_addr => "localhost", +        proxy_port => 4453, +        server_addr => "localhost", +        server_port => 4443, +        filter => $filter, +        serverflags => "", +        clientflags => "", +        serverconnects => 1, +        serverpid => 0, +        clientpid => 0, +        reneg => 0, + +        #Public read +        execute => $execute, +        cert => $cert, +        debug => $debug, +        cipherc => "", +        ciphers => "AES128-SHA", +        flight => -1, +        direction => -1, +        partial => ["", ""], +        record_list => [], +        message_list => [], +    }; + +    # IO::Socket::IP is on the core module list, IO::Socket::INET6 isn't. +    # However, IO::Socket::INET6 is older and is said to be more widely +    # deployed for the moment, and may have less bugs, so we try the latter +    # first, then fall back on the code modules.  Worst case scenario, we +    # fall back to IO::Socket::INET, only supports IPv4. +    eval { +        require IO::Socket::INET6; +        my $s = IO::Socket::INET6->new( +            LocalAddr => "::1", +            LocalPort => 0, +            Listen=>1, +            ); +        $s or die "\n"; +        $s->close(); +    }; +    if ($@ eq "") { +        $IP_factory = sub { IO::Socket::INET6->new(@_); }; +        $have_IPv6 = 1; +    } else { +        eval { +            require IO::Socket::IP; +            my $s = IO::Socket::IP->new( +                LocalAddr => "::1", +                LocalPort => 0, +                Listen=>1, +                ); +            $s or die "\n"; +            $s->close(); +        }; +        if ($@ eq "") { +            $IP_factory = sub { IO::Socket::IP->new(@_); }; +            $have_IPv6 = 1; +        } else { +            $IP_factory = sub { IO::Socket::INET->new(@_); }; +        } +    } + +    # Create the Proxy socket +    my $proxaddr = $self->{proxy_addr}; +    $proxaddr =~ s/[\[\]]//g; # Remove [ and ] +    my @proxyargs = ( +        LocalHost   => $proxaddr, +        LocalPort   => $self->{proxy_port}, +        Proto       => "tcp", +        Listen      => SOMAXCONN, +       ); +    push @proxyargs, ReuseAddr => 1 +        unless $^O eq "MSWin32"; +    $self->{proxy_sock} = $IP_factory->(@proxyargs); + +    if ($self->{proxy_sock}) { +        print "Proxy started on port ".$self->{proxy_port}."\n"; +    } else { +        warn "Failed creating proxy socket (".$proxaddr.",".$self->{proxy_port}."): $!\n"; +    } + +    return bless $self, $class; +} + +sub DESTROY +{ +    my $self = shift; + +    $self->{proxy_sock}->close() if $self->{proxy_sock}; +} + +sub clearClient +{ +    my $self = shift; + +    $self->{cipherc} = ""; +    $self->{flight} = -1; +    $self->{direction} = -1; +    $self->{partial} = ["", ""]; +    $self->{record_list} = []; +    $self->{message_list} = []; +    $self->{clientflags} = ""; +    $self->{clientpid} = 0; + +    TLSProxy::Message->clear(); +    TLSProxy::Record->clear(); +} + +sub clear +{ +    my $self = shift; + +    $self->clearClient; +    $self->{ciphers} = "AES128-SHA"; +    $self->{serverflags} = ""; +    $self->{serverconnects} = 1; +    $self->{serverpid} = 0; +    $self->{reneg} = 0; +} + +sub restart +{ +    my $self = shift; + +    $self->clear; +    $self->start; +} + +sub clientrestart +{ +    my $self = shift; + +    $self->clear; +    $self->clientstart; +} + +sub start +{ +    my ($self) = shift; +    my $pid; + +    if ($self->{proxy_sock} == 0) { +        return 0; +    } + +    $pid = fork(); +    if ($pid == 0) { +        my $execcmd = $self->execute +            ." s_server -max_protocol TLSv1.2 -no_comp -rev -engine ossltest -accept " +            .($self->server_port) +            ." -cert ".$self->cert." -naccept ".$self->serverconnects; +        unless ($self->supports_IPv6) { +            $execcmd .= " -4"; +        } +        if ($self->ciphers ne "") { +            $execcmd .= " -cipher ".$self->ciphers; +        } +        if ($self->serverflags ne "") { +            $execcmd .= " ".$self->serverflags; +        } +        if ($self->debug) { +            print STDERR "Server command: $execcmd\n"; +        } +        exec($execcmd); +    } +    $self->serverpid($pid); + +    return $self->clientstart; +} + +sub clientstart +{ +    my ($self) = shift; +    my $oldstdout; + +    if ($self->execute) { +        my $pid = fork(); +        if ($pid == 0) { +            my $echostr; +            if ($self->reneg()) { +                $echostr = "R"; +            } else { +                $echostr = "test"; +            } +            my $execcmd = "echo ".$echostr." | ".$self->execute +                 ." s_client -max_protocol TLSv1.2 -engine ossltest -connect " +                 .($self->proxy_addr).":".($self->proxy_port); +            unless ($self->supports_IPv6) { +                $execcmd .= " -4"; +            } +            if ($self->cipherc ne "") { +                $execcmd .= " -cipher ".$self->cipherc; +            } +            if ($self->clientflags ne "") { +                $execcmd .= " ".$self->clientflags; +            } +            if ($self->debug) { +                print STDERR "Client command: $execcmd\n"; +            } +            exec($execcmd); +        } +        $self->clientpid($pid); +    } + +    # Wait for incoming connection from client +    my $client_sock; +    if(!($client_sock = $self->{proxy_sock}->accept())) { +        warn "Failed accepting incoming connection: $!\n"; +        return 0; +    } + +    print "Connection opened\n"; + +    # Now connect to the server +    my $retry = 50; +    my $server_sock; +    #We loop over this a few times because sometimes s_server can take a while +    #to start up +    do { +        my $servaddr = $self->server_addr; +        $servaddr =~ s/[\[\]]//g; # Remove [ and ] +        eval { +            $server_sock = $IP_factory->( +                PeerAddr => $servaddr, +                PeerPort => $self->server_port, +                MultiHomed => 1, +                Proto => 'tcp' +            ); +        }; + +        $retry--; +        #Some buggy IP factories can return a defined server_sock that hasn't +        #actually connected, so we check peerport too +        if ($@ || !defined($server_sock) || !defined($server_sock->peerport)) { +            $server_sock->close() if defined($server_sock); +            undef $server_sock; +            if ($retry) { +                #Sleep for a short while +                select(undef, undef, undef, 0.1); +            } else { +                warn "Failed to start up server (".$servaddr.",".$self->server_port."): $!\n"; +                return 0; +            } +        } +    } while (!$server_sock); + +    my $sel = IO::Select->new($server_sock, $client_sock); +    my $indata; +    my @handles = ($server_sock, $client_sock); + +    #Wait for either the server socket or the client socket to become readable +    my @ready; +    local $SIG{PIPE} = "IGNORE"; +    while(!(TLSProxy::Message->end) && (@ready = $sel->can_read)) { +        foreach my $hand (@ready) { +            if ($hand == $server_sock) { +                $server_sock->sysread($indata, 16384) or goto END; +                $indata = $self->process_packet(1, $indata); +                $client_sock->syswrite($indata); +            } elsif ($hand == $client_sock) { +                $client_sock->sysread($indata, 16384) or goto END; +                $indata = $self->process_packet(0, $indata); +                $server_sock->syswrite($indata); +            } else { +                print "Err\n"; +                goto END; +            } +        } +    } + +    END: +    print "Connection closed\n"; +    if($server_sock) { +        $server_sock->close(); +    } +    if($client_sock) { +        #Closing this also kills the child process +        $client_sock->close(); +    } +    if(!$self->debug) { +        select($oldstdout); +    } +    $self->serverconnects($self->serverconnects - 1); +    if ($self->serverconnects == 0) { +        die "serverpid is zero\n" if $self->serverpid == 0; +        print "Waiting for server process to close: " +              .$self->serverpid."\n"; +        waitpid( $self->serverpid, 0); +        die "exit code $? from server process\n" if $? != 0; +    } else { +        # Give s_server sufficient time to finish what it was doing +        usleep(250000); +    } +    die "clientpid is zero\n" if $self->clientpid == 0; +    print "Waiting for client process to close: ".$self->clientpid."\n"; +    waitpid($self->clientpid, 0); + +    return 1; +} + +sub process_packet +{ +    my ($self, $server, $packet) = @_; +    my $len_real; +    my $decrypt_len; +    my $data; +    my $recnum; + +    if ($server) { +        print "Received server packet\n"; +    } else { +        print "Received client packet\n"; +    } + +    if ($self->{direction} != $server) { +        $self->{flight} = $self->{flight} + 1; +        $self->{direction} = $server; +    } + +    print "Packet length = ".length($packet)."\n"; +    print "Processing flight ".$self->flight."\n"; + +    #Return contains the list of record found in the packet followed by the +    #list of messages in those records and any partial message +    my @ret = TLSProxy::Record->get_records($server, $self->flight, $self->{partial}[$server].$packet); +    $self->{partial}[$server] = $ret[2]; +    push @{$self->record_list}, @{$ret[0]}; +    push @{$self->{message_list}}, @{$ret[1]}; + +    print "\n"; + +    if (scalar(@{$ret[0]}) == 0 or length($ret[2]) != 0) { +        return ""; +    } + +    #Finished parsing. Call user provided filter here +    if (defined $self->filter) { +        $self->filter->($self); +    } + +    #Reconstruct the packet +    $packet = ""; +    foreach my $record (@{$self->record_list}) { +        $packet .= $record->reconstruct_record(); +    } + +    print "Forwarded packet length = ".length($packet)."\n\n"; + +    return $packet; +} + +#Read accessors +sub execute +{ +    my $self = shift; +    return $self->{execute}; +} +sub cert +{ +    my $self = shift; +    return $self->{cert}; +} +sub debug +{ +    my $self = shift; +    return $self->{debug}; +} +sub flight +{ +    my $self = shift; +    return $self->{flight}; +} +sub record_list +{ +    my $self = shift; +    return $self->{record_list}; +} +sub success +{ +    my $self = shift; +    return $self->{success}; +} +sub end +{ +    my $self = shift; +    return $self->{end}; +} +sub supports_IPv6 +{ +    my $self = shift; +    return $have_IPv6; +} +sub proxy_addr +{ +    my $self = shift; +    return $self->{proxy_addr}; +} +sub proxy_port +{ +    my $self = shift; +    return $self->{proxy_port}; +} + +#Read/write accessors +sub server_addr +{ +    my $self = shift; +    if (@_) { +      $self->{server_addr} = shift; +    } +    return $self->{server_addr}; +} +sub server_port +{ +    my $self = shift; +    if (@_) { +      $self->{server_port} = shift; +    } +    return $self->{server_port}; +} +sub filter +{ +    my $self = shift; +    if (@_) { +      $self->{filter} = shift; +    } +    return $self->{filter}; +} +sub cipherc +{ +    my $self = shift; +    if (@_) { +      $self->{cipherc} = shift; +    } +    return $self->{cipherc}; +} +sub ciphers +{ +    my $self = shift; +    if (@_) { +      $self->{ciphers} = shift; +    } +    return $self->{ciphers}; +} +sub serverflags +{ +    my $self = shift; +    if (@_) { +      $self->{serverflags} = shift; +    } +    return $self->{serverflags}; +} +sub clientflags +{ +    my $self = shift; +    if (@_) { +      $self->{clientflags} = shift; +    } +    return $self->{clientflags}; +} +sub serverconnects +{ +    my $self = shift; +    if (@_) { +      $self->{serverconnects} = shift; +    } +    return $self->{serverconnects}; +} +# This is a bit ugly because the caller is responsible for keeping the records +# in sync with the updated message list; simply updating the message list isn't +# sufficient to get the proxy to forward the new message. +# But it does the trick for the one test (test_sslsessiontick) that needs it. +sub message_list +{ +    my $self = shift; +    if (@_) { +        $self->{message_list} = shift; +    } +    return $self->{message_list}; +} +sub serverpid +{ +    my $self = shift; +    if (@_) { +      $self->{serverpid} = shift; +    } +    return $self->{serverpid}; +} +sub clientpid +{ +    my $self = shift; +    if (@_) { +        $self->{clientpid} = shift; +    } +    return $self->{clientpid}; +} + +sub fill_known_data +{ +    my $length = shift; +    my $ret = ""; +    for (my $i = 0; $i < $length; $i++) { +        $ret .= chr($i); +    } +    return $ret; +} + +sub reneg +{ +    my $self = shift; +    if (@_) { +      $self->{reneg} = shift; +    } +    return $self->{reneg}; +} + +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/Record.pm b/openssl-1.1.0h/util/perl/TLSProxy/Record.pm new file mode 100644 index 0000000..786ba0c --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/Record.pm @@ -0,0 +1,339 @@ +# Copyright 2016-2018 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 + +use strict; + +use TLSProxy::Proxy; + +package TLSProxy::Record; + +my $server_ccs_seen = 0; +my $client_ccs_seen = 0; +my $etm = 0; + +use constant TLS_RECORD_HEADER_LENGTH => 5; + +#Record types +use constant { +    RT_APPLICATION_DATA => 23, +    RT_HANDSHAKE => 22, +    RT_ALERT => 21, +    RT_CCS => 20, +    RT_UNKNOWN => 100 +}; + +my %record_type = ( +    RT_APPLICATION_DATA, "APPLICATION DATA", +    RT_HANDSHAKE, "HANDSHAKE", +    RT_ALERT, "ALERT", +    RT_CCS, "CCS", +    RT_UNKNOWN, "UNKNOWN" +); + +use constant { +    VERS_TLS_1_3 => 772, +    VERS_TLS_1_2 => 771, +    VERS_TLS_1_1 => 770, +    VERS_TLS_1_0 => 769, +    VERS_SSL_3_0 => 768, +    VERS_SSL_LT_3_0 => 767 +}; + +my %tls_version = ( +    VERS_TLS_1_3, "TLS1.3", +    VERS_TLS_1_2, "TLS1.2", +    VERS_TLS_1_1, "TLS1.1", +    VERS_TLS_1_0, "TLS1.0", +    VERS_SSL_3_0, "SSL3", +    VERS_SSL_LT_3_0, "SSL<3" +); + +#Class method to extract records from a packet of data +sub get_records +{ +    my $class = shift; +    my $server = shift; +    my $flight = shift; +    my $packet = shift; +    my $partial = ""; +    my @record_list = (); +    my @message_list = (); +    my $data; +    my $content_type; +    my $version; +    my $len; +    my $len_real; +    my $decrypt_len; + +    my $recnum = 1; +    while (length ($packet) > 0) { +        print " Record $recnum"; +        if ($server) { +            print " (server -> client)\n"; +        } else { +            print " (client -> server)\n"; +        } +        #Get the record header +        if (length($packet) < TLS_RECORD_HEADER_LENGTH +                || length($packet) < 5 + unpack("n", substr($packet, 3, 2))) { +            print "Partial data : ".length($packet)." bytes\n"; +            $partial = $packet; +            $packet = ""; +        } else { +            ($content_type, $version, $len) = unpack('CnnC*', $packet); +            $data = substr($packet, 5, $len); + +            print "  Content type: ".$record_type{$content_type}."\n"; +            print "  Version: $tls_version{$version}\n"; +            print "  Length: $len"; +            if ($len == length($data)) { +                print "\n"; +                $decrypt_len = $len_real = $len; +            } else { +                print " (expected), ".length($data)." (actual)\n"; +                $decrypt_len = $len_real = length($data); +            } + +            my $record = TLSProxy::Record->new( +                $flight, +                $content_type, +                $version, +                $len, +                0, +                $len_real, +                $decrypt_len, +                substr($packet, TLS_RECORD_HEADER_LENGTH, $len_real), +                substr($packet, TLS_RECORD_HEADER_LENGTH, $len_real) +            ); + +            if (($server && $server_ccs_seen) +                     || (!$server && $client_ccs_seen)) { +                if ($etm) { +                    $record->decryptETM(); +                } else { +                    $record->decrypt(); +                } +            } + +            push @record_list, $record; + +            #Now figure out what messages are contained within this record +            my @messages = TLSProxy::Message->get_messages($server, $record); +            push @message_list, @messages; + +            $packet = substr($packet, TLS_RECORD_HEADER_LENGTH + $len_real); +            $recnum++; +        } +    } + +    return (\@record_list, \@message_list, $partial); +} + +sub clear +{ +    $server_ccs_seen = 0; +    $client_ccs_seen = 0; +} + +#Class level accessors +sub server_ccs_seen +{ +    my $class = shift; +    if (@_) { +      $server_ccs_seen = shift; +    } +    return $server_ccs_seen; +} +sub client_ccs_seen +{ +    my $class = shift; +    if (@_) { +      $client_ccs_seen = shift; +    } +    return $client_ccs_seen; +} +#Enable/Disable Encrypt-then-MAC +sub etm +{ +    my $class = shift; +    if (@_) { +      $etm = shift; +    } +    return $etm; +} + +sub new +{ +    my $class = shift; +    my ($flight, +        $content_type, +        $version, +        $len, +        $sslv2, +        $len_real, +        $decrypt_len, +        $data, +        $decrypt_data) = @_; +     +    my $self = { +        flight => $flight, +        content_type => $content_type, +        version => $version, +        len => $len, +        sslv2 => $sslv2, +        len_real => $len_real, +        decrypt_len => $decrypt_len, +        data => $data, +        decrypt_data => $decrypt_data, +        orig_decrypt_data => $decrypt_data, +        sent => 0 +    }; + +    return bless $self, $class; +} + +#Decrypt using encrypt-then-MAC +sub decryptETM +{ +    my ($self) = shift; + +    my $data = $self->data; + +    if($self->version >= VERS_TLS_1_1()) { +        #TLS1.1+ has an explicit IV. Throw it away +        $data = substr($data, 16); +    } + +    #Throw away the MAC (assumes MAC is 20 bytes for now. FIXME) +    $data = substr($data, 0, length($data) - 20); + +    #Find out what the padding byte is +    my $padval = unpack("C", substr($data, length($data) - 1)); + +    #Throw away the padding +    $data = substr($data, 0, length($data) - ($padval + 1)); + +    $self->decrypt_data($data); +    $self->decrypt_len(length($data)); + +    return $data; +} + +#Standard decrypt +sub decrypt() +{ +    my ($self) = shift; + +    my $data = $self->data; + +    if($self->version >= VERS_TLS_1_1()) { +        #TLS1.1+ has an explicit IV. Throw it away +        $data = substr($data, 16); +    } + +    #Find out what the padding byte is +    my $padval = unpack("C", substr($data, length($data) - 1)); + +    #Throw away the padding +    $data = substr($data, 0, length($data) - ($padval + 1)); + +    #Throw away the MAC (assumes MAC is 20 bytes for now. FIXME) +    $data = substr($data, 0, length($data) - 20); + +    $self->decrypt_data($data); +    $self->decrypt_len(length($data)); + +    return $data; +} + +#Reconstruct the on-the-wire record representation +sub reconstruct_record +{ +    my $self = shift; +    my $data; + +    if ($self->{sent}) { +        return ""; +    } +    $self->{sent} = 1; + +    if ($self->sslv2) { +        $data = pack('n', $self->len | 0x8000); +    } else { +        $data = pack('Cnn', $self->content_type, $self->version, $self->len); +    } +    $data .= $self->data; + +    return $data; +} + +#Read only accessors +sub flight +{ +    my $self = shift; +    return $self->{flight}; +} +sub content_type +{ +    my $self = shift; +    return $self->{content_type}; +} +sub version +{ +    my $self = shift; +    return $self->{version}; +} +sub sslv2 +{ +    my $self = shift; +    return $self->{sslv2}; +} +sub len_real +{ +    my $self = shift; +    return $self->{len_real}; +} +sub orig_decrypt_data +{ +    my $self = shift; +    return $self->{orig_decrypt_data}; +} + +#Read/write accessors +sub decrypt_len +{ +    my $self = shift; +    if (@_) { +      $self->{decrypt_len} = shift; +    } +    return $self->{decrypt_len}; +} +sub data +{ +    my $self = shift; +    if (@_) { +      $self->{data} = shift; +    } +    return $self->{data}; +} +sub decrypt_data +{ +    my $self = shift; +    if (@_) { +      $self->{decrypt_data} = shift; +    } +    return $self->{decrypt_data}; +} +sub len +{ +    my $self = shift; +    if (@_) { +      $self->{len} = shift; +    } +    return $self->{len}; +} +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/ServerHello.pm b/openssl-1.1.0h/util/perl/TLSProxy/ServerHello.pm new file mode 100644 index 0000000..79a8be9 --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/ServerHello.pm @@ -0,0 +1,210 @@ +# Copyright 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 + +use strict; + +package TLSProxy::ServerHello; + +use vars '@ISA'; +push @ISA, 'TLSProxy::Message'; + +sub new +{ +    my $class = shift; +    my ($server, +        $data, +        $records, +        $startoffset, +        $message_frag_lens) = @_; +     +    my $self = $class->SUPER::new( +        $server, +        TLSProxy::Message::MT_SERVER_HELLO, +        $data, +        $records, +        $startoffset, +        $message_frag_lens); + +    $self->{server_version} = 0; +    $self->{random} = []; +    $self->{session_id_len} = 0; +    $self->{session} = ""; +    $self->{ciphersuite} = 0; +    $self->{comp_meth} = 0; +    $self->{extension_data} = ""; + +    return $self; +} + +sub parse +{ +    my $self = shift; +    my $ptr = 2; +    my ($server_version) = unpack('n', $self->data); +    my $random = substr($self->data, $ptr, 32); +    $ptr += 32; +    my $session_id_len = unpack('C', substr($self->data, $ptr)); +    $ptr++; +    my $session = substr($self->data, $ptr, $session_id_len); +    $ptr += $session_id_len; +    my $ciphersuite = unpack('n', substr($self->data, $ptr)); +    $ptr += 2; +    my $comp_meth = unpack('C', substr($self->data, $ptr)); +    $ptr++; +    my $extensions_len = unpack('n', substr($self->data, $ptr)); +    if (!defined $extensions_len) { +        $extensions_len = 0; +    } else { +        $ptr += 2; +    } +    #For now we just deal with this as a block of data. In the future we will +    #want to parse this +    my $extension_data; +    if ($extensions_len != 0) { +        $extension_data = substr($self->data, $ptr); +     +        if (length($extension_data) != $extensions_len) { +            die "Invalid extension length\n"; +        } +    } else { +        if (length($self->data) != $ptr) { +            die "Invalid extension length\n"; +        } +        $extension_data = ""; +    } +    my %extensions = (); +    while (length($extension_data) >= 4) { +        my ($type, $size) = unpack("nn", $extension_data); +        my $extdata = substr($extension_data, 4, $size); +        $extension_data = substr($extension_data, 4 + $size); +        $extensions{$type} = $extdata; +    } + +    $self->server_version($server_version); +    $self->random($random); +    $self->session_id_len($session_id_len); +    $self->session($session); +    $self->ciphersuite($ciphersuite); +    $self->comp_meth($comp_meth); +    $self->extension_data(\%extensions); + +    $self->process_data(); + +    print "    Server Version:".$server_version."\n"; +    print "    Session ID Len:".$session_id_len."\n"; +    print "    Ciphersuite:".$ciphersuite."\n"; +    print "    Compression Method:".$comp_meth."\n"; +    print "    Extensions Len:".$extensions_len."\n"; +} + +#Perform any actions necessary based on the data we've seen +sub process_data +{ +    my $self = shift; + +    TLSProxy::Message->ciphersuite($self->ciphersuite); +} + +#Reconstruct the on-the-wire message data following changes +sub set_message_contents +{ +    my $self = shift; +    my $data; +    my $extensions = ""; + +    $data = pack('n', $self->server_version); +    $data .= $self->random; +    $data .= pack('C', $self->session_id_len); +    $data .= $self->session; +    $data .= pack('n', $self->ciphersuite); +    $data .= pack('C', $self->comp_meth); + +    foreach my $key (keys %{$self->extension_data}) { +        my $extdata = ${$self->extension_data}{$key}; +        $extensions .= pack("n", $key); +        $extensions .= pack("n", length($extdata)); +        $extensions .= $extdata; +        if ($key == TLSProxy::Message::EXT_DUPLICATE_EXTENSION) { +          $extensions .= pack("n", $key); +          $extensions .= pack("n", length($extdata)); +          $extensions .= $extdata; +        } +    } + +    $data .= pack('n', length($extensions)); +    $data .= $extensions; +    $self->data($data); +} + +#Read/write accessors +sub server_version +{ +    my $self = shift; +    if (@_) { +      $self->{client_version} = shift; +    } +    return $self->{client_version}; +} +sub random +{ +    my $self = shift; +    if (@_) { +      $self->{random} = shift; +    } +    return $self->{random}; +} +sub session_id_len +{ +    my $self = shift; +    if (@_) { +      $self->{session_id_len} = shift; +    } +    return $self->{session_id_len}; +} +sub session +{ +    my $self = shift; +    if (@_) { +      $self->{session} = shift; +    } +    return $self->{session}; +} +sub ciphersuite +{ +    my $self = shift; +    if (@_) { +      $self->{ciphersuite} = shift; +    } +    return $self->{ciphersuite}; +} +sub comp_meth +{ +    my $self = shift; +    if (@_) { +      $self->{comp_meth} = shift; +    } +    return $self->{comp_meth}; +} +sub extension_data +{ +    my $self = shift; +    if (@_) { +      $self->{extension_data} = shift; +    } +    return $self->{extension_data}; +} +sub set_extension +{ +    my ($self, $ext_type, $ext_data) = @_; +    $self->{extension_data}{$ext_type} = $ext_data; +} +sub delete_extension +{ +    my ($self, $ext_type) = @_; +    delete $self->{extension_data}{$ext_type}; +} +1; diff --git a/openssl-1.1.0h/util/perl/TLSProxy/ServerKeyExchange.pm b/openssl-1.1.0h/util/perl/TLSProxy/ServerKeyExchange.pm new file mode 100644 index 0000000..6e5b4cd --- /dev/null +++ b/openssl-1.1.0h/util/perl/TLSProxy/ServerKeyExchange.pm @@ -0,0 +1,134 @@ +# Copyright 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 + +use strict; + +package TLSProxy::ServerKeyExchange; + +use vars '@ISA'; +push @ISA, 'TLSProxy::Message'; + +sub new +{ +    my $class = shift; +    my ($server, +        $data, +        $records, +        $startoffset, +        $message_frag_lens) = @_; +     +    my $self = $class->SUPER::new( +        $server, +        TLSProxy::Message::MT_SERVER_KEY_EXCHANGE, +        $data, +        $records, +        $startoffset, +        $message_frag_lens); + +    #DHE +    $self->{p} = ""; +    $self->{g} = ""; +    $self->{pub_key} = ""; +    $self->{sig} = ""; + +    return $self; +} + +sub parse +{ +    my $self = shift; + +    #Minimal SKE parsing. Only supports DHE at the moment (if its not DHE +    #the parsing data will be trash...which is ok as long as we don't try to +    #use it) + +    my $p_len = unpack('n', $self->data); +    my $ptr = 2; +    my $p = substr($self->data, $ptr, $p_len); +    $ptr += $p_len; + +    my $g_len = unpack('n', substr($self->data, $ptr)); +    $ptr += 2; +    my $g = substr($self->data, $ptr, $g_len); +    $ptr += $g_len; + +    my $pub_key_len = unpack('n', substr($self->data, $ptr)); +    $ptr += 2; +    my $pub_key = substr($self->data, $ptr, $pub_key_len); +    $ptr += $pub_key_len; + +    #We assume its signed +    my $sig_len = unpack('n', substr($self->data, $ptr)); +    my $sig = ""; +    if (defined $sig_len) { +	$ptr += 2; +	$sig = substr($self->data, $ptr, $sig_len); +	$ptr += $sig_len; +    } + +    $self->p($p); +    $self->g($g); +    $self->pub_key($pub_key); +    $self->sig($sig); +} + + +#Reconstruct the on-the-wire message data following changes +sub set_message_contents +{ +    my $self = shift; +    my $data; + +    $data = pack('n', length($self->p)); +    $data .= $self->p; +    $data .= pack('n', length($self->g)); +    $data .= $self->g; +    $data .= pack('n', length($self->pub_key)); +    $data .= $self->pub_key; +    if (length($self->sig) > 0) { +        $data .= pack('n', length($self->sig)); +        $data .= $self->sig; +    } + +    $self->data($data); +} + +#Read/write accessors +#DHE +sub p +{ +    my $self = shift; +    if (@_) { +      $self->{p} = shift; +    } +    return $self->{p}; +} +sub g +{ +    my $self = shift; +    if (@_) { +      $self->{g} = shift; +    } +    return $self->{g}; +} +sub pub_key +{ +    my $self = shift; +    if (@_) { +      $self->{pub_key} = shift; +    } +    return $self->{pub_key}; +} +sub sig +{ +    my $self = shift; +    if (@_) { +      $self->{sig} = shift; +    } +    return $self->{sig}; +} +1; diff --git a/openssl-1.1.0h/util/perl/with_fallback.pm b/openssl-1.1.0h/util/perl/with_fallback.pm new file mode 100644 index 0000000..2af1d5f --- /dev/null +++ b/openssl-1.1.0h/util/perl/with_fallback.pm @@ -0,0 +1,25 @@ +# Copyright 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 + +package with_fallback; + +sub import { +    use File::Basename; +    use File::Spec::Functions; +    foreach (@_) { +	eval "require $_"; +	if ($@) { +	    unshift @INC, catdir(dirname(__FILE__), +                                 "..", "..", "external", "perl"); +	    my $transfer = "transfer::$_"; +	    eval "require $transfer"; +	    shift @INC; +	    warn $@ if $@; +	} +    } +} +1; diff --git a/openssl-1.1.0h/util/point.sh b/openssl-1.1.0h/util/point.sh new file mode 100755 index 0000000..da39899 --- /dev/null +++ b/openssl-1.1.0h/util/point.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +rm -f "$2" +if test "$OSTYPE" = msdosdjgpp || test "x$PLATFORM" = xmingw ; then +    cp "$1" "$2" +else +    ln -s "$1" "$2" +fi +echo "$2 => $1" + diff --git a/openssl-1.1.0h/util/process_docs.pl b/openssl-1.1.0h/util/process_docs.pl new file mode 100755 index 0000000..e084df7 --- /dev/null +++ b/openssl-1.1.0h/util/process_docs.pl @@ -0,0 +1,248 @@ +#! /usr/bin/env perl +# Copyright 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 + +use strict; +use warnings; + +use File::Spec::Functions; +use File::Basename; +use File::Copy; +use File::Path; +use FindBin; +use lib "$FindBin::Bin/perl"; +use OpenSSL::Glob; +use Getopt::Long; +use Pod::Usage; + +use lib '.'; +use configdata; + +# We know we are in the 'util' directory and that our perl modules are +# in util/perl +use lib catdir(dirname($0), "perl"); +use OpenSSL::Util::Pod; + +my %options = (); +GetOptions(\%options, +           'sourcedir=s',       # Source directory +           'subdir=s%',         # Subdirectories to look through, +                                # with associated section numbers +           'destdir=s',         # Destination directory +           #'in=s@',             # Explicit files to process (ignores sourcedir) +           #'section=i',         # Default section used for --in files +           'type=s',            # The result type, 'man' or 'html' +           'suffix:s',          # Suffix to add to the extension. +                                # Only used with type=man +           'remove',            # To remove files rather than writing them +           'dry-run|n',         # Only output file names on STDOUT +           'debug|D+', +          ); + +unless ($options{subdir}) { +    $options{subdir} = { apps   => '1', +                         crypto => '3', +                         ssl    => '3' }; +} +unless ($options{sourcedir}) { +    $options{sourcedir} = catdir($config{sourcedir}, "doc"); +} +pod2usage(1) unless ( defined $options{subdir} +                      && defined $options{sourcedir} +                      && defined $options{destdir} +                      && defined $options{type} +                      && ($options{type} eq 'man' +                          || $options{type} eq 'html') ); +pod2usage(1) if ( $options{type} eq 'html' +                  && defined $options{suffix} ); + +if ($options{debug}) { +    print STDERR "DEBUG: options:\n"; +    print STDERR "DEBUG:   --sourcedir = $options{sourcedir}\n" +        if defined $options{sourcedir}; +    print STDERR "DEBUG:   --destdir   = $options{destdir}\n" +        if defined $options{destdir}; +    print STDERR "DEBUG:   --type      = $options{type}\n" +        if defined $options{type}; +    print STDERR "DEBUG:   --suffix    = $options{suffix}\n" +        if defined $options{suffix}; +    foreach (keys %{$options{subdir}}) { +        print STDERR "DEBUG:   --subdir    = $_=$options{subdir}->{$_}\n"; +    } +    print STDERR "DEBUG:   --remove    = $options{remove}\n" +        if defined $options{remove}; +    print STDERR "DEBUG:   --debug     = $options{debug}\n" +        if defined $options{debug}; +    print STDERR "DEBUG:   --dry-run   = $options{\"dry-run\"}\n" +        if defined $options{"dry-run"}; +} + +my $symlink_exists = eval { symlink("",""); 1 }; + +foreach my $subdir (keys %{$options{subdir}}) { +    my $section = $options{subdir}->{$subdir}; +    my $podsourcedir = catfile($options{sourcedir}, $subdir); +    my $podglob = catfile($podsourcedir, "*.pod"); + +    foreach my $podfile (glob $podglob) { +        my $podname = basename($podfile, ".pod"); +        my $podpath = catfile($podfile); +        my %podinfo = extract_pod_info($podpath, +                                       { debug => $options{debug}, +                                         section => $section }); +        my @podfiles = grep { $_ ne $podname } @{$podinfo{names}}; + +        my $updir = updir(); +        my $name = uc $podname; +        my $suffix = { man  => ".$podinfo{section}".($options{suffix} // ""), +                       html => ".html" } -> {$options{type}}; +        my $generate = { man  => "pod2man --name=$name --section=$podinfo{section} --center=OpenSSL --release=$config{version} \"$podpath\"", +                         html => "pod2html \"--podroot=$options{sourcedir}\" --htmldir=$updir --podpath=apps:crypto:ssl \"--infile=$podpath\" \"--title=$podname\"" +                         } -> {$options{type}}; +        my $output_dir = catdir($options{destdir}, "man$podinfo{section}"); +        my $output_file = $podname . $suffix; +        my $output_path = catfile($output_dir, $output_file); + +        if (! $options{remove}) { +            my @output; +            print STDERR "DEBUG: Processing, using \"$generate\"\n" +                if $options{debug}; +            unless ($options{"dry-run"}) { +                @output = `$generate`; +                map { s|href="http://man\.he\.net/(man\d/[^"]+)(?:\.html)?"|href="../$1.html|g; } @output +                    if $options{type} eq "html"; +            } +            print STDERR "DEBUG: Done processing\n" if $options{debug}; + +            if (! -d $output_dir) { +                print STDERR "DEBUG: Creating directory $output_dir\n" if $options{debug}; +                unless ($options{"dry-run"}) { +                    mkpath $output_dir +                        or die "Trying to create directory $output_dir: $!\n"; +                } +            } +            print STDERR "DEBUG: Writing $output_path\n" if $options{debug}; +            unless ($options{"dry-run"}) { +                open my $output_fh, '>', $output_path +                    or die "Trying to write to $output_path: $!\n"; +                foreach (@output) { +                    print $output_fh $_; +                } +                close $output_fh; +            } +            print STDERR "DEBUG: Done writing $output_path\n" if $options{debug}; +        } else { +            print STDERR "DEBUG: Removing $output_path\n" if $options{debug}; +            unless ($options{"dry-run"}) { +                while (unlink $output_path) {} +            } +        } +        print "$output_path\n"; + +        foreach (@podfiles) { +            my $link_file = $_ . $suffix; +            my $link_path = catfile($output_dir, $link_file); +            if (! $options{remove}) { +                if ($symlink_exists) { +                    print STDERR "DEBUG: Linking $link_path -> $output_file\n" +                        if $options{debug}; +                    unless ($options{"dry-run"}) { +                        symlink $output_file, $link_path; +                    } +                } else { +                    print STDERR "DEBUG: Copying $output_path to link_path\n" +                        if $options{debug}; +                    unless ($options{"dry-run"}) { +                        copy $output_path, $link_path; +                    } +                } +            } else { +                print STDERR "DEBUG: Removing $link_path\n" if $options{debug}; +                unless ($options{"dry-run"}) { +                    while (unlink $link_path) {} +                } +            } +            print "$link_path -> $output_path\n"; +        } +    } +} + +__END__ + +=pod + +=head1 NAME + +process_docs.pl - A script to process OpenSSL docs + +=head1 SYNOPSIS + +B<process_docs.pl> +[B<--sourcedir>=I<dir>] +B<--destdir>=I<dir> +B<--type>=B<man>|B<html> +[B<--suffix>=I<suffix>] +[B<--remove>] +[B<--dry-run>|B<-n>] +[B<--debug>|B<-D>] + +=head1 DESCRIPTION + +This script looks for .pod files in the subdirectories 'apps', 'crypto' +and 'ssl' under the given source directory. + +The OpenSSL configuration data file F<configdata.pm> I<must> reside in +the current directory, I<or> perl must have the directory it resides in +in its inclusion array.  For the latter variant, a call like this would +work: + + perl -I../foo util/process_docs.pl {options ...} + +=head1 OPTIONS + +=over 4 + +=item B<--sourcedir>=I<dir> + +Top directory where the source files are found. + +=item B<--destdir>=I<dir> + +Top directory where the resulting files should end up + +=item B<--type>=B<man>|B<html> + +Type of output to produce.  Currently supported are man pages and HTML files. + +=item B<--suffix>=I<suffix> + +A suffix added to the extension.  Only valid with B<--type>=B<man> + +=item B<--remove> + +Instead of writing the files, remove them. + +=item B<--dry-run>|B<-n> + +Do not perform any file writing, directory creation or file removal. + +=item B<--debug>|B<-D> + +Print extra debugging output. + +=back + +=head1 COPYRIGHT + +Copyright 2013-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 + +=cut diff --git a/openssl-1.1.0h/util/selftest.pl b/openssl-1.1.0h/util/selftest.pl new file mode 100644 index 0000000..d1d1159 --- /dev/null +++ b/openssl-1.1.0h/util/selftest.pl @@ -0,0 +1,207 @@ +#! /usr/bin/env perl +# Copyright 2000-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 + +# Run the test suite and generate a report + +if (! -f "Configure") { +    print "Please run perl util/selftest.pl in the OpenSSL directory.\n"; +    exit 1; +} + +my $report="testlog"; +my $os="??"; +my $version="??"; +my $platform0="??"; +my $platform="??"; +my $options="??"; +my $last="??"; +my $ok=0; +my $cc="cc"; +my $cversion="??"; +my $sep="-----------------------------------------------------------------------------\n"; +my $not_our_fault="\nPlease ask your system administrator/vendor for more information.\n[Problems with your operating system setup should not be reported\nto the OpenSSL project.]\n"; + +open(OUT,">$report") or die; + +print OUT "OpenSSL self-test report:\n\n"; + +$uname=`uname -a`; +$uname="??\n" if $uname eq ""; + +$c=`sh config -t`; +foreach $_ (split("\n",$c)) { +    $os=$1 if (/Operating system: (.*)$/); +    $platform0=$1 if (/Configuring for (.*)$/); +} + +system "sh config" if (! -f "Makefile"); + +if (open(IN,"<Makefile")) { +    while (<IN>) { +	$version=$1 if (/^VERSION=(.*)$/); +	$platform=$1 if (/^PLATFORM=(.*)$/); +	$options=$1 if (/^OPTIONS=(.*)$/); +	$cc=$1 if (/^CC= *(.*)$/); +    } +    close(IN); +} else { +    print OUT "Error running config!\n"; +} + +$cversion=`$cc -v 2>&1`; +$cversion=`$cc -V 2>&1` if $cversion =~ "[Uu]sage"; +$cversion=`$cc -V |head -1` if $cversion =~ "Error"; +$cversion=`$cc --version` if $cversion eq ""; +$cversion =~ s/Reading specs.*\n//; +$cversion =~ s/usage.*\n//; +$cversion =~ s|\R$||; + +if (open(IN,"<CHANGES")) { +    while(<IN>) { +	if (/\*\) (.{0,55})/ && !/applies to/) { +	    $last=$1; +	    last; +	} +    } +    close(IN); +} + +print OUT "OpenSSL version:  $version\n"; +print OUT "Last change:      $last...\n"; +print OUT "Options:          $options\n" if $options ne ""; +print OUT "OS (uname):       $uname"; +print OUT "OS (config):      $os\n"; +print OUT "Target (default): $platform0\n"; +print OUT "Target:           $platform\n"; +print OUT "Compiler:         $cversion\n"; +print OUT "\n"; + +print "Checking compiler...\n"; +if (open(TEST,">cctest.c")) { +    print TEST "#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\nmain(){printf(\"Hello world\\n\");}\n"; +    close(TEST); +    system("$cc -o cctest cctest.c"); +    if (`./cctest` !~ /Hello world/) { +	print OUT "Compiler doesn't work.\n"; +	print OUT $not_our_fault; +	goto err; +    } +    system("ar r cctest.a /dev/null"); +    if (not -f "cctest.a") { +	print OUT "Check your archive tool (ar).\n"; +	print OUT $not_our_fault; +	goto err; +    } +} else { +    print OUT "Can't create cctest.c\n"; +} +if (open(TEST,">cctest.c")) { +    print TEST "#include <stdio.h>\n#include <stdlib.h>\n#include <openssl/opensslv.h>\nmain(){printf(OPENSSL_VERSION_TEXT);}\n"; +    close(TEST); +    system("$cc -o cctest -Iinclude cctest.c"); +    $cctest = `./cctest`; +    if ($cctest !~ /OpenSSL $version/) { +	if ($cctest =~ /OpenSSL/) { +	    print OUT "#include uses headers from different OpenSSL version!\n"; +	} else { +	    print OUT "Can't compile test program!\n"; +	} +	print OUT $not_our_fault; +	goto err; +    } +} else { +    print OUT "Can't create cctest.c\n"; +} + +print "Running make...\n"; +if (system("make 2>&1 | tee make.log") > 255) { + +    print OUT "make failed!\n"; +    if (open(IN,"<make.log")) { +	print OUT $sep; +	while (<IN>) { +	    print OUT; +	} +	close(IN); +	print OUT $sep; +    } else { +	print OUT "make.log not found!\n"; +    } +    goto err; +} + +# Not sure why this is here.  The tests themselves can detect if their +# particular feature isn't included, and should therefore skip themselves. +# To skip *all* tests just because one algorithm isn't included is like +# shooting mosquito with an elephant gun... +#                   -- Richard Levitte, inspired by problem report 1089 +# +#$_=$options; +#s/no-asm//; +#s/no-shared//; +#s/no-krb5//; +#if (/no-/) +#{ +#    print OUT "Test skipped.\n"; +#    goto err; +#} + +print "Running make test...\n"; +if (system("make test 2>&1 | tee maketest.log") > 255) + { +    print OUT "make test failed!\n"; +} else { +    $ok=1; +} + +if ($ok and open(IN,"<maketest.log")) { +    while (<IN>) { +	$ok=2 if /^platform: $platform/; +    } +    close(IN); +} + +if ($ok != 2) { +    print OUT "Failure!\n"; +    if (open(IN,"<make.log")) { +	print OUT $sep; +	while (<IN>) { +	    print OUT; +	} +	close(IN); +	print OUT $sep; +    } else { +	print OUT "make.log not found!\n"; +    } +    if (open(IN,"<maketest.log")) { +	while (<IN>) { +	    print OUT; +	} +	close(IN); +	print OUT $sep; +    } else { +	print OUT "maketest.log not found!\n"; +    } +} else { +    print OUT "Test passed.\n"; +} +err: +close(OUT); + +print "\n"; +open(IN,"<$report") or die; +while (<IN>) { +    if (/$sep/) { +	print "[...]\n"; +	last; +    } +    print; +} +print "\nTest report in file $report\n"; + +die if $ok != 2; diff --git a/openssl-1.1.0h/util/shlib_wrap.sh.in b/openssl-1.1.0h/util/shlib_wrap.sh.in new file mode 100755 index 0000000..6c115ba --- /dev/null +++ b/openssl-1.1.0h/util/shlib_wrap.sh.in @@ -0,0 +1,128 @@ +#!/bin/sh + +# To test this OpenSSL version's applications against another version's +# shared libraries, simply set +# +#     OPENSSL_REGRESSION=/path/to/other/OpenSSL/build/tree +if [ -n "$OPENSSL_REGRESSION" ]; then +    shlibwrap="$OPENSSL_REGRESSION/util/shlib_wrap.sh" +    if [ -x "$shlibwrap" ]; then +        # We clear OPENSSL_REGRESSION to avoid a loop, should the shlib_wrap.sh +        # we exec also support that mechanism... +        OPENSSL_REGRESSION= exec "$shlibwrap" "$@" +    else +        if [ -f "$shlibwrap" ]; then +            echo "Not permitted to run $shlibwrap" >&2 +        else +            echo "No $shlibwrap, perhaps OPENSSL_REGRESSION isn't properly set?" >&2 +        fi +        exit 1 +    fi +fi + +[ $# -ne 0 ] || set -x		# debug mode without arguments:-) + +THERE="`echo $0 | sed -e 's|[^/]*$||' 2>/dev/null`.." +[ -d "${THERE}" ] || exec "$@"	# should never happen... + +# Alternative to this is to parse ${THERE}/Makefile... +LIBCRYPTOSO="${THERE}/libcrypto.so" +if [ -f "$LIBCRYPTOSO" ]; then +    while [ -h "$LIBCRYPTOSO" ]; do +	LIBCRYPTOSO="${THERE}/`ls -l "$LIBCRYPTOSO" | sed -e 's|.*\-> ||'`" +    done +    SOSUFFIX=`echo ${LIBCRYPTOSO} | sed -e 's|.*\.so||' 2>/dev/null` +    LIBSSLSO="${THERE}/libssl.so${SOSUFFIX}" +fi + +SYSNAME=`(uname -s) 2>/dev/null`; +case "$SYSNAME" in +SunOS|IRIX*) +	# SunOS and IRIX run-time linkers evaluate alternative +	# variables depending on target ABI... +	rld_var=LD_LIBRARY_PATH +	case "`(/usr/bin/file "$LIBCRYPTOSO") 2>/dev/null`" in +	*ELF\ 64*SPARC*|*ELF\ 64*AMD64*) +		[ -n "$LD_LIBRARY_PATH_64" ] && rld_var=LD_LIBRARY_PATH_64 +		LD_PRELOAD_64="$LIBCRYPTOSO $LIBSSLSO"; export LD_PRELOAD_64 +		preload_var=LD_PRELOAD_64 +		;; +	*ELF\ 32*SPARC*|*ELF\ 32*80386*) +		# We only need to change LD_PRELOAD_32 and LD_LIBRARY_PATH_32 +		# on a multi-arch system.  Otherwise, trust the fallbacks. +		if [ -f /lib/64/ld.so.1 ]; then +		    [ -n "$LD_LIBRARY_PATH_32" ] && rld_var=LD_LIBRARY_PATH_32 +		    LD_PRELOAD_32="$LIBCRYPTOSO $LIBSSLSO"; export LD_PRELOAD_32 +		    preload_var=LD_PRELOAD_32 +		fi +		;; +	# Why are newly built .so's preloaded anyway? Because run-time +	# .so lookup path embedded into application takes precedence +	# over LD_LIBRARY_PATH and as result application ends up linking +	# to previously installed .so's. On IRIX instead of preloading +	# newly built .so's we trick run-time linker to fail to find +	# the installed .so by setting _RLD_ROOT variable. +	*ELF\ 32*MIPS*) +		#_RLD_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT"; export _RLD_LIST +		_RLD_ROOT=/no/such/dir; export _RLD_ROOT +		eval $rld_var=\"/usr/lib'${'$rld_var':+:$'$rld_var'}'\" +		preload_var=_RLD_LIST +		;; +	*ELF\ N32*MIPS*) +		[ -n "$LD_LIBRARYN32_PATH" ] && rld_var=LD_LIBRARYN32_PATH +		#_RLDN32_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT"; export _RLDN32_LIST +		_RLDN32_ROOT=/no/such/dir; export _RLDN32_ROOT +		eval $rld_var=\"/usr/lib32'${'$rld_var':+:$'$rld_var'}'\" +		preload_var=_RLDN32_LIST +		;; +	*ELF\ 64*MIPS*) +		[ -n "$LD_LIBRARY64_PATH"  ] && rld_var=LD_LIBRARY64_PATH +		#_RLD64_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT"; export _RLD64_LIST +		_RLD64_ROOT=/no/such/dir; export _RLD64_ROOT +		eval $rld_var=\"/usr/lib64'${'$rld_var':+:$'$rld_var'}'\" +		preload_var=_RLD64_LIST +		;; +	esac +	eval $rld_var=\"${THERE}'${'$rld_var':+:$'$rld_var'}'\"; export $rld_var +	unset rld_var +	;; +*)	LD_LIBRARY_PATH="${THERE}:$LD_LIBRARY_PATH"	# Linux, ELF HP-UX +	DYLD_LIBRARY_PATH="${THERE}:$DYLD_LIBRARY_PATH"	# MacOS X +	SHLIB_PATH="${THERE}:$SHLIB_PATH"		# legacy HP-UX +	LIBPATH="${THERE}:$LIBPATH"			# AIX, OS/2 +	export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH +	# Even though $PATH is adjusted [for Windows sake], it doesn't +	# necessarily does the trick. Trouble is that with introduction +	# of SafeDllSearchMode in XP/2003 it's more appropriate to copy +	# .DLLs in vicinity of executable, which is done elsewhere... +	if [ "$OSTYPE" != msdosdjgpp ]; then +		PATH="${THERE}:$PATH"; export PATH +	fi +	;; +esac + +{- output_off() if $config{ex_libs} !~ /,-rpath,/; ""; -} +if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then +	# Following three lines are major excuse for isolating them into +	# this wrapper script. Original reason for setting LD_PRELOAD +	# was to make it possible to pass 'make test' when user linked +	# with -rpath pointing to previous version installation. Wrapping +	# it into a script makes it possible to do so on multi-ABI +	# platforms. +	case "$SYSNAME" in +	*BSD|QNX)	LD_PRELOAD="$LIBCRYPTOSO:$LIBSSLSO" ;;	# *BSD, QNX +	*)	LD_PRELOAD="$LIBCRYPTOSO $LIBSSLSO" ;;	# SunOS, Linux, ELF HP-UX +	esac +	_RLD_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT"	# Tru64, o32 IRIX +	DYLD_INSERT_LIBRARIES="$LIBCRYPTOSO:$LIBSSLSO"	# MacOS X +	export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES +fi +{- output_on() if $config{ex_libs} !~ /,-rpath,/; ""; -} + +cmd="$1"; [ -x "$cmd" ] || cmd="$cmd${EXE_EXT}" +shift +if [ $# -eq 0 ]; then +	exec "$cmd"	# old sh, such as Tru64 4.x, fails to expand empty "$@" +else +	exec "$cmd" "$@" +fi diff --git a/openssl-1.1.0h/util/su-filter.pl b/openssl-1.1.0h/util/su-filter.pl new file mode 100644 index 0000000..5996f58 --- /dev/null +++ b/openssl-1.1.0h/util/su-filter.pl @@ -0,0 +1,264 @@ +#! /usr/bin/env perl +# Copyright 2015-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 + +use strict; + +my $in_su = 0; +my $indent = 0; +my $out; +my $braces = 0; +my $arrcnt; +my $data; +my $tststr; +my $incomm = 0; + +while(<>) { +    $tststr = $_; +    $incomm++ while $tststr =~ /\/\*/g; +    $incomm-- while $tststr =~ /\*\//g; + +    if($in_su == 1) { +        if(/}(.*);/) { +            $out .= $_; +            do_output($out); +            $in_su = 0; +        } elsif(/^ *\} [^\s]+(\[\d*\])* = \{/) { +           $tststr = $1; +           $arrcnt = 0; +           $arrcnt++ while $tststr =~ /\[/g; +           $in_su++; +           $braces = 1; +           /^(.* = \{)(.*)$/; +           $data = $2; +           $out .= $1."\n"; +        } else { +            $out .= $_; +        } +    } elsif($in_su == 2) { +        $data .= $_; +        if(/};$/) { +            #$data = "\n$data"; +            $data =~ s/\n */\n/g; +            $data =~ s/};\n?//s; +            my @strucdata = structureData($data); +            $out .= displayData($indent, 0, \@strucdata); +            $out .= "\n$indent};\n"; +            do_output($out); +            $in_su = 0; +        } +    } elsif($incomm <= 0 && /( *)(static )?(const )?(union|struct) ([a-zA-Z_\$][\$0-9a-zA-Z_]+ )?\{/) { +        $in_su = 1; +        $indent = $1; +        $out = $_; +        next; +    } else { +        do_output($_); +    } +} + + +sub structureData { +    my $data = $_[0]; +    my @datalist = split(/(\{|\}|,|"|#|\n|\/\*|\*\/|\(|\))/, $data); +    my $item; +    my $dataitem = ""; +    my @struclist = (); +    my $substruc; +    my $inquote = 0; +    my $inbrace = 0; +    my $preproc = 0; +    my $comment = 0; +    my $inparen = 0; + + +    foreach $item (@datalist) { +        if($comment) { +            if($item eq "*/") { +                $comment = 0; +                $dataitem .= "*/"; +                push @struclist, $dataitem; +                $dataitem = ""; +                next; +            } +            $dataitem .= $item; +            next; +        } +        if($inquote) { +            $dataitem .= $item; +            if($item eq "\"") { +                $inquote--; +            } +            next; +        } +        if($preproc) { +            if($item eq "\n") { +                $preproc = 0; +                push @struclist, $dataitem; +                $dataitem = ""; +                next; +            } +            $dataitem .= $item; +            next; +        } +        if($inbrace) { +            if($item eq "}") { +                $inbrace --; +             +                if(!$inbrace) { +                    $substruc = structureData($dataitem); +                    $dataitem = $substruc; +                    next; +                } +            } elsif($item eq "{") { +                $inbrace++; +            } elsif ($item eq "\"") { +                $inquote++; +            } +            $dataitem .= $item; +            next; +        } +        if($inparen) { +            if($item eq ")") { +                $inparen--; +            } +            $dataitem .= $item; +            next; +        } +        if($item eq "\n") { +            next; +        } +        if($item eq "#") { +            $preproc = 1; +            push @struclist, $dataitem; +            $dataitem = "#"; +            next; +        } +        if($item eq "/*") { +            $comment = 1; +            push @struclist, $dataitem; +            $dataitem= "/*"; +            next; +        } +        if($item eq "\"") { +            $dataitem .= $item; +            $inquote++; +            next; +        } +        if($item eq "{") { +            $inbrace++; +            next; +        } +        if($item eq ",") { +            push @struclist, $dataitem; +            $dataitem = ""; +            next; +        } +        if($item eq "(") { +            $dataitem .= $item; +            $inparen++; +            next; +        } +        if($item =~ /^\s*$/) { +            next; +        } +        if(ref $dataitem eq 'ARRAY') { +            push @struclist, $dataitem; +            $dataitem = ""; +        } +        $dataitem .= $item; +    } +    push @struclist, $dataitem; +    return \@struclist; +} + +sub displayData { +    my $indent = shift; +    my $depth = shift; +    my $data = shift; +    my $item; +    my $out = ""; +    my $currline = ""; +    my $first = 1; +    my $prevpreproc = 0; +    my $prevcomment = 0; + +    foreach $item (@{$data}) { +        if($item =~ /^\/\*/) { +            #Comment +            $item =~ s/\n/\n$indent/g; +            if($out =~ /\n\s*$/s) { +                $out .= $item."\n".$indent; +            } else { +                $out .= "\n".$indent.$item."\n".$indent; +            } +            $currline = $indent; +            $prevcomment = 1; +            next; +        } +        $item =~ s/^\s+//; +        if($item =~ /^#/) { +            #Pre-processor directive +            if($out =~ /\n\s*$/s) { +                $out =~ s/\n\s*$/\n/; +                $out .= $item."\n".$indent; +            } else { +                $out .= "\n".$item."\n".$indent; +            } +            $currline = $indent; +            $prevpreproc = 1; +            next; +        } +        if($first) { +            $first = 0; +            if($depth != 0) { +                $out .= $indent; +                $currline = $indent; +            } +        } else { +            if(!$prevpreproc && !$prevcomment) { +                $out .= ", "; +                $currline .= ", "; +                if($depth == 1) { +                    $out .= "\n"; +                    $currline = ""; +                } +                if($depth == 1) { +                    $out .= $indent; +                    $currline .= $indent; +                } +            } + +        } +        $prevpreproc = 0; +        $prevcomment = 0; + +        if (ref $item eq 'ARRAY') { +            if($depth == 0) { +                $out .= displayData("$indent    ", $depth+1, $item); +            } else { +                $out .= "{\n".displayData("$indent    ", $depth+1, $item)."\n".$indent."}"; +                $currline = $indent."}"; +            } +        } else { +            if(length $currline.$item > 79) { +                $currline = $indent; +                $out .= "\n$indent"; +            } +            $out .= $item; +            $currline .= $item; +        } +    } +    return $out; +} + +sub do_output { +    my $out = shift; +    # Strip any trailing whitespace +    $out =~ s/\s+\n/\n/g; +    print $out; +} diff --git a/openssl-1.1.0h/util/unlocal_shlib.com.in b/openssl-1.1.0h/util/unlocal_shlib.com.in new file mode 100644 index 0000000..dd4fd2a --- /dev/null +++ b/openssl-1.1.0h/util/unlocal_shlib.com.in @@ -0,0 +1,26 @@ +${- +  use File::Spec::Functions qw(rel2abs); + +  my $bldtop = rel2abs($config{builddir}); +  our %names = ( map { $_ => $bldtop.$_.".EXE" } +                 map { $unified_info{sharednames}->{$_} || () } +                 @{$unified_info{libraries}} ); +  "" -} +$       ! Remove the local environment created by local_shlib.com +$ +$       OPENSSL_NAMES := OPENSSL_NAMES_'F$GETJPI("","PID")' +$       IF F$TRNLNM("OSSL_FLAG",OPENSSL_NAMES) .EQS. "" THEN EXIT 0 +$ +$       NAMES := {- join(",", keys %names); -} +$       I = 0 +$       LOOP: +$           E = F$ELEMENT(I,",",NAMES) +$           I = I + 1 +$           IF E .EQS. "," THEN GOTO ENDLOOP +$           OLDV = F$TRNLNM(E,OPENSSL_NAMES) +$           DEASSIGN 'E' +$           IF OLDV .NES. "" THEN DEFINE 'E' 'OLDV' +$           GOTO LOOP +$       ENDLOOP: +$ +$       DEASSIGN 'OPENSSL_NAMES' /TABLE=LNM$PROCESS_DIRECTORY  | 
