GMSSL 國密iPhone端編譯

2021-09-13 23:13:32 字數 2021 閱讀 5306

每次編譯前最好重新開啟shell視窗,刪除原始碼目錄後,再複製乙份原始碼

# 進入目錄

$ cd gmssl原始碼目錄

# 設定編譯器

$ export cc="clang -arch armv7"

# 設定工具鏈路徑

# 設定開發環境目錄

# 設定sdk

$ export cross_sdk=iphoneos12.1.sdk

# 設定最小依賴版本

$ export iphoneos_deployment_target=8.0

# 生成makefile

$ ./configure iphoneos-cross no-shared --prefix=/usr/local/openssl

# 構建

make

libcrypto.a,libssl.a,並重命名為帶有相應指令集名稱的名字,例如libcrypto-armv7.a,libssl-armv7.a

# 進入目錄

$ cd gmssl原始碼目錄

# 設定編譯器

$ export cc="clang -arch arm64"

#設定工具鏈路徑

# 設定開發環境目錄

# 設定sdk

$ export cross_sdk=iphoneos12.1.sdk

# 設定最小依賴版本

$ export iphoneos_deployment_target=8.0

# 生成makefile

$ ./configure ios64-cross no-shared -dgmssl_no_turbo --prefix=/usr/local/openssl-ios64

# 構建

make

目前編譯的時候預設用ec_gfp_sm2z256_method,這個實現提供超過4倍的效能提公升,但是這個實現只在比較新的x86_64環境下可用,理想情況下應該判斷當前硬體環境,但是目前的編譯系統裡面還沒來得及做這個判斷。

-dgmssl_no_turbo可以顯式指定不要用ec_gfp_sm2z256_method這個快速實現。

ec_nistp_64_gcc_128可以啟用sm2的純c優化實現,這個優化實現可以提供2倍的效能提公升,可以用在所有64位的系統裡面,但是需要較高版本編譯器的支援,這個選項預設是不開啟的,因此需要enable顯式開啟

libcrypto.a,libssl.a,並重命名為帶有相應指令集名稱的名字

# 進入目錄

$ cd gmssl原始碼目錄

# 設定編譯器

$ export cc="clang -arch i386 -arch x86_64"

# 設定工具鏈路徑

# 設定開發環境目錄

# 設定sdk

$ export cross_sdk=iphonesimulator12.1.sdk

# 設定最小依賴版本

$ export iphoneos_deployment_target=8.0

# 生成makefile

$ ./configure iphoneos-cross no-shared --prefix=/usr/local/openssl

# 構建

make

libcrypto.a,libssl.a,並重命名為帶有相應指令集名稱的名字

生成makefile時,啟用no-asm選項

$ ./configure ****** no-asm ******
在原始碼目錄找到生成的makefile,開啟並將裡面的-o3替換成-g

國密工具gmssl使用

國密工具gmssl 1.16進製制串格式儲存的私鑰顯示 gmssl sm2 inform t in skey.txt text 2.16進製制串格式儲存的私鑰轉出pem格式私鑰 gmssl sm2 inform t in skey.txt out skey.pem 3.16進製制串格式儲存的私鑰轉出...

國密演算法介紹以及Fabric國密擴充套件

國密即國家密碼局認定的國產密碼演算法。主要有sm1,sm2,sm3,sm4。金鑰長度和分組長度均為128位。sm1 為對稱加密。其加密強度與aes相當。該演算法不公開,呼叫該演算法時,需要通過加密晶元的介面進行呼叫。採用該演算法已經研製了系列晶元 智慧型ic卡 智慧型密碼鑰匙 加密卡 加密機等安全產...

國密演算法(二)

接上文 sm4對稱演算法是乙個分組演算法,用於無線區域網產品。該演算法的分組長度為128位元,金鑰長度為128位元。加密演算法與金鑰擴充套件演算法都採用32輪非線性迭代結構。解密演算法與加密演算法的結構相同,只是輪金鑰的使用順序相反,解密輪金鑰是加密輪金鑰的逆序。此演算法採用非線性迭代結構,每次迭代...