【发布时间】:2016-07-06 13:50:04
【问题描述】:
我开发了适用于 pdf 文档的应用程序,并且我必须了解我的文档是由受信任的签名签名的。 我使用 itextsharp 获取信息,但我不知道如何检查签名的有效性。
var pdfReader = new PdfReader(document.FilePath);
var acroFields = pdfReader.AcroFields;
var names = acroFields.GetSignatureNames();
foreach (var name in names)
{
var signatureName = name as string;
var pk = acroFields.VerifySignature(signatureName);
var signatureIsValid = false;
foreach (var certificate in pk.Certificates)
{
signatureIsValid = certificate.IsValidNow; // It just check date
}
}
下面屏幕上的文档有两个数字签名,但他们在没有受信任证书的情况下签名。我必须向用户显示一些类似的消息。
【问题讨论】:
-
你检查所有
pk.Certificates。这不是必需的,签名可能会带来比构建签名链所需的证书更多的证书。因此,正如@fatherOfWine 在他的回答中所表明的那样,选择签名者证书,构建其链并检查该链。
标签: c# pdf itext digital-signature