blob: 9e0b1067bd208f66dfbe3cfa29cc97987127bc2d [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/debug.h"
Mohammad Azim Khan67735d52017-04-06 11:55:43 +01003#include "string.h"
Paul Bakker1f761152010-02-18 18:16:31 +00004
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +02005struct buffer_data {
Paul Bakker1f761152010-02-18 18:16:31 +00006 char buf[2000];
7 char *ptr;
8};
9
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020010void string_debug(void *data,
11 int level,
12 const char *file,
13 int line,
14 const char *str)
Paul Bakker1f761152010-02-18 18:16:31 +000015{
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020016 struct buffer_data *buffer = (struct buffer_data *)data;
Manuel Pégourié-Gonnardfd474232015-06-23 16:34:24 +020017 char *p = buffer->ptr;
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020018 ((void)level);
Paul Bakker1f761152010-02-18 18:16:31 +000019
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020020 memcpy(p, file, strlen(file));
21 p += strlen(file);
Manuel Pégourié-Gonnardfd474232015-06-23 16:34:24 +020022
23 *p++ = '(';
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020024 *p++ = '0' + (line / 1000) % 10;
25 *p++ = '0' + (line / 100) % 10;
26 *p++ = '0' + (line / 10) % 10;
27 *p++ = '0' + (line / 1) % 10;
Manuel Pégourié-Gonnardfd474232015-06-23 16:34:24 +020028 *p++ = ')';
29 *p++ = ':';
30 *p++ = ' ';
31
Manuel Pégourié-Gonnard7b23c512015-08-31 16:11:00 +020032#if defined(MBEDTLS_THREADING_C)
33 /* Skip "thread ID" (up to the first space) as it is not predictable */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020034 while (*str++ != ' ')
35 ;
Manuel Pégourié-Gonnard7b23c512015-08-31 16:11:00 +020036#endif
37
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020038 memcpy(p, str, strlen(str));
39 p += strlen(str);
Paul Bakker92478c32014-04-25 15:18:34 +020040
41 /* Detect if debug messages output partial lines and mark them */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020042 if (p[-1] != '\n')
Manuel Pégourié-Gonnardfd474232015-06-23 16:34:24 +020043 *p++ = '*';
44
45 buffer->ptr = p;
Paul Bakker1f761152010-02-18 18:16:31 +000046}
Paul Bakker33b43f12013-08-20 11:48:36 +020047/* END_HEADER */
Paul Bakker1f761152010-02-18 18:16:31 +000048
Paul Bakker33b43f12013-08-20 11:48:36 +020049/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020050 * depends_on:MBEDTLS_DEBUG_C:MBEDTLS_SSL_TLS_C
Paul Bakker33b43f12013-08-20 11:48:36 +020051 * END_DEPENDENCIES
52 */
Paul Bakker5690efc2011-05-26 13:16:06 +000053
Paul Bakker57ffa552014-04-25 14:29:10 +020054/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020055void debug_print_msg_threshold(int threshold,
56 int level,
57 char *file,
58 int line,
59 char *result_str)
Paul Bakkerc73079a2014-04-25 16:34:30 +020060{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020061 mbedtls_ssl_context ssl;
Manuel Pégourié-Gonnarddef0bbe2015-05-04 14:56:36 +020062 mbedtls_ssl_config conf;
Paul Bakkerc73079a2014-04-25 16:34:30 +020063 struct buffer_data buffer;
64
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020065 mbedtls_ssl_init(&ssl);
66 mbedtls_ssl_config_init(&conf);
67 memset(buffer.buf, 0, 2000);
Paul Bakkerc73079a2014-04-25 16:34:30 +020068 buffer.ptr = buffer.buf;
69
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020070 TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +020071
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020072 mbedtls_debug_set_threshold(threshold);
73 mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
Paul Bakkerc73079a2014-04-25 16:34:30 +020074
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020075 mbedtls_debug_print_msg(&ssl, level, file, line, "Text message, 2 == %d",
76 2);
Paul Bakkerc73079a2014-04-25 16:34:30 +020077
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020078 TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +020079
80exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020081 mbedtls_ssl_free(&ssl);
82 mbedtls_ssl_config_free(&conf);
Paul Bakkerc73079a2014-04-25 16:34:30 +020083}
84/* END_CASE */
85
86/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020087void mbedtls_debug_print_ret(char *file,
88 int line,
89 char *text,
90 int value,
91 char *result_str)
Paul Bakker57ffa552014-04-25 14:29:10 +020092{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020093 mbedtls_ssl_context ssl;
Manuel Pégourié-Gonnarddef0bbe2015-05-04 14:56:36 +020094 mbedtls_ssl_config conf;
Paul Bakker57ffa552014-04-25 14:29:10 +020095 struct buffer_data buffer;
96
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020097 mbedtls_ssl_init(&ssl);
98 mbedtls_ssl_config_init(&conf);
99 memset(buffer.buf, 0, 2000);
Paul Bakker57ffa552014-04-25 14:29:10 +0200100 buffer.ptr = buffer.buf;
101
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200102 TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +0200103
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200104 mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
Paul Bakker57ffa552014-04-25 14:29:10 +0200105
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200106 mbedtls_debug_print_ret(&ssl, 0, file, line, text, value);
Paul Bakker57ffa552014-04-25 14:29:10 +0200107
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200108 TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +0200109
110exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200111 mbedtls_ssl_free(&ssl);
112 mbedtls_ssl_config_free(&conf);
Paul Bakker57ffa552014-04-25 14:29:10 +0200113}
114/* END_CASE */
115
116/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200117void mbedtls_debug_print_buf(char *file,
118 int line,
119 char *text,
120 data_t *data,
121 char *result_str)
Paul Bakker57ffa552014-04-25 14:29:10 +0200122{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200123 mbedtls_ssl_context ssl;
Manuel Pégourié-Gonnarddef0bbe2015-05-04 14:56:36 +0200124 mbedtls_ssl_config conf;
Paul Bakker57ffa552014-04-25 14:29:10 +0200125 struct buffer_data buffer;
Paul Bakker57ffa552014-04-25 14:29:10 +0200126
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200127 mbedtls_ssl_init(&ssl);
128 mbedtls_ssl_config_init(&conf);
129 memset(buffer.buf, 0, 2000);
Paul Bakker57ffa552014-04-25 14:29:10 +0200130 buffer.ptr = buffer.buf;
131
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200132 TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
Paul Bakker57ffa552014-04-25 14:29:10 +0200133
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200134 mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +0200135
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200136 mbedtls_debug_print_buf(&ssl, 0, file, line, text, data->x, data->len);
Paul Bakker57ffa552014-04-25 14:29:10 +0200137
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200138 TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +0200139
140exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200141 mbedtls_ssl_free(&ssl);
142 mbedtls_ssl_config_free(&conf);
Paul Bakker57ffa552014-04-25 14:29:10 +0200143}
144/* END_CASE */
145
Hanno Becker612a2f12020-10-09 09:19:39 +0100146/* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:!MBEDTLS_X509_REMOVE_INFO */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200147void mbedtls_debug_print_crt(char *crt_file,
148 char *file,
149 int line,
150 char *prefix,
151 char *result_str)
Paul Bakker1f761152010-02-18 18:16:31 +0000152{
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200153 mbedtls_x509_crt crt;
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200154 mbedtls_ssl_context ssl;
Manuel Pégourié-Gonnarddef0bbe2015-05-04 14:56:36 +0200155 mbedtls_ssl_config conf;
Paul Bakker1f761152010-02-18 18:16:31 +0000156 struct buffer_data buffer;
157
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200158 mbedtls_ssl_init(&ssl);
159 mbedtls_ssl_config_init(&conf);
160 mbedtls_x509_crt_init(&crt);
161 memset(buffer.buf, 0, 2000);
Paul Bakker57ffa552014-04-25 14:29:10 +0200162 buffer.ptr = buffer.buf;
Paul Bakker1f761152010-02-18 18:16:31 +0000163
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200164 TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +0200165
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200166 mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
Paul Bakker1f761152010-02-18 18:16:31 +0000167
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200168 TEST_ASSERT(mbedtls_x509_crt_parse_file(&crt, crt_file) == 0);
169 mbedtls_debug_print_crt(&ssl, 0, file, line, prefix, &crt);
Paul Bakker1f761152010-02-18 18:16:31 +0000170
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200171 TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
Paul Bakker58ef6ec2013-01-03 11:33:48 +0100172
Paul Bakkerbd51b262014-07-10 15:26:12 +0200173exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200174 mbedtls_x509_crt_free(&crt);
175 mbedtls_ssl_free(&ssl);
176 mbedtls_ssl_config_free(&conf);
Paul Bakker1f761152010-02-18 18:16:31 +0000177}
Paul Bakker33b43f12013-08-20 11:48:36 +0200178/* END_CASE */
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000179
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200180/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200181void mbedtls_debug_print_mpi(int radix,
182 char *value,
183 char *file,
184 int line,
185 char *prefix,
186 char *result_str)
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000187{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200188 mbedtls_ssl_context ssl;
Manuel Pégourié-Gonnarddef0bbe2015-05-04 14:56:36 +0200189 mbedtls_ssl_config conf;
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000190 struct buffer_data buffer;
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200191 mbedtls_mpi val;
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000192
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200193 mbedtls_ssl_init(&ssl);
194 mbedtls_ssl_config_init(&conf);
195 mbedtls_mpi_init(&val);
196 memset(buffer.buf, 0, 2000);
Paul Bakker57ffa552014-04-25 14:29:10 +0200197 buffer.ptr = buffer.buf;
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000198
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200199 TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
Manuel Pégourié-Gonnardd5a9e412015-05-04 11:11:42 +0200200
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200201 TEST_ASSERT(mbedtls_test_read_mpi(&val, radix, value) == 0);
Paul Bakkereaebbd52014-04-25 15:04:14 +0200202
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200203 mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000204
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200205 mbedtls_debug_print_mpi(&ssl, 0, file, line, prefix, &val);
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000206
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200207 TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
Paul Bakker6c591fa2011-05-05 11:49:20 +0000208
Paul Bakkerbd51b262014-07-10 15:26:12 +0200209exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200210 mbedtls_mpi_free(&val);
211 mbedtls_ssl_free(&ssl);
212 mbedtls_ssl_config_free(&conf);
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000213}
Paul Bakker33b43f12013-08-20 11:48:36 +0200214/* END_CASE */