summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Richardson <mcr@sandelman.ca>2018-02-01 13:22:48 -0500
committerRich Salz <rsalz@openssl.org>2018-02-01 13:22:48 -0500
commit3c5a61dd0f9d9a9eac098419bcaf47d1c296ca81 (patch)
tree614596820eb1a0405358a338b7e2e7dfff488f7e
parent67c836e860c735cf1b039ef52973237fd26b74d6 (diff)
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 <levitte@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5212)
-rw-r--r--doc/man3/OPENSSL_VERSION_NUMBER.pod5
-rw-r--r--doc/man7/ssl.pod6
-rw-r--r--include/openssl/opensslv.h5
3 files changed, 16 insertions, 0 deletions
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<t>:
=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<crypto> 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<OPENSSL_VERSION_NUMBER(3)>.
+
=item B<ssl2.h>
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