From dc193c9c5e914c74fd0f51fe4fe86fbd5910536e Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Mon, 25 Jan 2016 09:44:08 -0500 Subject: [PATCH] Move & split opensslconf.h.in Move opensslconf.h.in to include/openssl. Split off DES,BN,RC4 stuff into separate header file templates in crypto/include/internal/*_conf.h.in Reviewed-by: Richard Levitte --- .gitignore | 3 +- Configure | 20 +- crypto/bf/bf_locl.h | 3 +- crypto/bn/bn_lcl.h | 1 + crypto/des/des_locl.h | 2 + crypto/include/internal/bf_conf.h.in | 68 ++++++ crypto/include/internal/bn_conf.h.in | 68 ++++++ crypto/include/internal/des_conf.h.in | 129 +++++++++++ crypto/include/internal/rc4_conf.h.in | 74 +++++++ crypto/opensslconf.h.in | 300 -------------------------- crypto/rc4/rc4_locl.h | 1 + include/openssl/opensslconf.h.in | 173 +++++++++++++++ 12 files changed, 537 insertions(+), 305 deletions(-) create mode 100644 crypto/include/internal/bf_conf.h.in create mode 100644 crypto/include/internal/bn_conf.h.in create mode 100644 crypto/include/internal/des_conf.h.in create mode 100644 crypto/include/internal/rc4_conf.h.in delete mode 100644 crypto/opensslconf.h.in create mode 100644 include/openssl/opensslconf.h.in diff --git a/.gitignore b/.gitignore index 0a3f054a1e..e8d5105d3c 100644 --- a/.gitignore +++ b/.gitignore @@ -42,7 +42,8 @@ # Auto generated headers /crypto/buildinf.h -/crypto/opensslconf.h +/openssl/include/opensslconf.h +/crypto/include/internal/*_conf.h # Auto generated assembly language source files *.s diff --git a/Configure b/Configure index 5e973c69a3..276a1438b8 100755 --- a/Configure +++ b/Configure @@ -1413,10 +1413,24 @@ print "RANLIB =$target{ranlib}\n"; print "ARFLAGS =$target{arflags}\n"; print "PERL =$config{perl}\n"; -system("$config{perl} -I. -Mconfigdata util/dofile.pl < crypto/opensslconf.h.in > include/openssl/opensslconf.h.new"); -exit 1 if $? != 0; -rename("include/openssl/opensslconf.h.new","include/openssl/opensslconf.h") || die "unable to rename include/openssl/opensslconf.h.new\n"; +sub +run_dofile() +{ + my $in = shift; + my $out = shift; + + # should we remove $out ? + system("$config{perl} -I. -Mconfigdata util/dofile.pl <$in >$out.new"); + exit 1 if $? != 0; + rename("$out.new", $out) || die "Can't rename $out.new, $!"; +} +&run_dofile("include/openssl/opensslconf.h.in", "include/openssl/opensslconf.h"); + +foreach my $alg ( 'bf', 'bn', 'des', 'rc4' ) { + &run_dofile("crypto/include/internal/${alg}_conf.h.in", + "crypto/include/internal/${alg}_conf.h"); +} # Fix the date diff --git a/crypto/bf/bf_locl.h b/crypto/bf/bf_locl.h index 9448aed424..fe2c9db9e0 100644 --- a/crypto/bf/bf_locl.h +++ b/crypto/bf/bf_locl.h @@ -58,7 +58,8 @@ #ifndef HEADER_BF_LOCL_H # define HEADER_BF_LOCL_H -# include /* BF_PTR, BF_PTR2 */ +# include +# include "internal/bf_conf.h" # undef c2l # define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ diff --git a/crypto/bn/bn_lcl.h b/crypto/bn/bn_lcl.h index e4281a34b4..1bdaee8e8f 100644 --- a/crypto/bn/bn_lcl.h +++ b/crypto/bn/bn_lcl.h @@ -112,6 +112,7 @@ #ifndef HEADER_BN_LCL_H # define HEADER_BN_LCL_H +# include "internal/bn_conf.h" # include "internal/bn_int.h" #ifdef __cplusplus diff --git a/crypto/des/des_locl.h b/crypto/des/des_locl.h index 23ea9d32a7..cfd15c3b14 100644 --- a/crypto/des/des_locl.h +++ b/crypto/des/des_locl.h @@ -61,6 +61,8 @@ # include +# include "internal/des_conf.h" + # if defined(OPENSSL_SYS_WIN32) # ifndef OPENSSL_SYS_MSDOS # define OPENSSL_SYS_MSDOS diff --git a/crypto/include/internal/bf_conf.h.in b/crypto/include/internal/bf_conf.h.in new file mode 100644 index 0000000000..5b6e5e7190 --- /dev/null +++ b/crypto/include/internal/bf_conf.h.in @@ -0,0 +1,68 @@ +/* ==================================================================== + * Copyright (c) 2016 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_BF_CONF_H +# define HEADER_BF_CONF_H + +{- + if ($config{bf_ptr} == 0) { + "#undef BF_PTR"; + } elsif ($config{bf_ptr} == 1) { + "#define BF_PTR"; + } elsif ($config{bf_ptr} == 2) { + "#define BF_PTR2"; + } +-} + +#endif diff --git a/crypto/include/internal/bn_conf.h.in b/crypto/include/internal/bn_conf.h.in new file mode 100644 index 0000000000..a75e964300 --- /dev/null +++ b/crypto/include/internal/bn_conf.h.in @@ -0,0 +1,68 @@ +/* ==================================================================== + * Copyright (c) 2016 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_BN_CONF_H +# define HEADER_BN_CONF_H + +# if !defined(OPENSSL_SYS_UEFI) + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +{- $config{b64l} ? "#define" : "#undef" -} SIXTY_FOUR_BIT_LONG +{- $config{b64} ? "#define" : "#undef" -} SIXTY_FOUR_BIT +{- $config{b32} ? "#define" : "#undef" -} THIRTY_TWO_BIT +# endif + +#endif diff --git a/crypto/include/internal/des_conf.h.in b/crypto/include/internal/des_conf.h.in new file mode 100644 index 0000000000..43ab5eb99c --- /dev/null +++ b/crypto/include/internal/des_conf.h.in @@ -0,0 +1,129 @@ +/* ==================================================================== + * Copyright (c) 2016 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_DES_CONF_H +# define HEADER_DES_CONF_H + +/* the following is tweaked from a config script, that is why it is a + * protected undef/define */ +# ifndef DES_PTR +{- $config{des_ptr} ? "#define" : "#undef" -} DES_PTR +# endif + +/* This helps C compiler generate the correct code for multiple functional + * units. It reduces register dependancies at the expense of 2 more + * registers */ +# ifndef DES_RISC1 +{- $config{des_risc1} ? "#define" : "#undef" -} DES_RISC1 +# endif + +# ifndef DES_RISC2 +{- $config{des_risc2} ? "#define" : "#undef" -} DES_RISC2 +# endif + +# if defined(DES_RISC1) && defined(DES_RISC2) +# error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! +# endif + +/* Unroll the inner loop, this sometimes helps, sometimes hinders. + * Very mucy CPU dependant */ +# ifndef DES_UNROLL +{- $config{des_unroll} ? "#define" : "#undef" -} DES_UNROLL +# endif + +/* + * These default values were supplied by + * Peter Gutman + * They are only used if nothing else has been defined + */ +# if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) + +/* + * Special defines which change the way the code is built depending on the + * CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find + * even newer MIPS CPU's, but at the moment one size fits all for + * optimization options. Older Sparc's work better with only UNROLL, but + * there's no way to tell at compile time what it is you're running on. + */ + +# if defined(sparc) || defined(__sparc__) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +# elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +# elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +# elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +# elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +# elif defined( __aux ) /* 68K */ + /* Unknown */ +# elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +# elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +# endif + +# endif + +#endif diff --git a/crypto/include/internal/rc4_conf.h.in b/crypto/include/internal/rc4_conf.h.in new file mode 100644 index 0000000000..5f23357fbf --- /dev/null +++ b/crypto/include/internal/rc4_conf.h.in @@ -0,0 +1,74 @@ +/* ==================================================================== + * Copyright (c) 2016 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_RC4_CONF_H +# define HEADER_RC4_CONF_H + +# if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +{- + $config{rc4_chunk} + ? "#define RC4_CHUNK ".$config{rc4_chunk} + : "#undef RC4_CHUNK"; +-} +# endif + +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +{- $config{rc4_idx} ? "#define" : "#undef" -} RC4_INDEX + +#endif diff --git a/crypto/opensslconf.h.in b/crypto/opensslconf.h.in deleted file mode 100644 index 00bc866134..0000000000 --- a/crypto/opensslconf.h.in +++ /dev/null @@ -1,300 +0,0 @@ -/* opensslconf.h */ -/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ - -#ifdef __cplusplus -extern "C" { -#endif -/* OpenSSL was configured with the following options: */ -{- - if (@{$config{openssl_sys_defines}}) { - foreach (@{$config{openssl_sys_defines}}) { - $OUT .= "#ifndef $_\n"; - $OUT .= "# define $_ 1\n"; - $OUT .= "#endif\n"; - } - } - ""; --} -#ifndef OPENSSL_DOING_MAKEDEPEND - -{- - if (@{$config{openssl_experimental_defines}}) { - foreach (@{$config{openssl_experimental_defines}}) { - (my $ex = $_) =~ s/_NO_/_EXPERIMENTAL_/; - $OUT .= "#ifndef $ex\n"; - $OUT .= "# ifndef $_\n"; - $OUT .= "# define $_\n"; - $OUT .= "# endif\n"; - $OUT .= "#endif\n"; - } - } - ""; --} -{- - foreach (@{$config{openssl_api_defines}}) { - (my $macro, my $value) = $_ =~ /^(.*?)=(.*?)$/; - $OUT .= "#define OPENSSL_MIN_API $value\n"; - } --} -{- - if (@{$config{openssl_algorithm_defines}}) { - foreach (@{$config{openssl_algorithm_defines}}) { - $OUT .= "#ifndef $_\n"; - $OUT .= "# define $_\n"; - $OUT .= "#endif\n"; - } - } else { - " /* no ciphers excluded */\n"; - } --} - -#endif /* OPENSSL_DOING_MAKEDEPEND */ - -{- - if (@{$config{openssl_thread_defines}}) { - foreach (@{$config{openssl_thread_defines}}) { - $OUT .= "#ifndef $_\n"; - $OUT .= "# define $_\n"; - $OUT .= "#endif\n"; - } - } - ""; --} -{- - if (@{$config{openssl_other_defines}}) { - foreach (@{$config{openssl_other_defines}}) { - $OUT .= "#ifndef $_\n"; - $OUT .= "# define $_\n"; - $OUT .= "#endif\n"; - } - } - ""; --} - -/* The OPENSSL_NO_* macros are also defined as NO_* if the application - asks for it. This is a transient feature that is provided for those - who haven't had the time to do the appropriate changes in their - applications. */ -#ifdef OPENSSL_ALGORITHM_DEFINES -{- - if (@{$config{openssl_algorithm_defines}}) { - foreach (@{$config{openssl_algorithm_defines}}) { - (my $ex = $_) =~ s/^OPENSSL_//; - $OUT .= "# if defined($_) \&\& !defined($ex)\n"; - $OUT .= "# define $ex\n"; - $OUT .= "# endif\n"; - } - } - ""; --} -#endif - -{- $target{cpuid_obj} ne "mem_clr.o" ? "#define OPENSSL_CPUID_OBJ" : "" -} - -/* - * Applications should use -DOPENSSL_API_COMPAT= to suppress the - * declarations of functions deprecated in or before . Otherwise, they - * still won't see them if the library has been built to disable deprecated - * functions. - */ -#if defined(OPENSSL_NO_DEPRECATED) -# define DECLARE_DEPRECATED(f) -#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) -# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); -#else -# define DECLARE_DEPRECATED(f) f; -#endif - -#ifndef OPENSSL_MIN_API -#define OPENSSL_MIN_API 0 -#endif - -#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API -#undef OPENSSL_API_COMPAT -#define OPENSSL_API_COMPAT OPENSSL_MIN_API -#endif - -#if OPENSSL_API_COMPAT < 0x10100000L -# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) -#else -# define DEPRECATEDIN_1_1_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x10000000L -# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) -#else -# define DEPRECATEDIN_1_0_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x00908000L -# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) -#else -# define DEPRECATEDIN_0_9_8(f) -#endif - -/* Generate 80386 code? */ -{- $config{processor} eq "386" ? "#define" : "#undef" -} I386_ONLY - -#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ -#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) -#define ENGINESDIR {- quotify1($config{enginesdir}) -} -#define OPENSSLDIR {- quotify1($config{openssldir}) -} -#endif -#endif - -#undef OPENSSL_UNISTD -#define OPENSSL_UNISTD {- $target{unistd} -} - -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION -{- $config{export_var_as_fn} ? "#define OPENSSL_EXPORT_VAR_AS_FUNCTION" : "" -} - -#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) -#define IDEA_INT {- $config{idea_int} -} -#endif - -#if defined(HEADER_MD2_H) && !defined(MD2_INT) -#define MD2_INT {- $config{md2_int} -} -#endif - -#if defined(HEADER_RC2_H) && !defined(RC2_INT) -/* I need to put in a mod for the alpha - eay */ -#define RC2_INT {- $config{rc2_int} -} -#endif - -#if defined(HEADER_RC4_H) -#if !defined(RC4_INT) -/* using int types make the structure larger but make the code faster - * on most boxes I have tested - up to %20 faster. */ -/* - * I don't know what does "most" mean, but declaring "int" is a must on: - * - Intel P6 because partial register stalls are very expensive; - * - elder Alpha because it lacks byte load/store instructions; - */ -#define RC4_INT {- $config{rc4_int} -} -#endif -#if !defined(RC4_CHUNK) -/* - * This enables code handling data aligned at natural CPU word - * boundary. See crypto/rc4/rc4_enc.c for further details. - */ -{- - $config{rc4_chunk} - ? "#define RC4_CHUNK ".$config{rc4_chunk} - : "#undef RC4_CHUNK"; --} -#endif -#endif - -#ifndef OSSL_DES_LONG -/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a - * %20 speed up (longs are 8 bytes, int's are 4). */ -#ifndef OSSL_DES_LONG -#define OSSL_DES_LONG {- $config{des_int} -} -#endif -#endif - -#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) && !defined(OPENSSL_SYS_UEFI) -#define CONFIG_HEADER_BN_H -{- $config{bn_ll} ? "#define" : "#undef" -} BN_LLONG - -/* Should we define BN_DIV2W here? */ - -/* Only one for the following should be defined */ -{- $config{b64l} ? "#define" : "#undef" -} SIXTY_FOUR_BIT_LONG -{- $config{b64} ? "#define" : "#undef" -} SIXTY_FOUR_BIT -{- $config{b32} ? "#define" : "#undef" -} THIRTY_TWO_BIT -#endif - -#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) -#define CONFIG_HEADER_RC4_LOCL_H -/* if this is defined data[i] is used instead of *data, this is a %20 - * speedup on x86 */ -{- $config{rc4_idx} ? "#define" : "#undef" -} RC4_INDEX -#endif - -#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) -#define CONFIG_HEADER_BF_LOCL_H -{- - if ($config{bf_ptr} == 0) { - "#undef BF_PTR"; - } elsif ($config{bf_ptr} == 1) { - "#define BF_PTR"; - } elsif ($config{bf_ptr} == 2) { - "#define BF_PTR2"; - } --} -#endif /* HEADER_BF_LOCL_H */ - -#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) -#define CONFIG_HEADER_DES_LOCL_H -#ifndef DES_DEFAULT_OPTIONS -/* the following is tweaked from a config script, that is why it is a - * protected undef/define */ -#ifndef DES_PTR -{- $config{des_ptr} ? "#define" : "#undef" -} DES_PTR -#endif - -/* This helps C compiler generate the correct code for multiple functional - * units. It reduces register dependancies at the expense of 2 more - * registers */ -#ifndef DES_RISC1 -{- $config{des_risc1} ? "#define" : "#undef" -} DES_RISC1 -#endif - -#ifndef DES_RISC2 -{- $config{des_risc2} ? "#define" : "#undef" -} DES_RISC2 -#endif - -#if defined(DES_RISC1) && defined(DES_RISC2) -#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! -#endif - -/* Unroll the inner loop, this sometimes helps, sometimes hinders. - * Very mucy CPU dependant */ -#ifndef DES_UNROLL -{- $config{des_unroll} ? "#define" : "#undef" -} DES_UNROLL -#endif - -/* These default values were supplied by - * Peter Gutman - * They are only used if nothing else has been defined */ -#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) -/* Special defines which change the way the code is built depending on the - CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find - even newer MIPS CPU's, but at the moment one size fits all for - optimization options. Older Sparc's work better with only UNROLL, but - there's no way to tell at compile time what it is you're running on */ - -#if defined(sparc) || defined(__sparc__) /* Newer Sparc's */ -# define DES_PTR -# define DES_RISC1 -# define DES_UNROLL -#elif defined( __ultrix ) /* Older MIPS */ -# define DES_PTR -# define DES_RISC2 -# define DES_UNROLL -#elif defined( __osf1__ ) /* Alpha */ -# define DES_PTR -# define DES_RISC2 -#elif defined ( _AIX ) /* RS6000 */ - /* Unknown */ -#elif defined( __hpux ) /* HP-PA */ - /* Unknown */ -#elif defined( __aux ) /* 68K */ - /* Unknown */ -#elif defined( __sgi ) /* Newer MIPS */ -# define DES_PTR -# define DES_RISC2 -# define DES_UNROLL -#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ -# define DES_PTR -# define DES_RISC1 -# define DES_UNROLL -#endif /* Systems-specific speed defines */ -#endif - -#endif /* DES_DEFAULT_OPTIONS */ -#endif /* HEADER_DES_LOCL_H */ -#ifdef __cplusplus -} -#endif diff --git a/crypto/rc4/rc4_locl.h b/crypto/rc4/rc4_locl.h index 2f09b7c8b3..3ed48d8d25 100644 --- a/crypto/rc4/rc4_locl.h +++ b/crypto/rc4/rc4_locl.h @@ -2,4 +2,5 @@ # define HEADER_RC4_LOCL_H # include # include "internal/cryptlib.h" +# include "internal/rc4_conf.h" #endif diff --git a/include/openssl/opensslconf.h.in b/include/openssl/opensslconf.h.in new file mode 100644 index 0000000000..3d7137e8f6 --- /dev/null +++ b/include/openssl/opensslconf.h.in @@ -0,0 +1,173 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +#ifdef __cplusplus +extern "C" { +#endif +/* OpenSSL was configured with the following options: */ +{- + if (@{$config{openssl_sys_defines}}) { + foreach (@{$config{openssl_sys_defines}}) { + $OUT .= "#ifndef $_\n"; + $OUT .= "# define $_ 1\n"; + $OUT .= "#endif\n"; + } + } + ""; +-} +#ifndef OPENSSL_DOING_MAKEDEPEND + +{- + if (@{$config{openssl_experimental_defines}}) { + foreach (@{$config{openssl_experimental_defines}}) { + (my $ex = $_) =~ s/_NO_/_EXPERIMENTAL_/; + $OUT .= "#ifndef $ex\n"; + $OUT .= "# ifndef $_\n"; + $OUT .= "# define $_\n"; + $OUT .= "# endif\n"; + $OUT .= "#endif\n"; + } + } + ""; +-} +{- + foreach (@{$config{openssl_api_defines}}) { + (my $macro, my $value) = $_ =~ /^(.*?)=(.*?)$/; + $OUT .= "#define OPENSSL_MIN_API $value\n"; + } +-} +{- + if (@{$config{openssl_algorithm_defines}}) { + foreach (@{$config{openssl_algorithm_defines}}) { + $OUT .= "#ifndef $_\n"; + $OUT .= "# define $_\n"; + $OUT .= "#endif\n"; + } + } else { + " /* no ciphers excluded */\n"; + } +-} + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +{- + if (@{$config{openssl_thread_defines}}) { + foreach (@{$config{openssl_thread_defines}}) { + $OUT .= "#ifndef $_\n"; + $OUT .= "# define $_\n"; + $OUT .= "#endif\n"; + } + } + ""; +-} +{- + if (@{$config{openssl_other_defines}}) { + foreach (@{$config{openssl_other_defines}}) { + $OUT .= "#ifndef $_\n"; + $OUT .= "# define $_\n"; + $OUT .= "#endif\n"; + } + } + ""; +-} + +/* The OPENSSL_NO_* macros are also defined as NO_* if the application + asks for it. This is a transient feature that is provided for those + who haven't had the time to do the appropriate changes in their + applications. */ +#ifdef OPENSSL_ALGORITHM_DEFINES +{- + if (@{$config{openssl_algorithm_defines}}) { + foreach (@{$config{openssl_algorithm_defines}}) { + (my $ex = $_) =~ s/^OPENSSL_//; + $OUT .= "# if defined($_) \&\& !defined($ex)\n"; + $OUT .= "# define $ex\n"; + $OUT .= "# endif\n"; + } + } + ""; +-} +#endif + +{- $target{cpuid_obj} ne "mem_clr.o" ? "#define OPENSSL_CPUID_OBJ" : "" -} + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#if defined(OPENSSL_NO_DEPRECATED) +# define DECLARE_DEPRECATED(f) +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +#else +# define DECLARE_DEPRECATED(f) f; +#endif + +#ifndef OPENSSL_MIN_API +#define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +#undef OPENSSL_API_COMPAT +#define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +{- $config{processor} eq "386" ? "#define" : "#undef" -} I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR {- quotify1($config{enginesdir}) -} +#define OPENSSLDIR {- quotify1($config{openssldir}) -} +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD {- $target{unistd} -} + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION +{- $config{export_var_as_fn} ? "#define OPENSSL_EXPORT_VAR_AS_FUNCTION" : "" -} + +/* + * The following are cipher-specific, but are part of the public API. + */ + +#define OSSL_DES_LONG {- $config{des_int} -} + +#if !defined(OPENSSL_SYS_UEFI) +{- $config{bn_ll} ? "#define" : "#undef" -} BN_LLONG + +/* Only one for the following should be defined */ +{- $config{b64l} ? "#define" : "#undef" -} SIXTY_FOUR_BIT_LONG +{- $config{b64} ? "#define" : "#undef" -} SIXTY_FOUR_BIT +{- $config{b32} ? "#define" : "#undef" -} THIRTY_TWO_BIT +#endif + +# define RC2_INT {- $config{rc2_int} -} +# define IDEA_INT {- $config{idea_int} -} +# define MD2_INT {- $config{md2_int} -} +# define RC4_INT {- $config{rc4_int} -} + +#ifdef __cplusplus +} +#endif -- 2.39.2