Запись THPDFCMSVerifyOptions
Задаёт лимиты верификации подписей CMS, внешние provider-ы, закрепление политики подписи и повторную верификацию меток времени
Объявление
THPDFCMSVerifyOptions= record
SignatureProvider: THPDFSignatureProvider;
AllowMLDSA: boolean;
OpenSSLLibraryPath: string;
MaxSignerCount: Integer;
MaxCounterSignatureDepth: Integer;
// Policy pinning is applied to primary SignerInfo values. Empty
// expected fields do not constrain the corresponding policy field
RequireSignaturePolicy: boolean;
ExpectedSignaturePolicyOID: AnsiString;
ExpectedSignaturePolicyHash: TBytes;
SignaturePolicyDocument: TBytes;
// Set this flag to hash an intentionally empty policy document
VerifySignaturePolicyDocumentHash: boolean;
RejectUnknownSignaturePolicyHash: boolean;
// Batch validation sets this when a shared timestamp cache already
// holds the verdict for the embedded signature timestamp token: token
// re-verification is skipped and the caller restores the cached
// THPDFTimestampInfo afterwards. Document timestamps (ETSI.RFC3161)
// never take this path because the token is the primary signature
SkipSignatureTimestampVerification: boolean;
class function Default: THPDFCMSVerifyOptions; static;
end;
Модуль
HPDFSignVerify
Поля
| Поле | Назначение |
|---|---|
SignatureProvider | Необязательный внешний THPDFSignatureProvider для примитивов подписи и верификации; nil выбирает встроенную реализацию |
AllowMLDSA | Разрешает подписи ML-DSA при верификации |
OpenSSLLibraryPath | Каталог с библиотеками OpenSSL, когда верификация идёт через бэкенд OpenSSL |
MaxSignerCount | Верхняя граница числа обрабатываемых основных подписантов; Default задаёт 256 |
MaxCounterSignatureDepth | Предел вложенности контр-подписей; Default задаёт 8 |
RequireSignaturePolicy | При True подписи без политики подписи считаются проваленными |
ExpectedSignaturePolicyOID | OID политики, который основной SignerInfo должен предъявить; пусто — без ограничения |
ExpectedSignaturePolicyHash | Ожидаемый digest политики для закрепления; пусто — без ограничения |
SignaturePolicyDocument | Байты документа политики, используемые для сравнения хешей |
VerifySignaturePolicyDocumentHash | При True хешировать намеренно пустой документ политики |
RejectUnknownSignaturePolicyHash | Валит верификацию, когда встроенный хеш политики не совпал ни с одним ожидаемым значением |
SkipSignatureTimestampVerification | Доверяет кэшированному вердикту для встроенного токена метки времени подписи при пакетной валидации |
Default | Классовая функция, возвращающая обнулённую запись с MaxSignerCount 256 и MaxCounterSignatureDepth 8 |
Примечания по использованию
- Всегда отталкивайтесь от
THPDFCMSVerifyOptions.Default, а не от обнулённой локальной записи, чтобы лимиты подписантов и вложенности реально применялись - Поля закрепления политики применяются только к основным SignerInfo; пустые ожидаемые поля оставляют соответствующую проверку политики без ограничений
- Пакетная валидация устанавливает
SkipSignatureTimestampVerification, когда общий кэш меток времени уже держит вердикт по токену; метки времени документа никогда не идут этим путём