Brian Gladman の AES ライブラリをビルドする手順
共通鍵暗号に AES という手法がある.プログラミングにおいて,AES を扱うのには,誰かが既に作っているコードを利用するのが楽だ.楽なはずだ.きっと.実のところ OpenSSL というライブラリ群にも AES が実装されている.しかし,使用法がよく飲み込めなくて,別にないかと探して見つけたのが Brian Gladman が公開しているライブラリだ.
必要なデータと関連リンク
Brian が作った AES 関連を2つと,YASM を入手する.
- MASATOの開発日記: AES暗号化ライブラリ.日本語で Brian の事を伝える文書.コメント欄で彼のサイトが移転している事が分かり,これまた助かる.
- Brian Gladman's Main Page.Brian のウェブサイト.メニューの Technology は Cryptography を選ぶ.リンク先は別ドメインとなる.oldsite とあることから,移行中だってことなんだろう.
- plushost.co.uk - このウェブサイトは販売用です! - plushost リソースおよび情報.ここから2ファイルをダウンロードする.また,もう1ファイルをダウンロードするため,別サイトへ移動する.
- http://gladman.plushost.co.uk/oldsite/AES/aes-src-11-01-11.zip は Brian が書いたコードの本体.
- http://gladman.plushost.co.uk/oldsite/AES/aes-vs2010-11-01-11.zip は Visual C++ 2010 でビルドするためのプロジェクト群.
- plushost.co.uk - このウェブサイトは販売用です! - plushost リソースおよび情報.ここから2ファイルをダウンロードする.また,もう1ファイルをダウンロードするため,別サイトへ移動する.
- The Yasm Modular Assembler Project.彼が書いたコードには YASM に向けて書かれたアセンブリコードを含んでいる.これを処理するために必要.
- Download - The Yasm Modular Assembler Project.ここから YASM をダウンロードする.
- http://www.tortall.net/projects/yasm/releases/vsyasm-1.1.0-win32.zip は VC++ 2010 に向けてビルドされたバイナリ.64ビットマシンでの処理を考えていないので Win32 を選択する.
- Download - The Yasm Modular Assembler Project.ここから YASM をダウンロードする.
ファイル配置とシステム環境変数設定とファイル編集
YASM を配置する
C:\Software\Develop\vsyasm\vsyasm-1.1.0-win32 に展開する.
Brian のファイルを配置する
- aes-vs2010-11-01-11.zip を C:\Software\Develop\aesBrian\aes-vs2010-11-01-11 に展開する
- aes-src-11-01-11.zip を 同フォルダに展開する
- C:\Software\Develop\aesBrian\aes-vs2010-11-01-11\vsyasm.props を編集する.vsyasm.exe の展開場所に合わせて編集しているだけ
<PropertyGroup> <!-- YasmPath Condition= "'$(YASMPATH)' == ''">C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\</YasmPath --> <YasmPath Condition= "'$(YASMPATH)' == ''">C:\Software\Develop\vsyasm\vsyasm-1.1.0-win32\</YasmPath> </PropertyGroup>
Brian のコードをビルドする
- C:\Software\Develop\aesBrian\aes-vs2010-11-01-11\aes.sln を開く.「ソリューションフォルダ」のDLLS,LIBS,MISCが利用できないと警告を受ける.了解するしかないので留意しておく
- バッチビルドのダイアログを開き,プラットフォームが Win32 なプロジェクトをすべてチェックし,ビルドする
終わりに
ダイナミックリンクでの利用法を私が理解していないため,スタティックリンクでの利用例を挙げるだろう.aes.h を include し,lib 以下の lib ファイルをリンクするだろう.