前回の投稿では、WinHttp APIセットを使った時の暗号化プロトコルのデフォルト値や設定すべき値について投稿しました。今回の投稿では、テストツールと使って実際の振る舞いを確認します。
“WinHttp APIでの通信でTLS1.1/1.2を有効化する#2” の続きを読むWinHttp Test 1.0.0
WinHttp Test Tool (WinHttpテストツール) 1.0.0 のダウンロードページです。
上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。
このテストツールについて
WIN32 APIのWinHttp APIセットを使った、httpsのセキュアプロトコルに関する動作の確認ができます。このツールは、Nativeアプリなので.NET frameworkのAPIの動作確認はできません。
このバージョンについて
このツールの1回目のリリースです。このバージョンでは、以下の機能を実装しました。
- デフォルト設定で暗号化通信をするWinHttp APIセットの動作確認
- 任意のセキュアプロトコル設定で暗号化通信をするWinHttp APIセットの動作確認
- https通信時のサーバー証明書を確認する機能
下記がこのツールのメイン画面です。
機能の説明
URLテキストボックス
接続したいサーバーへのURLを指定します。プロトコルを表すhttpsも必要です。上記のメイン画面の例では
https://microsoft.com/
を入力しています。なお、ブラウザーなどからURLのドラッグアンドドロップもできます。
User Agentテキストボックス
https通信時に使うUser Agent文字列を指定します。上記のメイン画面の例では、
WinHTTP Test Program/1.0
を入力しています。
証明書検証のチェックボックス
「Ignore the certification validation under https」チェックボックスでは、https通信時に証明書のCommonNameや有効期限など証明書の検証結果を無視するかどうかを指定します。
セキュアプロトコルのチェックボックス
https通信に使用するセキュアプロトコルを指定します。
Defaultのチェックボックスをチェックすると各OSのデフォルト設定値で通信をします。
Defaultのチェックボックス以外では、指定のセキュアプロトコルを有効にした状態で、サーバーに接続します。最終的に接続に使われるセキュアプロトコルは、サーバーとのネゴシエーションによって決まります。
http/httpsグループボックス
https通信した結果のhttp/httpsのステータスが表示されます。「Status code」には、ステータスコードが表示されます。「Response size」には、受信したレスポンスのバイトサイズが表示されます。「Redirect」には、通信した結果、サーバーからリダイレクトの指示があった時、リダイレクト先のURLが表示されます。
メイン画面の例では、https://www.microsoft.com/
へのリダイレクト要求が発生している状態です。
Win32 API last errorグループボックス
WinHttp APIセットでエラーが発生したとき、エラーコードとエラーメッセージが表示されます。
https – certificate グループボックス
https通信時に使用したサーバーの証明書の情報が表示されます。「SubjectInfo」には、発行先の情報が表示されます。「IssuerInfo」には、証明書の発行元の情報が表示されます。「Period」には、証明書の有効期間が表示されます。ここに表示される時間は、UTC時刻です。
メイン画面の例では、www.microsoft.com
に対する証明書であることがわかります。
このテストツールの説明は以上です。
WinHttp APIでの通信でTLS1.1/1.2を有効化する#1
.NET FramworkでTLS1.1/1.2通信をする方法の投稿のアクセス数が多いことがわかりました。もしかしたら、C/C++などの実装でも需要があるかと思いネイティブの実装でTLS1.1/1.2通信をする方法の投稿です。
“WinHttp APIでの通信でTLS1.1/1.2を有効化する#1” の続きを読むWindows Win32 APIの令和(和暦)の挙動を試す#2
さて、2019年5月1日を過ぎ、元号が「令和」に完全に切り替わりました。前回の投稿では、一部のWindowsでしか動作を試せなかったので、Windows 7以降の全OSで動作を試しました。
“Windows Win32 APIの令和(和暦)の挙動を試す#2” の続きを読むWindows Win32 APIの令和(和暦)の挙動を試す#1
来月に、いよいよ和暦が平成から令和に変更になります。Windowsは、かなり前から和暦を扱うAPIが用意されていました。今回、これらのAPIのうち、Nativeアプリ用のAPIを試してみました。
“Windows Win32 APIの令和(和暦)の挙動を試す#1” の続きを読むJapanese Calendar Test 1.0.0 (和暦テスト 1.0.0)
Japanese Calendar Test Tool (和暦テストツール) 1.0.0 のダウンロードページです。
上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。
このテストツールについて
WIN32 APIを使った、日付データから和暦テキスト文字列の相互変換に関する動作の確認ができます。このツールは、Nativeアプリなので.NET frameworkのAPIの動作確認はできません。
このバージョンについて
このツールの1回目のリリースです。このバージョンでは、以下の機能を実装しました。
- 日付データから日付テキスト文字列に変換するAPIの動作確認
GetDateFormat()
VarBstrFromDate()
- 日付テキスト文字列から日付データへ変換するAPIの動作確認
VarDateFromStr()
下記がこのツールのメイン画面です。
機能の説明
「日付→文字列」グループボックス領域
この領域は、日付データから日付テキスト文字列へ変換するWin32 APIをテストできます。
テストできるAPIは、GetDataFormat()
とVarBstrFromDate()
です。
中央の列は「今日の日付」を日付テキスト文字列へ変換して表示します。右側の列は「日付選択コントロールで選択した日付」を日付テキスト文字列へ変換して表示します。ここで選択する日付で、明治、大正、昭和、平成、令和に相当する年月日を選択すると、それぞれの和暦への変換のテストができます。
GetDataFormat()
このWin32 APIは下記のシグネチャーで定義されています。
int GetDateFormat( _In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_ LPCTSTR lpFormat, _Out_opt_ LPTSTR lpDateStr, _In_ int cchDate );
第1引数Locale
には、以下の固定値を設定しています。これは、日本ロケールを表します。
- MAKELCID(LANG_JAPANESE, SORT_DEFAULT)
第2引数dwFlags
には、4つのバリエーションで実行しています。
- DATE_SHORTDATE
- DATE_LONGDATE
- DATE_SHORTDATE | DATE_USE_ALT_CALENDAR
- DATE_LONGDATE | DATE_USE_ALT_CALENDAR
前者2つは、通常のカレンダー、後者二つは代替カレンダー(代替歴)を指定しています。
日本ロケールの場合、Windowsの既定値は、前者二つが西暦、後者二つが和暦となります。ただし、ユーザー設定により既定値以外のものになることもあります。
VarBstrFromDate()
このWin32 APIは下記のシグネチャーで定義されています。
HRESULT VarBstrFromDate( _In_ DATE dateIn, _In_ LCID lcid, _In_ ULONG dwFlags, _Out_ BSTR *pbstrOut );
第2引数Locale
には、以下の固定値を設定しています。これは、日本ロケールを表します。
- MAKELCID(LANG_JAPANESE, SORT_DEFAULT)
第3引数dwFlags
には、以下の固定値を設定しています。これは、時間を対象とせず、日付のみを対象とすることを表します。
- VAR_DATEVALUEONLY
「文字列→日付」グループボックス領域
この領域は、日付データから日付テキスト文字列へ変換するWin32 APIをテストできます。
テストできるAPIは、VarDateFromStr()
です。
左側のエディットコンボボックスの値をWin32 APIで解釈して、解釈した結果を右側に西暦で表示します。括弧の中は、解釈した日付データを再度GetDataFormat()
で和暦に変換した文字列となります。
エディットコンボボックスで日付文字列を指定します。値は、プルダウンリストから文字列を選んで指定してもよいですし、文字列を直接入力してもよいです。プルダウンリストには、慶応以降の和暦の始まりと終わりを列挙してあります。
VarDateFromStr()
このWin32 APIは下記のシグネチャーで定義されています。
HRESULT VarDateFromStr( _In_ LPCOLESTR strIn, _In_ LCID lcid, _In_ ULONG dwFlags, _Out_ DATE *pdateOut );
第2引数Locale
には、以下の固定値を設定しています。これは、日本ロケールを表します。
- MAKELCID(LANG_JAPANESE, SORT_DEFAULT)
第3引数dwFlags
には、以下の固定値を設定しています。これは、時間を対象とせず、日付のみを対象とすることを表します。
- VAR_DATEVALUEONLY
このテストツールの説明は以上です。
Visual Studio 2019とVisual Studioの歴代アイコン
2019年4月2日(US時間)にVisual Studio 2019がリリースされました。
“Visual Studio 2019とVisual Studioの歴代アイコン” の続きを読む.NET Core 3.0に期待
去年のBuild 2018で発表された.NET Core 3.0ですが、年末にはPreviewがリリースされました。
“.NET Core 3.0に期待” の続きを読むMicrosoft Ajax Minifier 5.14
Microsoft Ajax Minifier 5.14 のダウンロードページです。
Filename: AjaxMinSetup_5.14.msi Filesize: 1,474,560 バイト MD5: f290396dc1e430781d647a2f916dca97 SHA1: d8c0359e82fd1a329a1859df29a15f36413a3db3
上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。
Microsoft Ajax Minifierの詳細については、こちらを参照してください。
Microsoft Ajax Minifier
Ajax Minifierを使ってみたいと思いました。最新版はバージョンが5.14です。しかし、インストーラーのダウンロードサイト(CodePlex)が2017年に閉鎖されていました。これでは不便なので、Ajax Minifierをダウンロードおよび情報を参照できるようにしたいと思います。 “Microsoft Ajax Minifier” の続きを読む