1use serde::{Deserialize, Serialize};
7
8use jose_b64::serde::{Bytes, Secret};
9
10#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
12pub struct Ec {
13 pub crv: EcCurves,
15
16 pub x: Bytes,
18
19 pub y: Bytes,
21
22 #[serde(skip_serializing_if = "Option::is_none", default)]
24 pub d: Option<Secret>,
25}
26
27#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
29#[non_exhaustive]
30pub enum EcCurves {
31 #[serde(rename = "P-256")]
33 P256,
34
35 #[serde(rename = "P-384")]
37 P384,
38
39 #[serde(rename = "P-521")]
41 P521,
42
43 #[serde(rename = "secp256k1")]
45 P256K,
46}