blob: c5288b94ab14800d161af5b5b9d5a9779e2912a5 [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
5 *
Manuel Pégourié-Gonnard6fb81872015-07-27 11:11:48 +02006 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
Manuel Pégourié-Gonnard37ff1402015-09-04 14:21:07 +02007 * SPDX-License-Identifier: Apache-2.0
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License"); you may
10 * not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
Paul Bakkerb96f1542010-07-18 20:36:00 +000020 *
Manuel Pégourié-Gonnardfe446432015-03-06 13:17:10 +000021 * This file is part of mbed TLS (https://tls.mbed.org)
Paul Bakkerf3b86c12011-01-27 15:24:17 +000022 */
23/*
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000024 * This set of compile-time defines and run-time variables can be used to
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000025 * determine the version number of the mbed TLS library used.
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000026 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020027#ifndef MBEDTLS_VERSION_H
28#define MBEDTLS_VERSION_H
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000029
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020030#if !defined(MBEDTLS_CONFIG_FILE)
Paul Bakker314052f2011-08-15 09:07:52 +000031#include "config.h"
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020032#else
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020033#include MBEDTLS_CONFIG_FILE
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020034#endif
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000035
36/**
37 * The version number x.y.z is split into three parts.
38 * Major, Minor, Patchlevel
39 */
Paul Bakker4cb87f42015-07-10 14:09:43 +010040#define MBEDTLS_VERSION_MAJOR 2
Simon Butcher72ea31b2017-08-10 11:51:16 +010041#define MBEDTLS_VERSION_MINOR 6
Janos Follath4f092912017-10-06 15:55:32 +010042#define MBEDTLS_VERSION_PATCH 1
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000043
44/**
45 * The single version number has the following structure:
46 * MMNNPP00
47 * Major version | Minor version | Patch version
48 */
Janos Follath4f092912017-10-06 15:55:32 +010049#define MBEDTLS_VERSION_NUMBER 0x02060100
50#define MBEDTLS_VERSION_STRING "2.6.1"
51#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.6.1"
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000052
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020053#if defined(MBEDTLS_VERSION_C)
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000054
Paul Bakker407a0da2013-06-27 14:29:21 +020055#ifdef __cplusplus
56extern "C" {
57#endif
58
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000059/**
60 * Get the version number.
61 *
Paul Bakker0f5f72e2011-01-18 14:58:55 +000062 * \return The constructed version number in the format
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000063 * MMNNPP00 (Major, Minor, Patch).
64 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020065unsigned int mbedtls_version_get_number( void );
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000066
67/**
68 * Get the version string ("x.y.z").
69 *
Paul Bakker0f5f72e2011-01-18 14:58:55 +000070 * \param string The string that will receive the value.
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000071 * (Should be at least 9 bytes in size)
72 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020073void mbedtls_version_get_string( char *string );
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000074
75/**
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000076 * Get the full version string ("mbed TLS x.y.z").
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000077 *
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000078 * \param string The string that will receive the value. The mbed TLS version
Paul Bakker83946842014-04-30 10:21:23 +020079 * string will use 18 bytes AT MOST including a terminating
80 * null byte.
81 * (So the buffer should be at least 18 bytes to receive this
82 * version string).
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000083 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020084void mbedtls_version_get_string_full( char *string );
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000085
Paul Bakker0f90d7d2014-04-30 11:49:44 +020086/**
87 * \brief Check if support for a feature was compiled into this
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +000088 * mbed TLS binary. This allows you to see at runtime if the
Paul Bakker0f90d7d2014-04-30 11:49:44 +020089 * library was for instance compiled with or without
90 * Multi-threading support.
91 *
Manuel Pégourié-Gonnard3eb50fa2015-06-02 10:28:09 +010092 * \note only checks against defines in the sections "System
93 * support", "mbed TLS modules" and "mbed TLS feature
94 * support" in config.h
Paul Bakker0f90d7d2014-04-30 11:49:44 +020095 *
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020096 * \param feature The string for the define to check (e.g. "MBEDTLS_AES_C")
Paul Bakker0f90d7d2014-04-30 11:49:44 +020097 *
Manuel Pégourié-Gonnard3eb50fa2015-06-02 10:28:09 +010098 * \return 0 if the feature is present,
99 * -1 if the feature is not present and
100 * -2 if support for feature checking as a whole was not
101 * compiled in.
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200102 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200103int mbedtls_version_check_feature( const char *feature );
Paul Bakker0f90d7d2014-04-30 11:49:44 +0200104
Paul Bakker407a0da2013-06-27 14:29:21 +0200105#ifdef __cplusplus
106}
107#endif
108
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200109#endif /* MBEDTLS_VERSION_C */
Paul Bakker3ac1b2d2010-06-18 22:47:29 +0000110
111#endif /* version.h */