From: Michael Richardson Date: Thu, 1 Feb 2018 18:22:48 +0000 (-0500) Subject: Add OPENSSL_VERSION_AT_LEAST X-Git-Tag: OpenSSL_1_1_1-pre1~66 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=3c5a61dd0f9d9a9eac098419bcaf47d1c296ca81;p=oweals%2Fopenssl.git Add OPENSSL_VERSION_AT_LEAST added macro to create version number use the macro to build OPENSSL_VERSION_AT_LEAST(maj,min,fix) so that customers of libssl (such as ruby-openssl) do not need to be so aware of openssl version numbers. includes updates to ssl(7) and OPENSSL_VERSION_NUMBER(3) man page Reviewed-by: Richard Levitte Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/5212) --- diff --git a/doc/man3/OPENSSL_VERSION_NUMBER.pod b/doc/man3/OPENSSL_VERSION_NUMBER.pod index 6eca1134b1..d5842c0e35 100644 --- a/doc/man3/OPENSSL_VERSION_NUMBER.pod +++ b/doc/man3/OPENSSL_VERSION_NUMBER.pod @@ -47,6 +47,11 @@ number was therefore 0x0090581f. OpenSSL_version_num() returns the version number. +The macro OPENSSL_VERSION_AT_LEAST(major,minor) can be used at compile +time test if the current version is at least as new as the version provided. +The arguments major, minor and fix correspond to the version information +as given above. + OpenSSL_version() returns different strings depending on B: =over 4 diff --git a/doc/man7/ssl.pod b/doc/man7/ssl.pod index 724fc78b17..066b32508f 100644 --- a/doc/man7/ssl.pod +++ b/doc/man7/ssl.pod @@ -89,6 +89,12 @@ includes both more private SSL headers and headers from the B library. Whenever you need hard-core details on the internals of the SSL API, look inside this header file. +OPENSSL_VERSION_AT_LEAST(major,minor) can be +used in C<#if> statements in order to determine which version of the library is +being used. This can be used to either enable optional features at compile +time, or work around issues with a previous version. +See L. + =item B Unused. Present for backwards compatibility only. diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h index c6e15a5aa3..420a1c96aa 100644 --- a/include/openssl/opensslv.h +++ b/include/openssl/opensslv.h @@ -42,6 +42,11 @@ extern "C" { # define OPENSSL_VERSION_NUMBER 0x10101000L # define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1-dev xx XXX xxxx" +#define OPENSSL_MAKE_VERSION(maj,min,fix,patch) ((0x10000000L)+((maj&0xff)<<20)+((min&0xff)<<12)+((fix&0xff)<<4)+patch) + +/* use this for #if tests, should never depend upon fix/patch */ +#define OPENSSL_VERSION_AT_LEAST(maj,min) (OPENSSL_MAKE_VERSION(maj,min, 0, 0) >= OPENSSL_VERSION_NUMBER) + /*- * The macros below are to be used for shared library (.so, .dll, ...) * versioning. That kind of versioning works a bit differently between