xref: /aosp_15_r20/external/mbedtls/tests/suites/test_suite_debug.function (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi/* BEGIN_HEADER */
2*62c56f98SSadaf Ebrahimi#include "mbedtls/debug.h"
3*62c56f98SSadaf Ebrahimi#include "string.h"
4*62c56f98SSadaf Ebrahimi#include "mbedtls/pk.h"
5*62c56f98SSadaf Ebrahimi
6*62c56f98SSadaf Ebrahimistruct buffer_data {
7*62c56f98SSadaf Ebrahimi    char buf[2000];
8*62c56f98SSadaf Ebrahimi    char *ptr;
9*62c56f98SSadaf Ebrahimi};
10*62c56f98SSadaf Ebrahimi
11*62c56f98SSadaf Ebrahimivoid string_debug(void *data, int level, const char *file, int line, const char *str)
12*62c56f98SSadaf Ebrahimi{
13*62c56f98SSadaf Ebrahimi    struct buffer_data *buffer = (struct buffer_data *) data;
14*62c56f98SSadaf Ebrahimi    char *p = buffer->ptr;
15*62c56f98SSadaf Ebrahimi    ((void) level);
16*62c56f98SSadaf Ebrahimi
17*62c56f98SSadaf Ebrahimi    memcpy(p, file, strlen(file));
18*62c56f98SSadaf Ebrahimi    p += strlen(file);
19*62c56f98SSadaf Ebrahimi
20*62c56f98SSadaf Ebrahimi    *p++ = '(';
21*62c56f98SSadaf Ebrahimi    *p++ = '0' + (line / 1000) % 10;
22*62c56f98SSadaf Ebrahimi    *p++ = '0' + (line / 100) % 10;
23*62c56f98SSadaf Ebrahimi    *p++ = '0' + (line / 10) % 10;
24*62c56f98SSadaf Ebrahimi    *p++ = '0' + (line / 1) % 10;
25*62c56f98SSadaf Ebrahimi    *p++ = ')';
26*62c56f98SSadaf Ebrahimi    *p++ = ':';
27*62c56f98SSadaf Ebrahimi    *p++ = ' ';
28*62c56f98SSadaf Ebrahimi
29*62c56f98SSadaf Ebrahimi#if defined(MBEDTLS_THREADING_C)
30*62c56f98SSadaf Ebrahimi    /* Skip "thread ID" (up to the first space) as it is not predictable */
31*62c56f98SSadaf Ebrahimi    while (*str++ != ' ') {
32*62c56f98SSadaf Ebrahimi        ;
33*62c56f98SSadaf Ebrahimi    }
34*62c56f98SSadaf Ebrahimi#endif
35*62c56f98SSadaf Ebrahimi
36*62c56f98SSadaf Ebrahimi    memcpy(p, str, strlen(str));
37*62c56f98SSadaf Ebrahimi    p += strlen(str);
38*62c56f98SSadaf Ebrahimi
39*62c56f98SSadaf Ebrahimi    /* Detect if debug messages output partial lines and mark them */
40*62c56f98SSadaf Ebrahimi    if (p[-1] != '\n') {
41*62c56f98SSadaf Ebrahimi        *p++ = '*';
42*62c56f98SSadaf Ebrahimi    }
43*62c56f98SSadaf Ebrahimi
44*62c56f98SSadaf Ebrahimi    buffer->ptr = p;
45*62c56f98SSadaf Ebrahimi}
46*62c56f98SSadaf Ebrahimi/* END_HEADER */
47*62c56f98SSadaf Ebrahimi
48*62c56f98SSadaf Ebrahimi/* BEGIN_DEPENDENCIES
49*62c56f98SSadaf Ebrahimi * depends_on:MBEDTLS_DEBUG_C:MBEDTLS_SSL_TLS_C
50*62c56f98SSadaf Ebrahimi * END_DEPENDENCIES
51*62c56f98SSadaf Ebrahimi */
52*62c56f98SSadaf Ebrahimi
53*62c56f98SSadaf Ebrahimi/* BEGIN_CASE */
54*62c56f98SSadaf Ebrahimivoid debug_print_msg_threshold(int threshold, int level, char *file,
55*62c56f98SSadaf Ebrahimi                               int line, char *result_str)
56*62c56f98SSadaf Ebrahimi{
57*62c56f98SSadaf Ebrahimi    mbedtls_ssl_context ssl;
58*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config conf;
59*62c56f98SSadaf Ebrahimi    struct buffer_data buffer;
60*62c56f98SSadaf Ebrahimi
61*62c56f98SSadaf Ebrahimi    MD_PSA_INIT();
62*62c56f98SSadaf Ebrahimi
63*62c56f98SSadaf Ebrahimi    mbedtls_ssl_init(&ssl);
64*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_init(&conf);
65*62c56f98SSadaf Ebrahimi    memset(buffer.buf, 0, 2000);
66*62c56f98SSadaf Ebrahimi    buffer.ptr = buffer.buf;
67*62c56f98SSadaf Ebrahimi
68*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_defaults(&conf,
69*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_IS_CLIENT,
70*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_TRANSPORT_STREAM,
71*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_PRESET_DEFAULT);
72*62c56f98SSadaf Ebrahimi
73*62c56f98SSadaf Ebrahimi    mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
74*62c56f98SSadaf Ebrahimi
75*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
76*62c56f98SSadaf Ebrahimi
77*62c56f98SSadaf Ebrahimi    mbedtls_debug_set_threshold(threshold);
78*62c56f98SSadaf Ebrahimi
79*62c56f98SSadaf Ebrahimi    mbedtls_debug_print_msg(&ssl, level, file, line,
80*62c56f98SSadaf Ebrahimi                            "Text message, 2 == %d", 2);
81*62c56f98SSadaf Ebrahimi
82*62c56f98SSadaf Ebrahimi    TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
83*62c56f98SSadaf Ebrahimi
84*62c56f98SSadaf Ebrahimiexit:
85*62c56f98SSadaf Ebrahimi    mbedtls_ssl_free(&ssl);
86*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_free(&conf);
87*62c56f98SSadaf Ebrahimi    MD_PSA_DONE();
88*62c56f98SSadaf Ebrahimi}
89*62c56f98SSadaf Ebrahimi/* END_CASE */
90*62c56f98SSadaf Ebrahimi
91*62c56f98SSadaf Ebrahimi/* BEGIN_CASE */
92*62c56f98SSadaf Ebrahimivoid mbedtls_debug_print_ret(char *file, int line, char *text, int value,
93*62c56f98SSadaf Ebrahimi                             char *result_str)
94*62c56f98SSadaf Ebrahimi{
95*62c56f98SSadaf Ebrahimi    mbedtls_ssl_context ssl;
96*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config conf;
97*62c56f98SSadaf Ebrahimi    struct buffer_data buffer;
98*62c56f98SSadaf Ebrahimi
99*62c56f98SSadaf Ebrahimi    MD_PSA_INIT();
100*62c56f98SSadaf Ebrahimi
101*62c56f98SSadaf Ebrahimi    mbedtls_ssl_init(&ssl);
102*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_init(&conf);
103*62c56f98SSadaf Ebrahimi    memset(buffer.buf, 0, 2000);
104*62c56f98SSadaf Ebrahimi    buffer.ptr = buffer.buf;
105*62c56f98SSadaf Ebrahimi
106*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_defaults(&conf,
107*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_IS_CLIENT,
108*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_TRANSPORT_STREAM,
109*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_PRESET_DEFAULT);
110*62c56f98SSadaf Ebrahimi
111*62c56f98SSadaf Ebrahimi    mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
112*62c56f98SSadaf Ebrahimi
113*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
114*62c56f98SSadaf Ebrahimi
115*62c56f98SSadaf Ebrahimi    mbedtls_debug_print_ret(&ssl, 0, file, line, text, value);
116*62c56f98SSadaf Ebrahimi
117*62c56f98SSadaf Ebrahimi    TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
118*62c56f98SSadaf Ebrahimi
119*62c56f98SSadaf Ebrahimiexit:
120*62c56f98SSadaf Ebrahimi    mbedtls_ssl_free(&ssl);
121*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_free(&conf);
122*62c56f98SSadaf Ebrahimi    MD_PSA_DONE();
123*62c56f98SSadaf Ebrahimi}
124*62c56f98SSadaf Ebrahimi/* END_CASE */
125*62c56f98SSadaf Ebrahimi
126*62c56f98SSadaf Ebrahimi/* BEGIN_CASE */
127*62c56f98SSadaf Ebrahimivoid mbedtls_debug_print_buf(char *file, int line, char *text,
128*62c56f98SSadaf Ebrahimi                             data_t *data, char *result_str)
129*62c56f98SSadaf Ebrahimi{
130*62c56f98SSadaf Ebrahimi    mbedtls_ssl_context ssl;
131*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config conf;
132*62c56f98SSadaf Ebrahimi    struct buffer_data buffer;
133*62c56f98SSadaf Ebrahimi
134*62c56f98SSadaf Ebrahimi    MD_PSA_INIT();
135*62c56f98SSadaf Ebrahimi
136*62c56f98SSadaf Ebrahimi    mbedtls_ssl_init(&ssl);
137*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_init(&conf);
138*62c56f98SSadaf Ebrahimi    memset(buffer.buf, 0, 2000);
139*62c56f98SSadaf Ebrahimi    buffer.ptr = buffer.buf;
140*62c56f98SSadaf Ebrahimi
141*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_defaults(&conf,
142*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_IS_CLIENT,
143*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_TRANSPORT_STREAM,
144*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_PRESET_DEFAULT);
145*62c56f98SSadaf Ebrahimi
146*62c56f98SSadaf Ebrahimi    mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
147*62c56f98SSadaf Ebrahimi
148*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
149*62c56f98SSadaf Ebrahimi
150*62c56f98SSadaf Ebrahimi    mbedtls_debug_print_buf(&ssl, 0, file, line, text, data->x, data->len);
151*62c56f98SSadaf Ebrahimi
152*62c56f98SSadaf Ebrahimi    TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
153*62c56f98SSadaf Ebrahimi
154*62c56f98SSadaf Ebrahimiexit:
155*62c56f98SSadaf Ebrahimi    mbedtls_ssl_free(&ssl);
156*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_free(&conf);
157*62c56f98SSadaf Ebrahimi    MD_PSA_DONE();
158*62c56f98SSadaf Ebrahimi}
159*62c56f98SSadaf Ebrahimi/* END_CASE */
160*62c56f98SSadaf Ebrahimi
161*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:!MBEDTLS_X509_REMOVE_INFO */
162*62c56f98SSadaf Ebrahimivoid mbedtls_debug_print_crt(char *crt_file, char *file, int line,
163*62c56f98SSadaf Ebrahimi                             char *prefix, char *result_str)
164*62c56f98SSadaf Ebrahimi{
165*62c56f98SSadaf Ebrahimi    mbedtls_x509_crt   crt;
166*62c56f98SSadaf Ebrahimi    mbedtls_ssl_context ssl;
167*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config conf;
168*62c56f98SSadaf Ebrahimi    struct buffer_data buffer;
169*62c56f98SSadaf Ebrahimi
170*62c56f98SSadaf Ebrahimi    mbedtls_ssl_init(&ssl);
171*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_init(&conf);
172*62c56f98SSadaf Ebrahimi    mbedtls_x509_crt_init(&crt);
173*62c56f98SSadaf Ebrahimi    MD_OR_USE_PSA_INIT();
174*62c56f98SSadaf Ebrahimi
175*62c56f98SSadaf Ebrahimi    memset(buffer.buf, 0, 2000);
176*62c56f98SSadaf Ebrahimi    buffer.ptr = buffer.buf;
177*62c56f98SSadaf Ebrahimi
178*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_defaults(&conf,
179*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_IS_CLIENT,
180*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_TRANSPORT_STREAM,
181*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_PRESET_DEFAULT);
182*62c56f98SSadaf Ebrahimi
183*62c56f98SSadaf Ebrahimi    mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
184*62c56f98SSadaf Ebrahimi
185*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
186*62c56f98SSadaf Ebrahimi
187*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_x509_crt_parse_file(&crt, crt_file) == 0);
188*62c56f98SSadaf Ebrahimi    mbedtls_debug_print_crt(&ssl, 0, file, line, prefix, &crt);
189*62c56f98SSadaf Ebrahimi
190*62c56f98SSadaf Ebrahimi    TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
191*62c56f98SSadaf Ebrahimi
192*62c56f98SSadaf Ebrahimiexit:
193*62c56f98SSadaf Ebrahimi    mbedtls_x509_crt_free(&crt);
194*62c56f98SSadaf Ebrahimi    mbedtls_ssl_free(&ssl);
195*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_free(&conf);
196*62c56f98SSadaf Ebrahimi    MD_OR_USE_PSA_DONE();
197*62c56f98SSadaf Ebrahimi}
198*62c56f98SSadaf Ebrahimi/* END_CASE */
199*62c56f98SSadaf Ebrahimi
200*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
201*62c56f98SSadaf Ebrahimivoid mbedtls_debug_print_mpi(char *value, char *file, int line,
202*62c56f98SSadaf Ebrahimi                             char *prefix, char *result_str)
203*62c56f98SSadaf Ebrahimi{
204*62c56f98SSadaf Ebrahimi    mbedtls_ssl_context ssl;
205*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config conf;
206*62c56f98SSadaf Ebrahimi    struct buffer_data buffer;
207*62c56f98SSadaf Ebrahimi    mbedtls_mpi val;
208*62c56f98SSadaf Ebrahimi
209*62c56f98SSadaf Ebrahimi    MD_PSA_INIT();
210*62c56f98SSadaf Ebrahimi
211*62c56f98SSadaf Ebrahimi    mbedtls_ssl_init(&ssl);
212*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_init(&conf);
213*62c56f98SSadaf Ebrahimi    mbedtls_mpi_init(&val);
214*62c56f98SSadaf Ebrahimi    memset(buffer.buf, 0, 2000);
215*62c56f98SSadaf Ebrahimi    buffer.ptr = buffer.buf;
216*62c56f98SSadaf Ebrahimi
217*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_defaults(&conf,
218*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_IS_CLIENT,
219*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_TRANSPORT_STREAM,
220*62c56f98SSadaf Ebrahimi                                MBEDTLS_SSL_PRESET_DEFAULT);
221*62c56f98SSadaf Ebrahimi
222*62c56f98SSadaf Ebrahimi    mbedtls_ssl_conf_dbg(&conf, string_debug, &buffer);
223*62c56f98SSadaf Ebrahimi
224*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_ssl_setup(&ssl, &conf) == 0);
225*62c56f98SSadaf Ebrahimi
226*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_test_read_mpi(&val, value) == 0);
227*62c56f98SSadaf Ebrahimi
228*62c56f98SSadaf Ebrahimi    mbedtls_debug_print_mpi(&ssl, 0, file, line, prefix, &val);
229*62c56f98SSadaf Ebrahimi
230*62c56f98SSadaf Ebrahimi    TEST_ASSERT(strcmp(buffer.buf, result_str) == 0);
231*62c56f98SSadaf Ebrahimi
232*62c56f98SSadaf Ebrahimiexit:
233*62c56f98SSadaf Ebrahimi    mbedtls_mpi_free(&val);
234*62c56f98SSadaf Ebrahimi    mbedtls_ssl_free(&ssl);
235*62c56f98SSadaf Ebrahimi    mbedtls_ssl_config_free(&conf);
236*62c56f98SSadaf Ebrahimi    MD_PSA_DONE();
237*62c56f98SSadaf Ebrahimi}
238*62c56f98SSadaf Ebrahimi/* END_CASE */
239