use nom::be_u16;

/// Diffie-Hellman parameters, defined in [RFC5246] section 7.4.3
#[derive(PartialEq)]
pub struct ServerDHParams<'a> {
    /// The prime modulus used for the Diffie-Hellman operation.
    pub dh_p:  &'a[u8],
    /// The generator used for the Diffie-Hellman operation.
    pub dh_g:  &'a[u8],
    /// The server's Diffie-Hellman public value (g^X mod p).
    pub dh_ys: &'a[u8],
}

named!(pub parse_dh_params<ServerDHParams>,
    do_parse!(
        p:  length_bytes!(be_u16) >>
        g:  length_bytes!(be_u16) >>
        ys: length_bytes!(be_u16) >>
        ( ServerDHParams{
            dh_p:  p,
            dh_g:  g,
            dh_ys: ys,
        })
    )
);
