Skip to content

Commit

Permalink
feat: Aes algorithm hardware acceleration
Browse files Browse the repository at this point in the history
  • Loading branch information
driftluo committed Oct 11, 2019
1 parent f6cf320 commit 01a436e
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 16 deletions.
3 changes: 2 additions & 1 deletion secio/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,14 @@ rand = "0.6"
ring = "0.16.5"
twofish = "0.2.0"
aes-ctr = "0.3.0"
aesni = { version = "0.6", default-features = false, features = ["nocheck"] }
ctr = "0.3.0"
unsigned-varint = "0.2.2"
bs58 = "0.2.0"

[dev-dependencies]
env_logger = "0.6"
criterion = "0.2"
criterion = "0.3"

[features]
default = []
Expand Down
44 changes: 31 additions & 13 deletions secio/src/stream_cipher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use crate::codec::StreamCipher;
use aes_ctr::stream_cipher::generic_array::GenericArray;
use aes_ctr::stream_cipher::NewStreamCipher;
use aes_ctr::{Aes128Ctr, Aes256Ctr};
use aesni::{Aes128Ctr as NIAes128Ctr, Aes256Ctr as NIAes256Ctr};
use ctr::Ctr128;
use twofish::Twofish;

Expand Down Expand Up @@ -39,18 +40,35 @@ impl Cipher {
/// Returns your stream cipher depending on `Cipher`.
#[inline]
pub fn ctr_init(key_size: Cipher, key: &[u8], iv: &[u8]) -> StreamCipher {
match key_size {
Cipher::Aes128 => Box::new(Aes128Ctr::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
Cipher::Aes256 => Box::new(Aes256Ctr::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
Cipher::TwofishCtr => Box::new(Ctr128::<Twofish>::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
if is_x86_feature_detected!("aes") && is_x86_feature_detected!("sse3") {
match key_size {
Cipher::Aes128 => Box::new(NIAes128Ctr::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
Cipher::Aes256 => Box::new(NIAes256Ctr::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
Cipher::TwofishCtr => Box::new(Ctr128::<Twofish>::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
}
} else {
match key_size {
Cipher::Aes128 => Box::new(Aes128Ctr::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
Cipher::Aes256 => Box::new(Aes256Ctr::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
Cipher::TwofishCtr => Box::new(Ctr128::<Twofish>::new(
GenericArray::from_slice(key),
GenericArray::from_slice(iv),
)),
}
}
}
4 changes: 2 additions & 2 deletions tests/test_kill.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ use tentacle::{
};

/// Get current used memory(bytes)
fn current_used_memory() -> Option<f32> {
fn current_used_memory() -> Option<f64> {
let sys = System::new();
match sys.memory() {
Ok(mem) => Some((mem.total.as_usize() - mem.free.as_usize()) as f32),
Ok(mem) => Some((mem.total.as_u64() - mem.free.as_u64()) as f64),
Err(_) => None,
}
}
Expand Down

0 comments on commit 01a436e

Please sign in to comment.