diff --git a/blake2/src/macros.rs b/blake2/src/macros.rs index ea0f26532..e0277c4d8 100644 --- a/blake2/src/macros.rs +++ b/blake2/src/macros.rs @@ -353,7 +353,7 @@ macro_rules! blake2_mac_impl { #[inline] fn new_from_slice(key: &[u8]) -> Result { let kl = key.len(); - if kl > ::KeySize::USIZE { + if kl == 0 || kl > ::KeySize::USIZE { return Err(InvalidLength); } let mut padded_key = Block::<$hash>::default(); diff --git a/blake2/tests/mac.rs b/blake2/tests/mac.rs index 2deca402f..69e47f0ec 100644 --- a/blake2/tests/mac.rs +++ b/blake2/tests/mac.rs @@ -32,6 +32,10 @@ fn blake2b_new_test() { #[test] fn mac_refuses_empty_keys() { + use blake2::digest::KeyInit; + + assert!(blake2::Blake2bMac512::new_from_slice(&[]).is_err()); + assert!(blake2::Blake2sMac256::new_from_slice(&[]).is_err()); assert!( blake2::Blake2bMac512::new_with_salt_and_personal(Some(&[]), b"salt", b"persona").is_err() );