mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
7e1b748570
This is merges the old "rsalz-monolith" branch over to master. The biggest
change is that option parsing switch from cascasding 'else if strcmp("-foo")'
to a utility routine and somethin akin to getopt. Also, an error in the
command line no longer prints the full summary; use -help (or --help :)
for that. There have been many other changes and code-cleanup, see
bullet list below.
Special thanks to Matt for the long and detailed code review.
TEMPORARY:
For now, comment out CRYPTO_mem_leaks() at end of main
Tickets closed:
RT3515: Use 3DES in pkcs12 if built with no-rc2
RT1766: s_client -reconnect and -starttls broke
RT2932: Catch write errors
RT2604: port should be 'unsigned short'
RT2983: total_bytes undeclared #ifdef RENEG
RT1523: Add -nocert to fix output in x509 app
RT3508: Remove unused variable introduced by b09eb24
RT3511: doc fix; req default serial is random
RT1325,2973: Add more extensions to c_rehash
RT2119,3407: Updated to dgst.pod
RT2379: Additional typo fix
RT2693: Extra include of string.h
RT2880: HFS is case-insensitive filenames
RT3246: req command prints version number wrong
Other changes; incompatibilities marked with *:
Add SCSV support
Add -misalign to speed command
Make dhparam, dsaparam, ecparam, x509 output C in proper style
Make some internal ocsp.c functions void
Only display cert usages with -help in verify
Use global bio_err, remove "BIO*err" parameter from functions
For filenames, - always means stdin (or stdout as appropriate)
Add aliases for -des/aes "wrap" ciphers.
*Remove support for IISSGC (server gated crypto)
*The undocumented OCSP -header flag is now "-header name=value"
*Documented the OCSP -header flag
Reviewed-by: Matt Caswell <matt@openssl.org>
130 lines
3.8 KiB
Raku
130 lines
3.8 KiB
Raku
#!/usr/local/bin/perl
|
|
# Generate progs.h file from list of "programs" passed on the command line.
|
|
|
|
print <<'EOF';
|
|
/*
|
|
* Automatically generated by progs.pl for openssl.c
|
|
* Copyright (c) 2008 The OpenSSL Project. All rights reserved.
|
|
* See the openssl.c for copyright details.
|
|
*/
|
|
|
|
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;
|
|
|
|
EOF
|
|
|
|
grep(s/\.o//, @ARGV);
|
|
grep(s/^asn1pars$/asn1parse/, @ARGV);
|
|
grep(s/^crl2p7$/crl2pkcs7/, @ARGV);
|
|
push @ARGV, 'list';
|
|
push @ARGV, 'help';
|
|
push @ARGV, 'exit';
|
|
|
|
foreach (@ARGV) {
|
|
printf "extern int %s_main(int argc, char *argv[]);\n", $_;
|
|
}
|
|
|
|
printf "\n#ifdef INCLUDE_FUNCTION_TABLE\n";
|
|
foreach (@ARGV) {
|
|
printf "extern OPTIONS %s_options[];\n", $_;
|
|
}
|
|
printf "FUNCTION functions[] = {\n";
|
|
foreach (@ARGV) {
|
|
$str=" { FT_general, \"$_\", ${_}_main, ${_}_options },\n";
|
|
if (/^s_/ || /^ciphers$/) {
|
|
print "#if !defined(OPENSSL_NO_SOCK)\n${str}#endif\n";
|
|
} elsif (/^engine$/) {
|
|
print "#ifndef OPENSSL_NO_ENGINE\n${str}#endif\n";
|
|
} elsif (/^rsa$/ || /^genrsa$/ || /^rsautl$/) {
|
|
print "#ifndef OPENSSL_NO_RSA\n${str}#endif\n";
|
|
} elsif (/^dsa$/ || /^gendsa$/ || /^dsaparam$/) {
|
|
print "#ifndef OPENSSL_NO_DSA\n${str}#endif\n";
|
|
} elsif (/^ec$/ || /^ecparam$/) {
|
|
print "#ifndef OPENSSL_NO_EC\n${str}#endif\n";
|
|
} elsif (/^dh$/ || /^gendh$/ || /^dhparam$/) {
|
|
print "#ifndef OPENSSL_NO_DH\n${str}#endif\n";
|
|
} elsif (/^pkcs12$/) {
|
|
print "#if !defined(OPENSSL_NO_DES)\n${str}#endif\n";
|
|
} elsif (/^cms$/) {
|
|
print "#ifndef OPENSSL_NO_CMS\n${str}#endif\n";
|
|
} elsif (/^ocsp$/) {
|
|
print "#ifndef OPENSSL_NO_OCSP\n${str}#endif\n";
|
|
} elsif (/^srp$/) {
|
|
print "#ifndef OPENSSL_NO_SRP\n${str}#endif\n";
|
|
} else {
|
|
print $str;
|
|
}
|
|
}
|
|
|
|
foreach (
|
|
"md2", "md4", "md5",
|
|
"md_ghost94",
|
|
"sha", "sha1", "sha224", "sha256", "sha384", "sha512",
|
|
"mdc2", "rmd160"
|
|
) {
|
|
printf "#ifndef OPENSSL_NO_".uc($_)."\n" if ! /sha/;
|
|
printf " { FT_md, \"".$_."\", dgst_main},\n";
|
|
printf "#endif\n" if ! /sha/;
|
|
}
|
|
|
|
foreach (
|
|
"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"
|
|
) {
|
|
$str=" { FT_cipher, \"$_\", enc_main, enc_options },\n";
|
|
if (/des/) {
|
|
printf "#ifndef OPENSSL_NO_DES\n${str}#endif\n";
|
|
} elsif (/aes/) {
|
|
printf "#ifndef OPENSSL_NO_AES\n${str}#endif\n";
|
|
} elsif (/camellia/) {
|
|
printf "#ifndef OPENSSL_NO_CAMELLIA\n${str}#endif\n";
|
|
} elsif (/idea/) {
|
|
printf "#ifndef OPENSSL_NO_IDEA\n${str}#endif\n";
|
|
} elsif (/seed/) {
|
|
printf "#ifndef OPENSSL_NO_SEED\n${str}#endif\n";
|
|
} elsif (/rc4/) {
|
|
printf "#ifndef OPENSSL_NO_RC4\n${str}#endif\n";
|
|
} elsif (/rc2/) {
|
|
printf "#ifndef OPENSSL_NO_RC2\n${str}#endif\n";
|
|
} elsif (/bf/) {
|
|
printf "#ifndef OPENSSL_NO_BF\n${str}#endif\n";
|
|
} elsif (/cast/) {
|
|
printf "#ifndef OPENSSL_NO_CAST\n${str}#endif\n";
|
|
} elsif (/rc5/) {
|
|
printf "#ifndef OPENSSL_NO_RC5\n${str}#endif\n";
|
|
} elsif (/zlib/) {
|
|
printf "#ifdef ZLIB\n${str}#endif\n";
|
|
} else {
|
|
print $str;
|
|
}
|
|
}
|
|
|
|
print " { 0, NULL, NULL}\n};\n";
|
|
printf "#endif\n";
|