Skip to content

Commit 2efa318

Browse files
committed
chore(tls): Refactor parsing Identity
1 parent 917afee commit 2efa318

File tree

3 files changed

+14
-19
lines changed

3 files changed

+14
-19
lines changed

tonic/src/transport/channel/service/tls.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tokio_rustls::{
1212
};
1313

1414
use super::io::BoxedIo;
15-
use crate::transport::service::tls::{load_identity, TlsError, ALPN_H2};
15+
use crate::transport::service::tls::{TlsError, ALPN_H2};
1616
use crate::transport::tls::{Certificate, Identity};
1717

1818
#[derive(Clone)]
@@ -60,7 +60,7 @@ impl TlsConnector {
6060
let builder = builder.with_root_certificates(roots);
6161
let mut config = match identity {
6262
Some(identity) => {
63-
let (client_cert, client_key) = load_identity(identity)?;
63+
let (client_cert, client_key) = identity.parse()?;
6464
builder.with_client_auth_cert(client_cert, client_key)?
6565
}
6666
None => builder.with_no_client_auth(),

tonic/src/transport/server/service/tls.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ use tokio_rustls::{
77
TlsAcceptor as RustlsAcceptor,
88
};
99

10-
use crate::transport::{
11-
service::tls::{load_identity, ALPN_H2},
12-
Certificate, Identity,
13-
};
10+
use crate::transport::{service::tls::ALPN_H2, Certificate, Identity};
1411

1512
#[derive(Clone)]
1613
pub(crate) struct TlsAcceptor {
@@ -40,7 +37,7 @@ impl TlsAcceptor {
4037
}
4138
};
4239

43-
let (cert, key) = load_identity(identity)?;
40+
let (cert, key) = identity.parse()?;
4441
let mut config = builder.with_single_cert(cert, key)?;
4542

4643
config.alpn_protocols.push(ALPN_H2.into());

tonic/src/transport/service/tls.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,14 @@ impl Certificate {
4343
}
4444
}
4545

46-
pub(crate) fn load_identity(
47-
identity: Identity,
48-
) -> Result<(Vec<CertificateDer<'static>>, PrivateKeyDer<'static>), TlsError> {
49-
let cert = rustls_pemfile::certs(&mut Cursor::new(identity.cert))
50-
.collect::<Result<Vec<_>, _>>()
51-
.map_err(|_| TlsError::CertificateParseError)?;
52-
53-
let Ok(Some(key)) = rustls_pemfile::private_key(&mut Cursor::new(identity.key)) else {
54-
return Err(TlsError::PrivateKeyParseError);
55-
};
56-
57-
Ok((cert, key))
46+
impl Identity {
47+
pub(crate) fn parse(
48+
&self,
49+
) -> Result<(Vec<CertificateDer<'static>>, PrivateKeyDer<'static>), TlsError> {
50+
let cert = self.cert.parse()?;
51+
let Ok(Some(key)) = rustls_pemfile::private_key(&mut Cursor::new(&self.key)) else {
52+
return Err(TlsError::PrivateKeyParseError);
53+
};
54+
Ok((cert, key))
55+
}
5856
}

0 commit comments

Comments
 (0)