Back to Jwt

Supported Algorithms

docs/supported-algorithms.md

5.6.03.6 KB
Original Source

Supported Algorithms

This library supports signing and verifying tokens with both symmetric and asymmetric algorithms. Encryption is not yet supported.

Each algorithm will produce signature with different length. If you have constraints regarding the length of the issued tokens, choose the algorithms that generate shorter output (HS256, RS256, ES256, and BLAKE2B).

Symmetric algorithms

Symmetric algorithms perform signature creation and verification using the very same key/secret. They're usually recommended for scenarios where these operations are handled by the very same component.

NameDescriptionClassKey length req.
HS256HMAC using SHA-256\Lcobucci\JWT\Signer\Hmac\Sha256>= 256 bits
HS384HMAC using SHA-384\Lcobucci\JWT\Signer\Hmac\Sha384>= 384 bits
HS512HMAC using SHA-512\Lcobucci\JWT\Signer\Hmac\Sha512>= 512 bits
BLAKE2BBlake2b keyed Hash\Lcobucci\JWT\Signer\Blake2b>= 256 bits

!!! Warning Although BLAKE2B is fantastic due to its performance, it's not JWT standard and won't necessarily be offered by other libraries.

Asymmetric algorithms

Asymmetric algorithms perform signature creation with private/secret keys and verification with public keys. They're usually recommended for scenarios where creation is handled by a component and verification by many others.

NameDescriptionClassKey length req.
ES256ECDSA using P-256 and SHA-256\Lcobucci\JWT\Signer\Ecdsa\Sha256== 256 bits
ES384ECDSA using P-384 and SHA-384\Lcobucci\JWT\Signer\Ecdsa\Sha384== 384 bits
ES512ECDSA using P-521 and SHA-512\Lcobucci\JWT\Signer\Ecdsa\Sha512== 521 bits
RS256RSASSA-PKCS1-v1_5 using SHA-256\Lcobucci\JWT\Signer\Rsa\Sha256>= 2048 bits
RS384RSASSA-PKCS1-v1_5 using SHA-384\Lcobucci\JWT\Signer\Rsa\Sha384>= 2048 bits
RS512RSASSA-PKCS1-v1_5 using SHA-512\Lcobucci\JWT\Signer\Rsa\Sha512>= 2048 bits
EdDSAEdDSA signature algorithms\Lcobucci\JWT\Signer\Eddsa>= 256 bits

The following algorithms are implemented in a separate package lcobucci/jwt-rsassa-pss in order to keep dependencies low in the main package. Please see the installation instructions in the RSASSA-PSS readme.

NameDescriptionClassKey length req.
PS256RSASSA-PSS using SHA-256\Lcobucci\JWT\Signer\RsaPss\Sha256>= 2048 bits
PS384RSASSA-PSS using SHA-384\Lcobucci\JWT\Signer\RsaPss\Sha384>= 2048 bits
PS512RSASSA-PSS using SHA-512\Lcobucci\JWT\Signer\RsaPss\Sha512>= 2048 bits

none algorithm

The none algorithm as described by JWT standard is intentionally not implemented and not supported. The risk of misusing it is too high, and even where other means guarantee the token validity a symmetric algorithm shouldn't represent a computational bottleneck with modern hardware.