did_utils/jwk/
ec.rs

1use serde::{Deserialize, Serialize};
2
3use crate::jwk::{bytes::Bytes, secret::Secret};
4
5/// An elliptic-curve key.
6#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
7pub struct Ec {
8    /// The elliptic curve identifier.
9    pub crv: EcCurves,
10
11    /// The public x coordinate.
12    pub x: Bytes,
13
14    /// The public y coordinate.
15    pub y: Bytes,
16
17    /// The private key.
18    #[serde(skip_serializing_if = "Option::is_none", default)]
19    //A secret is like the [`Bytes`] type, but can be expanded to include additional protections:
20    pub d: Option<Secret>,
21}
22
23/// The elliptic curve.
24#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
25#[non_exhaustive]
26pub enum EcCurves {
27    /// P-256
28    #[serde(rename = "P-256")]
29    P256,
30
31    /// P-384
32    #[serde(rename = "P-384")]
33    P384,
34
35    /// P-521
36    #[serde(rename = "P-521")]
37    P521,
38
39    /// P-256K
40    #[serde(rename = "secp256k1")]
41    P256K,
42}