1 回答
TA贡献1833条经验 获得超4个赞
在问题的标题中,您要求提供一种方法来验证 pdf 文件是否包含有效的数字签名。
但是,您提供的示例文件不是包含数字签名的pdf 文件;相反,它是一个包含 PDF 作为其嵌入式签名数据的签名容器!
因此,iText 告诉您(通过af.GetSignatureNames().Count == 0
)PDF 不包含任何签名也就不足为奇了,因为它确实不包含。
要检查您是否有这样签名的 PDF,您不需要像 iText 这样的 PDF 库,而是需要不同类型的库/API,一个可以检查内容并验证 CMS 签名容器的签名的库,例如 BouncyCastle 用于用于欧盟合格签名验证的第一个简单验证或电子签名 DSS。
有关嵌入签名的 PDF 的背景,请参阅此答案。
考虑到您的示例签名,您可能对根据欧洲合格签名法规进行验证感兴趣。
一种公开可用的验证器实现是CEF 数字签名服务。有一个用于验证使用此软件的演示 Web 应用程序。
DSS 是用 Java 编写的,但您可以将其作为通过 REST 与之通信的服务运行。这也应该允许与 .Net 代码轻松集成。
如果这对您来说是一个选项,只需使用演示 Web 应用程序来验证您的测试用例并检查结果是否符合您的期望。例如,您的示例文件被验证为 TOTAL_PASSED。(在我看来,使用 SHA1withRSA/2048 对签名者证书的 OCSP 响应进行签名有点关键。)
如果这不是您的选择,您仍然可以在github上查看该项目,以了解完整的签名和签名验证服务。
如果所需的验证配置文件不同,请澄清。
- 1 回答
- 0 关注
- 336 浏览
添加回答
举报