Skip to content

Add rustls compile time support #2045

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions apps/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ qlog = ["quiche/qlog"]
# Use BoringSSL provided by the boring crate.
boringssl-boring-crate = ["quiche/boringssl-boring-crate"]

rustls-aws-lc-rs = ["quiche/rustls-aws-lc-rs"]
rustls-ring = ["quiche/rustls-ring"]

# Enable sfv support.
sfv = ["quiche/sfv"]

Expand Down
9 changes: 9 additions & 0 deletions quiche/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ boringssl-boring-crate = ["boring", "foreign-types-shared"]
# Build quiche against OpenSSL instead of BoringSSL.
openssl = ["pkg-config"]

# Build quiche using rustls
rustls-aws-lc-rs = ["rustls/aws-lc-rs", "dep:aws-lc-rs", "dep:rustls", "dep:rustls-native-certs", "__rustls"]
rustls-ring = ["rustls/ring", "dep:rustls", "dep:ring", "dep:rustls-native-certs", "__rustls"]
__rustls = []

# Generate pkg-config metadata file for libquiche.
pkg-config-meta = []

Expand Down Expand Up @@ -83,6 +88,10 @@ sfv = { version = "0.9", optional = true }
slab = "0.4"
smallvec = { workspace = true, features = ["union"] }
enum_dispatch = "0.3"
rustls = { version = "0.23.26", default-features = false, features = ["std", "logging"], optional = true }
rustls-native-certs = { version = "0.8.1", optional = true }
ring = { workspace = true, optional = true }
aws-lc-rs = { version = "1.13.0", default-features = false, optional = true }

[target."cfg(windows)".dependencies]
windows-sys = { version = "0.59", features = [
Expand Down
100 changes: 100 additions & 0 deletions quiche/examples/cert-big_rustls.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUTZGqZKKEu0WNBBxhYLNpSOOwz3AwDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owITELMAkGA1UEBhMCR0IxEjAQBgNVBAMMCXF1aWMudGVjaDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+Wzi+yw/ZIiGoHFa2amdd2XEdC
oTLs7G66lC22SsqgvrgUYCDcWCeyz5yeCz2Lgrf5wGkOwi13yoMwDBbvHiCulBL2
QOvu29tBOK7zqT20wf0+CW2GTUCsjPQBMK+o9D+rxYK1k+2gc4ZJoqhHub7/+2Th
Bm/gG/nLzHrM3wW5Pd58synTWlLofece/6dDsN9eZ6dj0bqE9EEJwPcxP/XmdyWo
d3DWZzbkOgQx5ZHoM01eSYWGG5UaP6ZrdhPRNIWvjVrES392SVGIZGEd1KjJbRCr
i4JQjlVgWz5ineCGVDSKLaSjFUElW/WoDQRePYR/YgYTd3wZux6fCgaYyS8CAwEA
AaNYMFYwFAYDVR0RBA0wC4IJcXVpYy50ZWNoMB0GA1UdDgQWBBSHabqAgfnBIkPF
Fjt3Xi3wZHQnNzAfBgNVHSMEGDAWgBQjyE843kJpz9KXoQnMi3Qq+Bcl+TANBgkq
hkiG9w0BAQsFAAOCAQEAeWVWygPY+iwlxEfo9uBhwo0OIfcy55QPzgwI5aGB1sPR
Ien+uxziOokXzyrtJWkY3eqzF2eYywH89GJoRv5hdcFKs2NZ/DWvGZHE8PoT0FBF
L47VjPg7k16IIhnOZlN5DeY0WfkeXFvANzPJGbdGYArg+ZQMCQ+xJu/UKs+vPF4+
mxTQ31iCwHyGdLeXSk2RRkI1m5UhLWd4v5Pan37m9UujvOMwEIGRxlwr1Zhpb/QJ
w90iH5gMVzZ0iQxPYbYug0Ns7ekg+gaCckCt/CKpKmVOF26XmtKkXuCYhDi42CvO
o8rtE95MBjSXOreqH7ns2GdKGllvzGzzCvpDVmn3Cg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUTZGqZKKEu0WNBBxhYLNpSOOwz3AwDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owITELMAkGA1UEBhMCR0IxEjAQBgNVBAMMCXF1aWMudGVjaDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+Wzi+yw/ZIiGoHFa2amdd2XEdC
oTLs7G66lC22SsqgvrgUYCDcWCeyz5yeCz2Lgrf5wGkOwi13yoMwDBbvHiCulBL2
QOvu29tBOK7zqT20wf0+CW2GTUCsjPQBMK+o9D+rxYK1k+2gc4ZJoqhHub7/+2Th
Bm/gG/nLzHrM3wW5Pd58synTWlLofece/6dDsN9eZ6dj0bqE9EEJwPcxP/XmdyWo
d3DWZzbkOgQx5ZHoM01eSYWGG5UaP6ZrdhPRNIWvjVrES392SVGIZGEd1KjJbRCr
i4JQjlVgWz5ineCGVDSKLaSjFUElW/WoDQRePYR/YgYTd3wZux6fCgaYyS8CAwEA
AaNYMFYwFAYDVR0RBA0wC4IJcXVpYy50ZWNoMB0GA1UdDgQWBBSHabqAgfnBIkPF
Fjt3Xi3wZHQnNzAfBgNVHSMEGDAWgBQjyE843kJpz9KXoQnMi3Qq+Bcl+TANBgkq
hkiG9w0BAQsFAAOCAQEAeWVWygPY+iwlxEfo9uBhwo0OIfcy55QPzgwI5aGB1sPR
Ien+uxziOokXzyrtJWkY3eqzF2eYywH89GJoRv5hdcFKs2NZ/DWvGZHE8PoT0FBF
L47VjPg7k16IIhnOZlN5DeY0WfkeXFvANzPJGbdGYArg+ZQMCQ+xJu/UKs+vPF4+
mxTQ31iCwHyGdLeXSk2RRkI1m5UhLWd4v5Pan37m9UujvOMwEIGRxlwr1Zhpb/QJ
w90iH5gMVzZ0iQxPYbYug0Ns7ekg+gaCckCt/CKpKmVOF26XmtKkXuCYhDi42CvO
o8rtE95MBjSXOreqH7ns2GdKGllvzGzzCvpDVmn3Cg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUTZGqZKKEu0WNBBxhYLNpSOOwz3AwDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owITELMAkGA1UEBhMCR0IxEjAQBgNVBAMMCXF1aWMudGVjaDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+Wzi+yw/ZIiGoHFa2amdd2XEdC
oTLs7G66lC22SsqgvrgUYCDcWCeyz5yeCz2Lgrf5wGkOwi13yoMwDBbvHiCulBL2
QOvu29tBOK7zqT20wf0+CW2GTUCsjPQBMK+o9D+rxYK1k+2gc4ZJoqhHub7/+2Th
Bm/gG/nLzHrM3wW5Pd58synTWlLofece/6dDsN9eZ6dj0bqE9EEJwPcxP/XmdyWo
d3DWZzbkOgQx5ZHoM01eSYWGG5UaP6ZrdhPRNIWvjVrES392SVGIZGEd1KjJbRCr
i4JQjlVgWz5ineCGVDSKLaSjFUElW/WoDQRePYR/YgYTd3wZux6fCgaYyS8CAwEA
AaNYMFYwFAYDVR0RBA0wC4IJcXVpYy50ZWNoMB0GA1UdDgQWBBSHabqAgfnBIkPF
Fjt3Xi3wZHQnNzAfBgNVHSMEGDAWgBQjyE843kJpz9KXoQnMi3Qq+Bcl+TANBgkq
hkiG9w0BAQsFAAOCAQEAeWVWygPY+iwlxEfo9uBhwo0OIfcy55QPzgwI5aGB1sPR
Ien+uxziOokXzyrtJWkY3eqzF2eYywH89GJoRv5hdcFKs2NZ/DWvGZHE8PoT0FBF
L47VjPg7k16IIhnOZlN5DeY0WfkeXFvANzPJGbdGYArg+ZQMCQ+xJu/UKs+vPF4+
mxTQ31iCwHyGdLeXSk2RRkI1m5UhLWd4v5Pan37m9UujvOMwEIGRxlwr1Zhpb/QJ
w90iH5gMVzZ0iQxPYbYug0Ns7ekg+gaCckCt/CKpKmVOF26XmtKkXuCYhDi42CvO
o8rtE95MBjSXOreqH7ns2GdKGllvzGzzCvpDVmn3Cg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUTZGqZKKEu0WNBBxhYLNpSOOwz3AwDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owITELMAkGA1UEBhMCR0IxEjAQBgNVBAMMCXF1aWMudGVjaDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+Wzi+yw/ZIiGoHFa2amdd2XEdC
oTLs7G66lC22SsqgvrgUYCDcWCeyz5yeCz2Lgrf5wGkOwi13yoMwDBbvHiCulBL2
QOvu29tBOK7zqT20wf0+CW2GTUCsjPQBMK+o9D+rxYK1k+2gc4ZJoqhHub7/+2Th
Bm/gG/nLzHrM3wW5Pd58synTWlLofece/6dDsN9eZ6dj0bqE9EEJwPcxP/XmdyWo
d3DWZzbkOgQx5ZHoM01eSYWGG5UaP6ZrdhPRNIWvjVrES392SVGIZGEd1KjJbRCr
i4JQjlVgWz5ineCGVDSKLaSjFUElW/WoDQRePYR/YgYTd3wZux6fCgaYyS8CAwEA
AaNYMFYwFAYDVR0RBA0wC4IJcXVpYy50ZWNoMB0GA1UdDgQWBBSHabqAgfnBIkPF
Fjt3Xi3wZHQnNzAfBgNVHSMEGDAWgBQjyE843kJpz9KXoQnMi3Qq+Bcl+TANBgkq
hkiG9w0BAQsFAAOCAQEAeWVWygPY+iwlxEfo9uBhwo0OIfcy55QPzgwI5aGB1sPR
Ien+uxziOokXzyrtJWkY3eqzF2eYywH89GJoRv5hdcFKs2NZ/DWvGZHE8PoT0FBF
L47VjPg7k16IIhnOZlN5DeY0WfkeXFvANzPJGbdGYArg+ZQMCQ+xJu/UKs+vPF4+
mxTQ31iCwHyGdLeXSk2RRkI1m5UhLWd4v5Pan37m9UujvOMwEIGRxlwr1Zhpb/QJ
w90iH5gMVzZ0iQxPYbYug0Ns7ekg+gaCckCt/CKpKmVOF26XmtKkXuCYhDi42CvO
o8rtE95MBjSXOreqH7ns2GdKGllvzGzzCvpDVmn3Cg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUTZGqZKKEu0WNBBxhYLNpSOOwz3AwDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owITELMAkGA1UEBhMCR0IxEjAQBgNVBAMMCXF1aWMudGVjaDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+Wzi+yw/ZIiGoHFa2amdd2XEdC
oTLs7G66lC22SsqgvrgUYCDcWCeyz5yeCz2Lgrf5wGkOwi13yoMwDBbvHiCulBL2
QOvu29tBOK7zqT20wf0+CW2GTUCsjPQBMK+o9D+rxYK1k+2gc4ZJoqhHub7/+2Th
Bm/gG/nLzHrM3wW5Pd58synTWlLofece/6dDsN9eZ6dj0bqE9EEJwPcxP/XmdyWo
d3DWZzbkOgQx5ZHoM01eSYWGG5UaP6ZrdhPRNIWvjVrES392SVGIZGEd1KjJbRCr
i4JQjlVgWz5ineCGVDSKLaSjFUElW/WoDQRePYR/YgYTd3wZux6fCgaYyS8CAwEA
AaNYMFYwFAYDVR0RBA0wC4IJcXVpYy50ZWNoMB0GA1UdDgQWBBSHabqAgfnBIkPF
Fjt3Xi3wZHQnNzAfBgNVHSMEGDAWgBQjyE843kJpz9KXoQnMi3Qq+Bcl+TANBgkq
hkiG9w0BAQsFAAOCAQEAeWVWygPY+iwlxEfo9uBhwo0OIfcy55QPzgwI5aGB1sPR
Ien+uxziOokXzyrtJWkY3eqzF2eYywH89GJoRv5hdcFKs2NZ/DWvGZHE8PoT0FBF
L47VjPg7k16IIhnOZlN5DeY0WfkeXFvANzPJGbdGYArg+ZQMCQ+xJu/UKs+vPF4+
mxTQ31iCwHyGdLeXSk2RRkI1m5UhLWd4v5Pan37m9UujvOMwEIGRxlwr1Zhpb/QJ
w90iH5gMVzZ0iQxPYbYug0Ns7ekg+gaCckCt/CKpKmVOF26XmtKkXuCYhDi42CvO
o8rtE95MBjSXOreqH7ns2GdKGllvzGzzCvpDVmn3Cg==
-----END CERTIFICATE-----
20 changes: 20 additions & 0 deletions quiche/examples/cert_rustls.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUTZGqZKKEu0WNBBxhYLNpSOOwz3AwDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owITELMAkGA1UEBhMCR0IxEjAQBgNVBAMMCXF1aWMudGVjaDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+Wzi+yw/ZIiGoHFa2amdd2XEdC
oTLs7G66lC22SsqgvrgUYCDcWCeyz5yeCz2Lgrf5wGkOwi13yoMwDBbvHiCulBL2
QOvu29tBOK7zqT20wf0+CW2GTUCsjPQBMK+o9D+rxYK1k+2gc4ZJoqhHub7/+2Th
Bm/gG/nLzHrM3wW5Pd58synTWlLofece/6dDsN9eZ6dj0bqE9EEJwPcxP/XmdyWo
d3DWZzbkOgQx5ZHoM01eSYWGG5UaP6ZrdhPRNIWvjVrES392SVGIZGEd1KjJbRCr
i4JQjlVgWz5ineCGVDSKLaSjFUElW/WoDQRePYR/YgYTd3wZux6fCgaYyS8CAwEA
AaNYMFYwFAYDVR0RBA0wC4IJcXVpYy50ZWNoMB0GA1UdDgQWBBSHabqAgfnBIkPF
Fjt3Xi3wZHQnNzAfBgNVHSMEGDAWgBQjyE843kJpz9KXoQnMi3Qq+Bcl+TANBgkq
hkiG9w0BAQsFAAOCAQEAeWVWygPY+iwlxEfo9uBhwo0OIfcy55QPzgwI5aGB1sPR
Ien+uxziOokXzyrtJWkY3eqzF2eYywH89GJoRv5hdcFKs2NZ/DWvGZHE8PoT0FBF
L47VjPg7k16IIhnOZlN5DeY0WfkeXFvANzPJGbdGYArg+ZQMCQ+xJu/UKs+vPF4+
mxTQ31iCwHyGdLeXSk2RRkI1m5UhLWd4v5Pan37m9UujvOMwEIGRxlwr1Zhpb/QJ
w90iH5gMVzZ0iQxPYbYug0Ns7ekg+gaCckCt/CKpKmVOF26XmtKkXuCYhDi42CvO
o8rtE95MBjSXOreqH7ns2GdKGllvzGzzCvpDVmn3Cg==
-----END CERTIFICATE-----
17 changes: 17 additions & 0 deletions quiche/examples/gen-certs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,20 @@ cat cert.crt >> cert-big.crt
rm cert.csr
rm rootca.key
rm rootca.srl

# required as rustls does not support v1 certificates
# rustls also needs the subjectAltName to successfully verify the certificates
echo '[v3_req]' > openssl.cnf
openssl req -new -x509 -batch -nodes -days 10000 -keyout rootca_rustls.key -out rootca_rustls.crt

openssl req -new -batch -nodes -sha256 -key cert.key -out cert_rustls.csr \
-subj '/C=GB/CN=quic.tech' -addext "subjectAltName=DNS:quic.tech"
openssl x509 -req -days 10000 -CAcreateserial -CA rootca_rustls.crt -CAkey rootca_rustls.key \
-in cert_rustls.csr -out cert_rustls.crt -copy_extensions copyall
openssl verify -CAfile rootca_rustls.crt cert_rustls.crt
cat cert_rustls.crt cert_rustls.crt cert_rustls.crt cert_rustls.crt cert_rustls.crt > cert-big_rustls.crt

rm openssl.cnf
rm cert_rustls.csr
rm rootca_rustls.key
rm rootca_rustls.srl
21 changes: 21 additions & 0 deletions quiche/examples/rootca_rustls.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDZzCCAk+gAwIBAgIUYhjE4OLyZdy528n3RT0KN2xro+owDQYJKoZIhvcNAQEL
BQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDAgFw0yNTA1MDUxMjQzMDdaGA8yMDUyMDky
MDEyNDMwN1owQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEc
MBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAM2fTBsAiEQv58w//PQPJPECwXQ0pZ4oMP5babMl8EfT9W1j
cC8pEzV6T6Ao+YSRphLdI2oLNhCtqLggveaE08hMEFqUz4k7L+GMKv8H0jvKvC08
3z0Xe6xG3BfghE+MFg+fEosWHPM36pg8gZTb/zj7ucWeeVBivxdtqTnLGO06yRRO
V4oT/xBlJKrvAzsIS8ZwQC7glldcQegStmofO/PBK4kSW2GTld3pAOsNxIh1haNY
g7moQiQQn3MsAigXNX3Y3p8Hg7iYip+09WT73cUXn1fKtbJjTu7U1DGwVv1mpxeg
1hSviTh5oeXUsbE4I1LEY5HHcq5RxUsbYoBMjv0CAwEAAaNTMFEwHQYDVR0OBBYE
FCPITzjeQmnP0pehCcyLdCr4FyX5MB8GA1UdIwQYMBaAFCPITzjeQmnP0pehCcyL
dCr4FyX5MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJRsINU5
ZYE76j775n8vd9pS0auZzVa5vIWY9292rWAny4H3Pub5DTg7h6JlPmg3/rUjluIl
kK0RgFsRfDRCakOjdTfhBBCtfNARQSeoH3Y7gmELH8D0SojMUq1x4ttPyGOUXM39
MngYOQemQMKk/OxB87rAJN4av46jv0NYK8unMLM5HKtmBK4nWG3T8KRZRfa5JeFl
mKrvn7C8O8iW8zlLHW43Upx4L+HLvvGZT3eFjfYOUghzWnbjIVmhy6toJcpdhIvD
kCDY1/CGBrgYFZskg3uOATMLAYIUjS6rWqSeKtGOwnTU1AqQ4rM/cjMGrjSsfYYs
TsXIILlIsXPy7/w=
-----END CERTIFICATE-----
Loading