1use nym_crypto::asymmetric::x25519;
5use nym_crypto::asymmetric::x25519::serde_helpers::bs58_x25519_pubkey;
6use serde::{Deserialize, Serialize};
7
8#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq)]
9#[serde(from = "u8", into = "u8")]
10pub enum NoiseVersion {
11 V1,
12 Unknown(u8), }
14
15impl From<u8> for NoiseVersion {
16 fn from(value: u8) -> Self {
17 match value {
18 1 => NoiseVersion::V1,
19 other => NoiseVersion::Unknown(other),
20 }
21 }
22}
23
24impl From<NoiseVersion> for u8 {
25 fn from(version: NoiseVersion) -> Self {
26 match version {
27 NoiseVersion::V1 => 1,
28 NoiseVersion::Unknown(other) => other,
29 }
30 }
31}
32
33#[derive(Copy, Clone, Debug, Serialize, Deserialize, schemars::JsonSchema, utoipa::ToSchema)]
34pub struct VersionedNoiseKey {
35 #[schemars(with = "u8")]
36 #[schema(value_type = u8)]
37 pub supported_version: NoiseVersion,
38
39 #[schemars(with = "String")]
40 #[serde(with = "bs58_x25519_pubkey")]
41 #[schema(value_type = String)]
42 pub x25519_pubkey: x25519::PublicKey,
43}