日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 lwip 如何发送不出_mbedtls | 移植mbedtls库到STM32裸机的两种方法

發布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 lwip 如何发送不出_mbedtls | 移植mbedtls库到STM32裸机的两种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、mbedtls 開源庫

1. mbedtls是什么

Mbed TLS是一個開源、可移植、易于使用、代碼可讀性高的SSL庫??蓪崿F加密原語,X.509證書操作以及SSL / TLS和 DTLS 協議,它的代碼占用空間小,非常適合用于嵌入式系統。

mbedtls遵循 Apache 2.0 開源許可協議,目前由 TrustedFirmware 維護(Linaro主持的一個治理開放社區項目),在Github上已收獲 2.6k star,目前Github上發布的最新版本為 2.24.0 版本,開源倉庫地址為:

https://github.com/ARMmbed/mbedtls

2. mbedtls有何用

mbedtls庫提供了 TLS / DTLS協議的實現,有了mbedtls庫之后意味著:

  • TCP + TLS = TCP(S)
  • MQTT + TLS = MQTT(S)
  • HTTP + TLS = HTTP(S)
  • COAP + DTLS = COAP(S)

目前的物聯網操作系統+各種通信模組方式可以很好的實現TCP/UDP通信,進而提供一些HTTP、MQTT、COAP之類的上層協議,這些協議最大的特點是“明文傳輸”,一旦有中間人想要截獲篡改數據,非常容易。

要想物聯網設備和服務器之間具備高安全性,mbedtls庫不可或缺。

3. 下載mbedtls庫

在github release頁面下載:

4. STM32移植方法

移植mbedtls開源庫到stm32有兩種方法:

① 針對STM32CubeMX中Middleware下面已經提供mbedtks庫的情況:直接使用cubeMX配置即可;

② 針對STM32CubeMX中沒有提供mbedtls庫的情況:手動移植。

接下來分別演示如何移植。

二、使用STM32CubeMX移植

此小節中我使用的是正點原子STM32F407探索者開發板,首先準備一份可以正常使用printf打印到串口的工程。

1. 開啟RNG外設支持(可選)

一些STM32系列中有RNG外設(隨機數發生器),如果有的話就開啟,沒有就不用開啟,接著后面的步驟就好。

2. RTC支持和網絡支持(可選)

網絡支持需要提供一套TCP/IP協議棧,比如基于AT模組的SAL層、lwip協議棧等,這里我們不使用網絡連接功能,后續在帶操作系統移植時講解。

RTC支持是為了校驗CA證書有效期提供時間支持,這里我們不使用時間功能,后續在帶操作系統移植時講解。

3. 開啟mbedtls庫

在Middleware下開啟mbedtls庫支持:

4. 配置mbedtls

mebdtls庫提供的算法非常多,全都通過宏定義來配置。

① 特性配置:保持默認即可。② 使用功能模塊配置(重點):

5. 編寫測試代碼

生成工程,在middleware文件夾下即可看到mbedtls庫:打開工程,在main.c中包含頭文件:

/*?Private?includes?----------------------------------------------------------*/
/*?USER?CODE?BEGIN?Includes?*/
#include?
#include?"mbedtls/sha1.h"??//使用sha1相關加密函數
#include?"string.h"????//使用到了strlen函數
/*?USER?CODE?END?Includes?*/

然后在main函數中編寫如下測試代碼:

/*?USER?CODE?BEGIN?2?*/
printf("mbedtls?port?on?ATK-STM32F407?board?by?mculover666\r\n");

/*?sha1?test?*/
char?*source_cxt?=?"mculover666";
char?encrypt_cxt[64];

printf("source?context?is:%s\r\n",?source_cxt);

mbedtls_sha1_context?sha1_ctx;
mbedtls_sha1_init(&sha1_ctx);
mbedtls_sha1_starts(&sha1_ctx);
mbedtls_sha1_update(&sha1_ctx,?(unsigned?char?*)source_cxt,?strlen(source_cxt));
mbedtls_sha1_finish(&sha1_ctx,?(unsigned?char?*)encrypt_cxt);
mbedtls_sha1_free(&sha1_ctx);

int?i?=?0;
printf("sha1?encrypt?context?is:[");
while?(encrypt_cxt[i])?{
??printf("%02x",?encrypt_cxt[i]);
??i++;
}
printf("]\r\n");

/*?USER?CODE?END?2?*/

特別注意:Keil-MDK需要改為ANSI 編碼,否則因為字符串編碼問題,會導致加密結果出錯。

編譯,下載到開發板中,在串口助手中查看加密結果:

6. 驗證加密結果

可以使用一些在線工具計算出結果進行對比,如圖,加密無誤:

https://1024tools.com/hash

三、手動移植mbedtls庫

這里我以STM32L431RCT6小熊派開發板為例,首先準備一份可以正常使用printf打印的裸機工程,其中沒有開啟硬件RNG外設。

1. 復制mbedtls相關文件

① 從mbedtls庫中復制mbedtls源碼文件到工程中:② 再復制mbedtls示例配置文件:

2. 添加mbedtls文件到MDK中

① 添加 mbedtls\library 文件夾中所有的c文件:再將配置文件也添加到工程目錄,方便修改:

② 添加頭文件路徑:

③ 在宏定義中指定mbedconfig配置文件:

MBEDTLS_CONFIG_FILE=

3. 修改mbedtls配置

編輯 config-mini-tls1_1.h 文件。

① 配置mbedtls系統支持:② 配置功能模塊③ 屏蔽功能測試,添加一個宏定義,表示沒有平臺支持:

4. 編寫測試代碼

打開工程,在main.c中包含頭文件:

/*?Private?includes?----------------------------------------------------------*/
/*?USER?CODE?BEGIN?Includes?*/
#include?
#include?"mbedtls/sha1.h"
#include?"string.h"
/*?USER?CODE?END?Includes?*/

然后在main函數中編寫如下測試代碼:

/*?USER?CODE?BEGIN?2?*/
printf("mbedtls?port?on?BearPi-STM32L431RC?board?by?mculover666\r\n");

/*?sha1?test?*/
char?*source_cxt?=?"mculover666";
char?encrypt_cxt[64];

printf("source?context?is:%s\r\n",?source_cxt);

mbedtls_sha1_context?sha1_ctx;
mbedtls_sha1_init(&sha1_ctx);
mbedtls_sha1_starts(&sha1_ctx);
mbedtls_sha1_update(&sha1_ctx,?(unsigned?char?*)source_cxt,?strlen(source_cxt));
mbedtls_sha1_finish(&sha1_ctx,?(unsigned?char?*)encrypt_cxt);
mbedtls_sha1_free(&sha1_ctx);

int?i?=?0;
printf("sha1?encrypt?context?is:[");
while?(encrypt_cxt[i])?{
printf("%02x",?encrypt_cxt[i]);
i++;
}
printf("]\r\n");

/*?USER?CODE?END?2?*/

特別注意:Keil-MDK需要改為ANSI 編碼,否則因為字符串編碼問題,會導致加密結果出錯。

編譯,下載到開發板中,在串口助手中查看加密結果:

5. 測試加密結果

同第二節第 6 小節。

四、移植總結

mbedtls可以說是一個牛逼的開源庫,其功能可以靈活的通過宏定義來選擇,整個移植過程比較簡單。

而且mbedtls庫對于我們的配置文件會做檢查,一般在配置文件的最后一句:

#include?"mbedtls/check_config.h"

如果對應某些功能我們開啟了,但是沒有開啟它的依賴功能,編譯器會直接報錯,根據報錯修改對應定義即可。

總之,這么好的東西,不玩一下可是睡不著的~

接收精彩文章及資源推送,請訂閱我的微信公眾號:『mculover666』。

總結

以上是生活随笔為你收集整理的stm32 lwip 如何发送不出_mbedtls | 移植mbedtls库到STM32裸机的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品熟女视频 | 99热热热热 | jizz18欧美18 | 91亚洲一区二区三区 | 欧美成人免费观看视频 | 亚洲精品国产美女 | 在线看片网址 | 五级毛片 | 久久网免费视频 | 欧美91精品久久久久国产性生爱 | 第一页国产| 99视频精品免费 | 国产自产一区二区 | 看全色黄大色黄大片女一次牛 | 日本在线第一页 | 天堂网8 | 日本三级生活片 | 国产午夜精品理论片 | 亚洲欧美日韩中文在线 | 91新网站 | 四虎永久免费 | 在线观看www视频 | 天天躁夜夜躁狠狠躁 | 熟睡人妻被讨厌的公侵犯 | 欧美级毛片 | free性娇小hd第一次 | 黄色在线免费观看 | 欧美黄色a级片 | 欧美一区二区三区久久 | 久久亚洲精华国产精华液 | 激情五月婷婷综合网 | 97黄色片| 领导揉我胸亲奶揉下面 | 狠狠干人人干 | 国产视频综合 | 久久精品这里有 | 少妇又色又爽又黄的视频 | 性xxxfllreexxx少妇 | 狠狠操女人 | 懂色视频在线观看 | 蜜乳av懂色av粉嫩av | 一级片成人 | 欧美极品在线观看 | 黑人极品ⅴideos精品欧美棵 | a级黄色片网站 | 国模吧无码一区二区三区 | av中文资源 | a激情| 日本十八禁视频无遮挡 | av黄色影院| 美女高潮视频在线观看 | 一区二区伦理片 | 人人干人人草 | 日韩精品在线免费看 | 亚洲a网站| 国产白浆一区二区 | 日日舔夜夜操 | 悟空影视大全免费高清观看在线 | tube极品少妇videos | 国产主播99| 台湾佬综合网 | 久久久全国免费视频 | 精品免费囯产一区二区三区 | 国产3p在线播放 | 男女啪啪免费网站 | 日韩一区二区三区视频在线 | 欧美三级午夜理伦三级 | 国产日韩精品久久 | 色性av| 美女视频黄色 | 国产精品中文久久久久久 | 真实乱视频国产免费观看 | 成人快手免费看片 | 国产又粗又猛 | 午夜老司机免费视频 | 九九热中文字幕 | 亚洲一区日韩精品 | 日日夜夜综合网 | 五月婷婷综合久久 | 电影91久久久 | 法国空姐电影在线 | 香蕉视频国产 | 日韩在线一区二区 | 天天干视频| 天降女子| 女教师痴汉调教hd中字 | 日本久久久久久久久久久 | 91亚色在线观看 | 伊人五月天| 狠狠干干 | 黄色一级片在线 | 成人黄色片免费 | 67194成人 | 亚洲一区电影网 | 久久久久免费观看 | 亚洲片在线观看 | 粉嫩av在线 | 日韩和一区二区 | 国产精品久久久久久久久久 |