pub use kexinit::Kexinit;
pub use newkeys::Newkeys;
use crate::constants::msg;
use crate::types::Result;
use crate::wire::SshDecode;
mod kexinit;
mod newkeys;
pub mod ctx {
pub struct Context {
pub kex_type: KexType,
}
pub enum KexType {
Dh,
Ecdh,
}
}
pub enum Message<'b> {
Kexinit(Kexinit<'b>),
Newkeys(Newkeys<'b>),
}
impl<'b> Message<'b> {
pub fn from_bytes(buffer: &'b [u8], _ctx: &ctx::Context) -> Result<Self> {
let message_code = buffer.read_byte(&mut 0)?;
let message = match message_code {
msg::SSH_MSG_KEXINIT => Self::Kexinit(Kexinit::from_bytes(buffer)?),
msg::SSH_MSG_NEWKEYS => Self::Newkeys(Newkeys::from_bytes(buffer)?),
_ => todo!(),
};
Ok(message)
}
}