did_utils/jwk/
okp.rs

1use serde::{Deserialize, Serialize};
2
3use crate::jwk::{secret::Secret, Bytes};
4
5/// An octet key pair CFRG-curve key, as defined in [RFC 8037]
6///
7/// [RFC 8037]: https://www.rfc-editor.org/rfc/rfc8037
8#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
9pub struct Okp {
10    /// The CFRG curve.
11    pub crv: OkpCurves,
12
13    /// The public key.
14    pub x: Bytes,
15
16    /// The private key.
17    #[serde(skip_serializing_if = "Option::is_none", default)]
18    pub d: Option<Secret>,
19}
20
21/// The CFRG Curve.
22#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
23#[non_exhaustive]
24pub enum OkpCurves {
25    /// Ed25519
26    Ed25519,
27
28    /// Ed448
29    Ed448,
30
31    /// X25519
32    X25519,
33
34    /// X448
35    X448,
36}