TPDFlibSignatureVerifier
安全与签名
说明
枚举 PDF 签名字段与 CMS 签名者,在无需将整个 PDF 载入内存的情况下验证所选签名,并将精确的已签名修订覆盖范围与密码学完整性分开报告
验证器通过 OpenPDF、OpenPDFStream 或 OpenPDFString 接受文件、由调用方拥有的流或 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 完整性结果 |
|---|---|
| CoverageStatus | scInvalid、scSignedRevision 或 scWholeDocument |
| ByteRangeValid | 仅当所有范围均有界、Contents 间隙精确,且已签名修订以其自身的 %%EOF 结尾时才为 True |
| ContentsGapValid | 仅当被省略的字节恰好是所选的十六进制 /Contents 标记时才为 True |
| HasLaterRevisions | 当所选签名对更早的增量修订有效,但存在后续字节时为 True |
| SignedRevisionLength | 由所选签名进行认证的修订的字节长度 |
| DocumentLength | 当前 PDF 的字节长度 |
| NativeError | 完整性验证失败时的 Windows CryptoAPI 错误代码 |
兼容性方法
VerifySignature、GetSignatureMetadata、GetSignerCertificate 和 VerifySignerCertificateChain 仍然可用,并选择字段 0 和签名者 0
如需显式选择,请使用 GetSignatureMetadataByIndex、GetSignatureMetadataByName、GetSignerCertificateByIndex、GetSignerCertificateByName、VerifySignerCertificateChainByIndex 或 VerifySignerCertificateChainByName