e0a651945c
Add copyright to most .pl files This does NOT cover any .pl file that has other copyright in it. Most of those are Andy's but some are public domain. Fix typo's in some existing files. Reviewed-by: Richard Levitte <levitte@openssl.org>
160 lines
4.5 KiB
Perl
160 lines
4.5 KiB
Perl
#! /usr/bin/env perl
|
|
# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the OpenSSL license (the "License"). You may not use
|
|
# this file except in compliance with the License. You can obtain a copy
|
|
# in the file LICENSE in the source distribution or at
|
|
# https://www.openssl.org/source/license.html
|
|
|
|
# Generate progs.h file by looking for command mains in list of C files
|
|
# passed on the command line.
|
|
|
|
use strict;
|
|
use warnings;
|
|
use configdata qw/@disablables/;
|
|
|
|
my %commands = ();
|
|
my $cmdre = qr/^\s*int\s+([a-z_][a-z0-9_]*)_main\(\s*int\s+argc\s*,/;
|
|
|
|
foreach my $filename (@ARGV) {
|
|
open F, $filename or die "Coudn't open $_: $!\n";
|
|
foreach (grep /$cmdre/, <F>) {
|
|
my @foo = /$cmdre/;
|
|
$commands{$1} = 1;
|
|
}
|
|
close F;
|
|
}
|
|
|
|
@ARGV = sort keys %commands;
|
|
|
|
print <<'EOF';
|
|
/*
|
|
* WARNING: do not edit!
|
|
* Generated by apps/progs.pl
|
|
*
|
|
* 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
|
|
*/
|
|
|
|
typedef enum FUNC_TYPE {
|
|
FT_none, FT_general, FT_md, FT_cipher, FT_pkey,
|
|
FT_md_alg, FT_cipher_alg
|
|
} FUNC_TYPE;
|
|
|
|
typedef struct function_st {
|
|
FUNC_TYPE type;
|
|
const char *name;
|
|
int (*func)(int argc,char *argv[]);
|
|
const OPTIONS *help;
|
|
} FUNCTION;
|
|
|
|
DEFINE_LHASH_OF(FUNCTION);
|
|
|
|
EOF
|
|
|
|
foreach (@ARGV) {
|
|
printf "extern int %s_main(int argc, char *argv[]);\n", $_;
|
|
}
|
|
|
|
print "\n";
|
|
|
|
foreach (@ARGV) {
|
|
printf "extern OPTIONS %s_options[];\n", $_;
|
|
}
|
|
|
|
print "\n#ifdef INCLUDE_FUNCTION_TABLE\n";
|
|
print "static FUNCTION functions[] = {\n";
|
|
my %cmd_disabler = (
|
|
ciphers => "sock",
|
|
genrsa => "rsa",
|
|
rsautl => "rsa",
|
|
gendsa => "dsa",
|
|
dsaparam => "dsa",
|
|
gendh => "dh",
|
|
dhparam => "dh",
|
|
ecparam => "ec",
|
|
pkcs12 => "des",
|
|
);
|
|
foreach my $cmd (@ARGV) {
|
|
my $str=" { FT_general, \"$cmd\", ${cmd}_main, ${cmd}_options },\n";
|
|
if ($cmd =~ /^s_/) {
|
|
print "#ifndef OPENSSL_NO_SOCK\n${str}#endif\n";
|
|
} elsif (grep { $cmd eq $_ } @disablables) {
|
|
print "#ifndef OPENSSL_NO_".uc($cmd)."\n${str}#endif\n";
|
|
} elsif (my $disabler = $cmd_disabler{$cmd}) {
|
|
print "#ifndef OPENSSL_NO_".uc($disabler)."\n${str}#endif\n";
|
|
} else {
|
|
print $str;
|
|
}
|
|
}
|
|
|
|
my %md_disabler = (
|
|
sha1 => "sha",
|
|
sha224 => "sha",
|
|
sha256 => "sha",
|
|
sha384 => "sha",
|
|
sha512 => "sha",
|
|
blake2b512 => "blake2",
|
|
blake2s256 => "blake2",
|
|
);
|
|
foreach my $cmd (
|
|
"md2", "md4", "md5",
|
|
"gost",
|
|
"sha1", "sha224", "sha256", "sha384", "sha512",
|
|
"mdc2", "rmd160", "blake2b512", "blake2s256"
|
|
) {
|
|
my $str = " { FT_md, \"".$cmd."\", dgst_main},\n";
|
|
if (grep { $cmd eq $_ } @disablables) {
|
|
print "#ifndef OPENSSL_NO_".uc($cmd)."\n${str}#endif\n";
|
|
} elsif (my $disabler = $md_disabler{$cmd}) {
|
|
print "#ifndef OPENSSL_NO_".uc($disabler)."\n${str}#endif\n";
|
|
} else {
|
|
print "#ifndef OPENSSL_NO_".uc($cmd)."\n${str}#endif\n";
|
|
}
|
|
}
|
|
|
|
my %cipher_disabler = (
|
|
des3 => "des",
|
|
desx => "des",
|
|
cast5 => "cast",
|
|
);
|
|
foreach my $cmd (
|
|
"aes-128-cbc", "aes-128-ecb",
|
|
"aes-192-cbc", "aes-192-ecb",
|
|
"aes-256-cbc", "aes-256-ecb",
|
|
"camellia-128-cbc", "camellia-128-ecb",
|
|
"camellia-192-cbc", "camellia-192-ecb",
|
|
"camellia-256-cbc", "camellia-256-ecb",
|
|
"base64", "zlib",
|
|
"des", "des3", "desx", "idea", "seed", "rc4", "rc4-40",
|
|
"rc2", "bf", "cast", "rc5",
|
|
"des-ecb", "des-ede", "des-ede3",
|
|
"des-cbc", "des-ede-cbc","des-ede3-cbc",
|
|
"des-cfb", "des-ede-cfb","des-ede3-cfb",
|
|
"des-ofb", "des-ede-ofb","des-ede3-ofb",
|
|
"idea-cbc","idea-ecb", "idea-cfb", "idea-ofb",
|
|
"seed-cbc","seed-ecb", "seed-cfb", "seed-ofb",
|
|
"rc2-cbc", "rc2-ecb", "rc2-cfb","rc2-ofb", "rc2-64-cbc", "rc2-40-cbc",
|
|
"bf-cbc", "bf-ecb", "bf-cfb", "bf-ofb",
|
|
"cast5-cbc","cast5-ecb", "cast5-cfb","cast5-ofb",
|
|
"cast-cbc", "rc5-cbc", "rc5-ecb", "rc5-cfb", "rc5-ofb"
|
|
) {
|
|
my $str=" { FT_cipher, \"$cmd\", enc_main, enc_options },\n";
|
|
(my $algo= $cmd) =~ s/-.*//g;
|
|
if ($cmd eq "zlib") {
|
|
print "#ifdef ZLIB\n${str}#endif\n";
|
|
} elsif (grep { $algo eq $_ } @disablables) {
|
|
print "#ifndef OPENSSL_NO_".uc($algo)."\n${str}#endif\n";
|
|
} elsif (my $disabler = $cipher_disabler{$algo}) {
|
|
print "#ifndef OPENSSL_NO_".uc($disabler)."\n${str}#endif\n";
|
|
} else {
|
|
print $str;
|
|
}
|
|
}
|
|
|
|
print " { 0, NULL, NULL}\n};\n";
|
|
print "#endif\n";
|