Fix potential timing side-channels in authentication mechanisms #737

Merged
lx merged 2 commits from fix-auth-ct-eq into main 2024-02-29 14:04:38 +00:00
Showing only changes of commit 6d33e721c4 - Show all commits

View file

@ -375,9 +375,10 @@ pub async fn verify_v4(
) )
.ok_or_internal_error("Unable to build signing HMAC")?; .ok_or_internal_error("Unable to build signing HMAC")?;
hmac.update(payload); hmac.update(payload);
let our_signature = hex::encode(hmac.finalize().into_bytes()); let signature =
if auth.signature != our_signature { hex::decode(&auth.signature).map_err(|_| Error::forbidden("Invalid signature"))?;
return Err(Error::forbidden("Invalid signature".to_string())); if hmac.verify_slice(&signature).is_err() {
return Err(Error::forbidden("Invalid signature"));
} }
Ok(key) Ok(key)