mirror of
https://github.com/shadowsocks/shadowsocks-rust.git
synced 2026-02-09 01:59:16 +08:00
make clippy happy
This commit is contained in:
@@ -109,4 +109,20 @@ pub fn make_skey(t: CipherType, key: &[u8], salt: &[u8]) -> Vec<u8> {
|
||||
hkdf_expand(Sha1::new(), &prk, SUBKEY_INFO, &mut skey);
|
||||
|
||||
skey
|
||||
}
|
||||
|
||||
/// Increase nonce by 1
|
||||
///
|
||||
/// AEAD ciphers requires to increase nonce after encrypt/decrypt every chunk
|
||||
pub fn increase_nonce(nonce: &mut [u8]) {
|
||||
let mut adding = true;
|
||||
for v in nonce.iter_mut() {
|
||||
if !adding {
|
||||
break;
|
||||
}
|
||||
|
||||
let (r, overflow) = v.overflowing_add(1);
|
||||
*v = r;
|
||||
adding = overflow;
|
||||
}
|
||||
}
|
||||
@@ -150,19 +150,19 @@ impl CipherType {
|
||||
match *self {
|
||||
CipherType::Table | CipherType::Dummy => 0,
|
||||
|
||||
CipherType::Aes128Cfb => symm::Cipher::aes_128_cfb128().key_len(),
|
||||
CipherType::Aes128Cfb1 => symm::Cipher::aes_128_cfb1().key_len(),
|
||||
CipherType::Aes128Cfb8 => symm::Cipher::aes_128_cfb8().key_len(),
|
||||
CipherType::Aes128Cfb |
|
||||
CipherType::Aes128Cfb128 => symm::Cipher::aes_128_cfb128().key_len(),
|
||||
CipherType::Aes256Cfb => symm::Cipher::aes_256_cfb128().key_len(),
|
||||
CipherType::Aes256Cfb1 => symm::Cipher::aes_256_cfb1().key_len(),
|
||||
CipherType::Aes256Cfb8 => symm::Cipher::aes_256_cfb8().key_len(),
|
||||
CipherType::Aes256Cfb |
|
||||
CipherType::Aes256Cfb128 => symm::Cipher::aes_256_cfb128().key_len(),
|
||||
|
||||
CipherType::Rc4 => symm::Cipher::rc4().key_len(),
|
||||
CipherType::Rc4 |
|
||||
CipherType::Rc4Md5 => symm::Cipher::rc4().key_len(),
|
||||
|
||||
CipherType::ChaCha20 => 32,
|
||||
CipherType::ChaCha20 |
|
||||
CipherType::Salsa20 => 32,
|
||||
|
||||
CipherType::Aes128Gcm => 16,
|
||||
@@ -259,19 +259,19 @@ impl CipherType {
|
||||
match *self {
|
||||
CipherType::Table | CipherType::Dummy => 0,
|
||||
|
||||
CipherType::Aes128Cfb => symm::Cipher::aes_128_cfb128().iv_len().unwrap_or(0),
|
||||
CipherType::Aes128Cfb1 => symm::Cipher::aes_128_cfb1().iv_len().unwrap_or(0),
|
||||
CipherType::Aes128Cfb8 => symm::Cipher::aes_128_cfb8().iv_len().unwrap_or(0),
|
||||
CipherType::Aes128Cfb |
|
||||
CipherType::Aes128Cfb128 => symm::Cipher::aes_128_cfb128().iv_len().unwrap_or(0),
|
||||
CipherType::Aes256Cfb => symm::Cipher::aes_256_cfb128().iv_len().unwrap_or(0),
|
||||
CipherType::Aes256Cfb1 => symm::Cipher::aes_256_cfb1().iv_len().unwrap_or(0),
|
||||
CipherType::Aes256Cfb8 => symm::Cipher::aes_256_cfb8().iv_len().unwrap_or(0),
|
||||
CipherType::Aes256Cfb |
|
||||
CipherType::Aes256Cfb128 => symm::Cipher::aes_256_cfb128().iv_len().unwrap_or(0),
|
||||
|
||||
CipherType::Rc4 => symm::Cipher::rc4().iv_len().unwrap_or(0),
|
||||
CipherType::Rc4 |
|
||||
CipherType::Rc4Md5 => symm::Cipher::rc4().iv_len().unwrap_or(0),
|
||||
|
||||
CipherType::ChaCha20 => 8,
|
||||
CipherType::ChaCha20 |
|
||||
CipherType::Salsa20 => 8,
|
||||
|
||||
CipherType::Aes128Gcm |
|
||||
|
||||
@@ -32,7 +32,7 @@ use rust_crypto::aes::KeySize;
|
||||
use crypto::{StreamCipher, CipherType, CipherResult};
|
||||
use crypto::{AeadDecryptor, AeadEncryptor};
|
||||
use crypto::cipher::Error;
|
||||
use crypto::aead::make_skey;
|
||||
use crypto::aead::{make_skey, increase_nonce};
|
||||
|
||||
/// Cipher provided by Rust-Crypto
|
||||
pub enum CryptoCipher {
|
||||
@@ -116,16 +116,7 @@ impl CryptoAeadCrypto {
|
||||
}
|
||||
|
||||
fn increase_nonce(&mut self) {
|
||||
let mut adding = 1;
|
||||
for v in self.nonce.iter_mut() {
|
||||
if adding == 0 {
|
||||
break;
|
||||
}
|
||||
|
||||
let (r, overflow) = v.overflowing_add(adding);
|
||||
*v = r;
|
||||
adding = if overflow { 1 } else { 0 };
|
||||
}
|
||||
increase_nonce(&mut self.nonce);
|
||||
}
|
||||
|
||||
fn reset(&mut self) {
|
||||
|
||||
@@ -43,9 +43,9 @@ use crypto::{self, CipherType, AeadEncryptor, AeadDecryptor};
|
||||
use super::{EncryptedWrite, DecryptedRead, BUFFER_SIZE};
|
||||
|
||||
enum ReadingStep {
|
||||
DataLength,
|
||||
Length,
|
||||
DataAndTag(usize),
|
||||
DataDone,
|
||||
Done,
|
||||
}
|
||||
|
||||
/// Reader wrapper that will decrypt data automatically
|
||||
@@ -74,7 +74,7 @@ impl<R> DecryptedReader<R>
|
||||
pos: 0,
|
||||
sent_final: false,
|
||||
tag_size: t.tag_size(),
|
||||
read_step: ReadingStep::DataLength,
|
||||
read_step: ReadingStep::Length,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ impl<R> DecryptedReader<R>
|
||||
self.cipher.decrypt(data, &mut self.data, tag)?;
|
||||
}
|
||||
|
||||
self.read_step = ReadingStep::DataDone;
|
||||
self.read_step = ReadingStep::Done;
|
||||
self.buffer.clear();
|
||||
}
|
||||
|
||||
@@ -170,13 +170,13 @@ impl<R> DecryptedReader<R>
|
||||
fn read_some(&mut self) -> io::Result<()> {
|
||||
while !self.sent_final {
|
||||
match self.read_step {
|
||||
ReadingStep::DataLength => self.read_length()?,
|
||||
ReadingStep::Length => self.read_length()?,
|
||||
ReadingStep::DataAndTag(dlen) => {
|
||||
self.read_data(dlen)?;
|
||||
break; // Read finished! Break out
|
||||
}
|
||||
ReadingStep::DataDone => {
|
||||
self.read_step = ReadingStep::DataLength;
|
||||
ReadingStep::Done => {
|
||||
self.read_step = ReadingStep::Length;
|
||||
self.data.clear();
|
||||
}
|
||||
}
|
||||
@@ -195,7 +195,7 @@ impl<R> BufRead for DecryptedReader<R>
|
||||
}
|
||||
|
||||
self.read_some()?;
|
||||
if let ReadingStep::DataDone = self.read_step {
|
||||
if let ReadingStep::Done = self.read_step {
|
||||
self.pos = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,9 +170,9 @@ fn connect_proxy_server(handle: &Handle, svr_cfg: Rc<ServerConfig>) -> BoxIoFutu
|
||||
trace!("Connecting to proxy {:?}, timeout: {:?}",
|
||||
svr_cfg.addr(),
|
||||
timeout);
|
||||
match svr_cfg.addr() {
|
||||
&ServerAddr::SocketAddr(ref addr) => try_timeout(TcpStream::connect(addr, handle), timeout, handle),
|
||||
&ServerAddr::DomainName(ref domain, port) => {
|
||||
match *svr_cfg.addr() {
|
||||
ServerAddr::SocketAddr(ref addr) => try_timeout(TcpStream::connect(addr, handle), timeout, handle),
|
||||
ServerAddr::DomainName(ref domain, port) => {
|
||||
let handle = handle.clone();
|
||||
let fut = try_timeout(DnsResolver::resolve(&domain[..]), timeout, &handle).and_then(move |sockaddr| {
|
||||
let sockaddr = match sockaddr {
|
||||
|
||||
@@ -180,8 +180,7 @@ fn handle_socks5_client(handle: &Handle, s: TcpStream, conf: Rc<ServerConfig>, u
|
||||
socks5::Command::UdpAssociate => {
|
||||
if udp_conf.enable_udp {
|
||||
info!("UDP ASSOCIATE {}", addr);
|
||||
let fut = TcpResponseHeader::new(socks5::Reply::Succeeded,
|
||||
From::from((*(&*udp_conf.client_addr))))
|
||||
let fut = TcpResponseHeader::new(socks5::Reply::Succeeded, From::from(*udp_conf.client_addr))
|
||||
.write_to(w)
|
||||
.and_then(flush)
|
||||
.and_then(|_| {
|
||||
|
||||
@@ -96,7 +96,7 @@ impl Client {
|
||||
fn resolve_server_addr(svr_cfg: Rc<ServerConfig>) -> BoxIoFuture<SocketAddr> {
|
||||
match *svr_cfg.addr() {
|
||||
// Return directly if it is a SocketAddr
|
||||
ServerAddr::SocketAddr(ref addr) => boxed_future(futures::finished(addr.clone())),
|
||||
ServerAddr::SocketAddr(ref addr) => boxed_future(futures::finished(*addr)),
|
||||
// Resolve domain name to SocketAddr
|
||||
ServerAddr::DomainName(ref dname, port) => {
|
||||
let fut = DnsResolver::resolve(dname).map(move |sockaddr| {
|
||||
|
||||
Reference in New Issue
Block a user