RSA: Deprecate and replace RsaKeyPair::public_modulus_len.

This commit is contained in:
Brian Smith 2021-09-22 11:32:27 -07:00
parent e05f7e1273
commit 617b09baa6
4 changed files with 16 additions and 9 deletions

View File

@ -48,8 +48,9 @@ impl Modulus {
Ok(Self { value, bits })
}
/// The length of the modulus in bits.
#[inline]
pub(crate) fn len_bits(&self) -> bits::BitLength {
pub fn len_bits(&self) -> bits::BitLength {
self.bits
}

View File

@ -373,14 +373,18 @@ impl RsaKeyPair {
})
}
/// Returns a reference to the public key.
pub fn public(&self) -> &public::Key {
&self.public
}
/// Returns the length in bytes of the key pair's public modulus.
///
/// A signature has the same length as the public modulus.
#[deprecated = "Use `public().n().len_bits().as_usize_bits()`"]
#[inline]
pub fn public_modulus_len(&self) -> usize {
self.public_key
.modulus()
.big_endian_without_leading_zero()
.len()
self.public().n().len_bits().as_usize_bits()
}
}

View File

@ -207,7 +207,7 @@
//! // SHA256 digest algorithm.
//! const MESSAGE: &'static [u8] = b"hello, world";
//! let rng = rand::SystemRandom::new();
//! let mut signature = vec![0; key_pair.public_modulus_len()];
//! let mut signature = vec![0; key_pair.public().n().len().as_usize_bytes_rounded_up()];
//! key_pair.sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature)
//! .map_err(|_| MyError::OOM)?;
//!

View File

@ -82,7 +82,8 @@ fn test_signature_rsa_pkcs1_sign() {
// XXX: This test is too slow on Android ARM Travis CI builds.
// TODO: re-enable these tests on Android ARM.
let mut actual = vec![0u8; key_pair.public_modulus_len()];
let mut actual =
vec![0u8; key_pair.public().n().len_bits().as_usize_bytes_rounded_up()];
key_pair
.sign(alg, &rng, &msg, actual.as_mut_slice())
.unwrap();
@ -121,7 +122,8 @@ fn test_signature_rsa_pss_sign() {
let rng = test::rand::FixedSliceRandom { bytes: &salt };
let mut actual = vec![0u8; key_pair.public_modulus_len()];
let mut actual =
vec![0u8; key_pair.public().n().len_bits().as_usize_bytes_rounded_up()];
key_pair.sign(alg, &rng, &msg, actual.as_mut_slice())?;
assert_eq!(actual.as_slice() == &expected[..], result == "Pass");
Ok(())
@ -143,7 +145,7 @@ fn test_signature_rsa_pkcs1_sign_output_buffer_len() {
let key_pair = signature::RsaKeyPair::from_der(PRIVATE_KEY_DER).unwrap();
// The output buffer is one byte too short.
let mut signature = vec![0; key_pair.public_modulus_len() - 1];
let mut signature = vec![0; key_pair.public().n().len_bits().as_usize_bytes_rounded_up() - 1];
assert!(key_pair
.sign(&signature::RSA_PKCS1_SHA256, &rng, MESSAGE, &mut signature)