Fix panic in SRTP crypto when the most significant byte of IV is 0

dtls-srtp
Jonas Herzig 2018-12-10 21:00:11 +01:00
parent a2cfaf2d3e
commit ee8be93855
1 changed files with 4 additions and 2 deletions

View File

@ -471,7 +471,8 @@ where
let iv = BigUint::from_bytes_be(&context.session_salt_key) << 16;
let iv = iv ^ (BigUint::from(ssrc) << 64);
let iv = iv ^ (index.into() << 16);
let iv = &iv.to_bytes_be()[0..context.session_encr_key.len()];
let iv = iv ^ (BigUint::from(1_u8) << (context.session_encr_key.len() * 8));
let iv = &iv.to_bytes_be()[1..context.session_encr_key.len() + 1];
let mut ctr = crypto::aes::ctr(
crypto::aes::KeySize::KeySize128,
@ -506,7 +507,8 @@ where
let iv = BigUint::from_bytes_be(&context.session_salt_key) << 16;
let iv = iv ^ (BigUint::from(ssrc) << 64);
let iv = iv ^ (index.into() << 16);
let iv = &iv.to_bytes_be()[0..context.session_encr_key.len()];
let iv = iv ^ (BigUint::from(1_u8) << (context.session_encr_key.len() * 8));
let iv = &iv.to_bytes_be()[1..context.session_encr_key.len() + 1];
let mut ctr = crypto::aes::ctr(
crypto::aes::KeySize::KeySize128,