Skip to content

Commit e0a63b4

Browse files
committed
chore(tls): Refactor parsing Identity
1 parent b623dc7 commit e0a63b4

File tree

3 files changed

+14
-20
lines changed

3 files changed

+14
-20
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use tokio_rustls::{
99
};
1010

1111
use super::io::BoxedIo;
12-
use crate::transport::service::tls::{load_identity, TlsError, ALPN_H2};
12+
use crate::transport::service::tls::{TlsError, ALPN_H2};
1313
use crate::transport::tls::{Certificate, Identity};
1414

1515
#[derive(Clone)]
@@ -48,7 +48,7 @@ impl TlsConnector {
4848
let builder = builder.with_root_certificates(roots);
4949
let mut config = match identity {
5050
Some(identity) => {
51-
let (client_cert, client_key) = load_identity(identity)?;
51+
let (client_cert, client_key) = identity.parse()?;
5252
builder.with_client_auth_cert(client_cert, client_key)?
5353
}
5454
None => builder.with_no_client_auth(),

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

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

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

1612
#[derive(Clone)]
1713
pub(crate) struct TlsAcceptor {
@@ -41,7 +37,7 @@ impl TlsAcceptor {
4137
}
4238
};
4339

44-
let (cert, key) = load_identity(identity)?;
40+
let (cert, key) = identity.parse()?;
4541
let mut config = builder.with_single_cert(cert, key)?;
4642

4743
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
@@ -39,16 +39,14 @@ impl Certificate {
3939
}
4040
}
4141

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

0 commit comments

Comments
 (0)