1

スマート カード リーダーを使用してカードと通信しようとしています。Java SE アプリからこれを行うために Jaccal を使用しています。私が抱えている問題は、VERIFY コマンドが正しい (オフライン PIN) と確信しているにもかかわらず、ステータス ワード = 69 85 (使用条件が満たされていない) を取得し続けることです。したがって、私のコマンドは次のようになります。

検証コマンド:

00 20 00 80 08 24 94 94 FF FF FF FF FF

PIN は 9494 です。これはテスト カードであるため、PIN を開示してもかまいません。

よろしくヴィック

4

2 に答える 2

3

ステータスワード= 69 85は、 EMV 4.3ブック3のセクション「6.3.5ステータスバイトのコーディング」で、「コマンドが許可されていません」(「使用条件が満たされていない」)と定義されています

アプリケーションとカード間の EMV ダイアログ全体を提供すると、トラブルシューティングに役立ちますが、この問題が発生する一般的なケースを次に示します。

「この関数は、アプリケーション データの読み取り後、端末アクション分析の完了前にいつでも実行できます。」

  • お使いのカードはオフライン PIN 検証をサポートしていません。

VERIFY コマンドの実行シーケンスを順守しているかどうかを検証するために、一般的な実行シーケンスの例を次に示します。

  1. ファイルを選ぶ
  2. 処理オプションを取得する
  3. READ RECORD (必要な回数)
  4. データを取得
  5. 確認
  6. アプリケーション暗号文の生成

カードがオフライン PIN 検証をサポートしているかどうかを確認するには:

  1. GET PROCESSING OPTIONS コマンドに応答して返された Application Interchange Profile フィールド (AIP、タグ 82) を確認します。セクション「10.5 カード所有者の検証」で説明されているように、カード所有者の検証がサポートされている場合は、バイト 1、ビット 5 を 1 に設定する必要があります。AIP 値の例: 1C 00
  2. カード所有者検証方法 (CVM) リスト (タグ 8E) で、バイト 1、ビット 1 = 1 の有効な CVM ルールがあることを確認します (「ICC によって実行される平文の PIN 検証」を意味し、付録「C3 カード所有者検証ルール形式」 )。CVM リストは、それぞれ 4 バイトの 2 つの量フィールドで始まり、次に可変数の 2 バイト CVM ルールです。最後のルールがオフライン PIN を強制する CVM リストの例: 00 00 00 00 00 00 00 00 02 01 01 00。
于 2014-01-10T23:00:22.070 に答える
1

verify コマンドを使用する正しい順序は次のとおりです。

  • 支払いアプリケーションを選択

    00A4040007A000000003101000
    (or 00A4040007A000000004101000, or whatever application you want to use)
    
  • 処理オプションを取得

    80A8000002830000
    (possibly with adapted data objects according to PDOL)
    
  • (オプション) 現在の PIN 試行カウンターを確認します

    80CA9F1700
    
  • PIN を確認します (カードがプレーン テキストの PIN による確認をサポートしている場合)

    002000800824xxxxFFFFFFFFFF
    (where xxxx is a 4 digit PIN)
    

判明したように、1 つの PIN VERIFY コマンドのみが受け入れられます。

于 2014-01-10T13:36:02.770 に答える