Skip to content

Commit

Permalink
Always set IV length for ciphers that use an IV
Browse files Browse the repository at this point in the history
This fixes an issue where the IV length would not be set if the length
was equal to the recommended length. The issue shows up at least when an
IV of length 12 (which is returned by `t.iv_len()`) is used with the
AES256 CCM cipher, as OpenSSL defaults the IV length to 7 bytes [^1] and it
would not be correctly set to 12.

[^1]: https://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption

Closes sfackler#2244.
  • Loading branch information
lwestlund committed May 27, 2024
1 parent 50e4bdf commit 551fd25
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions openssl/src/symm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -626,10 +626,8 @@ impl Crypter {

ctx.set_key_length(key.len())?;

if let (Some(iv), Some(iv_len)) = (iv, t.iv_len()) {
if iv.len() != iv_len {
ctx.set_iv_length(iv.len())?;
}
if let (Some(iv), Some(_iv_len)) = (iv, t.iv_len()) {
ctx.set_iv_length(iv.len())?;
}

f(&mut ctx, None, Some(key), iv)?;
Expand Down

0 comments on commit 551fd25

Please sign in to comment.