TPDFlibSignatureVerifier

安全与签名

说明

枚举 PDF 签名字段与 CMS 签名者,在无需将整个 PDF 载入内存的情况下验证所选签名,并将精确的已签名修订覆盖范围与密码学完整性分开报告

验证器通过 OpenPDFOpenPDFStreamOpenPDFString 接受文件、由调用方拥有的流或 ANSI 字节串

选择

Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);

VerifySignatureByIndex 通过从零开始的索引来选择 PDF 字段,而 VerifySignatureByName 使用完全限定的 AcroForm 字段名称,这两种方法均接受一个从零开始的 CMS 签名者索引

验证报告

IntegrityResult所选签名者的密码学 CMS 或旧式 PKCS#7 完整性结果
CoverageStatusscInvalidscSignedRevisionscWholeDocument
ByteRangeValid仅当所有范围均有界、Contents 间隙精确,且已签名修订以其自身的 %%EOF 结尾时才为 True
ContentsGapValid仅当被省略的字节恰好是所选的十六进制 /Contents 标记时才为 True
HasLaterRevisions当所选签名对更早的增量修订有效,但存在后续字节时为 True
SignedRevisionLength由所选签名进行认证的修订的字节长度
DocumentLength当前 PDF 的字节长度
NativeError完整性验证失败时的 Windows CryptoAPI 错误代码

兼容性方法

VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain 仍然可用,并选择字段 0 和签名者 0

如需显式选择,请使用 GetSignatureMetadataByIndexGetSignatureMetadataByNameGetSignerCertificateByIndexGetSignerCertificateByNameVerifySignerCertificateChainByIndexVerifySignerCertificateChainByName