當前所在位置:首頁 > 關于我們 > 資訊中心

嵌入式設備中支持國密算法的方法——移植Openssl庫的步驟說明

發布時間:2019-06-14

       本篇文章是介紹國密算法在嵌入式設備中應用方法系列文章的第三篇,介紹移植openssl庫到嵌入式設備中的具體方法,當然最終的目的還是使我們的設備能支持國密算法。同上一篇文章中介紹的miracl密碼庫相比,openssl庫的應用更加廣泛,資料支持度更好,但是代碼體量要大于miracl庫。需要再次說明的是,同miracl庫一樣,openssl的庫也并不能直接提供國密算法的接口,我們是利用庫中相應的API接口(如橢圓曲線等)來構建自己的國密算法,下面我們具體介紹移植的步驟。

第一步  獲取庫

       作為應用廣泛的開源密碼庫,可以輕松獲取源碼,https://www.openssl.org/source/ ,若是對openssl庫的使用不太熟悉,可以借助使用手冊來了解用法:

第二步  利用openssl構建SM算法庫
        我們構建一個新的工程用以實現國密算法,由于linux下通過makefile編譯項目的方式不太直觀,我們使用windows環境下VSstudio編譯環境來演示。
        首先將openssl庫的源碼添加到工程文件夾的路徑下,其次要在代碼中增加文件包含,如下圖:

       編譯正確之后,開始著手構建SM算法的源碼了,這一部分的代碼是基于國密算法的原理,利用openssl庫的接口構建的,這需要開發者了解國密算法原理。限于篇幅,本例中僅截取了作者實現的API,如下圖:

       比較重要的是,開發者需要手動完成整個編譯過程,這需要清楚openssl代碼庫本身的文件依賴關系,這部分內容作者不做更多介紹。
第三步  將生成的庫添加到個人的設備代碼中
       在上一步中,作者成功完成了國密SM2(對稱算法)的動態庫制作,如下圖:

       為了便于介紹,作者整體的庫制作過程和測試過程都是在windows環境下完成的,此處生成的.dll動態庫也僅能在windows pc下運行。若是開發者在linux環境下完成上述操作,則應該生成.so為后綴的動態庫文件,才能成功的添加到嵌入式設備中運行。
       這一步代碼的實現要根據各自嵌入式硬件設備的特點來實現,在這里不做過多介紹。

上一篇:對NVM區的合理使用 下一篇:凌科芯安 新年祝福
天津时时彩5星综合走势图