PDFium Component Docs

ValidatePadesTrust Metody

Component: TPdf  ·  Unit: PDFium
Waliduje integralność podpisów PAdES, bieżące zaufanie systemowe, opcjonalne dowody unieważnień i tokeny znaczników czasu RFC 3161

Syntax

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

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

Description

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

Options

NetworkPolicyptnpOffline 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
CheckTimeStampsWaliduje znaczniki czasu podpisów i tokeny Document Time-stamp, gdy występują
UrlRetrievalTimeoutMsOgranicza natywne pobieranie URL używane przez przetwarzanie łańcucha i unieważnień
QualifiedTrustEvaluatorOpcjonalnie ocenia podpisującego i zebrany łańcuch względem uwierzytelnionej migawki listy zaufania offline
QualifiedValidationTimeWybiera czas oceny UTC historii usługi, przy czym zero oznacza czas bieżący
CancellationTokenZatrzymuje na najbliższej granicy etapu walidacji
OnProgressOtrzymuje etap, indeks podpisu, liczbę podpisów i procent ogólny

Result

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

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