次に、各種暗号化アルゴリズムの機能追加の紹介です。ネットワーク上のサービスにセキュアにアクセスする際、認証やデータ改ざん防止を目的としたデータの暗号化・復号機能がよく用いられます。.NET Micro Frameworkでは、これまでにもX.509などの機能がありましたが、TwitterやFacebookで採用されているOAuth用の暗号化アルゴリズムは標準で用意されておらず、自作する必要がありました。
今回のバージョンアップで、“System.Security”名前空間の下に、各種暗号化アルゴリズム用クラスが追加されます。
サポートされるアルゴリズムは、
などです。Twitterの認証などで使われているOAuthでおなじみのHMAC-SHA1もサポートされています。暗号化に関するライブラリの構成は「PKCS#11API」をベースとして定義されており、カスタムの暗号実装を容易に追加することも可能です。
通常の.NET Frameworkの場合、それぞれのアルゴリズムに対して専用の暗号化クラスが用意されていますが、.NET Micro Frameworkでは「SymmetricAlgorithm」「AsymmetricAlgorithm」「HashAlgorithm」「KeyedHashAlgorithm」の4つのクラスで構成される非常にシンプルなものになっています。これは.NET Micro Frameworkが超小型デバイスという非常に限られたハードウェアリソースでの動作を前提としており、“なるべくメモリフットプリントを増やさないように”という配慮によるものです。暗号化の各種アルゴリズムの実装は、OpenSSLを採用しています。OpenSSLは、Apache License V2.0とは異なるライセンスなので、利用の際はライセンス上問題ないかのチェックが必要です。
暗号化アルゴリズムの使い方は、CodePlexサイトの[Document]で公開されている「General Howto manual Crypto in the .NET MF.pdf」を参考にしてください。
最新の“4.2”では、これまで紹介した3つの機能の他にも、幾つか便利な機能が追加されます。以下の表1に、追加されるその他の主な機能とクラス名を示します。
No | 名称 | 名前空間 | クラス |
---|---|---|---|
1 | アナログポート | Microsoft.SPOT.Hardware | AnalogPort |
2 | PWM | Microsoft.SPOT.Hardware | PWM |
3 | FTP | System.Net | FtpWebRequestなど |
4 | 正規表現 | System.Text.RegularExpressions | Regexなど |
表1 追加されたその他の主な機能とクラス名 |
最初の2つは、ハードウェアレベルのインタフェースに関する追加です。
1番目は、アナログポートに関する機能追加です。“4.1”以前に用意されていた周辺デバイスとのインタフェースは、主にデジタル信号処理に関するものでしたが、“4.2”ではアナログ信号ポートを制御するクラスが、“Microsoft.SPOT.Hardware”名前空間に「AnalogPort」という名前で追加されます。
2番目の機能は、モータの回転数やLEDの光度などを制御するのによく使われるPWM(Pulse Width Modulation)制御アルゴリズムです。ご存じの通り、.NET Micro Frameworkはバーチャルマシン上で動くプログラムであり、ガベージコレクションがバックグラウンドで実行されるなど、リアルタイム対応のファームウェアではないため、厳密に一定期間、ある周波数で信号を出すことはできません。このクラスの追加で、リアルタイム制御が必要なPWMを扱うことができるようになっています。
3番目は、ネットワーク上のファイル転送プロトコルとして、昔からよく使われているFTP(File Transfer Protocol)対応機能です。「FtpWebRequest」や「FtpListener」などの関連クラスを用いて、FTPのサーバ機能、および、クライアント機能を容易にアプリケーションで使えるようになっています。
4番目は、正規表現に関する機能追加です。正規表現による文字列のパターンマッチング、変換をサポートします。通常の.NET Frameworkで用意されている同名の名前空間にあるクラス群のサブセットとして機能が提供されています。.NET Micro Frameworkでは、通常の.NET Frameworkで用意されている文字列のエンコーディング機能など、一部の機能が搭載されていません。正規表現機能は、ネットワークサービス連携時のURL文字列のエンコーディングなどでも威力を発揮します。
他にも「StringBuilder」クラスの追加や、データ列のエンコーディング/デコーディングをサポートするクラスの整理など、幾つかの変更点があります。変更に関する詳細は、前述の.NET Micro Frameworkのオープンソースサイトの情報や、.NET Micro Framework 4.2の各種ライブラリが梱包(こんぽう)されているアセンブリをVisual Studioのオブジェクトブラウザで眺めて確認してみてください。
また、今回のバージョンアップにより、「過去のバージョンで作成したアプリケーションプロジェクトが強制的にバージョンアップされてしまうのでは?」と心配されるかもしれませんが、プロジェクトのプロパティで使用する.NET Micro Frameworkのライブラリバージョンが選択可能になっているので安心してください。「3.0」「4.0」「4.1」「4.2」が選択可能です。
以上が、.NET Micro Framework 4.2の主な新機能、変更点になります。
小型の組み込みデバイスにおいても今後、ネットワーク連携やタッチパネル対応がますます求められていきます。本稿を機に、スマートフォンほどのハードウェアリソースを必要としない小型の組み込みデバイスや、.NET Micro Frameworkのアプリケーションが実行可能なFEZシリーズやNetduinoなどのような安価なホビーユースのデバイスで、最新の.NET Micro Framework 4.2を活用してみてください! その際は、本稿で紹介した情報に加え、以下のサイトに公開されている関連情報もぜひご覧ください。
.NET Micro Framework 開発者向け技術情報(日本語サイト)
http://msdn.microsoft.com/ja-jp/netframework/bb267253
“匠の国”、日本で、組込み全開!!(筆者ブログ)
Copyright © ITmedia, Inc. All Rights Reserved.