- Fix build errors and bump MSRV by @lawliet89 in lawliet89#308
jws::RegisteredHeaderfieldweb_keyis now of typeOption<jwk::JWK<Empty>>instead ofOption<String>. If you were not using JWKs, continue setting the value toNonewill not breaking. If you were previously serializing your JWK as JSON strings, you will now have to deserialize them intojwk::JWK<Empty>. Please raise issues if you encounter any bugs. [#189]
- Add support for Flattened JWS [#190]
- Added more documentation for using OpenSSL to manipulate keys [#179]
- Derive Clone for
JWKSetby @lawliet89 in lawliet89#204 - Lints fixes
-
MSRV is now Rust 1.41 due to changes in
Cargo.lockformat. See announcement. -
The
jwk::AlgorithmParameters::OctetKeyenum variant is now a newtype variant which takes ajwk::OctetKeyParametersstruct for its parameters. To migrate your existing code, you can do the following-jwk::AlgorithmParameters::OctetKey { +jwk::AlgorithmParameters::OctetKey(jwk::OctetKeyParameters { value: key, key_type: Default::default(), -} +})
(#125)
-
jws::Compact::decode_with_jwksnow supports JWK without analgspecified. However, a new parameter to specify an expected parameter had to be added to support this use case. This is to mitigate against issues like this. Existing usage of JWK with thealgspecified can simply add aNoneas the second parameter. (#130) -
Remove
StringOrUribecause it was hard to get theUritype working properly. Replace all usage ofStringOrUriwithStrings instead. (#131)
- Add new
jwk::AlgorithmParameters::OctetKeyPairvariant to support (de)serializingOKPkey types. (#125) - Add support for JWK thumbprints (RFC 7638) (#156)
- Allow verifying tokens with a
keypairasSecret(#132)
- Fix computing Aad per the RFC by doing base64 encoding (#147)
- Add
jws::Compact::decode_with_jwksmethod to decode a JWT with JWKs (#124)
- Replace
lazy_staticwithonce_cell(#123)
- Fix documentation build on 1.40 Nightly
There are no new feature except for some breaking changes to correct some errors.
All misspelling of octect have been corrected to octet. The following
types have been renamed and the old misspelt version is no longer available.
To migrate, you can simply do a case sensitive replace of Octect with Octet and
octect with octet in your code.
The following types have been renamed:
jwk::KeyType::Octect🡒jwk::KeyType::Octetjwk::KeyType::OctectKeyPair🡒jwk::KeyType::OctetKeyPairjwk::OctectKeyType🡒jwk::OctetKeyTypejwk::OctectKeyType::Octect🡒jwk::OctetKeyType::Octetjwk::AlgorithmParameters::OctectKey🡒jwk::AlgorithmParameters::OctetKey
The following functions have been renamed:
jwk::JWK::new_octect_key🡒jwk::JWK::new_octet_keyjwk::JWK::octect_key🡒jwk::JWK::octet_keyjwk::AlgorithmParameters::octect_key🡒jwk::AlgorithmParameters::octet_key
This release also fixes the
Clippy trivially_copy_pass_by_ref lint
by modifying function arguments that would have taken a reference of a 1 byte value that
implements Copy to take the value of itself. This mainly affects all struct methods
of the following types
There should be no need to modify your code for this because the types are Copy.
jwa::SignatureAlgorithmjwa::KeyManagementAlgorithmjwa::ContentEncryptionAlgorithmjwk::KeyType
There are no new features except for ring dependency changes.
- biscuit now depends on ring 0.16.5
- Changed internal usage of ring's AEAD APIs
- Removed
Compact::to_string.Compactnow implementsDisplaywhich has a blanket implementation ofstd::string::ToString. Use that instead. This should not break any users becausestd::string::ToStringis used by thestdprelude.
There are no new features or API changes except for ring dependency changes.
- Minimum supported Rust version is now 1.36 due to Ring's usage of newer Rust features
- biscuit now depends on ring 0.16
- Minimum Rust 1.31 is needed for editions support on dependencies
- biscuit now depends on ring 0.14
- Minimum Rust 1.31 is needed for editions support on dependencies
- Minimum Rust 1.27.2 supported. Older versions might build, but this might not be supported.
- Ring 0.13.2 minimum required. This breaks with other libraries using any other versions
- Add ECDSA support (lawliet89#95)
- Additional claims validation (lawliet89#99)
- RSA signature validation with only the exponent and modulus (lawliet89#100)
There are breaking changes in this release:
ringwas upgraded to 0.12. Until #619 lands, this crate will now be incompatible with all other crates that uses a different version ofring.jwa::rngis no longer public- #84 All AES GCM encryption now requires a user provided nonce. See this example.
SignatureAlgorithm::verifynow returnsResult<(), Error>instead ofResult<bool, Error>.- Bumped various dependencies, although they should not break any user facing code:
lazy_static,data-encoding.
Other non-breaking changes include:
- New helper
function in
JWKSetto find key by Key ID - New helper functions in
jws::Compactto retrieve parts without signature verification.
There are no breaking changes in this release.
Added a convenience validate_times function to jwe::Compact and jws::Compact that allows
quick temporal validation if their payloads are ClaimSets.
This release adds no new features and breaks no API. It simply bumps ring to 0.11.
This release adds no new features and breaks no API. It simply bumps Chrono and Ring to their newest version.
Update dependency to ring 0.9.4 so that different versions of ring can no longer be used in a Rust build.
There are no new features or API change.
Minor bug fix release. Fixed incorrect ECDSA signature verification.
Thanks to @hobofan.
This is a major breaking release. Not all algorithms, verification, and features are supported yet.
- JSON Web Encryption support (JWE)
- JSON Web Key (JWK)
- Replaced
rustc_serializewithserde - Support custom headers for JWS
- Added a
biscuit::Emptyconvenice empty struct that users can plug into type parameters when they do not need them, such as the type parameter of custom headers. - Added
SingleOrMultipleandStringOrUrienums to better represent the types of values that the JOSE RFCs allow.
biscuit::JWTis no longer a struct. It is now a type alias forjws::Compact, which according to the RFC, is the compact serialization of a JSON Web Signature (JWS).- Moved
biscuit::Algorithmtobiscuit::jwa::SignatureAlgorithmto better reflect its use. - Various internal traits that should be implementation detail and opaque to users of
biscuithave been changed, added, or removed.
This is an initial release after forking from Version 1.1.6 of Keats/rust-jwt.
- Added RSA signing and verification
- Added ECDSA verification (signing support is pending addition of support in
ring)