actix_web_security/authentication/scheme/bearer/jwk/
default_jwk.rs1use serde::Deserialize;
4
5use crate::authentication::scheme::bearer::jwt::token::decoder::rsa_decoder::RsaKeyComponents;
6
7#[derive(Deserialize, Debug, Clone)]
9pub struct DefaultJwks {
10 pub keys: Vec<DefaultJwk>,
11}
12
13#[derive(Deserialize, Debug, Clone)]
15pub struct DefaultJwk {
16 #[serde(rename = "kty")]
17 pub key_type: String,
18 #[serde(rename = "use")]
19 pub key_use: Option<String>,
20 #[serde(rename = "key_ops")]
21 pub key_ops: Option<String>,
22 #[serde(rename = "alg")]
23 pub algorithm: Option<String>,
24 #[serde(rename = "kid")]
25 pub key_id: Option<String>,
26 #[serde(rename = "x5u")]
27 pub x509_url: Option<String>,
28 #[serde(rename = "x5c")]
29 pub x509_chain: Option<Vec<String>>,
30 #[serde(rename = "x5t")]
31 pub x509_sha1_thumbprint: Option<String>,
32 #[serde(rename = "x5t#S256")]
33 pub x509_sha256_thumbprint: Option<String>,
34 pub e: Option<String>,
35 pub n: Option<String>,
36}
37
38impl RsaKeyComponents for DefaultJwk {
39 fn get_n(&self) -> String {
40 self.n
41 .clone()
42 .expect("rsa 'n' component not present in jwk")
43 }
44
45 fn get_e(&self) -> String {
46 self.e
47 .clone()
48 .expect("rsa 'e' component not present in jwk")
49 }
50}