NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Crypto for Laravel

Fasáda Crypto

Crypto sprístupňuje RoundlyConsulting\Crypto\CryptoManager, takže po napísaní Crypto:: uvidíte každý vstupný bod — kľúče, signery, JOSE, JWK, X.509, ASN.1, hašovanie, autentifikované šifrovanie, COSE, OTP, CSPRNG a kódeky. Je to odporúčaný spôsob použitia a každá časť tejto dokumentácie začína práve ním. Každá továreň aj tak prijíma kľúče a nastavenia ako explicitné argumenty; manažér nečíta konfiguráciu ani nedrží tajný kľúč:

use RoundlyConsulting\Crypto\Facades\Crypto;
use RoundlyConsulting\Crypto\Hash\HashAlgorithm;
use RoundlyConsulting\Crypto\Signature\Algorithm;

// Keys: every key family the signers take, loaded, generated or bootstrapped
$rsa    = Crypto::keys()->rsa()->privateFromStorage('local', 'keys/rsa.pem');
$rsaPub = Crypto::keys()->rsa()->publicFromConfig('jwt.public_key');
$ec     = Crypto::keys()->ec()->generate('P-384');
$ed     = Crypto::keys()->ed25519()->public($raw32Bytes);
$secret = Crypto::keys()->hmac()->fromConfig('services.webhook.secret');

// Signers and JOSE
$token  = Crypto::jws()->sign(['kid' => 'k1'], ['sub' => 'alice'], Crypto::rs($rsa));
$claims = Crypto::jws()->verify($token, Crypto::rs($rsaPub), Algorithm::RS256);
$sig    = Crypto::es($ec)->sign($message);               // raw r‖s, as JOSE wants it
$der    = Crypto::ecDer()->fromRaw($sig, 48);             // DER, as OpenSSL wants it
Crypto::verifier()->verify($publicKey, $message, $sig);   // the key picks the algorithm

// Hashing, encryption, OTP, JWK, X.509, COSE
Crypto::hmac(HashAlgorithm::Sha256)->verify($payload, $signature, $webhookKey);
$sealed = Crypto::aes256Gcm()->seal($dataKey, $plaintext, associatedData: 'invoices:42');
Crypto::totp(digits: 8)->verify($otpSecret, $code);
Crypto::jwk($ec)->thumbprint();
Crypto::x509()->fromPem($pem)->fingerprint();
Crypto::x509()->chain()->fromX5c($x5c)->isLinked();      // the math — the trust call stays yours
Crypto::coseKey($coseBytes);                             // COSE_Key bytes -> a public key

// Randomness and codecs return the value directly
$code   = Crypto::random()->numeric(6);
$apiKey = Crypto::random()->token(40);
$b64u   = Crypto::base64UrlEncode($bytes);

Metódy kódekov a CSPRNG vracajú vypočítanú hodnotu; všetky ostatné vracajú krátkodobú inštanciu — signer, dekodér, kľúč alebo hodnotový objekt. Jwk, Certificate a Chain sú hodnotové objekty — fasáda ich sprístupňuje pre prehľadnosť, v kontajneri však nie sú registrované ako singletony.

Vnorené prístupy

Štyri metódy vracajú malú bezstavovú skupinu súvisiacich tovární. Každá metóda skupiny zachováva presné názvy parametrov, typy, predvolené hodnoty a výnimky svojej továrne — túto zhodu v oboch smeroch stráži architektonický test:

PrístupVraciaMetódy
keys()Signature\Key\Keysrsa() · ec() · ed25519() · hmac() — jedna skupina pre každú rodinu kľúčov; pozrite Načítanie a generovanie kľúčov.
random()Random\Csprngbytes() · token() · numeric() · alphanumeric() · fromAlphabet() · secret() — hodnoty z CSPRNG, vrátené priamo.
x509()X509\CertificatesfromPem() · fromDer() · fromBase64() · chain() — certifikáty z PEM, DER alebo položky x5c.
x509()->chain()X509\ChainsfromX5c() · fromPems() · fromPemBundle() · fromCertificates() — reťazce z x5c, zoznamov PEM, balíkov alebo načítaných certifikátov.
ecDer()Signature\Ec\DerCodecfromRaw() · toRaw() · isValid() — surové ECDSA r‖s ↔ DER.

Ploché skratky — certificate(), chainFromX5c(), chainFromPemBundle(), generateHmacSecret() a randomBytes() / randomToken() / randomSecret() — prechádzajú tými istými vnorenými prístupmi, takže oba zápisy spúšťajú rovnaký kód.

Všetky metódy podľa oblasti

OblasťMetódy
JOSE / JWKjws() · jwk($key) · jwkFromArray($members) · jwkFromJson($json)
Kľúčekeys()->rsa() / ->ec() / ->ed25519(): public() · private() · generate() · publicFromStorage() · privateFromStorage() · publicFromConfig() · privateFromConfig() · fromStorageOrGenerate(); rsa()->fromModulusExponent() · ec()->fromCoordinates()
Tajné kľúče HMACkeys()->hmac(): fromString() · generate() · fromStorage() · fromConfig() · fromStorageOrGenerate(); shortcut generateHmacSecret($bytes = 32)
Signeryhs($secret, $algorithm) · rs($key, $algorithm) · es($key) · eddsa($key) · verifier()
Kódovanie ECDSAecDer(): fromRaw($rawRS, $coordBytes) · toRaw($der, $coordBytes) · isValid($der)
X.509x509(): fromPem() · fromDer() · fromBase64() · chain() → fromX5c() · fromPems() · fromPemBundle() · fromCertificates(); shortcuts certificate($pem) · chainFromX5c($x5c) · chainFromPemBundle($bundle)
ASN.1 / DERderDecoder()
Hašovaniehmac($algorithm) · digest($algorithm) · constantTimeEquals($known, $user)
Autentifikované šifrovanieaes256Gcm(): seal() · open() · encrypt() · decrypt()
COSE / WebAuthncbor() · coseKey($coseBytes) · authenticatorData($bytes)
OTPtotp($algorithm, $digits, $period) · hotp($algorithm, $digits) · provisioningUri($secret, $label, $issuer, …)
CSPRNGrandom(): bytes() · token() · numeric() · alphanumeric() · fromAlphabet() · secret(); shortcuts randomBytes() · randomToken() · randomSecret()
Kódekybase64UrlEncode / base64UrlDecode · base64Encode / base64Decode · base32Encode / base32Decode · hexEncode / hexDecode

Chcete rovnaké API bez statických volaní? Pozrite si časť DI a priame triedy.

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 kryptomien

Odoslaní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.