From 86f0cc82c3c289447a18544f2547d4cde5b3d16e Mon Sep 17 00:00:00 2001 From: C0ffeeCode Date: Thu, 26 Sep 2024 13:43:01 +0200 Subject: [PATCH] Update to Rust Edition 2021 and fix compilation errors --- Cargo.toml | 1 + src/algorithm.rs | 4 ++-- src/channel.rs | 3 ++- src/connection.rs | 19 ++++++++++--------- src/encryption/aes_ctr.rs | 2 +- src/key_exchange/curve25519.rs | 9 +++++---- src/key_exchange/mod.rs | 4 ++-- src/mac/hmac.rs | 3 ++- src/packet.rs | 4 ++-- src/public_key/ed25519.rs | 17 +++++++++-------- src/server.rs | 4 ++-- 11 files changed, 38 insertions(+), 32 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5b78622..9e51ec5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [package] name = "redox-ssh" version = "0.1.0" +edition = "2021" authors = ["Thomas Gatzweiler "] [lib] diff --git a/src/algorithm.rs b/src/algorithm.rs index a83b5f1..7546841 100644 --- a/src/algorithm.rs +++ b/src/algorithm.rs @@ -1,8 +1,8 @@ use std::fmt; use std::str::FromStr; -use error::{ConnectionError, ConnectionResult}; -use key_exchange::{self, KeyExchange}; +use crate::error::{ConnectionError, ConnectionResult}; +use crate::key_exchange::{self, KeyExchange}; /// Slice of implemented key exchange algorithms, ordered by preference pub static KEY_EXCHANGE: &[KeyExchangeAlgorithm] = diff --git a/src/channel.rs b/src/channel.rs index f602895..7399df3 100644 --- a/src/channel.rs +++ b/src/channel.rs @@ -5,7 +5,8 @@ use std::os::unix::process::CommandExt; use std::path::PathBuf; use std::process::{self, Stdio}; use std::thread::{self, JoinHandle}; -use sys; + +use crate::sys; pub type ChannelId = u32; diff --git a/src/connection.rs b/src/connection.rs index 8813c71..f89ae97 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -2,15 +2,16 @@ use std::collections::{BTreeMap, VecDeque}; use std::io::{self, BufReader, Read, Write}; use std::sync::Arc; -use channel::{Channel, ChannelId, ChannelRequest}; -use encryption::{AesCtr, Decryptor, Encryption}; -use error::{ConnectionError, ConnectionResult as Result}; -use key_exchange::{KexResult, KeyExchange}; -use mac::{Hmac, MacAlgorithm}; -use message::MessageType; -use packet::{Packet, ReadPacketExt, WritePacketExt}; use rand::distributions::Standard; -use server::ServerConfig; + +use crate::channel::{Channel, ChannelId, ChannelRequest}; +use crate::encryption::{AesCtr, Decryptor, Encryption}; +use crate::error::{ConnectionError, ConnectionResult as Result}; +use crate::key_exchange::{KexResult, KeyExchange}; +use crate::mac::{Hmac, MacAlgorithm}; +use crate::message::MessageType; +use crate::packet::{Packet, ReadPacketExt, WritePacketExt}; +use crate::server::ServerConfig; #[derive(PartialEq)] enum ConnectionState { @@ -364,7 +365,7 @@ impl<'a> Connection { } fn kex_init(&mut self, packet: Packet) -> Result> { - use algorithm::*; + use crate::algorithm::*; let (kex_algo, srv_host_key_algo, enc_algo, mac_algo, comp_algo) = { let mut reader = packet.reader(); diff --git a/src/encryption/aes_ctr.rs b/src/encryption/aes_ctr.rs index 3388602..68d55dc 100644 --- a/src/encryption/aes_ctr.rs +++ b/src/encryption/aes_ctr.rs @@ -1,7 +1,7 @@ use crypto::aes::{KeySize, ctr}; use crypto::symmetriccipher::SynchronousStreamCipher; -use encryption::Encryption; +use crate::encryption::Encryption; pub struct AesCtr { cipher: Box, diff --git a/src/key_exchange/curve25519.rs b/src/key_exchange/curve25519.rs index 7a28f3e..e6ff362 100644 --- a/src/key_exchange/curve25519.rs +++ b/src/key_exchange/curve25519.rs @@ -1,13 +1,14 @@ -use connection::{Connection, ConnectionType}; use crypto::curve25519; use crypto::digest::Digest; use crypto::sha2::Sha256; -use key_exchange::{KexResult, KeyExchange}; -use message::MessageType; use num_bigint::{BigInt, Sign}; -use packet::{Packet, ReadPacketExt, WritePacketExt}; use rand::RngCore; +use crate::connection::{Connection, ConnectionType}; +use crate::key_exchange::{KexResult, KeyExchange}; +use crate::message::MessageType; +use crate::packet::{Packet, ReadPacketExt, WritePacketExt}; + const ECDH_KEX_INIT: u8 = 30; const ECDH_KEX_REPLY: u8 = 31; diff --git a/src/key_exchange/mod.rs b/src/key_exchange/mod.rs index 7300223..98303b3 100644 --- a/src/key_exchange/mod.rs +++ b/src/key_exchange/mod.rs @@ -4,8 +4,8 @@ mod curve25519; pub use self::curve25519::Curve25519; // pub use self::dh_group_sha1::DhGroupSha1; -use connection::Connection; -use packet::Packet; +use crate::connection::Connection; +use crate::packet::Packet; pub enum KexResult { Ok(Packet), diff --git a/src/mac/hmac.rs b/src/mac/hmac.rs index 3a0292a..c662fa5 100644 --- a/src/mac/hmac.rs +++ b/src/mac/hmac.rs @@ -1,7 +1,8 @@ use crypto::hmac::Hmac as rcHmac; use crypto::mac::Mac; use crypto::sha2::Sha256; -use mac::MacAlgorithm; + +use crate::mac::MacAlgorithm; pub struct Hmac { hmac: Box>, diff --git a/src/packet.rs b/src/packet.rs index dedff3c..c562bf5 100644 --- a/src/packet.rs +++ b/src/packet.rs @@ -3,10 +3,10 @@ use std::io::{self, BufReader, Read, Result, Write}; use std::str::{self, FromStr}; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; - -use message::MessageType; use num_bigint::BigInt; +use crate::message::MessageType; + pub enum Packet { Raw(Vec, usize), Payload(Vec), diff --git a/src/public_key/ed25519.rs b/src/public_key/ed25519.rs index 9987d1c..64d26ce 100644 --- a/src/public_key/ed25519.rs +++ b/src/public_key/ed25519.rs @@ -2,8 +2,9 @@ use std::io::{self, Read, Write}; use std::io::ErrorKind::InvalidData; use crypto::ed25519; -use public_key::{CryptoSystem, KeyPair}; -use rand::{Rng, RngCore}; +use rand::RngCore; + +use crate::public_key::{CryptoSystem, KeyPair}; pub static ED25519: CryptoSystem = CryptoSystem { id: "ed25519", @@ -31,7 +32,7 @@ impl Ed25519KeyPair { } fn import(mut r: &mut dyn Read) -> io::Result> { - use packet::ReadPacketExt; + use crate::packet::ReadPacketExt; if r.read_utf8()? != "ssh-ed25519" { return Err(io::Error::new(InvalidData, "not a ED25519 key")); @@ -58,7 +59,7 @@ impl Ed25519KeyPair { } fn read_public(mut r: &mut dyn Read) -> io::Result> { - use packet::ReadPacketExt; + use crate::packet::ReadPacketExt; if r.read_uint32()? != 32 { return Err(io::Error::new(InvalidData, "invalid ED25519 key")); @@ -84,7 +85,7 @@ impl KeyPair for Ed25519KeyPair { } fn verify(&self, data: &[u8], signature: &[u8]) -> Result { - use packet::ReadPacketExt; + use crate::packet::ReadPacketExt; use std::io::Cursor; let mut reader = Cursor::new(signature); @@ -99,7 +100,7 @@ impl KeyPair for Ed25519KeyPair { } fn sign(&self, data: &[u8]) -> Result, ()> { - use packet::WritePacketExt; + use crate::packet::WritePacketExt; if let Some(private_key) = self.private { let mut result = Vec::new(); let sig = ed25519::signature(data, &private_key); @@ -113,13 +114,13 @@ impl KeyPair for Ed25519KeyPair { } fn write_public(&self, w: &mut dyn Write) -> io::Result<()> { - use packet::WritePacketExt; + use crate::packet::WritePacketExt; w.write_string("ssh-ed25519")?; w.write_bytes(&self.public) } fn export(&self, w: &mut dyn Write) -> io::Result<()> { - use packet::WritePacketExt; + use crate::packet::WritePacketExt; w.write_string("ssh-ed25519")?; w.write_bytes(&self.public)?; if let Some(private_key) = self.private { diff --git a/src/server.rs b/src/server.rs index aca18cb..b6695f4 100644 --- a/src/server.rs +++ b/src/server.rs @@ -3,8 +3,8 @@ use std::net::TcpListener; use std::sync::Arc; use std::thread; -use connection::{Connection, ConnectionType}; -use public_key::KeyPair; +use crate::connection::{Connection, ConnectionType}; +use crate::public_key::KeyPair; pub struct ServerConfig { pub host: String,