Ubuntu 下编译 mbedtls 并使用

本文介绍 Ubuntu22.04 环境下 mbedtls 库的安装与使用方法。

1. mbedtls 源码下载
~/ws$ git clone https://github.com/Mbed-TLS/mbedtls.git #代码克隆成功后,当前目录会生成一个 mbedtls 目录
~/ws$ cd mbedtls #进入源码目录
~/ws/mbedtls$ git submodule update --init #子模块初始化。可能会 fatal,多执行几次
~/ws/mbedtls$ cd tf-psa-crypto #进入 tf-psa-crypto 目录
~/ws/mbedtls/tf-psa-crypto$ git submodule update --init # 可能会 fatal,多执行几次
2. 编译源码
~/ws/mbedtls$ mkdir build && cd build #创建并进入build目录
~/ws/mbedtls/build$ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .. #运行 cmake 设置编译为动态库宏(这一步会生成 Makefile)
~/ws/mbedtls/build$ make #编译。编译过程会找不到 python 模块,而报错。缺失那个就用 pip 装那个
~/ws/mbedtls/build$ sudo make install #安装动态库和头文件
~/ws/mbedtls/build$ sudo ldconfig # 之后可能会链接不到动态库,所以执行该命令
3. 测试
3.1 代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "mbedtls/base64.h"
#include "mbedtls/private/bignum.h"
#include "mbedtls/platform.h"

int main(int argc, char* argv[])
{
    printf("hello mebedtls\n");

    unsigned char date[64] = "hello world,i come from china";
    unsigned char enbasestring[64];
    unsigned char debasestring[64];
    size_t len;
    printf("date:%s\n",date);

    mbedtls_base64_encode(enbasestring, 64, &len, date,strlen(date));
    printf("base64:%s,len:%d\n", enbasestring, (int)len);

    mbedtls_base64_decode(debasestring, 64, &len,enbasestring, strlen(enbasestring));
    printf("encode string:%s,len:%d\n", debasestring, (int)len);

    /// 大数
    mbedtls_mpi A;

    mbedtls_mpi_init(&A);
    mbedtls_mpi_free(&A);

    return 0;
}
3.2 编译运行
yao@vela:~/mbedtls_test$ gcc test.c -o mbedtls_test -Wall -lmbedcrypto -ltfpsacrypto #编译
yao@vela:~/mbedtls_test$ ./mbedtls_test #运行
hello mebedtls
date:hello world,i come from china
base64:aGVsbG8gd29ybGQsaSBjb21lIGZyb20gY2hpbmE=,len:40
encode string:hello world,i come from china,len:29
4. 参考文档

https://blog.csdn.net/m0_37567738/article/details/146234572?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-146234572-blog-127843812.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-146234572-blog-127843812.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=6

https://mbed-tls.readthedocs.io/en/latest/kb/compiling-and-building/compiling-mbedtls-in-mingw/

https://cloud.tencent.com.cn/developer/article/1999433

https://blog.csdn.net/qq_38240926/article/details/100709774

https://blog.csdn.net/JackSparrow_sjl/article/details/118187756?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-3-118187756-blog-129604818.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-3-118187756-blog-129604818.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=6

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值