STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入

Posted projectsugar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入相关的知识,希望对你有一定的参考价值。

|版权声明:本文为博主原创文章,未经博主允许不得转载。

 

最近尝试在STM32F4下用MBEDTLS实现了公钥导入(我使用的是ECC加密),整个过程使用起来比较简单。

首先,STM32F4系列CUBE里已经集成了MBEDTLS, MBEDTLS是ARM公司的开源加密库,遵守APACHE协议,大家可以随便使用MBEDTLS到开源和闭源项目上。

其次,除了ECC,MBEDTLS还支持AES系列对称加密,支持基于AES的NONCE生成,支持SHA系列摘要算法等,可以应用在各种加密场景。

1. 在CUBE里勾选MBEDTLS,

技术分享图片

2. 在CUBE的MBEDTLS配置里勾选下面的选项,如果不确定该勾选什么,可以使用默认设置,全部勾选。

这里有个坑是MBEDTLS_NET_C选项是只支持POXIS标准的,如果同时使用了LWIP的话,记得把MBEDTLS_NET_C DISABLE掉。

技术分享图片

3. 生成工程。完成后在工程里的Application/User/mbedtls.c里增加头文件包含#include "mbedtls/pk.h"

4. 找到MX_MBEDTLS_Init方法。(找不到的话直接全局搜索方法名。)

5. 创建并初始化上下文。

mbedtls_pk_context ctx_pk ;

mbedtls_pk_init(&ctx_pk) ;

6. 调用mbedtls_pk_parse_public_key对公钥进行导入,

if(0 != mbedtls_pk_parse_public_key(&ctx_pk, (uint8_t* )publickey, strlen(publickey)+1))
{
 printf("Can‘t import public key\\r\\n") ;
}

注意,publickey是pem格式的公钥,公钥内容以-----BEGIN PUBLIC KEY-----为前缀,以-----END PUBLIC KEY-----为后缀。前缀后缀和公钥内容之间必须按顺序包含一个空格‘ ‘,一个‘\\r‘,一个‘\\n‘,共3个分隔符。

 

到这里pem格式的公钥已经导入了,你可以开始验证非对称加密的消息了。

 




以上是关于STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入的主要内容,如果未能解决你的问题,请参考以下文章

探讨 STM32F4 系列单片机 ROM 大扇区怎么存储用户数据问题

stm32系列单片机都有哪些外设接口模块

stm32系列单片机都有哪些外设接口模块

MCUSTM321.cube MX库使用笔记

ST的STM32系列单片机

stm32f4单片机怎么读取ps2键盘的按键信息