Pure Rust implementation of Javascript Object Signing and Encryption (JOSE)
This project provides multiple crates that implement different components of the JOSE family. An overview of each and information on their relationships is listed below.
This crate provides relevant utilities for working with Base64. It won't often be used on its own, but provides helper types for working with json-as-b64 and cyptographically secure base64, both of which are common cases with JOSE.
This crate provides representations of different algorithm types as specified in RFC7518. Again, it is not likely that this crate is used on its own; it will be reexported when required by the other crates.
This crate provides ways to interact with JWKs, JSON representations of cryptographic keys specified in RFC7517. Typically JWKs hold public keys.
This crate provides a way to interact with JWSs, data sent via JSON that has a way to validate data authenticity. These are specified in RFC7515 and provide authenticity (a way to prove that data comes from the corrct sender) and integrity (proof that it was not altered along the way), but not confidentiality; that is, anybody can read the data contents. Typically, JWSs are seen in the forms of JWTs.
This crate provides ways to interact with JWEs, JSON representations of
encrypted data specified in RFC7516. JWEs provide authenticity, integrity and
confidentiality (unlike JWS), and are typically four or five Base64-encoded
fields separated by a .
. Each field representing a piece of information
an intended recipient needs to decode an encrypted payload.
This crate interacts with JWTs, which is a specific JSON schema for representing
web tokens specified in RFC7519. The JWT specification just defines a set of
specific fields ("claims", iss
, exp
and similar) that are usually
represented as a JWT (the usual Base64 abc123.321DEF.g_hi10
format) but can
also be encrypted as a JWE.
All crates licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.