Ifdtest2 Parts A B & C (SC リーダー ロゴ) - (手動テスト)
このテストでは、PC/SC ワークグループ テスト カードのリビジョン 2 を検証することによって、スマート カード リーダーの機能を確認します。 パート A、B、C は任意のスマート カードで実行できます。
テストの詳細
詳細 |
|
プラットフォーム |
|
サポートされているリリース |
|
予想される実行時間 (分) | 5 |
カテゴリ | 互換性 |
タイムアウト (分) | 300 |
再起動が必要 | false |
特別な構成が必要 | false |
Type | automatic |
その他のドキュメント
この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。
テストの実行
テストを実行する前に、「スマート カード リーダーのテストの前提条件」で説明されているテスト要件に従って、テストのセットアップを完了します。
トラブルシューティング
HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。
トラブルシューティングの情報については、「Device.Input テストのトラブルシューティング」を参照してください。
詳細
このテストでは、PC/SC ワークグループ テスト カードのリビジョン 2 を検証することによって、スマート カード リーダーの機能を確認します。
テストとそのハードウェアは、特定の IFD テストを実行し、テスト レポートを生成できる必要があります。 特定の要件では、標準の操作と例外的な操作 (エラー状態) が処理されます。 また、これらは、リーダー サブシステムでサポートされているすべてのプロトコルに適用する必要があります。
次の種類のスマート カード リーダーには、構成ファイルを用意する必要があります。
- 非接触
- 仮想
- ネットワークが必要
構成ファイルの名前は ifdtest_config.xml である必要があり、C:\SmartCardReaderTest に配置する必要があります。 次のスニペットは、構成ファイルのサンプルを示しています。
<SmartCardReader>
<Version>1</Version>
<Contactless>False</Contactless>
<Virtual>False</Virtual>
<Network>False</Network>
</SmartCardReader>
IFDTEST2 は、3 つの個別のテスト ジョブでテスト ケースを実行します。リーダー インターフェイス テストは、リーダーに何も挿入せずに実行されます。 リソース マネージャーの状態のテスト ケースは、サンプル カードがリーダーに挿入されて抜き取られると実行され、さまざまな条件下でカード挿入の検出を処理します (任意のカードをこのテストに使用できます)。
カードのプロトコル テストでは、挿入された代表的なスマート カードと、特別にプログラミングされた動作を示す特殊なカードを使用して操作を行います。 通常使用可能なカードを使用するテスト ケースでは、さまざまな通信速度とプロトコルの組み合わせを表すために選択されたカードに対して、定期的な操作を実行します。 これらのテストはカードセット 2 で変更されました。
リソース マネージャーの状態のテスト ケース
パート A
カード モニターのテスト ケースは、スマート カードの挿入状態が正しく検出されたことを確認し、カードの予期しない抜き取りによって中断された操作を適切に処理します。
IOCTL_SMARTCARD_IS_PRESENT を使用した空のリーダーの検出のテスト
IOCTL_SMARTCARD_IS_PRESENT を使用した挿入されたカードの検出のテスト
IOCTL_SMARTCARD_IS_ABSENT を使用した挿入されたカードの抜き取りのテスト
ランダムに時間指定されたカードの挿入と抜き取りの操作が適切に処理されることを 15 秒間テスト
- IOCTL_SMARTCARD_IS_PRESENT および IOCTL_SMARTCARD_IS_ABSENT が有効な結果を生成することを確認
パート C
リソース マネージャーのテスト ケースでは、スマート カードのリソース マネージャーによって要求されることが予想される状態変更の操作が正常に完了することを確認します。
カードなしで IOCTL_SMARTCARD_GET_STATE が成功することを確認
返された状態が有効であることを確認
IOCTL_SMARTCARD_IS_PRESENT からの正しい戻り値を確認
IOCTL_SMARTCARD_IS_ABSENT からの正しい戻り値を確認
オペレーターがカードを挿入
カードを挿入して IOCTL_SMARTCARD_GET_STATE が成功することを確認
返された状態が有効であることを確認
IOCTL_SMARTCARD_IS_ABSENT からの正しい戻り値を確認
カードのコールド リセット
カードの状態が SCARD_NEGOTIABLE であることを確認
カード プロトコルを T0 または T1 に設定
IOCTL_SMARTCARD_POWER がカードをオフにする操作が成功したことを確認
オペレーターがカードを抜き取り
カードなしで IOCTL_SMARTCARD_GET_STATE が成功することを確認
パート E
電源管理のテスト ケースでは、カードの挿入または抜き取りによって休止状態中にリーダーの状態が変更された場合でも、休止状態シーケンス全体でリーダーの正しい状態情報がドライバーによって返されることを確認します。
オペレーターがすべてのカードを抜き取り
オペレーターがコンピューターを休止状態にする
オペレーターがコンピューターを起動する
休止状態からの復帰時にリーダーの状態が SCARD_ABSENT であることを確認
オペレーターがカードを挿入
オペレーターがコンピューターを休止状態にする
オペレーターがコンピューターを起動する
休止状態からの復帰時にリーダーの状態が SCARD_PRESENT であることを確認
オペレーターがカードを抜き取り
オペレーターがコンピューターを休止状態にする
オペレーターが休止状態時にカードを抜き取り
オペレーターがコンピューターを起動する
休止状態からの復帰時にリーダーの状態が SCARD_ABSENT であることを確認
オペレーターがコンピューターを休止状態にする
オペレーターが休止状態時にカードを挿入
オペレーターがコンピューターを起動する
休止状態からの復帰時にリーダーの状態が SCARD_PRESENT であることを確認
リーダー インターフェイスのテスト ケース
パート B
リーダー インターフェイスのテスト ケースでは、リーダー ドライバーで実装プロパティと状態情報が正しいことを確認します。
サンプル カードが挿入された状態のリーダーによって報告される属性を確認する
ドライバーによって報告されたデバイス名が WDM PnP 準拠であることをテスト
ドライバーが NULL リターン バッファーを使用して属性の読み取り要求を正しく処理することをテスト
保留中の I/O 操作を使用して、ドライバーが閉じてから再度開いた場合に、保留中の I/O 要求を正しく停止することをテスト
カードを挿入せずに読み取り属性をテスト
SCARD_ATTR_VENDOR_NAME: 長さ 0 以外の文字列
SCARD_ATTR_VENDOR_IFD_TYPE: 長さ 0 以外の文字列
SCARD_ATTR_DEVICE_UNIT: 4 バイト以上の長さの値
SCARD_ATTR_ATR_STRING: 読み取り試行失敗
SCARD_ATTR_DEFAULT_CLK: 1000 <= 値 <= 20000
SCARD_ATTR_MAX_CLK: 1000 <= 値 <= 20000
SCARD_ATTR_DEFAULT_DATA_RATE: 読み取り試行成功
SCARD_ATTR_MAX_DATA_RATE: 読み取り試行成功
SCARD_ATTR_MAX_IFSD: 1 <= 値 <= 254
SCARD_ATTR_CURRENT_PROTOCOL_TYPE: 読み取り試行失敗
カードを挿入して読み取り属性をテスト
SCARD_ATTR_VENDOR_NAME: 長さ 0 以外の文字列
SCARD_ATTR_VENDOR_IFD_TYPE: 長さ 0 以外の文字列
SCARD_ATTR_DEVICE_UNIT: 4 バイト以上の長さの値
SCARD_ATTR_ATR_STRING: 読み取り試行成功
SCARD_ATTR_DEFAULT_CLK: 値 1000 <= 値 <= 20000
SCARD_ATTR_MAX_CLK: 値 1000 <= 値 <= 20000
SCARD_ATTR_DEFAULT_DATA_RATE: 読み取り試行成功
SCARD_ATTR_MAX_DATA_RATE: 読み取り試行成功
SCARD_ATTR_MAX_IFSD: 1 <= 値 <= 254
SCARD_ATTR_CURRENT_PROTOCOL_TYPE: 値 = 0
IOCTL_SMARTCARD_GET_STATE を使用してカードを抜き取り、カードの状態を読み取り: 状態 <= SCARD_SWALLOWED
カードをリセット: 結果が ERROR_UNRECOGNIZED_MEDIA であることを確認
カード プロトコルのテスト ケース
パート D
Infineon Technologies PC/SC 準拠のテスト カード (カード 0/ラベルなし)
ATR: 3B EF 00 00 81 31 20 49
00 5C 50 43 54 10 27 F8
D2 76 00 00 38 33 00 4D
バッファーが小さすぎる状態で読み取りを試行
待機時間延長要求 - 要求の図をファイル 0001 にルーティングし、読み取って確認
ファイル 0002 でのブロック チェーン再同期テスト: カードは最初のブロックを受け入れます。 その後、ブロック 2 の再送信を繰り返し要求します。ホストを再同期 - ERROR_IO_DEVICE を期待
ファイル 0002 でのブロック チェーン再同期テスト: カードはブロック 2 で EDC エラーを繰り返し宣言します。ホストを再同期 - ERROR_IO_DEVICE を期待
ファイル 0003 への読み取りによる間違ったブロック シーケンス - ERROR_IO_DEVICE を期待
Ifsc 要求ファイル ID 0004
ファイル 0005 への読み取りによる強制タイムアウト - ERROR_IO_DEVICE を期待
結果ファイル (A000) の読み取りおよび処理、エラーを解析して報告
Athena T0 テスト カード (カード 1)
ATR: 3B D6 18 00 80 B1 80 6D
1F 03 80 51 00 61 10 30
9E
長い ATR 転送時間 (約 900 ミリ秒) でリセット
プロトコルを T0 に設定し、成功を期待
専用コマンドですべてのカード ファイルを消去し、成功を期待
テスト ファイル 0002 を作成し、成功を期待
テスト ファイル 0002 を選択し、成功を期待
256 バイトを 64 バイトの 4 ブロックとして書き込み、成功を期待
256 バイトを 64 バイトの 4 ブロックとして書き込んで確認し、成功を期待
1 つのブロックとして 255 バイトを書き込み、成功を期待。 カードは、残り 8 バイトになるまで 1 バイト モードのバイトを受け取ります。その時点で、残りのデータはホストから 1 つのブロックとして要求されます。成功を期待
受信バッファーを 9 バイトに設定し、カードから 10 バイトの応答の受け取りを試行し、ERROR_INSUFFICIENT BUFFER を期待
形式に誤りがある (Lc とデータ長が一致しない) select コマンド 00 a4 00 00 08 00 を送信し、ERROR_INVALID_PARAMETER を期待
存在しないファイルを選択し、6A 82 を期待
コマンドを送信してカードをサイレントにし (80 00 01 00 01 11)、ERROR_SEM_TIMEOUT を期待
カードをリセット
echo コマンドをカードに送信して、要求の待機時間の延長 (1、2、5、30 の延長) をテストし、成功を期待
Athena\Inverse Convention テスト カード (カード 2)
ATR: 3F 96 18 80 01 80 51 00
61 10 30 9F
長い ATR 転送時間 (約 900 ミリ秒) でリセット
プロトコルを T0 に設定し、成功を期待
専用コマンドですべてのカード ファイルを消去し、成功を期待
テスト ファイル 0002 を作成し、成功を期待
テスト ファイル 0002 を選択し、成功を期待
256 バイトを 64 バイトの 4 ブロックとして書き込み、成功を期待
256 バイトを 64 バイトの 4 ブロックとして書き込んで確認し、成功を期待
1 つのブロックとして 255 バイトを書き込み、成功を期待。 カードは、残り 128 バイトになるまで 1 バイト モードのバイトを受け取ります。その時点で、残りのデータはホストから 1 つのブロックとして要求されます。成功を期待
受信バッファーを 9 バイトに設定し、カードから 10 バイトの応答の受け取りを試行し、ERROR_INSUFFICIENT BUFFER を期待
形式に誤りがある (Lc とデータ長が一致しない) select コマンド 00 a4 00 00 08 00 を送信し、ERROR_INVALID_PARAMETER を期待
存在しないファイルを選択し、6A 82 を期待
コマンドを送信してカードをサイレントにし (80 00 01 00 01 11)、ERROR_SEM_TIMEOUT を期待
カードをリセット
echo コマンドをカードに送信して、要求の待機時間の延長 (1、2、5、30 の延長) をテストし、成功を期待
Axalto 32K eGate テスト カード (カード 3)
ATR: 3B 95 18 40 FF 62 01 02
01 04
プロトコル T=1 の設定を試み、ERROR_NOT_SUPPORTED を期待
プロトコル T=0 を設定
カード トランスポート キーを使用して認証し、成功を期待
以前の実行からファイルを削除してカードの状態をクリーンアップし (RSA 公開キー ファイルと秘密キー ファイル、ユーザー PIN ファイル、テスト ファイルの削除)、成功を期待
新しいテスト ファイル 0055 を作成し、成功を期待
テスト ファイルへのブロック 1、25、75、128 バイトの書き込みをテストし、成功を期待
テスト ファイルからの 128 バイトの読み取りをテストして、データを比較し、成功を期待
テスト ファイル 0055 を削除し、成功を期待
PIN ファイルを作成し、成功を期待
ユーザー PIN を 00000000 に設定し、成功を期待
秘密キー ファイルを作成し、成功を期待
公開キー ファイルを作成し、成功を期待
秘密キー ファイルを選択し、成功を期待
PIN を持つユーザーを認証し、成功を期待
キー ペアを生成し、成功を期待
16 バイトのデータをハッシュし、成功を期待
ハッシュ操作への応答データ (20 バイト + 2 バイトの応答) を取得し、成功を期待
Infineon SiCrypt Card モジュール テスト カード (カード 4)
ATR: 3B DF 18 00 81 31 FE 67
00 5C 49 43 4D D4 91 47
D2 76 00 00 38 33 00 58
プロトコル T=0 の設定を試み、ERROR_NOT_SUPPORTED を期待
プロトコル T=1 を設定し、成功を期待
PIN 12345678 を使用して認証し、成功を期待
以前の実行以降のファイルを削除 (ある場合)
新しいテスト ファイル 0007 を作成し、成功を期待
ファイル 0007 を選択し、成功を期待
システム時刻を記録
カードに 1、25、50、75、100、125、128 バイトのテスト ブロックを書き込む - 各ブロックの書き込み後にデータを読み取って確認し、成功を期待
システム時刻を取得し、テスト完了までの経過時間を秒で表示
ファイル 0007 を選択し、成功を期待
バイト値 55 の 128 バイト ブロックを書き込み、読み取って確認し、成功を期待
バイト値 AA の 128 バイト ブロックを書き込み、読み取って確認し、成功を期待
バイト値 00 の 128 バイト ブロックを書き込み、読み取って確認し、成功を期待
バイト値 FF の 128 バイト ブロックを書き込み、読み取って確認し、成功を期待
存在しないファイル 7777 を選択し、9404 を期待
00 a4 00 00 で MF を選択し、90 00 (成功) を期待
無効なファイル 77 を選択し、94 04 を期待
形式に誤りがある (Lc とデータ長が一致しない) select コマンド 00 a4 00 00 08 00 を送信し、94 04 を期待
形式に誤りがある (短すぎる) select コマンド 00 a4 00 を送信し、67 00 を期待
MF から DF 5555 を作成し、成功を期待
5555 を選択し、成功を期待
5555 から DF 5656 を作成し、成功を期待
5656 を選択し、成功を期待
DF 5656 でファイル 5757 を作成し、成功を期待
MF から完全なパスでファイルを選択し、成功を期待
ファイルに 8 バイト書き込み、読み取り、確認し、成功を期待
選択したファイルを削除し、成功を期待
完全なパスでファイルの選択を試行し、94 04 を期待
DF 5656 を選択して削除し、成功を期待
DF 5555 を選択して削除し、成功を期待
ファイル 0007 を選択して削除し、成功を期待
カード リーダー テストの実行
警告
パート D の電源管理テスト ケースでは、コンピューターが休止状態になり、テスト スマート カード リーダーでスマート カードを抜き取ったり再挿入したりする必要がある場合があります。
パート A、B、C、および E
PC/SC ワークグループのテスト カード セット 2 のカードを使用して、パート A、B、C、E の画面の指示に従います。 メッセージが表示されたら、テスト スマート カード リーダーに各スマート カードを挿入してから抜き取ります。
パート D
パート D の画面の指示に従って、4 つの電源管理テスト ケースを完了します。 メッセージが表示されたら、テスト スマート カード リーダーにスマート カードを挿入またはそこからスマート カードを抜き取り、休止状態にするか、テスト コンピューターを再起動します。
テスト 1 カード抜き取り/カード抜き取りテスト ケースを実行するには:
テスト スマート カード リーダーからスマート カードを抜き取ります。
コンピューターは 15 秒後に自動的に休止状態になります。
コンピューターを 30 から 60 秒間休止状態のままにします。
コンピューターの電源ボタンを押してコンピューターを休止状態から復帰させ、テストを続行します。
メッセージが表示されたら、スマート カードをテスト スマート カード リーダーに再挿入します。
テスト 2 カード挿入/カード抜き取りテスト ケースを実行するには:
スマート カードがテスト スマート カード リーダー内にあることを確認します。
コンピューターは 15 秒後に自動的に休止状態になります。
コンピューターを 30 から 60 秒間休止状態のままにします。
テスト スマート カード リーダーからスマート カードを抜き取ります。
コンピューターの電源ボタンを押して、コンピューターを休止状態から復帰させます。
メッセージが表示されたら、次のテスト ケースを開始する前に、スマート カードをテスト スマート カード リーダーに再挿入します。
テスト 3 カード挿入/カード挿入テスト ケースを実行するには:
スマート カードがテスト スマート カード リーダー内にあることを確認します。
コンピューターは 15 秒後に自動的に休止状態になります。
コンピューターを 30 から 60 秒間休止状態のままにします。
コンピューターの電源ボタンを押して、コンピューターを休止状態から復帰させます。
メッセージが表示されたら、次のテスト ケースを開始する前に、スマート カードをテスト スマート カード リーダーから抜き取ります。
テスト 4 カード抜き取り/カード挿入テスト ケースを実行するには:
スマート カードがテスト スマート カード リーダー内にないことを確認します。
コンピューターは 15 秒後に自動的に休止状態になります。
コンピューターを 30 から 60 秒間休止状態のままにします。
スマート カードをテスト スマート カード リーダーに再挿入します。
コンピューターの電源ボタンを押して、コンピューターを休止状態から復帰させます。 スマート カード リーダー テストが完了します。
テスト ログ ファイルを表示します。
その他すべての必須テストを実行します。
このテスト申請に必要なすべてのテストが正常に完了したら、テスト結果を返します。
コマンド構文
HLK Studio の外部でこのコマンドを実行するには、スマート カード サービスを停止し、コマンドを実行してから、スマート カード サービスを開始する必要があります。
コマンド | 説明 |
---|---|
ifdtest2.exe -sd -se -sf |
テストを実行します。 |
ファイル一覧
ファイル | 場所 |
---|---|
ifdtest2.exe |
<testbinroot>\nttest\Driverstest\storage\wdk\ |
パラメーター
パラメーター名 | パラメーターの説明 |
---|---|
LLU_NetAccessOnly | テスト ファイル共有にアクセスするためのユーザー アカウントです。 |
LLU_LclAdminUsr | テストを実行するためのユーザー アカウント |