blob: 492e32d7cb01471a24ce7f4c5de040dea9ca767c [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"
Paul Bakker1f761152010-02-18 18:16:31 +00003
4struct buffer_data
5{
6 char buf[2000];
7 char *ptr;
8};
9
Paul Bakkerff60ee62010-03-16 21:09:09 +000010void string_debug(void *data, int level, const char *str)
Paul Bakker1f761152010-02-18 18:16:31 +000011{
12 struct buffer_data *buffer = (struct buffer_data *) data;
Paul Bakker26b41a82011-07-13 14:53:58 +000013 ((void) level);
Paul Bakker1f761152010-02-18 18:16:31 +000014
15 memcpy(buffer->ptr, str, strlen(str));
16 buffer->ptr += strlen(str);
Paul Bakker92478c32014-04-25 15:18:34 +020017
18 /* Detect if debug messages output partial lines and mark them */
19 if( *(buffer->ptr - 1) != '\n' )
20 {
21 *buffer->ptr = '*';
22 buffer->ptr++;
23 }
Paul Bakker1f761152010-02-18 18:16:31 +000024}
Paul Bakker33b43f12013-08-20 11:48:36 +020025/* END_HEADER */
Paul Bakker1f761152010-02-18 18:16:31 +000026
Paul Bakker33b43f12013-08-20 11:48:36 +020027/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020028 * depends_on:MBEDTLS_DEBUG_C:MBEDTLS_SSL_TLS_C
Paul Bakker33b43f12013-08-20 11:48:36 +020029 * END_DEPENDENCIES
30 */
Paul Bakker5690efc2011-05-26 13:16:06 +000031
Paul Bakker57ffa552014-04-25 14:29:10 +020032/* BEGIN_CASE */
Paul Bakkerc73079a2014-04-25 16:34:30 +020033void debug_print_msg_threshold( int threshold, int level, char *file, int line,
34 char *result_str )
35{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020036 mbedtls_ssl_context ssl;
Paul Bakkerc73079a2014-04-25 16:34:30 +020037 struct buffer_data buffer;
38
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020039 memset( &ssl, 0, sizeof( mbedtls_ssl_context ) );
Paul Bakkerc73079a2014-04-25 16:34:30 +020040 memset( buffer.buf, 0, 2000 );
41 buffer.ptr = buffer.buf;
42
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020043 mbedtls_debug_set_log_mode( MBEDTLS_DEBUG_LOG_FULL );
44 mbedtls_debug_set_threshold( threshold );
45 mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
Paul Bakkerc73079a2014-04-25 16:34:30 +020046
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020047 mbedtls_debug_print_msg( &ssl, level, file, line,
48 mbedtls_debug_fmt("Text message, 2 == %d", 2 ) );
Paul Bakkerc73079a2014-04-25 16:34:30 +020049
50 TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 );
51}
52/* END_CASE */
53
54/* BEGIN_CASE */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020055void mbedtls_debug_print_ret( int mode, char *file, int line, char *text, int value,
Paul Bakker57ffa552014-04-25 14:29:10 +020056 char *result_str )
57{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020058 mbedtls_ssl_context ssl;
Paul Bakker57ffa552014-04-25 14:29:10 +020059 struct buffer_data buffer;
60
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020061 memset( &ssl, 0, sizeof( mbedtls_ssl_context ) );
Paul Bakker57ffa552014-04-25 14:29:10 +020062 memset( buffer.buf, 0, 2000 );
63 buffer.ptr = buffer.buf;
64
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020065 mbedtls_debug_set_log_mode( mode );
66 mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
Paul Bakker57ffa552014-04-25 14:29:10 +020067
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020068 mbedtls_debug_print_ret( &ssl, 0, file, line, text, value);
Paul Bakker57ffa552014-04-25 14:29:10 +020069
70 TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 );
71}
72/* END_CASE */
73
74/* BEGIN_CASE */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020075void mbedtls_debug_print_buf( int mode, char *file, int line, char *text,
Paul Bakkereaebbd52014-04-25 15:04:14 +020076 char *data_string, char *result_str )
Paul Bakker57ffa552014-04-25 14:29:10 +020077{
78 unsigned char data[10000];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020079 mbedtls_ssl_context ssl;
Paul Bakker57ffa552014-04-25 14:29:10 +020080 struct buffer_data buffer;
81 size_t data_len;
82
83 memset( &data, 0, sizeof( data ) );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020084 memset( &ssl, 0, sizeof( mbedtls_ssl_context ) );
Paul Bakker57ffa552014-04-25 14:29:10 +020085 memset( buffer.buf, 0, 2000 );
86 buffer.ptr = buffer.buf;
87
88 data_len = unhexify( data, data_string );
89
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020090 mbedtls_debug_set_log_mode( mode );
91 mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
Paul Bakker57ffa552014-04-25 14:29:10 +020092
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020093 mbedtls_debug_print_buf( &ssl, 0, file, line, text, data, data_len );
Paul Bakker57ffa552014-04-25 14:29:10 +020094
95 TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 );
96}
97/* END_CASE */
98
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020099/* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */
100void mbedtls_debug_print_crt( int mode, char *crt_file, char *file, int line,
Paul Bakkereaebbd52014-04-25 15:04:14 +0200101 char *prefix, char *result_str )
Paul Bakker1f761152010-02-18 18:16:31 +0000102{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200103 mbedtls_x509_crt crt;
104 mbedtls_ssl_context ssl;
Paul Bakker1f761152010-02-18 18:16:31 +0000105 struct buffer_data buffer;
106
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200107 mbedtls_x509_crt_init( &crt );
108 memset( &ssl, 0, sizeof( mbedtls_ssl_context ) );
Paul Bakker1f761152010-02-18 18:16:31 +0000109 memset( buffer.buf, 0, 2000 );
Paul Bakker57ffa552014-04-25 14:29:10 +0200110 buffer.ptr = buffer.buf;
Paul Bakker1f761152010-02-18 18:16:31 +0000111
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200112 mbedtls_debug_set_log_mode( mode );
113 mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
Paul Bakker1f761152010-02-18 18:16:31 +0000114
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200115 TEST_ASSERT( mbedtls_x509_crt_parse_file( &crt, crt_file ) == 0 );
116 mbedtls_debug_print_crt( &ssl, 0, file, line, prefix, &crt);
Paul Bakker1f761152010-02-18 18:16:31 +0000117
Paul Bakker33b43f12013-08-20 11:48:36 +0200118 TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 );
Paul Bakker58ef6ec2013-01-03 11:33:48 +0100119
Paul Bakkerbd51b262014-07-10 15:26:12 +0200120exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200121 mbedtls_x509_crt_free( &crt );
Paul Bakker1f761152010-02-18 18:16:31 +0000122}
Paul Bakker33b43f12013-08-20 11:48:36 +0200123/* END_CASE */
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000124
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200125/* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */
126void mbedtls_debug_print_mpi( int mode, int radix, char *value, char *file, int line,
Paul Bakker33b43f12013-08-20 11:48:36 +0200127 char *prefix, char *result_str )
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000128{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200129 mbedtls_ssl_context ssl;
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000130 struct buffer_data buffer;
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200131 mbedtls_mpi val;
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000132
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200133 mbedtls_mpi_init( &val );
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000134
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200135 memset( &ssl, 0, sizeof( mbedtls_ssl_context ) );
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000136 memset( buffer.buf, 0, 2000 );
Paul Bakker57ffa552014-04-25 14:29:10 +0200137 buffer.ptr = buffer.buf;
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000138
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200139 TEST_ASSERT( mbedtls_mpi_read_string( &val, radix, value ) == 0 );
Paul Bakkereaebbd52014-04-25 15:04:14 +0200140
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200141 mbedtls_debug_set_log_mode( mode );
142 mbedtls_ssl_set_dbg(&ssl, string_debug, &buffer);
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000143
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200144 mbedtls_debug_print_mpi( &ssl, 0, file, line, prefix, &val);
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000145
Paul Bakker33b43f12013-08-20 11:48:36 +0200146 TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 );
Paul Bakker6c591fa2011-05-05 11:49:20 +0000147
Paul Bakkerbd51b262014-07-10 15:26:12 +0200148exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200149 mbedtls_mpi_free( &val );
Paul Bakkerbe4e7dc2011-03-14 20:41:31 +0000150}
Paul Bakker33b43f12013-08-20 11:48:36 +0200151/* END_CASE */