mirror of
https://boringssl.googlesource.com/boringssl
synced 2026-07-21 14:43:51 +00:00
rust: bssl-tls: Simplify the tests
Let us move some common configurations out and share it between other tests. Signed-off-by: Xiangfei Ding <xfding@google.com> Change-Id: I2fb65a0f0b025c620708561f068b84ff6a6a6964 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/98796 Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
committed by
boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com
parent
1f61423350
commit
b7e3dca32f
+34
-22
@@ -31,10 +31,7 @@ use crate::{
|
||||
TlsConnection, //
|
||||
},
|
||||
context::TlsContextBuilder,
|
||||
credentials::{
|
||||
Certificate,
|
||||
TlsCredentialBuilder, //
|
||||
},
|
||||
credentials::{Certificate, TlsCredential, TlsCredentialBuilder},
|
||||
errors::Error,
|
||||
io::{
|
||||
AbstractReader,
|
||||
@@ -49,7 +46,10 @@ use bssl_x509::{
|
||||
certificates::X509Certificate,
|
||||
keys::PrivateKey,
|
||||
params::Trust,
|
||||
store::X509StoreBuilder, //
|
||||
store::{
|
||||
X509Store,
|
||||
X509StoreBuilder, //
|
||||
},
|
||||
};
|
||||
use futures::future::join;
|
||||
|
||||
@@ -70,28 +70,13 @@ mod transport;
|
||||
|
||||
/// Dumb server-client pair that does no certificate verification.
|
||||
fn dumb_server_client() -> Result<(TlsConnection<Server>, TlsConnection<Client>), Error> {
|
||||
let ca = Certificate::parse_one_from_pem(CA, None)?;
|
||||
let server_cert = Certificate::parse_one_from_pem(RSA_SERVER_CERT, None)?;
|
||||
let server_key = PrivateKey::from_pem(RSA_SERVER_KEY, || unreachable!())?;
|
||||
|
||||
let mut server_ctx_builder = TlsContextBuilder::new_tls();
|
||||
let server_cred = {
|
||||
let mut builder = TlsCredentialBuilder::new();
|
||||
builder
|
||||
.with_certificate_chain(&[server_cert, ca])?
|
||||
.with_private_key(server_key)?;
|
||||
builder.build()
|
||||
};
|
||||
server_ctx_builder.with_credential(server_cred.unwrap())?;
|
||||
server_ctx_builder.with_credential(load_x509_credential())?;
|
||||
let server_ctx = server_ctx_builder.build();
|
||||
let server_conn = server_ctx.new_server_connection().build();
|
||||
|
||||
let mut client_ctx_builder = TlsContextBuilder::new_tls();
|
||||
let mut cert_store = X509StoreBuilder::new();
|
||||
cert_store
|
||||
.set_trust(Trust::SslServer)?
|
||||
.add_cert(X509Certificate::parse_one_from_pem(CA)?)?;
|
||||
let cert_store = cert_store.build();
|
||||
let cert_store = load_trust_store(Trust::SslServer);
|
||||
client_ctx_builder.with_certificate_store(&cert_store);
|
||||
let client_ctx = client_ctx_builder.build();
|
||||
let client_conn = client_ctx.new_client_connection().build();
|
||||
@@ -376,6 +361,33 @@ pub(crate) fn create_mock_datagram() -> (
|
||||
create_mock_socket::<MockDatagram>()
|
||||
}
|
||||
|
||||
/// Builds a [`TlsCredential`] from the test RSA certificate chain (server cert + CA)
|
||||
/// and private key.
|
||||
pub(crate) fn load_x509_credential() -> TlsCredential {
|
||||
let ca = Certificate::parse_one_from_pem(CA, None).unwrap();
|
||||
let server_cert = Certificate::parse_one_from_pem(RSA_SERVER_CERT, None).unwrap();
|
||||
let server_key = PrivateKey::from_pem(RSA_SERVER_KEY, || unreachable!()).unwrap();
|
||||
|
||||
let mut builder = TlsCredentialBuilder::new();
|
||||
builder
|
||||
.with_certificate_chain(&[server_cert, ca])
|
||||
.unwrap()
|
||||
.with_private_key(server_key)
|
||||
.unwrap();
|
||||
builder.build().unwrap()
|
||||
}
|
||||
|
||||
/// Builds an X509 trust store with the test CA certificate.
|
||||
pub(crate) fn load_trust_store(trust: Trust) -> X509Store {
|
||||
let mut cert_store = X509StoreBuilder::new();
|
||||
cert_store
|
||||
.set_trust(trust)
|
||||
.unwrap()
|
||||
.add_cert(X509Certificate::parse_one_from_pem(CA).unwrap())
|
||||
.unwrap();
|
||||
cert_store.build()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_async() -> Result<(), Error> {
|
||||
let (mut server_conn, mut client_conn) = dumb_server_client()?;
|
||||
|
||||
Reference in New Issue
Block a user