Mbed TLS is now part of TrustedFirmware.org.

Compiling mbeddtls on K64F


Apr 12, 2017 08:56
Jordi Blasi

I have compiled mbedtls for a K64F board with ARM Mbed OS. I am trying to run the examples that come in the dtls_client.c and dtls_server.c. Initially, on compiling the client I got this error:

"The NET and TIMING modules are not available for mbed OS - please use the network and timing functions provided by mbed OS" I found that this was related to having this two lines active in the config.h file.

    #define MBEDTLS_NET_C
    #define MBEDTLS_TIMING_C

I commented them and the check that requires the values:

#if !defined(MBEDTLS_SSL_CLI_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) ||    \
    !defined(MBEDTLS_NET_C)  || !defined(MBEDTLS_TIMING_C) ||             \
    !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_CTR_DRBG_C) ||        \
    !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_RSA_C) ||      \
    !defined(MBEDTLS_CERTS_C) || !defined(MBEDTLS_PEM_PARSE_C)
int main( void )
{
    mbedtls_printf( "MBEDTLS_SSL_CLI_C and/or MBEDTLS_SSL_PROTO_DTLS and/or "
            "MBEDTLS_NET_C and/or MBEDTLS_TIMING_C and/or "
            "MBEDTLS_ENTROPY_C and/or MBEDTLS_CTR_DRBG_C and/or "
            "MBEDTLS_X509_CRT_PARSE_C and/or MBEDTLS_RSA_C and/or "
            "MBEDTLS_CERTS_C and/or MBEDTLS_PEM_PARSE_C not defined.\n" );
    return( 0 );
}

Now I see that the compilation error I get is related to the redefinition of certain functions:

main.cpp:(.text.startup.main+0x18): undefined reference to `mbedtls_net_init'
main.cpp:(.text.startup.main+0xce): undefined reference to `mbedtls_net_connect'
main.cpp:(.text.startup.main+0x2fc): undefined reference to `mbedtls_net_recv_timeout'
main.cpp:(.text.startup.main+0x300): undefined reference to `mbedtls_net_send'
main.cpp:(.text.startup.main+0x304): undefined reference to `mbedtls_net_recv'
main.cpp:(.text.startup.main+0x308): undefined reference to `mbedtls_timing_get_delay'
main.cpp:(.text.startup.main+0x30c): undefined reference to `mbedtls_timing_set_delay'
main.cpp:(.text.startup.main+0x35c): undefined reference to `mbedtls_net_free'

How can I define this calls to make it work?

Can mbedtls be used on this board?

 
Apr 12, 2017 10:45
Ron Eldor

Hi Jordi,
dtls_client.c and dtls_server.c are sample applications that arrive as part of the mbed TLS git repository.
Note that mbed-OS arrives with its own mbed TLS feature directory. To test TLS feature, you can use the TLS client app and modify it to fit DTLS protocol, and also for server. You can also look at this example for reference how to configure your dtls client and server.
I hope this helps
mbed TLS Team member
Ron