构建源码并安装
openEuler系统
环境
检查系统中构建工具是否已安装,并能正常使用。
名称 | 推荐版本 | 说明 |
---|---|---|
Gcc | >=7.3.0 | Linux |
Python | >=3.5 | Linux |
CMake | >=3.16 | Linux |
Sctp | 无版本限制 | Linux |
当前openEuler24.03版本系统自带Gcc和Python,CMake和Sctp需要自行安装,查看版本和安装命令如下:
|
|
源码
使用git submodule的方式下载,可以直接下载源码和依赖的Securec库
|
|
进入openHiTLS后代码目录结构如下:
|
|
- bsl:存放基础功能相关代码;
- CMakeLists.txt:构建入口文件
- configure.py:提供构建配置命令行功能;
- config、script:存放构建相关脚本;
- crypto:存放密码学算法能力相关代码;
- platform:存放其他依赖的代码;
- testcode:存放测试工程类代码。
- tls:存放安全传输相关代码;
- x509:存放x509证书功能相关代码;
源码构建调用CMake进行构建,具体方法下面介绍。
CMake
openHiTLS提供CMake构建方式,可通过configure.py进行配置,之后建议新建build目录用于存放构建过程中的产生的临时文件,进入build目录使用“cmake .. && make”的方式执行构建。configure.py的配置可以通过python3 ./configure.py –help
查询,相关参数参考:构建及安装指导 | openHiTLS文档
configure.py脚本会直接基于顶层的compile.json和feature.json配置文件修改已有配置。
CMake构建的总体执行步骤如下:
|
|
构建结果会输出在openHiTLS/build目录下。
openHiTLS依赖于libboundscheck库,在之前的准备源码阶段已经一并下载。现在进入Secure_C文件夹中编译,生成动态库libboundscheck.so并放到库文件目录下
|
|
- 回到build目录下进行make编译
|
|
构建结果会输出在openHiTLS/build目录下
安装
|
|
头文件默认安装至/usr/local/include,库文件默认安装至/usr/local/lib
测试
构建完OpenHiTLS源码并安装后,执行测试代码。测试工程依赖编译源码
测试代码目录结构
|
|
其中:
- common:公共类测试框架代码
- demo:openHiTLS功能测试demo
- framework:openHiTLS测试用例的框架代码
- output:用例测试结果及过程文件输出目录
- script:测试脚本类代码目录
- sdv:openHiTLS功能场景测试用例代码
- testdata:存放测试类数据等
功能测试执行指导
测试框架说明
使用社区开发的测试框架,提供公共的配置和方法以便社区开发者进行测试代码的编写和执行。一个测试单元由function文件(.c)和data(.data)文件组成,分别保存测试函数和测试数据。
脚本参数说明
命令 | 含义 |
---|---|
bash build_hitls.sh | 编译全量源码。 |
bash build_sdv.sh | 编译全量测试代码。 |
bash execute_sdv.sh | 执行测试用例。 |
- build_hitls.sh 脚本参数说明
脚本参数 | 执行方式 | 参数说明 |
---|---|---|
gcov | bash build_hitls.sh gcov | 开启获取覆盖率能力。 |
debug | bash build_hitls.sh debug | 开启debug调试能力。 |
asan | bash build_hitls.sh asan | 开启内存监测能力。 |
- build_sdv.sh脚本参数说明
脚本参数 | 执行方式 | 参数说明 |
---|---|---|
–help或-h | bash build_sdv.sh –help | 获取帮助信息。 |
no-crypto | bash build_sdv.sh no-crypto | 裁剪掉crypto模块用例。 |
no-bsl | bash build_sdv.sh no-bsl | 裁剪掉bsl模块用例。 |
verbose | bash build_sdv.sh verbose | 显示构建过程详细信息。 |
gcov | bash build_sdv.sh gcov | 开启获取覆盖率能力。 |
asan | bash build_sdv.sh asan | 开启内存监测能力 。 |
big-endian | bash build_sdv.sh big-endian | 大端环境编译选项。 |
run-tests | bash build_sdv.sh run-tests=xxx1xxx2xxx3 | 编译指定测试套。 |
- execute_sdv.sh脚本参数说明
脚本参数 | 执行方式 | 参数说明 |
---|---|---|
<file name> |
bash execute_sdv.sh test_suites_xxx … | 执行指定文件下的所有用例。 |
<test name> |
bash execute_sdv.sh UT_CRYPTO_xxx SDV_CRYPTO_xxx … | 执行指定用例名用例。 |
备注:脚本参数可以以组合形式传给脚本,例如:
- 默认方式构建源码:bash build_hitls.sh
- 源码构建过程中开启asan、debug及覆盖率:bash build_hitls.sh asan gcov debug
- 测试代码构建过程中开启asan、覆盖率及显示构建详情:bash build_sdv.sh asan gcov verbose
- 默认方式构建源码:bash build_hitls.sh
- 默认方式执行全量用例:bash execute_sdv.sh
- 执行指定的测试集合:bash execute_sdv.sh test_suites_xxx1 test_suites_xxx2
用例执行流程
测试工程主要依赖以下脚本:
- build_hitls.sh: 一键式构建源码脚本
- build_sdv.sh : 一键式构建测试用例脚本
- execute_sdv.sh : 一键式执行用例脚本
依次执行以下命令
|
|
|
|
|
|
测试通过
测试完成后,可进入output/log目录查看用例执行结果。
调用
在本章节中将以对称加密和TLS两个示例演示如何在您的项目代码中调用openHiTLS提供的接口。
SM4
创建 sm4_cbc.c
|
|
sm4_cbc.c 代码如下:
|
|
在同目录下创建 Makefile 文件,内容如下:
|
|
注意确定头文件路径和链接库路径正确。 编译生成可执行文件sm4cbc并运行
|
|
示例运行成功
TLS
由于TLS需要同时运行server和client两个程序,而openEuler没有图形化操作界面操作不便,现介绍用PowerShell实现打开多个终端界面。 首先在openEuler系统中查看ip
|
|
可以看到ip地址为192.168.119.131
在windows中打开PowerShell,输入以下命令,然后输入密码
|
|
连接成功
接下来开始实现tls示例。 创建tlss.c和tlsc.c,代码如下,注意修改CERT_PATH的路径:
|
|
|
|
在同目录下创建Makefile文件,内容如下:
|
|
输入make,并运行tls服务端
|
|
启动一个新的PowerShell窗口,ssh连接到openEuler系统,运行tls服务端
|
|
可以看到两个窗口都有输出,示例运行成功