mirror of
https://gitlab.redox-os.org/CoffeeCode/redox-ssh.git
synced 2025-12-28 15:02:18 +01:00
Update to Rust Edition 2021 and fix compilation errors
This commit is contained in:
parent
1103eb0eec
commit
86f0cc82c3
11 changed files with 38 additions and 32 deletions
|
|
@ -1,6 +1,7 @@
|
|||
[package]
|
||||
name = "redox-ssh"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
authors = ["Thomas Gatzweiler <mail@thomasgatzweiler.com>"]
|
||||
|
||||
[lib]
|
||||
|
|
|
|||
|
|
@ -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] =
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Option<Packet>> {
|
||||
use algorithm::*;
|
||||
use crate::algorithm::*;
|
||||
|
||||
let (kex_algo, srv_host_key_algo, enc_algo, mac_algo, comp_algo) = {
|
||||
let mut reader = packet.reader();
|
||||
|
|
|
|||
|
|
@ -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<dyn SynchronousStreamCipher + 'static>,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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<rcHmac<Sha256>>,
|
||||
|
|
|
|||
|
|
@ -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<u8>, usize),
|
||||
Payload(Vec<u8>),
|
||||
|
|
|
|||
|
|
@ -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<Box<dyn KeyPair>> {
|
||||
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<Box<dyn KeyPair>> {
|
||||
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<bool, ()> {
|
||||
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<Vec<u8>, ()> {
|
||||
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 {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue