Skip to content

Commit 0133734

Browse files
committed
Test with PKCS#8 keys
1 parent f0201c9 commit 0133734

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,6 @@ openssl-src = { version = "300.0.3", optional = true }
3636

3737
[dev-dependencies]
3838
pem = "1.0"
39+
rsa = { version = "0.5.0", features = ["alloc", "pem", "std"] }
3940
tempfile = "3.0"
4041
test-cert-gen = "0.7"

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ mod imp;
123123

124124
#[cfg(test)]
125125
mod test;
126+
#[cfg(test)]
127+
extern crate rsa;
126128

127129
/// A typedef of the result-type returned by many methods.
128130
pub type Result<T> = result::Result<T, Error>;

src/test.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ fn import_same_identity_multiple_times() {
351351
));
352352

353353
let cert = keys.server.cert_and_key.cert.to_pem().into_bytes();
354-
let key = key_to_pem(keys.server.cert_and_key.key.get_der()).into_bytes();
354+
let key = rsa_to_pkcs8(&key_to_pem(keys.server.cert_and_key.key.get_der())).into_bytes();
355355
let _ = p!(Identity::from_pkcs8(&cert, &key));
356356
let _ = p!(Identity::from_pkcs8(&cert, &key));
357357
}
@@ -429,7 +429,7 @@ fn alpn_google_none() {
429429
fn server_pkcs8() {
430430
let keys = test_cert_gen::keys();
431431
let cert = keys.server.cert_and_key.cert.to_pem().into_bytes();
432-
let key = key_to_pem(keys.server.cert_and_key.key.get_der()).into_bytes();
432+
let key = rsa_to_pkcs8(&key_to_pem(keys.server.cert_and_key.key.get_der())).into_bytes();
433433

434434
let ident = Identity::from_pkcs8(&cert, &key).unwrap();
435435
let ident2 = ident.clone();
@@ -476,7 +476,7 @@ fn server_pkcs8() {
476476
fn two_servers() {
477477
let keys1 = test_cert_gen::gen_keys();
478478
let cert = keys1.server.cert_and_key.cert.to_pem().into_bytes();
479-
let key = key_to_pem(keys1.server.cert_and_key.key.get_der()).into_bytes();
479+
let key = rsa_to_pkcs8(&key_to_pem(keys1.server.cert_and_key.key.get_der())).into_bytes();
480480
let identity = p!(Identity::from_pkcs8(&cert, &key));
481481
let builder = TlsAcceptor::builder(identity);
482482
let builder = p!(builder.build());
@@ -497,7 +497,7 @@ fn two_servers() {
497497

498498
let keys2 = test_cert_gen::gen_keys();
499499
let cert = keys2.server.cert_and_key.cert.to_pem().into_bytes();
500-
let key = key_to_pem(keys2.server.cert_and_key.key.get_der()).into_bytes();
500+
let key = rsa_to_pkcs8(&key_to_pem(keys2.server.cert_and_key.key.get_der())).into_bytes();
501501
let identity = p!(Identity::from_pkcs8(&cert, &key));
502502
let builder = TlsAcceptor::builder(identity);
503503
let builder = p!(builder.build());
@@ -552,3 +552,11 @@ fn key_to_pem(der: &[u8]) -> String {
552552
contents: der.to_owned(),
553553
})
554554
}
555+
556+
fn rsa_to_pkcs8(pem: &str) -> String {
557+
use rsa::{pkcs1::FromRsaPrivateKey, pkcs8::ToPrivateKey, RsaPrivateKey};
558+
let pkey = RsaPrivateKey::from_pkcs1_pem(pem).unwrap();
559+
let pkcs8_pem = pkey.to_pkcs8_pem().unwrap();
560+
let pkcs8_pem: &str = pkcs8_pem.as_ref();
561+
pkcs8_pem.to_owned()
562+
}

0 commit comments

Comments
 (0)