C#言語用インターフェースを提供するwolfSSL C# ラッパーを使用する
wolfSSL をC# 言語から使用したいという方は、wolfSSL C# ラッパーを利用することが出来ます。wolfSSL C# ラッパー はSSL/TLS組み込みライブラリである wolfSSL とC#言語間のインターフェースを提供し、既存のC#アプリケーションへの wolfSSL ライブラリの統合を容易にします。
“言語ラッパーを使いこなす”、連載の最後は、wolfSSL C# ラッパー使用方法及びC#言語を使用したサーバーサンプルプログラムについて紹介します。
wolfSSL C# ラッパー に関する詳細は下記URLから参照可能です。
- https://www.wolfssl.com/products/wolfssl-csharp/
- https://www.wolfssl.com/docs/wolfssl-csharp-manual/
また、wolfSSL C# ラッパーのソースコードは wolfSSL のソースコードの“<wolfssl_root>/wrapper/CSharp” フォルダーに含まれます。
wolfSSL C# ラッパーをビルドする為に、Visual Studioの下記ソリューションファイルを開きます。
”<wolfssl_root>”/wrapper/CSharp/ wolfSSL_CSharp.sln |
下記画面は、Visual Studio 2017 でソリューションファイルを開いたところです。wolfSSL C# ラッパーは、wolfSSL ライブラリと依存関係のある為、ソリューションファイルにプロジェクトとして含まれています。wolfSSL_CSharp プロジェクトをビルドすると wolfSSL ライブラリのプロジェクトもビルドされます。
この時wolfSSL ライブラリのプラットフォームツールセットはデフォルトでは、Visual Studio 2012(v110)ですので、お使いの Visual Studio のバージョンにあわせて変更します。また、.Net Framework はデフォルトで v4.5 です。こちらも、お使いの .Net Frameworkに変更するか v4.5 をインストールします。
ビルドを行うために、まず構成を選択するために、メニューの「ビルド」→「構成マネージャー」から構成マネージャーを起動します。
例えばRelease ビルド、64ビット版を作成する場合は、構成マネージャーのアクティブソリューション構成を「DLL Release」、アクティブソリューションプラットフォームを「x64」にそれぞれ選択します。
次に wolfSSL のビルドオプションとして HAVE_CSHARP をプリプロセッサマクロに追加します。wolfSSL プロジェクトのプロパティページから「C/C++」→プリプロセッサ→プリプロセッサの定義に HAVE_CSHARP を追加します。
ソリューションをビルドします。ビルドが成功すると、”<wolfssl_root>”/wrapper/CSharp/以下のフォルダーにDLL及び実行可能ファイルが作成されます。x64 の場合は下記フォルダーに作成されます。
”<wolfssl_root>”/wrapper/CSharp/x64/DLL Release |
作成されたサンプルプログラムを実行してみます。コマンドプロンプトを起動し、上記フォルダーに移動し、実行します。
例えば、Pre-SharedKey を使用したTLSサーバーサンプルを起動します。
$cd ”<wolfssl_root>”/wrapper/CSharp/x64/DLL Release $wolfSSL-TLS-PSK-Server.exe Calling ctx Init from wolfSSL Finished init of ctx …. now load in cert and key Ciphers : RC4-SHA:RC4-MD5:DES-CBC3-SHA:AES128-SHA:AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-PSK-AES256-GCM-SHA384:DHE-PSK-AES128-GCM-SHA256:DHE-PSK-AES256-CBC-SHA384:DHE-PSK-AES128-CBC-SHA256:HC128-MD5:HC128-SHA:RABBIT-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-RC4-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-RC4-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-SHA256:AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDH-RSA-AES128-SHA:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES128-SHA:ECDH-ECDSA-AES256-SHA:ECDH-RSA-RC4-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-RC4-SHA:ECDH-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES128-GCM-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:ECDHE-PSK-AES128-CBC-SHA256:EDH-RSA-DES-CBC3-SHA Setting cipher suite to DHE-PSK-AES128-CBC-SHA256 Started TCP and waiting for a connection |
対向のクライアントは wolfSSL ライブラリ付属の/example/client を使用できます。PSKを有効にし、wolfSSL ライブラリをビルドします。
$./configure –enable-psk
$make |
/example/client を PSK を使用し起動します。下記例では、サーバーのアドレスは192.168.163.1 です。お使いの環境にあわせて変更ください。
$ ./example/client/client -s -l DHE-PSK-AES128-CBC-SHA256 -h 192.168.163.1 |
TLS通信が成功するとWindows側のコマンドプロンプトに下記のようなメッセージが出力されます。
…
Connection made wolfSSL_accept |
DTLSのサンプルプログラムを使用する際には、対向のクライアントは下記のオプションを有効にしてください。
$./configure –enable-dtls –enable-psk
$make |
今回はwolfSSL を C# 言語より利用するためのwolfSSL C#ラッパーを紹介しました。サポート済みAPIに関する情報は下記を参照ください。
https://www.wolfssl.com/documentation/wolfSSL-CSharp-API-Reference.pdf
wolfSSL C#ラッパーやサンプルプログラムの使い方に関するご質問はお気軽に support@wolfssl.com までお知らせください。