2014-07-14 23 views
6

給定在PEM內部編碼的任意(有效!)私鑰或公鑰,並且pre-encapsulation boundarypost-encapsulation boundaries完好無損,是否有可能確切知道字節需要什麼格式(即它們是OpenSSL traditional,PKCS8,X.509,SubjectPublicKeyInfo等等),還是需要一些先驗信息來正確解碼它們?給定一個PEM文檔,是否有可能知道它的字節格式,還是需要先驗信息?

+0

'BEGIN SOMETHING'邊界暗示內容可能是SOMETHING,但它不具有約束力,這意味着PEM讀者不應該假定基於邊界標題的具體內容,並應該使用邊界來找出文件邊界。 –

回答

0

對於證書,情況幾乎是直截了當的 - 那裏的邊界線指定了期望的內容(證書或私鑰)。

在OpenPGP裝甲數據中,邊界線還會告訴您預期的是 - 密鑰或數據。

由多個SSH應用程序創建的SSH密鑰具有相同的邊界線,但密鑰本身的格式不同。所以你需要嘗試閱讀所有預期格式的數據。

RSA公共密鑰通常具有RSA 1.5格式,因此您可以假設您擁有RSA密鑰。

PKCS#12通常不會包裝到PEM(我從來沒有見過這樣的文件)。 PKCS8也是如此。

PKCS#7證書存儲區有時是PEM編碼的,它們的邊界線上有類似BEGIN CERTIFICATE STORAGE的內容。

總結一下 - 在某種程度上,你可以依靠邊界線文本,但是這不會給你100%的保證。

相關問題