Ga naar inhoud
getnextpdf.com

Beveiligings- en ondertekeningsfouten

Deze pagina documenteert de beveiligingsdomein-uitzonderingen in de namespace-boom NextPDF\Security. Elke vermelding noemt de klasse, geeft aan wanneer hij wordt opgeworpen, somt de velden op die zijn getContext() teruggeeft, en geeft een herstelstap.

De meeste van deze klassen breiden SecurityException uit, die NextPdfException uitbreidt en ContextAwareExceptionInterface implementeert. Dat betekent dat getContext(): array gestructureerde, secret-vrije diagnostiek teruggeeft die je kunt routeren naar logging- of application performance monitoring (APM)-pipelines. Vang SecurityException op om elke beveiligingsdomein-storing in één blok te trappen; vang een specifieke subklasse op wanneer je de getypeerde payload ervan nodig hebt.

Enkele klassen in deze boom breiden RuntimeException rechtstreeks uit in plaats van SecurityException. Die zijn hieronder gemarkeerd; ze stellen getContext() niet beschikbaar, en de meeste zijn gedocumenteerd als interne control-flow-signalen die je niet zou moeten verwachten op te vangen in applicatiecode.

AspectGedrag
BasiscontractNextPdfException::getContext() geeft [] terug; subklassen overschrijven het.
Secret-hygiëneBerichten en context laten ruw sleutelmateriaal, plaintext, PIN’s en initialization vector (IV)-bytes weg. Sleutels worden alleen als een fingerprint-prefix aan de oppervlakte gebracht.
SecurityExceptionAbstracte basis; draagt geen eigen velden. Subklassen definiëren de payload.
  • Wanneer opgeworpen. Nooit rechtstreeks opgeworpen; het is de abstracte basis voor het beveiligingsdomein. Hij bestaat zodat één enkel catch (SecurityException $e)-blok authenticated-encryption-integriteitsstoringen, nonce-reuse-verdedigingen, de PDF/A-versus-versleuteling-binding, sleutelbeheerfouten en PKI-storingen kan trappen.
  • Contextvelden. Geen eigen. Erft de lege standaard van NextPdfException; subklassen vullen de payload.
  • Herstel. Vang de concrete subklasse op voor actiegerichte afhandeling, of SecurityException voor grove beveiligingsincident-routering.

Versleutelings- en authenticated-encryption-fouten

Sectie met titel “Versleutelings- en authenticated-encryption-fouten”

Deze worden opgeworpen door de AES-GCM (Galois/Counter Mode)-encryptor en de PDF/A- guard. Voor symptoom-eerst-begeleiding, zie Versleuteling en machtigingen.

  • Wanneer opgeworpen. Een authenticated-encryption with associated data (AEAD)- ontsleuteling faalt om een niet-manipulatie-reden: afgekapte ciphertext, een ontbrekende IV, of een verkeerde sleutel geleverd op de API-grens, waar er niet genoeg materiaal was om de integriteitscontrole daadwerkelijk uit te voeren. Dit is een configuratie- of transportfout, geen beveiligingsincident.
  • Contextvelden. algorithm (bijvoorbeeld AES-256-GCM), reason (bijvoorbeeld ciphertext shorter than IV+tag).
  • Herstel. Verifieer dat de ciphertext, IV en sleutel compleet en correct geframed zijn; behandel dit niet als manipulatie. Vergelijk met TamperedDataException.
  • Wanneer opgeworpen. De AEAD-authenticatie-tag faalt de verificatie. De tag dekt ciphertext plus associated authenticated data (AAD); als een van beide na de versleuteling werd gewijzigd, geeft de onderliggende openssl_decrypt() false terug. Dit aparte subtype laat je een waarschuwing op beveiligingsincident-niveau aan de oppervlakte brengen in plaats van een framingfout.
  • Contextvelden. algorithm, ciphertext_length (lengte van de afgewezen ciphertext, exclusief IV en tag).
  • Herstel. Behandel als manipulatie of een verkeerde sleutel/IV. Probeer niet blindelings opnieuw; onderzoek de bron van de ciphertext. Per ISO/TS 32003:2023 §5.2 en NIST SP 800-38D §6.5 betekent een gefaalde tagcontrole dat de data niet authentiek is.
  • Wanneer opgeworpen. AES-GCM wordt gevraagd tweemaal te versleutelen met hetzelfde sleutel-en-IV- paar. De encryptor verdedigt met een per-instantie monotone teller en, als defense in depth, een runtime hash-set van elk uitgevoerd (key-fingerprint, IV)- paar. Omdat de teller botsingen per constructie uitsluit, is dit afvuren een critical-priority bug-indicator die nooit in productie zou mogen voorkomen. Het hergebruiken van een sleutel/IV-paar compromitteert de gehele keystream (ISO/TS 32003:2023 §5.2 NOTE 2; NIST SP 800-38D §8.3).
  • Contextvelden. key_fingerprint_prefix (eerste 8 hex-tekens van SHA-256(key)), iv_length (altijd 12 voor ISO/TS 32003), reason (hashset-collision of counter-rollover, ter onderscheiding van een teller-verslaande refactor-bug van de 2^63-teller-trip-wire), en iv_fixed_field_hex (het IV fixed field, alleen aanwezig indien geleverd, gerapporteerd onder zijn eigen sleutel en nooit verkeerd gelabeld als de key fingerprint).
  • Herstel. Breek onmiddellijk af en roteer de sleutel. Dien een defect-rapport in; dit duidt op een bug in de encryptor, niet op slechte aanroeperinvoer.
  • Wanneer opgeworpen. Een opt-in NIST SP 800-38D §8.3 safety-of-use-aanroepaantal wordt bereikt voor een gegeven AES-GCM-sleutel. Dit is een defense-in-depth-telemetriehaak voor aanroepers die de spec-aanbevolen grens (rond 2^32 aanroepen per sleutel) eerder willen afdwingen dan de architecturale limieten binnen de encryptor. Hij vuurt niet standaard af; alleen de helper assertWithinSafetyBound() werpt hem op.
  • Contextvelden. key_fingerprint_prefix, invocation_count (huidig encrypt()-aantal, op of boven de limiet), invocation_limit (de opt-in- grens).
  • Herstel. Roteer de documentsleutel (construeer een verse encryptor met nieuw sleutel- materiaal) voordat de cumulatieve botsing- en vervalsingswaarschijnlijkheid niet langer verwaarloosbaar is, of breid het aanroeperbeleid uit om voortgezette service te weigeren.
  • Wanneer opgeworpen. Een versleutelingsbewerking wordt geprobeerd op een PDF/A-getagd document. De PDF/A-familie (PDF/A-2, PDF/A-3, PDF/A-4) verbiedt uniform versleuteling: per ISO 19005 §6.1.3 mag de Encrypt-sleutel niet aanwezig zijn in de trailer, en ISO 19005-4:2020 Annexes A en B erven dit zonder wijziging. Er is geen toegestane combinatie van PDF/A en versleuteling.
  • Contextvelden. pdfa_mode (bijvoorbeeld pdfa4, pdfa3), encryption_operation (de afgewezen aanroep, bijvoorbeeld useAesGcm).
  • Herstel. Om een versleuteld document te produceren, laat de enablePdfA()-aanroep weg; om een archiveringsdocument te produceren, laat de versleutelingsaanroep weg. Zie PDF/A- en PDF/UA-validatie.
  • Wanneer opgeworpen. Een geconfigureerd crypto-beleid wijst een algoritme, sleutelsterkte of cipher af die is geselecteerd door een core-ondertekenings-, versleutelings- of hashing-bewerking. Het is de fail-closed-grens voor compliance-handhaving (bijvoorbeeld FIPS 140-2/3, eIDAS, of aangepast enterprise-beleid) en wordt opgeworpen door CryptoPolicyEnforcer voordat enige handtekening of ciphertext wordt geproduceerd, zodat een beleidsovertredende bewerking nooit een niet-goedgekeurd artefact kan uitvoeren. Te onderscheiden van een nauwe OpenSSL-bewerkings- storing en van een ondertekenings-primitieve-storing: dit is een beleidsafwijzing van een overigens geldig verzoek. Afgestemd op NIST SP 800-131A Rev. 2 en ISO/IEC 19790:2025 §7.
  • Contextvelden. policy (beleidsnaam, bijvoorbeeld FIPS 140-3 Strict), category (hash, signature, encryption, of key-strength), item (het afgewezen item, bijvoorbeeld een object identifier (OID), ciphernaam, of rsa/1024), reason.
  • Herstel. Selecteer een algoritme, sleutellengte of cipher die het genoemde beleid goedkeurt, of pas het beleid aan als je het bezit. Route de gestructureerde context naar het gedocumenteerde compliance-runbook.

Twee gelijknamige klassen bestaan. Ze delen de SecurityException-wortel zodat één catch (SecurityException $e)-blok beide trapt, maar ze dragen verschillende payloads. Importeer via de fully qualified name wanneer je een specifieke vorm nodig hebt.

KeyManagementException (levenscyclus: NextPDF\Security\Exception)

Sectie met titel “KeyManagementException (levenscyclus: NextPDF\Security\Exception)”
  • Wanneer opgeworpen. Een sleutelbeheerbewerking faalt voordat de sleutel wordt geconsumeerd door een sign- of encrypt-primitieve: Privacy-Enhanced Mail (PEM)-, PKCS#12- of PKCS#11- sleutelparse-storingen; key-derivation (HKDF, PBKDF2, scrypt)-storingen; AES Key Wrap (RFC 3394)-afwijzing op een verkeerde key-encryption key; een hardware security module (HSM) die misvormde Distinguished Encoding Rules (DER) teruggeeft; of een Ed25519-seed- lengte-mismatch.
  • Contextvelden. operation (bijvoorbeeld load_pem, kek_derive, key_wrap), key_type (bijvoorbeeld RSA, EC-P256, Ed25519, AES-256), reason. Ruw sleutelmateriaal wordt nooit opgenomen.
  • Herstel. Inspecteer de genoemde bewerking en het sleuteltype, corrigeer het bron-sleutel- materiaal of de derivation-invoer, en probeer opnieuw.

KeyManagementException (ondertekeningspad: NextPDF\Security\Signature\Exception)

Sectie met titel “KeyManagementException (ondertekeningspad: NextPDF\Security\Signature\Exception)”
  • Wanneer opgeworpen. Een signer-provider stuit op een sleutelbeheerfout: de gevraagde sleutelversie is onbekend, uitgeschakeld, gepland voor vernietiging, mist ondertekenings- machtiging, of is anderszins onbruikbaar. Dit is wat RsaPssSigner en LocalKeySignerProvider opwerpen bij live sleutelstoringen. Benoemde constructors: unknownKeyVersion() en keyVersionDisabled().
  • Contextvelden. providerId, keyVersion, reason. Accessors: providerId(), keyVersion(), reason().
  • Herstel. Roteer of her-permissieer de sleutel, of selecteer een bruikbare sleutelversie, en probeer dan opnieuw. Te onderscheiden van SignatureFailedException, die signaleert dat de ondertekenings-primitieve zelf faalde.

Voor symptoom-eerst-begeleiding over onbereikbare niveaus en ontbrekende capabilities, zie Handtekening- en tijdstempelstoringen.

SignatureFailedException (R4-13: NextPDF\Security\Exception)

Sectie met titel “SignatureFailedException (R4-13: NextPDF\Security\Exception)”
  • Wanneer opgeworpen. Een cryptografische ondertekeningsbewerking faalt: een RSA-, ECDSA- of Ed25519-sign-primitieve geeft false of uitvoer van verkeerde lengte terug; een HSM- of PKCS#11- token reageert met een non-success-status; Cryptographic Message Syntax (CMS)- SignedData-assemblage faalt op een misvormd certificaat of keten; of een Ed25519- round-trip-zelfverificatie faalt. Nieuwe code zou de voorkeur moeten geven aan dit R4-13-subtype boven de legacy PAdES-gekoppelde handtekening-uitzondering.
  • Contextvelden. operation (bijvoorbeeld sign, verify, build_cms), algorithm (bijvoorbeeld rsa-pkcs1v15-sha256, ed25519), reason. Accessors: getOperation(), getAlgorithm(), getReason().
  • Herstel. Lees de bewerking en het algoritme, corrigeer de invoer (sleutel, certificaatketen, of backend-beschikbaarheid), en probeer opnieuw. Afgestemd op de fail-closed sleutelafhandelingshouding van ETSI EN 319 142-1.

SignatureFailedException (SPI: NextPDF\Security\Signature\Exception)

Sectie met titel “SignatureFailedException (SPI: NextPDF\Security\Signature\Exception)”
  • Wanneer opgeworpen. Een SignerProviderInterface-implementatie kan een ondertekeningsbewerking niet voltooien om welke reden dan ook die niet als sleutelbeheer wordt gecategoriseerd: backend-driverfout, misvormd sleutelmateriaal, of onherstelbare HSM-I/O. Dit is de catch-all voor het fail-closed-ondertekeningscontract, waarbij elke primitieve opwerpt bij storing in plaats van null, false of een lege string terug te geven. Benoemde constructor: forProvider().
  • Contextvelden. providerId, reason. Accessors: providerId(), reason().
  • Herstel. Inspecteer de provider-id en reden, corrigeer de provider-backend of het sleutelmateriaal, en probeer opnieuw. Vertak op KeyManagementException versus dit type om “de sleutel is slecht” te scheiden van “de primitieve faalde”.
  • Wanneer opgeworpen. Het gevraagde PAdES-conformiteitsniveau kan niet worden gehonoreerd onder de huidige runtime-infrastructuur (meestal een ontbrekende timestamp authority voor B-T en hoger) en de aanroeper heeft geen toestemming gegeven om te degraderen. De standaard is fail-closed: de engine weigert in plaats van stilletjes een lager niveau te produceren terwijl hij het hogere adverteert, wat een regressie op eIDAS-niveau zou zijn. Afgestemd op ETSI EN 319 142-1 §6. Merk op dat deze klasse NextPdfException rechtstreeks uitbreidt (niet SecurityException).
  • Contextvelden. requestedLevel, highestAchievableLevel, reason. Accessors: requestedLevel(), highestAchievableLevel(), reason().
  • Herstel. Lees reason om de ontbrekende infrastructuur te identificeren en lever die (configureer bijvoorbeeld een timestamp authority), of geef allowDegradation: true mee aan PadesOrchestrator om opzettelijk het hoogst haalbare niveau te accepteren.
  • Wanneer opgeworpen. SignerProviderRegistry::get() wordt gevraagd om een provider-id die niet geregistreerd is. Implementeert PSR-11 NotFoundExceptionInterface, zodat de registry voldoet aan het PSR-11-container-contract. Benoemde constructor: forId(). Deze klasse breidt RuntimeException uit en stelt getContext() niet beschikbaar.
  • Contextvelden. Geen. De niet-geregistreerde id verschijnt in het bericht.
  • Herstel. Registreer de provider onder de verwachte id voordat je hem opvraagt, of corrigeer de id die je aan de registry meegeeft.

Deze breiden RuntimeException uit en stellen getContext() niet beschikbaar. SHAKE256 is de SHA-3 extendable-output function die door sommige ISO/TS 32001-paden wordt vereist.

  • Wanneer opgeworpen. Bij digest-tijd, wanneer de geselecteerde provider niet aan het verzoek kan voldoen. Benoemde constructors: noBackend() (geen werkende SHAKE256-backend op deze host, over alle geprobeerde tiers) en ffiCallFailed() (een FFI-gebonden OpenSSL EVP-aanroep gaf een non-success-status terug, bijvoorbeeld van een gestripte libcrypto- build).
  • Contextvelden. Geen. Het bericht noemt de geprobeerde tiers of het gefaalde symbool.
  • Herstel. Installeer ext-ffi met OpenSSL 3.x aanwezig, of upgrade naar een PHP- build die shake256 in hash_algos() blootstelt. Een userland-Keccak-fallback wordt opzettelijk niet meegeleverd.
  • Wanneer opgeworpen. Vanuit een SHAKE256-provider-constructor wanneer de capability-probe faalt, zodat de provider niet kan worden geïnstantieerd. Het is een control-flow-signaal: de provider-registry vangt het op, registreert de tier-label en probeert de volgende tier. Het zou nooit in applicatiecode mogen ontsnappen. Benoemde constructor: forTier().
  • Contextvelden. Geen. Het bericht noemt de tier en de reden.
  • Herstel. Niet rechtstreeks door de aanroeper actiegericht; als de gehele tier-keten is uitgeput, brengt de registry in plaats daarvan Shake256NotAvailableException::noBackend() aan de oppervlakte, die de operator-gerichte oplossing meedraagt.

Deze dekken de ISO/TS 32004 document-niveau message authentication code (MAC), opgeslagen onder /AuthCode. Beide breiden NextPdfException uit en overschrijven getContext().

  • Wanneer opgeworpen. Fail-closed, door de MAC-token-reader, wanneer een CMS- AuthenticatedData-MAC-token structureel misvormd is of een algoritme declareert buiten de overeengekomen ISO/TS 32004-set. Benoemde constructors: malformed() en algorithmMismatch(). Gemarkeerd als @internal.
  • Contextvelden. status (de DocumentMacVerificationStatus-waarde, ofwel MalformedToken of AlgorithmMismatch). Publieke readonly property: $status.
  • Herstel. Behandel het document als niet geverifieerd. Een misvormd token of een algoritme buiten de overeengekomen set betekent dat de MAC geen vertrouwen kan vestigen; ga niet verder alsof de inhoud beschermd is.
  • Wanneer opgeworpen. Fail-closed, wanneer een document-niveau-MAC-verificatie geen vertrouwde staat kan bereiken: een ontbrekende of misvormde /AuthCode, een algoritme buiten de overeengekomen set, een unwrap-storing, of een MAC-mismatch (manipulatie). De verify() van de verifier geeft een expliciet resultaat terug voor vertakking; dit is de exception-flow- tegenhanger die wordt opgeworpen door assertVerified() zodat “vertrouw de inhoud”-code nooit voorbij een ongeverifieerd document kan komen. Benoemde constructor: fromResult().
  • Contextvelden. status (de DocumentMacVerificationStatus-waarde). Publieke readonly property: $status.
  • Herstel. Vertrouw de documentinhoud niet. Inspecteer status om een manipulatie (MAC-mismatch) te onderscheiden van een configuratieprobleem (ontbrekende of misvormde /AuthCode, algoritme-mismatch).

Deze dekken RFC 5280 certification-path-validatie. Het basistype en zijn subklassen zijn fail-closed.

  • Wanneer opgeworpen. Een strict-modus-storing van de RFC 5280-padvalidator. Het is de niet-finale basis voor nauwere subklassen (ChainLengthExceededException, UnsupportedExtensionException), zodat handlers die dit type opvangen ook die opvangen via Liskov-substitutie. Breidt SecurityException uit.
  • Contextvelden. Overschrijft getContext() niet (erft de lege standaard). Draagt de gestructureerde redenen in de bevroren publieke readonly array- property $reasons (een niet-lege lijst van rule-name plus description strings).
  • Herstel. Lees $reasons om de falende regel te identificeren, corrigeer de certificaat- keten, en hervalideer. Vang dit type op om elke padvalidatiestoring uniform af te handelen.
  • Wanneer opgeworpen. De padvalidator wordt gevraagd een keten te doorlopen waarvan de lengte het geconfigureerde plafond overschrijdt. De cap wordt afgedwongen voordat enig parsen begint, zodat een kwaadwillende leverancier de validator niet kan dwingen tot kwadratisch werk of resources kan uitputten met een willekeurig diepe keten. Het standaardplafond van 10 volgt het PKIX-CMP-profiel (RFC 4210 §5.3.18); echte ketens passen in 5 tot 6 vermeldingen. Subklasse van PkiPathValidationException.
  • Contextvelden. Erft de lege getContext(); de reden-string chain_length_exceeded: supplied=<n> cap=<n> wordt doorgestuurd naar de $reasons van de ouder. Publieke readonly properties: $supplied, $cap.
  • Herstel. Lever een keten binnen het plafond, of verhoog de geconfigureerde cap als een legitiem langere keten wordt verwacht.
  • Wanneer opgeworpen. De padvalidator stuit op een kritieke X.509-extensie waarvan de handhaving nog niet is geïmplementeerd. Per RFC 5280 §4.2 moet een onherkende kritieke extensie fail-closed gaan; zowel strikte als lenient-modi gaan hier fail-closed, omdat het stilletjes overslaan van een kritieke extensie een beveiligingsregressie zou zijn. De validator dekt chain build, AKI/SKI-matching, key usage, extended key usage, basic constraints, expiry en signature verification; alles anders dat kritiek is komt hier aan de oppervlakte. Subklasse van PkiPathValidationException.
  • Contextvelden. Erft de lege getContext(); gestructureerde redenen worden doorgestuurd naar de $reasons van de ouder. Publieke readonly properties: $extensionOid (dotted OID, bijvoorbeeld 2.5.29.30 voor name constraints), $extensionName, $clauseRef (verwijzing naar de RFC 5280-clausule en de deferred-items-logvermelding).
  • Herstel. In lenient-modus, vang deze specifieke subklasse op om terug te vallen op een grover beleid zonder echte padvalidatiestoringen te slikken. Audit $extensionOid en $clauseRef tegen je PKI-fixtures om te zien welke extensie de validatie blokkeert.
  • Wanneer opgeworpen. Zowel OCSP- als certificate revocation list (CRL)-endpoints zijn uitgeput zonder een definitief oordeel: OCSP-transportstoring of misvormd antwoord, en CRL-transportstoring of misvormde CRL, met beide circuit breakers open of beide caches ontbrekend. Strict-modus behandelt dit als fail-closed; lenient-modus vangt het op en geeft een PSR-3-waarschuwing af met revocation = null. Breidt SecurityException uit.
  • Contextvelden. Overschrijft getContext() niet (erft de lege standaard). Draagt de staat in de publieke readonly properties $ocspState en $crlState (elk standaard unknown).
  • Herstel. Herstel de bereikbaarheid naar een intrekkingsbron, wacht tot de circuit breakers sluiten, of warm de cache op, en probeer dan opnieuw. Onderdruk dit niet om een long-term-validation-artefact te verkrijgen; de intrekkingsassertie maakt deel uit van dat niveau.
  • Wanneer opgeworpen. Een RFC 6960 §4.2.2.2 BasicOCSPResponse-handtekening faalt de cryptografische verificatie tegen het certificaat van de responder. De parser decodeert signatureAlgorithm (RSA-PSS, ECDSA, of RSA-PKCS1v15) en verifieert signature over tbsResponseData; elke storing werpt deze getypeerde uitzondering op zodat aanroepers een structureel geldig maar cryptografisch gemanipuleerd antwoord kunnen onderscheiden van een misvormd-DER-antwoord. Niet-finaal, zodat stroomafwaartse pakketten meer specifieke subklassen kunnen publiceren. Breidt SecurityException uit.
  • Contextvelden. Overschrijft getContext() niet (erft de lege standaard). Draagt de storings-tag in de publieke readonly property $reason (bijvoorbeeld signature_mismatch, responder_cert_not_in_bundle, unsupported_signature_algorithm); vrije-tekst detail wordt in het bericht gevouwen.
  • Herstel. Inspecteer $reason. Voor responder_cert_not_in_bundle, lever de juiste trust-anchor-bundle en het responder-certificaat. Voor signature_mismatch, behandel het antwoord als onbetrouwbaar. Zie Handtekening- en tijdstempelstoringen.
  • Wanneer opgeworpen. Een storing in RFC 3161 time-stamp authority (TSA)-communicatie of antwoordparsing: de TSA geeft een errorstatus terug, het HTTP-verzoek faalt, of het ASN.1-antwoord kan niet worden geparset. Het is de basis van de TSA-fout-hiërarchie en is niet-finaal zodat verificatiestoringen het kunnen uitbreiden. Breidt NextPdfException uit.
  • Contextvelden. Overschrijft getContext() niet (erft de lege standaard).
  • Herstel. Vang TsaException op voor elk TSA-fout-pad. Verifieer de TSA- bereikbaarheid en dat het endpoint een welgevormd RFC 3161-antwoord teruggeeft.
  • Wanneer opgeworpen. CMS-verificatie van een RFC 3161 TimeStampToken faalt bij een van de verplichte verificatiestappen: RFC 5816 §3 ESSCertIDv2-binding, RFC 5652 §11 signed-attributes-integriteit, RFC 3161 §2.4.2 producedAt-versheid, of RFC 5652 §5.4 SignerInfo-handtekening. Fail-closed, met een getypeerde stap- discriminator zodat audit-pipelines replay van clock skew van cert-mismatch kunnen onderscheiden zonder berichten te grepppen. Subklasse van TsaException, zodat legacy catch (TsaException)-handlers blijven afvuren.
  • Contextvelden. step (de falende pipeline-Step-waarde) en message. Accessor: getStep().
  • Herstel. Actiegericht door een ontwikkelaar (verkeerd geconfigureerd TSA-certificaat of skew- tolerantie) of beveiliging (vermoedelijke MITM of replay). Lees step om de falende fase te lokaliseren en corrigeer de bijbehorende invoer of trustconfiguratie.
  • Wanneer opgeworpen. Intern signaal dat een DER-walk een misvormde of afgekapte grens raakte, opgeworpen door de laag-niveau-walkers binnen de TSA-token-verifier. Het wordt altijd opgevangen op de openbare verify-grens en opnieuw verpakt in een TsaTokenVerificationException die de juiste stap-discriminator meedraagt; het lekt nooit naar aanroepercode. Breidt RuntimeException uit; gemarkeerd als @internal.
  • Contextvelden. Geen.
  • Herstel. Niet aanroeper-gericht. Handel in plaats daarvan de verpakte TsaTokenVerificationException af.

Deze breiden RuntimeException uit en stellen getContext() niet beschikbaar. Beide zijn fail-closed-decoders.

  • Wanneer opgeworpen. De name-constraints-decoder stuit op een afdwingbaar GeneralSubtree-element dat hij niet getrouw kan decoderen. RFC 5280 §4.2.1.10 vereist dat een relying party een afdwingbare name constraint verwerkt of het certificaat afwijst; het omzetten van de eerdere stille drop naar deze getypeerde storing voorkomt een fail-open die de geaccepteerde name-set stilletjes zou hebben verbreed. De reikwijdte is beperkt tot de afdwingbare naamvormen (directoryName, dNSName, iPAddress, rfc822Name, uniformResourceIdentifier); niet-afdwingbare vormen blijven negeerbaar en werpen hem nooit op. Benoemde constructor: undecodableEnforceableBase(). Gemarkeerd als @internal.
  • Contextvelden. Geen. Een log-veilige detail-string wordt in het bericht meegedragen.
  • Herstel. De enforcer brengt een fail-closed name_constraints:-reden aan de oppervlakte en de keten wordt afgewezen. Onderzoek de name-constraints-codering van het certificaat; versoepel de handhaving niet.
  • Wanneer opgeworpen. De qcStatements-extensie is structureel misvormd: afgekapte DER, een verkeerde tag, of een lengte-overflow. De decoder is fail-closed en werpt op in plaats van een gedeeltelijk of heuristisch resultaat terug te geven wanneer hij niet met zekerheid kan bepalen wat de extensie zegt. Gemarkeerd als @api.
  • Contextvelden. Geen.
  • Herstel. Vang hem alleen expliciet op als je van plan bent misvormde codering te tolereren; behandel anders de qualified-certificate-statements van het certificaat als onbepaalbaar en wijs het certificaat af of geef het opnieuw uit.
  • Wanneer opgeworpen. Een PKCS#11 v3.1 session-management-defect. Elke benoemde constructor mapt naar een specifieke defect-klasse en naar een PKCS#11-CKR_*-return- waarde, blootgesteld via de getypeerde $kind-discriminator zodat aanroepers vertakken op een stabiele enum-string in plaats van fragiele bericht-matching. Constructors omvatten: cryptokiNotInitialized(), userNotLoggedIn(), userAlreadyLoggedIn(), operationNotInitialized(), operationActive(), mechanismNotAllowed(), tokenDisconnected(), concurrentSessionLimitExceeded(), sessionAlreadyClosed(), stateTransitionInvalid(), osLockingRequired(), loginTtlExpired(), en signOperationTtlExpired(). Breidt SecurityException uit.
  • Contextvelden. Overschrijft getContext() niet (erft de lege standaard). Draagt het getypeerde kind in de publieke readonly property $kind, een van de KIND_*-constanten (bijvoorbeeld KIND_USER_NOT_LOGGED_IN, KIND_TOKEN_DISCONNECTED, KIND_LOGIN_TTL_EXPIRED). Slot- en sessie- identifiers, mechanisme en TTL-waarden verschijnen in het bericht. PIN’s en certificaatbytes worden nooit opgenomen.
  • Herstel. Switch op $kind. Voor user_not_logged_in, log in met de user- PIN voordat je een sign-bewerking initialiseert. Voor token_disconnected, behandel alle sessies op het slot als verweesd. Voor de TTL-kinds, herauthenticeer of herinitialiseer de bewerking. Voor mechanism_not_allowed, breid de geconfigureerde mechanisme-allow-list uit of kies een toegestaan mechanisme.