Запись THPDFCertificateValidationOptions
Задаёт trust anchor-ы, офлайн-доказательства отзыва, ограничения политик и лимиты алгоритмов для валидации цепочки сертификатов
Объявление
THPDFCertificateValidationOptions= record
TrustAnchors: THPDFDERArray;
IntermediateCertificates: THPDFDERArray;
OCSPResponses: THPDFDERArray;
CRLs: THPDFDERArray;
DeltaCRLs: THPDFDERArray;
CRLIssuerCertificates: THPDFDERArray;
OCSPResponseSources: THPDFValidationEvidenceSourceArray;
CRLSources: THPDFValidationEvidenceSourceArray;
DeltaCRLSources: THPDFValidationEvidenceSourceArray;
RevocationMode: THPDFRevocationMode;
ValidationTime: TDateTime;
MaxPathLength: Integer;
OCSPNoncePolicy: THPDFOCSPNoncePolicy;
ExpectedOCSPNonce: TBytes;
OCSPMaxAgeDays: Double;
OCSPAllowedClockSkewMinutes: Integer;
RequireOCSPNextUpdate: boolean;
AllowDelegatedOCSPResponders: boolean;
RequireOCSPNoCheckForDelegated: boolean;
CRLMaxAgeDays: Double;
CRLAllowedClockSkewMinutes: Integer;
RequireCRLNextUpdate: boolean;
AllowIndirectCRLs: boolean;
RequireDeltaCRLWhenAdvertised: boolean;
TrustPurpose: THPDFCertificateTrustPurpose;
CustomTrustPurposeOID: AnsiString;
InitialPolicySet: THPDFOIDArray;
RequireExplicitCertificatePolicy: boolean;
InhibitCertificatePolicyMapping: boolean;
InhibitAnyCertificatePolicy: boolean;
AlgorithmPolicy: THPDFCertificateAlgorithmPolicy;
// v2.738.0 online chain building: when the path cannot close with
// the supplied pool, fetch the missing intermediates through the
// AIA caIssuers URLs of the leaf-most unmatched certificate before
// failing with cvsPathBuildingFailed (transport stays caller-side)
FetchMissingIntermediates: boolean;
MaxFetchedIntermediates: Integer;
class function Default: THPDFCertificateValidationOptions; static;
end;
Модуль
HPDFSignVerify
Поля
| Поле | Назначение |
|---|---|
TrustAnchors | Сертификаты trust anchor в кодировке DER, которым разрешено замыкать цепочку |
IntermediateCertificates | Дополнительные недоверенные сертификаты, которые построитель может использовать, когда пул CMS неполон |
OCSPResponses / CRLs / DeltaCRLs | Офлайн-пулы ответов OCSP, базовых CRL и delta CRL |
CRLIssuerCertificates | Сертификаты для проверки подписей подписантов CRL |
OCSPResponseSources / CRLSources / DeltaCRLSources | Тег источника доказательств, записываемый для каждого элемента пула и всплывающий в validation info |
RevocationMode | Выбирает поведение отзыва rvmNone, rvmBestEffort или rvmRequire |
ValidationTime | Момент, в который оцениваются проверки срока действия и свежести |
MaxPathLength | Максимум сертификатов между leaf и trust anchor; Default задаёт 12 |
OCSPNoncePolicy | Требуются ли nonce OCSP, сверяются ли при наличии или игнорируются; Default сверяет при наличии |
ExpectedOCSPNonce | Точные байты nonce, которые требовать, когда политика его требует |
OCSPMaxAgeDays / CRLMaxAgeDays | Максимальный принимаемый возраст ответов OCSP и CRL; Default задаёт 7 и 30 дней |
OCSPAllowedClockSkewMinutes / CRLAllowedClockSkewMinutes | Допуск на расхождение часов, применяемый к меткам времени доказательств; Default задаёт по 5 минут |
RequireOCSPNextUpdate / RequireCRLNextUpdate | Отклонять доказательства без поля next-update |
AllowDelegatedOCSPResponders | Принимать ответы, подписанные делегированными responder-ами; Default разрешает |
RequireOCSPNoCheckForDelegated | Требовать расширение OCSPNoCheck на сертификатах делегированных responder-ов |
AllowIndirectCRLs | Принимать CRL, выпущенные косвенным подписантом CRL; Default разрешает |
RequireDeltaCRLWhenAdvertised | Валить проверку, когда указатель delta CRL объявлен, но сам delta CRL не передан |
TrustPurpose / CustomTrustPurposeOID | Требуемое назначение сертификата для trust anchor; Default принимает любое |
InitialPolicySet | OID политик сертификатов, которым должна удовлетворять валидированная цепочка |
RequireExplicitCertificatePolicy | Требовать хотя бы одну явную политику сертификатов в цепочке |
InhibitCertificatePolicyMapping | Отключить обработку преобразования политик сертификатов |
InhibitAnyCertificatePolicy | Исключить квалификатор anyPolicy из обработки политик |
AlgorithmPolicy | Лимиты размеров ключей и алгоритмов, применяемые к каждому сертификату и подписи в цепочке |
FetchMissingIntermediates | Дозапрашивать недостающие промежуточные сертификаты через AIA caIssuers URL, прежде чем упасть с cvsPathBuildingFailed; транспорт остаётся на стороне вызывающего |
MaxFetchedIntermediates | Предел того, сколько промежуточных сертификатов одна валидация может дозапросить через AIA |
Default | Классовая функция, возвращающая встроенную конфигурацию, сведённую выше |
Примечания по использованию
- Отталкивайтесь от
THPDFCertificateValidationOptions.Defaultи переопределяйте только то, что нужно вашей политике, чтобы окна свежести и назначение доверия совпадали с библиотечными значениями по умолчанию - Библиотека никогда не открывает сокеты: подавайте доказательства через пулы или используйте онлайн-вариант валидации с транспортом на стороне вызывающего, когда
FetchMissingIntermediatesнужно дозапрашивать - Массивы источников сопоставляются один к одному с пулами доказательств, позволяя отчётам привязывать каждый вердикт об отзыве к его происхождению