4.1 网络接口 mbedtls默认的网络接口mbedtls/library/net_socket.c,可以在windows下运行,特别注意,默认的socket操作都是阻塞模式;一般不适合ARM平台,关闭MBEDTLS_NET_C,结合硬件平台重新实现网络接口。主要包括以下函数: void mbedtls_net_init( mbedtls_net_context *ctx );
int mbedtls_net_connect( mbedtls_net_context *ctx, const char *host, const char *port, int proto );
int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len );
int mbedtls_net_recv_timeout( void *ctx, unsigned char *buf, size_t len, uint32_t timeout );
int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len );
void mbedtls_net_free( mbedtls_net_context *ctx );
若需要DUP版本的DTLS,还需要实现该文件下另外几个接口,具体流程参考dtls_client.c。 自定义实现的网络收发接口,需要注册mbedtls_ssl_set_bio告知底层。 mbedtls_ssl_set_bio(&ssl, &server_fd,
mbedtls_custom_send,//改写后的mbedtls_net_send,为底层提供发送接口
mbedtls_custom_recv,//为底层提供接收接口
mbedtls_custom_recv_timeout)
|