Repository navigation
Releases
Releases · potatosalad/erlang-jose
1.11.13 (2026-10-26)
1.11.13 (2026-10-26)
- Security Patches
- GHSA-wfpv-qxp8-x5gm, GHSA-wh8p-p48q-3vw2: Bound incremental JWE
zip: "DEF"decompression to 1 MiB by default. Applications requiring larger compressed plaintexts can setjose:zip_size_maximum/1or thezip_size_maximumapplication environment key. - GHSA-44hw-rpw9-mwg4: Require the canonical ECDSA signature length for ES256, ES384, ES512 and ES256K.
- GHSA-6gxw-6f7r-cjr6: Reject AEAD tags other than 128 bits before provider dispatch, and in the AES-GCM fallback.
- GHSA-3m45-vrpj-xmrq: Bound RSA private-key prime recovery with random trials, reused modular squares and deadlines checked before expensive operations; validate recovered factors against the supplied exponents. Keys above 8192 bits or exhausting the recovery budget must supply CRT parameters.
- GHSA-fpj2-9h59-32pp: Reject mismatched shared-secret key types instead of recursing indefinitely.
- GHSA-h4gx-8jq2-mfhc: Strengthen encrypted PKCS#8 DER and PEM exports to PBKDF2-HMAC-SHA256 with 600,000 iterations and 16-byte salts. Previously exported keys remain readable. Use native PBKDF2 when available.
- GHSA-vwvr-f994-6j9j: Substitute a random CEK of the required length on RSA JWE unwrap failure, then authenticate the content. Low-level RSA padding helpers still report errors; this mitigation does not guarantee constant-time RSA. Prefer RSA-OAEP or RSA-OAEP-256.
- GHSA-xvr2-gggj-h2pp: Correct the shipped
crypto_fallbackdefault tofalseand document the variable-time pure Erlang curve implementations. Explicitly enabled fallback remains variable-time and should not handle long-lived private keys where timing is observable.
- GHSA-wfpv-qxp8-x5gm, GHSA-wh8p-p48q-3vw2: Bound incremental JWE
- Fixes
- Return compressed JWE authentication failures without invoking decompression, including external AAD.
- Preserve native Ed448/X448 selection when fallback SHAKE256 is unavailable; include X25519/X448 agreement in provider checks.
- Add public API security regressions and independent legacy PKCS#8 import checks.
- Treat a random base sharing a factor with the modulus as a failed RSA prime recovery trial, so inconsistent
(n, e, d)keys are rejected instead of imported with a composite factor. - Return
<<>>from Concat KDF for a zero key length instead of looping indefinitely, and reject negative lengths withbadarg. - Erlang/OTP 29 compatibility: decode X25519/X448 PKCS#8 private keys, encode EC
SubjectPublicKeyInfoDER, and replace deprecatedcatch Exprexpressions.
- Notes
- Deployments relying on unavailable native algorithms must explicitly enable
crypto_fallbackand review the timing limitations. Native providers remain preferred. - Tested on Erlang/OTP 28 and 29.
- Deployments relying on unavailable native algorithms must explicitly enable
1.11.12 (2025-11-20)
1.11.11 (2025-11-17)
1.11.10 (2024-04-17)
1.11.8 (2024-04-07)
- Fixes
- Removes use of
dynamic()type spec so OTP 24 and OTP 25 are still supported for now.
- Removes use of
1.11.7 (2024-04-07)
- Security Patches
- CVE-2023-50966: Add
jose:pbes2_count_maximum/0. By default, the maximum iterations are set to 10,000 and it will raise an error ifp2cis larger than this value.
- CVE-2023-50966: Add
- Changes
- Declare Poison as an optional dependency, thanks to [@lnikkila][https://github.com/lnikkila]; see #144.
- Ensure
jiffy:encode/1returns a binary, thanks to @ssepml; see #145. - Various type spec additions and dialyzer/dialyxir integrations, thanks to @whatyouhide and @maennchen.
- Doc updates and fixes, thanks to @aymanosman and @adamu; see #158 and #159.
1.11.6 (2023-07-18)
1.11.5 (2022-12-16)
- Fixes
- Remove dependency on
parse_transformforjose_base64andjose_base64url.
- Remove dependency on
1.11.4 (2022-12-15)
- Enhancements
- Add support for native
cryptooperations for Ed25519 and Ed448, thanks to @brettbeatty; see #123. - Add support for native
cryptooperations for ChaCha20-Poly1305 and XChaCha20-Poly1305, when available. - Add support for
libsodiumoperations for XChaCha20-Poly1305, when available. - Add support for
thoasJSON encode/decode, thanks to @michaelklishin; see #126. - Add support for
ES256Kwhich uses thesecp256k1curve andRS1signatures (see 291dbb8). - Add support for ECDH-1PU
JOSE.JWK.box_encrypt_ecdh_1puand ECDH-ESJOSE.JWK.box_encrypt_ecdh_esand document the deprecatedJOSE.JWK.box_encrypt. - Add support for ECDH-SS
JOSE.JWK.box_encrypt_ecdh_ss. - Hide
ktyfield when inspecting%JOSE.JWK{}strict, thanks to @spencerdcarlson; see #139
- Add support for native
- Fixes
- Version mismatch causing
rebar3to constantly try to update; see #122. - Fix Ed25519 and Ed448 key DER/PEM encode/decode for OTP 25.
- Fix Ed25519ctx, Ed25519ph, Ed448, and Ed448ph when dealing with contexts so the implementation matches IETF RFC 8032.
- Drop direct usage of
crypto:hmac/4, thanks to @thalesmg; see #136 - Replace incorrect usage of
-include_libwith-include, thanks to @Richiban; see #140 - Update the CI jobs so they actually run the Elixir tests, thanks to @moogle19; see #137
- Change the
masterbranch tomain.
- Version mismatch causing
1.10.1 (2020-01-08)
- Fixes
- Add PEM/DER compatibility layer for PKCS-8 incompatibilities with various versions of OTP,
crypto, andpublic_key; see #82
- Add PEM/DER compatibility layer for PKCS-8 incompatibilities with various versions of OTP,