Všetko, čo balík vyhadzuje, dedí z RoundlyConsulting\Crypto\Exceptions\CryptoException — abstraktnej RuntimeException. Zachyťte ju široko, alebo konkrétny podtyp pre presnú reakciu — bežným vzorom je obaliť ju vlastnou doménovou výnimkou:
use RoundlyConsulting\Crypto\Exceptions\CryptoException;
use RoundlyConsulting\Crypto\Signature\Algorithm;
try {
$claims = $jws->verify($token, $verifier, Algorithm::RS256);
} catch (CryptoException $e) {
// any crypto failure — malformed token, algorithm mismatch, bad signature, weak key, …
throw new TokenRejected(previous: $e); // your own domain exception
}Hierarchia
RuntimeException
└── CryptoException (abstract)
├── Codec\InvalidEncodingException
├── Aead\DecryptionFailedException
├── Aead\InvalidAeadParameterException
├── Random\InvalidLengthException
├── Signature\AlgorithmMismatchException
├── Signature\InvalidSignatureException
├── Signature\KeyLoadException
├── Signature\WeakKeyException
├── Jose\MalformedTokenException
├── Jose\MalformedJwkException
├── Jose\ClaimMismatchException
│ ├── Jose\TokenExpiredException
│ └── Jose\TokenNotYetValidException
├── X509\MalformedCertificateException
├── X509\InvalidChainException
├── X509\InvalidLeewayException
├── Asn1\MalformedDerException
├── Cose\MalformedCborException
├── Cose\UnsupportedAlgorithmException
└── Otp\InvalidOtpParameterExceptionKedy sa ktorá vyhadzuje
| Výnimka | Vyhadzuje sa, keď |
|---|---|
Codec\InvalidEncodingException | Reťazec base64url, base64, base32 alebo hex je neplatný či nekanonický. |
Aead\DecryptionFailedException | open() alebo decrypt() nedokáže vstup autentifikovať — nesprávny kľúč, nonce či pridružené dáta, zmenený šifrový text alebo tag, prípadne vstup príliš krátky na tag. Pre každú príčinu rovnaká správa. |
Aead\InvalidAeadParameterException | Kľúč AES-256-GCM nemá 32 bajtov alebo nonce nemá 12 bajtov — programátorská chyba, nikdy nie vlastnosť dát — alebo OpenSSL šifru odmietne. |
Random\InvalidLengthException | Požadovaná náhodná dĺžka je mimo rozsahu alebo je abeceda prázdna či nie je platné UTF-8. |
Signature\AlgorithmMismatchException | Typ kľúča nezodpovedá algoritmu alebo alg tokenu nezodpovedá pripnutému. |
Signature\InvalidSignatureException | Podpis neprejde overením alebo sa ECDSA DER nedá normalizovať. |
Signature\KeyLoadException | OpenSSL nevie kľúč načítať, parsovať či vygenerovať, kľúč má nesprávny typ alebo loader nenájde súbor, disk či hodnotu v konfigurácii, prípadne nevie zapísať vygenerovaný kľúč. |
Signature\WeakKeyException | Kľúčový materiál je príliš slabý alebo mimo rozsahu — HMAC tajný kľúč (aj kratší než veľkosť hašu pre HS384 / HS512), veľkosť či exponent RSA, nepodporovaná krivka. |
Jose\MalformedTokenException | Kompaktné JWS je štrukturálne neplatné — segmenty, JSON, hlavička či payload, ktoré nie sú JSON objekt, veľkosť, crit. |
Jose\MalformedJwkException | JWK je chybné, príliš veľké alebo obsahuje súkromné či neznáme členy. |
Jose\ClaimMismatchException | Claim chýba alebo má nesprávny typ (základná trieda dvoch nasledujúcich). |
Jose\TokenExpiredException | assertTemporal() zistí, že exp uplynul. |
Jose\TokenNotYetValidException | assertTemporal() zistí nbf alebo iat v budúcnosti. |
X509\MalformedCertificateException | Certifikát sa nedá prečítať či parsovať, je príliš veľký, za jeho DER nasledujú ďalšie bajty alebo nesie nepodporovaný typ kľúča. |
X509\InvalidChainException | Reťazec je prázdny, dlhší než 10 certifikátov alebo sa k nemu pristupuje mimo rozsahu. |
X509\InvalidLeewayException | Predikát platnosti dostane zápornú toleranciu. |
Asn1\MalformedDerException | Vstup DER porušuje kanonické pravidlá X.690 alebo limity dekodéra. |
Cose\MalformedCborException | CBOR alebo authenticator data sú chybné či nekanonické, alebo pole COSE kľúča má nesprávny typ CBOR. |
Cose\UnsupportedAlgorithmException | Neznámy COSE algoritmus, typ kľúča či krivka — alebo EdDSA bez ext-sodium. |
Otp\InvalidOtpParameterException | Počet číslic, perióda alebo okno OTP sú mimo rozsahu. |
Zachytenie ClaimMismatchException zachytí aj obe časové chyby. Overenie v Es, Rs a EdDSA pri podpise nesprávnej dĺžky či formátu vracia false namiesto výnimky; vnútri Jws::verify() sa neúspešný podpis prejaví ako InvalidSignatureException.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.