1use serde::{Deserialize, Serialize};
2
3use crate::jwk::{bytes::Bytes, secret::Secret};
4
5#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
7pub struct Ec {
8 pub crv: EcCurves,
10
11 pub x: Bytes,
13
14 pub y: Bytes,
16
17 #[serde(skip_serializing_if = "Option::is_none", default)]
19 pub d: Option<Secret>,
21}
22
23#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
25#[non_exhaustive]
26pub enum EcCurves {
27 #[serde(rename = "P-256")]
29 P256,
30
31 #[serde(rename = "P-384")]
33 P384,
34
35 #[serde(rename = "P-521")]
37 P521,
38
39 #[serde(rename = "secp256k1")]
41 P256K,
42}