PDFium Delphi Component Docs

Methoden ValidatePadesTrust

Komponente: TPdf  ·  Unit: PDFium
Prüft PAdES-Signaturintegrität, aktuelle Systemvertrauenswürdigkeit, optionale Sperrnachweise und RFC-3161-Zeitstempel-Token

Syntax

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

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

Beschreibung

Beide Methoden erfassen die exakte ursprüngliche Datei, den Speicherpuffer, den benutzerdefinierten Stream oder die vollständig geladene progressive Quelle, die von der aktiven Komponente vorgehalten wird, und prüfen niemals eine von PDFium neu gespeicherte Kopie

Jede gewöhnliche Signatur wird gegen ihre ursprüngliche ByteRange, die CMS-signierten Attribute und den Signaturwert, die signing-certificate-v2-Bindung, die aktuelle Zertifikatskette des konfigurierten Backends und optionale Sperrnachweise geprüft

Signaturzeitstempel und Document Time-stamps validieren zusätzlich ihren SHA-256-Nachrichten-Imprint, die beigefügte CMS-Signatur, die TSA-Kette und den optionalen Sperrstatus

Das TSA-Signaturzertifikat muss nach RFC 3161 Abschnitt 2.3 eine kritische Extended-Key-Usage-Erweiterung mit ausschließlich id-kp-timeStamping haben; fehlende, nicht kritische, gemischte oder andere EKU ergibt ungültiges TimeStampTrustStatus, selbst bei gültiger Token-CMS-Signatur und Basiskette; die äußere Dokumentensignatur behält unabhängige Ergebnisse

Die asynchrone Überladung erfasst die Quelle vor der Ausführung und meldet den Abschluss über TPadesTrustValidationReply

Optionen

NetworkPolicyptnpOffline verwendet ausschließlich zwischengespeicherte Zertifikatsdaten, während ptnpOnline das Abrufen der Windows-Kette erlaubt
CheckRevocationFordert die Ketten-Sperrprüfung des konfigurierten Backends an; Windows schließt das Root-Zertifikat aus, während OpenSSL konfigurierte CRLs gegen die Kette prüft
CheckTimeStampsValidiert Signaturzeitstempel- und Document Time-stamp-Token, wenn vorhanden
UrlRetrievalTimeoutMsBegrenzt den nativen URL-Abruf, der von Ketten- und Sperrverarbeitung verwendet wird
QualifiedTrustEvaluatorBewertet Signaturgeber und gesammelte Kette optional gegen einen authentifizierten Offline-Trusted-List-Snapshot
QualifiedValidationTimeWählt den UTC-Auswertungszeitpunkt des Service-Verlaufs; null verwendet die aktuelle Zeit
CancellationTokenStoppt an der nächsten Validierungsstufen-Grenze
OnProgressEmpfängt die Stufe, den Signaturindex, die Signaturanzahl und den Gesamtprozentsatz

Ergebnis

TPadesValidationResult.Signatures meldet unabhängige Werte für ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus und TimeStampRevocationStatus, während QualifiedTrust das übereinstimmende Gebiet, den Anbieter, den Dienst, den Typ, den Status und die Startzeit identifiziert

AlgorithmInfo zeichnet die CMS-Digest- und Signatur-OIDs sowie die Public-Key- und Named-Curve-OIDs des Signaturzertifikats auf und wendet die ISO/TS-32002-Regeln für NIST, Brainpool, Ed25519, Ed448 und Kurve-zu-Digest an, bevor die Integrität akzeptiert wird

Nicht unterstützte Algorithmen, nicht verfügbare Plattform-Vertrauensdienste, unvollständige Sperrnachweise und abgebrochene Validierungen werden nicht in gültige Zustände überführt

Jeder Signatureintrag enthält RevocationReason und NativeRevocationError aus seiner CMS-Verifikation, plus unabhängige TimeStampRevocationReason und NativeTimeStampRevocationError aus der Zeitstempel-Token-Verifikation. Die Grundfelder verwenden TPdfCmsRevocationReason; native Fehlerfelder sind Cardinal-Werte im Fehlerraum des gewählten Backends, etwa OpenSSLs X509_V_ERR_*-Codes oder ein roher Windows-Provider- bzw. GetLastError-DWORD. Windows-Werte werden ohne Umrechnung in einen gemeinsamen HRESULT-Raum bewahrt

Das Zeitstempel-Paar beschreibt einen eingebetteten Signaturzeitstempel oder einen Document Time-stamp, ohne das gewöhnliche Signaturpaar zu überschreiben. Zeitstempel-Diagnosen füllen sich erst, wenn Tokenstruktur und Message-Imprint-Prüfung der CMS-Verifikation erlauben zu laufen

Mit CheckRevocation = False bleiben Diagnosegründe auf pcrrNone und Fehler auf null. Denselben Defaults begegnet man, wenn eine Prüfung nicht erreicht wird oder ihr Backend keinen detaillierten Grund liefert; lesen Sie also immer den zugehörigen Status, statt eine leere Diagnose als Erfolg zu werten

Hinweise

Beispiel

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

Siehe auch

ValidatePades FPdfTrustedList AnalyzeSignatureRevisions RenewPadesArchiveTimestamp