123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- =pod
- =head1 NAME
- OPENSSL_VERSION_MAJOR, OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH,
- OPENSSL_VERSION_PRE_RELEASE, OPENSSL_VERSION_BUILD_METADATA,
- OPENSSL_VERSION_TEXT, OPENSSL_VERSION_PREREQ, OPENSSL_version_major,
- OPENSSL_version_minor, OPENSSL_version_patch, OPENSSL_version_pre_release,
- OPENSSL_version_build_metadata, OpenSSL_version, OPENSSL_VERSION_NUMBER,
- OpenSSL_version_num, OPENSSL_info
- - get OpenSSL version number and other information
- =head1 SYNOPSIS
- #include <openssl/opensslv.h>
- #define OPENSSL_VERSION_MAJOR x
- #define OPENSSL_VERSION_MINOR y
- #define OPENSSL_VERSION_PATCH z
- /* The definitions here are typical release values */
- #define OPENSSL_VERSION_PRE_RELEASE ""
- #define OPENSSL_VERSION_BUILD_METADATA ""
- #define OPENSSL_VERSION_TEXT "OpenSSL x.y.z xx XXX xxxx"
- #define OPENSSL_VERSION_PREREQ(maj,min)
- #include <openssl/crypto.h>
- unsigned int OPENSSL_version_major(void);
- unsigned int OPENSSL_version_minor(void);
- unsigned int OPENSSL_version_patch(void);
- const char *OPENSSL_version_pre_release(void);
- const char *OPENSSL_version_build_metadata(void);
- const char *OpenSSL_version(int t);
- const char *OPENSSL_info(int t);
- /* from openssl/opensslv.h */
- #define OPENSSL_VERSION_NUMBER 0xnnnnnnnnL
- /* from openssl/crypto.h */
- unsigned long OpenSSL_version_num();
- =head1 DESCRIPTION
- =head2 Macros
- The three macros B<OPENSSL_VERSION_MAJOR>, B<OPENSSL_VERSION_MINOR> and
- B<OPENSSL_VERSION_PATCH> represent the three parts of a version
- identifier, B<I<MAJOR>.I<MINOR>.I<PATCH>>.
- The macro B<OPENSSL_VERSION_PRE_RELEASE> is an added bit of text that
- indicates that this is a pre-release version, such as C<"-dev"> for an
- ongoing development snapshot or C<"-alpha3"> for an alpha release.
- The value must be a string.
- The macro B<OPENSSL_VERSION_BUILD_METADATA> is extra information, reserved
- for other parties, such as C<"+fips">, or C<"+vendor.1">).
- The OpenSSL project will not touch this macro (will leave it an empty string).
- The value must be a string.
- B<OPENSSL_VERSION_STR> is a convenience macro to get the short version
- identifier string, C<"I<MAJOR>.I<MINOR>.I<PATCH>">.
- B<OPENSSL_FULL_VERSION_STR> is a convenience macro to get the longer
- version identifier string, which combines B<OPENSSL_VERSION_STR>,
- B<OPENSSL_VERSION_PRE_RELEASE> and B<OPENSSL_VERSION_BUILD_METADATA>.
- B<OPENSSL_VERSION_TEXT> is a convenience macro to get a full descriptive
- version text, which includes B<OPENSSL_FULL_VERSION_STR> and the release
- date.
- B<OPENSSL_VERSION_PREREQ> is a useful macro for checking whether the OpenSSL
- version for the headers in use is at least at the given pre-requisite major
- (B<maj>) and minor (B<min>) number or not. It will evaluate to true if the
- header version number (B<OPENSSL_VERSION_MAJOR>.B<OPENSSL_VERSION_MINOR>) is
- greater than or equal to B<maj>.B<min>.
- B<OPENSSL_VERSION_NUMBER> is a combination of the major, minor and
- patch version into a single integer 0xMNN00PP0L, where:
- =over 4
- =item M
- is the number from B<OPENSSL_VERSION_MAJOR>, in hexadecimal notation
- =item NN
- is the number from B<OPENSSL_VERSION_MINOR>, in hexadecimal notation
- =item PP
- is the number from B<OPENSSL_VERSION_PATCH>, in hexadecimal notation
- =back
- =head2 Functions
- OPENSSL_version_major(), OPENSSL_version_minor(), OPENSSL_version_patch(),
- OPENSSL_version_pre_release(), and OPENSSL_version_build_metadata() return
- the values of the macros above for the build of the library, respectively.
- OpenSSL_version() returns different strings depending on I<t>:
- =over 4
- =item OPENSSL_VERSION
- The value of B<OPENSSL_VERSION_TEXT>
- =item OPENSSL_VERSION_STRING
- The value of B<OPENSSL_VERSION_STR>
- =item OPENSSL_FULL_VERSION_STRING
- The value of B<OPENSSL_FULL_VERSION_STR>
- =item OPENSSL_CFLAGS
- The compiler flags set for the compilation process in the form
- C<compiler: ...> if available, or C<compiler: information not available>
- otherwise.
- =item OPENSSL_BUILT_ON
- The date of the build process in the form C<built on: ...> if available
- or C<built on: date not available> otherwise.
- The date would not be available in a reproducible build, for example.
- =item OPENSSL_PLATFORM
- The "Configure" target of the library build in the form C<platform: ...>
- if available, or C<platform: information not available> otherwise.
- =item OPENSSL_DIR
- The B<OPENSSLDIR> setting of the library build in the form C<OPENSSLDIR: "...">
- if available, or C<OPENSSLDIR: N/A> otherwise.
- =item OPENSSL_ENGINES_DIR
- The B<ENGINESDIR> setting of the library build in the form C<ENGINESDIR: "...">
- if available, or C<ENGINESDIR: N/A> otherwise. This option is deprecated in
- OpenSSL 3.0.
- =item OPENSSL_MODULES_DIR
- The B<MODULESDIR> setting of the library build in the form C<MODULESDIR: "...">
- if available, or C<MODULESDIR: N/A> otherwise.
- =item OPENSSL_CPU_INFO
- The current OpenSSL cpu settings.
- This is the current setting of the cpu capability flags. It is usually
- automatically configured but may be set via an environment variable.
- The value has the same syntax as the environment variable.
- For x86 the string looks like C<CPUINFO: OPENSSL_ia32cap=0x123:0x456>
- or C<CPUINFO: N/A> if not available.
- =back
- For an unknown I<t>, the text C<not available> is returned.
- OPENSSL_info() also returns different strings depending on I<t>:
- =over 4
- =item OPENSSL_INFO_CONFIG_DIR
- The configured C<OPENSSLDIR>, which is the default location for
- OpenSSL configuration files.
- =item OPENSSL_INFO_ENGINES_DIR
- The configured C<ENGINESDIR>, which is the default location for
- OpenSSL engines.
- =item OPENSSL_INFO_MODULES_DIR
- The configured C<MODULESDIR>, which is the default location for
- dynamically loadable OpenSSL modules other than engines.
- =item OPENSSL_INFO_DSO_EXTENSION
- The configured dynamically loadable module extension.
- =item OPENSSL_INFO_DIR_FILENAME_SEPARATOR
- The separator between a directory specification and a filename.
- Note that on some operating systems, this is not the same as the
- separator between directory elements.
- =item OPENSSL_INFO_LIST_SEPARATOR
- The OpenSSL list separator.
- This is typically used in strings that are lists of items, such as the
- value of the environment variable C<$PATH> on Unix (where the
- separator is C<:>) or C<%PATH%> on Windows (where the separator is
- C<;>).
- =item OPENSSL_INFO_CPU_SETTINGS
- The current OpenSSL cpu settings.
- This is the current setting of the cpu capability flags. It is usually
- automatically configured but may be set via an environment variable.
- The value has the same syntax as the environment variable.
- For x86 the string looks like C<OPENSSL_ia32cap=0x123:0x456>.
- =back
- For an unknown I<t>, NULL is returned.
- OpenSSL_version_num() returns the value of B<OPENSSL_VERSION_NUMBER>.
- =head1 RETURN VALUES
- OPENSSL_version_major(), OPENSSL_version_minor() and OPENSSL_version_patch()
- return the version number parts as integers.
- OPENSSL_version_pre_release() and OPENSSL_version_build_metadata() return
- the values of B<OPENSSL_VERSION_PRE_RELEASE> and
- B<OPENSSL_VERSION_BUILD_METADATA> respectively as constant strings.
- For any of them that is undefined, the empty string is returned.
- OpenSSL_version() returns constant strings.
- =head1 SEE ALSO
- L<crypto(7)>
- =head1 HISTORY
- The macros and functions described here were added in OpenSSL 3.0,
- except for OPENSSL_VERSION_NUMBER and OpenSSL_version_num().
- =head1 COPYRIGHT
- Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
- Licensed under the Apache License 2.0 (the "License"). You may not use
- this file except in compliance with the License. You can obtain a copy
- in the file LICENSE in the source distribution or at
- L<https://www.openssl.org/source/license.html>.
- =cut
|