Skip to content

Commit 982829b

Browse files
Upgrade to ring 0.17 (#335)
* Upgrade to latest `ring` version * Fix deprecation warnings * Temporarily pin `ring` version * Fix warning * Remove duplicated code * Bump ring to 0.17 * Fix formatting
1 parent ad4ceb5 commit 982829b

File tree

7 files changed

+21
-45
lines changed

7 files changed

+21
-45
lines changed

dtls/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ x25519-dalek = { version = "2", features = ["static_secrets"] }
3232
x509-parser = "0.15"
3333
der-parser = "8.1"
3434
rcgen = "0.11"
35-
ring = "0.16.19"
35+
ring = "0.17"
3636
rustls = { version = "0.21", features = ["dangerous_configuration"]}
3737
bincode = "1"
3838
serde = { version = "1", features = ["derive"] }

dtls/src/crypto/crypto_test.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ fn test_generate_key_signature() -> Result<()> {
8989
NamedCurve::X25519,
9090
&CryptoPrivateKey {
9191
kind: CryptoPrivateKeyKind::Rsa256(
92-
RsaKeyPair::from_der(&pem.contents).map_err(|e| Error::Other(e.to_string()))?,
92+
ring::rsa::KeyPair::from_der(&pem.contents)
93+
.map_err(|e| Error::Other(e.to_string()))?,
9394
),
9495
serialized_der: pem.contents.clone(),
9596
}, //hashAlgorithmSHA256,

dtls/src/crypto/mod.rs

Lines changed: 10 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use der_parser::oid;
1212
use der_parser::oid::Oid;
1313
use rcgen::KeyPair;
1414
use ring::rand::SystemRandom;
15-
use ring::signature::{EcdsaKeyPair, Ed25519KeyPair, RsaKeyPair};
15+
use ring::signature::{EcdsaKeyPair, Ed25519KeyPair};
1616

1717
use crate::curve::named_curve::*;
1818
use crate::error::*;
@@ -139,7 +139,7 @@ pub(crate) fn value_key_message(
139139
pub enum CryptoPrivateKeyKind {
140140
Ed25519(Ed25519KeyPair),
141141
Ecdsa256(EcdsaKeyPair),
142-
Rsa256(RsaKeyPair),
142+
Rsa256(ring::rsa::KeyPair),
143143
}
144144

145145
/// Private key.
@@ -187,14 +187,15 @@ impl Clone for CryptoPrivateKey {
187187
EcdsaKeyPair::from_pkcs8(
188188
&ring::signature::ECDSA_P256_SHA256_ASN1_SIGNING,
189189
&self.serialized_der,
190+
&SystemRandom::new(),
190191
)
191192
.unwrap(),
192193
),
193194
serialized_der: self.serialized_der.clone(),
194195
},
195196
CryptoPrivateKeyKind::Rsa256(_) => CryptoPrivateKey {
196197
kind: CryptoPrivateKeyKind::Rsa256(
197-
RsaKeyPair::from_pkcs8(&self.serialized_der).unwrap(),
198+
ring::rsa::KeyPair::from_pkcs8(&self.serialized_der).unwrap(),
198199
),
199200
serialized_der: self.serialized_der.clone(),
200201
},
@@ -206,37 +207,7 @@ impl TryFrom<&KeyPair> for CryptoPrivateKey {
206207
type Error = Error;
207208

208209
fn try_from(key_pair: &KeyPair) -> Result<Self> {
209-
let serialized_der = key_pair.serialize_der();
210-
if key_pair.is_compatible(&rcgen::PKCS_ED25519) {
211-
Ok(CryptoPrivateKey {
212-
kind: CryptoPrivateKeyKind::Ed25519(
213-
Ed25519KeyPair::from_pkcs8(&serialized_der)
214-
.map_err(|e| Error::Other(e.to_string()))?,
215-
),
216-
serialized_der,
217-
})
218-
} else if key_pair.is_compatible(&rcgen::PKCS_ECDSA_P256_SHA256) {
219-
Ok(CryptoPrivateKey {
220-
kind: CryptoPrivateKeyKind::Ecdsa256(
221-
EcdsaKeyPair::from_pkcs8(
222-
&ring::signature::ECDSA_P256_SHA256_ASN1_SIGNING,
223-
&serialized_der,
224-
)
225-
.map_err(|e| Error::Other(e.to_string()))?,
226-
),
227-
serialized_der,
228-
})
229-
} else if key_pair.is_compatible(&rcgen::PKCS_RSA_SHA256) {
230-
Ok(CryptoPrivateKey {
231-
kind: CryptoPrivateKeyKind::Rsa256(
232-
RsaKeyPair::from_pkcs8(&serialized_der)
233-
.map_err(|e| Error::Other(e.to_string()))?,
234-
),
235-
serialized_der,
236-
})
237-
} else {
238-
Err(Error::Other("Unsupported key_pair".to_owned()))
239-
}
210+
Self::from_key_pair(key_pair)
240211
}
241212
}
242213

@@ -257,6 +228,7 @@ impl CryptoPrivateKey {
257228
EcdsaKeyPair::from_pkcs8(
258229
&ring::signature::ECDSA_P256_SHA256_ASN1_SIGNING,
259230
&serialized_der,
231+
&SystemRandom::new(),
260232
)
261233
.map_err(|e| Error::Other(e.to_string()))?,
262234
),
@@ -265,7 +237,7 @@ impl CryptoPrivateKey {
265237
} else if key_pair.is_compatible(&rcgen::PKCS_RSA_SHA256) {
266238
Ok(CryptoPrivateKey {
267239
kind: CryptoPrivateKeyKind::Rsa256(
268-
RsaKeyPair::from_pkcs8(&serialized_der)
240+
ring::rsa::KeyPair::from_pkcs8(&serialized_der)
269241
.map_err(|e| Error::Other(e.to_string()))?,
270242
),
271243
serialized_der,
@@ -300,7 +272,7 @@ pub(crate) fn generate_key_signature(
300272
}
301273
CryptoPrivateKeyKind::Rsa256(kp) => {
302274
let system_random = SystemRandom::new();
303-
let mut signature = vec![0; kp.public_modulus_len()];
275+
let mut signature = vec![0; kp.public().modulus_len()];
304276
kp.sign(
305277
&ring::signature::RSA_PKCS1_SHA256,
306278
&system_random,
@@ -422,7 +394,7 @@ pub(crate) fn generate_certificate_verify(
422394
}
423395
CryptoPrivateKeyKind::Rsa256(kp) => {
424396
let system_random = SystemRandom::new();
425-
let mut signature = vec![0; kp.public_modulus_len()];
397+
let mut signature = vec![0; kp.public().modulus_len()];
426398
kp.sign(
427399
&ring::signature::RSA_PKCS1_SHA256,
428400
&system_random,
@@ -537,7 +509,7 @@ mod test {
537509

538510
#[cfg(feature = "pem")]
539511
#[test]
540-
fn test_certificate_serialize_pem_and_from_pem() -> Result<()> {
512+
fn test_certificate_serialize_pem_and_from_pem() -> crate::error::Result<()> {
541513
let cert = Certificate::generate_self_signed(vec!["webrtc.rs".to_owned()])?;
542514

543515
let pem = cert.serialize_pem();

stun/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ rand = "0.8"
2323
base64 = "0.21"
2424
subtle = "2.4"
2525
crc = "3"
26-
ring = "0.16"
26+
ring = "0.17"
2727
md-5 = "0.10"
2828
thiserror = "1"
2929

turn/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ async-trait = "0.1"
1919
log = "0.4"
2020
base64 = "0.21"
2121
rand = "0.8"
22-
ring = "0.16"
22+
ring = "0.17"
2323
md-5 = "0.10"
2424
thiserror = "1"
2525

webrtc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ smol_str = { version = "0.2", features = ["serde"] }
4141
url = "2"
4242
rustls = { version = "0.21", features = ["dangerous_configuration"]}
4343
rcgen = { version = "0.11", features = ["pem", "x509-parser"]}
44-
ring = "0.16"
44+
ring = "0.17"
4545
sha2 = "0.10"
4646
lazy_static = "1.4"
4747
hex = "0.4"

webrtc/src/peer_connection/certificate.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH};
33

44
use dtls::crypto::{CryptoPrivateKey, CryptoPrivateKeyKind};
55
use rcgen::{CertificateParams, KeyPair};
6-
use ring::signature::{EcdsaKeyPair, Ed25519KeyPair, RsaKeyPair};
6+
use ring::rand::SystemRandom;
7+
use ring::rsa;
8+
use ring::signature::{EcdsaKeyPair, Ed25519KeyPair};
79
use sha2::{Digest, Sha256};
810

911
use crate::dtls_transport::dtls_fingerprint::RTCDtlsFingerprint;
@@ -58,6 +60,7 @@ impl RTCCertificate {
5860
EcdsaKeyPair::from_pkcs8(
5961
&ring::signature::ECDSA_P256_SHA256_ASN1_SIGNING,
6062
&serialized_der,
63+
&SystemRandom::new(),
6164
)
6265
.map_err(|e| Error::new(e.to_string()))?,
6366
),
@@ -66,7 +69,7 @@ impl RTCCertificate {
6669
} else if key_pair.is_compatible(&rcgen::PKCS_RSA_SHA256) {
6770
CryptoPrivateKey {
6871
kind: CryptoPrivateKeyKind::Rsa256(
69-
RsaKeyPair::from_pkcs8(&serialized_der)
72+
rsa::KeyPair::from_pkcs8(&serialized_der)
7073
.map_err(|e| Error::new(e.to_string()))?,
7174
),
7275
serialized_der,

0 commit comments

Comments
 (0)