4个版本
0.1.2 | 2023年8月21日 |
---|---|
0.1.1 | 2023年8月19日 |
0.1.0 | 2023年5月21日 |
0.0.0 | 2022年9月5日 |
#2571 in 加密
每月507次下载
用于 jls
95KB
2K SLoC
RustCrypto: JOSE JWS
JSON Web签名是一种在不加密数据的情况下验证发送者身份的方式。一个JWS包含以下内容
可验证的有效载荷
- 一个或多个签名,包括
- 一个可选的非受保护的头(不可验证),包含有关算法的提示
- 一个可选的保护头(使用签名进行验证)
- 签名
- 客户端可以使用JWS中提供的信息来验证数据的完整性,这意味着客户端可以确信数据确实来自预期的发送者。
文档
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!")
此crate至少需要 Rust 1.65。
我们可能会在未来更改MSRV,但会伴随小版本号的提升。
许可证
许可证类型
根据您的选择,许可协议为
。
贡献
除非您明确声明,否则任何有意提交给作品并由您包括的贡献,根据Apache-2.0许可证定义,将按照上述方式双重许可,而无需任何额外条款或条件。
依赖关系
~0.8–1.6MB
~35K SLoC