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}