blob: 5b0c70fca7ea38d9ca330050c5eb38b30df95b82 [file] [log] [blame]
Paul Bakker3ac1b2d2010-06-18 22:47:29 +00001/**
2 * \file version.h
3 *
Paul Bakkerf3b86c12011-01-27 15:24:17 +00004 * \brief Run-time version information
Darryl Greena40a1012018-01-05 15:33:17 +00005 */
6/*
Bence Szépkúti1e148272020-08-07 13:07:28 +02007 * Copyright The Mbed TLS Contributors
Manuel Pégourié-Gonnard37ff1402015-09-04 14:21:07 +02008 * 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.
Paul Bakkerf3b86c12011-01-27 15:24:17 +000021 */
22/*
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000023 * This set of compile-time defines and run-time variables can be used to
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000024 * determine the version number of the mbed TLS library used.
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000025 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020026#ifndef MBEDTLS_VERSION_H
27#define MBEDTLS_VERSION_H
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000028
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020029#if !defined(MBEDTLS_CONFIG_FILE)
Jaeden Amero6609aef2019-07-04 20:01:14 +010030#include "mbedtls/config.h"
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020031#else
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020032#include MBEDTLS_CONFIG_FILE
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020033#endif
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000034
35/**
36 * The version number x.y.z is split into three parts.
37 * Major, Minor, Patchlevel
38 */
Jaeden Amero3f8d7842019-03-19 16:11:28 +000039#define MBEDTLS_VERSION_MAJOR 2
Dave Rodgmanbfe75492021-03-09 16:09:18 +000040#define MBEDTLS_VERSION_MINOR 26
Janos Follath83f33d32020-01-20 14:52:29 +000041#define MBEDTLS_VERSION_PATCH 0
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000042
43/**
44 * The single version number has the following structure:
45 * MMNNPP00
46 * Major version | Minor version | Patch version
47 */
Dave Rodgmanbfe75492021-03-09 16:09:18 +000048#define MBEDTLS_VERSION_NUMBER 0x021A0000
49#define MBEDTLS_VERSION_STRING "2.26.0"
50#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.26.0"
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000051
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020052#if defined(MBEDTLS_VERSION_C)
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000053
Paul Bakker407a0da2013-06-27 14:29:21 +020054#ifdef __cplusplus
55extern "C" {
56#endif
57
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000058/**
59 * Get the version number.
60 *
Paul Bakker0f5f72e2011-01-18 14:58:55 +000061 * \return The constructed version number in the format
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000062 * MMNNPP00 (Major, Minor, Patch).
63 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020064unsigned int mbedtls_version_get_number( void );
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000065
66/**
67 * Get the version string ("x.y.z").
68 *
Paul Bakker0f5f72e2011-01-18 14:58:55 +000069 * \param string The string that will receive the value.
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000070 * (Should be at least 9 bytes in size)
71 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020072void mbedtls_version_get_string( char *string );
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000073
74/**
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000075 * Get the full version string ("mbed TLS x.y.z").
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000076 *
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000077 * \param string The string that will receive the value. The mbed TLS version
Paul Bakker83946842014-04-30 10:21:23 +020078 * 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).
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000082 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020083void mbedtls_version_get_string_full( char *string );
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000084
Paul Bakker0f90d7d2014-04-30 11:49:44 +020085/**
86 * \brief Check if support for a feature was compiled into this
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000087 * mbed TLS binary. This allows you to see at runtime if the
Paul Bakker0f90d7d2014-04-30 11:49:44 +020088 * library was for instance compiled with or without
89 * Multi-threading support.
90 *
Manuel Pégourié-Gonnard3eb50fa2015-06-02 10:28:09 +010091 * \note only checks against defines in the sections "System
92 * support", "mbed TLS modules" and "mbed TLS feature
93 * support" in config.h
Paul Bakker0f90d7d2014-04-30 11:49:44 +020094 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020095 * \param feature The string for the define to check (e.g. "MBEDTLS_AES_C")
Paul Bakker0f90d7d2014-04-30 11:49:44 +020096 *
Manuel Pégourié-Gonnard3eb50fa2015-06-02 10:28:09 +010097 * \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.
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200101 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200102int mbedtls_version_check_feature( const char *feature );
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200103
Paul Bakker407a0da2013-06-27 14:29:21 +0200104#ifdef __cplusplus
105}
106#endif
107
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200108#endif /* MBEDTLS_VERSION_C */
Paul Bakker3ac1b2d2010-06-18 22:47:29 +0000109
110#endif /* version.h */