diff --git a/Cargo.lock b/Cargo.lock index 612de48f..5562664e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -181,9 +181,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c035cb64cba03dad2fb921f3e218785e8cf9a41790da5eb3a1400f62fa2be11" +checksum = "914c195c4d7fbc5ed7f88d14cbf85914d5c664967658d43404b263913a477e82" dependencies = [ "cpubits", "ctutils", @@ -637,12 +637,13 @@ dependencies = [ [[package]] name = "rsa" -version = "0.10.0-rc.20" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2389407c34c6039d7c8740520ec758090883c5b92df93a5edada2779256bf2e0" +checksum = "23e77fd77e0dea28b3011fd62d15445b7de7959333b0276d930e03be0f755699" dependencies = [ "const-oid", "crypto-bigint", + "crypto-common", "crypto-primes", "digest", "hmac", diff --git a/ssh-key/Cargo.toml b/ssh-key/Cargo.toml index 668b8fe3..027f52c6 100644 --- a/ssh-key/Cargo.toml +++ b/ssh-key/Cargo.toml @@ -36,7 +36,7 @@ p256 = { version = "0.14", optional = true, default-features = false, features = p384 = { version = "0.14", optional = true, default-features = false, features = ["ecdsa"] } p521 = { version = "0.14", optional = true, default-features = false, features = ["ecdsa"] } rand_core = { version = "0.10", optional = true, default-features = false } -rsa = { version = "0.10.0-rc.20", optional = true, default-features = false } +rsa = { version = "0.10", optional = true, default-features = false, features = ["pkcs1v15"] } sec1 = { version = "0.8", optional = true, default-features = false, features = ["point"] } serde = { version = "1.0.16", optional = true } sha1 = { version = "0.11", optional = true, default-features = false, features = ["oid"] } diff --git a/ssh-key/src/private/rsa.rs b/ssh-key/src/private/rsa.rs index cb1f4375..ae0f686d 100644 --- a/ssh-key/src/private/rsa.rs +++ b/ssh-key/src/private/rsa.rs @@ -151,7 +151,7 @@ impl RsaKeypair { #[cfg(feature = "rsa")] #[expect(clippy::missing_errors_doc, reason = "TODO")] pub fn random(rng: &mut R, bit_size: usize) -> Result { - rsa::RsaPrivateKey::new(rng, bit_size)?.try_into() + rsa::PrivateKey::new(rng, bit_size)?.try_into() } /// Create a new keypair from the given `public` and `private` key components. @@ -245,20 +245,20 @@ impl From<&RsaKeypair> for RsaPublicKey { } #[cfg(feature = "rsa")] -impl TryFrom for rsa::RsaPrivateKey { +impl TryFrom for rsa::PrivateKey { type Error = Error; - fn try_from(key: RsaKeypair) -> Result { - rsa::RsaPrivateKey::try_from(&key) + fn try_from(key: RsaKeypair) -> Result { + rsa::PrivateKey::try_from(&key) } } #[cfg(feature = "rsa")] -impl TryFrom<&RsaKeypair> for rsa::RsaPrivateKey { +impl TryFrom<&RsaKeypair> for rsa::PrivateKey { type Error = Error; - fn try_from(key: &RsaKeypair) -> Result { - let ret = rsa::RsaPrivateKey::from_components( + fn try_from(key: &RsaKeypair) -> Result { + let ret = rsa::PrivateKey::from_components( Uint::try_from(key.public.n())?, Uint::try_from(key.public.e())?, Uint::try_from(&key.private.d)?, @@ -273,19 +273,19 @@ impl TryFrom<&RsaKeypair> for rsa::RsaPrivateKey { } #[cfg(feature = "rsa")] -impl TryFrom for RsaKeypair { +impl TryFrom for RsaKeypair { type Error = Error; - fn try_from(key: rsa::RsaPrivateKey) -> Result { + fn try_from(key: rsa::PrivateKey) -> Result { RsaKeypair::try_from(&key) } } #[cfg(feature = "rsa")] -impl TryFrom<&rsa::RsaPrivateKey> for RsaKeypair { +impl TryFrom<&rsa::PrivateKey> for RsaKeypair { type Error = Error; - fn try_from(key: &rsa::RsaPrivateKey) -> Result { + fn try_from(key: &rsa::PrivateKey) -> Result { // Multi-prime keys are not supported if key.primes().len() > 2 { return Err(Error::Crypto); diff --git a/ssh-key/src/public/rsa.rs b/ssh-key/src/public/rsa.rs index 8c2d8c1a..9c854d4d 100644 --- a/ssh-key/src/public/rsa.rs +++ b/ssh-key/src/public/rsa.rs @@ -100,41 +100,41 @@ impl Hash for RsaPublicKey { } #[cfg(feature = "rsa")] -impl TryFrom for rsa::RsaPublicKey { +impl TryFrom for rsa::PublicKey { type Error = Error; - fn try_from(key: RsaPublicKey) -> Result { - rsa::RsaPublicKey::try_from(&key) + fn try_from(key: RsaPublicKey) -> Result { + rsa::PublicKey::try_from(&key) } } #[cfg(feature = "rsa")] -impl TryFrom<&RsaPublicKey> for rsa::RsaPublicKey { +impl TryFrom<&RsaPublicKey> for rsa::PublicKey { type Error = Error; - fn try_from(key: &RsaPublicKey) -> Result { + fn try_from(key: &RsaPublicKey) -> Result { let n = Uint::try_from(&key.n)?; let e = Uint::try_from(&key.e)?; - let ret = rsa::RsaPublicKey::new(n, e).map_err(|_| Error::Crypto)?; + let ret = rsa::PublicKey::new(n, e).map_err(|_| Error::Crypto)?; Ok(ret) } } #[cfg(feature = "rsa")] -impl TryFrom for RsaPublicKey { +impl TryFrom for RsaPublicKey { type Error = Error; - fn try_from(key: rsa::RsaPublicKey) -> Result { + fn try_from(key: rsa::PublicKey) -> Result { RsaPublicKey::try_from(&key) } } #[cfg(feature = "rsa")] -impl TryFrom<&rsa::RsaPublicKey> for RsaPublicKey { +impl TryFrom<&rsa::PublicKey> for RsaPublicKey { type Error = Error; - fn try_from(key: &rsa::RsaPublicKey) -> Result { + fn try_from(key: &rsa::PublicKey) -> Result { RsaPublicKey::new(key.e().into(), key.n().as_ref().into()) } } diff --git a/ssh-key/tests/private_key.rs b/ssh-key/tests/private_key.rs index 30d33570..5f252b97 100644 --- a/ssh-key/tests/private_key.rs +++ b/ssh-key/tests/private_key.rs @@ -568,7 +568,7 @@ fn round_trip_rsa_3072() { _ => unreachable!(), }; - let rsa_private_key = rsa::RsaPrivateKey::try_from(rsa_keypair).unwrap(); + let rsa_private_key = rsa::PrivateKey::try_from(rsa_keypair).unwrap(); let rsa_keypair2 = ssh_key::private::RsaKeypair::try_from(&rsa_private_key).unwrap(); assert_eq!(rsa_keypair, &rsa_keypair2); }