Skip to content

Commit d948de6

Browse files
djcRalith
authored andcommitted
book: order certificate code in top-down order
1 parent 48e0bb3 commit d948de6

File tree

2 files changed

+32
-32
lines changed

2 files changed

+32
-32
lines changed

docs/book/src/bin/certificate.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,26 @@ use rustls::{
1313
},
1414
};
1515

16+
#[allow(unused_variables)]
17+
fn main() {
18+
let (self_signed_certs, self_signed_key) = generate_self_signed_cert().unwrap();
19+
let (certs, key) = read_certs_from_file().unwrap();
20+
let server_config = quinn::ServerConfig::with_single_cert(certs, key);
21+
let client_config = quinn::ClientConfig::with_platform_verifier();
22+
}
23+
24+
#[allow(dead_code)] // Included in `certificate.md`
25+
fn configure_client() -> Result<ClientConfig, NoInitialCipherSuite> {
26+
let crypto = rustls::ClientConfig::builder()
27+
.dangerous()
28+
.with_custom_certificate_verifier(SkipServerVerification::new())
29+
.with_no_client_auth();
30+
31+
Ok(ClientConfig::new(Arc::new(QuicClientConfig::try_from(
32+
crypto,
33+
)?)))
34+
}
35+
1636
// Implementation of `ServerCertVerifier` that verifies everything as trustworthy.
1737
#[derive(Debug)]
1838
struct SkipServerVerification(Arc<CryptoProvider>);
@@ -67,16 +87,12 @@ impl danger::ServerCertVerifier for SkipServerVerification {
6787
}
6888
}
6989

70-
#[allow(dead_code)] // Included in `certificate.md`
71-
fn configure_client() -> Result<ClientConfig, NoInitialCipherSuite> {
72-
let crypto = rustls::ClientConfig::builder()
73-
.dangerous()
74-
.with_custom_certificate_verifier(SkipServerVerification::new())
75-
.with_no_client_auth();
76-
77-
Ok(ClientConfig::new(Arc::new(QuicClientConfig::try_from(
78-
crypto,
79-
)?)))
90+
fn generate_self_signed_cert()
91+
-> Result<(CertificateDer<'static>, PrivatePkcs8KeyDer<'static>), Box<dyn Error>> {
92+
let cert = rcgen::generate_simple_self_signed(vec!["localhost".to_string()])?;
93+
let cert_der = CertificateDer::from(cert.cert);
94+
let key = PrivatePkcs8KeyDer::from(cert.key_pair.serialize_der());
95+
Ok((cert_der, key))
8096
}
8197

8298
fn read_certs_from_file()
@@ -88,19 +104,3 @@ fn read_certs_from_file()
88104
let key = PrivateKeyDer::from_pem_file("./privkey.pem").unwrap();
89105
Ok((certs, key))
90106
}
91-
92-
fn generate_self_signed_cert()
93-
-> Result<(CertificateDer<'static>, PrivatePkcs8KeyDer<'static>), Box<dyn Error>> {
94-
let cert = rcgen::generate_simple_self_signed(vec!["localhost".to_string()])?;
95-
let cert_der = CertificateDer::from(cert.cert);
96-
let key = PrivatePkcs8KeyDer::from(cert.key_pair.serialize_der());
97-
Ok((cert_der, key))
98-
}
99-
100-
#[allow(unused_variables)]
101-
fn main() {
102-
let (self_signed_certs, self_signed_key) = generate_self_signed_cert().unwrap();
103-
let (certs, key) = read_certs_from_file().unwrap();
104-
let server_config = quinn::ServerConfig::with_single_cert(certs, key);
105-
let client_config = quinn::ClientConfig::with_platform_verifier();
106-
}

docs/book/src/quinn/certificate.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ rustls = { version = "*", features = ["dangerous_configuration", "quic"] }
1919
Then, allow the client to skip the certificate validation by implementing [ServerCertVerifier][ServerCertVerifier] and letting it assert verification for any server.
2020

2121
```rust
22-
{{#include ../bin/certificate.rs:16:68}}
22+
{{#include ../bin/certificate.rs:36:88}}
2323
```
2424

2525
After that, modify the [ClientConfig][ClientConfig] to use this [ServerCertVerifier][ServerCertVerifier] implementation.
2626

2727
```rust
28-
{{#include ../bin/certificate.rs:71:80}}
28+
{{#include ../bin/certificate.rs:25:34}}
2929
```
3030

3131
Finally, if you plug this [ClientConfig][ClientConfig] into the [Endpoint::set_default_client_config()][set_default_client_config] your client endpoint should verify all connections as trustworthy.
@@ -45,7 +45,7 @@ This example uses [rcgen][4] to generate a certificate.
4545
Let's look at an example:
4646

4747
```rust
48-
{{#include ../bin/certificate.rs:92:98}}
48+
{{#include ../bin/certificate.rs:90:96}}
4949
```
5050

5151
_Note that [generate_simple_self_signed][generate_simple_self_signed] returns a [Certificate][2] that can be serialized to both `.der` and `.pem` formats._
@@ -68,7 +68,7 @@ certbot asks for the required data and writes the certificates to `fullchain.pem
6868
These files can then be referenced in code.
6969

7070
```rust
71-
{{#include ../bin/certificate.rs:82:90}}
71+
{{#include ../bin/certificate.rs:98:106}}
7272
```
7373

7474
### Configuring Certificates
@@ -79,15 +79,15 @@ After configuring plug the configuration into the `Endpoint`.
7979
**Configure Server**
8080

8181
```rust
82-
{{#include ../bin/certificate.rs:104}}
82+
{{#include ../bin/certificate.rs:20}}
8383
```
8484

8585
This is the only thing you need to do for your server to be secured.
8686

8787
**Configure Client**
8888

8989
```rust
90-
{{#include ../bin/certificate.rs:105}}
90+
{{#include ../bin/certificate.rs:21}}
9191
```
9292

9393
This is the only thing you need to do for your client to trust a server certificate signed by a conventional certificate authority.

0 commit comments

Comments
 (0)