wolfTips: 言語ラッパーを使いこなす– C# 編 —

C#言語用インターフェースを提供するwolfSSL C# ラッパーを使用する

wolfSSL をC# 言語から使用したいという方は、wolfSSL C# ラッパーを利用することが出来ます。wolfSSL C# ラッパー はSSL/TLS組み込みライブラリである wolfSSL とC#言語間のインターフェースを提供し、既存のC#アプリケーションへの wolfSSL ライブラリの統合を容易にします。

“言語ラッパーを使いこなす”、連載の最後は、wolfSSL C# ラッパー使用方法及びC#言語を使用したサーバーサンプルプログラムについて紹介します。

wolfSSL C# ラッパー に関する詳細は下記URLから参照可能です。

また、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
SSL version is TLSv1.2
SSL cipher suite is TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
hello wolfssl!

 

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 までお知らせください。