• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * \file version.h
3  *
4  * \brief Run-time version information
5  */
6 /*
7  *  Copyright The Mbed TLS Contributors
8  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
9  *
10  *  This file is provided under the Apache License 2.0, or the
11  *  GNU General Public License v2.0 or later.
12  *
13  *  **********
14  *  Apache License 2.0:
15  *
16  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
17  *  not use this file except in compliance with the License.
18  *  You may obtain a copy of the License at
19  *
20  *  http://www.apache.org/licenses/LICENSE-2.0
21  *
22  *  Unless required by applicable law or agreed to in writing, software
23  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
24  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25  *  See the License for the specific language governing permissions and
26  *  limitations under the License.
27  *
28  *  **********
29  *
30  *  **********
31  *  GNU General Public License v2.0 or later:
32  *
33  *  This program is free software; you can redistribute it and/or modify
34  *  it under the terms of the GNU General Public License as published by
35  *  the Free Software Foundation; either version 2 of the License, or
36  *  (at your option) any later version.
37  *
38  *  This program is distributed in the hope that it will be useful,
39  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
40  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
41  *  GNU General Public License for more details.
42  *
43  *  You should have received a copy of the GNU General Public License along
44  *  with this program; if not, write to the Free Software Foundation, Inc.,
45  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
46  *
47  *  **********
48  */
49 /*
50  * This set of compile-time defines and run-time variables can be used to
51  * determine the version number of the mbed TLS library used.
52  */
53 #ifndef MBEDTLS_VERSION_H
54 #define MBEDTLS_VERSION_H
55 
56 #if !defined(MBEDTLS_CONFIG_FILE)
57 #include "config.h"
58 #else
59 #include MBEDTLS_CONFIG_FILE
60 #endif
61 
62 /**
63  * The version number x.y.z is split into three parts.
64  * Major, Minor, Patchlevel
65  */
66 #define MBEDTLS_VERSION_MAJOR  2
67 #define MBEDTLS_VERSION_MINOR  16
68 #define MBEDTLS_VERSION_PATCH  11
69 
70 /**
71  * The single version number has the following structure:
72  *    MMNNPP00
73  *    Major version | Minor version | Patch version
74  */
75 #define MBEDTLS_VERSION_NUMBER         0x02100B00
76 #define MBEDTLS_VERSION_STRING         "2.16.11"
77 #define MBEDTLS_VERSION_STRING_FULL    "mbed TLS 2.16.11"
78 
79 #if defined(MBEDTLS_VERSION_C)
80 
81 #ifdef __cplusplus
82 extern "C" {
83 #endif
84 
85 /**
86  * Get the version number.
87  *
88  * \return          The constructed version number in the format
89  *                  MMNNPP00 (Major, Minor, Patch).
90  */
91 unsigned int mbedtls_version_get_number( void );
92 
93 /**
94  * Get the version string ("x.y.z").
95  *
96  * \param string    The string that will receive the value.
97  *                  (Should be at least 9 bytes in size)
98  */
99 void mbedtls_version_get_string( char *string );
100 
101 /**
102  * Get the full version string ("mbed TLS x.y.z").
103  *
104  * \param string    The string that will receive the value. The mbed TLS version
105  *                  string will use 18 bytes AT MOST including a terminating
106  *                  null byte.
107  *                  (So the buffer should be at least 18 bytes to receive this
108  *                  version string).
109  */
110 void mbedtls_version_get_string_full( char *string );
111 
112 /**
113  * \brief           Check if support for a feature was compiled into this
114  *                  mbed TLS binary. This allows you to see at runtime if the
115  *                  library was for instance compiled with or without
116  *                  Multi-threading support.
117  *
118  * \note            only checks against defines in the sections "System
119  *                  support", "mbed TLS modules" and "mbed TLS feature
120  *                  support" in config.h
121  *
122  * \param feature   The string for the define to check (e.g. "MBEDTLS_AES_C")
123  *
124  * \return          0 if the feature is present,
125  *                  -1 if the feature is not present and
126  *                  -2 if support for feature checking as a whole was not
127  *                  compiled in.
128  */
129 int mbedtls_version_check_feature( const char *feature );
130 
131 #ifdef __cplusplus
132 }
133 #endif
134 
135 #endif /* MBEDTLS_VERSION_C */
136 
137 #endif /* version.h */
138