Skip to content

Commit 2f74c3d

Browse files
committed
server: remove ClientHello constructor
1 parent 3ba5167 commit 2f74c3d

File tree

3 files changed

+45
-52
lines changed

3 files changed

+45
-52
lines changed

rustls/src/server/handy.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,9 @@ impl server::ResolvesServerCert for AlwaysResolvesChain {
200200
}
201201

202202
/// An exemplar `ResolvesServerCert` implementation that always resolves to a single
203-
/// [RFC 7250] raw public key.
203+
/// [RFC 7250] raw public key.
204204
///
205-
/// [RFC 7250]: https://tools.ietf.org/html/rfc7250
205+
/// [RFC 7250]: https://tools.ietf.org/html/rfc7250
206206
#[derive(Clone, Debug)]
207207
pub struct AlwaysResolvesServerRawPublicKeys(Arc<sign::CertifiedKey>);
208208

@@ -306,7 +306,14 @@ mod sni_resolver {
306306
fn test_resolvesservercertusingsni_requires_sni() {
307307
let rscsni = ResolvesServerCertUsingSni::new();
308308
assert!(rscsni
309-
.resolve(ClientHello::new(&None, &[], None, None, None, &[]))
309+
.resolve(ClientHello {
310+
server_name: &None,
311+
signature_schemes: &[],
312+
alpn: None,
313+
server_cert_types: None,
314+
client_cert_types: None,
315+
cipher_suites: &[]
316+
})
310317
.is_none());
311318
}
312319

@@ -317,7 +324,14 @@ mod sni_resolver {
317324
.unwrap()
318325
.to_owned();
319326
assert!(rscsni
320-
.resolve(ClientHello::new(&Some(name), &[], None, None, None, &[]))
327+
.resolve(ClientHello {
328+
server_name: &Some(name),
329+
signature_schemes: &[],
330+
alpn: None,
331+
server_cert_types: None,
332+
client_cert_types: None,
333+
cipher_suites: &[]
334+
})
321335
.is_none());
322336
}
323337
}

rustls/src/server/hs.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -400,14 +400,15 @@ impl ExpectClientHello {
400400

401401
// Choose a certificate.
402402
let certkey = {
403-
let client_hello = ClientHello::new(
404-
&cx.data.sni,
405-
&sig_schemes,
406-
client_hello.alpn_extension(),
407-
client_hello.server_certificate_extension(),
408-
client_hello.client_certificate_extension(),
409-
&client_hello.cipher_suites,
410-
);
403+
let client_hello = ClientHello {
404+
server_name: &cx.data.sni,
405+
signature_schemes: &sig_schemes,
406+
alpn: client_hello.alpn_extension(),
407+
client_cert_types: client_hello.server_certificate_extension(),
408+
server_cert_types: client_hello.client_certificate_extension(),
409+
cipher_suites: &client_hello.cipher_suites,
410+
};
411+
trace!("Resolving server certificate: {client_hello:#?}");
411412

412413
let certkey = self
413414
.config

rustls/src/server/server_conn.rs

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -132,42 +132,17 @@ pub trait ResolvesServerCert: Debug + Send + Sync {
132132
}
133133

134134
/// A struct representing the received Client Hello
135+
#[derive(Debug)]
135136
pub struct ClientHello<'a> {
136-
server_name: &'a Option<DnsName<'a>>,
137-
signature_schemes: &'a [SignatureScheme],
138-
alpn: Option<&'a Vec<ProtocolName>>,
139-
server_cert_types: Option<&'a [CertificateType]>,
140-
client_cert_types: Option<&'a [CertificateType]>,
141-
cipher_suites: &'a [CipherSuite],
137+
pub(super) server_name: &'a Option<DnsName<'a>>,
138+
pub(super) signature_schemes: &'a [SignatureScheme],
139+
pub(super) alpn: Option<&'a Vec<ProtocolName>>,
140+
pub(super) server_cert_types: Option<&'a [CertificateType]>,
141+
pub(super) client_cert_types: Option<&'a [CertificateType]>,
142+
pub(super) cipher_suites: &'a [CipherSuite],
142143
}
143144

144145
impl<'a> ClientHello<'a> {
145-
/// Creates a new ClientHello
146-
pub(super) fn new(
147-
server_name: &'a Option<DnsName<'_>>,
148-
signature_schemes: &'a [SignatureScheme],
149-
alpn: Option<&'a Vec<ProtocolName>>,
150-
server_cert_types: Option<&'a [CertificateType]>,
151-
client_cert_types: Option<&'a [CertificateType]>,
152-
cipher_suites: &'a [CipherSuite],
153-
) -> Self {
154-
trace!("sni {:?}", server_name);
155-
trace!("sig schemes {:?}", signature_schemes);
156-
trace!("alpn protocols {:?}", alpn);
157-
trace!("server cert types {:?}", server_cert_types);
158-
trace!("client cert types {:?}", client_cert_types);
159-
trace!("cipher suites {:?}", cipher_suites);
160-
161-
ClientHello {
162-
server_name,
163-
signature_schemes,
164-
alpn,
165-
server_cert_types,
166-
client_cert_types,
167-
cipher_suites,
168-
}
169-
}
170-
171146
/// Get the server name indicator.
172147
///
173148
/// Returns `None` if the client did not supply a SNI.
@@ -938,14 +913,17 @@ impl Accepted {
938913
/// Get the [`ClientHello`] for this connection.
939914
pub fn client_hello(&self) -> ClientHello<'_> {
940915
let payload = Self::client_hello_payload(&self.message);
941-
ClientHello::new(
942-
&self.connection.core.data.sni,
943-
&self.sig_schemes,
944-
payload.alpn_extension(),
945-
payload.server_certificate_extension(),
946-
payload.client_certificate_extension(),
947-
&payload.cipher_suites,
948-
)
916+
let ch = ClientHello {
917+
server_name: &self.connection.core.data.sni,
918+
signature_schemes: &self.sig_schemes,
919+
alpn: payload.alpn_extension(),
920+
server_cert_types: payload.server_certificate_extension(),
921+
client_cert_types: payload.client_certificate_extension(),
922+
cipher_suites: &payload.cipher_suites,
923+
};
924+
925+
trace!("Accepted::client_hello(): {ch:#?}");
926+
ch
949927
}
950928

951929
/// Convert the [`Accepted`] into a [`ServerConnection`].

0 commit comments

Comments
 (0)