LiteOS组件尝鲜-玩转OpenSS

举报
Lionlace 发表于 2021/09/15 10:47:27 2021/09/15
【摘要】 LiteOS组件尝鲜系列又又又更新啦!本期小编为大家介绍LiteOS开源版本OpenSSL的移植与适配,供开发测试相关人员参考及学习交流。

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,其目的是测试该组件功能和提供一个该组件的使用示例。OpenSSLdemohttps://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-


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。