2012-09-18 157 views
0

我使用ASP.NET,C#和iTextSharp 5.3.0來創建和數字簽名PDF。然後我需要在簽名時使用pfx文件。有人可以解釋它將包含什麼?如何閱讀.pfx文件?

編輯:

感謝,所以它具有密鑰對。

我確實使用過這段代碼。

FileStream fs = new FileStream(CERT_PATH, FileMode.Open); 
Pkcs12Store ks = new Pkcs12Store(fs, CERT_PASSW.ToCharArray()); 
string alias = null; 
foreach (string al in ks.Aliases) 
{ 
if (ks.IsKeyEntry(al) && ks.GetKey(al).Key.IsPrivate) 
    { 
    alias = al; 
    break; 
    } 
} 
    Certificate[] x = ks.getCertificateChain(alias) 
    X509Certificate[] chain=new X509Certificate[x.length] 
    for(int k=0;k<x.length;k++) 
    { 
     chain[k]=x[k].Certificate; 
    } 

謝謝,現在工作正常。

+2

檢查棧答案http://stackoverflow.com/a/379033/1358004 –

+0

可有人告訴我怎麼去upvote這個問題?因爲我確實改變了帖子,但沒有迴應。我失去了詢問問題的權限。那麼是否有可能從關閉中恢復狀態。 – Giri

+0

我希望它能提高一些質量。 – Giri

回答

2

請仔細閱讀iText的和數字簽名白皮書:http://itextpdf.com/book/digitalsignatures

PFX文件是包含私人和公共密鑰對舊的類型的文件。您可以像使用P12文件一樣​​使用它。這在文檔中有解釋。請注意,Stackoverflow上的舊答案不再適用。數字簽名功能已被完全重寫。

如果你不知道如何在C#中的密鑰庫:

FileStream fs = new FileStream(CERT_PATH, FileMode.Open); 
Pkcs12Store ks = new Pkcs12Store(fs, CERT_PASSW.ToCharArray()); 
string alias = null; 
foreach (string al in ks.Aliases) { 
    if (ks.IsKeyEntry(al) && ks.GetKey(al).Key.IsPrivate) { 
     alias = al; 
     break; 
    } 
} 
+0

謝謝..但我不能使用密鑰庫類閱讀。我使用C#。 – Giri

+0

呃......在這種情況下,我明白爲什麼其他人低估了(並且關閉了)這個問題(你從我這裏得到了讚賞)。我已經添加了一個代碼示例,但確實如此:您在提問時應該做得更好。如果你不... –

+0

Thanks..ok..sure..i will .. – Giri