use binrw::binwrite;
use super::Lengthed;
use crate::{arch, trans};
#[binwrite]
#[derive(Debug)]
#[bw(big)]
pub struct Ecdh<'b> {
pub v_c: arch::Bytes<'b>,
pub v_s: arch::Bytes<'b>,
pub i_c: Lengthed<&'b trans::KexInit<'b>>,
pub i_s: Lengthed<&'b trans::KexInit<'b>>,
pub k_s: arch::Bytes<'b>,
pub q_c: arch::Bytes<'b>,
pub q_s: arch::Bytes<'b>,
pub k: arch::MpInt<'b>,
}
impl Ecdh<'_> {
#[cfg(feature = "digest")]
#[cfg_attr(docsrs, doc(cfg(feature = "digest")))]
pub fn hash<D: digest::Digest>(&self) -> digest::Output<D> {
use binrw::BinWrite;
let mut buffer = Vec::new();
self.write(&mut std::io::Cursor::new(&mut buffer))
.expect("The binrw structure serialization failed");
D::digest(&buffer)
}
}