Skip to content

Commit

Permalink
tweak
Browse files Browse the repository at this point in the history
  • Loading branch information
newpavlov committed Feb 12, 2025
1 parent aa15367 commit 67d7440
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 14 deletions.
8 changes: 1 addition & 7 deletions des/src/des.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,7 @@ impl KeyInit for Des {

#[inline]
fn weak_key_test(key: &Key<Self>) -> Result<(), WeakKeyError> {
let key = u64::from_ne_bytes(key.0);
let mut is_weak = 0u8;

for &weak_key in crate::consts::WEAK_KEYS {
is_weak |= u8::from(key == weak_key);
}

let is_weak = super::weak_key_test(&key.0);
if is_weak == 0 {
Ok(())
} else {
Expand Down
13 changes: 13 additions & 0 deletions des/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,16 @@ mod utils;

pub use crate::des::Des;
pub use crate::tdes::{TdesEde2, TdesEde3, TdesEee2, TdesEee3};

/// Checks whether the key is weak.
///
/// Returns 1 if key is weak and 0 otherwise.
fn weak_key_test(key: &[u8; 8]) -> u8 {
let key = u64::from_ne_bytes(*key);
let mut is_weak = 0u8;

for &weak_key in crate::consts::WEAK_KEYS {
is_weak |= u8::from(key == weak_key);
}
is_weak
}
22 changes: 15 additions & 7 deletions des/src/tdes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,21 @@ use core::fmt;
use cipher::zeroize::ZeroizeOnDrop;

#[inline]
fn weak_key_test<U: KeyInit>(key: &Key<U>) -> Result<(), WeakKeyError> {
fn weak_key_test(key: &[u8]) -> Result<(), WeakKeyError> {
let sub_key_size = <Des as KeySizeUser>::KeySize::USIZE;
assert_eq!(key.len() % sub_key_size, 0);

let mut is_weak = 0u8;
for des_key in key.chunks_exact(sub_key_size) {
Des::weak_key_test(des_key.try_into().unwrap())?;
let des_key = des_key.try_into().unwrap();
is_weak |= super::weak_key_test(des_key);
}

if is_weak == 0 {
Ok(())
} else {
Err(WeakKeyError)
}
Ok(())
}

/// Triple DES (3DES) block cipher.
Expand Down Expand Up @@ -50,7 +58,7 @@ impl KeyInit for TdesEde3 {

#[inline]
fn weak_key_test(key: &Key<Self>) -> Result<(), WeakKeyError> {
weak_key_test::<Self>(key)
weak_key_test(key)
}
}

Expand Down Expand Up @@ -139,7 +147,7 @@ impl KeyInit for TdesEee3 {

#[inline]
fn weak_key_test(key: &Key<Self>) -> Result<(), WeakKeyError> {
weak_key_test::<Self>(key)
weak_key_test(key)
}
}

Expand Down Expand Up @@ -225,7 +233,7 @@ impl KeyInit for TdesEde2 {

#[inline]
fn weak_key_test(key: &Key<Self>) -> Result<(), WeakKeyError> {
weak_key_test::<Self>(key)
weak_key_test(key)
}
}

Expand Down Expand Up @@ -311,7 +319,7 @@ impl KeyInit for TdesEee2 {

#[inline]
fn weak_key_test(key: &Key<Self>) -> Result<(), WeakKeyError> {
weak_key_test::<Self>(key)
weak_key_test(key)
}
}

Expand Down

0 comments on commit 67d7440

Please sign in to comment.