2012-06-10 25 views
0

我正從Java智能卡讀取PKCS證書對象,該對象在兩個單獨的緩衝區中返回證書數據。一個用於標記&長度,另一個用於值。 (即T-BUffer和V-Buffer)。 (ASN.1編碼)從智能卡T和V緩衝區獲取簡單TLV

緩衝與TL值看起來像..

06 00 15 01 72 27 00 00 80 00 FE 02 06 00 15 01 69 3F 06 00 15 01 68 FF 01 01 06 00 15 01 67 DD 06 00 15 01 DC 0B 06 00 15 01 66 FF 45 04 00 FF 20 02 C8 25 00 FF 20 02 DC 05 00 00 90 00 FE 05 07 00 15 01 72 27 07 00 15 01 69 39 07 00 15 01 68 FF 01 01 08 00 15 01 72 27 08 00 15 01 69 3A 08 00 15 01 68 FF 01 01 07 00 15 01 67 ED 07 00 15 01 DC 0B 07 00 15 01 66 FF 60 04 08 00 15 01 67 ED 08 00 15 01 DC 0B 08 00 15 01 66 FF

值緩衝區5277個字節長,看起來像....

00 01 01 33 39 42 43 37 39 33 42 2D 42 36 32 33 2D 34 33 33 38 2D 42 39 35 31 2D 42 45 42 43 33 34 35 38 35 37 31 44 00 01 01 78 9C 53 62 64 60 60 66 60 60 60 64 60 64 02 32 45 80 CC B6 FF DF 9E 6C EE DF B8 F8 E0 71 D7 CC 73 35 AE 01 AE B2 76 35 2C 8C 20 25 40 C0 06 63 28 02 49 16 10 83 83 81 01 00 EC 33 0B A2 00 DF 07 9F F5 B5 E7 D1 F3 1F 98 41 F2 9A 39 B3 6E 7C 34 4F CB E1 C1 E7 F4 69 17 63 5E CD B8 6C 10 14 8D 6A 4B 32 B0 90 27 22 44 97 A3 E7 1B 63 75 D5 F2 22 E7 07 22 B3 7F 01 FD 1E 3B BB 66 85 0B 48 68 DF CC 66 11 86 E9 D7 77 1A 31 2E 7D AB BF 89 4C 18 AF 74 B5 B5 5F 9D 4D F8 8C 84 03 13 12 10 37 E0 9E C5 E6 82 69 B2 ...

我想將TL和Vs合併到單個緩衝區中,但一直沒有能夠以這種有效的方式實現ASN.1和我總是在價值結束之前耗盡標籤。最後,第一個標籤指示零長度的對象標識符,這似乎也沒有多大意義。

任何幫助將不勝感激。我讀過很多規格。善良找到ansswer

感謝,

回答

1

我也不明白這些T和V緩存是如何工作的一切,但我可​​以找到你的T-緩衝標記,這應該可以幫助您。

您寫道:「最後,第一個標籤指示零長度的對象標識符,這似乎也沒有多大意義。」

你是對的!第一個標籤是不是 0x06長度爲0x00。

  • 在你的T-緩衝區,第一個標籤是0x72長度爲0×27 - 我認爲這是MSCUID按照NIST IR 6887

  • 的第二個標籤是0×69

  • 第三標籤是0x68(也許是公鑰,也許字節反轉)

  • 第四標籤×67

  • 第五標籤的0xDC(MAYB E中的PKI AID)

  • 6標籤是0x66

  • 等..

意識到這種模式?您的T緩衝區中的每個標記都以0_ 00 15 01開頭。在我看到的特定卡片上,標籤之前是00 00 14 01。

不幸的是,我不知道這4個字節是什麼意思,我也不明白T緩衝區中標籤長度後的值是多少,如果你需要的話。

希望這是有價值的信息,讓你開始。歡呼聲中,

AME

+0

這將是一個很大的幫助。我已經看到了這種模式,但過於關注06 00 15 01.數據應該包含三個證書,我注意到了06 00 15 01的模式,但也注意到了07 00 15 01和08 00 15 01. –

0

您寫道:「的數據應該包含三個證書,我也注意到模式06 00 15 01也07 00 15 01 08 00 15 01」。

有趣的觀察。很有可能每個證書都被標記爲0x66

此外,我注意到在您的第二物體開始與78 9CV-緩衝器:此爲*的zlib壓縮文件中的標題。您可能會在V緩衝區的其他地方找到這個頭文件(例如,也可能是證書),您需要先解壓縮。很多很有趣的事情在你到達一個有效的ASN.1之前等你。:-)

祝你好運!

AME

* HTTP://en.wikipedia.org/wiki/Zlib
* HTTP://zlib.net/

+0

我以爲zLib頭是1F,8B? –