熱度 9
上一篇文章中我們為大家介紹了嵌入式設備中支持國密算法的幾種方法。本篇我們詳細的介紹一下第一種方法:移植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接口函數運算結果的正確性。
在工程中添加動態庫的支持,即可調用功能并測試了。
下圖在為輸出顯示測試結果,測試通過。
tyl20100: 這個國密算法可以移植到任何一款嵌入式設備上使用嗎?如果可以的話還有什么商業價值呢?