18
18
//!
19
19
//! [Click here for Zenoh's documentation](../zenoh/index.html)
20
20
use async_trait:: async_trait;
21
- use config:: {
22
- TLS_ROOT_CA_CERTIFICATE_BASE64 , TLS_ROOT_CA_CERTIFICATE_FILE , TLS_SERVER_CERTIFICATE_BASE64 ,
23
- TLS_SERVER_CERTIFICATE_FILE , TLS_SERVER_NAME_VERIFICATION , TLS_SERVER_PRIVATE_KEY_BASE64 ,
24
- TLS_SERVER_PRIVATE_KEY_FILE ,
25
- } ;
26
- use secrecy:: ExposeSecret ;
27
- use std:: net:: SocketAddr ;
28
- use zenoh_config:: Config ;
21
+
29
22
use zenoh_core:: zconfigurable;
30
- use zenoh_link_commons:: { ConfigurationInspector , LocatorInspector } ;
31
- use zenoh_protocol:: core:: {
32
- endpoint:: { Address , Parameters } ,
33
- Locator ,
34
- } ;
35
- use zenoh_result:: { bail, zerror, ZResult } ;
23
+ use zenoh_link_commons:: LocatorInspector ;
24
+ use zenoh_protocol:: core:: Locator ;
25
+ use zenoh_result:: ZResult ;
36
26
37
27
mod unicast;
28
+ mod utils;
38
29
mod verify;
39
30
pub use unicast:: * ;
31
+ pub use utils:: TlsConfigurator as QuicConfigurator ;
40
32
41
33
// Default ALPN protocol
42
34
pub const ALPN_QUIC_HTTP : & [ & [ u8 ] ] = & [ b"hq-29" ] ;
@@ -64,77 +56,6 @@ impl LocatorInspector for QuicLocatorInspector {
64
56
}
65
57
}
66
58
67
- #[ derive( Default , Clone , Copy , Debug ) ]
68
- pub struct QuicConfigurator ;
69
-
70
- impl ConfigurationInspector < Config > for QuicConfigurator {
71
- fn inspect_config ( & self , config : & Config ) -> ZResult < String > {
72
- let mut ps: Vec < ( & str , & str ) > = vec ! [ ] ;
73
-
74
- let c = config. transport ( ) . link ( ) . tls ( ) ;
75
-
76
- match ( c. root_ca_certificate ( ) , c. root_ca_certificate_base64 ( ) ) {
77
- ( Some ( _) , Some ( _) ) => {
78
- bail ! ( "Only one between 'root_ca_certificate' and 'root_ca_certificate_base64' can be present!" )
79
- }
80
- ( Some ( ca_certificate) , None ) => {
81
- ps. push ( ( TLS_ROOT_CA_CERTIFICATE_FILE , ca_certificate) ) ;
82
- }
83
- ( None , Some ( ca_certificate) ) => {
84
- ps. push ( (
85
- TLS_ROOT_CA_CERTIFICATE_BASE64 ,
86
- ca_certificate. expose_secret ( ) ,
87
- ) ) ;
88
- }
89
- _ => { }
90
- }
91
-
92
- match ( c. server_private_key ( ) , c. server_private_key_base64 ( ) ) {
93
- ( Some ( _) , Some ( _) ) => {
94
- bail ! ( "Only one between 'server_private_key' and 'server_private_key_base64' can be present!" )
95
- }
96
- ( Some ( server_private_key) , None ) => {
97
- ps. push ( ( TLS_SERVER_PRIVATE_KEY_FILE , server_private_key) ) ;
98
- }
99
- ( None , Some ( server_private_key) ) => {
100
- ps. push ( (
101
- TLS_SERVER_PRIVATE_KEY_BASE64 ,
102
- server_private_key. expose_secret ( ) ,
103
- ) ) ;
104
- }
105
- _ => { }
106
- }
107
-
108
- match ( c. server_certificate ( ) , c. server_certificate_base64 ( ) ) {
109
- ( Some ( _) , Some ( _) ) => {
110
- bail ! ( "Only one between 'server_certificate' and 'server_certificate_base64' can be present!" )
111
- }
112
- ( Some ( server_certificate) , None ) => {
113
- ps. push ( ( TLS_SERVER_CERTIFICATE_FILE , server_certificate) ) ;
114
- }
115
- ( None , Some ( server_certificate) ) => {
116
- ps. push ( (
117
- TLS_SERVER_CERTIFICATE_BASE64 ,
118
- server_certificate. expose_secret ( ) ,
119
- ) ) ;
120
- }
121
- _ => { }
122
- }
123
-
124
- if let Some ( server_name_verification) = c. server_name_verification ( ) {
125
- match server_name_verification {
126
- true => ps. push ( ( TLS_SERVER_NAME_VERIFICATION , "true" ) ) ,
127
- false => ps. push ( ( TLS_SERVER_NAME_VERIFICATION , "false" ) ) ,
128
- } ;
129
- }
130
-
131
- let mut s = String :: new ( ) ;
132
- Parameters :: extend ( ps. drain ( ..) , & mut s) ;
133
-
134
- Ok ( s)
135
- }
136
- }
137
-
138
59
zconfigurable ! {
139
60
// Default MTU (QUIC PDU) in bytes.
140
61
static ref QUIC_DEFAULT_MTU : u16 = QUIC_MAX_MTU ;
@@ -157,25 +78,20 @@ pub mod config {
157
78
pub const TLS_SERVER_PRIVATE_KEY_RAW : & str = "server_private_key_raw" ;
158
79
pub const TLS_SERVER_PRIVATE_KEY_BASE64 : & str = "server_private_key_base64" ;
159
80
160
- pub const TLS_SERVER_CERTIFICATE_FILE : & str = "tls_server_certificate_file " ;
161
- pub const TLS_SERVER_CERTIFICATE_RAW : & str = "tls_server_certificate_raw " ;
162
- pub const TLS_SERVER_CERTIFICATE_BASE64 : & str = "tls_server_certificate_base64 " ;
81
+ pub const TLS_SERVER_CERTIFICATE_FILE : & str = "server_certificate_file " ;
82
+ pub const TLS_SERVER_CERTIFICATE_RAW : & str = "server_certificate_raw " ;
83
+ pub const TLS_SERVER_CERTIFICATE_BASE64 : & str = "server_certificate_base64 " ;
163
84
164
- pub const TLS_SERVER_NAME_VERIFICATION : & str = "server_name_verification " ;
165
- pub const TLS_SERVER_NAME_VERIFICATION_DEFAULT : & str = "true " ;
166
- }
85
+ pub const TLS_CLIENT_PRIVATE_KEY_FILE : & str = "client_private_key_file " ;
86
+ pub const TLS_CLIENT_PRIVATE_KEY_RAW : & str = "client_private_key_raw " ;
87
+ pub const TLS_CLIENT_PRIVATE_KEY_BASE64 : & str = "client_private_key_base64" ;
167
88
168
- async fn get_quic_addr ( address : & Address < ' _ > ) -> ZResult < SocketAddr > {
169
- match tokio:: net:: lookup_host ( address. as_str ( ) ) . await ?. next ( ) {
170
- Some ( addr) => Ok ( addr) ,
171
- None => bail ! ( "Couldn't resolve QUIC locator address: {}" , address) ,
172
- }
173
- }
89
+ pub const TLS_CLIENT_CERTIFICATE_FILE : & str = "client_certificate_file" ;
90
+ pub const TLS_CLIENT_CERTIFICATE_RAW : & str = "client_certificate_raw" ;
91
+ pub const TLS_CLIENT_CERTIFICATE_BASE64 : & str = "client_certificate_base64" ;
174
92
175
- pub fn base64_decode ( data : & str ) -> ZResult < Vec < u8 > > {
176
- use base64:: engine:: general_purpose;
177
- use base64:: Engine ;
178
- Ok ( general_purpose:: STANDARD
179
- . decode ( data)
180
- . map_err ( |e| zerror ! ( "Unable to perform base64 decoding: {e:?}" ) ) ?)
93
+ pub const TLS_CLIENT_AUTH : & str = "client_auth" ;
94
+
95
+ pub const TLS_SERVER_NAME_VERIFICATION : & str = "server_name_verification" ;
96
+ pub const TLS_SERVER_NAME_VERIFICATION_DEFAULT : & str = "true" ;
181
97
}
0 commit comments