最近要在arm設(shè)備上使用國密sm2筹我、sm3算法扶平,經(jīng)了解,gmssl(openssl分支)能夠支持蔬蕊,而且最新的openssl-1.1.1預(yù)覽版也開始支持上述國密算法结澄。
此前在ubuntu上交叉編譯過openssl-1.0.2k,使用如下腳本實(shí)現(xiàn):
./config --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared
sed -i "s/ -m64//g" Makefile
make
make install
筆者所有開發(fā)環(huán)境均通過svn管控岸夯,包括庫文件概而、工具等的建立過程,因此在用config生成Makefile文件后囱修,使用腳本自動(dòng)刪除arm編譯器不支持的m64選項(xiàng)赎瑰。
當(dāng)使用同樣的方法編譯gmssl后,在設(shè)備上生成秘鑰時(shí)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤破镰;openssl-1.1.1預(yù)覽版編譯后運(yùn)行則是停止響應(yīng)餐曼。
經(jīng)過多方摸索压储,終于找到了原因所在:應(yīng)使用Configure配置目標(biāo)平臺(tái)!新的編譯腳本如下:
./Configure --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared linux-armv4
make
make install
因?yàn)槭莂rm設(shè)備源譬,這里配置目標(biāo)平臺(tái)為linux-armv4集惋,其它平臺(tái)編譯方式相似,使用 ./Configure --help 能夠顯示支持的所有平臺(tái)踩娘。
此外刮刑,當(dāng)指定arm平臺(tái)時(shí),Makefile中不會(huì)出現(xiàn)不支持的m64選項(xiàng)养渴,也就無需刪除雷绢。
使用新的編譯方式后,gmssl和openssl-1.1.1均能在arm設(shè)備上正常工作理卑。
可以不用make install翘紊,只需將當(dāng)前目錄的libcrypto.so.1.1、libssl.so.1.1(其它版本類似)藐唠,以及apps目錄下的openssl or gmssl帆疟、openssl.cnf拷貝到目標(biāo)設(shè)備相應(yīng)目錄即可。