先前在ubuntu上交叉編譯過openssl-1.0.2k,使用以下腳本實現: #./config --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared
sed -i "s/ -m64//g" Makefile
make
make install
所有開發環境均透過svn管控,包含庫檔案、工具等的建立過程,因此在使用config產生Makefile檔案後,使用腳本自動刪除arm編譯器不支援的m64選項。 當使用同樣的方法編譯gmssl後,在裝置上產生秘鑰時出現執行階段錯誤;openssl-1.1.1預覽版編譯後執行則是停止回應。
經過多方摸索,終於找到了原因所在:應使用Configure配置目標平台!新的編譯腳本如下:
./Configure --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared linux-armv4 make make install
因為是arm設備,這裡配置目標平台為linux-armv4,其它平台編譯方式相似,使用 ./Configure --help 能夠顯示支援的所有平台。
此外,當指定arm平台時,Makefile中不會出現不支援的m64選項,也就不需要刪除。
使用新的編譯方式後,gmssl和openssl-1.1.1均能在arm設備上正常運作。
GmSSL-Go是GmSSL函式庫的Go語言介面綁定,
為Go語言應用程式提供密碼演算法、X.509憑證、SSL協定和Engine等功能。GmSSL-Go以CGO方式將GmSSL的高層介面封裝為Go語言元件,是一個與GmSSL庫松耦合的輕量級的中間層,所有的密碼功能均由底層的GmSSL庫提供。
為何用GmSSL-Go雖然Go語言的官方函式庫提供了常用的密碼演算法包和SSL協定包,也存在一些第三方的純Go語言的密碼庫,在專案中整合GmSSL-Go仍然有很多不可替代的優勢:GmSSL-Go透過底層的GmSSL庫提供完整、豐富的國密演算法、憑證和SSL協定的支援。
GmSSL-Go可以透過Engine物件滿足國密標準的U盾、PCI-E加密卡等國產硬體密碼設備,提供系統的安全性、可用性和密碼合規性。
GmSSL-Go以CGO方式呼叫GmSSL函式庫的密碼演算法實現,相對於純Go語言實作在密碼演算法上具有效能上的優勢,請參考GmSSL Benchmark。
GmSSL-Go的功能和效能隨著GmSSL的升級獲得持續的改進。
以上是golang gmssl編譯不過的詳細內容。更多資訊請關注PHP中文網其他相關文章!