Подписи SHA3 и метки времени в PDF
HotPDF применяет единую digest-политику к отсоединённому CMS, signed attributes, идентификаторам подписей RSA или ECDSA, message imprint в RFC 3161, timestamp'ам подписей, timestamp'ам документа, словарям Seed Value и проверке загруженных подписей
Выбор digest
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, функции подписания stream, внешние подписанты и signature provider'ы используют выбранный digest без fallback на SHA-256
RSA PKCS#1 v1.5 использует специфичный для digest DigestInfo, RSA-PSS — согласованные параметры hash и MGF1, а cmsECDSA выдаёт комбинированный OID подписи ECDSA для выбранного digest
Политика timestamp
GetContentTimeStamp получает выбранный digest документа, а GetSignatureTimeStamp — выбранный digest значения подписи CMS
Возвращённые token'ы RFC 3161 отклоняются, если и OID message imprint, и байты не совпадают с выбранной digest-политикой
Перегрузка THotPDF.RenewPAdESLTATimestamp с параметром DigestAlgorithm применяет ту же политику к обновлению archive timestamp, а compatibility-перегрузка остаётся на SHA-256
Объявление в PDF и Seed Values
Использование SHA3-256, SHA3-384 или SHA3-512 в THPDFPage.AttachPAdESSeedValue автоматически объявляет developer extension ISO 32001 для PDF 2.0
Запись в каталоге использует /Extensions /ISO_ с /BaseVersion /2.0, /ExtensionLevel 32001, /ExtensionRevision (:2022) и /Type /DeveloperExtensions
Требования к provider
THPDFPKCS11SignatureProvider отображает запросы SHA3 на соответствующие идентификаторы hash и MGF PKCS#11 и конвертирует сырые подписи ECDSA в CMS DER
THPDFWindowsKeyStorageSignatureProvider передаёт выбранный алгоритм SHA3 в CNG и тоже конвертирует сырые подписи ECDSA в CMS DER
SignPDFWithSystemCertificate применяет ту же политику CNG к ключам из хранилища сертификатов Windows, а устаревшие ключи CryptoAPI явно отклоняют SHA3
Token, key-storage provider или версия Windows без поддержки запрошенного алгоритма SHA3 возвращают явный статус «не поддерживается»
Потоковая производительность
Диапазоны байтов PDF хешируются ограниченными chunk'ами, и подписание SHA3 может делить один скан диапазонов с генерацией PDF MAC — вплоть до прямого переиспользования digest, когда обе политики выбирают один алгоритм