VisualStudio2012 VC++

zlibとgzipの圧縮アーカイバーを作成。 http://www.zlib.net/ からzlib source codeをダウンロード(zipファイル)して解凍します。この中のwin32のMakefile.mscをビルドします。 zlib.libが作成されます。 Menu->Microsoft VisualStudio2012->VisualStudio To…

CLIENT_KEY_EXCHANGEがとんできた場所でencrypted_pre_master_secretをRSA解凍してpre_master_secretを取得します。 RSAの秘密鍵(PrivateKey)はkey.derのバイナリデータそのままです。 pre_master_secretから各種キーを取得します。 MSのCryptApiを使用。RSA…

クライアント(IE)からの"GET /index.html HTML/1.1..."はなぜか"G"と"ET.."に分かれ暗号化されています。 最初を復号するとG(0x47)+MAC+PADDINGというPlaintextになります。"G"という文字とclient_macからサーバ側で計算したMACが、d4 90... と一致するか検…

keyblockからは以下のようにしてキーを取得します。サーバ用とクライント用に分かれてます。 key+ivは共通鍵です。macはデータの検証で使用します。ivが曲者でここで取得したivデータは初回しか使えません。 毎回、ivは最終ブロックデータの先頭へ変更します…

TSLではPRFという名のSHA1とMD5で構成された関数からキーなどを作成します。そして、ラベルを4種類使用します。 "master secret" : pre_master_secretからmaster secretという名のデータを作成 "key expansion" : master_secretからkeyblock(CLENT_MAC+SERV…

HTTPSのシーケンシャルは以下です。この辺の説明は省きます。 [**CLIENT**] [**SERVER**] CT_HANDSHAKE -----------------------------> CLIENT_HELLO (client_randam) SERVER_HELLO (serevr_randam) CERTIFICATE (x509) SERVER_HELLO_DONE CT_HANDSHAKE ---…

C++でHTTPSサーバを実際に作成しています。実装に関しては情報が少ないため、かなり難しいです。 しかし、なんとか目途がたったので役に立つ情報を出してみたいと思います。 なお、使用する暗号形式はTLS_RSA_WITH_AES128_CBC_SHAに限定します。TSL1.0はSSL3…

元ネタはhttp://www.atmarkit.co.jp/ait/articles/1303/19/news099.html です。 上記サンプルのClientはJavascript+IEですが、C#で作成すると下のようになり、無事サーバのメッセージをキャッチできました。 WebSocketの使い道ですが、チャットぐらいしか思…

underscore.jsというインテリジェンス満タンのライブラリをMSのtypescriptで使う(動作確認レベル)方法。1, underscoreの型情報をgithubからdownloadする。underscore.browser.d.ts 2, VS2012のVisualC#にある"HTML Application with TypeScript"を作成 3, un…

javascriptのXMLHttpRequestをc++で利用。 イベントハンドラであるonreadystatechangeの扱いがscript向けになっていた。 javascript内でxmlHttpRequest.onreadystatechange = function(){ ... の場合、 この無名関数はIDispatchのDISPID=0になるようだ。 ///…

Direct2DでDPtoLPを実現する。DPはデバイス座標。LPは論理座標。 GDI32ではDPtoLPなる関数があり、それに相当する。 DP:LP=1:1でないアプリを作成する場合になくてはならない。///////////////////////////////////////////////////////////////////////////…

とりあず、async/awaiにCancelとProgressを追加。/////////////////////////////////////////////////////////////////////////////// ★C#側のWindowsランタイムコンポーネント private async static Task test7_3Inner(int number, System.Threading.Cancel…

とにかくMS提供のサンプルが難しすぎ。C++は0xも含めネタが多すぎて、相当難しすぎように感じます。 「あまりに難解なものはやがて廃れて忘れ去られる」という言葉を思い出しまた。(昔、OLE2の本の厚さにビックりした方の名言) C#で作成したWindowsRuntime…

Windows8のMetroはまだ情報が小出しで、サンプルも難しすぎですがC#のasync/awaitと同じことを、C++でテストしてみました。 create_asyncを使用するためWindows環境では動作しません。Metro環境(WindowsRT)のみです。Button_Click_1 はボタンを押すと実行さ…