嵌入式设備中支持国密算法的方法——移植Miracl庫的步驟說明
实现sm2的功能需要用到MIRACL库中的36个源文件,例如mraes.實现sm2的功能需要用到MIRACL庫中的36个源文件,例如mraes.然后需要新建一個sm2.c文件、sm2.h,用于实现sm2功能函数;一個在linux環境下,需要先制作makefile文件,针对特定的编译器环境实现sm2的功能需要用到MIRACL库中的36个源文件,例如mraes.然后需要新建一個sm2.c文件、sm2.h,用于实现sm2功能函数;一个在linux环境下,需要先制作makefile文件,针对特定的编译器环境
上一篇文章中我們为大家介绍了嵌入式設備中支持国密算法的幾种方法。本篇我们详細的介绍一下第一種方法:移植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值功能。
下面给出生成密鑰对的示例,具体的函數定義可以联系凌科芯安獲取。
现在給出實現的函数接口功能,
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编译工具為例器编译文件,其编譯指令如下图
之后運行指令腳本,./armlinux即可得到动态庫文件。
在windows环境下,直接在VS项目中选择編譯成動态库即可,配置生成动态库如下圖
第四步 測試功能
最后,需要驗证一下SM2.dll鎖提供的SM2接口函数运算结果的正确性。
在工程中添加动态庫的支持,即可调用功能并测试了。
下图在为輸出显示測试結果,测試通过。
樓主讲的太好了,国密算法移植过程和RSA一样吗?
页:
[1]