使用 EvoPdf 签署 PDF 文档



我正在尝试使用位于本地PC存储中的证书对现有PDF进行签名。根据这篇文章,我确定了X509Certificate2类型的正确证书。

对于签名,我想使用EvoPdf(不幸的是,我不能在这里使用iTextSharp;这将使事情变得更容易(,并且签名演示使用不提供信息的数字证书(尤其是主题属性,在两个类中几乎完全不同(我需要识别正确的证书(我可以手动识别来自DigitalCertificateStore.GetCertificates(CertSystemStore.PersonalCertificate(的正确证书(但这对我没有多大帮助,因为证书可能会更改,我需要一个强大而持久的解决方案。 我现在所做的是第一个:从X509Store(StoreName.My( 中识别正确的证书并保留序列号(字符串类型(,并将其与数字证书的序列号(类型为 Byte[](进行比较,这是获得匹配的最佳更改:

foreach (DigitalCertificate cert in DigitalCertificatesStore.GetCertificates(CertSystemStore.PersonalCertificates))
{
var serialNumber = String.Empty;
foreach (var b in cert.SerialNumber)
{
serialNumber = $"{b:X2}{serialNumber}";
}
if (serialNumber != x509Cert.SerialNumber)
{
continue;
}
this.pdfCertificate = cert;
break;
}

有人有更好的解决方案吗?(如何(我可以直接将x509证书与EvoPdf一起使用?

在 .NET 5/6 中,我使用如下代码:

// Get Personal Certificates with EvoPDF API
var evoCerts = DigitalCertificatesStore.GetCertificates(); 
byte[] evoSerNum = Convert.FromHexString(x509Cert.SerialNumber).Reverse().ToArray();
// Match x509Cert and evoCert by SerialNumber
this.pdfCertificate = evoCerts.GetCertBySerialNumber(evoSerNum); 

最新更新