@fails-components/webtransport 0.0.1-rc.2 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +5 -2
- package/package.json +1 -1
- package/platform/net/quiche/common/platform/impl/quiche_flags_impl.h +1 -54
- package/platform/quiche_platform_impl/quic_flags_impl.h +1 -27
- package/platform/quiche_platform_impl/quiche_flag_utils_impl.h +1 -16
- package/platform/quiche_platform_impl/quiche_flags_impl.h +6 -1
- package/src/http3client.cc +14 -2
- package/src/http3client.h +10 -15
- package/src/webtransport.js +4 -1
- package/third_party/boringssl/src/.clang-format +11 -0
- package/third_party/boringssl/src/crypto/CMakeLists.txt +0 -1
- package/third_party/boringssl/src/crypto/asn1/a_strex.c +61 -95
- package/third_party/boringssl/src/crypto/asn1/asn1_par.c +31 -9
- package/third_party/boringssl/src/crypto/asn1/tasn_dec.c +33 -19
- package/third_party/boringssl/src/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl +8 -8
- package/third_party/boringssl/src/crypto/cipher_extra/derive_key.c +4 -4
- package/third_party/boringssl/src/crypto/cipher_extra/e_des.c +1 -0
- package/third_party/boringssl/src/crypto/cipher_extra/e_null.c +1 -0
- package/third_party/boringssl/src/crypto/cipher_extra/e_rc2.c +1 -0
- package/third_party/boringssl/src/crypto/cipher_extra/e_rc4.c +2 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/asm/x86_64-mont5.pl +0 -197
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_test.cc +0 -9
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_tests.txt +68 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/exponentiation.c +45 -40
- package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +11 -8
- package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.c +15 -106
- package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.h +5 -1
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +12 -32
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/internal.h +39 -0
- package/third_party/boringssl/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +7 -9
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +2 -1
- package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +1 -0
- package/third_party/boringssl/src/crypto/pkcs8/pkcs8_x509.c +4 -4
- package/third_party/boringssl/src/crypto/x509/algorithm.c +18 -1
- package/third_party/boringssl/src/crypto/x509/x_algor.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_crl.c +3 -3
- package/third_party/boringssl/src/crypto/x509/x_exten.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_name.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_pubkey.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_req.c +2 -2
- package/third_party/boringssl/src/crypto/x509/x_sig.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_spki.c +2 -2
- package/third_party/boringssl/src/crypto/x509/x_val.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_x509.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_akeya.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +6 -6
- package/third_party/boringssl/src/crypto/x509v3/v3_crld.c +6 -6
- package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_extku.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_genn.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_info.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_int.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_ncons.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_ocsp.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_pcons.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_pmaps.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +1 -1
- package/third_party/boringssl/src/decrepit/blowfish/blowfish.c +1 -0
- package/third_party/boringssl/src/decrepit/cast/cast.c +1 -0
- package/third_party/boringssl/src/decrepit/cfb/cfb.c +1 -0
- package/third_party/boringssl/src/decrepit/xts/xts.c +2 -1
- package/third_party/boringssl/src/fuzz/CMakeLists.txt +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip.cc +57 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/0461791e54b4840c109637952eab43d9b938cab8 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/06e57a7b98a403a00822739739924b97ae6c74e9 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/078c3c1199930781466871c8dda69bec379286a4 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/082a991742f652549e4b207100ee521f474e0a99 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/091e3389548686c5038d04e3d76b9c4d30502074 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/13e484c406efe97dc9d91f8b80a27b0e597c34da +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/153d254254345b61e20e7b37637dd6f6fd71ba01 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/163605136e22f5b5302fe60d1f17837bee6b6b2b +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1a96ec99b487b93052cd860c447e6d126dcc36d4 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1cc9ad96fcee279e8589b7071c7a0ccd111098f2 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/229b8e1825512868e0e11a199ed71231dd41bb4f +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/236d820eadf7f84d70de7bb8be5f1c57a4005de2 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/24fd9742dbdee3167509db4af245ad6f8c4c1e99 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2896f8deb3c4e8bdfeab743b22c64c92316880f7 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/29b6252fe9c4d1186394b1664c421cca795b61a5 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2b4955132275314d1d377f37f93d8c1879a3519a +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2e7112ac524a7a663632397cbb41f7dfd22e92c6 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/396d197005432accf99bf0f483286e459eb24063 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3c75fe79266cf639f2180722a3f03f8fc3e25685 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3fbb104fb0eb6cae4af34d8a516998336b3a6778 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/422fa995b3fdfed572b68b292062c330d6d05272 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/428b48fc494cee828f0c27f77aef477cb2e1fd80 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4bd69e424b6fa38f9e63e58b8d0e95ac2d38d598 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4be7e1f134e1c55aeadeead515200f6f1e6254ba +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4de268400e174db2dc306f45c833cf968a6c6546 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/52d2c7efcd7da0eb7463829e05a598e36729bfae +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53cf415eb9de49fb5a0cb46e745e413a99aa0779 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53ea84c48a5792281a46eb5a9c896d54ea3f1838 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5e5361730362736fe3e2804d8566e3c91454509b +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6654fedb1fc4b07095695b062b5af4c2f12d59ae +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6cad8b2a41194372ec897bece6512fe8331e274d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6f40330ec07e8e22f113f982b297ff7f86b8e485 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/738f291e53e97c08dae378c71ef70a60e31ae900 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7396791821e64fc9340249a4bcbd2198e9f237db +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7653595e28f23e62ea6707c99ca08c780a69335f +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/77de68daecd823babbb58edb1c8e14d7106e83bb +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7cb5c71603a787032973d6ddc9c2c34638005784 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/80a1e1ae75c1e5ef7bbde5f5877e3e5b26b3cf58 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/872ba8af52a8c1380c388bab0e20bec2e729db80 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8855f2d904cf1bbaffc54e68d98890fdc9ec14cc +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8a22f56ee86cc2d67e9610a6b0ed59f21008a341 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/935a69e9f3bfa1dd3bf058fa3e1b953e82195de6 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/951ccb49640c8f9e81fb4e0d82730321f4e15bb3 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/9af1f3ed10c7a54f6b57c344015141cc082db23b +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a0b7dd1684089c63a4aac2e4a832544df4d639d6 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22d0d3565a509a4bfedce078090d8c6a908d950 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22f1185582f66227118c8e9002a5c29728f0650 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a457945cb86ec812235f407ed70fe72fbaf694a1 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4ee44c4e8728d4924642ef8765063262e8c4601 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4fc609a6546fc0061f499f0faed9054fd388c9a +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a7c13e6fe60eee08b9aac00a095a9301ea1a9824 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a98e22a5a8c2f5dda365d55e76536931010e1560 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aca6ed86348b1176bfbe4ebf32b2d48a0aa42f9f +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aeefb82d7f5cc69168aade3b196a84d0f5c14bf2 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b37e0f6fa42840c773747c4cb608c278ab65021d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b5d4e67f0ec5b1a90100d8ad424d77aea8e16353 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b65ea16ba4dae8599ebbad7c4cb9fcd505edf485 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b95311782071c4d9182c0effe32487fc5cdbd33d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bbcaf4d15f92bfc6d624eee967fade1a74329f30 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc26b8c794ac0adf948cbca02e88b3901824ef17 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc7b23c2c68e4ad33ecea493ff6e60d423371cd0 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bd8daf3e78d8ba3a25838053b6993edc7a21c30e +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c4d94647e646f02da1736b3179804ad6083acde9 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c869b259f9f81bec8ed24a9bc2cef35a513fb9fc +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ceee46f04a09ef5d3342ef25d9f483e861727575 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d05c069216b54f35bc7e3ee08371baee243c089a +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d18c30ba21e0d085dd983ad528f2c9001285d3d2 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d2c00146b2f2bcb4c6cecb731d2062273523d8c8 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d9bc7157a485958a5fce35ce777f551fe3f7d94c +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/defce76f0d3c3e057bb623986bacee7bbd07d1a1 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/df9b696736847e43672b7a99ca05655af8a81135 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e5b420f71cf412bd9fdebdd46245fabd1f3462e5 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e7979b0e6e3e9cd64ceab99778c55205d6f92a73 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ee629f1935abc05fdc32ba314ec1f80f4bff2a17 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/f944dcd635f9801f7ac90a407fbc479964dec024 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fadcde7d914246ca04bd56e68fd4045b1cf1c5ef +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fd8be6506a9995f626eef831b9c981a80b0e3640 +0 -0
- package/third_party/boringssl/src/include/openssl/cipher.h +21 -48
- package/third_party/boringssl/src/include/openssl/ssl.h +38 -0
- package/third_party/boringssl/src/ssl/handshake_client.cc +8 -2
- package/third_party/boringssl/src/ssl/internal.h +16 -3
- package/third_party/boringssl/src/ssl/s3_both.cc +23 -1
- package/third_party/boringssl/src/ssl/ssl_lib.cc +94 -1
- package/third_party/boringssl/src/ssl/test/runner/runner.go +192 -0
- package/third_party/boringssl/src/ssl/test/test_config.cc +6 -0
- package/third_party/boringssl/src/ssl/test/test_config.h +1 -0
- package/third_party/boringssl/src/ssl/tls13_client.cc +7 -3
- package/third_party/boringssl/src/ssl/tls13_server.cc +2 -1
- package/third_party/boringssl/src/util/convert_comments.go +23 -0
- package/third_party/boringssl/src/util/fipstools/acvp/acvptool/acvp/acvp.go +1 -1
- package/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/modulewrapper.cc +32 -21
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +3 -2
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +2 -2
- package/third_party/quiche/quiche/http2/adapter/http2_protocol.h +5 -1
- package/third_party/quiche/quiche/http2/adapter/http2_util.cc +2 -0
- package/third_party/quiche/quiche/http2/adapter/http2_visitor_interface.h +2 -0
- package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +119 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +130 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +23 -12
- package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +6 -11
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +0 -5
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.h +0 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.cc +0 -10
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.h +0 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/send_algorithm_interface.h +0 -6
- package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.cc +0 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h +0 -1
- package/third_party/quiche/quiche/quic/core/crypto/transport_parameters_test.cc +1 -3
- package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +19 -9
- package/third_party/quiche/quiche/quic/core/http/http_decoder_test.cc +6 -3
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.cc +4 -16
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +6 -6
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +25 -15
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +6 -5
- package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +1 -2
- package/third_party/quiche/quiche/quic/core/quic_bandwidth_test.cc +12 -12
- package/third_party/quiche/quiche/quic/core/quic_connection.cc +5 -95
- package/third_party/quiche/quiche/quic/core/quic_connection.h +0 -35
- package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +80 -196
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +29 -5
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +46 -0
- package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +17 -14
- package/third_party/quiche/quiche/quic/core/quic_flags_list.h +54 -54
- package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +8 -5
- package/third_party/quiche/quiche/quic/core/quic_framer_test.cc +8 -5
- package/third_party/quiche/quiche/quic/core/quic_idle_network_detector.cc +1 -0
- package/third_party/quiche/quiche/quic/core/quic_idle_network_detector_test.cc +29 -0
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +1 -5
- package/third_party/quiche/quiche/quic/core/quic_packet_creator_test.cc +18 -11
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.cc +9 -28
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.h +0 -13
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager_test.cc +1 -49
- package/third_party/quiche/quiche/quic/core/quic_session.cc +0 -8
- package/third_party/quiche/quiche/quic/core/quic_session.h +0 -1
- package/third_party/quiche/quiche/quic/core/quic_stream.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.cc +5 -0
- package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.h +4 -0
- package/third_party/quiche/quiche/quic/core/quic_stream_sequencer_test.cc +12 -5
- package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +27 -12
- package/third_party/quiche/quiche/quic/core/quic_types.cc +0 -1
- package/third_party/quiche/quiche/quic/core/quic_types.h +0 -3
- package/third_party/quiche/quiche/quic/core/quic_utils.cc +0 -3
- package/third_party/quiche/quiche/quic/core/quic_utils_test.cc +0 -2
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker_test.cc +16 -12
- package/third_party/quiche/quiche/quic/core/tls_handshaker.cc +18 -3
- package/third_party/quiche/quiche/quic/qbone/platform/internet_checksum.cc +7 -2
- package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.cc +20 -12
- package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.h +10 -5
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +0 -2
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.cc +0 -8
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.h +0 -1
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_stream_test.cc +2 -1
- package/platform/net/quiche/common/platform/impl/quic_flags_list_add.h +0 -379
- package/platform/net/quiche/common/platform/impl/quiche_flags_impl.cc +0 -21
- package/third_party/boringssl/src/crypto/asn1/charmap.h +0 -15
- package/third_party/boringssl/src/crypto/asn1/charmap.pl +0 -135
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3c75fe79266cf639f2180722a3f03f8fc3e25685
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0+H[�
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3fbb104fb0eb6cae4af34d8a516998336b3a6778
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
���3
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/422fa995b3fdfed572b68b292062c330d6d05272
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/428b48fc494cee828f0c27f77aef477cb2e1fd80
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4bd69e424b6fa38f9e63e58b8d0e95ac2d38d598
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
00
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4be7e1f134e1c55aeadeead515200f6f1e6254ba
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4de268400e174db2dc306f45c833cf968a6c6546
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/52d2c7efcd7da0eb7463829e05a598e36729bfae
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53cf415eb9de49fb5a0cb46e745e413a99aa0779
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53ea84c48a5792281a46eb5a9c896d54ea3f1838
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
n�
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
?
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5e5361730362736fe3e2804d8566e3c91454509b
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6654fedb1fc4b07095695b062b5af4c2f12d59ae
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6cad8b2a41194372ec897bece6512fe8331e274d
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
;�
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6f40330ec07e8e22f113f982b297ff7f86b8e485
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/738f291e53e97c08dae378c71ef70a60e31ae900
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7396791821e64fc9340249a4bcbd2198e9f237db
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7653595e28f23e62ea6707c99ca08c780a69335f
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/77de68daecd823babbb58edb1c8e14d7106e83bb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7cb5c71603a787032973d6ddc9c2c34638005784
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/80a1e1ae75c1e5ef7bbde5f5877e3e5b26b3cf58
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/872ba8af52a8c1380c388bab0e20bec2e729db80
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8855f2d904cf1bbaffc54e68d98890fdc9ec14cc
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8a22f56ee86cc2d67e9610a6b0ed59f21008a341
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/935a69e9f3bfa1dd3bf058fa3e1b953e82195de6
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0���
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/951ccb49640c8f9e81fb4e0d82730321f4e15bb3
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/9af1f3ed10c7a54f6b57c344015141cc082db23b
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a0b7dd1684089c63a4aac2e4a832544df4d639d6
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22d0d3565a509a4bfedce078090d8c6a908d950
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22f1185582f66227118c8e9002a5c29728f0650
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a457945cb86ec812235f407ed70fe72fbaf694a1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��܅�����
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4ee44c4e8728d4924642ef8765063262e8c4601
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4fc609a6546fc0061f499f0faed9054fd388c9a
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
00E
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a7c13e6fe60eee08b9aac00a095a9301ea1a9824
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@@
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a98e22a5a8c2f5dda365d55e76536931010e1560
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aca6ed86348b1176bfbe4ebf32b2d48a0aa42f9f
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aeefb82d7f5cc69168aade3b196a84d0f5c14bf2
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b37e0f6fa42840c773747c4cb608c278ab65021d
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
w�ͳ
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b5d4e67f0ec5b1a90100d8ad424d77aea8e16353
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b65ea16ba4dae8599ebbad7c4cb9fcd505edf485
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b95311782071c4d9182c0effe32487fc5cdbd33d
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0<�
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bbcaf4d15f92bfc6d624eee967fade1a74329f30
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc26b8c794ac0adf948cbca02e88b3901824ef17
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0�
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc7b23c2c68e4ad33ecea493ff6e60d423371cd0
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��܅����Ԏ
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bd8daf3e78d8ba3a25838053b6993edc7a21c30e
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c4d94647e646f02da1736b3179804ad6083acde9
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c869b259f9f81bec8ed24a9bc2cef35a513fb9fc
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ceee46f04a09ef5d3342ef25d9f483e861727575
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0��
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d05c069216b54f35bc7e3ee08371baee243c089a
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d18c30ba21e0d085dd983ad528f2c9001285d3d2
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0�e
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d2c00146b2f2bcb4c6cecb731d2062273523d8c8
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0��
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d9bc7157a485958a5fce35ce777f551fe3f7d94c
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/defce76f0d3c3e057bb623986bacee7bbd07d1a1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
?�
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/df9b696736847e43672b7a99ca05655af8a81135
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e5b420f71cf412bd9fdebdd46245fabd1f3462e5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0�����_
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e7979b0e6e3e9cd64ceab99778c55205d6f92a73
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ee629f1935abc05fdc32ba314ec1f80f4bff2a17
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/f944dcd635f9801f7ac90a407fbc479964dec024
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fadcde7d914246ca04bd56e68fd4045b1cf1c5ef
ADDED
|
Binary file
|
package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fd8be6506a9995f626eef831b9c981a80b0e3640
ADDED
|
Binary file
|
|
@@ -174,6 +174,11 @@ OPENSSL_EXPORT int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx,
|
|
|
174
174
|
// of output bytes may be up to |in_len| plus the block length minus one and
|
|
175
175
|
// |out| must have sufficient space. The number of bytes actually output is
|
|
176
176
|
// written to |*out_len|. It returns one on success and zero otherwise.
|
|
177
|
+
//
|
|
178
|
+
// If |ctx| is an AEAD cipher, e.g. |EVP_aes_128_gcm|, and |out| is NULL, this
|
|
179
|
+
// function instead adds |in_len| bytes from |in| to the AAD and sets |*out_len|
|
|
180
|
+
// to |in_len|. The AAD must be fully specified in this way before this function
|
|
181
|
+
// is used to encrypt plaintext.
|
|
177
182
|
OPENSSL_EXPORT int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
|
|
178
183
|
int *out_len, const uint8_t *in,
|
|
179
184
|
int in_len);
|
|
@@ -191,6 +196,11 @@ OPENSSL_EXPORT int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, uint8_t *out,
|
|
|
191
196
|
// output bytes may be up to |in_len| plus the block length minus one and |out|
|
|
192
197
|
// must have sufficient space. The number of bytes actually output is written
|
|
193
198
|
// to |*out_len|. It returns one on success and zero otherwise.
|
|
199
|
+
//
|
|
200
|
+
// If |ctx| is an AEAD cipher, e.g. |EVP_aes_128_gcm|, and |out| is NULL, this
|
|
201
|
+
// function instead adds |in_len| bytes from |in| to the AAD and sets |*out_len|
|
|
202
|
+
// to |in_len|. The AAD must be fully specified in this way before this function
|
|
203
|
+
// is used to decrypt ciphertext.
|
|
194
204
|
OPENSSL_EXPORT int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
|
|
195
205
|
int *out_len, const uint8_t *in,
|
|
196
206
|
int in_len);
|
|
@@ -204,16 +214,18 @@ OPENSSL_EXPORT int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
|
|
|
204
214
|
OPENSSL_EXPORT int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, uint8_t *out,
|
|
205
215
|
int *out_len);
|
|
206
216
|
|
|
207
|
-
// EVP_Cipher performs a one-shot encryption/decryption operation
|
|
208
|
-
// blocks are maintained between calls. However, any
|
|
209
|
-
// still updated. For CBC-mode ciphers, the IV is
|
|
210
|
-
// ciphertext block. For stream ciphers, the stream is
|
|
211
|
-
// used. It returns one on success and zero otherwise
|
|
212
|
-
// has |EVP_CIPH_FLAG_CUSTOM_CIPHER| set. Then it returns the number of bytes
|
|
213
|
-
// written or -1 on error.
|
|
217
|
+
// EVP_Cipher performs a one-shot encryption/decryption operation for non-AEAD
|
|
218
|
+
// ciphers. No partial blocks are maintained between calls. However, any
|
|
219
|
+
// internal cipher state is still updated. For CBC-mode ciphers, the IV is
|
|
220
|
+
// updated to the final ciphertext block. For stream ciphers, the stream is
|
|
221
|
+
// advanced past the bytes used. It returns one on success and zero otherwise.
|
|
214
222
|
//
|
|
215
|
-
// WARNING:
|
|
216
|
-
// |
|
|
223
|
+
// WARNING: This function behaves completely differently on AEAD ciphers, such
|
|
224
|
+
// as |EVP_aes_128_gcm|. Rather than being a one-shot operation, it behaves like
|
|
225
|
+
// |EVP_CipherUpdate| or |EVP_CipherFinal_ex|, depending on whether |in| is
|
|
226
|
+
// NULL. It also instead returns the number of bytes written or -1 on error.
|
|
227
|
+
// This behavior is deprecated. Use |EVP_CipherUpdate| or |EVP_CipherFinal_ex|
|
|
228
|
+
// instead.
|
|
217
229
|
//
|
|
218
230
|
// TODO(davidben): The normal ciphers currently never fail, even if, e.g.,
|
|
219
231
|
// |in_len| is not a multiple of the block size for CBC-mode decryption. The
|
|
@@ -582,45 +594,6 @@ typedef struct evp_cipher_info_st {
|
|
|
582
594
|
unsigned char iv[EVP_MAX_IV_LENGTH];
|
|
583
595
|
} EVP_CIPHER_INFO;
|
|
584
596
|
|
|
585
|
-
struct evp_cipher_st {
|
|
586
|
-
// type contains a NID identifing the cipher. (e.g. NID_aes_128_gcm.)
|
|
587
|
-
int nid;
|
|
588
|
-
|
|
589
|
-
// block_size contains the block size, in bytes, of the cipher, or 1 for a
|
|
590
|
-
// stream cipher.
|
|
591
|
-
unsigned block_size;
|
|
592
|
-
|
|
593
|
-
// key_len contains the key size, in bytes, for the cipher. If the cipher
|
|
594
|
-
// takes a variable key size then this contains the default size.
|
|
595
|
-
unsigned key_len;
|
|
596
|
-
|
|
597
|
-
// iv_len contains the IV size, in bytes, or zero if inapplicable.
|
|
598
|
-
unsigned iv_len;
|
|
599
|
-
|
|
600
|
-
// ctx_size contains the size, in bytes, of the per-key context for this
|
|
601
|
-
// cipher.
|
|
602
|
-
unsigned ctx_size;
|
|
603
|
-
|
|
604
|
-
// flags contains the OR of a number of flags. See |EVP_CIPH_*|.
|
|
605
|
-
uint32_t flags;
|
|
606
|
-
|
|
607
|
-
// app_data is a pointer to opaque, user data.
|
|
608
|
-
void *app_data;
|
|
609
|
-
|
|
610
|
-
int (*init)(EVP_CIPHER_CTX *ctx, const uint8_t *key, const uint8_t *iv,
|
|
611
|
-
int enc);
|
|
612
|
-
|
|
613
|
-
int (*cipher)(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
|
|
614
|
-
size_t inl);
|
|
615
|
-
|
|
616
|
-
// cleanup, if non-NULL, releases memory associated with the context. It is
|
|
617
|
-
// called if |EVP_CTRL_INIT| succeeds. Note that |init| may not have been
|
|
618
|
-
// called at this point.
|
|
619
|
-
void (*cleanup)(EVP_CIPHER_CTX *);
|
|
620
|
-
|
|
621
|
-
int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr);
|
|
622
|
-
};
|
|
623
|
-
|
|
624
597
|
|
|
625
598
|
#if defined(__cplusplus)
|
|
626
599
|
} // extern C
|
|
@@ -5104,6 +5104,44 @@ OPENSSL_EXPORT int SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg);
|
|
|
5104
5104
|
OPENSSL_EXPORT uint16_t SSL_CIPHER_get_value(const SSL_CIPHER *cipher);
|
|
5105
5105
|
|
|
5106
5106
|
|
|
5107
|
+
// Compliance policy configurations
|
|
5108
|
+
//
|
|
5109
|
+
// A TLS connection has a large number of different parameters. Some are well
|
|
5110
|
+
// known, like cipher suites, but many are obscure and configuration functions
|
|
5111
|
+
// for them may not exist. These policy controls allow broad configuration
|
|
5112
|
+
// goals to be specified so that they can flow down to all the different
|
|
5113
|
+
// parameters of a TLS connection.
|
|
5114
|
+
|
|
5115
|
+
enum ssl_compliance_policy_t BORINGSSL_ENUM_INT {
|
|
5116
|
+
// ssl_policy_fips_202205 configures a TLS connection to use:
|
|
5117
|
+
// * TLS 1.2 or 1.3
|
|
5118
|
+
// * For TLS 1.2, only ECDHE_[RSA|ECDSA]_WITH_AES_*_GCM_SHA*.
|
|
5119
|
+
// * For TLS 1.3, only AES-GCM
|
|
5120
|
+
// * P-256 or P-384 for key agreement.
|
|
5121
|
+
// * For server signatures, only PKCS#1/PSS with SHA256/384/512, or ECDSA
|
|
5122
|
+
// with P-256 or P-384.
|
|
5123
|
+
//
|
|
5124
|
+
// Note: this policy can be configured even if BoringSSL has not been built in
|
|
5125
|
+
// FIPS mode. Call |FIPS_mode| to check that.
|
|
5126
|
+
//
|
|
5127
|
+
// Note: this setting aids with compliance with NIST requirements but does not
|
|
5128
|
+
// guarantee it. Careful reading of SP 800-52r2 is recommended.
|
|
5129
|
+
ssl_compliance_policy_fips_202205,
|
|
5130
|
+
};
|
|
5131
|
+
|
|
5132
|
+
// SSL_CTX_set_compliance_policy configures various aspects of |ctx| based on
|
|
5133
|
+
// the given policy requirements. Subsequently calling other functions that
|
|
5134
|
+
// configure |ctx| may override |policy|, or may not. This should be the final
|
|
5135
|
+
// configuration function called in order to have defined behaviour.
|
|
5136
|
+
OPENSSL_EXPORT int SSL_CTX_set_compliance_policy(
|
|
5137
|
+
SSL_CTX *ctx, enum ssl_compliance_policy_t policy);
|
|
5138
|
+
|
|
5139
|
+
// SSL_set_compliance_policy acts the same as |SSL_CTX_set_compliance_policy|,
|
|
5140
|
+
// but only configures a single |SSL*|.
|
|
5141
|
+
OPENSSL_EXPORT int SSL_set_compliance_policy(
|
|
5142
|
+
SSL *ssl, enum ssl_compliance_policy_t policy);
|
|
5143
|
+
|
|
5144
|
+
|
|
5107
5145
|
// Nodejs compatibility section (hidden).
|
|
5108
5146
|
//
|
|
5109
5147
|
// These defines exist for node.js, with the hope that we can eliminate the
|
|
@@ -235,7 +235,12 @@ static bool ssl_write_client_cipher_list(const SSL_HANDSHAKE *hs, CBB *out,
|
|
|
235
235
|
// Add TLS 1.3 ciphers. Order ChaCha20-Poly1305 relative to AES-GCM based on
|
|
236
236
|
// hardware support.
|
|
237
237
|
if (hs->max_version >= TLS1_3_VERSION) {
|
|
238
|
-
|
|
238
|
+
const bool include_chacha20 = ssl_tls13_cipher_meets_policy(
|
|
239
|
+
TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff,
|
|
240
|
+
ssl->config->only_fips_cipher_suites_in_tls13);
|
|
241
|
+
|
|
242
|
+
if (!EVP_has_aes_hardware() && //
|
|
243
|
+
include_chacha20 && //
|
|
239
244
|
!CBB_add_u16(&child, TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff)) {
|
|
240
245
|
return false;
|
|
241
246
|
}
|
|
@@ -243,7 +248,8 @@ static bool ssl_write_client_cipher_list(const SSL_HANDSHAKE *hs, CBB *out,
|
|
|
243
248
|
!CBB_add_u16(&child, TLS1_CK_AES_256_GCM_SHA384 & 0xffff)) {
|
|
244
249
|
return false;
|
|
245
250
|
}
|
|
246
|
-
if (EVP_has_aes_hardware() &&
|
|
251
|
+
if (EVP_has_aes_hardware() && //
|
|
252
|
+
include_chacha20 && //
|
|
247
253
|
!CBB_add_u16(&child, TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff)) {
|
|
248
254
|
return false;
|
|
249
255
|
}
|
|
@@ -660,10 +660,15 @@ bool ssl_cipher_requires_server_key_exchange(const SSL_CIPHER *cipher);
|
|
|
660
660
|
size_t ssl_cipher_get_record_split_len(const SSL_CIPHER *cipher);
|
|
661
661
|
|
|
662
662
|
// ssl_choose_tls13_cipher returns an |SSL_CIPHER| corresponding with the best
|
|
663
|
-
// available from |cipher_suites| compatible with |version
|
|
664
|
-
// returns NULL if there isn't a compatible cipher.
|
|
663
|
+
// available from |cipher_suites| compatible with |version|, |group_id|, and
|
|
664
|
+
// |only_fips|. It returns NULL if there isn't a compatible cipher.
|
|
665
665
|
const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
|
|
666
|
-
uint16_t group_id);
|
|
666
|
+
uint16_t group_id, bool only_fips);
|
|
667
|
+
|
|
668
|
+
// ssl_tls13_cipher_meets_policy returns true if |cipher_id| is acceptable given
|
|
669
|
+
// |only_fips|. (For now there's only a single policy and so the policy argument
|
|
670
|
+
// is just a bool.)
|
|
671
|
+
bool ssl_tls13_cipher_meets_policy(uint16_t cipher_id, bool only_fips);
|
|
667
672
|
|
|
668
673
|
|
|
669
674
|
// Transcript layer.
|
|
@@ -3087,6 +3092,10 @@ struct SSL_CONFIG {
|
|
|
3087
3092
|
|
|
3088
3093
|
// permute_extensions is whether to permute extensions when sending messages.
|
|
3089
3094
|
bool permute_extensions : 1;
|
|
3095
|
+
|
|
3096
|
+
// only_fips_cipher_suites_in_tls13 constrains the selection of cipher suites
|
|
3097
|
+
// in TLS 1.3 such that only FIPS approved ones will be selected.
|
|
3098
|
+
bool only_fips_cipher_suites_in_tls13 : 1;
|
|
3090
3099
|
};
|
|
3091
3100
|
|
|
3092
3101
|
// From RFC 8446, used in determining PSK modes.
|
|
@@ -3694,6 +3703,10 @@ struct ssl_ctx_st {
|
|
|
3694
3703
|
// If enable_early_data is true, early data can be sent and accepted.
|
|
3695
3704
|
bool enable_early_data : 1;
|
|
3696
3705
|
|
|
3706
|
+
// only_fips_cipher_suites_in_tls13 constrains the selection of cipher suites
|
|
3707
|
+
// in TLS 1.3 such that only FIPS approved ones will be selected.
|
|
3708
|
+
bool only_fips_cipher_suites_in_tls13 : 1;
|
|
3709
|
+
|
|
3697
3710
|
private:
|
|
3698
3711
|
~ssl_ctx_st();
|
|
3699
3712
|
friend OPENSSL_EXPORT void SSL_CTX_free(SSL_CTX *);
|
|
@@ -691,8 +691,25 @@ class CipherScorer {
|
|
|
691
691
|
const bool security_128_is_fine_;
|
|
692
692
|
};
|
|
693
693
|
|
|
694
|
+
bool ssl_tls13_cipher_meets_policy(uint16_t cipher_id, bool only_fips) {
|
|
695
|
+
if (!only_fips) {
|
|
696
|
+
return true;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
switch (cipher_id) {
|
|
700
|
+
case TLS1_CK_AES_128_GCM_SHA256 & 0xffff:
|
|
701
|
+
case TLS1_CK_AES_256_GCM_SHA384 & 0xffff:
|
|
702
|
+
return true;
|
|
703
|
+
case TLS1_CK_CHACHA20_POLY1305_SHA256 & 0xffff:
|
|
704
|
+
return false;
|
|
705
|
+
default:
|
|
706
|
+
assert(false);
|
|
707
|
+
return false;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
|
|
694
711
|
const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
|
|
695
|
-
uint16_t group_id) {
|
|
712
|
+
uint16_t group_id, bool only_fips) {
|
|
696
713
|
if (CBS_len(&cipher_suites) % 2 != 0) {
|
|
697
714
|
return nullptr;
|
|
698
715
|
}
|
|
@@ -715,6 +732,11 @@ const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
|
|
|
715
732
|
continue;
|
|
716
733
|
}
|
|
717
734
|
|
|
735
|
+
if (!ssl_tls13_cipher_meets_policy(SSL_CIPHER_get_protocol_id(candidate),
|
|
736
|
+
only_fips)) {
|
|
737
|
+
continue;
|
|
738
|
+
}
|
|
739
|
+
|
|
718
740
|
const CipherScorer::Score candidate_score = scorer.Evaluate(candidate);
|
|
719
741
|
// |candidate_score| must be larger to displace the current choice. That way
|
|
720
742
|
// the client's order controls between ciphers with an equal score.
|
|
@@ -519,7 +519,8 @@ ssl_ctx_st::ssl_ctx_st(const SSL_METHOD *ssl_method)
|
|
|
519
519
|
allow_unknown_alpn_protos(false),
|
|
520
520
|
false_start_allowed_without_alpn(false),
|
|
521
521
|
handoff(false),
|
|
522
|
-
enable_early_data(false)
|
|
522
|
+
enable_early_data(false),
|
|
523
|
+
only_fips_cipher_suites_in_tls13(false) {
|
|
523
524
|
CRYPTO_MUTEX_init(&lock);
|
|
524
525
|
CRYPTO_new_ex_data(&ex_data);
|
|
525
526
|
}
|
|
@@ -639,6 +640,8 @@ SSL *SSL_new(SSL_CTX *ctx) {
|
|
|
639
640
|
ssl->config->retain_only_sha256_of_client_certs =
|
|
640
641
|
ctx->retain_only_sha256_of_client_certs;
|
|
641
642
|
ssl->config->permute_extensions = ctx->permute_extensions;
|
|
643
|
+
ssl->config->only_fips_cipher_suites_in_tls13 =
|
|
644
|
+
ctx->only_fips_cipher_suites_in_tls13;
|
|
642
645
|
|
|
643
646
|
if (!ssl->config->supported_group_list.CopyFrom(ctx->supported_group_list) ||
|
|
644
647
|
!ssl->config->alpn_client_proto_list.CopyFrom(
|
|
@@ -3079,3 +3082,93 @@ int SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg) {
|
|
|
3079
3082
|
ctx->legacy_ocsp_callback_arg = arg;
|
|
3080
3083
|
return 1;
|
|
3081
3084
|
}
|
|
3085
|
+
|
|
3086
|
+
namespace fips202205 {
|
|
3087
|
+
|
|
3088
|
+
// (References are to SP 800-52r2):
|
|
3089
|
+
|
|
3090
|
+
// Section 3.4.2.2
|
|
3091
|
+
// "at least one of the NIST-approved curves, P-256 (secp256r1) and P384
|
|
3092
|
+
// (secp384r1), shall be supported as described in RFC 8422."
|
|
3093
|
+
//
|
|
3094
|
+
// Section 3.3.1
|
|
3095
|
+
// "The server shall be configured to only use cipher suites that are
|
|
3096
|
+
// composed entirely of NIST approved algorithms"
|
|
3097
|
+
static const int kCurves[] = {NID_X9_62_prime256v1, NID_secp384r1};
|
|
3098
|
+
|
|
3099
|
+
static const uint16_t kSigAlgs[] = {
|
|
3100
|
+
SSL_SIGN_RSA_PKCS1_SHA256,
|
|
3101
|
+
SSL_SIGN_RSA_PKCS1_SHA384,
|
|
3102
|
+
SSL_SIGN_RSA_PKCS1_SHA512,
|
|
3103
|
+
// Table 4.1:
|
|
3104
|
+
// "The curve should be P-256 or P-384"
|
|
3105
|
+
SSL_SIGN_ECDSA_SECP256R1_SHA256,
|
|
3106
|
+
SSL_SIGN_ECDSA_SECP384R1_SHA384,
|
|
3107
|
+
SSL_SIGN_RSA_PSS_RSAE_SHA256,
|
|
3108
|
+
SSL_SIGN_RSA_PSS_RSAE_SHA384,
|
|
3109
|
+
SSL_SIGN_RSA_PSS_RSAE_SHA512,
|
|
3110
|
+
};
|
|
3111
|
+
|
|
3112
|
+
static const char kTLS12Ciphers[] =
|
|
3113
|
+
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:"
|
|
3114
|
+
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:"
|
|
3115
|
+
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:"
|
|
3116
|
+
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384";
|
|
3117
|
+
|
|
3118
|
+
static int Configure(SSL_CTX *ctx) {
|
|
3119
|
+
ctx->only_fips_cipher_suites_in_tls13 = true;
|
|
3120
|
+
|
|
3121
|
+
return
|
|
3122
|
+
// Section 3.1:
|
|
3123
|
+
// "Servers that support government-only applications shall be
|
|
3124
|
+
// configured to use TLS 1.2 and should be configured to use TLS 1.3
|
|
3125
|
+
// as well. These servers should not be configured to use TLS 1.1 and
|
|
3126
|
+
// shall not use TLS 1.0, SSL 3.0, or SSL 2.0.
|
|
3127
|
+
SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION) &&
|
|
3128
|
+
SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION) &&
|
|
3129
|
+
// Sections 3.3.1.1.1 and 3.3.1.1.2 are ambiguous about whether
|
|
3130
|
+
// HMAC-SHA-1 cipher suites are permitted with TLS 1.2. However, later the
|
|
3131
|
+
// Encrypt-then-MAC extension is required for all CBC cipher suites and so
|
|
3132
|
+
// it's easier to drop them.
|
|
3133
|
+
SSL_CTX_set_strict_cipher_list(ctx, kTLS12Ciphers) &&
|
|
3134
|
+
SSL_CTX_set1_curves(ctx, kCurves, OPENSSL_ARRAY_SIZE(kCurves)) &&
|
|
3135
|
+
SSL_CTX_set_signing_algorithm_prefs(ctx, kSigAlgs,
|
|
3136
|
+
OPENSSL_ARRAY_SIZE(kSigAlgs)) &&
|
|
3137
|
+
SSL_CTX_set_verify_algorithm_prefs(ctx, kSigAlgs,
|
|
3138
|
+
OPENSSL_ARRAY_SIZE(kSigAlgs));
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3141
|
+
static int Configure(SSL *ssl) {
|
|
3142
|
+
ssl->config->only_fips_cipher_suites_in_tls13 = true;
|
|
3143
|
+
|
|
3144
|
+
// See |Configure(SSL_CTX)|, above, for reasoning.
|
|
3145
|
+
return SSL_set_min_proto_version(ssl, TLS1_2_VERSION) &&
|
|
3146
|
+
SSL_set_max_proto_version(ssl, TLS1_3_VERSION) &&
|
|
3147
|
+
SSL_set_strict_cipher_list(ssl, kTLS12Ciphers) &&
|
|
3148
|
+
SSL_set1_curves(ssl, kCurves, OPENSSL_ARRAY_SIZE(kCurves)) &&
|
|
3149
|
+
SSL_set_signing_algorithm_prefs(ssl, kSigAlgs,
|
|
3150
|
+
OPENSSL_ARRAY_SIZE(kSigAlgs)) &&
|
|
3151
|
+
SSL_set_verify_algorithm_prefs(ssl, kSigAlgs,
|
|
3152
|
+
OPENSSL_ARRAY_SIZE(kSigAlgs));
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
} // namespace fips202205
|
|
3156
|
+
|
|
3157
|
+
int SSL_CTX_set_compliance_policy(SSL_CTX *ctx,
|
|
3158
|
+
enum ssl_compliance_policy_t policy) {
|
|
3159
|
+
switch (policy) {
|
|
3160
|
+
case ssl_compliance_policy_fips_202205:
|
|
3161
|
+
return fips202205::Configure(ctx);
|
|
3162
|
+
default:
|
|
3163
|
+
return 0;
|
|
3164
|
+
}
|
|
3165
|
+
}
|
|
3166
|
+
|
|
3167
|
+
int SSL_set_compliance_policy(SSL *ssl, enum ssl_compliance_policy_t policy) {
|
|
3168
|
+
switch (policy) {
|
|
3169
|
+
case ssl_compliance_policy_fips_202205:
|
|
3170
|
+
return fips202205::Configure(ssl);
|
|
3171
|
+
default:
|
|
3172
|
+
return 0;
|
|
3173
|
+
}
|
|
3174
|
+
}
|