LiteOS组件尝鲜-玩转OpenSS
LiteOS组件尝鲜系列又又又更新啦!本期小编为大家介绍LiteOS开源版本OpenSSL的移植与适配,供开发测试相关人员参考及学习交流。
基本介绍
OpenSSL是一个开放源代码的安全套接字层密码库,是TLS/SSL的一种开源实现。SSL:Secure Sockets Layer 即安全套接层协议,该协议建立在可靠的传输协议TCP上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
OpenSSL可以实现安全套接字层(SSL v2/v3)和传输层安全性(TLS v1)的网络协议,以及它们需要的相关加密标准。OpenSSL软件包主要由以下三个部分组成:SSL协议库libssl、应用程序命令工具以及密码算法库libcrypto。
移植过程
进行组件移植前,请先阅读《LiteOS组件开发指南》。
• 源码获取
下载OpenSSL_1_1_0e版本源码到components/security/openssl目录下,下载地址:https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_0e.zip
• 编写Makefile
在components/security/openssl文件夹下增加Makefile文件,增加对openssl组件的编译。请参阅https://gitee.com/LiteOS/LiteOS/blob/master/components/security/openssl/Makefile
• 增加编译选项
在components/security/openssl文件夹下新增Kconfig文件,增加openssl的编译选项:
config LOSCFG_COMPONENTS_OPENSSL # 配置项
bool "Enable Openssl" # 显示在menuconfig中的配置项名
default n
select LOSCFG_COMPONENTS_SECURITY #依赖关系
help
Answer y to enable openssl.
• 适配源码
OpenSSL的源码无法直接运行在LiteOS上,因此需要修改源码进行适配。详细的openssl库适配内容请查阅https://gitee.com/LiteOS/LiteOS_Components/blob/master/components/security/openssl/origin.patch
• 导出对外接口
在components/security/openssl文件夹下增加openssl.mk文件 ,导出openssl组件的对外接口:
OPENSSL_VERSION = OpenSSL_1_1_0e
COMPONENTS_OPENSSL_INCLUDE := \
-I$(LITEOSTOPDIR)/components/security/openssl/$(OPENSSL_VERSION)/include
• 编译测试
移植完成后,执行make clean;make -j进行编译,编译成功,结果如下:
...
make[3]: 进入目录“/home/Huawei/LiteOS/components/security/openssl”
make[3]: 离开目录“/home/Huawei/LiteOS/components/security/openssl”
...
--start-group -lgcc -lcortex-m4 -lsupc++ -lstdc++ -lcortex-m4 -lbsp -lCloud_STM32F429IGTx_FIRE -lbase -ltickless -ltickless -llowpower -lcppsupport -linit -lsec -lc -lposix -lm -lz -linterrupt -ltimer -luart -losdepends -lcmsis -lshell -lopenssl -lCloud_STM32F429IGTx_FIRE --end-group
arm-none-eabi-ld: warning: /home/Downloads/gcc-arm-none-eabi-10-2020-q4-major/lib/gcc/arm-none-eabi/10.2.1/thumb/v7e-m+fp/softfp/libgcc.a(_udivmoddi4.o) uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail
arm-none-eabi-objcopy -O binary /home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.elf /home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.bin
arm-none-eabi-objdump -t /home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.elf |sort >/home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.sym.sorted
arm-none-eabi-objdump -d /home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.elf >/home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.asm
arm-none-eabi-size /home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.elf
text data bss dec hex filename
68492 1400 6512 76404 12a74 /home/Huawei/LiteOS/out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.elf
########################################################################################################
######## LiteOS build successfully! ########
########################################################################################################
(左右滑动,查看更多)
Demo开发及功能测试
• Demo开发
移植完组件后,一般需要开发一个该组件的demo,其目的是测试该组件功能和提供一个该组件的使用示例。OpenSSL的demo见https://gitee.com/LiteOS/LiteOS/tree/master/demos/security/openssl。
• 测试
完成组件及demo的开发后,即可在具体的开发板上进行测试。下面以Ubuntu开发环境与Cloud_STM32F429IGTx_FIRE开发板为例,介绍OpenSSL Demo的测试过程。
1. 拷贝开发板的默认配置文件替换当前配置文件。
cp tools/build/config/Cloud_STM32F429IGTx_FIRE.config .config
2. 执行make menuconfig通过以下路径开启OpenSSL组件及Demo。
Components --->
Security --->
[*] Enable Openssl
Demos --->
Security Demo --->
[*] Enable Openssl Demo
3.执行make clean;make –j编译LiteOS工程,生成系统镜像文件Huawei_LiteOS.bin。
4.将镜像文件烧写到Cloud_STM32F429IGTx_FIRE开发板,连接串口,重启开发板查看串口,可以看到关于OpenSSL Demo的输出如下:
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.0.0
build data : Mar 17 2021 15:08:30
**********************************
osAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
Openssl demo task start to run.
Data:MD5 test for liteos
Encrypt:579ACA835BBAA22C7F8BBBFC8E11F239
Data:DES-CBC test for liteos
Encrypt:4964E09763C6ED6099562404F7FE580CF54F35FB6113D402
Decrypt:DES-CBC test for liteos
Openssl demo task finished.
Huawei LiteOS #
测试结果符合预期,至此OpenSSL基本功能移植成功。欢迎大家试用,如有相关问题交流,可及时留言或在gitee社区上提issue。
结语
未来我们还会持续新增更多组件、开发板、架构、特性等。
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:
https://gitee.com/LiteOS/LiteOS/issues为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。
-end-
- 点赞
- 收藏
- 关注作者
评论(0)