xref: /aosp_15_r20/external/cronet/third_party/rust/chromium_crates_io/vendor/wycheproof-0.4.0/src/jwk.rs (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 use super::*;
2 
vec_from_base64<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Vec<u8>, D::Error>3 fn vec_from_base64<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Vec<u8>, D::Error> {
4     let s: &str = Deserialize::deserialize(deserializer)?;
5     base64::decode_config(s, base64::URL_SAFE).map_err(D::Error::custom)
6 }
7 
8 #[derive(Debug, Clone, Hash, Eq, PartialEq, Deserialize)]
9 #[serde(deny_unknown_fields)]
10 pub struct EcdsaPublicJwk {
11     #[serde(rename = "crv")]
12     pub curve: EllipticCurve,
13     pub kid: String,
14     pub kty: String,
15     #[serde(deserialize_with = "vec_from_base64", rename = "x")]
16     pub affine_x: Vec<u8>,
17     #[serde(deserialize_with = "vec_from_base64", rename = "y")]
18     pub affine_y: Vec<u8>,
19 }
20 
21 #[derive(Debug, Clone, Hash, Eq, PartialEq, Deserialize)]
22 #[serde(deny_unknown_fields)]
23 pub struct RsaPublicJwk {
24     pub alg: String,
25     #[serde(deserialize_with = "vec_from_base64")]
26     pub e: Vec<u8>,
27     pub kid: String,
28     pub kty: String,
29     #[serde(deserialize_with = "vec_from_base64")]
30     pub n: Vec<u8>,
31 }
32 
33 #[derive(Debug, Clone, Hash, Eq, PartialEq, Deserialize)]
34 #[serde(deny_unknown_fields)]
35 pub struct RsaPrivateJwk {
36     pub alg: String,
37     #[serde(deserialize_with = "vec_from_base64")]
38     pub d: Vec<u8>,
39     #[serde(deserialize_with = "vec_from_base64")]
40     pub dp: Vec<u8>,
41     #[serde(deserialize_with = "vec_from_base64")]
42     pub dq: Vec<u8>,
43     #[serde(deserialize_with = "vec_from_base64")]
44     pub e: Vec<u8>,
45     pub kid: String,
46     pub kty: String,
47     #[serde(deserialize_with = "vec_from_base64")]
48     pub n: Vec<u8>,
49     #[serde(deserialize_with = "vec_from_base64")]
50     pub p: Vec<u8>,
51     #[serde(deserialize_with = "vec_from_base64")]
52     pub q: Vec<u8>,
53     #[serde(deserialize_with = "vec_from_base64")]
54     pub qi: Vec<u8>,
55 }
56 
57 #[derive(Debug, Clone, Hash, Eq, PartialEq, Deserialize)]
58 #[serde(deny_unknown_fields)]
59 pub struct EddsaJwk {
60     #[serde(rename = "crv")]
61     pub curve: EdwardsCurve,
62     #[serde(deserialize_with = "vec_from_base64")]
63     pub d: Vec<u8>,
64     pub kid: String,
65     pub kty: String,
66     #[serde(deserialize_with = "vec_from_base64")]
67     pub x: Vec<u8>,
68 }
69