debug.h
mbedtls/config.h
mbedtls/ssl.h
mbedtls/ecp.h
mbedtls/asn1.h
mbedtls/bignum.h
mbedtls/check_config.h
mbedtls/cipher.h
mbedtls/config.h
debug.h
mbedtls/dhm.h
mbedtls/ecdh.h
mbedtls/ecdsa.h
mbedtls/ecp.h
mbedtls/md.h
mbedtls/pk.h
mbedtls/platform_time.h
mbedtls/platform_util.h
mbedtls/rsa.h
mbedtls/ssl.h
mbedtls/ssl_ciphersuites.h
mbedtls/threading.h
mbedtls/x509.h
mbedtls/x509_crl.h
mbedtls/x509_crt.h
limits.h
pthread.h
stddef.h
stdint.h
stdio.h
stdlib.h
time.h
MBEDTLS_DEBUG_STRIP_PARENS
...
__VA_ARGS__
MBEDTLS_SSL_DEBUG_MSG
level
args
mbedtls_debug_print_msg
(ssl, level, __FILE__, __LINE__, \ MBEDTLS_DEBUG_STRIP_PARENS args)
MBEDTLS_SSL_DEBUG_RET
level
text
ret
mbedtls_debug_print_ret
(ssl, level, __FILE__, __LINE__, text, ret)
MBEDTLS_SSL_DEBUG_BUF
level
text
buf
len
mbedtls_debug_print_buf
(ssl, level, __FILE__, __LINE__, text, buf, len)
MBEDTLS_SSL_DEBUG_MPI
level
text
X
mbedtls_debug_print_mpi
(ssl, level, __FILE__, __LINE__, text, X)
MBEDTLS_SSL_DEBUG_ECP
level
text
X
mbedtls_debug_print_ecp
(ssl, level, __FILE__, __LINE__, text, X)
MBEDTLS_SSL_DEBUG_CRT
level
text
crt
mbedtls_debug_print_crt
(ssl, level, __FILE__, __LINE__, text, crt)
MBEDTLS_SSL_DEBUG_ECDH
level
ecdh
attr
mbedtls_debug_printf_ecdh
(ssl, level, __FILE__, __LINE__, ecdh, attr)
MBEDTLS_PRINTF_ATTRIBUTE
string_index
first_to_check

Mark a function as having printf attributes, and thus enable checking via -wFormat and other flags. This does nothing on builds with compilers that do not support the format attribute

Module: library/debug.c Caller:

This module provides debugging functions.

MBEDTLS_PRINTF_SIZET
"zu"

MBEDTLS_PRINTF_xxx: Due to issues with older window compilers and MinGW we need to define the printf specifier for size_t and long long per platform.

Module: library/debug.c Caller:

This module provides debugging functions.

MBEDTLS_PRINTF_LONGLONG
"lld"
mbedtls_debug_ecdh_attr
MBEDTLS_DEBUG_ECDH_Q
MBEDTLS_DEBUG_ECDH_QP
MBEDTLS_DEBUG_ECDH_Z
void void mbedtls_debug_set_threshold (int threshold) mbedtls_debug_set_threshold int threshold

Set the threshold error level to handle globally all debug output. Debug messages that have a level over the threshold value are discarded. (Default value: 0 = No debug )

threshold

threshold level of messages to filter on. Messages at a higher level will be discarded.

- Debug levels

  - 0 No debug

  - 1 Error

  - 2 State change

  - 3 Informational

  - 4 Verbose

void void mbedtls_debug_print_msg (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *format,...) mbedtls_debug_print_msg const mbedtls_ssl_context * ssl int level const char * file int line const char * format ...

Print a message to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_MSG() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the message has occurred in

line

line number the message has occurred at

format

format specifier, in printf format

...

variables used by the format specifier

This function is intended for INTERNAL usage within the library only.

void void mbedtls_debug_print_ret (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *text, int ret) mbedtls_debug_print_ret const mbedtls_ssl_context * ssl int level const char * file int line const char * text int ret

Print the return value of a function to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_RET() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the error has occurred in

line

line number the error has occurred in

text

the name of the function that returned the error

ret

the return code value

This function is intended for INTERNAL usage within the library only.

void void mbedtls_debug_print_buf (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *text, const unsigned char *buf, size_t len) mbedtls_debug_print_buf const mbedtls_ssl_context * ssl int level const char * file int line const char * text const unsigned char * buf size_t len

Output a buffer of size len bytes to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_BUF() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the error has occurred in

line

line number the error has occurred in

text

a name or label for the buffer being dumped. Normally the variable or buffer name

buf

the buffer to be outputted

len

length of the buffer

This function is intended for INTERNAL usage within the library only.

void void mbedtls_debug_print_mpi (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *text, const mbedtls_mpi *X) mbedtls_debug_print_mpi const mbedtls_ssl_context * ssl int level const char * file int line const char * text const mbedtls_mpi * X

Print a MPI variable to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_MPI() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the error has occurred in

line

line number the error has occurred in

text

a name or label for the MPI being output. Normally the variable name

X

the MPI variable

This function is intended for INTERNAL usage within the library only.

void void mbedtls_debug_print_ecp (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *text, const mbedtls_ecp_point *X) mbedtls_debug_print_ecp const mbedtls_ssl_context * ssl int level const char * file int line const char * text const mbedtls_ecp_point * X

Print an ECP point to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_ECP() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the error has occurred in

line

line number the error has occurred in

text

a name or label for the ECP point being output. Normally the variable name

X

the ECP point

This function is intended for INTERNAL usage within the library only.

void void mbedtls_debug_print_crt (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *text, const mbedtls_x509_crt *crt) mbedtls_debug_print_crt const mbedtls_ssl_context * ssl int level const char * file int line const char * text const mbedtls_x509_crt * crt

Print a X.509 certificate structure to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_CRT() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the error has occurred in

line

line number the error has occurred in

text

a name or label for the certificate being output

crt

X.509 certificate structure

This function is intended for INTERNAL usage within the library only.

void void mbedtls_debug_printf_ecdh (const mbedtls_ssl_context *ssl, int level, const char *file, int line, const mbedtls_ecdh_context *ecdh, mbedtls_debug_ecdh_attr attr) mbedtls_debug_printf_ecdh const mbedtls_ssl_context * ssl int level const char * file int line const mbedtls_ecdh_context * ecdh mbedtls_debug_ecdh_attr attr

Print a field of the ECDH structure in the SSL context to the debug output. This function is always used through the MBEDTLS_SSL_DEBUG_ECDH() macro, which supplies the ssl context, file and line number parameters.

ssl

SSL context

level

error level of the debug message

file

file the error has occurred in

line

line number the error has occurred in

ecdh

the ECDH context

attr

the identifier of the attribute being output

This function is intended for INTERNAL usage within the library only.

Functions for controlling and providing debug output from the library.

    /*
    *CopyrightTheMbedTLSContributors
    *SPDX-License-Identifier:Apache-2.0ORGPL-2.0-or-later
    */
    #ifndefMBEDTLS_DEBUG_H
    #defineMBEDTLS_DEBUG_H

    #if!defined(MBEDTLS_CONFIG_FILE)
    #include"mbedtls/config.h"
    #else
    #includeMBEDTLS_CONFIG_FILE
    #endif

    #include"mbedtls/ssl.h"

    #ifdefined(MBEDTLS_ECP_C)
    #include"mbedtls/ecp.h"
    #endif

    #ifdefined(MBEDTLS_DEBUG_C)

    #defineMBEDTLS_DEBUG_STRIP_PARENS(...)__VA_ARGS__

    #defineMBEDTLS_SSL_DEBUG_MSG(level,args)\
    mbedtls_debug_print_msg(ssl,level,__FILE__,__LINE__,\
    MBEDTLS_DEBUG_STRIP_PARENSargs)

    #defineMBEDTLS_SSL_DEBUG_RET(level,text,ret)\
    mbedtls_debug_print_ret(ssl,level,__FILE__,__LINE__,text,ret)

    #defineMBEDTLS_SSL_DEBUG_BUF(level,text,buf,len)\
    mbedtls_debug_print_buf(ssl,level,__FILE__,__LINE__,text,buf,len)

    #ifdefined(MBEDTLS_BIGNUM_C)
    #defineMBEDTLS_SSL_DEBUG_MPI(level,text,X)\
    mbedtls_debug_print_mpi(ssl,level,__FILE__,__LINE__,text,X)
    #endif

    #ifdefined(MBEDTLS_ECP_C)
    #defineMBEDTLS_SSL_DEBUG_ECP(level,text,X)\
    mbedtls_debug_print_ecp(ssl,level,__FILE__,__LINE__,text,X)
    #endif

    #ifdefined(MBEDTLS_X509_CRT_PARSE_C)
    #defineMBEDTLS_SSL_DEBUG_CRT(level,text,crt)\
    mbedtls_debug_print_crt(ssl,level,__FILE__,__LINE__,text,crt)
    #endif

    #ifdefined(MBEDTLS_ECDH_C)
    #defineMBEDTLS_SSL_DEBUG_ECDH(level,ecdh,attr)\
    mbedtls_debug_printf_ecdh(ssl,level,__FILE__,__LINE__,ecdh,attr)
    #endif

    #else/*MBEDTLS_DEBUG_C*/

    #defineMBEDTLS_SSL_DEBUG_MSG(level,args)do{}while(0)
    #defineMBEDTLS_SSL_DEBUG_RET(level,text,ret)do{}while(0)
    #defineMBEDTLS_SSL_DEBUG_BUF(level,text,buf,len)do{}while(0)
    #defineMBEDTLS_SSL_DEBUG_MPI(level,text,X)do{}while(0)
    #defineMBEDTLS_SSL_DEBUG_ECP(level,text,X)do{}while(0)
    #defineMBEDTLS_SSL_DEBUG_CRT(level,text,crt)do{}while(0)
    #defineMBEDTLS_SSL_DEBUG_ECDH(level,ecdh,attr)do{}while(0)

    #endif/*MBEDTLS_DEBUG_C*/

    #ifdefined(__has_attribute)
    #if__has_attribute(format)
    #ifdefined(__MINGW32__)&&__USE_MINGW_ANSI_STDIO==1
    #defineMBEDTLS_PRINTF_ATTRIBUTE(string_index,first_to_check)\
    __attribute__((__format__(gnu_printf,string_index,first_to_check)))
    #else/*defined(__MINGW32__)&&__USE_MINGW_ANSI_STDIO==1*/
    #defineMBEDTLS_PRINTF_ATTRIBUTE(string_index,first_to_check)\
    __attribute__((format(printf,string_index,first_to_check)))
    #endif
    #else/*__has_attribute(format)*/
    #defineMBEDTLS_PRINTF_ATTRIBUTE(string_index,first_to_check)
    #endif/*__has_attribute(format)*/
    #else/*defined(__has_attribute)*/
    #defineMBEDTLS_PRINTF_ATTRIBUTE(string_index,first_to_check)
    #endif

    #if(defined(__MINGW32__)&&__USE_MINGW_ANSI_STDIO==0)||(defined(_MSC_VER)&&_MSC_VER<1800)
    #include<inttypes.h>
    #defineMBEDTLS_PRINTF_SIZETPRIuPTR
    #defineMBEDTLS_PRINTF_LONGLONG"I64d"
    #else\
    /*(defined(__MINGW32__)&&__USE_MINGW_ANSI_STDIO==0)||(defined(_MSC_VER)&&_MSC_VER<1800)*/
    #defineMBEDTLS_PRINTF_SIZET"zu"
    #defineMBEDTLS_PRINTF_LONGLONG"lld"
    #endif\
    /*(defined(__MINGW32__)&&__USE_MINGW_ANSI_STDIO==0)||(defined(_MSC_VER)&&_MSC_VER<1800)*/

    #ifdef__cplusplus
    extern"C"{
    #endif

    voidmbedtls_debug_set_threshold(intthreshold);

    voidmbedtls_debug_print_msg(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,
    constchar*format,...)MBEDTLS_PRINTF_ATTRIBUTE(5,6);

    voidmbedtls_debug_print_ret(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,
    constchar*text,intret);

    voidmbedtls_debug_print_buf(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,constchar*text,
    constunsignedchar*buf,size_tlen);

    #ifdefined(MBEDTLS_BIGNUM_C)
    voidmbedtls_debug_print_mpi(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,
    constchar*text,constmbedtls_mpi*X);
    #endif

    #ifdefined(MBEDTLS_ECP_C)
    voidmbedtls_debug_print_ecp(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,
    constchar*text,constmbedtls_ecp_point*X);
    #endif

    #ifdefined(MBEDTLS_X509_CRT_PARSE_C)
    voidmbedtls_debug_print_crt(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,
    constchar*text,constmbedtls_x509_crt*crt);
    #endif

    #ifdefined(MBEDTLS_ECDH_C)
    typedefenum{
    MBEDTLS_DEBUG_ECDH_Q,
    MBEDTLS_DEBUG_ECDH_QP,
    MBEDTLS_DEBUG_ECDH_Z,
    }mbedtls_debug_ecdh_attr;

    voidmbedtls_debug_printf_ecdh(constmbedtls_ssl_context*ssl,intlevel,
    constchar*file,intline,
    constmbedtls_ecdh_context*ecdh,
    mbedtls_debug_ecdh_attrattr);
    #endif

    #ifdef__cplusplus
    }
    #endif

    #endif/*debug.h*/