Подписи 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, когда обе политики выбирают один алгоритм