Przejdź do głównej zawartości
getnextpdf.com

Enterprise edycja

Weryfikacja podpisu — szczegółowa referencja

Ta strona to pełny opis referencyjny powierzchni weryfikującej AdES w NextPDF Enterprise. Punktem wejścia jest NextPDF\Enterprise\Security\Validation\AdESValidationEngine. Implementuje modelowane według ETSI przepływy walidacji NextPDF dla kontroli podstawowej, z czasem, długoterminowej i archiwalnej za pomocą znaczników czasu: walidacja podstawowa, walidacja z czasem, walidacja z danymi długoterminowymi oraz archiwalna walidacja łańcucha pokrycia DocTimeStamp. Wynikami są wartości ValidationReport niosące przypadki enum MainIndication i SubIndication z wartościami łańcuchowymi URN według ETSI. Powierzchnie wspierające opisane tutaj: SPI SignatureDataExtractor i jego implementacja CmsSignatureDataExtractor, skaner bajtowy PdfSignatureDictionaryScanner, powierzchnia walidacji ścieżki NextPDF\Enterprise\Security\Pki oraz BatchSignatureValidator. Wskazówki na poziomie przepływu pracy znajdują się w Weryfikacja podpisu: kryptograficzna strona weryfikująca AdES / PAdES.

Ta funkcja jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się z kopertą licencyjną poziomu Enterprise. Wdrożenie bez tego uprawnienia nie ładuje klas tej funkcji. Porównaj edycje i zdobądź licencję.

SymbolParametryDomyślne zachowanieZwracaZgłasza lub kończy się niepowodzeniem zUwagi
AdESValidationEngine::__construct11 opcjonalnych parametrów: ?PathValidatorInterface $chainValidator, ?SignatureDataExtractor $extractor, ClockInterface $clock, ?LoggerInterface $logger, string $defaultPolicy, NetworkPolicy $networkPolicy oraz pięciu opcjonalnych współpracowników-weryfikatorówWszystkie wartości domyślne działają w trybie fail-closed: walidator ścieżki Pki nad zegarem silnika, brak ekstraktora, brak magazynu zaufania TSANowy silnikNie zgłaszaBez magazynu zaufania ocena łańcucha TSA raportuje brak zaufania; to mapuje się na INDETERMINATE, nigdy na wynik pozytywny
AdESValidationEngine::validateBasicstring $signedData, string $signatureWalidacja podstawowa: format, skrót, kryptografia, słaby algorytm, łańcuch, uwarunkowane pochodzeniem sprawdzenie unieważnieniaValidationReportNie zgłasza; niepowodzenia ekstrakcji i ścieżki mapują się na raporty fail-closedBez ekstraktora tylko kontrole zabezpieczające; zobacz przypadki brzegowe
AdESValidationEngine::validateWithTimestring $signedData, string $signature, DateTimeImmutable $claimedTimeNajpierw walidacja podstawowa; okno certyfikatu i unieważnienie porównywane z deklarowanym czasemValidationReportNie zgłaszaŚcisła bramka znacznika czasu podpisu, gdy atrybut jest obecny; $claimedTime pozostaje kotwicą czasu
AdESValidationEngine::validateWithLongTermDatastring $signedData, string $signature, array $dssData (certs/ocsps/crls)Wymagany pozytywny wynik podstawowy; bramka znacznika czasu podpisu uzbrojona z TSA-at-genTime; bramki POE, unieważnienia DSS i archiwalneValidationReportNie zgłaszaNetworkPolicy::STRICT_OFFLINE z niewystarczającymi osadzonymi danymi daje INDETERMINATE / TRY_LATER
AdESValidationEngine::validateArchivalTimestampChainstring $pdfBytes, array $dssData = [], ?TrustAnchorStoreInterface $anchors = nullOparty na dowodach łańcuch pokrycia DocTimeStamp nad dokładnymi bajtami ByteRangeValidationReportNie zgłasza przy wrogich bajtachTOTAL_PASSED tylko dla zaufanego łańcucha pokrywającego do EOF
MainIndicationEnum oparty na łańcuchu, trzy przypadkiWartości URN według ETSI; zobacz listę przypadków poniżej
SubIndicationEnum oparty na łańcuchu, piętnaście przypadkówWartości URN według ETSI; zobacz listę przypadków poniżej
ValidationReport::__constructMainIndication $mainIndication, ?SubIndication $subIndication, DiagnosticData $diagnosticData, DateTimeImmutable $validationTime, string $validationPolicy = ''Niemutowalny (final readonly) wynik walidacjiNowy raportNie zgłaszaisPassed(), isFailed(), isIndeterminate(), toArray()
DiagnosticData::__constructarray $certificateChain, array $timestamps, array $revocationData, string $validationPolicy, string $signatureFormat, array $warnings (wszystkie z wartościami domyślnymi)Niemutowalny kontener dowodów; wyłącznie ścieżka audytuNowa wartośćNie zgłaszatoArray() serializuje odniesienia do celów raportowania
SignatureDataExtractor::extractstring $signedData, string $signatureSPI: parsuje CMS i wyodrębnia komponenty walidacyjneExtractedSignatureDataSignatureExtractionException, gdy podpisu nie da się sparsowaćInterfejs; oddziela parsowanie ASN.1 od silnika
CmsSignatureDataExtractor::extractstring $signedData, string $signatureWyodrębnia oraz kryptograficznie weryfikuje odłączony podstawowy podpis PAdESExtractedSignatureDataSignatureExtractionException tylko wtedy, gdy CMS w ogóle nie daje się sparsowaćNiepowodzenie kryptografii lub wiązania zwraca dane z cryptoValid / hashValid ustawionymi na false; nigdy nie zgłasza z tego powodu
PdfSignatureDictionaryScanner::scanstring $pdfBytesSkan bajtowy słowników /ByteRange + /Contents z dokładnie dopasowanymi kontrolami przeciw fałszowaniulist<PdfSignatureOccurrence>Całkowita; nigdy nie zgłasza; zniekształceni kandydaci są pomijaniUporządkowane według końca pokrycia, najwcześniejszy pierwszy
PathValidatorInterface::validatearray $chain, ?DateTimeImmutable $validationTime = null, array $initialPolicies = []Walidacja ścieżki RFC 5280 §6.1.4 z przetwarzaniem politykiPathValidationResultPathValidationException przy strukturalnie nieprawidłowym łańcuchu lub przekroczonym limicie adwersarialnymŁańcuch od podmiotu końcowego, kotwica na końcu
PathValidatorInterface::validateWithAiaChasingarray $chain, ?DateTimeImmutable $validationTime = nullRozwiązanie AIA brakujących pośrednich, następnie walidacjaPathValidationResultPathValidationExceptionPobrania są ograniczone limitami czasu i bajtów
CertificateChainValidatorKonstruktor: silnik, PathValidationOptions, zegar, logger; statyczne withDefaults()Implementacja SPI z domyślnymi limitami adwersarialnymiPathValidationResult z obu metodPathValidationExceptionZgłaszany również, gdy OpenSSLCertificate nie da się wyeksportować do PEM
PathValidationOptions::__constructLimity (maxDepth, maxPolicyFanout, fetchTimeoutSeconds, fetchSizeCapBytes) plus flagi polityki, ?TrustAnchorStoreInterface $trustAnchors, bool $requireTrustedAnchorGłębokość 32, rozgałęzienie 64, 5 s na pobranie, 10 MiB na pobranie; wszystkie flagi falseNowe opcjeNie zgłaszaFabryki: defaults(), strict(), withTrustAnchors()
PathValidationResult::__constructbool $valid, string $trustAnchorFingerprint, DateTimeImmutable $validatedAt, array $validPolicies, ?RevocationCheckResult $revocation, bool $trustAnchorTrusted, array $fetchedCertificates, array $failureReasonsNiemutowalny wynik; trustAnchorTrusted domyślnie false (fail-closed)Nowa wartośćNie zgłaszaPrzynależność do zaufania jest odrębna od poprawności strukturalnej
PolicyProcessorKonstruktor: PolicyTreeState $state, PathValidationOptions $options; processCertificate(string $certDer, int $depth, bool $selfIssued), finalizeWrapUp(), tree()Rozwinięcie, mapowanie i podsumowanie drzewa polityk RFC 5280 §6.1.4void / list<non-empty-string> / PolicyTreePathValidationException przy każdym niepowodzeniu przetwarzania polityki (fail-closed)Podsumowanie zwraca ocalałe OID polityk, z wyłączeniem anyPolicy
PolicyTreeattach(PolicyTreeNode $node, PathValidationOptions $options), enforceFanout(...), remove(...) oraz zapytania odczytuStan valid_policy_tree z indeksem głębokościRóżni się w zależności od metodyPathValidationException, gdy liczba żywych liści przekracza limit rozgałęzieniaUdostępnia ANY_POLICY_OID (2.5.29.32.0)
NameConstraintsChecker::processCertificatestring $certDer, bool $applyNameCheckAkumuluje i egzekwuje dozwolone / wykluczone poddrzewa zgodnie z RFC 5280 §6.1.4(g)voidPathValidationException przy naruszonym poddrzewie, nieobsługiwanej formie GeneralName w ograniczeniu lub przekroczonym limicieNieporównywalne nazwy są obsługiwane w trybie fail-closed
TrustAnchorStoreInterface::containsFingerprintstring $anchorDerSha256HexPrzynależność wg małoliterowego szesnastkowego SHA-256 nad certyfikatem DER kotwicyboolNie zgłaszaSzew zaufania konsultowany przez walidator ścieżki
BatchSignatureValidator::validatearray $inputs (list<DocumentSignatureInput>)Walidacja podpisów wielu dokumentów z buforowaniem unieważnień na poziomie partiiBatchValidationReportInvalidArgumentException przy pustej liście; strażnik zasobów odrzuca partie powyżej 1000 dokumentówZnajduje się w NextPDF\Enterprise\Signature
final class AdESValidationEngine
public function validateBasic(string $signedData, string $signature): ValidationReport
public function validateWithTime(
string $signedData,
string $signature,
DateTimeImmutable $claimedTime,
): ValidationReport
public function validateWithLongTermData(
string $signedData,
string $signature,
array $dssData,
): ValidationReport
public function validateArchivalTimestampChain(
string $pdfBytes,
array $dssData = [],
?TrustAnchorStoreInterface $anchors = null,
): ValidationReport
public 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,
): self
public function containsFingerprint(string $anchorDerSha256Hex): bool;
public function extract(string $signedData, string $signature): ExtractedSignatureData;
public function scan(string $pdfBytes): array
public function validate(array $inputs): BatchValidationReport

Enumy wskazań. Przypadki MainIndication: TOTAL_PASSED, TOTAL_FAILED, INDETERMINATE. Wartości bazowe następują według wzorca urn:etsi:019102:mainindication:total-passed (małe litery, z myślnikami). Przypadki SubIndication: 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. Każdy jest oparty na urn:etsi:019102:subindication:<CASE_NAME> z dokładną nazwą przypadku.

  • Raporty wchodzą, raporty wychodzą. Cztery punkty wejścia silnika zwracają ValidationReport dla wrogiego wejścia zamiast zgłaszać wyjątek. Przechwycony SignatureExtractionException kierowany jest na ścieżkę zabezpieczającą; przechwycony PathValidationException mapuje się na TOTAL_FAILED / CERTIFICATE_CHAIN_GENERAL_FAILURE.
  • Kolejność walidacji podstawowej. Najpierw kontrola formatu; niedająca się sparsować struktura to TOTAL_FAILED / FORMAT_FAILURE (EN 319 102-1 §5.3.4). Następnie skrót (HASH_FAILURE) i weryfikacja kryptograficzna (SIG_CRYPTO_FAILURE), zgodnie z wynikami bloków budulcowych EN 319 102-1 §5.2.7.4. Skrót jest przeliczany przez weryfikatora i porównywany z podpisanym atrybutem messageDigest (RFC 5652 §5.6); skróty dostarczone przez producenta nigdy nie są traktowane jako zaufane.
  • Słabe algorytmy degradują. Podpis, który weryfikuje się pod SHA-1 lub ze słabym wiązaniem certyfikatu podpisującego, zwraca INDETERMINATE / CRYPTO_CONSTRAINTS_FAILURE, nigdy TOTAL_PASSED. Ścieżka czasowa ponownie to potwierdza, aby słaby podpis nigdy nie został „wyprany” do wyniku ważnego czasowo.
  • Bramka pochodzenia unieważnienia. Flagi unieważnienia ekstraktora są konsultowane tylko wtedy, gdy ekstraktor faktycznie wykonał sprawdzenie unieważnienia (revocationChecked true). Niesprawdzona wartość domyślna nie jest ani „zweryfikowany brak unieważnienia”, ani wyzwalaczem REVOKED. Dowód unieważnienia ustanawiany jest przez ścieżkę DSS.
  • Propagacja braku pozytywnego wyniku. Ścieżki czasowa i długoterminowa nigdy nie podnoszą niepozytywnego wyniku podstawowego. Istnieje jeden wyjątek: podstawowy INDETERMINATE / REVOKED jest rozstrzygany wobec $claimedTime; unieważnienie w deklarowanym czasie lub przed nim to TOTAL_FAILED / REVOKED. Odzwierciedla to wzorzec EN 319 102-1 §5.3.4 rozstrzygania nieokreśloności związanej z unieważnieniem za pomocą dowodu czasu. Gdy porównania nie da się wykonać, nierozstrzygnięty raport podstawowy jest propagowany dosłownie.
  • Ścisłe wiązanie znacznika czasu podpisu (fail-closed; zmiana łamiąca zgodność). Gdy CMS niesie niepodpisany atrybut id-aa-timeStampToken, jego obecność wyzwala egzekwowanie w obu ścieżkach — czasowej i długoterminowej; nie ma trybu wyłącznie ostrzegawczego. Liczność musi wynosić dokładnie jeden atrybut z dokładnie jedną wartością (EN 319 122-1 §5.3); każdy inny kształt to TOTAL_FAILED / FORMAT_FAILURE. Token musi zweryfikować się kryptograficznie od początku do końca; nieweryfikowalny token, konflikt różnic parserowych lub niezgodność odcisku to INDETERMINATE / TIMESTAMP_ORDER_FAILURE. Nieobsługiwany lub oparty na SHA-1 algorytm odcisku to INDETERMINATE / CRYPTO_CONSTRAINTS_FAILURE. Regułą wiązania jest RFC 3161 Appendix A: messageImprint tokenu musi równać się skrótowi oktetów wartości signature z SignerInfo, porównywanemu w czasie stałym.
  • Bramki ścieżki długoterminowej. W ścieżce oznaczonej klauzulą 5.4 związany znacznik czasu podpisu dodatkowo otrzymuje ocenę certyfikatu TSA w genTime tokenu; niezaufana kotwica to INDETERMINATE / CERTIFICATE_CHAIN_GENERAL_FAILURE, nigdy wynik pozytywny. NetworkPolicy::STRICT_OFFLINE z niewystarczającym osadzonym materiałem DSS zwraca INDETERMINATE / TRY_LATER. Ustalenia dotyczące dowodu istnienia, unieważnienia DSS i łańcucha archiwalnego każde skracają ścieżkę do INDETERMINATE z odwzorowanym podwskazaniem.
  • Bramki łańcucha archiwalnego. Brak obecnego DocTimeStamp to INDETERMINATE / NO_POE. Strukturalnie niezgodny ByteRange to TOTAL_FAILED / FORMAT_FAILURE. Każdy token musi zweryfikować się, związać swój odcisk z dokładnymi bajtami pokrytymi przez ByteRange oraz przejść mapowanie aspektów TSA-at-genTime (EXPIRED, NOT_YET_VALID, REVOKED_CA_NO_POE, CERTIFICATE_CHAIN_GENERAL_FAILURE lub TRY_LATER w trybie strict-offline). Egzekwowana jest kolejność: nierosnący genTime, ściśle postępujące pokrycie oraz późniejsze tokeny zawierające dziurę /Contents poprzedniego tokenu. Najnowszy token musi pokrywać ostatni bajt; bajty końcowe to TIMESTAMP_ORDER_FAILURE. genTime wyprzedzający zegar weryfikatora o więcej niż 300 sekund to TIMESTAMP_ORDER_FAILURE.
  • Diagnostyka nigdy nie decyduje. Wpisy dowodu istnienia w DiagnosticData::$timestamps służą wyłącznie jako ścieżka audytu. Nigdy nie zmieniają wskazania, a akumulator resetuje się przy każdym punkcie wejścia.
  • Limity Pki poprzedzają kryptografię. Limity PathValidationOptions (głębokość 32, rozgałęzienie polityki 64, 5 s i 10 MiB na pobranie) są sprawdzane przed kosztowną pracą. PathValidationResult::$trustAnchorTrusted jest odrębny od $valid; requireTrustedAnchor czyni niepotwierdzone zakończenie nieważnym. strict() włącza requireExplicitPolicy, twardo kończące niepowodzeniem sprawdzenie unieważnienia w transporcie oraz requireTrustedAnchor. Ważność ścieżki jest względna wobec kotwicy zgodnie z RFC 5280 §6.1: ważna ścieżka zaczyna się od kotwicy zaufania dostarczonej jako wejście.
  • Powierzchnia wsadowa. BatchSignatureValidator::validate() zgłasza InvalidArgumentException dla pustej listy i odrzuca partie powyżej 1000 dokumentów za pomocą strażnika zasobów. PHP jest właścicielem całej walidacji kryptograficznej w tym potoku.
  • Domyślny silnik nie ma ekstraktora. new AdESValidationEngine() wykonuje tylko kontrole zabezpieczające: pusty podpis lub dane podpisane to TOTAL_FAILED; każda niepusta para rozstrzyga się do INDETERMINATE / NO_SIGNING_CERTIFICATE_FOUND, nigdy TOTAL_PASSED. Wstrzyknij NextPDF\Enterprise\Security\Validation\CmsSignatureDataExtractor, aby uzyskać weryfikację kryptograficzną.
  • Domyślne sprawdzenie zaufania TSA nie ma magazynu. Każdy łańcuch TSA raportuje wtedy brak zaufania, więc wyniki znaczników czasu podpisu — archiwalne i długoterminowe — pozostają INDETERMINATE. Dostarcz kotwice przez validateArchivalTimestampChain(..., $anchors) lub skonfigurowany TsaCertificateAtGenTimeCheck.
  • Pusty $pdfBytes. validateArchivalTimestampChain('') zwraca TOTAL_FAILED / FORMAT_FAILURE.
  • Znaczniki czasu podpisu sprzed poprawki nie mogą przejść. Tokeny wyprodukowane przez wersje NextPDF przed poprawką ścisłego wiązania odciskały inne wejście. Zawodzą wiązanie Appendix A na stałe; podpisz i oznacz czasowo ponownie, aby przywrócić pozytywny wynik. Jest to celowa, udokumentowana zmiana łamiąca zgodność.
  • Zduplikowane lub nakładające się DocTimeStamp. Duplikat w tej samej rewizji, równe lub nakładające się pokrycie albo późniejszy token, który nie zawiera dziury podpisu poprzedniego tokenu, zawodzi bramkę kolejności.
  • Skaner jest całkowity i bajtowy. scan() po cichu pomija zniekształconych lub sfałszowanych kandydatów; przynętowy /ByteRange wewnątrz strumienia treści jest odrzucany. Nie rozwiązuje obiektów pośrednich ani nie przechodzi tablicy odsyłaczy.
  • Pokrycie, nie osiągalność. validateArchivalTimestampChain() dowodzi kryptograficznego pokrycia zakresu bajtów do końca pliku. Analiza osiągalności na poziomie obiektów (na przykład przekierowany korzeń dokumentu wewnątrz pokrytej rewizji) jest zadeklarowana jako poza zakresem.
  • Bezpośrednie użycie Pki zgłasza wyjątek. Bezpośrednie wywołanie implementacji PathValidatorInterface ujawnia PathValidationException dla strukturalnie nieprawidłowych łańcuchów, przekroczonych limitów, nieobsługiwanych form ograniczeń oraz nieudanego eksportu PEM uchwytu OpenSSLCertificate. Silnik przechwytuje tę klasę; twoi własni wywołujący muszą ją obsłużyć.

Strona weryfikująca akceptuje RSA PKCS#1 v1.5 z SHA-2 oraz ECDSA na P-256/P-384/P-521. Tokeny RSASSA-PSS, EdDSA i SHA-3 zawodzą w trybie fail-closed jako nieobsługiwane; SHA-1 degraduje do CRYPTO_CONSTRAINTS_FAILURE. W profilu polityki kryptograficznej Enterprise FIPS 140-3 (udokumentowanym przy module bezpieczeństwa) ograniczenie dotyczy tego, które algorytmy są akceptowane; sam przepływ walidacji — przeliczenie skrótu, sprawdzenia podpisu, wiązanie, walidacja ścieżki — pozostaje niezmieniony. NextPDF nie posiada certyfikatu FIPS 140-3 i ta strona żadnego nie deklaruje.

DeklaracjaStandardKlauzula
Walidacja Basic Signature jest wielokrotnie używanym blokiem budulcowym dla walidacji ze znacznikiem czasu i z czasem.ETSI EN 319 102-1§5.3.1
Niepowodzenie integralności mapuje się na HASH_FAILURE; nieudane sprawdzenie podpisu mapuje się na SIG_CRYPTO_FAILURE.ETSI EN 319 102-1§5.2.7.4
Kontrola formatu przebiega jako pierwsza, a jej niepowodzenie zatrzymuje proces.ETSI EN 319 102-1§5.3.4
Nieokreśloność związana z unieważnieniem może zostać rozstrzygnięta za pomocą dowodu czasu.ETSI EN 319 102-1§5.3.4
Ważna ścieżka certyfikacji zaczyna się od kotwicy zaufania dostarczonej jako wejście.RFC 5280§6.1
Weryfikator przelicza skrót treści; musi on być równy podpisanemu atrybutowi messageDigest.RFC 5652§5.6
messageImprint znacznika czasu podpisu hashuje wartość pola signature z SignerInfo.RFC 3161Appendix A
Atrybut signature-time-stamp niesie dokładnie jeden AttributeValue.ETSI EN 319 122-1§5.3

Wszystkie klauzule są parafrazowane; NextPDF nie odtwarza tekstu normatywnego. NextPDF nie składa żadnej deklaracji zgodności ani certyfikacji AdES / PAdES. Wsparcie dla standardu nie jest zgodnością z nim, a zgodność nie jest certyfikacją — NextPDF nie posiada żadnej certyfikacji i żadnej nie udziela. Silnik implementuje cytowane procedury walidacyjne jako funkcję; nie jest kwalifikowaną ani certyfikowaną usługą walidacji, a raport TOTAL_PASSED jest stwierdzeniem kryptograficznym, nie rozstrzygnięciem prawnym. Wartości enum ponownie wykorzystują wzorzec identyfikatora URN według ETSI dla interoperacyjności danych raportu; to ponowne użycie nie oznacza żadnego poparcia.

  • Mapowanie etykiet klauzul. Źródło pakietu oznacza punkty wejścia jako klauzule EN 319 102-1 5.2, 5.3 i 5.4. Korpus zgodności umieszcza sam proces walidacji Basic Signature w klauzuli 5.3, z kryptograficznym blokiem budulcowym w 5.2.7.4. Ta strona cytuje pobrane numery klauzul; miarodajny jest kontrakt zachowania, nie etykieta.
  • Testy deterministyczne. Każde porównanie czasu przepływa przez wstrzyknięty PSR-20 ClockInterface. Wstrzyknij zamrożony zegar, aby testować kontrole okna, granicę odchylenia genTime wynoszącą 300 sekund oraz decyzje o świeżości CRL.
  • Kompozycja. Wszyscy współpracownicy silnika są wstrzykiwani przez konstruktor i opcjonalni, z domyślnymi wartościami fail-closed. Domyślnym walidatorem ścieżki jest CertificateChainValidator::withDefaults() nad zegarem silnika; domyślne opcje utrzymują przetwarzanie polityki i ograniczeń nazw jako no-op dla zgodnych, nieograniczonych wejść.
  • Przestrzenie nazw. Powierzchnia silnika znajduje się w NextPDF\Enterprise\Security\Validation, powierzchnia walidacji ścieżki w NextPDF\Enterprise\Security\Pki, a orkiestrator wsadowy w NextPDF\Enterprise\Signature.
  • Higiena raportów. Raporty są niemutowalne i serializowalne przez toArray(). Kontekst diagnostyczny resetuje się przy każdym punkcie wejścia, więc raport nigdy nie niesie dowodów z poprzedniego przebiegu na tej samej instancji silnika.

Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz wspieraną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.