mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-07 20:39:04 +03:00
Upgrade rsa
to v0.9.6 (#15055)
This PR upgrades the `rsa` crate to v0.9.6. The version we were using was rather old, and for something security-sensitive we should be using a recent version. No behavioral changes have been made, just updates to account for changes in the crate's API. Release Notes: - N/A
This commit is contained in:
parent
1307a80e07
commit
edf7f6defe
84
Cargo.lock
generated
84
Cargo.lock
generated
@ -6892,23 +6892,6 @@ dependencies = [
|
|||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-bigint-dig"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f9bc3e36fd683e004fd59c64a425e0e991616f5a8b617c3b9a933a93c168facc"
|
|
||||||
dependencies = [
|
|
||||||
"byteorder",
|
|
||||||
"lazy_static",
|
|
||||||
"libm",
|
|
||||||
"num-integer",
|
|
||||||
"num-iter",
|
|
||||||
"num-traits",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"smallvec",
|
|
||||||
"zeroize",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-bigint-dig"
|
name = "num-bigint-dig"
|
||||||
version = "0.8.4"
|
version = "0.8.4"
|
||||||
@ -7154,7 +7137,7 @@ dependencies = [
|
|||||||
"hkdf",
|
"hkdf",
|
||||||
"hmac 0.12.1",
|
"hmac 0.12.1",
|
||||||
"num",
|
"num",
|
||||||
"num-bigint-dig 0.8.4",
|
"num-bigint-dig",
|
||||||
"pbkdf2 0.12.2",
|
"pbkdf2 0.12.2",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"serde",
|
"serde",
|
||||||
@ -7535,17 +7518,6 @@ version = "0.1.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pem"
|
|
||||||
version = "0.8.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb"
|
|
||||||
dependencies = [
|
|
||||||
"base64 0.13.1",
|
|
||||||
"once_cell",
|
|
||||||
"regex",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pem-rfc7468"
|
name = "pem-rfc7468"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
@ -7715,7 +7687,7 @@ checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"der 0.7.8",
|
"der 0.7.8",
|
||||||
"pkcs8 0.10.2",
|
"pkcs8 0.10.2",
|
||||||
"spki 0.7.2",
|
"spki 0.7.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -7735,7 +7707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
|
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"der 0.7.8",
|
"der 0.7.8",
|
||||||
"spki 0.7.2",
|
"spki 0.7.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -8911,7 +8883,7 @@ dependencies = [
|
|||||||
"parking_lot",
|
"parking_lot",
|
||||||
"proto",
|
"proto",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"rsa 0.4.0",
|
"rsa",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"strum",
|
"strum",
|
||||||
@ -8922,42 +8894,20 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rsa"
|
name = "rsa"
|
||||||
version = "0.4.0"
|
version = "0.9.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "68ef841a26fc5d040ced0417c6c6a64ee851f42489df11cdf0218e545b6f8d28"
|
checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
|
||||||
"digest 0.9.0",
|
|
||||||
"lazy_static",
|
|
||||||
"num-bigint-dig 0.7.1",
|
|
||||||
"num-integer",
|
|
||||||
"num-iter",
|
|
||||||
"num-traits",
|
|
||||||
"pem",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"simple_asn1",
|
|
||||||
"subtle",
|
|
||||||
"zeroize",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rsa"
|
|
||||||
version = "0.9.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8"
|
|
||||||
dependencies = [
|
|
||||||
"byteorder",
|
|
||||||
"const-oid",
|
"const-oid",
|
||||||
"digest 0.10.7",
|
"digest 0.10.7",
|
||||||
"num-bigint-dig 0.8.4",
|
"num-bigint-dig",
|
||||||
"num-integer",
|
"num-integer",
|
||||||
"num-iter",
|
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"pkcs1",
|
"pkcs1",
|
||||||
"pkcs8 0.10.2",
|
"pkcs8 0.10.2",
|
||||||
"rand_core 0.6.4",
|
"rand_core 0.6.4",
|
||||||
"signature 2.1.0",
|
"signature 2.1.0",
|
||||||
"spki 0.7.2",
|
"spki 0.7.3",
|
||||||
"subtle",
|
"subtle",
|
||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
@ -9798,18 +9748,6 @@ version = "1.3.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1ad1d488a557b235fc46dae55512ffbfc429d2482b08b4d9435ab07384ca8aec"
|
checksum = "1ad1d488a557b235fc46dae55512ffbfc429d2482b08b4d9435ab07384ca8aec"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "simple_asn1"
|
|
||||||
version = "0.5.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8eb4ea60fb301dc81dfc113df680571045d375ab7345d171c5dc7d7e13107a80"
|
|
||||||
dependencies = [
|
|
||||||
"chrono",
|
|
||||||
"num-bigint",
|
|
||||||
"num-traits",
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "simplecss"
|
name = "simplecss"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
@ -9999,9 +9937,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "spki"
|
name = "spki"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
|
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64ct",
|
"base64ct",
|
||||||
"der 0.7.8",
|
"der 0.7.8",
|
||||||
@ -10183,7 +10121,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"rsa 0.9.2",
|
"rsa",
|
||||||
"rust_decimal",
|
"rust_decimal",
|
||||||
"serde",
|
"serde",
|
||||||
"sha1",
|
"sha1",
|
||||||
|
@ -360,6 +360,7 @@ rand = "0.8.5"
|
|||||||
refineable = { path = "./crates/refineable" }
|
refineable = { path = "./crates/refineable" }
|
||||||
regex = "1.5"
|
regex = "1.5"
|
||||||
repair_json = "0.1.0"
|
repair_json = "0.1.0"
|
||||||
|
rsa = "0.9.6"
|
||||||
runtimelib = { version = "0.12", default-features = false, features = [
|
runtimelib = { version = "0.12", default-features = false, features = [
|
||||||
"async-dispatcher-runtime",
|
"async-dispatcher-runtime",
|
||||||
] }
|
] }
|
||||||
|
@ -27,7 +27,7 @@ gpui = { workspace = true, optional = true }
|
|||||||
parking_lot.workspace = true
|
parking_lot.workspace = true
|
||||||
proto.workspace = true
|
proto.workspace = true
|
||||||
rand.workspace = true
|
rand.workspace = true
|
||||||
rsa = "0.4"
|
rsa.workspace = true
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
strum.workspace = true
|
strum.workspace = true
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use rand::{thread_rng, Rng as _};
|
use rand::{thread_rng, Rng as _};
|
||||||
use rsa::{PublicKey as _, PublicKeyEncoding, RSAPrivateKey, RSAPublicKey};
|
use rsa::pkcs1::{DecodeRsaPublicKey, EncodeRsaPublicKey};
|
||||||
|
use rsa::{Pkcs1v15Encrypt, RsaPrivateKey, RsaPublicKey};
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
pub struct PublicKey(RSAPublicKey);
|
pub struct PublicKey(RsaPublicKey);
|
||||||
|
|
||||||
pub struct PrivateKey(RSAPrivateKey);
|
pub struct PrivateKey(RsaPrivateKey);
|
||||||
|
|
||||||
/// Generate a public and private key for asymmetric encryption.
|
/// Generate a public and private key for asymmetric encryption.
|
||||||
pub fn keypair() -> Result<(PublicKey, PrivateKey)> {
|
pub fn keypair() -> Result<(PublicKey, PrivateKey)> {
|
||||||
let mut rng = thread_rng();
|
let mut rng = thread_rng();
|
||||||
let bits = 1024;
|
let bits = 1024;
|
||||||
let private_key = RSAPrivateKey::new(&mut rng, bits)?;
|
let private_key = RsaPrivateKey::new(&mut rng, bits)?;
|
||||||
let public_key = RSAPublicKey::from(&private_key);
|
let public_key = RsaPublicKey::from(&private_key);
|
||||||
Ok((PublicKey(public_key), PrivateKey(private_key)))
|
Ok((PublicKey(public_key), PrivateKey(private_key)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +59,10 @@ impl PrivateKey {
|
|||||||
impl TryFrom<PublicKey> for String {
|
impl TryFrom<PublicKey> for String {
|
||||||
type Error = anyhow::Error;
|
type Error = anyhow::Error;
|
||||||
fn try_from(key: PublicKey) -> Result<Self> {
|
fn try_from(key: PublicKey) -> Result<Self> {
|
||||||
let bytes = key.0.to_pkcs1().context("failed to serialize public key")?;
|
let bytes = key
|
||||||
|
.0
|
||||||
|
.to_pkcs1_der()
|
||||||
|
.context("failed to serialize public key")?;
|
||||||
let string = base64::encode_config(&bytes, base64::URL_SAFE);
|
let string = base64::encode_config(&bytes, base64::URL_SAFE);
|
||||||
Ok(string)
|
Ok(string)
|
||||||
}
|
}
|
||||||
@ -69,12 +73,12 @@ impl TryFrom<String> for PublicKey {
|
|||||||
fn try_from(value: String) -> Result<Self> {
|
fn try_from(value: String) -> Result<Self> {
|
||||||
let bytes = base64::decode_config(&value, base64::URL_SAFE)
|
let bytes = base64::decode_config(&value, base64::URL_SAFE)
|
||||||
.context("failed to base64-decode public key string")?;
|
.context("failed to base64-decode public key string")?;
|
||||||
let key = Self(RSAPublicKey::from_pkcs1(&bytes).context("failed to parse public key")?);
|
let key = Self(RsaPublicKey::from_pkcs1_der(&bytes).context("failed to parse public key")?);
|
||||||
Ok(key)
|
Ok(key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const PADDING_SCHEME: rsa::PaddingScheme = rsa::PaddingScheme::PKCS1v15Encrypt;
|
const PADDING_SCHEME: Pkcs1v15Encrypt = Pkcs1v15Encrypt;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
Loading…
Reference in New Issue
Block a user