PDFium Delphi Component Docs

ValidatePadesTrust Методы

Компонент: TPdf  ·  Модуль: PDFium
Проверяют целостность подписей PAdES, текущее системное доверие, необязательные свидетельства отзыва и токены меток времени RFC 3161

Syntax

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;

Description

Оба метода снимают точную копию исходного файла, буфера памяти, пользовательского потока или завершённого прогрессивного источника, удерживаемого активным компонентом, и никогда не проверяют повторно сохранённую PDFium копию

Каждая обычная подпись проверяется по своему исходному ByteRange, подписанным атрибутам и значению подписи CMS, привязке signing-certificate-v2, текущей цепочке сертификатов настроенного бэкенда и необязательным свидетельствам отзыва

Метки времени подписей и Document Time-stamp дополнительно проверяют свой отпечаток сообщения SHA-256, присоединённую подпись CMS, цепочку TSA и необязательное состояние отзыва

Сертификат подписанта метки времени должен иметь критическое расширение Extended Key Usage, содержащее только id-kp-timeStamping, как требует RFC 3161 раздел 2.3. Отсутствующий, некритический, смешанный или другой EKU даёт недействительный TimeStampTrustStatus, даже когда подпись CMS токена и базовая цепочка сертификатов действительны; внешняя подпись документа сохраняет свои независимые результаты

Асинхронная перегрузка снимает источник перед постановкой в работу и сообщает о завершении через TPadesTrustValidationReply

Options

NetworkPolicyptnpOffline использует только кэшированные данные сертификатов, тогда как ptnpOnline разрешает получение цепочки средствами Windows
CheckRevocationЗапрашивает у настроенного бэкенда оценку отзыва цепочки; Windows исключает корневой сертификат, а OpenSSL сверяет настроенные CRL с цепочкой
CheckTimeStampsПроверяет токены меток времени подписей и Document Time-stamp, когда они присутствуют
UrlRetrievalTimeoutMsОграничивает нативное получение по URL, применяемое при обработке цепочки и отзыва
QualifiedTrustEvaluatorДополнительно оценивает подписавшего и собранную цепочку по аутентифицированному автономному снимку доверенного списка
QualifiedValidationTimeВыбирает время оценки UTC истории обслуживания; нуль означает текущее время
CancellationTokenОстанавливает проверку на ближайшей границе этапов
OnProgressПолучает этап, индекс подписи, число подписей и общий процент

Result

TPadesValidationResult.Signatures сообщает независимые значения ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus и TimeStampRevocationStatus, а QualifiedTrust указывает подобранные территорию, провайдера, услугу, тип, статус и время начала

AlgorithmInfo записывает OID хэша и подписи CMS плюс OID открытого ключа и именованной кривой сертификата подписавшего и применяет правила ISO/TS 32002 для NIST, Brainpool, Ed25519, Ed448 и соответствия кривой и хэша, прежде чем целостность будет принята

Неподдерживаемые алгоритмы, недоступные платформенные службы доверия, неполные свидетельства отзыва и отменённая проверка не повышаются до действительных состояний

Каждая запись подписи включает RevocationReason и NativeRevocationError из её проверки CMS плюс независимые TimeStampRevocationReason и NativeTimeStampRevocationError из проверки токена метки времени. Поля причин используют TPdfCmsRevocationReason; поля нативных ошибок — значения Cardinal в пространстве ошибок выбранного бэкенда, например коды X509_V_ERR_* OpenSSL или сырые значения провайдера Windows либо DWORD из GetLastError. Значения Windows сохраняются без преобразования в общее пространство HRESULT

Пара метки времени описывает встроенную метку времени подписи или Document Time-stamp, не перезаписывая пару обычной подписи. Диагностика метки времени заполняется только после того, как проверки структуры токена и отпечатка сообщения позволят запустить проверку CMS

При CheckRevocation = False диагностические причины остаются pcrrNone, а ошибки — нулём. Те же значения по умолчанию действуют, когда проверка не достигнута или её бэкенд не даёт детальной причины, поэтому всегда читайте соответствующий статус, а не считайте пустую диагностику успехом

Remarks

Example

var
  Options: TPadesTrustValidationOptions;
  Validation: TPadesValidationResult;
begin
  Options := TPadesTrustValidationOptions.Default;
  Options.NetworkPolicy := ptnpOnline;
  Options.CheckRevocation := True;
  Validation := Pdf1.ValidatePadesTrust(Options);
end;

See Also

ValidatePades FPdfTrustedList AnalyzeSignatureRevisions RenewPadesArchiveTimestamp