@@ -351,7 +351,7 @@ fn import_same_identity_multiple_times() {
351
351
) ) ;
352
352
353
353
let cert = keys. server . cert_and_key . cert . to_pem ( ) . into_bytes ( ) ;
354
- let key = rsa_to_pkcs8 ( & key_to_pem ( keys. server . cert_and_key . key . get_der ( ) ) ) . into_bytes ( ) ;
354
+ let key = rsa_to_pkcs8 ( & keys. server . cert_and_key . key . to_pem_incorrect ( ) ) . into_bytes ( ) ;
355
355
let _ = p ! ( Identity :: from_pkcs8( & cert, & key) ) ;
356
356
let _ = p ! ( Identity :: from_pkcs8( & cert, & key) ) ;
357
357
}
@@ -360,7 +360,7 @@ fn import_same_identity_multiple_times() {
360
360
fn from_pkcs8_rejects_rsa_key ( ) {
361
361
let keys = test_cert_gen:: keys ( ) ;
362
362
let cert = keys. server . cert_and_key . cert . to_pem ( ) . into_bytes ( ) ;
363
- let rsa_key = key_to_pem ( keys. server . cert_and_key . key . get_der ( ) ) ;
363
+ let rsa_key = keys. server . cert_and_key . key . to_pem_incorrect ( ) ;
364
364
assert ! ( Identity :: from_pkcs8( & cert, rsa_key. as_bytes( ) ) . is_err( ) ) ;
365
365
let pkcs8_key = rsa_to_pkcs8 ( & rsa_key) ;
366
366
assert ! ( Identity :: from_pkcs8( & cert, pkcs8_key. as_bytes( ) ) . is_ok( ) ) ;
@@ -439,7 +439,7 @@ fn alpn_google_none() {
439
439
fn server_pkcs8 ( ) {
440
440
let keys = test_cert_gen:: keys ( ) ;
441
441
let cert = keys. server . cert_and_key . cert . to_pem ( ) . into_bytes ( ) ;
442
- let key = rsa_to_pkcs8 ( & key_to_pem ( keys. server . cert_and_key . key . get_der ( ) ) ) . into_bytes ( ) ;
442
+ let key = rsa_to_pkcs8 ( & keys. server . cert_and_key . key . to_pem_incorrect ( ) ) . into_bytes ( ) ;
443
443
444
444
let ident = Identity :: from_pkcs8 ( & cert, & key) . unwrap ( ) ;
445
445
let ident2 = ident. clone ( ) ;
@@ -486,7 +486,7 @@ fn server_pkcs8() {
486
486
fn two_servers ( ) {
487
487
let keys1 = test_cert_gen:: gen_keys ( ) ;
488
488
let cert = keys1. server . cert_and_key . cert . to_pem ( ) . into_bytes ( ) ;
489
- let key = rsa_to_pkcs8 ( & key_to_pem ( keys1. server . cert_and_key . key . get_der ( ) ) ) . into_bytes ( ) ;
489
+ let key = rsa_to_pkcs8 ( & keys1. server . cert_and_key . key . to_pem_incorrect ( ) ) . into_bytes ( ) ;
490
490
let identity = p ! ( Identity :: from_pkcs8( & cert, & key) ) ;
491
491
let builder = TlsAcceptor :: builder ( identity) ;
492
492
let builder = p ! ( builder. build( ) ) ;
@@ -507,7 +507,7 @@ fn two_servers() {
507
507
508
508
let keys2 = test_cert_gen:: gen_keys ( ) ;
509
509
let cert = keys2. server . cert_and_key . cert . to_pem ( ) . into_bytes ( ) ;
510
- let key = rsa_to_pkcs8 ( & key_to_pem ( keys2. server . cert_and_key . key . get_der ( ) ) ) . into_bytes ( ) ;
510
+ let key = rsa_to_pkcs8 ( & keys2. server . cert_and_key . key . to_pem_incorrect ( ) ) . into_bytes ( ) ;
511
511
let identity = p ! ( Identity :: from_pkcs8( & cert, & key) ) ;
512
512
let builder = TlsAcceptor :: builder ( identity) ;
513
513
let builder = p ! ( builder. build( ) ) ;
@@ -556,17 +556,18 @@ fn two_servers() {
556
556
p ! ( j2. join( ) ) ;
557
557
}
558
558
559
- fn key_to_pem ( der : & [ u8 ] ) -> String {
560
- pem:: encode ( & pem:: Pem {
561
- tag : "RSA PRIVATE KEY" . to_owned ( ) ,
562
- contents : der. to_owned ( ) ,
563
- } )
564
- }
565
-
566
559
fn rsa_to_pkcs8 ( pem : & str ) -> String {
567
- use rsa:: { pkcs1:: FromRsaPrivateKey , pkcs8:: ToPrivateKey , RsaPrivateKey } ;
568
- let pkey = RsaPrivateKey :: from_pkcs1_pem ( pem) . unwrap ( ) ;
569
- let pkcs8_pem = pkey. to_pkcs8_pem ( ) . unwrap ( ) ;
570
- let pkcs8_pem: & str = pkcs8_pem. as_ref ( ) ;
571
- pkcs8_pem. to_owned ( )
560
+ let mut child = Command :: new ( "openssl" )
561
+ . arg ( "pkcs8" )
562
+ . arg ( "-topk8" )
563
+ . arg ( "-nocrypt" )
564
+ . stdin ( Stdio :: piped ( ) )
565
+ . stdout ( Stdio :: piped ( ) )
566
+ . spawn ( )
567
+ . unwrap ( ) ;
568
+ {
569
+ let child_stdin = child. stdin . as_mut ( ) . unwrap ( ) ;
570
+ child_stdin. write_all ( pem. as_bytes ( ) ) . unwrap ( ) ;
571
+ }
572
+ String :: from_utf8 ( child. wait_with_output ( ) . unwrap ( ) . stdout ) . unwrap ( )
572
573
}
0 commit comments