@@ -12,7 +12,7 @@ use der_parser::oid;
12
12
use der_parser:: oid:: Oid ;
13
13
use rcgen:: KeyPair ;
14
14
use ring:: rand:: SystemRandom ;
15
- use ring:: signature:: { EcdsaKeyPair , Ed25519KeyPair , RsaKeyPair } ;
15
+ use ring:: signature:: { EcdsaKeyPair , Ed25519KeyPair } ;
16
16
17
17
use crate :: curve:: named_curve:: * ;
18
18
use crate :: error:: * ;
@@ -139,7 +139,7 @@ pub(crate) fn value_key_message(
139
139
pub enum CryptoPrivateKeyKind {
140
140
Ed25519 ( Ed25519KeyPair ) ,
141
141
Ecdsa256 ( EcdsaKeyPair ) ,
142
- Rsa256 ( RsaKeyPair ) ,
142
+ Rsa256 ( ring :: rsa :: KeyPair ) ,
143
143
}
144
144
145
145
/// Private key.
@@ -187,14 +187,15 @@ impl Clone for CryptoPrivateKey {
187
187
EcdsaKeyPair :: from_pkcs8 (
188
188
& ring:: signature:: ECDSA_P256_SHA256_ASN1_SIGNING ,
189
189
& self . serialized_der ,
190
+ & SystemRandom :: new ( ) ,
190
191
)
191
192
. unwrap ( ) ,
192
193
) ,
193
194
serialized_der : self . serialized_der . clone ( ) ,
194
195
} ,
195
196
CryptoPrivateKeyKind :: Rsa256 ( _) => CryptoPrivateKey {
196
197
kind : CryptoPrivateKeyKind :: Rsa256 (
197
- RsaKeyPair :: from_pkcs8 ( & self . serialized_der ) . unwrap ( ) ,
198
+ ring :: rsa :: KeyPair :: from_pkcs8 ( & self . serialized_der ) . unwrap ( ) ,
198
199
) ,
199
200
serialized_der : self . serialized_der . clone ( ) ,
200
201
} ,
@@ -206,37 +207,7 @@ impl TryFrom<&KeyPair> for CryptoPrivateKey {
206
207
type Error = Error ;
207
208
208
209
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)
240
211
}
241
212
}
242
213
@@ -257,6 +228,7 @@ impl CryptoPrivateKey {
257
228
EcdsaKeyPair :: from_pkcs8 (
258
229
& ring:: signature:: ECDSA_P256_SHA256_ASN1_SIGNING ,
259
230
& serialized_der,
231
+ & SystemRandom :: new ( ) ,
260
232
)
261
233
. map_err ( |e| Error :: Other ( e. to_string ( ) ) ) ?,
262
234
) ,
@@ -265,7 +237,7 @@ impl CryptoPrivateKey {
265
237
} else if key_pair. is_compatible ( & rcgen:: PKCS_RSA_SHA256 ) {
266
238
Ok ( CryptoPrivateKey {
267
239
kind : CryptoPrivateKeyKind :: Rsa256 (
268
- RsaKeyPair :: from_pkcs8 ( & serialized_der)
240
+ ring :: rsa :: KeyPair :: from_pkcs8 ( & serialized_der)
269
241
. map_err ( |e| Error :: Other ( e. to_string ( ) ) ) ?,
270
242
) ,
271
243
serialized_der,
@@ -300,7 +272,7 @@ pub(crate) fn generate_key_signature(
300
272
}
301
273
CryptoPrivateKeyKind :: Rsa256 ( kp) => {
302
274
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 ( ) ] ;
304
276
kp. sign (
305
277
& ring:: signature:: RSA_PKCS1_SHA256 ,
306
278
& system_random,
@@ -422,7 +394,7 @@ pub(crate) fn generate_certificate_verify(
422
394
}
423
395
CryptoPrivateKeyKind :: Rsa256 ( kp) => {
424
396
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 ( ) ] ;
426
398
kp. sign (
427
399
& ring:: signature:: RSA_PKCS1_SHA256 ,
428
400
& system_random,
@@ -537,7 +509,7 @@ mod test {
537
509
538
510
#[ cfg( feature = "pem" ) ]
539
511
#[ test]
540
- fn test_certificate_serialize_pem_and_from_pem ( ) -> Result < ( ) > {
512
+ fn test_certificate_serialize_pem_and_from_pem ( ) -> crate :: error :: Result < ( ) > {
541
513
let cert = Certificate :: generate_self_signed ( vec ! [ "webrtc.rs" . to_owned( ) ] ) ?;
542
514
543
515
let pem = cert. serialize_pem ( ) ;
0 commit comments