在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3159|回复: 24

[原创] 嵌入式设备中支持国密算法的方法——移植Miracl库的步骤说明

[复制链接]
发表于 2019-6-12 14:53:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
上一篇文章中我们为大家介绍了嵌入式设备中支持国密算法的几种方法。本篇我们详细的介绍一下第一种方法:移植Miracl库的具体操作步骤。
第一步 获取源码
MIRACL密码库是开源软件,可以直接到官网下载,也可在csdn等论坛中获取。
第二步 利用MIRACL库函数实现SM2算法
    实现sm2的功能需要用到MIRACL库中的36个源文件,例如mraes.cmrec2.cmrarth0.cmrcore.cmrshs.cmezzn2.cmrxgcd.cmrgcm.cmrio1.c等。
    然后需要新建一个sm2.c文件、sm2.h,用于实现sm2功能函数;一个sm3.c文件、一个sm3.h文件,用于实现sm3功能函数(之所以要增加sm3的功能是因为sm2算法中需要sm3计算hash值功能。
下面给出生成密钥对的示例,具体的函数定义可以联系凌科芯安获取。
图片1.jpg
图片2.jpg
现在给出实现的函数接口功能,
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编译工具为例器编译文件,其编译指令如下图
图片3.jpg

图片4.jpg
之后运行指令脚本,./armlinux即可得到动态库文件。
    windows环境下,直接在VS项目中选择编译成动态库即可,配置生成动态库如下图
图片5.jpg
第四步 测试功能
最后,需要验证一下SM2.dll锁提供的SM2接口函数运算结果的正确性。
    在工程中添加动态库的支持,即可调用功能并测试了。
    下图在为输出显示测试结果,测试通过。

图片6.jpg


发表于 2019-6-13 13:49:34 | 显示全部楼层
楼主讲的太好了,国密算法移植过程和RSA一样吗?
头像被屏蔽
发表于 2019-6-13 17:51:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-6-13 18:16:46 | 显示全部楼层
确实是这样,而且给出了使用不同软件库的两种方法
发表于 2019-6-13 20:12:28 | 显示全部楼层
国密算法都支持这个方法移植吗?
 楼主| 发表于 2019-6-13 21:51:42 来自手机 | 显示全部楼层
都支持,但不包含SM1,如文中所说的,SM1是硬件实现的。
发表于 2019-6-14 09:40:16 | 显示全部楼层
国密算法目前还算比较小众,不被大众所熟知,希望楼主多分享些国密算法的文章
头像被屏蔽
发表于 2019-6-14 13:08:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
发表于 2019-6-14 21:36:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-6-15 16:44:08 | 显示全部楼层
文章中提到的凌科芯安,是嵌入式设备国密算法的权威吗?很想了解一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 10:22 , Processed in 0.038305 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表