1 | =pod
|
---|
2 |
|
---|
3 | =head1 NAME
|
---|
4 |
|
---|
5 | OPENSSL_VERSION_MAJOR, OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH,
|
---|
6 | OPENSSL_VERSION_PRE_RELEASE, OPENSSL_VERSION_BUILD_METADATA,
|
---|
7 | OPENSSL_VERSION_TEXT, OPENSSL_VERSION_PREREQ, OPENSSL_version_major,
|
---|
8 | OPENSSL_version_minor, OPENSSL_version_patch, OPENSSL_version_pre_release,
|
---|
9 | OPENSSL_version_build_metadata, OpenSSL_version, OPENSSL_VERSION_NUMBER,
|
---|
10 | OpenSSL_version_num, OPENSSL_info
|
---|
11 | - get OpenSSL version number and other information
|
---|
12 |
|
---|
13 | =head1 SYNOPSIS
|
---|
14 |
|
---|
15 | #include <openssl/opensslv.h>
|
---|
16 |
|
---|
17 | #define OPENSSL_VERSION_MAJOR x
|
---|
18 | #define OPENSSL_VERSION_MINOR y
|
---|
19 | #define OPENSSL_VERSION_PATCH z
|
---|
20 |
|
---|
21 | /* The definitions here are typical release values */
|
---|
22 | #define OPENSSL_VERSION_PRE_RELEASE ""
|
---|
23 | #define OPENSSL_VERSION_BUILD_METADATA ""
|
---|
24 |
|
---|
25 | #define OPENSSL_VERSION_TEXT "OpenSSL x.y.z xx XXX xxxx"
|
---|
26 |
|
---|
27 | #define OPENSSL_VERSION_PREREQ(maj,min)
|
---|
28 |
|
---|
29 | #include <openssl/crypto.h>
|
---|
30 |
|
---|
31 | unsigned int OPENSSL_version_major(void);
|
---|
32 | unsigned int OPENSSL_version_minor(void);
|
---|
33 | unsigned int OPENSSL_version_patch(void);
|
---|
34 | const char *OPENSSL_version_pre_release(void);
|
---|
35 | const char *OPENSSL_version_build_metadata(void);
|
---|
36 |
|
---|
37 | const char *OpenSSL_version(int t);
|
---|
38 |
|
---|
39 | const char *OPENSSL_info(int t);
|
---|
40 |
|
---|
41 | /* from openssl/opensslv.h */
|
---|
42 | #define OPENSSL_VERSION_NUMBER 0xnnnnnnnnL
|
---|
43 |
|
---|
44 | /* from openssl/crypto.h */
|
---|
45 | unsigned long OpenSSL_version_num();
|
---|
46 |
|
---|
47 | =head1 DESCRIPTION
|
---|
48 |
|
---|
49 | =head2 Macros
|
---|
50 |
|
---|
51 | The three macros B<OPENSSL_VERSION_MAJOR>, B<OPENSSL_VERSION_MINOR> and
|
---|
52 | B<OPENSSL_VERSION_PATCH> represent the three parts of a version
|
---|
53 | identifier, B<I<MAJOR>.I<MINOR>.I<PATCH>>.
|
---|
54 |
|
---|
55 | The macro B<OPENSSL_VERSION_PRE_RELEASE> is an added bit of text that
|
---|
56 | indicates that this is a pre-release version, such as C<"-dev"> for an
|
---|
57 | ongoing development snapshot or C<"-alpha3"> for an alpha release.
|
---|
58 | The value must be a string.
|
---|
59 |
|
---|
60 | The macro B<OPENSSL_VERSION_BUILD_METADATA> is extra information, reserved
|
---|
61 | for other parties, such as C<"+fips">, or C<"+vendor.1">).
|
---|
62 | The OpenSSL project will not touch this macro (will leave it an empty string).
|
---|
63 | The value must be a string.
|
---|
64 |
|
---|
65 | B<OPENSSL_VERSION_STR> is a convenience macro to get the short version
|
---|
66 | identifier string, C<"I<MAJOR>.I<MINOR>.I<PATCH>">.
|
---|
67 |
|
---|
68 | B<OPENSSL_FULL_VERSION_STR> is a convenience macro to get the longer
|
---|
69 | version identifier string, which combines B<OPENSSL_VERSION_STR>,
|
---|
70 | B<OPENSSL_VERSION_PRE_RELEASE> and B<OPENSSL_VERSION_BUILD_METADATA>.
|
---|
71 |
|
---|
72 | B<OPENSSL_VERSION_TEXT> is a convenience macro to get a full descriptive
|
---|
73 | version text, which includes B<OPENSSL_FULL_VERSION_STR> and the release
|
---|
74 | date.
|
---|
75 |
|
---|
76 | B<OPENSSL_VERSION_PREREQ> is a useful macro for checking whether the OpenSSL
|
---|
77 | version for the headers in use is at least at the given pre-requisite major
|
---|
78 | (B<maj>) and minor (B<min>) number or not. It will evaluate to true if the
|
---|
79 | header version number (B<OPENSSL_VERSION_MAJOR>.B<OPENSSL_VERSION_MINOR>) is
|
---|
80 | greater than or equal to B<maj>.B<min>.
|
---|
81 |
|
---|
82 | B<OPENSSL_VERSION_NUMBER> is a combination of the major, minor and
|
---|
83 | patch version into a single integer 0xMNN00PP0L, where:
|
---|
84 |
|
---|
85 | =over 4
|
---|
86 |
|
---|
87 | =item M
|
---|
88 |
|
---|
89 | is the number from B<OPENSSL_VERSION_MAJOR>, in hexadecimal notation
|
---|
90 |
|
---|
91 | =item NN
|
---|
92 |
|
---|
93 | is the number from B<OPENSSL_VERSION_MINOR>, in hexadecimal notation
|
---|
94 |
|
---|
95 | =item PP
|
---|
96 |
|
---|
97 | is the number from B<OPENSSL_VERSION_PATCH>, in hexadecimal notation
|
---|
98 |
|
---|
99 | =back
|
---|
100 |
|
---|
101 | =head2 Functions
|
---|
102 |
|
---|
103 | OPENSSL_version_major(), OPENSSL_version_minor(), OPENSSL_version_patch(),
|
---|
104 | OPENSSL_version_pre_release(), and OPENSSL_version_build_metadata() return
|
---|
105 | the values of the macros above for the build of the library, respectively.
|
---|
106 |
|
---|
107 | OpenSSL_version() returns different strings depending on I<t>:
|
---|
108 |
|
---|
109 | =over 4
|
---|
110 |
|
---|
111 | =item OPENSSL_VERSION
|
---|
112 |
|
---|
113 | The value of B<OPENSSL_VERSION_TEXT>
|
---|
114 |
|
---|
115 | =item OPENSSL_VERSION_STRING
|
---|
116 |
|
---|
117 | The value of B<OPENSSL_VERSION_STR>
|
---|
118 |
|
---|
119 | =item OPENSSL_FULL_VERSION_STRING
|
---|
120 |
|
---|
121 | The value of B<OPENSSL_FULL_VERSION_STR>
|
---|
122 |
|
---|
123 | =item OPENSSL_CFLAGS
|
---|
124 |
|
---|
125 | The compiler flags set for the compilation process in the form
|
---|
126 | C<compiler: ...> if available, or C<compiler: information not available>
|
---|
127 | otherwise.
|
---|
128 |
|
---|
129 | =item OPENSSL_BUILT_ON
|
---|
130 |
|
---|
131 | The date of the build process in the form C<built on: ...> if available
|
---|
132 | or C<built on: date not available> otherwise.
|
---|
133 | The date would not be available in a reproducible build, for example.
|
---|
134 |
|
---|
135 | =item OPENSSL_PLATFORM
|
---|
136 |
|
---|
137 | The "Configure" target of the library build in the form C<platform: ...>
|
---|
138 | if available, or C<platform: information not available> otherwise.
|
---|
139 |
|
---|
140 | =item OPENSSL_DIR
|
---|
141 |
|
---|
142 | The B<OPENSSLDIR> setting of the library build in the form C<OPENSSLDIR: "...">
|
---|
143 | if available, or C<OPENSSLDIR: N/A> otherwise.
|
---|
144 |
|
---|
145 | =item OPENSSL_ENGINES_DIR
|
---|
146 |
|
---|
147 | The B<ENGINESDIR> setting of the library build in the form C<ENGINESDIR: "...">
|
---|
148 | if available, or C<ENGINESDIR: N/A> otherwise. This option is deprecated in
|
---|
149 | OpenSSL 3.0.
|
---|
150 |
|
---|
151 | =item OPENSSL_MODULES_DIR
|
---|
152 |
|
---|
153 | The B<MODULESDIR> setting of the library build in the form C<MODULESDIR: "...">
|
---|
154 | if available, or C<MODULESDIR: N/A> otherwise.
|
---|
155 |
|
---|
156 | =item OPENSSL_CPU_INFO
|
---|
157 |
|
---|
158 | The current OpenSSL cpu settings.
|
---|
159 | This is the current setting of the cpu capability flags. It is usually
|
---|
160 | automatically configured but may be set via an environment variable.
|
---|
161 | The value has the same syntax as the environment variable.
|
---|
162 | For x86 the string looks like C<CPUINFO: OPENSSL_ia32cap=0x123:0x456>
|
---|
163 | or C<CPUINFO: N/A> if not available.
|
---|
164 |
|
---|
165 | =back
|
---|
166 |
|
---|
167 | For an unknown I<t>, the text C<not available> is returned.
|
---|
168 |
|
---|
169 | OPENSSL_info() also returns different strings depending on I<t>:
|
---|
170 |
|
---|
171 | =over 4
|
---|
172 |
|
---|
173 | =item OPENSSL_INFO_CONFIG_DIR
|
---|
174 |
|
---|
175 | The configured C<OPENSSLDIR>, which is the default location for
|
---|
176 | OpenSSL configuration files.
|
---|
177 |
|
---|
178 | =item OPENSSL_INFO_ENGINES_DIR
|
---|
179 |
|
---|
180 | The configured C<ENGINESDIR>, which is the default location for
|
---|
181 | OpenSSL engines.
|
---|
182 |
|
---|
183 | =item OPENSSL_INFO_MODULES_DIR
|
---|
184 |
|
---|
185 | The configured C<MODULESDIR>, which is the default location for
|
---|
186 | dynamically loadable OpenSSL modules other than engines.
|
---|
187 |
|
---|
188 | =item OPENSSL_INFO_DSO_EXTENSION
|
---|
189 |
|
---|
190 | The configured dynamically loadable module extension.
|
---|
191 |
|
---|
192 | =item OPENSSL_INFO_DIR_FILENAME_SEPARATOR
|
---|
193 |
|
---|
194 | The separator between a directory specification and a filename.
|
---|
195 | Note that on some operating systems, this is not the same as the
|
---|
196 | separator between directory elements.
|
---|
197 |
|
---|
198 | =item OPENSSL_INFO_LIST_SEPARATOR
|
---|
199 |
|
---|
200 | The OpenSSL list separator.
|
---|
201 | This is typically used in strings that are lists of items, such as the
|
---|
202 | value of the environment variable C<$PATH> on Unix (where the
|
---|
203 | separator is C<:>) or C<%PATH%> on Windows (where the separator is
|
---|
204 | C<;>).
|
---|
205 |
|
---|
206 | =item OPENSSL_INFO_CPU_SETTINGS
|
---|
207 |
|
---|
208 | The current OpenSSL cpu settings.
|
---|
209 | This is the current setting of the cpu capability flags. It is usually
|
---|
210 | automatically configured but may be set via an environment variable.
|
---|
211 | The value has the same syntax as the environment variable.
|
---|
212 | For x86 the string looks like C<OPENSSL_ia32cap=0x123:0x456>.
|
---|
213 |
|
---|
214 | =back
|
---|
215 |
|
---|
216 | For an unknown I<t>, NULL is returned.
|
---|
217 |
|
---|
218 | OpenSSL_version_num() returns the value of B<OPENSSL_VERSION_NUMBER>.
|
---|
219 |
|
---|
220 | =head1 RETURN VALUES
|
---|
221 |
|
---|
222 | OPENSSL_version_major(), OPENSSL_version_minor() and OPENSSL_version_patch()
|
---|
223 | return the version number parts as integers.
|
---|
224 |
|
---|
225 | OPENSSL_version_pre_release() and OPENSSL_version_build_metadata() return
|
---|
226 | the values of B<OPENSSL_VERSION_PRE_RELEASE> and
|
---|
227 | B<OPENSSL_VERSION_BUILD_METADATA> respectively as constant strings.
|
---|
228 | For any of them that is undefined, the empty string is returned.
|
---|
229 |
|
---|
230 | OpenSSL_version() returns constant strings.
|
---|
231 |
|
---|
232 | =head1 SEE ALSO
|
---|
233 |
|
---|
234 | L<crypto(7)>
|
---|
235 |
|
---|
236 | =head1 HISTORY
|
---|
237 |
|
---|
238 | The macros and functions described here were added in OpenSSL 3.0,
|
---|
239 | except for OPENSSL_VERSION_NUMBER and OpenSSL_version_num().
|
---|
240 |
|
---|
241 | =head1 COPYRIGHT
|
---|
242 |
|
---|
243 | Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
|
---|
244 |
|
---|
245 | Licensed under the Apache License 2.0 (the "License"). You may not use
|
---|
246 | this file except in compliance with the License. You can obtain a copy
|
---|
247 | in the file LICENSE in the source distribution or at
|
---|
248 | L<https://www.openssl.org/source/license.html>.
|
---|
249 |
|
---|
250 | =cut
|
---|