Skip to content

Rework representation of extensions in ClientHello #2502

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

Merged
merged 3 commits into from
Jun 23, 2025
Merged

Conversation

ctz
Copy link
Member

@ctz ctz commented Jun 17, 2025

This is the prefix of #1475. See the commit message of the "Introduce ClientExtensions type" commit for explanation.

This is part one in a three-part series. After this comes: #2508 and #2509.

Copy link

rustls-benchmarking bot commented Jun 17, 2025

Benchmark results

Instruction counts

Significant differences

⚠️ There are significant instruction count differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_no_resume_1.2_no_crypto_server 83949 74910 -9039 (-10.77%) 0.20%
handshake_session_id_1.2_no_crypto_server 1149724 1043395 -106329 (-9.25%) 0.20%
handshake_tickets_1.2_no_crypto_server 1311738 1206195 -105543 (-8.05%) 0.20%
handshake_tickets_1.3_no_crypto_server 2219015 2061209 -157806 (-7.11%) 0.20%
handshake_session_id_1.3_no_crypto_server 2255135 2097085 -158050 (-7.01%) 0.20%
handshake_no_resume_1.3_no_crypto_server 102885 98086 -4799 (-4.66%) 0.20%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_server 3846827 3740404 -106423 (-2.77%) 0.20%
handshake_session_id_ring_1.2_rsa_aes_server 4252216 4148510 -103706 (-2.44%) 0.20%
handshake_tickets_ring_1.2_rsa_aes_server 4707790 4605091 -102699 (-2.18%) 0.20%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_server 4982714 4877124 -105590 (-2.12%) 0.20%
handshake_session_id_1.2_no_crypto_client 1176713 1154958 -21755 (-1.85%) 0.20%
handshake_tickets_1.2_no_crypto_client 1272590 1250090 -22500 (-1.77%) 0.20%
handshake_session_id_1.3_no_crypto_client 2197255 2215651 ⚠️ 18396 (0.84%) 0.20%
handshake_tickets_1.3_no_crypto_client 2215824 2234146 ⚠️ 18322 (0.83%) 0.20%
handshake_no_resume_1.3_no_crypto_client 112260 111550 -710 (-0.63%) 0.20%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_client 3857786 3835009 -22777 (-0.59%) 0.20%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_client 4197640 4174698 -22942 (-0.55%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_server 49594191 49342809 -251382 (-0.51%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_server 49614829 49366415 -248414 (-0.50%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_server 48276457 48034860 -241597 (-0.50%) 0.20%
handshake_no_resume_1.2_no_crypto_client 99572 99076 -496 (-0.50%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_chacha_server 31881263 31727893 -153370 (-0.48%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_server 31879502 31726411 -153091 (-0.48%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_server 31881220 31728295 -152925 (-0.48%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_server 32003243 31849873 -153370 (-0.48%) 0.20%
handshake_session_id_ring_1.3_rsa_aes_server 32001482 31848391 -153091 (-0.48%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_server 32003200 31850275 -152925 (-0.48%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_chacha_server 32338904 32185756 -153148 (-0.47%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_server 32338732 32185696 -153036 (-0.47%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_server 32337295 32184337 -152958 (-0.47%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_aes_server 32441189 32287996 -153193 (-0.47%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_aes_server 32440972 32287936 -153036 (-0.47%) 0.20%
handshake_tickets_ring_1.3_rsa_aes_server 32439580 32286577 -153003 (-0.47%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_server 48309245 48085213 -224032 (-0.46%) 0.44%
handshake_session_id_ring_1.2_rsa_aes_client 4261362 4242069 -19293 (-0.45%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_server 49579786 49359943 -219843 (-0.44%) 0.38%
handshake_tickets_ring_1.2_rsa_aes_client 4522443 4502931 -19512 (-0.43%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_server 48224496 48032112 -192384 (-0.40%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_server 49555932 49360898 -195034 (-0.39%) 0.36%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_server 49508734 49317341 -191393 (-0.39%) 0.26%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_server 49604169 49413796 -190373 (-0.38%) 0.37%
handshake_no_resume_ring_1.3_ecdsap256_aes_server 1294877 1289981 -4896 (-0.38%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_chacha_server 1296059 1291160 -4899 (-0.38%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 1767951 1763152 -4799 (-0.27%) 0.20%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_server 48283016 48086994 -196022 (-0.41%) 0.43%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 9506121 9471555 -34566 (-0.36%) 0.60%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_server 48281327 48106863 -174464 (-0.36%) 0.38%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_server 10465100 10436079 -29021 (-0.28%) 0.80%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 1765911 1761241 -4670 (-0.26%) 1.22%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_client 64719585 64561561 -158024 (-0.24%) 0.26%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_client 64316165 64472659 156494 (0.24%) 0.28%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_server 11331300 11305808 -25492 (-0.22%) 1.45%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_client 64517942 64380601 -137341 (-0.21%) 0.26%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_client 64759576 64628508 -131068 (-0.20%) 0.25%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_server 48178515 48084399 -94116 (-0.20%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 2671382 2666569 -4813 (-0.18%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 2674273 2669752 -4521 (-0.17%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_client 64655565 64559797 -95768 (-0.15%) 0.52%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_client 64455434 64376910 -78524 (-0.12%) 0.59%
handshake_no_resume_ring_1.3_rsa_aes_server 11124144 11113557 -10587 (-0.10%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_server 11129905 11119320 -10585 (-0.10%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_server 10996408 10987522 -8886 (-0.08%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_chacha_client 30739481 30762546 23065 (0.08%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_client 30831131 30854196 23065 (0.07%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_client 31058927 31082137 23210 (0.07%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_aes_client 31130537 31153747 23210 (0.07%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_client 30746588 30769504 22916 (0.07%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_client 30742390 30765296 22906 (0.07%) 0.20%
handshake_session_id_ring_1.3_rsa_aes_client 30838268 30861184 22916 (0.07%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_client 30834070 30856976 22906 (0.07%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_client 31066187 31089225 23038 (0.07%) 0.20%
handshake_tickets_ring_1.3_rsa_aes_client 31137842 31160873 23031 (0.07%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_chacha_client 31062278 31085194 22916 (0.07%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_aes_client 31133933 31156842 22909 (0.07%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_client 64433283 64387726 -45557 (-0.07%) 0.60%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_client 64590469 64545886 -44583 (-0.07%) 0.56%
handshake_no_resume_ring_1.3_ecdsap384_aes_server 7218304 7213639 -4665 (-0.06%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha_server 7220254 7215591 -4663 (-0.06%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_client 64429489 64390729 -38760 (-0.06%) 0.21%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_client 64551530 64513867 -37663 (-0.06%) 0.38%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_client 64684006 64647951 -36055 (-0.06%) 0.58%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_client 3115004 3113350 -1654 (-0.05%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_client 3107593 3106050 -1543 (-0.05%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_chacha_client 3303184 3304707 1523 (0.05%) 0.33%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_client 1718594 1718105 -489 (-0.03%) 0.20%
handshake_no_resume_ring_1.3_rsa_aes_client 2331124 2330559 -565 (-0.02%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_client 2336775 2336210 -565 (-0.02%) 0.20%
transfer_no_resume_ring_1.2_rsa_aes_client 57914797 57901998 -12799 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_client 58070825 58058029 -12796 (-0.02%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_client 58008827 57997350 -11477 (-0.02%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_client 58019654 58008178 -11476 (-0.02%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_client 58016679 58005206 -11473 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_client 58128461 58116984 -11477 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 58123756 58112282 -11474 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 58133724 58122250 -11474 (-0.02%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_client 2244009 2243626 -383 (-0.02%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_aes_client 3303921 3303387 -534 (-0.02%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_client 92534915 92523429 -11486 (-0.01%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_client 92545743 92534258 -11485 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 92593886 92582401 -11485 (-0.01%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_client 92544048 92532571 -11477 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_client 92589907 92578428 -11479 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 92583911 92572436 -11475 (-0.01%) 0.20%
transfer_no_resume_1.2_no_crypto_client 117308742 117295944 -12798 (-0.01%) 0.20%
transfer_no_resume_1.3_no_crypto_client 117355945 117344464 -11481 (-0.01%) 0.20%
transfer_no_resume_ring_1.2_rsa_aes_server 45922129 45917925 -4204 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_server 46128688 46124482 -4206 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_server 46180616 46176460 -4156 (-0.01%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_server 11302756 11303522 766 (0.01%) 0.82%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_server 80361105 80356948 -4157 (-0.01%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_server 46015088 46013172 -1916 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_server 46005133 46003290 -1843 (-0.00%) 0.20%
transfer_no_resume_1.2_no_crypto_server 104989072 104985035 -4037 (-0.00%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 9497508 9497151 -357 (-0.00%) 0.91%
transfer_no_resume_ring_1.3_rsa_chacha_server 80240658 80238168 -2490 (-0.00%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 4278659 4278576 -83 (-0.00%) 0.26%
handshake_no_resume_ring_1.3_ecdsap384_chacha_client 34735601 34734974 -627 (-0.00%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_aes_client 34733898 34733274 -624 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_server 46009950 46010590 640 (0.00%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 4277782 4277814 32 (0.00%) 1.00%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_client 64442989 64442711 -278 (-0.00%) 0.59%
transfer_no_resume_ring_1.3_ecdsap384_chacha_server 80249978 80249967 -11 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 46176183 46176177 -6 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 80367047 80367038 -9 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 80356026 80356019 -7 (-0.00%) 0.20%
transfer_no_resume_1.3_no_crypto_server 105032248 105032245 -3 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_server 80245480 80245478 -2 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 46186561 46186561 0 (0.00%) 0.20%

Wall-time

Significant differences

⚠️ There are significant wall-time differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_tickets_1.3_no_crypto 661.17 µs 627.28 µs ✅ -33.88 µs (-5.12%) 5.00%
handshake_tickets_aws_lc_rs_1.2_rsa_aes 1.82 ms 1.74 ms ✅ -0.07 ms (-4.06%) 3.37%
handshake_session_id_ring_1.2_rsa_aes 1.50 ms 1.48 ms ✅ -0.02 ms (-1.20%) 1.00%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_session_id_1.3_no_crypto 679.79 µs 646.04 µs -33.75 µs (-4.96%) 5.00%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes 1.28 ms 1.23 ms -0.05 ms (-3.86%) 5.58%
handshake_session_id_1.2_no_crypto 363.25 µs 349.79 µs -13.47 µs (-3.71%) 5.00%
handshake_tickets_1.2_no_crypto 394.89 µs 380.27 µs -14.63 µs (-3.70%) 5.00%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes 1.10 ms 1.06 ms -0.04 ms (-3.62%) 5.08%
handshake_session_id_aws_lc_rs_1.2_rsa_aes 1.64 ms 1.59 ms -0.05 ms (-3.34%) 4.12%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha 1.27 ms 1.23 ms -0.04 ms (-3.18%) 5.78%
handshake_no_resume_1.3_no_crypto 89.98 µs 87.77 µs -2.22 µs (-2.46%) 5.00%
handshake_no_resume_1.2_no_crypto 81.06 µs 79.35 µs -1.71 µs (-2.10%) 5.00%
transfer_no_resume_1.3_no_crypto 11.97 ms 11.79 ms -0.18 ms (-1.53%) 5.00%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes 5.13 ms 5.05 ms -0.08 ms (-1.49%) 6.58%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha 9.20 ms 9.08 ms -0.12 ms (-1.27%) 2.63%
handshake_session_id_aws_lc_rs_1.3_rsa_aes 9.25 ms 9.13 ms -0.12 ms (-1.25%) 3.05%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha 9.36 ms 9.25 ms -0.11 ms (-1.13%) 2.70%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes 5.32 ms 5.26 ms -0.06 ms (-1.07%) 7.11%
handshake_tickets_aws_lc_rs_1.3_rsa_aes 9.39 ms 9.29 ms -0.10 ms (-1.07%) 3.17%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha 8.48 ms 8.40 ms -0.08 ms (-0.95%) 3.12%
handshake_tickets_ring_1.2_rsa_aes 1.57 ms 1.56 ms -0.01 ms (-0.94%) 1.08%
handshake_no_resume_ring_1.3_ecdsap256_aes 465.15 µs 461.06 µs -4.09 µs (-0.88%) 3.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha 9.15 ms 9.07 ms -0.08 ms (-0.83%) 2.77%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes 8.52 ms 8.46 ms -0.07 ms (-0.78%) 3.48%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes 8.69 ms 8.63 ms -0.06 ms (-0.75%) 3.28%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha 9.33 ms 9.26 ms -0.07 ms (-0.74%) 2.64%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes 9.20 ms 9.13 ms -0.07 ms (-0.73%) 3.28%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha 8.65 ms 8.59 ms -0.06 ms (-0.73%) 2.98%
handshake_no_resume_ring_1.3_ecdsap256_chacha 461.84 µs 458.56 µs -3.28 µs (-0.71%) 3.94%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes 585.66 µs 581.68 µs -3.99 µs (-0.68%) 3.60%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes 9.37 ms 9.31 ms -0.06 ms (-0.62%) 2.98%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 1.26 ms 1.25 ms -0.01 ms (-0.53%) 1.39%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes 1.27 ms 1.26 ms -0.01 ms (-0.47%) 1.72%
transfer_no_resume_ring_1.2_rsa_aes 5.82 ms 5.79 ms -0.03 ms (-0.44%) 5.84%
handshake_no_resume_ring_1.2_rsa_aes 946.54 µs 942.96 µs -3.58 µs (-0.38%) 1.17%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes 4.63 ms 4.62 ms -0.02 ms (-0.38%) 8.72%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes 5.32 ms 5.30 ms -0.02 ms (-0.35%) 7.33%
handshake_tickets_ring_1.3_ecdsap256_aes 5.53 ms 5.51 ms -0.02 ms (-0.35%) 1.19%
handshake_tickets_ring_1.3_rsa_aes 6.02 ms 6.00 ms -0.02 ms (-0.35%) 1.00%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha 13.79 ms 13.74 ms -0.05 ms (-0.34%) 2.72%
transfer_no_resume_ring_1.3_ecdsap256_aes 5.40 ms 5.38 ms -0.02 ms (-0.32%) 6.87%
handshake_tickets_ring_1.3_ecdsap256_chacha 5.49 ms 5.47 ms -0.02 ms (-0.30%) 1.41%
transfer_no_resume_ring_1.3_rsa_aes 5.88 ms 5.87 ms -0.02 ms (-0.28%) 6.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha 3.55 ms 3.56 ms 0.01 ms (0.25%) 1.00%
handshake_no_resume_ring_1.3_rsa_chacha 952.40 µs 950.12 µs -2.29 µs (-0.24%) 1.79%
handshake_session_id_ring_1.3_rsa_chacha 5.92 ms 5.91 ms -0.01 ms (-0.24%) 1.49%
handshake_session_id_ring_1.3_ecdsap256_aes 5.47 ms 5.45 ms -0.01 ms (-0.23%) 1.29%
handshake_session_id_ring_1.3_rsa_aes 5.97 ms 5.95 ms -0.01 ms (-0.22%) 1.06%
handshake_tickets_ring_1.3_rsa_chacha 5.98 ms 5.97 ms -0.01 ms (-0.22%) 1.26%
handshake_no_resume_ring_1.3_ecdsap384_aes 3.56 ms 3.56 ms 0.01 ms (0.22%) 1.00%
handshake_no_resume_ring_1.3_rsa_aes 953.11 µs 951.07 µs -2.04 µs (-0.21%) 1.45%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 583.04 µs 581.79 µs -1.25 µs (-0.21%) 3.24%
handshake_session_id_ring_1.3_ecdsap256_chacha 5.43 ms 5.42 ms -0.01 ms (-0.19%) 1.79%
transfer_no_resume_1.2_no_crypto 11.76 ms 11.75 ms -0.01 ms (-0.13%) 5.00%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 13.79 ms 13.77 ms -0.02 ms (-0.12%) 2.85%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 13.11 ms 13.09 ms -0.02 ms (-0.11%) 2.87%
transfer_no_resume_ring_1.3_ecdsap384_aes 8.49 ms 8.48 ms -0.01 ms (-0.11%) 4.56%
handshake_tickets_ring_1.3_ecdsap384_aes 8.62 ms 8.61 ms -0.01 ms (-0.11%) 1.00%
transfer_no_resume_ring_1.3_ecdsap256_chacha 12.95 ms 12.94 ms -0.01 ms (-0.10%) 2.68%
transfer_no_resume_ring_1.3_rsa_chacha 13.44 ms 13.43 ms -0.01 ms (-0.07%) 2.74%
handshake_session_id_ring_1.3_ecdsap384_chacha 8.52 ms 8.52 ms 0.01 ms (0.06%) 1.29%
handshake_tickets_ring_1.3_ecdsap384_chacha 8.58 ms 8.58 ms -0.00 ms (-0.03%) 1.00%
transfer_no_resume_ring_1.3_ecdsap384_chacha 16.04 ms 16.05 ms 0.00 ms (0.02%) 2.29%
handshake_session_id_ring_1.3_ecdsap384_aes 8.56 ms 8.56 ms -0.00 ms (-0.00%) 1.00%

Additional information

Historical results

Checkout details:

Copy link

codecov bot commented Jun 17, 2025

Codecov Report

Attention: Patch coverage is 97.57674% with 15 lines in your changes missing coverage. Please review.

Project coverage is 95.33%. Comparing base (c82b2cf) to head (f04d7b5).
Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
rustls/src/client/client_conn.rs 66.66% 6 Missing ⚠️
rustls/src/msgs/macros.rs 92.30% 5 Missing ⚠️
rustls/src/client/hs.rs 98.24% 1 Missing ⚠️
rustls/src/client/tls13.rs 91.66% 1 Missing ⚠️
rustls/src/msgs/handshake.rs 99.41% 1 Missing ⚠️
rustls/src/quic.rs 83.33% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2502      +/-   ##
==========================================
- Coverage   95.40%   95.33%   -0.07%     
==========================================
  Files          97       97              
  Lines       21881    21768     -113     
==========================================
- Hits        20875    20752     -123     
- Misses       1006     1016      +10     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ctz ctz marked this pull request as ready for review June 17, 2025 12:38
@ctz ctz force-pushed the jbp-client-hello-exts branch from fa3bee7 to 6130e46 Compare June 20, 2025 07:53
Copy link
Member

@djc djc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good stuff!

@djc
Copy link
Member

djc commented Jun 20, 2025

On dev-0.24, should we use a newtype ProtocolName wrapper (to be bikeshedded) in the public API?

Copy link
Member

@cpu cpu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice! 🌠

ctz added 3 commits June 23, 2025 09:55
Shortly extension bodies will be required to `impl Codec`, so
this type will be used for extensions without a body.
Instead of `Vec<ClientExtension>`, store the extension data as
a struct.  This is possible because past commits have removed
the need for this us to losslessly round-trip extension data.

This involves fewer allocations to construct the extensions for
clients.

It eliminates repeated iteration of the vector to find specific
extensions when processing a `ClientHello` for servers.

It also reduces the cost of detecting duplicate extensions, which
is moved into the decoding process -- a new
`InvalidMessage::DuplicateExtension` error is introduced for this
purpose.

The struct is produced by a macro, which externalises the overall
encoding and decoding operations.  This allows specialisation for
order of encoding (for ClientHello extension order randomisation)
and whether an empty input is allowed (for ClientHello extensions
in TLS1.2).

During decoding a ClientHello, validate that any PSK offer appears
last.  This replaces `ClientHelloPayload::check_psk_ext_is_last`.
Now that we have a specific error for this we can produce the
error bogo expects for this case.
@ctz ctz force-pushed the jbp-client-hello-exts branch from 6130e46 to f04d7b5 Compare June 23, 2025 11:22
@ctz ctz enabled auto-merge June 23, 2025 11:45
@ctz ctz added this pull request to the merge queue Jun 23, 2025
Merged via the queue into main with commit 54100be Jun 23, 2025
34 checks passed
@ctz ctz deleted the jbp-client-hello-exts branch June 23, 2025 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants