diff --git a/src/rsa/padding.rs b/src/rsa/padding.rs index 94632ef50..e09e6836e 100644 --- a/src/rsa/padding.rs +++ b/src/rsa/padding.rs @@ -81,7 +81,7 @@ impl RSAVerification for PKCS1 { &self, m_hash: &digest::Digest, m: &mut untrusted::Reader, mod_bits: bits::BitLength, ) -> Result<(), error::Unspecified> { // `mod_bits.as_usize_bytes_rounded_up() <= - // PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN` is ensured by `verify_rsa()`. + // PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN` is ensured by `verify_rsa_()`. let mut calculated = [0u8; PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN]; let calculated = &mut calculated[..mod_bits.as_usize_bytes_rounded_up()]; pkcs1_encode(&self, m_hash, calculated); diff --git a/src/rsa/verification.rs b/src/rsa/verification.rs index 4d13a6558..af4a87d33 100644 --- a/src/rsa/verification.rs +++ b/src/rsa/verification.rs @@ -15,7 +15,7 @@ use super::{bigint, parse_public_key, RSAParameters, N, PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN}; /// RSA PKCS#1 1.5 signatures. use core; -use crate::{bits, digest, error, private, signature}; +use crate::{bits, cpu, digest, error, private, signature}; use untrusted; #[derive(Debug)] @@ -87,7 +87,7 @@ impl signature::VerificationAlgorithm for RSAParameters { &self, public_key: untrusted::Input, msg: untrusted::Input, signature: untrusted::Input, ) -> Result<(), error::Unspecified> { let public_key = parse_public_key(public_key)?; - verify_rsa(self, public_key, msg, signature) + verify_rsa_(self, public_key, msg, signature) } } @@ -222,6 +222,14 @@ rsa_params!( pub fn verify_rsa( params: &RSAParameters, (n, e): (untrusted::Input, untrusted::Input), msg: untrusted::Input, signature: untrusted::Input, +) -> Result<(), error::Unspecified> { + cpu::cache_detected_features(); + verify_rsa_(params, (n, e), msg, signature) +} + +pub(crate) fn verify_rsa_( + params: &RSAParameters, (n, e): (untrusted::Input, untrusted::Input), msg: untrusted::Input, + signature: untrusted::Input, ) -> Result<(), error::Unspecified> { let max_bits = bits::BitLength::from_usize_bytes(PUBLIC_KEY_PUBLIC_MODULUS_MAX_LEN)?;