|版權聲明:本文為博主原創文章,未經博主允許不得轉載。 最近嘗試在STM32F4下用MBEDTLS實現了公鑰導入(我使用的是ECC加密),整個過程使用起來比較簡單。 首先,STM32F4系列CUBE里已經集成了MBEDTLS, MBEDTLS是ARM公司的開源加密庫,遵守APACHE協議,大家可以隨 ...
|版權聲明:本文為博主原創文章,未經博主允許不得轉載。
最近嘗試在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格式的公鑰已經導入了,你可以開始驗證非對稱加密的消息了。