Enterprise edycja
Weryfikacja podpisu — szczegółowa referencja
W skrócie
Dział zatytułowany „W skrócie”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.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”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ę.
Publiczna powierzchnia API
Dział zatytułowany „Publiczna powierzchnia API”| Symbol | Parametry | Domyślne zachowanie | Zwraca | Zgłasza lub kończy się niepowodzeniem z | Uwagi |
|---|---|---|---|---|---|
AdESValidationEngine::__construct | 11 opcjonalnych parametrów: ?PathValidatorInterface $chainValidator, ?SignatureDataExtractor $extractor, ClockInterface $clock, ?LoggerInterface $logger, string $defaultPolicy, NetworkPolicy $networkPolicy oraz pięciu opcjonalnych współpracowników-weryfikatorów | Wszystkie wartości domyślne działają w trybie fail-closed: walidator ścieżki Pki nad zegarem silnika, brak ekstraktora, brak magazynu zaufania TSA | Nowy silnik | Nie zgłasza | Bez magazynu zaufania ocena łańcucha TSA raportuje brak zaufania; to mapuje się na INDETERMINATE, nigdy na wynik pozytywny |
AdESValidationEngine::validateBasic | string $signedData, string $signature | Walidacja podstawowa: format, skrót, kryptografia, słaby algorytm, łańcuch, uwarunkowane pochodzeniem sprawdzenie unieważnienia | ValidationReport | Nie zgłasza; niepowodzenia ekstrakcji i ścieżki mapują się na raporty fail-closed | Bez ekstraktora tylko kontrole zabezpieczające; zobacz przypadki brzegowe |
AdESValidationEngine::validateWithTime | string $signedData, string $signature, DateTimeImmutable $claimedTime | Najpierw walidacja podstawowa; okno certyfikatu i unieważnienie porównywane z deklarowanym czasem | ValidationReport | Nie zgłasza | Ścisła bramka znacznika czasu podpisu, gdy atrybut jest obecny; $claimedTime pozostaje kotwicą czasu |
AdESValidationEngine::validateWithLongTermData | string $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 archiwalne | ValidationReport | Nie zgłasza | NetworkPolicy::STRICT_OFFLINE z niewystarczającymi osadzonymi danymi daje INDETERMINATE / TRY_LATER |
AdESValidationEngine::validateArchivalTimestampChain | string $pdfBytes, array $dssData = [], ?TrustAnchorStoreInterface $anchors = null | Oparty na dowodach łańcuch pokrycia DocTimeStamp nad dokładnymi bajtami ByteRange | ValidationReport | Nie zgłasza przy wrogich bajtach | TOTAL_PASSED tylko dla zaufanego łańcucha pokrywającego do EOF |
MainIndication | — | Enum oparty na łańcuchu, trzy przypadki | — | — | Wartości URN według ETSI; zobacz listę przypadków poniżej |
SubIndication | — | Enum oparty na łańcuchu, piętnaście przypadków | — | — | Wartości URN według ETSI; zobacz listę przypadków poniżej |
ValidationReport::__construct | MainIndication $mainIndication, ?SubIndication $subIndication, DiagnosticData $diagnosticData, DateTimeImmutable $validationTime, string $validationPolicy = '' | Niemutowalny (final readonly) wynik walidacji | Nowy raport | Nie zgłasza | isPassed(), isFailed(), isIndeterminate(), toArray() |
DiagnosticData::__construct | array $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 audytu | Nowa wartość | Nie zgłasza | toArray() serializuje odniesienia do celów raportowania |
SignatureDataExtractor::extract | string $signedData, string $signature | SPI: parsuje CMS i wyodrębnia komponenty walidacyjne | ExtractedSignatureData | SignatureExtractionException, gdy podpisu nie da się sparsować | Interfejs; oddziela parsowanie ASN.1 od silnika |
CmsSignatureDataExtractor::extract | string $signedData, string $signature | Wyodrębnia oraz kryptograficznie weryfikuje odłączony podstawowy podpis PAdES | ExtractedSignatureData | SignatureExtractionException 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::scan | string $pdfBytes | Skan bajtowy słowników /ByteRange + /Contents z dokładnie dopasowanymi kontrolami przeciw fałszowaniu | list<PdfSignatureOccurrence> | Całkowita; nigdy nie zgłasza; zniekształceni kandydaci są pomijani | Uporządkowane według końca pokrycia, najwcześniejszy pierwszy |
PathValidatorInterface::validate | array $chain, ?DateTimeImmutable $validationTime = null, array $initialPolicies = [] | Walidacja ścieżki RFC 5280 §6.1.4 z przetwarzaniem polityki | PathValidationResult | PathValidationException przy strukturalnie nieprawidłowym łańcuchu lub przekroczonym limicie adwersarialnym | Łańcuch od podmiotu końcowego, kotwica na końcu |
PathValidatorInterface::validateWithAiaChasing | array $chain, ?DateTimeImmutable $validationTime = null | Rozwiązanie AIA brakujących pośrednich, następnie walidacja | PathValidationResult | PathValidationException | Pobrania są ograniczone limitami czasu i bajtów |
CertificateChainValidator | Konstruktor: silnik, PathValidationOptions, zegar, logger; statyczne withDefaults() | Implementacja SPI z domyślnymi limitami adwersarialnymi | PathValidationResult z obu metod | PathValidationException | Zgłaszany również, gdy OpenSSLCertificate nie da się wyeksportować do PEM |
PathValidationOptions::__construct | Limity (maxDepth, maxPolicyFanout, fetchTimeoutSeconds, fetchSizeCapBytes) plus flagi polityki, ?TrustAnchorStoreInterface $trustAnchors, bool $requireTrustedAnchor | Głębokość 32, rozgałęzienie 64, 5 s na pobranie, 10 MiB na pobranie; wszystkie flagi false | Nowe opcje | Nie zgłasza | Fabryki: defaults(), strict(), withTrustAnchors() |
PathValidationResult::__construct | bool $valid, string $trustAnchorFingerprint, DateTimeImmutable $validatedAt, array $validPolicies, ?RevocationCheckResult $revocation, bool $trustAnchorTrusted, array $fetchedCertificates, array $failureReasons | Niemutowalny wynik; trustAnchorTrusted domyślnie false (fail-closed) | Nowa wartość | Nie zgłasza | Przynależność do zaufania jest odrębna od poprawności strukturalnej |
PolicyProcessor | Konstruktor: PolicyTreeState $state, PathValidationOptions $options; processCertificate(string $certDer, int $depth, bool $selfIssued), finalizeWrapUp(), tree() | Rozwinięcie, mapowanie i podsumowanie drzewa polityk RFC 5280 §6.1.4 | void / list<non-empty-string> / PolicyTree | PathValidationException przy każdym niepowodzeniu przetwarzania polityki (fail-closed) | Podsumowanie zwraca ocalałe OID polityk, z wyłączeniem anyPolicy |
PolicyTree | attach(PolicyTreeNode $node, PathValidationOptions $options), enforceFanout(...), remove(...) oraz zapytania odczytu | Stan valid_policy_tree z indeksem głębokości | Różni się w zależności od metody | PathValidationException, gdy liczba żywych liści przekracza limit rozgałęzienia | Udostępnia ANY_POLICY_OID (2.5.29.32.0) |
NameConstraintsChecker::processCertificate | string $certDer, bool $applyNameCheck | Akumuluje i egzekwuje dozwolone / wykluczone poddrzewa zgodnie z RFC 5280 §6.1.4(g) | void | PathValidationException przy naruszonym poddrzewie, nieobsługiwanej formie GeneralName w ograniczeniu lub przekroczonym limicie | Nieporównywalne nazwy są obsługiwane w trybie fail-closed |
TrustAnchorStoreInterface::containsFingerprint | string $anchorDerSha256Hex | Przynależność wg małoliterowego szesnastkowego SHA-256 nad certyfikatem DER kotwicy | bool | Nie zgłasza | Szew zaufania konsultowany przez walidator ścieżki |
BatchSignatureValidator::validate | array $inputs (list<DocumentSignatureInput>) | Walidacja podpisów wielu dokumentów z buforowaniem unieważnień na poziomie partii | BatchValidationReport | InvalidArgumentException przy pustej liście; strażnik zasobów odrzuca partie powyżej 1000 dokumentów | Znajduje się w 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): BatchValidationReportEnumy 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.
Kontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”- Raporty wchodzą, raporty wychodzą. Cztery punkty wejścia silnika zwracają
ValidationReportdla wrogiego wejścia zamiast zgłaszać wyjątek. PrzechwyconySignatureExtractionExceptionkierowany jest na ścieżkę zabezpieczającą; przechwyconyPathValidationExceptionmapuje się naTOTAL_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 atrybutemmessageDigest(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, nigdyTOTAL_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 (
revocationCheckedtrue). Niesprawdzona wartość domyślna nie jest ani „zweryfikowany brak unieważnienia”, ani wyzwalaczemREVOKED. 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/REVOKEDjest rozstrzygany wobec$claimedTime; unieważnienie w deklarowanym czasie lub przed nim toTOTAL_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 toTOTAL_FAILED/FORMAT_FAILURE. Token musi zweryfikować się kryptograficznie od początku do końca; nieweryfikowalny token, konflikt różnic parserowych lub niezgodność odcisku toINDETERMINATE/TIMESTAMP_ORDER_FAILURE. Nieobsługiwany lub oparty na SHA-1 algorytm odcisku toINDETERMINATE/CRYPTO_CONSTRAINTS_FAILURE. Regułą wiązania jest RFC 3161 Appendix A:messageImprinttokenu musi równać się skrótowi oktetów wartościsignaturez 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
genTimetokenu; niezaufana kotwica toINDETERMINATE/CERTIFICATE_CHAIN_GENERAL_FAILURE, nigdy wynik pozytywny.NetworkPolicy::STRICT_OFFLINEz niewystarczającym osadzonym materiałem DSS zwracaINDETERMINATE/TRY_LATER. Ustalenia dotyczące dowodu istnienia, unieważnienia DSS i łańcucha archiwalnego każde skracają ścieżkę doINDETERMINATEz odwzorowanym podwskazaniem. - Bramki łańcucha archiwalnego. Brak obecnego DocTimeStamp to
INDETERMINATE/NO_POE. Strukturalnie niezgodny ByteRange toTOTAL_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_FAILURElubTRY_LATERw trybie strict-offline). Egzekwowana jest kolejność: nierosnącygenTime, ściśle postępujące pokrycie oraz późniejsze tokeny zawierające dziurę/Contentspoprzedniego tokenu. Najnowszy token musi pokrywać ostatni bajt; bajty końcowe toTIMESTAMP_ORDER_FAILURE.genTimewyprzedzający zegar weryfikatora o więcej niż 300 sekund toTIMESTAMP_ORDER_FAILURE. - Diagnostyka nigdy nie decyduje. Wpisy dowodu istnienia w
DiagnosticData::$timestampssł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::$trustAnchorTrustedjest odrębny od$valid;requireTrustedAnchorczyni niepotwierdzone zakończenie nieważnym.strict()włączarequireExplicitPolicy, twardo kończące niepowodzeniem sprawdzenie unieważnienia w transporcie orazrequireTrustedAnchor. 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łaszaInvalidArgumentExceptiondla 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.
Przypadki brzegowe i tryby awaryjne
Dział zatytułowany „Przypadki brzegowe i tryby awaryjne”- Domyślny silnik nie ma ekstraktora.
new AdESValidationEngine()wykonuje tylko kontrole zabezpieczające: pusty podpis lub dane podpisane toTOTAL_FAILED; każda niepusta para rozstrzyga się doINDETERMINATE/NO_SIGNING_CERTIFICATE_FOUND, nigdyTOTAL_PASSED. WstrzyknijNextPDF\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 przezvalidateArchivalTimestampChain(..., $anchors)lub skonfigurowanyTsaCertificateAtGenTimeCheck. - Pusty
$pdfBytes.validateArchivalTimestampChain('')zwracaTOTAL_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/ByteRangewewną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
PathValidatorInterfaceujawniaPathValidationExceptiondla strukturalnie nieprawidłowych łańcuchów, przekroczonych limitów, nieobsługiwanych form ograniczeń oraz nieudanego eksportu PEM uchwytuOpenSSLCertificate. Silnik przechwytuje tę klasę; twoi własni wywołujący muszą ją obsłużyć.
Zachowanie w trybie FIPS
Dział zatytułowany „Zachowanie w trybie FIPS”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.
Zgodność
Dział zatytułowany „Zgodność”| Deklaracja | Standard | Klauzula |
|---|---|---|
| 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 3161 | Appendix 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.
Uwagi programistyczne
Dział zatytułowany „Uwagi programistyczne”- 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 wNextPDF\Enterprise\Security\Pki, a orkiestrator wsadowy wNextPDF\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.
Zobacz także
Dział zatytułowany „Zobacz także”- Weryfikacja podpisu: kryptograficzna strona weryfikująca AdES / PAdES — strona funkcji: przepływ pracy, tabela algorytmów, uwagi o aktualizacji.
- Podpis — pełny opis referencyjny — strona producenta PAdES B-LT / B-LTA.
- Walidacja — pełny opis referencyjny — strukturalne kontrole polityki bez kryptografii.
- Bezpieczeństwo — pełny opis referencyjny — połączona powierzchnia bezpieczeństwa Enterprise, w tym profil FIPS.
- Mapa klauzul PAdES — B-B, B-T, B-LT, B-LTA w różnych edycjach.
Granica publikacji
Dział zatytułowany „Granica publikacji”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.