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日 |
#2592 in 加密学
740 每月下载量
在 2 crates 中使用
75KB
1.5K SLoC
RustCrypto: JOSE JWK
纯Rust实现,符合RFC7517描述的JSON Web Key (JWK)组件,用于JavaScript对象签名和加密 (JOSE)规范。
JWK是一种在JSON中表示加密密钥的方式,通常用于表示公钥。此格式包含有关如何使用密钥的信息,以便子节点可以验证父节点发送的内容(例如,使用JWT)或使用此密钥加密消息以供父节点使用(例如,使用JWE)。此crate提供了与该格式接口的数据结构。
use jose_jwk::{Jwk, JwkSet, Key};
use jose_jwk::jose_jwa::{Algorithm, Signing};
let keys = serde_json::json!({
"keys": [
{
"kty": "EC",
"crv": "P-256",
"x": "MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y": "4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"use": "enc",
"kid": "some-ec-kid"
},
{
"kty": "RSA",
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtV\
T86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5\
JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMic\
AtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bF\
TWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-\
kEgU8awapJzKnqDKgw",
"e": "AQAB",
"alg": "RS256",
"kid": "some-rsa-kid"
}
]
});
let jwkset: JwkSet = serde_json::from_value(keys).unwrap();
let ec_jwk: &Jwk = &jwkset.keys[0];
let rsa_jwk: &Jwk = &jwkset.keys[1];
assert!(matches!(ec_jwk.key, Key::Ec(_)));
assert!(matches!(rsa_jwk.key, Key::Rsa(_)));
assert_eq!(ec_jwk.prm.kid, Some(String::from("some-ec-kid")));
assert_eq!(rsa_jwk.prm.kid, Some(String::from("some-rsa-kid")));
assert_eq!(rsa_jwk.prm.alg, Some(Algorithm::Signing(Signing::Rs256)));
最低支持的Rust版本
此crate至少需要 Rust 1.65。
我们可能会在未来更改MSRV,但将伴随次要版本号的增加。
许可证
在以下任一许可证下授权
任选其一。
贡献
除非你明确声明,否则,你提交的任何有意提交给作品以包含在内的贡献,根据Apache-2.0许可证的定义,应如上所述双重授权,不附加任何额外条款或条件。
依赖关系
~0.5–2.3MB
~51K SLoC