imkey只支持imtoken吗_嵌入式设备中支持国密算法的方法——移植Miracl库的步骤说明...

本篇我们详细的介绍一下:移植Miracl库的具体操作步骤。

第一步 获取源码

MIRACL密码库是开源软件,可以直接到官网下载,也可在csdn等论坛中获取。

第二步 利用MIRACL库函数实现SM2算法

实现sm2的功能需要用到MIRACL库中的36个源文件,例如mraes.c、mrec2.c、mrarth0.c、mrcore.c、mrshs.c、mezzn2.c、mrxgcd.c、mrgcm.c、mrio1.c等。

然后需要新建一个sm2.c文件、sm2.h,用于实现sm2功能函数;一个sm3.c文件、一个sm3.h文件,用于实现sm3功能函数(之所以要增加sm3的功能是因为sm2算法中需要sm3计算hash值功能。

下面给出生成密钥对的示例,具体的函数定义可以联系凌科芯安获取。

04c04c58c1530a017448192de0f5850a.png

a745cbcd8b72ca32a86fe8b8f425aed5.png

现在给出实现的函数接口功能,

sm3_e

sm2_keygen 生成密钥对

sm2_sign 签名函数

sm2_verify 验证签名

sm2_encrypt 加密函数

sm2_decrypt 解密函数

void sm2_keyagreement_a1_3密钥协商的发起方调用此函数产生一对临时公钥(kx1, ky1)和相应的随机数

sm2_keyagreement_b1_9

密钥协商的接收方调用此函数协商出密钥kbbuf

第三步 编译动态库

在linux环境下,需要先制作makefile文件,针对特定的编译器环境,只需要修改cc等命令的定义来支持指定编译器即可。以arm-linux-gcc编译工具为例器编译文件,其编译指令如下图

5a9aa3de7e3b00a2b35d2c7fb04b2e3d.png

045f725176fc8c5398fc0a0dd8e86204.png

之后运行指令脚本,./armlinux即可得到动态库文件。

在windows环境下,直接在VS项目中选择编译成动态库即可,配置生成动态库如下图

074521f8a3b73c738c8ba6cf19a0b5d7.png

第四步 测试功能

最后,需要验证一下SM2.dll锁提供的SM2接口函数运算结果的正确性。

在工程中添加动态库的支持,即可调用功能并测试了。

下图在为输出显示测试结果,测试通过。

6db293c9694ba34e88e05994a7bc08b2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值