refactor!: add ws endpoint, storage trait

This commit is contained in:
2026-02-09 23:56:10 -08:00
parent c4e198de83
commit b614def39d
18 changed files with 383 additions and 117 deletions

33
registry/utils/wg.rs Normal file
View File

@@ -0,0 +1,33 @@
use base64::Engine;
use serde::{Deserialize, de};
#[derive(Clone)]
pub struct WireguardPublicKey(String);
impl<'de> Deserialize<'de> for WireguardPublicKey {
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
let bytes = base64::engine::general_purpose::STANDARD
.decode(&s)
.map_err(|_| de::Error::custom("invalid base64 in public key"))?;
if bytes.len() != 32 {
return Err(de::Error::invalid_length(
bytes.len(),
&"exactly 32 bytes for a Wireguard public key",
));
}
Ok(WireguardPublicKey(s))
}
}
impl WireguardPublicKey {
pub fn as_str(&self) -> &str {
&self.0
}
}