SHA3 PDF 签名和时间戳

HotPDF 在分离的 CMS、签名属性、RSA 或 ECDSA 签名标识符、RFC 3161 消息摘要、签名时间戳、文档时间戳、Seed Value 字典和已加载签名验证中应用统一的摘要策略

摘要选择

THPDFCMSDigestAlgorithm 提供 cmsdaSHA256、cmsdaSHA384、cmsdaSHA512、cmsdaSHA3_256、cmsdaSHA3_384 和 cmsdaSHA3_512

Options := HPDFCMSDefaultOptions(palBaseline_B_T);
Options.DigestAlgorithm := cmsdaSHA3_384;
Options.SignatureScheme := cmsRSAPSS;
Options.PSSSaltLength := 48;

HPDFCMSBuildSignedDataEx、流签名函数、外部签名者和签名提供者都使用选定的摘要,而不回退到 SHA-256

RSA PKCS#1 v1.5 使用摘要特定的 DigestInfo,RSA-PSS 使用匹配的哈希和 MGF1 参数,cmsECDSA 为选定的摘要发出组合的 ECDSA 签名 OID

时间戳策略

GetContentTimeStamp 接收选定的文档摘要,GetSignatureTimeStamp 接收 CMS 签名值的选定摘要

返回的 RFC 3161 令牌被拒绝,除非消息摘要 OID 和字节都匹配选定的摘要策略

带 DigestAlgorithm 参数的 THotPDF.RenewPAdESLTATimestamp 重载将相同的策略应用于存档时间戳续期,而兼容性重载保持 SHA-256

PDF 声明和 Seed Values

在 THPDFPage.AttachPAdESSeedValue 中使用 SHA3-256、SHA3-384 或 SHA3-512 会自动声明 ISO 32001 PDF 2.0 开发者扩展

目录条目使用 /Extensions /ISO_,带 /BaseVersion /2.0、/ExtensionLevel 32001、/ExtensionRevision (:2022) 和 /Type /DeveloperExtensions

提供者要求

THPDFPKCS11SignatureProvider 将 SHA3 请求映射到相应的 PKCS#11 哈希和 MGF 标识符,并将原始 ECDSA 签名转换为 CMS DER

THPDFWindowsKeyStorageSignatureProvider 将选定的 SHA3 算法传递给 CNG,并将原始 ECDSA 签名转换为 CMS DER

未实现请求的 SHA3 算法的令牌、密钥存储提供者或 Windows 版本返回显式的不受支持状态 SignPDFWithSystemCertificate 对 Windows 证书存储密钥应用相同的 CNG 策略,而旧版 CryptoAPI 密钥显式拒绝 SHA3

未实现所请求 SHA3 算法的 token、密钥存储提供程序或 Windows 版本会返回明确的不支持状态

流式性能

PDF 字节范围以有界块进行哈希,SHA3 签名可以与 PDF MAC 生成共享相同的范围扫描,包括当两个策略选择相同算法时直接复用摘要