2012-09-18 155 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