mod multiplex_actor;
mod stream;
mod structs;
use rand::rngs::OsRng;
use serde::{Deserialize, Serialize};
pub use stream::MuxStream;
mod multiplex_struct;
pub use multiplex_struct::Multiplex;
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct MuxPublic(pub(crate) x25519_dalek::PublicKey);
impl MuxPublic {
pub fn as_bytes(&self) -> &[u8; 32] {
self.0.as_bytes()
}
pub fn from_bytes(b: [u8; 32]) -> Self {
Self(x25519_dalek::PublicKey::from(b))
}
}
#[derive(Clone, Serialize, Deserialize)]
pub struct MuxSecret(pub(crate) x25519_dalek::StaticSecret);
impl MuxSecret {
pub fn to_bytes(&self) -> [u8; 32] {
self.0.to_bytes()
}
pub fn from_bytes(b: [u8; 32]) -> Self {
Self(x25519_dalek::StaticSecret::from(b))
}
pub fn generate() -> Self {
Self(x25519_dalek::StaticSecret::new(OsRng {}))
}
pub fn to_public(&self) -> MuxPublic {
MuxPublic((&self.0).into())
}
}