《密码技术与物联网安全:mbedtls开发实战》 —2.3.2 使用 CMake 安装 mbedtls

举报
华章计算机 发表于 2019/12/16 13:59:51 2019/12/16
【摘要】 本节书摘来自华章计算机《密码技术与物联网安全:mbedtls开发实战》 一书中第2章,第2.3.2节,作者是徐 凯 崔红鹏 。

2.3.2 使用 CMake 安装 mbedtls

完成CMake工具安装之后可从GitHub获取mbedtls的最新源代码。与其他优秀的开源软件一样,mbedtls同样托管于GitHub—https://github.com/ARMmbed/mbedtls.git。截至目前,mbedtls已经推出多个版本,本书以mbedtls-2.12.0版本为例说明mbedtls的安装过程。

1.获取 mbedtls 源代码

本节中mbedtls的源代码将被克隆至{用户目录}/repo/mbedtls文件夹。

# 新建repo文件夹

$ mkdir -p ~/repo

# 克隆mbedtls源代码

$ git clone https://github.com/ARMmbed/mbedtls.git

2.切换到某个发布分支

由于mbedtls仍处于持续更新阶段,已知Bug被修复,新的特性与功能被不断添加到master分支中,建议在实际使用时以某个发布版本为主。本节以mbedtls-2.12.0分支为例,通过checkout命令切换至mbedtls-2.12.0分支。

$ git checkout -b mbedtls-2.12.0 origin/mbedtls-2.12.0

通过checkout命令可检验出本地或远程分支,以上指令将检验出远程仓库名为mbedtls-2.12.0分支,并在本地也创建一个同名分支mbedtls-2.12.0。

3.重要文件与目录说明

mbedtls源代码中包含多个重要文件或目录,其中README.md文档详细描述了mbedtls的安装步骤,programs目录包含了多组示例代码和应用工具。mbedtls源代码中各文件或目录的主要功能如表2-1所示。

表2-1 mbedtls重要文件与目录

image.png

 

4.编译并安装mbedtls

完成分支切换之后,再通过cmake命令生成makefile脚本,并通过make install命令安装mbedlts。

# 进入mbedlts源代码目录

$ cd $HOME/repo/mbedtls

# 生成makefile文件,启用生成动态链接库选项

$ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .

# 编译并安装

$ make

$ sudo make install

$ sudo ldconfig

1)-DUSE_SHARED_MBEDTLS_LIBRARY=On参数用于配置动态链接库选项,把USE_SHARED_MBEDTLS_LIBRARY设置为On时,最终将编译获得mbedtls、mbedx509 和mbedcrypto扩展库。默认情况下这些扩展库将被安装至/usr/local/lib目录中。

2)使用cmake命令时,请不要忘记cmake指令最后的“.”,该“.”用于指定CMakeLists.txt的位置。观察mbedtls源代码目录可以发现,CMakeLists.txt文件位于mbedtls源代码根目录下。

3)执行make install命令之后,多个mbedtls工具将会被安装到/usr/local/bin/目录中,这些工具包括:hello、dh_client、dh_server、rsa_sign和rsa_verify等。

5.设置环境变量

在用户目录.bashrc文件末尾增加MBEDTLS_BASE参数,修改完成后在控制台执行source $HOME/.bashrc,该指令可使新增的环境变量立即生效。

$ echo "export MBEDTLS_BASE=<mbedtls 源代码仓库安装路径>" >> $HOME/.bashrc

$ source $HOME/.bashrc

6.必要的验证工作

安装完成之后可使用某个mbedtls工具验证其是否安装成功。在控制台中输入hello将获得以下输出。

$ hello

  MD5('Hello, world!') = 6cd3556deb0da54bca060b4c39479839

mbedtls自带的hello工具只是一个验证性工具,该工具把字符串“Hello, world!”输入到MD5算法中,并把计算结果输出到控制台中。MD5算法是一种常见的单向散列算法,除了MD5算法之外,mbedtls还支持SHA系列单向散列算法。hello工具的具体实现可参考{mbedtls代码仓库}\programs\hash目录中的hello.c。由于篇幅限制,代码清单2-1中的hello.c内容略有删减。

代码清单2-1 hello.c

image.png

image.png

hello工具使用CMake工具构建。在hello.c同级目录中包含一个CMakeLists.txt文件,CMakeLists.txt文件的主要内容如下:

add_executable(hello hello.c)

target_link_libraries(hello mbedtls)

在CMake构建规则中,add_executable函数用于指定可执行文件名称,并添加相应的源文件,此处可执行文件名为hello,相应的源文件为hello.c。另外,target_link_libraries函数用于添加相应的库文件,此处库文件为libmbedtls.so。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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