File tree Expand file tree Collapse file tree 4 files changed +37
-7
lines changed Expand file tree Collapse file tree 4 files changed +37
-7
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ use crate::metadata::{MetadataMap, MetadataValue};
2
2
#[ cfg( feature = "transport" ) ]
3
3
use crate :: transport:: server:: TcpConnectInfo ;
4
4
#[ cfg( feature = "tls" ) ]
5
- use crate :: transport:: { server:: TlsConnectInfo , Certificate } ;
5
+ use crate :: transport:: { server:: TlsConnectInfo , CertificateDer } ;
6
6
use crate :: Extensions ;
7
7
#[ cfg( feature = "transport" ) ]
8
8
use std:: net:: SocketAddr ;
@@ -258,7 +258,7 @@ impl<T> Request<T> {
258
258
/// TLS enabled connections.
259
259
#[ cfg( feature = "tls" ) ]
260
260
#[ cfg_attr( docsrs, doc( cfg( feature = "tls" ) ) ) ]
261
- pub fn peer_certs ( & self ) -> Option < Arc < Vec < Certificate > > > {
261
+ pub fn peer_certs ( & self ) -> Option < Arc < Vec < CertificateDer > > > {
262
262
self . extensions ( )
263
263
. get :: < TlsConnectInfo < TcpConnectInfo > > ( )
264
264
. and_then ( |i| i. peer_certs ( ) )
Original file line number Diff line number Diff line change @@ -106,7 +106,7 @@ pub use self::server::Server;
106
106
pub use self :: service:: grpc_timeout:: TimeoutExpired ;
107
107
#[ cfg( feature = "tls" ) ]
108
108
#[ cfg_attr( docsrs, doc( cfg( feature = "tls" ) ) ) ]
109
- pub use self :: tls:: Certificate ;
109
+ pub use self :: tls:: { Certificate , CertificateDer } ;
110
110
pub use axum:: { body:: BoxBody as AxumBoxBody , Router as AxumRouter } ;
111
111
pub use hyper:: { Body , Uri } ;
112
112
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ use std::net::SocketAddr;
3
3
use tokio:: net:: TcpStream ;
4
4
5
5
#[ cfg( feature = "tls" ) ]
6
- use crate :: transport:: Certificate ;
6
+ use crate :: transport:: CertificateDer ;
7
7
#[ cfg( feature = "tls" ) ]
8
8
use std:: sync:: Arc ;
9
9
#[ cfg( feature = "tls" ) ]
@@ -126,7 +126,7 @@ where
126
126
let inner = inner. connect_info ( ) ;
127
127
128
128
let certs = if let Some ( certs) = session. peer_certificates ( ) {
129
- let certs = certs. iter ( ) . map ( Certificate :: from_pem ) . collect ( ) ;
129
+ let certs = certs. iter ( ) . map ( CertificateDer :: new ) . collect ( ) ;
130
130
Some ( Arc :: new ( certs) )
131
131
} else {
132
132
None
@@ -148,7 +148,7 @@ where
148
148
#[ derive( Debug , Clone ) ]
149
149
pub struct TlsConnectInfo < T > {
150
150
inner : T ,
151
- certs : Option < Arc < Vec < Certificate > > > ,
151
+ certs : Option < Arc < Vec < CertificateDer > > > ,
152
152
}
153
153
154
154
#[ cfg( feature = "tls" ) ]
@@ -165,7 +165,7 @@ impl<T> TlsConnectInfo<T> {
165
165
}
166
166
167
167
/// Return the set of connected peer TLS certificates.
168
- pub fn peer_certs ( & self ) -> Option < Arc < Vec < Certificate > > > {
168
+ pub fn peer_certs ( & self ) -> Option < Arc < Vec < CertificateDer > > > {
169
169
self . certs . clone ( )
170
170
}
171
171
}
Original file line number Diff line number Diff line change @@ -11,6 +11,12 @@ pub struct Identity {
11
11
pub ( crate ) key : Vec < u8 > ,
12
12
}
13
13
14
+ /// Reprensents a DER encoded certificate.
15
+ #[ derive( Debug , Clone ) ]
16
+ pub struct CertificateDer {
17
+ bytes : Vec < u8 > ,
18
+ }
19
+
14
20
impl Certificate {
15
21
/// Parse a PEM encoded X509 Certificate.
16
22
///
@@ -58,3 +64,27 @@ impl Identity {
58
64
Self { cert, key }
59
65
}
60
66
}
67
+
68
+ impl CertificateDer {
69
+ pub ( crate ) fn new ( bytes : impl AsRef < [ u8 ] > ) -> Self {
70
+ let bytes = bytes. as_ref ( ) . into ( ) ;
71
+ Self { bytes }
72
+ }
73
+
74
+ /// Consumes `self`, returning the underlying DER encoded certificate
75
+ pub fn into_bytes ( self ) -> Vec < u8 > {
76
+ self . bytes
77
+ }
78
+ }
79
+
80
+ impl AsRef < [ u8 ] > for CertificateDer {
81
+ fn as_ref ( & self ) -> & [ u8 ] {
82
+ self . bytes . as_ref ( )
83
+ }
84
+ }
85
+
86
+ impl AsMut < [ u8 ] > for CertificateDer {
87
+ fn as_mut ( & mut self ) -> & mut [ u8 ] {
88
+ self . bytes . as_mut ( )
89
+ }
90
+ }
You can’t perform that action at this time.
0 commit comments