ホームページ >バックエンド開発 >Golang >golang gmssl がコンパイルに失敗する

golang gmssl がコンパイルに失敗する

(*-*)浩
(*-*)浩オリジナル
2019-12-16 15:37:282858ブラウズ

golang gmssl がコンパイルに失敗する

以前に 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 プラットフォームを指定する場合、サポートされていない m64 オプションは Makefile に表示されないため、削除する必要はありません。

新しいコンパイル方法を使用した後は、gmssl と openssl-1.1.1 の両方が arm デバイスで正常に動作できるようになります。

GmSSL-Go は、GmSSL ライブラリの Go 言語インターフェイス バインディング

です。

暗号アルゴリズム、X.509 証明書、SSL プロトコル、Go 言語アプリケーション用エンジンなどの機能を提供します。 。

GmSSL-Go は、CGO を使用して、GmSSL の高レベル インターフェイスを Go 言語コンポーネントとしてカプセル化します。これは、GmSSL ライブラリと疎結合された軽量の中間層です。すべての暗号化機能は、基盤となるGmSSLライブラリが提供されています。

GmSSL-Go を使用する理由

Go 言語の公式ライブラリには、一般的に使用される暗号アルゴリズム パッケージと SSL プロトコル パッケージが用意されていますが、サードパーティ製の純粋な Go もいくつかあります。プロジェクトに GmSSL-Go を統合した暗号通貨ライブラリには、依然として多くのかけがえのない利点があります: GmSSL-Go は、基礎となる GmSSL ライブラリを通じて各国の暗号化アルゴリズム、証明書、および SSL プロトコルを完全かつ豊富にサポートします。

GmSSL-Go は、国家暗号化標準を満たす U シールドや PCI-E 暗号化カードなどの国内ハードウェア暗号化デバイスを満たすエンジン オブジェクトを通じて、システムのセキュリティ、可用性、パスワード コンプライアンスを提供できます。

GmSSL-Go は、CGO メソッドを使用して GmSSL ライブラリの暗号アルゴリズム実装を呼び出します。純粋な Go 言語実装と比較して、暗号アルゴリズムのパフォーマンス上の利点があります。GmSSL ベンチマークを参照してください。

GmSSL-Go の機能とパフォーマンスは、GmSSL のアップグレードとともに継続的に改善されています。

以上がgolang gmssl がコンパイルに失敗するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。