Looking for this page in the latest version…
+Page not found
+This page has moved or never existed. Search, or start from one of these:
+ +-
+
- Home +
- Prerequisites +
- GitHub +
| Class | Header | Time-based |
|---|---|---|
| AlgorithmChecker | alg | No |
| AudienceChecker | audThis is a replicated claim as per the RFC7516 section 5.3 | No |
| ExpirationTimeChecker | exp | Yes |
| IssuedAtChecker | iat | Yes |
| IssuerChecker | iss | No |
| NotBeforeChecker | nbf | Yes |
| UnencodedPayloadChecker | b64See unencoded payload for more information. | No |
| CallableChecker | Generic object that can execute a callable for checking a particular parameter | No |
| IsEqualChecker | Generic object that can compare a particular parameter to a predefined value | No |
P-256
P-384
P-521
| YES | ECDSA signatures (`ES256`/`ES384`/`ES512`) and `ECDH-ES*`/`ECDH-SS*` key agreement | -| EC | secp256k1 | YES | `ES256K`, in the `Jose\Experimental` namespace | -| EC |BP-256
BP-384
BP-512
| YES | Brainpool curves. `BP256R1`/`BP384R1`/`BP512R1` signatures are in the `Jose\Experimental` namespace | -| OKP | Ed25519 | YES | `EdDSA` signatures. SODIUM extension is required | -| OKP | X25519 | YES | `ECDH-ES*` key agreement. SODIUM extension is required | -| OKP |Ed448
X448
| NO | No extension or built-in implementation available | - -{% hint style="warning" %} -The Brainpool curves are not registered with IANA, and neither are their signature algorithms. The identifiers follow the convention adopted by the other implementations, so keys and tokens using them are only interoperable with the implementations sharing that convention. -{% endhint %} - -## Key Sets (JWKSet) - -JWKSet is fully supported. - -## Supported Signature Algorithms - -| Signature Algorithm | Supported | Comment | -| ------------------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- | -|HS256
HS384
HS512
| YES | | -|ES256
ES384
ES512
| YES | | -|RS256
RS384
RS512
| YES | | -|PS256
PS384
PS512
| YES | GMP or BCMath extension is highly recommended | -| EdDSA with Ed25519 curve | YES | SODIUM extension is required | -| EdDSA with Ed448 curve | NO | No extension or built-in implementation available | -| none | YES | **Please note that this is not a secured algorithm. USE IT WITH CAUTION!** | - -{% hint style="info" %} -Other signature algorithms like `RS1`, `HS1`, `HS256/64`, `ES256K`, `BP256R1`, `BP384R1`, `BP512R1` and `Blake2b` are also available in the `Jose\Experimental` namespace. These algorithms should be used for testing purposes only or for compatibility with old systems. -{% endhint %} - -## Supported Key Encryption Algorithms - -| Key Encryption Algorithm | Supported | | -| ----------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| dir | YES | | -|RSA1_5
RSA-OAEP
RSA-OAEP-256
| YES |GMP or BCMath extension is highly recommended
Read note below!
ECDH-ES
ECDH-ES+A128KW
ECDH-ES+A192KW
ECDH-ES+A256KW
| YES | `spomky-labs/aes-key-wrap` is required for \*KW algorithms. See the [supported curves](#supported-elliptic-curves) | -|ECDH-SS
ECDH-SS+A128KW
ECDH-SS+A192KW
ECDH-SS+A256KW
| YES | `spomky-labs/aes-key-wrap` is required for \*KW algorithms. See the [supported curves](#supported-elliptic-curves) | -|A128KW
A192KW
A256KW
| YES | `spomky-labs/aes-key-wrap` is required | -|PBES2-HS256+A128KW
PBES2-HS384+A192KW
PBES2-HS512+A256KW
| YES | `spomky-labs/aes-key-wrap` is required | -|A128GCMKW
A192GCMKW
A256GCMKW
| YES | `spomky-labs/aes-key-wrap` is required | -| ECDH-ES with X25519 curve | YES | SODIUM extension is required | -| ECDH-ES with X448 curve | NO | No extension or built-in implementation available | - -{% hint style="info" %} -Other key encryption algorithms like `RSA-OAEP-384`, `RSA-OAEP-512`, and `chacha20-poly1305` are also available in the `Jose\Experimental` namespace. These algorithms should be used for testing purposes only or for compatibility with old systems. -{% endhint %} - -{% hint style="danger" %} -The algorithms `RSA1_5` and `RSA-OAEP` are now deprecated. Please use with caution. -{% endhint %} - -## Supported Content Encryption Algorithms - -| Content Encryption Algorithm | Supported | -| ------------------------------------------------------------ | --------- | -|A128CBC-HS256
A192CBC-HS384
A256CBC-HS512
| YES | -|A128GCM
A192GCM
A256GCM
| YES | - -{% hint style="info" %} -Other content encryption algorithms like `A128CTR`, `A192CTR`, `A256CTR`, and various AES-CCM algorithms (e.g., `A128CCM-16-128`, `A256CCM-64-64`) are also available in the `Jose\Experimental` namespace. These algorithms should be used for testing purposes only or for compatibility with old systems. -{% endhint %} diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..4b63837 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,262 @@ +site_name: JWT Framework +site_description: JSON Web Tokens for PHP and Symfony. Signature (JWS), encryption (JWE) and keys (JWK), after RFC 7515 to RFC 7519. +site_url: https://web-token.spomky-labs.com/ +site_author: Spomky-Labs +repo_url: https://github.com/web-token/jwt-framework +repo_name: web-token/jwt-framework +edit_uri: https://github.com/web-token/jwt-doc/edit/4.2/docs/ + +docs_dir: docs +site_dir: site + +# The GitBook table of contents. It stays while GitBook serves the domain, and the navigation below says the +# same thing in the words of MkDocs. +exclude_docs: | + SUMMARY.md + +theme: + name: material + custom_dir: docs/overrides + language: en + # Space Grotesk and IBM Plex Mono are served from assets/fonts, declared in slabs.css: the theme loads + # no font of its own. + font: false + icon: + repo: fontawesome/brands/github + edit: material/pencil-outline + annotation: material/plus-circle + favicon: assets/brand/favicon.svg + palette: + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Follow the system theme + - media: "(prefers-color-scheme: light)" + scheme: default + primary: custom + accent: custom + toggle: + icon: material/weather-sunny + name: Switch to the dark theme + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: custom + accent: custom + toggle: + icon: material/weather-night + name: Switch to the light theme + features: + - navigation.instant + - navigation.instant.progress + - navigation.tracking + - navigation.sections + - navigation.indexes + - navigation.top + - navigation.footer + - toc.follow + - search.suggest + - search.highlight + - search.share + - content.code.copy + - content.code.annotate + - content.tabs.link + - content.tooltips + - content.action.edit + +# The tokens of the Slabs design kit, as they are, then the rules that apply them. +extra_css: + - assets/stylesheets/slabs-tokens.css + - assets/stylesheets/slabs.css + +plugins: + - search + # Every asset is served from this site. Should a page ever reference an external one, it is downloaded + # at build time: nothing a reader loads reaches a third party. + - privacy + - git-revision-date-localized: + enable_creation_date: false + type: date + fallback_to_build_date: true + # GitBook published the console commands under console-commands/ and the benchmarks under benchmarks/; + # the directories are console-command/ and benchmark/. + - redirects: + redirect_maps: + console-commands/console.md: console-command/console.md + console-commands/standalone.md: console-command/standalone.md + console-commands/phar-application.md: console-command/phar-application.md + console-commands/symfony-console.md: console-command/symfony-console.md + benchmarks/benchmarks.md: benchmark/benchmarks.md + benchmarks/result-table.md: benchmark/result-table.md + +markdown_extensions: + - abbr + - admonition + - attr_list + - def_list + - footnotes + - md_in_html + - tables + - toc: + title: On this page + permalink: true + permalink_title: Link to this section + toc_depth: 3 + - pymdownx.betterem + - pymdownx.caret + - pymdownx.details + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.highlight: + anchor_linenums: true + # A PHP block of these pages starts without " + + + + + +Looking for this page in the latest version…
+This page has moved or never existed. Search, or start from one of these:
+ +| Algorithm | Additional header parameter |
|---|---|
A128KW A192KW A256KW | No |
A128GCMKW A192GCMKW A256GCMKW | iv: (initialization vector) this value is the base64url-encoded representation of the 96-bit IV value used for the key encryption operation.tag: (authentication tag) the value is the base64url-encoded representation of the 128-bit Authentication Tag value resulting from the key encryption operation. |
| dir | No |
ECDH-ES ECDH-ES+A128KW ECDH-ES+A192KW ECDH-ES+A256KW | epk: (ephemeral public key) value created by the originator. |
ECDH-SS ECDH-SS+A128KW ECDH-SS+A192KW ECDH-SS+A256KW | No |
PBES2-HS256+A128KW PBES2-HS384+A192KW PBES2-HS512+A256KW | p2s: (PBES2 salt input) encodes a Salt Input value, which is used as part of the PBKDF2 salt value.p2c: (PBES2 count) contains the PBKDF2 iteration count, represented as a positive JSON integer. |
RSA1_5 RSA-OAEP RSA-OAEP-256 |
A128GCM
A192GCM
A256GCM
| `Jose\Component\Encryption\Algorithm\ContentEncryption` | -|A128CBC-HS256
A192CBC-HS384
A256CBC-HS512
| `Jose\Component\Encryption\Algorithm\ContentEncryption` | - -{% hint style="danger" %} -The algorithm `RSA1_5` is deprecated due to known [security vulnerability](https://en.wikipedia.org/wiki/Adaptive_chosen-ciphertext_attack). - -The algorithms `ECDH-ES*` are not recommended unless used with the `OKP` key type. -{% endhint %} - -### Curves Supported By The Key Agreement Algorithms - -The `ECDH-ES*` and `ECDH-SS*` algorithms accept: - -* `EC` keys using the `P-256`, `P-384`, `P-521`, `secp256k1`, `BP-256`, `BP-384` or `BP-512` curve, -* `OKP` keys using the `X25519` curve (SODIUM extension is required). - -The `BP-*` curves are the Brainpool curves. They are part of the core library and do not require the experimental package. Please read the [warning about their interoperability](../key-jwk-and-key-set-jwkset/key-management.md#elliptic-curve-key-pair) before using them. - -## Experimental Algorithms - -The following algorithms are experimental and must not be used in production unless you know what you are doing. They are proposed for testing purpose only. - -### Key Encryption - -| Algorithm | Description |
|---|---|
A128CTR A192CTR A256CTR | AES CTR based encryption |
| Chacha20+Poly1305 | Please note that this algorithm requires OpenSSL 1.1 |
RSA-OAEP-384 RSA-OAEP-512 | Same algorithm as RSA-OAEP-256 but with SHA-384 and SHA-512 hashing functions |
| Algorithm | Description |
|---|---|
A128CCM-16-128 A128CCM-16-64 A128CCM-64-128 A128CCM-64-64 A256CCM-16-128 A256CCM-16-64 A256CCM-64-128 A256CCM-64-64 | AES-CCM based algorithms |
HS256
HS384
HS512
ES256
ES384
ES512
RS256
RS384
RS512
PS256
PS384
PS512