Crates.io | jose-jws |
lib.rs | jose-jws |
version | 0.1.2 |
source | src |
created_at | 2022-09-05 16:20:54.946554 |
updated_at | 2023-08-21 12:29:55.481513 |
description | Pure Rust implementation of the JSON Web Signature (JWS) component of the Javascript Object Signing and Encryption (JOSE) specification as described in RFC7515 |
homepage | |
repository | https://github.com/RustCrypto/JOSE/tree/master/jose-jws |
max_upload_size | |
id | 658933 |
size | 32,110 |
Pure Rust implementation of the JSON Web Signature (JWS) component of the Javascript Object Signing and Encryption (JOSE) specification as described in RFC7515.
JSON Web Signatures are a way of sharing unencrypted data in a way that the sender can be verified. A JWS has the following contents:
A client can use the information provided in a JWS to verify the integrity of the data, meaning the client can be sure that the data did come from the intended sender.
use jose_jws::{Jws, Signature};
let jws_json = serde_json::json!({
"payload": "SGVsbG8gd29ybGQh",
"signatures": [
{
"protected": "eyJhbGciOiJSUzI1NiJ9",
"header": {
"kid": "2010-12-29"
},
"signature": "cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOi\
Zj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYN\
X4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0Gar\
ZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh\
6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQ\
Ge77Rw"
},
{
"protected": "eyJhbGciOiJFUzI1NiJ9",
"header": {
"kid": "e9bc097a-ce51-4036-9562-d2ade882db0d"
},
"signature": "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djx\
La8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"
}
]
});
let Jws::General(jws) = serde_json::from_value(jws_json).unwrap() else {
panic!("couldn't deserialize JWS");
};
assert_eq!(jws.signatures.len(), 2);
let payload = jws.payload.unwrap();
let payload_str = core::str::from_utf8(&payload).unwrap();
assert_eq!(payload_str, "Hello world!")
This crate requires Rust 1.65 at a minimum.
We may change the MSRV in the future, but it will be accompanied by a minor version bump.
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.