赞
踩
原文链接:http://blog.csdn.net/ppdyhappy/article/details/64127332
mbedtls下载:
https://github.com/ARMmbed/mbedtls
移植源文件:
1)拿出解压后的mbedtls-development目录下的include文件和library文件
2)拿出mbedtls-development\programs\ssl下的demo,如ssl_client1.c(客户端代码)
程序处理:
1)随机数生成器
若芯片不支持随机数发生器可在config.h中打开宏 MBEDTLS_TEST_NULL_ENTROPY 并屏蔽宏 MBEDTLS_HAVEGE_C ,这样并不安全
若芯片支持随机数发生器则在config.h中关闭宏 MBEDTLS_TEST_NULL_ENTROPY 并打开宏 MBEDTLS_HAVEGE_C
问题可在 mbedtls论坛上查询
2)程序裁剪:
为节省ROM和RAM,在config.h中注释如下宏定义
MBEDTLS_SELF_TEST //自测
MBEDTLS_VERSION_FEATURES //disable run-time checking and save ROM space
其他根据宏定义的说明适当打开或屏蔽,如:MBEDTLS_BLOWFISH_C//实际不适用这个算法,可注释以节省空间
3)time接口:
在platform_time.h中
重定向 mbedtls_time宏,根据当前平台重新实现time接口,如这里实现如下
platform_time.h中:
#define mbedtls_time new_time
new_time 接口实现如下,这里使用RTC寄存器
证书部分:
证书制作参照 openssl+tomcat7使用简明笔记(http://blog.csdn.net/ppdyhappy/article/details/56019429)
if( ( ret = mbedtls_ssl_set_hostname( &ssl, "host_name") ) != 0 )
{
mbedtls_printf( " failed\n ! mbedtls_ssl_set_hostname returned %d\r\n", ret );
goto exit;
}
这里host_name对应服务器证书中的common name
使用openssl公钥最短为512bit,如此可降低芯片处理难度,对应要在x509_crt.c中修改公钥长度,修改部分如下:
这边实测mbedtls大概占用RAM 16kb左右
mbedtls论坛:https://tls.mbed.org/discussions
植接口及测试部分代码:
ssl_interface.h
//*******************************************************************//
ssl_interface.c //rt-thread 操作系统,代码还未完善
//*******************************************************************//
测试代码
//*******************************************************************//
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。