Enterprise Edition
Signaturprüfung — Ausführliche Referenz
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Diese Seite ist die Deep Reference für die AdES-Verify-Seite in NextPDF Enterprise. Der Einstiegspunkt ist NextPDF\Enterprise\Security\Validation\AdESValidationEngine. Er implementiert die ETSI-modellierten Validierungsabläufe von NextPDF für Basic-, With-Time-, Long-Term- und Archival-Zeitstempelprüfungen: Basic-Validierung, Validierung mit Zeit, Validierung mit Long-Term-Daten und Archival-DocTimeStamp-Coverage-Chain-Validierung. Die Ergebnisse sind ValidationReport-Werte, die MainIndication- und SubIndication-Enum-Fälle mit ETSI-URN-Zeichenkettenwerten tragen. Weitere hier dokumentierte Flächen: die SignatureDataExtractor-SPI und ihre CmsSignatureDataExtractor-Implementierung, der byteweise PdfSignatureDictionaryScanner, die Pfadvalidierungsfläche NextPDF\Enterprise\Security\Pki und BatchSignatureValidator. Für eine Anleitung auf Workflow-Ebene siehe Signaturprüfung: kryptografische AdES-/PAdES-Verify-Seite.
Verfügbarkeit & Lizenzierung
Abschnitt betitelt „Verfügbarkeit & Lizenzierung“Diese Fähigkeit wird mit NextPDF Enterprise (nextpdf/enterprise) ausgeliefert und aktiviert sich mit einem Lizenz-Envelope der Enterprise-Stufe. Ein Deployment ohne diese Berechtigung lädt die Klassen der Fähigkeit nicht. Editionen vergleichen und Lizenz erwerben.
Öffentliche API-Fläche
Abschnitt betitelt „Öffentliche API-Fläche“| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
AdESValidationEngine::__construct | 11 optionale Parameter: ?PathValidatorInterface $chainValidator, ?SignatureDataExtractor $extractor, ClockInterface $clock, ?LoggerInterface $logger, string $defaultPolicy, NetworkPolicy $networkPolicy und fünf optionale Verifier-Kollaboratoren | Alle Defaults sind fail-closed: Pki-Pfadvalidator über die Engine-Uhr, kein Extractor, kein TSA-Trust-Store | Neue Engine | Wirft nicht | Ohne Trust-Store meldet die TSA-Chain-Auswertung „untrusted“; das mappt auf INDETERMINATE, niemals auf ein Bestehen |
AdESValidationEngine::validateBasic | string $signedData, string $signature | Basic-Validierung: Format, Digest, Krypto, Weak-Algorithm, Chain, provenienzgesteuerte Revocation | ValidationReport | Wirft nicht; Extraktions- und Pfadfehler mappen auf fail-closed Berichte | Ohne Extractor nur Guard-Prüfungen; siehe Edge Cases |
AdESValidationEngine::validateWithTime | string $signedData, string $signature, DateTimeImmutable $claimedTime | Zuerst Basic-Validierung; Zertifikatsfenster und Revocation gegen die angegebene Zeit verglichen | ValidationReport | Wirft nicht | Striktes Signaturzeitstempel-Gate, wenn das Attribut vorhanden ist; $claimedTime bleibt der Zeitanker |
AdESValidationEngine::validateWithLongTermData | string $signedData, string $signature, array $dssData (certs/ocsps/crls) | Basic-Bestehen erforderlich; Signaturzeitstempel-Gate mit TSA-at-genTime scharfgestellt; POE-, DSS-Revocation- und Archival-Gates | ValidationReport | Wirft nicht | NetworkPolicy::STRICT_OFFLINE mit unzureichenden eingebetteten Daten ergibt INDETERMINATE / TRY_LATER |
AdESValidationEngine::validateArchivalTimestampChain | string $pdfBytes, array $dssData = [], ?TrustAnchorStoreInterface $anchors = null | Evidenzbasierte DocTimeStamp-Coverage-Chain über die exakten ByteRange-Bytes | ValidationReport | Wirft nicht bei feindlichen Bytes | TOTAL_PASSED nur für eine vertrauenswürdige, EOF-abdeckende Chain |
MainIndication | — | String-basiertes Enum, drei Fälle | — | — | ETSI-URN-Werte; siehe die Fallliste unten |
SubIndication | — | String-basiertes Enum, fünfzehn Fälle | — | — | ETSI-URN-Werte; siehe die Fallliste unten |
ValidationReport::__construct | MainIndication $mainIndication, ?SubIndication $subIndication, DiagnosticData $diagnosticData, DateTimeImmutable $validationTime, string $validationPolicy = '' | Unveränderliches (final readonly) Validierungsergebnis | Neuer Bericht | Wirft nicht | isPassed(), isFailed(), isIndeterminate(), toArray() |
DiagnosticData::__construct | array $certificateChain, array $timestamps, array $revocationData, string $validationPolicy, string $signatureFormat, array $warnings (alle mit Default) | Unveränderlicher Evidenzcontainer; nur Audit-Trail | Neuer Wert | Wirft nicht | toArray() serialisiert Referenzen für die Berichterstattung |
SignatureDataExtractor::extract | string $signedData, string $signature | SPI: das CMS parsen und Validierungskomponenten extrahieren | ExtractedSignatureData | SignatureExtractionException, wenn die Signatur nicht geparst werden kann | Interface; entkoppelt das ASN.1-Parsing von der Engine |
CmsSignatureDataExtractor::extract | string $signedData, string $signature | Extrahieren plus kryptografische Verifikation einer detached PAdES-Basic-Signatur | ExtractedSignatureData | SignatureExtractionException nur, wenn das CMS überhaupt nicht geparst werden kann | Ein Krypto- oder Bindungsfehler liefert Daten mit cryptoValid / hashValid false; er wirft dafür niemals |
PdfSignatureDictionaryScanner::scan | string $pdfBytes | Byteweiser Scan nach /ByteRange- + /Contents-Dictionaries mit passgenauen Anti-Spoof-Cross-Checks | list<PdfSignatureOccurrence> | Total; wirft niemals; fehlerhafte Kandidaten werden übersprungen | Geordnet nach Coverage-Ende, frühestes zuerst |
PathValidatorInterface::validate | array $chain, ?DateTimeImmutable $validationTime = null, array $initialPolicies = [] | RFC-5280-§6.1.4-Pfadvalidierung mit Policy-Verarbeitung | PathValidationResult | PathValidationException bei einer strukturell ungültigen Chain oder einem überschrittenen adversarialen Limit | Chain ist End-Entity zuerst, Anchor zuletzt |
PathValidatorInterface::validateWithAiaChasing | array $chain, ?DateTimeImmutable $validationTime = null | AIA-Auflösung fehlender Intermediates, dann Validierung | PathValidationResult | PathValidationException | Fetches sind durch Timeout und Byte-Limits begrenzt |
CertificateChainValidator | Konstruktor: Engine, PathValidationOptions, Uhr, Logger; statisch withDefaults() | Die SPI-Implementierung mit den adversarialen Standard-Caps | PathValidationResult aus beiden Methoden | PathValidationException | Wird auch geworfen, wenn ein OpenSSLCertificate nicht nach PEM exportiert werden kann |
PathValidationOptions::__construct | Caps (maxDepth, maxPolicyFanout, fetchTimeoutSeconds, fetchSizeCapBytes) plus Policy-Flags, ?TrustAnchorStoreInterface $trustAnchors, bool $requireTrustedAnchor | Tiefe 32, Fanout 64, 5 s pro Fetch, 10 MiB pro Fetch; alle Flags false | Neue Options | Wirft nicht | Factories: defaults(), strict(), withTrustAnchors() |
PathValidationResult::__construct | bool $valid, string $trustAnchorFingerprint, DateTimeImmutable $validatedAt, array $validPolicies, ?RevocationCheckResult $revocation, bool $trustAnchorTrusted, array $fetchedCertificates, array $failureReasons | Unveränderliches Ergebnis; trustAnchorTrusted ist per Default false (fail-closed) | Neuer Wert | Wirft nicht | Trust-Mitgliedschaft ist von struktureller Gültigkeit verschieden |
PolicyProcessor | Konstruktor: PolicyTreeState $state, PathValidationOptions $options; processCertificate(string $certDer, int $depth, bool $selfIssued), finalizeWrapUp(), tree() | RFC-5280-§6.1.4-Policy-Tree-Expansion, -Mapping und -Wrap-up | void / list<non-empty-string> / PolicyTree | PathValidationException bei jedem Policy-Verarbeitungsfehler (fail-closed) | Wrap-up gibt die überlebenden Policy-OIDs zurück, ausgenommen anyPolicy |
PolicyTree | attach(PolicyTreeNode $node, PathValidationOptions $options), enforceFanout(...), remove(...), plus Lese-Queries | Der valid_policy_tree-Zustand mit einem Tiefenindex | Variiert je Methode | PathValidationException, wenn die Live-Leaf-Zahl den Fanout-Cap überschreitet | Stellt ANY_POLICY_OID (2.5.29.32.0) bereit |
NameConstraintsChecker::processCertificate | string $certDer, bool $applyNameCheck | Akkumuliert und erzwingt permitted / excluded Subtrees gemäß RFC 5280 §6.1.4(g) | void | PathValidationException bei einem verletzten Subtree, einer nicht unterstützten GeneralName-Form in einer Constraint oder einem überschrittenen Cap | Nicht vergleichbare Namen werden fail-closed behandelt |
TrustAnchorStoreInterface::containsFingerprint | string $anchorDerSha256Hex | Mitgliedschaft per lowercase-Hex-SHA-256 über das DER-Zertifikat des Anchors | bool | Wirft nicht | Die vom Pfadvalidator konsultierte Trust-Naht |
BatchSignatureValidator::validate | array $inputs (list<DocumentSignatureInput>) | Multi-Dokument-Signaturvalidierung mit Revocation-Caching pro Batch | BatchValidationReport | InvalidArgumentException bei einer leeren Liste; ein Ressourcen-Guard weist Batches über 1000 Dokumenten ab | Liegt in NextPDF\Enterprise\Signature |
final class AdESValidationEnginepublic function validateBasic(string $signedData, string $signature): ValidationReportpublic function validateWithTime( string $signedData, string $signature, DateTimeImmutable $claimedTime,): ValidationReportpublic function validateWithLongTermData( string $signedData, string $signature, array $dssData,): ValidationReportpublic function validateArchivalTimestampChain( string $pdfBytes, array $dssData = [], ?TrustAnchorStoreInterface $anchors = null,): ValidationReportpublic function validate( array $chain, ?DateTimeImmutable $validationTime = null, array $initialPolicies = [],): PathValidationResult;public function validateWithAiaChasing( array $chain, ?DateTimeImmutable $validationTime = null,): PathValidationResult;public static function withDefaults( ?ClockInterface $clock = null, ?AiaChaser $aiaChaser = null, ?LoggerInterface $logger = null,): selfpublic function containsFingerprint(string $anchorDerSha256Hex): bool;public function extract(string $signedData, string $signature): ExtractedSignatureData;public function scan(string $pdfBytes): arraypublic function validate(array $inputs): BatchValidationReportIndication-Enums. MainIndication-Fälle: TOTAL_PASSED, TOTAL_FAILED, INDETERMINATE. Die zugrunde liegenden Werte folgen dem Muster urn:etsi:019102:mainindication:total-passed (lowercase, mit Bindestrichen). SubIndication-Fälle: HASH_FAILURE, SIG_CRYPTO_FAILURE, REVOKED, EXPIRED, NOT_YET_VALID, NO_POE, TRY_LATER, CERTIFICATE_CHAIN_GENERAL_FAILURE, FORMAT_FAILURE, REVOKED_CA_NO_POE, CRYPTO_CONSTRAINTS_FAILURE, POLICY_PROCESSING_FAILURE, REVOCATION_OUT_OF_BOUNDS_NO_POE, NO_SIGNING_CERTIFICATE_FOUND, TIMESTAMP_ORDER_FAILURE. Jeder ist mit urn:etsi:019102:subindication:<CASE_NAME> unter dem exakten Fallnamen hinterlegt.
Verhaltensvertrag
Abschnitt betitelt „Verhaltensvertrag“- Berichte rein, Berichte raus. Die vier Engine-Einstiegspunkte geben bei feindlicher Eingabe einen
ValidationReportzurück, statt zu werfen. Eine gefangeneSignatureExtractionExceptionwird auf den Guard-Pfad geleitet; eine gefangenePathValidationExceptionmappt aufTOTAL_FAILED/CERTIFICATE_CHAIN_GENERAL_FAILURE. - Reihenfolge der Basic-Validierung. Zuerst Formatprüfung; eine nicht parsebare Struktur ist
TOTAL_FAILED/FORMAT_FAILURE(EN 319 102-1 §5.3.4). Dann Digest (HASH_FAILURE) und kryptografische Verifikation (SIG_CRYPTO_FAILURE), entsprechend den Building-Block-Ergebnissen von EN 319 102-1 §5.2.7.4. Der Digest wird vom Verifier neu berechnet und mit dem signierten AttributmessageDigestverglichen (RFC 5652 §5.6); vom Erzeuger gelieferte Digests werden niemals vertraut. - Schwache Algorithmen degradieren. Eine Signatur, die unter SHA-1 verifiziert, oder mit einer schwachen Signaturzertifikatsbindung, gibt
INDETERMINATE/CRYPTO_CONSTRAINTS_FAILUREzurück, niemalsTOTAL_PASSED. Der Zeitpfad bekräftigt dies erneut, sodass eine schwache Signatur niemals in ein zeitgültiges Bestehen umgemünzt wird. - Revocation-Provenienz-Gate. Revocation-Flags des Extractors werden nur konsultiert, wenn der Extractor tatsächlich eine Revocation-Prüfung durchgeführt hat (
revocationCheckedtrue). Ein ungeprüfter Default ist weder „verifiziert nicht widerrufen“ noch einREVOKED-Auslöser. Revocation-Evidenz wird über den DSS-Pfad etabliert. - Non-Pass-Propagation. Der Zeit- und der Long-Term-Pfad werten ein Non-Pass-Basic-Ergebnis niemals auf. Eine Ausnahme besteht: ein Basic-
INDETERMINATE/REVOKEDwird gegen$claimedTimeaufgelöst; ein Widerruf zum oder vor dem angegebenen Zeitpunkt istTOTAL_FAILED/REVOKED. Dies spiegelt das Muster von EN 319 102-1 §5.3.4 wider, ein revocation-bezogenes Indeterminate mit Zeitnachweis aufzulösen. Kann der Vergleich nicht durchgeführt werden, wird der ungelöste Basic-Bericht wortgetreu propagiert. - Strikte Signaturzeitstempelbindung (fail-closed; BC-Bruch). Wenn das CMS ein unsigniertes
id-aa-timeStampToken-Attribut trägt, löst dessen Präsenz die Durchsetzung in sowohl dem Zeit- als auch dem Long-Term-Pfad aus; es gibt keinen Warn-only-Modus. Die Kardinalität muss exakt ein Attribut mit exakt einem Wert sein (EN 319 122-1 §5.3); jede andere Form istTOTAL_FAILED/FORMAT_FAILURE. Das Token muss durchgängig kryptografisch verifizieren; ein nicht verifizierbares Token, ein Parser-Differential-Konflikt oder ein Imprint-Mismatch istINDETERMINATE/TIMESTAMP_ORDER_FAILURE. Ein nicht unterstützter oder SHA-1-Imprint-Algorithmus istINDETERMINATE/CRYPTO_CONSTRAINTS_FAILURE. Die Bindungsregel ist RFC 3161 Appendix A: dermessageImprintdes Tokens muss gleich dem Hash der SignerInfo-signature-Wert-Oktette sein, verglichen in konstanter Zeit. - Long-Term-Pfad-Gates. Im mit Clause 5.4 annotierten Pfad erhält der gebundene Signaturzeitstempel zusätzlich eine TSA-Zertifikatsauswertung zum
genTimedes Tokens; ein nicht vertrauenswürdiger Anchor istINDETERMINATE/CERTIFICATE_CHAIN_GENERAL_FAILURE, niemals ein Bestehen.NetworkPolicy::STRICT_OFFLINEmit unzureichendem eingebettetem DSS-Material gibtINDETERMINATE/TRY_LATERzurück. Proof-of-Existence-, DSS-Revocation- und Archival-Chain-Befunde brechen jeweils zuINDETERMINATEmit einer gemappten Sub-Indication kurz. - Archival-Chain-Gates. Kein DocTimeStamp vorhanden ist
INDETERMINATE/NO_POE. Ein strukturell nicht konformer ByteRange istTOTAL_FAILED/FORMAT_FAILURE. Jedes Token muss verifizieren, seinen Imprint an die exakt vom ByteRange abgedeckten Bytes binden und das TSA-at-genTime-Facet-Mapping bestehen (EXPIRED,NOT_YET_VALID,REVOKED_CA_NO_POE,CERTIFICATE_CHAIN_GENERAL_FAILUREoderTRY_LATERunter Strict-Offline). Die Reihenfolge wird erzwungen: nicht abnehmendegenTime, strikt fortschreitende Coverage und spätere Tokens, die das/Contents-Loch des vorigen Tokens enthalten. Das jüngste Token muss das letzte Byte abdecken; nachlaufende Bytes sindTIMESTAMP_ORDER_FAILURE. EingenTime, das mehr als 300 Sekunden vor der Verifier-Uhr liegt, istTIMESTAMP_ORDER_FAILURE. - Diagnostik entscheidet nie.
DiagnosticData::$timestamps-Proof-of-Existence-Einträge sind ausschließlich Audit-Trail. Sie ändern niemals eine Indication, und der Akkumulator wird an jedem Einstiegspunkt zurückgesetzt. - Pki-Limits gehen der Krypto voraus. Die
PathValidationOptions-Caps (Tiefe 32, Policy-Fanout 64, 5 s und 10 MiB pro Fetch) werden vor teurer Arbeit geprüft.PathValidationResult::$trustAnchorTrustedist von$validverschieden;requireTrustedAnchormacht einen nicht bestätigten Terminus ungültig.strict()aktiviertrequireExplicitPolicy, Hard-Fail-Revocation-Transport undrequireTrustedAnchor. Die Pfadgültigkeit ist anchor-relativ gemäß RFC 5280 §6.1: ein gültiger Pfad beginnt an einem als Eingabe gelieferten Trust-Anchor. - Batch-Fläche.
BatchSignatureValidator::validate()wirftInvalidArgumentExceptionbei einer leeren Liste und weist Batches über 1000 Dokumenten über einen Ressourcen-Guard ab. PHP besitzt in dieser Pipeline die gesamte kryptografische Validierung.
Edge Cases & Fehlermodi
Abschnitt betitelt „Edge Cases & Fehlermodi“- Die Default-Engine hat keinen Extractor.
new AdESValidationEngine()führt nur Guard-Prüfungen durch: leere Signatur oder leere Signed Data istTOTAL_FAILED; jedes nicht leere Paar löst sich zuINDETERMINATE/NO_SIGNING_CERTIFICATE_FOUNDauf, niemals zuTOTAL_PASSED. Injizieren SieNextPDF\Enterprise\Security\Validation\CmsSignatureDataExtractor, um kryptografische Verifikation zu erhalten. - Die Default-TSA-Trust-Prüfung hat keinen Store. Jede TSA-Chain meldet dann „untrusted“, sodass Archival- und Long-Term-Signaturzeitstempel-Ergebnisse
INDETERMINATEbleiben. Liefern Sie Anchors übervalidateArchivalTimestampChain(..., $anchors)oder eine konfigurierteTsaCertificateAtGenTimeCheck. - Leere
$pdfBytes.validateArchivalTimestampChain('')gibtTOTAL_FAILED/FORMAT_FAILUREzurück. - Vor-Fix-Signaturzeitstempel können nicht bestehen. Tokens, die von NextPDF-Versionen vor dem Strict-Binding-Fix erzeugt wurden, haben einen anderen Input imprintet. Sie scheitern dauerhaft an der Appendix-A-Bindung; signieren und zeitstempeln Sie neu, um ein positives Ergebnis wiederherzustellen. Dies ist ein bewusster, dokumentierter BC-Bruch.
- Doppelte oder überlappende DocTimeStamps. Ein Duplikat in derselben Revision, eine gleiche oder überlappende Coverage oder ein späteres Token, das das Signaturloch des vorigen Tokens nicht enthält, scheitert am Ordering-Gate.
- Der Scanner ist total und byteweise.
scan()überspringt fehlerhafte oder gespoofte Kandidaten stillschweigend; ein Köder-/ByteRangeinnerhalb eines Content-Streams wird abgewiesen. Er löst keine indirekten Objekte auf und läuft nicht die Cross-Reference-Tabelle ab. - Coverage, nicht Reachability.
validateArchivalTimestampChain()beweist kryptografische Byte-Range-Coverage bis zum Dateiende. Reachability-Analyse auf Objektebene (zum Beispiel ein umgelenkter Document Root innerhalb einer abgedeckten Revision) ist als außerhalb des Geltungsbereichs erklärt. - Direkte Pki-Nutzung wirft. Der direkte Aufruf von
PathValidatorInterface-Implementierungen bringtPathValidationExceptionbei strukturell ungültigen Chains, überschrittenen Caps, nicht unterstützten Constraint-Formen und einem fehlgeschlagenen PEM-Export einesOpenSSLCertificate-Handles zutage. Die Engine fängt diese Klasse; Ihre eigenen Aufrufer müssen sie behandeln.
FIPS-Modus-Verhalten
Abschnitt betitelt „FIPS-Modus-Verhalten“Die Verify-Seite akzeptiert RSA PKCS#1 v1.5 mit SHA-2 und ECDSA auf P-256/P-384/P-521. RSASSA-PSS-, EdDSA- und SHA-3-Tokens scheitern fail-closed als nicht unterstützt; SHA-1 degradiert zu CRYPTO_CONSTRAINTS_FAILURE. Unter dem Enterprise-FIPS-140-3-Krypto-Policy-Profil (dokumentiert beim Security-Modul) gilt die Einschränkung dafür, welche Algorithmen akzeptiert werden; der Validierungsablauf selbst — Digest-Neuberechnung, Signaturprüfungen, Bindung, Pfadvalidierung — bleibt unverändert. NextPDF besitzt kein FIPS-140-3-Zertifikat und diese Seite beansprucht keines.
Konformität
Abschnitt betitelt „Konformität“| Aussage | Standard | Klausel |
|---|---|---|
| Basic Signature validation ist ein wiederverwendbarer Building Block für Time-Stamp- und With-Time-Validierung. | ETSI EN 319 102-1 | §5.3.1 |
Integritätsfehler mappt auf HASH_FAILURE; eine fehlgeschlagene Signaturprüfung mappt auf SIG_CRYPTO_FAILURE. | ETSI EN 319 102-1 | §5.2.7.4 |
| Die Formatprüfung läuft zuerst und ein Non-Pass stoppt den Prozess. | ETSI EN 319 102-1 | §5.3.4 |
| Ein revocation-bezogenes Indeterminate kann mit Zeitnachweis aufgelöst werden. | ETSI EN 319 102-1 | §5.3.4 |
| Ein gültiger Zertifizierungspfad beginnt an einem als Eingabe gelieferten Trust-Anchor. | RFC 5280 | §6.1 |
Der Verifier berechnet den Content-Digest neu; er muss gleich dem signierten Attribut messageDigest sein. | RFC 5652 | §5.6 |
Der messageImprint des Signaturzeitstempels hasht den SignerInfo-signature-Feldwert. | RFC 3161 | Appendix A |
Das signature-time-stamp-Attribut trägt exakt ein AttributeValue. | ETSI EN 319 122-1 | §5.3 |
Alle Klauseln sind paraphrasiert; NextPDF gibt keinen normativen Text wieder. NextPDF erhebt keinen AdES-/PAdES-Konformitäts- oder Zertifizierungsanspruch. Die Unterstützung eines Standards ist keine Konformität mit ihm, und Konformität ist keine Zertifizierung — NextPDF hält keine Zertifizierung und gewährt keine. Die Engine implementiert die zitierten Validierungsverfahren als Fähigkeit; sie ist kein qualifizierter oder zertifizierter Validierungsdienst, und ein TOTAL_PASSED-Bericht ist eine kryptografische Aussage, keine rechtliche Feststellung. Die Enum-Werte verwenden das ETSI-URN-Identifier-Muster für die Interoperabilität von Berichtsdaten wieder; diese Wiederverwendung behauptet keine Billigung.
Entwicklungshinweise
Abschnitt betitelt „Entwicklungshinweise“- Klausel-Label-Mapping. Der Paketquellcode annotiert die Einstiegspunkte als EN-319-102-1-Klauseln 5.2, 5.3 und 5.4. Das Compliance-Korpus verortet den Basic-Signature-Validierungsprozess selbst bei Klausel 5.3, mit dem kryptografischen Building Block bei 5.2.7.4. Diese Seite zitiert die abgerufenen Klauselnummern; maßgeblich ist der Verhaltensvertrag, nicht das Label.
- Deterministische Tests. Jeder Zeitvergleich fließt durch das injizierte PSR-20-
ClockInterface. Injizieren Sie eine eingefrorene Uhr, um Fensterprüfungen, die 300-Sekunden-genTime-Skew-Grenze und CRL-Freshness-Entscheidungen zu testen. - Komposition. Alle Engine-Kollaboratoren sind konstruktor-injiziert und optional, mit fail-closed Defaults. Der Default-Pfadvalidator ist
CertificateChainValidator::withDefaults()über die Engine-Uhr; die Default-Options halten die Policy- und Name-Constraint-Verarbeitung für konforme, uneingeschränkte Eingaben zu einem No-Op. - Namespaces. Die Engine-Fläche liegt in
NextPDF\Enterprise\Security\Validation, die Pfadvalidierungsfläche inNextPDF\Enterprise\Security\Pkiund der Batch-Orchestrator inNextPDF\Enterprise\Signature. - Bericht-Hygiene. Berichte sind unveränderlich und über
toArray()serialisierbar. Der Diagnostik-Kontext wird an jedem Einstiegspunkt zurückgesetzt, sodass ein Bericht niemals Evidenz aus einem früheren Lauf auf derselben Engine-Instanz trägt.
Siehe auch
Abschnitt betitelt „Siehe auch“- Signaturprüfung: kryptografische AdES-/PAdES-Verify-Seite — die Fähigkeitsseite: Workflow, Algorithmentabelle, Upgrade-Hinweise.
- Signature — Deep Reference — die PAdES-B-LT-/B-LTA-Erzeugerseite.
- Validation — Deep Reference — strukturelle Policy-Prüfungen ohne Kryptografie.
- Security — Deep Reference — die kombinierte Enterprise-Security-Fläche, einschließlich des FIPS-Profils.
- PAdES-Klauselzuordnung — B-B, B-T, B-LT, B-LTA über Editionen hinweg.
Publikationsgrenze
Abschnitt betitelt „Publikationsgrenze“Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Fläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismus-Tabellen, Runbook-Dateinamen und Ticket-Präfixe sind außerhalb des Geltungsbereichs.