首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EvoPdf签署Pdf文档

使用EvoPdf签署Pdf文档
EN

Stack Overflow用户
提问于 2019-08-27 09:45:00
回答 1查看 121关注 0票数 2

我试图签署一个现有的PDF与证书,是位于我的本地个人电脑商店。基于这篇文章,我确定了X509Certificate2类型的正确证书。

对于签名,我想使用EvoPdf (在这里我不可能使用iTextSharp;这会使事情变得更容易),而签名演示使用的是一个DigitalCertificate,它不提供信息(特别是在两个类中几乎完全不同的subject属性),我需要标识正确的证书(我可以手动从EvoPdf中识别正确的证书,但这对我没有多大帮助,因为证书可能会改变,我需要一个健壮和持久的解决方案。我现在所做的是第一步:从X509Store(StoreName.My)中识别正确的证书,并保持SerialNumber (类型为String),并将其与DigitalCertificate的SerialNumber (类型为Byte[])进行比较,这是获得匹配的最佳更改:

代码语言:javascript
复制
            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一起使用?

EN

回答 1

Stack Overflow用户

发布于 2022-11-15 15:30:04

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

代码语言:javascript
复制
// 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); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57671896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档