2015-12-29 33 views
5

正しくフォーマットされたGET PROCESSING OPTIONSコマンドを非接触EMVカードに送信しようとしています。 This postは非常に役に立ちましたが、もう少し詳しく知る必要があります。EMVトランザクションでGET PROCESSING OPTIONSコマンドのPDOLを解析する

PDOLを解析する場合、各タグの長さが2バイトで、その後に返されるデータのサイズが続くと想定するのは安全でしょうか?

は、例えば、PDOL 9F66049F02069F37049F1A02は、2個のバイトのタグおよびデータ値の予想される長さ1バイトで等 9F66 049F02 06、それぞれに分割されます。

解析中に各タグの長さが2バイトであると想定するのは安全ですか?

+0

私はPDOL解析を完了しましたか? – Olivarsham

+1

@Olivarsham私たちは、テストしたすべてのカードがPDOLに2バイトのタグしか使用していなかったので、2バイトを使用しました。マイケルローランズは、タグの長さを決定する方法を理解するのを助けました。(次のタグバイトの上位ビットが1つの場合(タグ[i]と0x080 == 0x080)、タグはもう1バイトで構成されます。これは、後続のバイトごとに繰り返されます。」 ここでPDOLの解析について詳しく知るには良いリソースです: http://www.openscdp.org/scripts/tutorial/emv/initiateapplicationprocess.html EMVトランザクション: http://www.openscdp.org/scripts/tutorial/emv/index.html –

+0

テストしたカードの中には、「9505」、「9A03」、「9C01」というタグが2バイトしかないものがあります。私はPDOLのための別のパーサーを書く必要があるように見えます。とりあえずありがとう! – Olivarsham

答えて

6

いいえ、各タグが2バイトで構成されているとは思えません。 EMVのタグ長さ値(TLV)構造は、ASN.1エンコーディング規則(基本的なエンコーディング規則、BER)に従います。詳細については、次のドキュメントを参照してください:

後者は私が始める助け本当に良い紹介です。

A TLV構造(データ・オブジェクト)は、タグ値、長さ値、およびデータ・ペイロード(値)から構成されています

 
+-----------+-----------+-----------+ 
| Tag | Length | Value | 
| (N Bytes) | (M Bytes) | (L bytes) | 
+-----------+-----------+-----------+ 

PDOL(及び他のデータオブジェクトのリスト、DOL)が含まれタグおよびそのような1つまたは複数のデータオブジェクトの長さ部分を含む。同様に、PDOL関連データは、PDOLで参照されるDOの値部分を含む。両方とも、タグと長さ部分は1つ以上のバイトで構成されます。次いで、第1のタグバイトの下位5ビットは、すべてのもの(tag[0] & 0x01F == 0x01F)である場合

  • 、:タグ部分について、ルールがこの(詳細は上記の参考文献を参照のこと)のような程度である

    タグは少なくとも2バイトで構成されます。

  • 次のタグ・バイトの上位ビットが1(tag[i] & 0x080 == 0x080)の場合、タグはもう1バイトで構成されます。これは後続のバイトごとに繰り返されます。次いで、第1の長さバイトの上位ビットがゼロ(length[0] & 0x080 == 0)である場合

    • 長さ部分について、ルールがこの(詳細は上記の参考文献を参照のこと)のような程度である

    残りの7ビットは長さ値(length[0] & 0x07F)を符号化する。

  • 最初の長さバイトの上位ビットが1(length[0] & 0x080 == 0x080)である場合、残りの7ビットは、長さ部分の残りのバイト数を符号化します(length[0] & 0x07F)。残りのバイトは、長さの値をMSBファーストの符号なし整数として表します。
+1

ASNのリンクをありがとう。私は通常のTLVデータオブジェクトのためにデコードされたTLVを持っていますが、タグと長さのDOLだけに調整するのは難しいです。 「長さ部分」は、私の一部でさらに読書が必要です。ご協力いただきありがとうございます。 –

関連する問題