EUHO3DAZ4D3LMHYJDLVLXBHIFAUKXMNFNDLE5ZHG4T7SVJMG55EAC
pub(crate) fn send_server_sig_algs(&mut self) {
// This should be only ever called when this is valid
if let Some(Kex::NewKeys(newkeys)) = &self.common.kex {
let mut buf = CryptoVec::new();
buf.push(msg::EXT_INFO);
buf.push_u32_be(1); // nr-extensions
buf.extend_ssh_string(b"server-sig-algs"); // extension-name
let algs = self
.common
.config
.preferred
.key
.iter()
.map(|n| n.0)
.collect::<Vec<_>>()
.join(",");
buf.extend_ssh_string(algs.as_bytes()); // extension-value
newkeys.cipher.write(&buf, &mut self.common.write_buffer);
} else {
unreachable!(
"Trying to send server-sig-algs SSH_MSG_EXT_INFO when we didn't just send NEWKEYS"
);
}
}
// https://www.rfc-editor.org/rfc/rfc8308#section-2.3
pub const EXT_INFO: u8 = 7;