2011年9月29日木曜日

openssl 64ビット版 / smail 64ビット版

smailの64ビット版作成の前にopenssl の64ビット版のライブラリーを作成しないといけないということで、openssl の64ビット版のライブラリーを作成。(自分用メモ)

http://www.openssl.org/source/から、最新ソースコードopenssl-1.0.0e.tar.gzをダウンロードして、
C:\work\vc\free\openssl-1.0.0e-64に展開

1)コンパイル環境の設定
C:\work\vc\free\openssl-1.0.0e-64>"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat"
Setting environment for using Microsoft Visual Studio 2010 x64 cross tools.

※32bitを作成する場合は、C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
を実行する。

2)Configure (要ActivePerl,要make)
C:\work\vc\free\openssl-1.0.0e-64>perl Configure VC-WIN64A no-asm --prefix=C:\work\vc\free\openssl-1.0.0e-64

※アセンブラ(MASM)があれば、no-asmを外すと、SHA等の計算はアセンブラーコードを使用され速度が速くなります。
まあ、そんなに高速を必要としないので、私はいつも、no-asmを指定。

3)makeファイル作成
C:\work\vc\free\openssl-1.0.0e-64>ms\do_win64a
C:\work\vc\free\openssl-1.0.0e-64>perl util\mkfiles.pl 1>MINFO
C:\work\vc\free\openssl-1.0.0e-64>perl ms\uplink.pl win64a 1>ms\uptable.asm
C:\work\vc\free\openssl-1.0.0e-64>ml64 -c -Foms\uptable.obj ms\uptable.asm
Microsoft (R) Macro Assembler (x64) Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: ms\uptable.asm
C:\work\vc\free\openssl-1.0.0e-64>perl util\mk1mf.pl no-asm VC-WIN64A 1>ms\nt.mak
C:\work\vc\free\openssl-1.0.0e-64>perl util\mk1mf.pl dll no-asm VC-WIN64A 1>ms\ntdll.mak
C:\work\vc\free\openssl-1.0.0e-64>perl util\mkdef.pl 32 libeay 1>ms\libeay32.def
C:\work\vc\free\openssl-1.0.0e-64>perl util\mkdef.pl 32 ssleay 1>ms\ssleay32.def
C:\work\vc\free\openssl-1.0.0e-64>

3)make
C:\work\vc\free\openssl-1.0.0e-64>nmake -f ms\nt.mak

※smailにSSLを静的リンクライブラリで実装するので、ms\nt.makを実行する。
DLLを作成したい方は、nmake -f ms\ntdll.makの方を実行する。

4)オブジェクト

C:\work\vc\free\openssl-1.0.0e-64\out32にssleay32.lib,libeay32.libが生成される。
C:\work\vc\free\openssl-1.0.0e-64\inc32にopenssl用のインクルードファイルが生成される。

※テストコマンド等も生成される。必要なのは、ssleay32.lib,libeay32.libだけですが、本当に64bitで動作しているのか、openssl.exeを起動して、タスクマネージャで見てみる。



以上で、openssl 64bit版のライブラリーの出来上がりです。

5)SMAILを64bit化する。(64ビットアプリは未公開です。)

・64bit化のため、一部ソースコード修正
・4)で作成した、includeファイル、ライブラリーを指定。

・コンパイル
64bit版のsmail.exe完成、64bitで動作しているか確認。



※正常にSSLでメール送信。
opensslを使ってSSL通信するプログラムは至って簡単で、sslの初期化をしてしまえば、後はソケットディスクリプタをSSLに通すだけです。

0 件のコメント:

コメントを投稿