Constify X509_PUBKEY_get(), X509_PUBKEY_get0(), and X509_PUBKEY_get0_param()
[openssl.git] / doc / man3 / OpenSSL_version.pod
index cf5794a720337b5730286e62cc85b143e0d53a4a..b3d5b7292886f276dc25761d5dcd6039030f6d3f 100644 (file)
@@ -4,12 +4,11 @@
 
 OPENSSL_VERSION_MAJOR, OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH,
 OPENSSL_VERSION_PRE_RELEASE, OPENSSL_VERSION_BUILD_METADATA,
-OPENSSL_VERSION_PRE_RELEASE_STR, OPENSSL_VERSION_BUILD_METADATA_STR,
 OPENSSL_VERSION_TEXT,
 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
-- get OpenSSL version number
+OPENSSL_VERSION_NUMBER, OpenSSL_version_num, OPENSSL_info
+- get OpenSSL version number and other information
 
 =head1 SYNOPSIS
 
@@ -20,23 +19,23 @@ OPENSSL_VERSION_NUMBER, OpenSSL_version_num
  #define OPENSSL_VERSION_PATCH  z
 
  /* The definitions here are typical release values */
- #undef OPENSSL_VERSION_PRE_RELEASE
- #undef OPENSSL_VERSION_BUILD_METADATA
- #define OPENSSL_VERSION_PRE_RELEASE_STR ""
- #define OPENSSL_VERSION_BUILD_METADATA_STR ""
+ #define OPENSSL_VERSION_PRE_RELEASE ""
+ #define OPENSSL_VERSION_BUILD_METADATA ""
 
  #define OPENSSL_VERSION_TEXT "OpenSSL x.y.z xx XXX xxxx"
 
+ #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);
 
- #include <openssl/crypto.h>
-
  const char *OpenSSL_version(int t);
 
+ const char *OPENSSL_info(int t);
+
 Deprecated:
 
  /* from openssl/opensslv.h */
@@ -50,25 +49,24 @@ Deprecated:
 =head2 Macros
 
 The three macros B<OPENSSL_VERSION_MAJOR>, B<OPENSSL_VERSION_MINOR> and
-B<OPENSSL_VERSION_PATCH> represent the three parts of a 3 numbered version
-number, MAJOR.MINOR.PATCH.
+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,
-when defined, indicates that this is a pre-release version, such as
-C<"-dev"> for an ongoing development snapshot, C<"-alpha3"> for an
-alpha release, etc...
+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 metadata, reserved
-for other parties (examples: C<"+fips">, C<"+vendor.1">).
-The OpenSSL project will not touch this macro.
+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
-number string, "MAJOR.MINOR.PATCH".
+identifier string, C<"I<MAJOR>.I<MINOR>.I<PATCH>">.
 
 B<OPENSSL_FULL_VERSION_STR> is a convenience macro to get the longer
-version number string, which combines B<OPENSSL_VERSION_STR>,
+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
@@ -81,7 +79,7 @@ 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 B<t>:
+OpenSSL_version() returns different strings depending on I<t>:
 
 =over 4
 
@@ -100,32 +98,96 @@ The value of B<OPENSSL_FULL_VERSION_STR>
 =item OPENSSL_CFLAGS
 
 The compiler flags set for the compilation process in the form
-"compiler: ..."  if available or "compiler: information not available"
+C<compiler: ...>  if available, or C<compiler: information not available>
 otherwise.
 
 =item OPENSSL_BUILT_ON
 
-The date of the build process in the form "built on: ..." if available
-or "built on: date not available" otherwise.
+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 "platform: ..."
-if available or "platform: information not available" otherwise.
+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 "OPENSSLDIR" setting of the library build in the form "OPENSSLDIR: "...""
-if available or "OPENSSLDIR: N/A" otherwise.
+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 "ENGINESDIR" setting of the library build in the form "ENGINESDIR: "...""
-if available or "ENGINESDIR: N/A" otherwise.
+The B<ENGINESDIR> setting of the library build in the form C<ENGINESDIR: "...">
+if available, or C<ENGINESDIR: N/A> otherwise.
+
+=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 B<t>, the text "not available" is returned.
+For an unknown I<t>, NULL is returned.
 
 =head1 BACKWARD COMPATIBILITY
 
@@ -176,14 +238,14 @@ L<crypto(7)>
 
 =head1 HISTORY
 
-The macros and functions described here were added to OpenSSL 3.0.0,
+The macros and functions described here were added in OpenSSL 3.0,
 with the exception of the L</BACKWARD COMPATIBILITY> ones.
 
 =head1 COPYRIGHT
 
-Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved.
 
-Licensed under the OpenSSL license (the "License").  You may not use
+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>.