blob: 981f8ab85f414e2402872818df9128ea51037e14 [file] [log] [blame]
Paul Bakker33b43f12013-08-20 11:48:36 +02001/* BEGIN_HEADER */
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +00002#include "mbedtls/version.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02003/* END_HEADER */
Paul Bakker3ac1b2d2010-06-18 22:47:29 +00004
Paul Bakker33b43f12013-08-20 11:48:36 +02005/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006 * depends_on:MBEDTLS_VERSION_C
Paul Bakker33b43f12013-08-20 11:48:36 +02007 * END_DEPENDENCIES
8 */
Paul Bakker5690efc2011-05-26 13:16:06 +00009
Paul Bakker33b43f12013-08-20 11:48:36 +020010/* BEGIN_CASE */
Gilles Peskine449bd832023-01-11 14:50:10 +010011void check_compiletime_version(char *version_str)
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000012{
13 char build_str[100];
14 char build_str_full[100];
15 unsigned int build_int;
16
Gilles Peskine449bd832023-01-11 14:50:10 +010017 memset(build_str, 0, 100);
18 memset(build_str_full, 0, 100);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000019
Gilles Peskine449bd832023-01-11 14:50:10 +010020 mbedtls_snprintf(build_str, 100, "%d.%d.%d", MBEDTLS_VERSION_MAJOR,
21 MBEDTLS_VERSION_MINOR, MBEDTLS_VERSION_PATCH);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000022
Gilles Peskine449bd832023-01-11 14:50:10 +010023 mbedtls_snprintf(build_str_full, 100, "mbed TLS %d.%d.%d", MBEDTLS_VERSION_MAJOR,
24 MBEDTLS_VERSION_MINOR, MBEDTLS_VERSION_PATCH);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000025
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020026 build_int = MBEDTLS_VERSION_MAJOR << 24 |
Gilles Peskine449bd832023-01-11 14:50:10 +010027 MBEDTLS_VERSION_MINOR << 16 |
28 MBEDTLS_VERSION_PATCH << 8;
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000029
Gilles Peskine449bd832023-01-11 14:50:10 +010030 TEST_ASSERT(build_int == MBEDTLS_VERSION_NUMBER);
31 TEST_ASSERT(strcmp(build_str, MBEDTLS_VERSION_STRING) == 0);
32 TEST_ASSERT(strcmp(build_str_full, MBEDTLS_VERSION_STRING_FULL) == 0);
33 TEST_ASSERT(strcmp(version_str, MBEDTLS_VERSION_STRING) == 0);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000034}
Paul Bakker33b43f12013-08-20 11:48:36 +020035/* END_CASE */
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000036
Paul Bakker33b43f12013-08-20 11:48:36 +020037/* BEGIN_CASE */
Gilles Peskine449bd832023-01-11 14:50:10 +010038void check_runtime_version(char *version_str)
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000039{
40 char build_str[100];
41 char get_str[100];
42 char build_str_full[100];
43 char get_str_full[100];
44 unsigned int get_int;
45
Gilles Peskine449bd832023-01-11 14:50:10 +010046 memset(build_str, 0, 100);
47 memset(get_str, 0, 100);
48 memset(build_str_full, 0, 100);
49 memset(get_str_full, 0, 100);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000050
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020051 get_int = mbedtls_version_get_number();
Gilles Peskine449bd832023-01-11 14:50:10 +010052 mbedtls_version_get_string(get_str);
53 mbedtls_version_get_string_full(get_str_full);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000054
Gilles Peskine449bd832023-01-11 14:50:10 +010055 mbedtls_snprintf(build_str, 100, "%u.%u.%u",
56 (get_int >> 24) & 0xFF,
57 (get_int >> 16) & 0xFF,
58 (get_int >> 8) & 0xFF);
59 mbedtls_snprintf(build_str_full, 100, "mbed TLS %s", version_str);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000060
Gilles Peskine449bd832023-01-11 14:50:10 +010061 TEST_ASSERT(strcmp(build_str, version_str) == 0);
62 TEST_ASSERT(strcmp(build_str_full, get_str_full) == 0);
63 TEST_ASSERT(strcmp(version_str, get_str) == 0);
Paul Bakker3ac1b2d2010-06-18 22:47:29 +000064}
Paul Bakker33b43f12013-08-20 11:48:36 +020065/* END_CASE */
Paul Bakker0f90d7d2014-04-30 11:49:44 +020066
Deomid Ryabkovde420a42016-11-27 14:50:06 +000067/* BEGIN_CASE depends_on:MBEDTLS_VERSION_FEATURES */
Gilles Peskine449bd832023-01-11 14:50:10 +010068void check_feature(char *feature, int result)
Paul Bakker0f90d7d2014-04-30 11:49:44 +020069{
Gilles Peskine449bd832023-01-11 14:50:10 +010070 int check = mbedtls_version_check_feature(feature);
71 TEST_ASSERT(check == result);
Paul Bakker0f90d7d2014-04-30 11:49:44 +020072}
73/* END_CASE */