function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;
Obie metody przechwytują dokładny oryginalny plik, bufor pamięci, strumień własny albo ukończone źródło progresywne zachowane przez aktywny komponent i nigdy nie walidują kopii ponownie zapisanej przez PDFium
Każdy zwykły podpis jest sprawdzany względem jego oryginalnego ByteRange, podpisanych atrybutów i wartości podpisu CMS, powiązania signing-certificate-v2, bieżącego łańcucha certyfikatów skonfigurowanego backendu oraz opcjonalnych dowodów unieważnień
Znaczniki czasu podpisów i Document Time-stamp dodatkowo walidują swój odcisk wiadomości SHA-256, dołączony podpis CMS, łańcuch TSA i opcjonalny stan unieważnień
Certyfikat podpisującego znacznik czasu musi mieć krytyczne rozszerzenie Extended Key Usage zawierające wyłącznie id-kp-timeStamping, zgodnie z wymogiem RFC 3161 sekcja 2.3. Brakujące, niekrytyczne, mieszane lub inne EKU daje niepoprawny TimeStampTrustStatus, nawet gdy podpis CMS tokena i podstawowy łańcuch certyfikatów są poprawne; zewnętrzny podpis dokumentu zachowuje swoje niezależne wyniki
Przeciążenie asynchroniczne przechwytuje źródło przed wysłaniem i raportuje ukończenie przez TPadesTrustValidationReply
| NetworkPolicy | ptnpOffline używa wyłącznie buforowanych danych certyfikatów, a ptnpOnline pozwala na pobieranie łańcucha przez Windows |
| CheckRevocation | Żąda oceny unieważnień łańcucha przez skonfigurowany backend; Windows pomija certyfikat główny, a OpenSSL sprawdza skonfigurowane listy CRL względem łańcucha |
| CheckTimeStamps | Waliduje znaczniki czasu podpisów i tokeny Document Time-stamp, gdy występują |
| UrlRetrievalTimeoutMs | Ogranicza natywne pobieranie URL używane przez przetwarzanie łańcucha i unieważnień |
| QualifiedTrustEvaluator | Opcjonalnie ocenia podpisującego i zebrany łańcuch względem uwierzytelnionej migawki listy zaufania offline |
| QualifiedValidationTime | Wybiera czas oceny UTC historii usługi, przy czym zero oznacza czas bieżący |
| CancellationToken | Zatrzymuje na najbliższej granicy etapu walidacji |
| OnProgress | Otrzymuje etap, indeks podpisu, liczbę podpisów i procent ogólny |
TPadesValidationResult.Signatures raportuje niezależne wartości ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus i TimeStampRevocationStatus, a QualifiedTrust identyfikuje dopasowane terytorium, dostawcę, usługę, typ, status i czas rozpoczęcia
AlgorithmInfo zapisuje OID-y funkcji skrótu i podpisu CMS plus OID-y klucza publicznego i nazwanej krzywej certyfikatu podpisującego, stosując reguły ISO/TS 32002 dla NIST, Brainpool, Ed25519, Ed448 oraz par krzywa–skrót, zanim integralność zostanie uznana
Nieobsługiwane algorytmy, niedostępne usługi zaufania platformy, niekompletne dowody unieważnień i anulowana walidacja nie są awansowane do stanów poprawnych
Każdy wpis podpisu zawiera RevocationReason i NativeRevocationError ze swojej weryfikacji CMS, plus niezależne TimeStampRevocationReason i NativeTimeStampRevocationError z weryfikacji tokenu znacznika czasu. Pola powodów używają TPdfCmsRevocationReason; pola natywnych kodów błędów to wartości Cardinal w przestrzeni błędów wybranego backendu, na przykład kody X509_V_ERR_* z OpenSSL albo surowy DWORD dostawcy Windows czy GetLastError. Wartości z Windows są zachowywane bez konwersji na wspólną przestrzeń HRESULT
Para znacznika czasu opisuje osadzony znacznik czasu podpisu albo Document Time-stamp i nie nadpisuje pary zwykłego podpisu. Diagnostyka znacznika czasu jest wypełniana dopiero wtedy, gdy struktura tokenu i sprawdzenie odcisku wiadomości pozwalają uruchomić weryfikację CMS
Przy CheckRevocation = False powody diagnostyczne pozostają na pcrrNone, a kody błędów na zerze. Te same wartości domyślne obowiązują, gdy sprawdzenie nie zostało osiągnięte albo jego backend nie dostarcza szczegółowego powodu, więc zawsze czytaj odpowiedni status, zamiast traktować pustą diagnostykę jako sukces
Active ustawionego na True i kompletnej migawki oryginalnego źródłaOnProgress działa na wątku roboczym, gdy jest wywoływany przez ValidatePadesTrustAsync, i nie może bezpośrednio manipulować kontrolkami UITPdfFuture
var
Options: TPadesTrustValidationOptions;
Validation: TPadesValidationResult;
begin
Options := TPadesTrustValidationOptions.Default;
Options.NetworkPolicy := ptnpOnline;
Options.CheckRevocation := True;
Validation := Pdf1.ValidatePadesTrust(Options);
end;