This commit is contained in:
nora 2024-08-25 15:13:46 +02:00
parent b6d0675976
commit b0acf03502
22 changed files with 84 additions and 26 deletions

View file

@ -22,3 +22,6 @@ base64 = "0.22.1"
[dev-dependencies]
hex-literal = "0.4.1"
[lints]
workspace = true

View file

@ -152,7 +152,7 @@ pub fn hostkey_ed25519(hostkey_private: Vec<u8>) -> HostKeySigningAlgorithm {
// <https://datatracker.ietf.org/doc/html/rfc8709#section-6>
let mut data = Writer::new();
data.string(b"ssh-ed25519");
data.string(&signature.to_bytes());
data.string(signature.to_bytes());
EncodedSshSignature(data.finish())
},
verify: |public_key, message, signature| {
@ -216,7 +216,7 @@ pub fn hostkey_ecdsa_sha2_p256(hostkey_private: Vec<u8>) -> HostKeySigningAlgori
let mut signature_blob = Writer::new();
signature_blob.mpint(p256::U256::from(r.as_ref()));
signature_blob.mpint(p256::U256::from(s.as_ref()));
data.string(&signature_blob.finish());
data.string(signature_blob.finish());
EncodedSshSignature(data.finish())
},
verify: |_public_key, _message, _signature| todo!("ecdsa p256 verification"),

View file

@ -29,7 +29,7 @@ impl<'a> Parser<'a> {
}
pub fn remaining(&self) -> &[u8] {
&self.0
self.0
}
pub fn has_data(&self) -> bool {

View file

@ -99,6 +99,26 @@ impl ServerConnection {
return Err(SshStatus::Disconnect);
}
Some(numbers::SSH_MSG_IGNORE) => {
// <https://datatracker.ietf.org/doc/html/rfc4253#section-11.2>
let mut p = Parser::new(&packet.payload[1..]);
let _ = p.string()?;
continue;
}
Some(numbers::SSH_MSG_DEBUG) => {
// <https://datatracker.ietf.org/doc/html/rfc4253#section-11.3>
let mut p = Parser::new(&packet.payload[1..]);
let always_display = p.bool()?;
let msg = p.utf8_string()?;
let _language_tag = p.utf8_string()?;
if always_display {
info!(%msg, "Received debug message (SSH_MSG_DEBUG)");
} else {
debug!(%msg, "Received debug message (SSH_MSG_DEBUG)")
}
continue;
}
_ => {}
}