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
9  *
10  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
11  *  not use this file except in compliance with the License.
12  *  You may obtain a copy of the License at
13  *
14  *  http://www.apache.org/licenses/LICENSE-2.0
15  *
16  *  Unless required by applicable law or agreed to in writing, software
17  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  *  See the License for the specific language governing permissions and
20  *  limitations under the License.
21  */
22 /*
23  * This set of compile-time defines and run-time variables can be used to
24  * determine the version number of the mbed TLS library used.
25  */
26 #ifndef MBEDTLS_VERSION_H
27 #define MBEDTLS_VERSION_H
28 
29 #if !defined(MBEDTLS_CONFIG_FILE)
30 #include "mbedtls/config.h"
31 #else
32 #include MBEDTLS_CONFIG_FILE
33 #endif
34 
35 /**
36  * The version number x.y.z is split into three parts.
37  * Major, Minor, Patchlevel
38  */
39 #define MBEDTLS_VERSION_MAJOR  2
40 #define MBEDTLS_VERSION_MINOR  28
41 #define MBEDTLS_VERSION_PATCH  0
42 
43 /**
44  * The single version number has the following structure:
45  *    MMNNPP00
46  *    Major version | Minor version | Patch version
47  */
48 #define MBEDTLS_VERSION_NUMBER         0x021C0000
49 #define MBEDTLS_VERSION_STRING         "2.28.0"
50 #define MBEDTLS_VERSION_STRING_FULL    "mbed TLS 2.28.0"
51 
52 #if defined(MBEDTLS_VERSION_C)
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 /**
59  * Get the version number.
60  *
61  * \return          The constructed version number in the format
62  *                  MMNNPP00 (Major, Minor, Patch).
63  */
64 unsigned int mbedtls_version_get_number( void );
65 
66 /**
67  * Get the version string ("x.y.z").
68  *
69  * \param string    The string that will receive the value.
70  *                  (Should be at least 9 bytes in size)
71  */
72 void mbedtls_version_get_string( char *string );
73 
74 /**
75  * Get the full version string ("mbed TLS x.y.z").
76  *
77  * \param string    The string that will receive the value. The mbed TLS version
78  *                  string will use 18 bytes AT MOST including a terminating
79  *                  null byte.
80  *                  (So the buffer should be at least 18 bytes to receive this
81  *                  version string).
82  */
83 void mbedtls_version_get_string_full( char *string );
84 
85 /**
86  * \brief           Check if support for a feature was compiled into this
87  *                  mbed TLS binary. This allows you to see at runtime if the
88  *                  library was for instance compiled with or without
89  *                  Multi-threading support.
90  *
91  * \note            only checks against defines in the sections "System
92  *                  support", "mbed TLS modules" and "mbed TLS feature
93  *                  support" in config.h
94  *
95  * \param feature   The string for the define to check (e.g. "MBEDTLS_AES_C")
96  *
97  * \return          0 if the feature is present,
98  *                  -1 if the feature is not present and
99  *                  -2 if support for feature checking as a whole was not
100  *                  compiled in.
101  */
102 int mbedtls_version_check_feature( const char *feature );
103 
104 #ifdef __cplusplus
105 }
106 #endif
107 
108 #endif /* MBEDTLS_VERSION_C */
109 
110 #endif /* version.h */
111