All notable changes to this project will be documented in this file.
- Removed: Support for PHP 7.3 and 7.4
- Removed:
jwkstool
command-line tool and associated dependencies (most notablysymfony/console
).jwkstool
is now available as a separate packagekelvinmo/jwkstool
- Fixed: Issue with gmp_pow for certain versions of PHP (#214)
- Fixed:
RSAKey
cannot parse PKCS#8 encoded RSA private keys (#206)
- Fixed: Deprecation warning in constructor of AESGCMKeyWrap (#197)
- Changed: Providing invalid JSON tokens into JWT::deserialise() and
JWE::decrypt() will throw an
InvalidTokenException
instead ofInvalidArgumentException
- Changed:
JWT
andJWE
methods now check for validity of algorithm classes - Changed: Additional type hinting on public API methods
- Removed: Support for PHP 7.2
- Changed: Update dependency on
symfony/console
to support v7.0
- Fixed: Throw a
KeyException
when loading an invalid PEM-encoded RSAKey
- Added: Support for
Ed25519
signatures andX25519
key derviation algorithms - Added: Support for AES GCM key encryption algorithms (
A128GCMKW
,A192GCMKW
andA256GCMKW
) - Added: Support for COSE based keys
- Changed: Use
box
to package thejwkstool
utility - Changed: Refactored
Algorithm
(now renamed toBaseAlgorithm
) andKey
to extract interfaces (intoAlgorithmInterface
andKeyInterface
respectively) - Changed: Key ID
kid
parameter no longer automatically generated when a Key object is created. UseKey::getKeyId(true)
orKeySet::add(..., true)
to generate a key ID - Removed: Helper::getObject() and Helper::getJWTObject() have been replaced by Helper::decode() and Helper::decodeFully() respectively
- Removed: Support for PHP 7.1
- Fixed: Incorrect key selection when encrypting/decrypting keys in ECDH-ES+AxxxKW (#159)
- Fixed: Exporting keys as JSON in
jwkstool
- Changed: Split
SimpleJWT\Crypt
namespace into multiple namespaces, one for each algorithm type (#60) - Changed:
JWT
andJWE
now derives from a common parent classToken
- Changed: Improved ASN.1 processing code (#68)
- Changed: Util::base64url_decode() will now throw
\UnexpectedValueException
instead of returning false if the input cannot be decoded
- Deprecated: Helper::getObject() and Helper::getJWTObject() have been replaced by Helper::decode() and Helper::decodeFully() respectively, and will be removed in future versions
- Changed: Updated
symfony/console
package version - Fixed: Compatibility with PHP 8.1 when using ECDH (#58)
- Changed: JWT::deserialise() no longer takes a
$format
parameter (which is already ignored) - Changed: KeyFactory::create() now throws a KeyException if the supplied key cannot be decoded
- Changed: OpenSSLSig::getKeyCriteria() now throws an UnexpectedValueException
if the supplied algorithm (
alg
header) is not valid - Deprecated: Helper::getJWTObject() now ignores the
$jwe_kid
parameter and will be removed in future versions - Fixed: API documentation for better static analysis checks
- Added: Support for Elliptic Curve Diffie-Hellman Ephemeral Static algorithms
- Added: JWT::tokenHash() to calculate OpenID Connect access token hash values
- Changed: When parsing multi-recipient JWTs and JWEs without corresponding key, the error code for InvalidTokenException was changed from TOKEN_PARSE_ERROR to SIGNATURE_VERIFICATION_ERROR (for JWSs) and DECRYPTION_ERROR (for JWEs), so that they are consistent with their single-recipient equivalents
- Fixed: Decoding JSON formatted JWEs and JWKs
- Fixed: Parsing multi-recipient JWTs and JWEs
- Fixed: typos in documentation leading to deprecation error (#39)
- Fixed: incorrect treatment of recipients object in JWE
- Removed: support for PHP 5
- Fixed: Undefined index when calling JWT::deserialise() and JWE::decrypt() with an unrecognised token format (#37)
- Added: Support for PHP 8 (#35)
- Added: Support for AES GCM family of algorithms
- Added: Support for Elliptic Curve Diffie-Hellman key derivation algorithm
- Changed: SimpleJWT\JWT::decode() no longer supports $format parameter (format is automatically detected)
- Changed: SimpleJWT\JWT::deserialise() no longer supports $format parameter (format is automatically detected)
- Changed: Return value of SimpleJWT\JWT::deserialise() changed
- Changed: SimpleJWT\JWE::decrypt() no longer supports $format parameter (format is automatically detected)
- Removed: SimpleJWT\Keys\Key::getSignature()
- Fixed: Autoload issue in jwkstool (#31)
- Fixed: Uninitialised values in SimpleJWT\JWT::deserialise() for JWTs encoded in JSON serialisation format (#29)
- Note: Arguments and/or return values for SimpleJWT\JWT::deserialise() may change in the next release
- Fixed: Composer dependencies on
symfony/console
for PHP 7 compatibility (#22)
- Changed: jwkstool build process
- Fixed: Syntax error in SimpleJWT\JWE::decrypt()
- Fixed: Arguments for SimpleJWT\JWT::deserialise()
- Deprecated: SimpleJWT\Keys\Key::getSignature() - use SimpleJWT\Keys\Key::getThumbnail() instead
- Fixed undefined variable error when using JWE with a symmetric key (#19)
- Fixed Util::packInt64() when running 32-bit PHP 7
- Fixed missing time variable in InvalidTokenException
- More specific PHP version specification requirements in composer.json
- Refactored Util::random_bytes() to specify file-based entropy source for Unix-like systems
- Refactored key signature methodology to align with RFC 7638
- Fixed typo in documentation
- Fixed incorrect handling of kid when using symmetric encryption (#13)
- Enhanced documentation
- Refactored coding style
- Fixed support for RSA-OAEP-256
- Fixed incorrect encoding of RSA keys into PEM (#10)
- Fixed incorrect decoding of PEM-encoded EC private keys (#8)
- Improved decoding of PEM-encoded RSA keys
- Enhanced tests
- Refactored code to add deserialise function
- Support newer versions of OpenSSL used in PHP 7, which uses lowercase cipher and message digest names (#7)
- Fixed namespace error in documentation blocks (#3)
- Fixed syntax error when throwing exception as a result of an invalid COMPACT_FORMAT token (#1)
- Fixed bug in jwkstool in referencing renamed method in KeySet
- Fixed bug caused by dependency issues with
symfony/composer
. The of this library is now locked to 2.7.*
- Enhanced compatibility with PHP 7
- Initial release