TLS/SSL and crypto library
d6e9ddac05
When openssl/macros.h is included without openssl/opensslv.h, it can't define OPENSSL_API_4 properly (with sufficient warnings enabled, the compiler will complain about OPENSSL_VERSION_MAJOR not being defined). The quick fix could have been to include openssl/opensslv.h in openssl/macros.h, but that would create a nasty include loop, since openssl/opensslv.h includes openssl/opensslconf.h, which includes openssl/macros.h, in an order that leads back to macro check errors. The objective is to make these headers more independent: - openssl/opensslconf.h should really be completely independent, as it only defines macros for configuration values. However, it needs to include openssl/macros.h for backward compatibility reasons. We do this at the very end, under inclusion guards. - openssl/macros.h is changed to include openssl/opensslconf.h, so it gets necessary configuration values to build some macros. This will not cause an endless inclusion loop, since opensslconf.h's inclusion of macros.h is under guard. - openssl/opensslv.h is changed to include openssl/macros.h instead of openssl/opensslconf.h. Only one last piece needs to be done to make openssl/macros.h independent from openssl/opensslv.h. We can realise that the definition of OPENSSL_API_4 doesn't need to depend on the current version number. There's nothing in our configuration that would have OPENSSL_API_4 defined to 1, and if the user sets OPENSSL_API_COMPAT or OPENSSL_API_LEVEL to a high enough value, we consider that a deliberate and knowledgable action on their part. Fixes #7874 Fixes #9601 Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/9626) |
||
---|---|---|
.github | ||
apps | ||
boringssl@2070f8ad91 | ||
Configurations | ||
crypto | ||
demos | ||
doc | ||
engines | ||
external/perl | ||
fuzz | ||
include | ||
krb5@b9ad6c4950 | ||
ms | ||
os-dep | ||
providers | ||
pyca-cryptography@09403100de | ||
ssl | ||
test | ||
tools | ||
util | ||
VMS | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.travis-apt-pin.preferences | ||
.travis-create-release.sh | ||
.travis.yml | ||
ACKNOWLEDGEMENTS | ||
appveyor.yml | ||
AUTHORS | ||
build.info | ||
CHANGES | ||
config | ||
config.com | ||
Configure | ||
CONTRIBUTING | ||
e_os.h | ||
FAQ | ||
HACKING | ||
INSTALL | ||
LICENSE | ||
NEWS | ||
NOTES.ANDROID | ||
NOTES.DJGPP | ||
NOTES.PERL | ||
NOTES.UNIX | ||
NOTES.VALGRIND | ||
NOTES.VMS | ||
NOTES.WIN | ||
README | ||
README.ENGINE | ||
README.FIPS |
OpenSSL 3.0.0-dev Copyright (c) 1998-2018 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson All rights reserved. DESCRIPTION ----------- The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, fully featured, and Open Source toolkit implementing the Transport Layer Security (TLS) protocols (including SSLv3) as well as a full-strength general purpose cryptographic library. OpenSSL is descended from the SSLeay library developed by Eric A. Young and Tim J. Hudson. The OpenSSL toolkit is licensed under the Apache License 2.0, which means that you are free to get and use it for commercial and non-commercial purposes as long as you fulfill its conditions. OVERVIEW -------- The OpenSSL toolkit includes: libssl (with platform specific naming): Provides the client and server-side implementations for SSLv3 and TLS. libcrypto (with platform specific naming): Provides general cryptographic and X.509 support needed by SSL/TLS but not logically part of it. openssl: A command line tool that can be used for: Creation of key parameters Creation of X.509 certificates, CSRs and CRLs Calculation of message digests Encryption and decryption SSL/TLS client and server tests Handling of S/MIME signed or encrypted mail And more... INSTALLATION ------------ See the appropriate file: INSTALL Linux, Unix, Windows, OpenVMS, ... NOTES.* INSTALL addendums for different platforms SUPPORT ------- See the OpenSSL website www.openssl.org for details on how to obtain commercial technical support. Free community support is available through the openssl-users email list (see https://www.openssl.org/community/mailinglists.html for further details). If you have any problems with OpenSSL then please take the following steps first: - Download the latest version from the repository to see if the problem has already been addressed - Configure with no-asm - Remove compiler optimization flags If you wish to report a bug then please include the following information and create an issue on GitHub: - OpenSSL version: output of 'openssl version -a' - Configuration data: output of 'perl configdata.pm --dump' - OS Name, Version, Hardware platform - Compiler Details (name, version) - Application Details (name, version) - Problem Description (steps that will reproduce the problem, if known) - Stack Traceback (if the application dumps core) Just because something doesn't work the way you expect does not mean it is necessarily a bug in OpenSSL. Use the openssl-users email list for this type of query. HOW TO CONTRIBUTE TO OpenSSL ---------------------------- See CONTRIBUTING LEGALITIES ---------- A number of nations restrict the use or export of cryptography. If you are potentially subject to such restrictions you should seek competent professional legal advice before attempting to develop or distribute cryptographic code.