2018年12月25日火曜日

OpenSSL1.1.1(TLS.1.3対応版)のビルド

【ビルド環境】
Visual Studio 2008 SP1

【準備】
1) Perlをインストールする。
ダウンロードリンク例:https://www.activestate.com/activeperl/downloads
2) NASMをインストールする。
ダウンロードリンク例:http://www.nasm.us/
3) NASMのインストール先フォルダを、環境変数の「Path」に追加する。
4) OpenSSLのソースコードをダウンロードする。
ダウンロードリンク例:https://www.openssl.org/source
5) OpenSSLのソースコードを解凍する。
解凍先例:C:\openssl-1.1.1a
6)OpenSSLコンパイル先フォルダを作成する。
コンパイル先例:C:\openssl\win\x86

【ビルド手順】
1) スタートメニューから「Visual Studio 2008のコマンドプロンプト」を起動する。
2) cdコマンドでOpenSSLのソースコードのフォルダへ移動する。
コマンド例)cd c:\openssl-1.1.1a
3) perlのコマンドを実行する。
コマンド例)perl Configure VC-WIN32 --prefix=C:/openssl/win/x86
4) nmake installを実行する。

参考サイト
ビルド時のコマンド
https://www.sumirelab.com/docs/tech/windows-%E3%81%A7-openssl-%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E3%83%A1%E3%83%A2/

生成物について
http://lfsbookja.osdn.jp/svn-sysdja/chapter06/openssl.html

OpenSSLのTLS1.3の調査のまとめ

■OpenSSLがTLSv1.3のサポートを開始したバージョンは?
OpneSSLv1.1.1からTLSv1.3のサポートを開始しています。
OpneSSLv1.1.1のリリース日は、2018/9/11

OpenSSLの公式ブログ
https://www.openssl.org/blog/blog/2018/09/11/release111/

■OpneSSLv1.1.1のバイナリファイルの入手方法?
OpenSSLの公式サイトは、バイナリファイルは、公開されていません。
バイナリファイルを入手するには方法は主に2通りあります。

・1個目の入手方法
OpenSSLの公式サイトから対象バージョンのソースコードをダウンロードし、自前でOpenSSLをビルドする。

・2個目の入手方法
サードパーティがインターネット上で公開しているバイナリファイルをダウンロードする。
サードパーティのOpenSSL関連バイナリファイルダウンロード先
https://wiki.openssl.org/index.php/Binaries

■1個目の方法(自前でOpenSSLをビルド)のフィジビリテ確認
OpenSSLv1.1.1のソースコードをダウンロードして、ビルドを行ないました。
ビルドは成功しました。
OpenSSLv1.1.1のビルド手順をまとめたものを以下に格納しました。
https://promise-redmoon.blogspot.com/2018/12/openssltls13study.html


2008年9月24日水曜日

C# Dictionaryの使い方

//
Dictionary openWith = new Dictionary();

// Dictionaryに要素を追加する。
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

// もしも新しいキーがDictionaryに存在していたら、Addメソッドは例外を投げる
try
{
    openWith.Add("txt", "winword.exe");

}catch (ArgumentException)
{
    Console.WriteLine("An element with Key = \"txt\" already exists.");
}

// キーが存在していても、上書きが出来る。
openWith["rtf"] = "winword.exe";

// 存在していないキーを指定したら、例外が発生する。
try
{

openWith["tif"];

}catch(KeyNotFoundException)
{
}

C# list型の使い方

//
List dinosaurs = new List();


// listに要素を追加する
dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");


// listの現在の容量
dinosaurs.Capacity;


// listの現在の要素数
dinosaurs.Count;

// 要素の中に"Deinonychus"が含まれていないのでFalseが返ってくる
dinosaurs.Contains("Deinonychus"));


// 2番目の要素に挿入
dinosaurs.Insert(2, "Compsognathus);

// 要素の"Compsognathus"を削除する
dinosaurs.Remove("Compsognathus");

// 要素は全て削除。容量はそのまま残る
dinosaurs.Clear();

2008年9月23日火曜日

C# stack型の使い方

Stack numbers = new Stack();

// 要素追加
numbers.Push("one");
numbers.Push("two");

// 要素の取り出し
numbers.Pop()

// スタックのコピー
Stack stack2 = new Stack(numbers.ToArray());

// numbers.Countはstackの要素数を数える。
string[] array2 = new string[numbers.Count * 2];

// array2 にコピーします。
numbers.CopyTo(array2, numbers.Count);

// コンストラクタでarray2をarray3にコピー
Stack stack3 = new Stack(array2);

// "four"の要素がないからFalseを返す
stack2.Contains("four"));