簡體   English   中英

在EMV事務中解析PDOL以獲取GET PROCESSING OPTIONS命令

[英]Parsing PDOL for GET PROCESSING OPTIONS command in EMV transaction

我正在嘗試構建一個格式正確的GET PROCESSING OPTIONS命令,以發送到非接觸式EMV卡。 這篇文章非常有用,但我只需要了解更多細節。

在解析PDOL時,可以安全地假設每個標記的長度為2個字節,然后是預期的數據大小嗎?

例如,PDOL 9F66049F02069F37049F1A02分為9F66 04 9F02 06等,每個都有2個字節的標簽,1個字節用於預期的數據長度。

在解析時假設每個標記的長度是2個字節是否安全?

不,你不能指望每個標簽都包含兩個字節(盡管大多數標簽都有)。 EMV中的標簽長度​​值(TLV)結構遵循ASN.1編碼規則(基本編碼規則,BER)。 有關詳細信息,請參閱以下文檔:

后者是一個非常好的介紹,幫助我入門。

TLV結構(數據對象)由標記值,長度值和數據有效負載(值)組成:

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

PDOL(以及任何其他數據對象列表,DOL)包含標記和一個或多個此類數據對象的長度部分。 類似地,PDOL相關數據包含PDOL中引用的DO的值部分。 標簽和長度部分都可以包含一個或多個字節。

對於標記部分,規則與此類似(有關詳細信息,請參閱上述參考):

  • 如果第一個標記字節的低5位全部為1( tag[0] & 0x01F == 0x01F ),則標記至少包含兩個字節。
  • 如果下一個標記字節的高位是1( tag[i] & 0x080 == 0x080 ),則標記由另外一個字節組成。 對於每個后續字節重復此操作。

對於長度部分,規則大約是這樣的(有關更多詳細信息,請參閱上面的參考資料):

  • 如果第一長度字節的高位為零( length[0] & 0x080 == 0 ),則剩余的7位編碼長度值( length[0] & 0x07F )。
  • 如果第一長度字節的高位是1( length[0] & 0x080 == 0x080 ),則剩余的7位編碼長度部分的剩余字節數( length[0] & 0x07F )。 其余字節表示長度值為無符號整數,MSB優先。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM