grpc 1.69.0 → 1.70.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.
- checksums.yaml +4 -4
- data/Makefile +251 -249
- data/include/grpc/support/atm.h +0 -13
- data/src/core/call/request_buffer.cc +224 -0
- data/src/core/call/request_buffer.h +192 -0
- data/src/core/client_channel/client_channel.cc +2 -3
- data/src/core/client_channel/client_channel_args.h +21 -0
- data/src/core/client_channel/client_channel_filter.h +1 -3
- data/src/core/client_channel/retry_interceptor.cc +406 -0
- data/src/core/client_channel/retry_interceptor.h +157 -0
- data/src/core/client_channel/retry_service_config.h +13 -0
- data/src/core/client_channel/retry_throttle.cc +33 -18
- data/src/core/client_channel/retry_throttle.h +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +596 -94
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +189 -13
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -3
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +40 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +3 -1
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +66 -36
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +19 -17
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +116 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +67 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +12 -8
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +228 -21
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +65 -17
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +6 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +7 -106
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +7 -28
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +85 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +25 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +152 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +40 -10
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +135 -4
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +41 -9
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +3 -2
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +60 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +13 -2
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +102 -24
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +28 -19
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +251 -18
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +41 -16
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +2 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +11 -10
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +418 -413
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +161 -153
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +267 -261
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +29 -19
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +58 -65
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +73 -63
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +49 -48
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +117 -100
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +905 -897
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +460 -457
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +95 -95
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +202 -191
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +148 -135
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +23 -22
- data/src/core/filter/filter_args.h +112 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +1 -1
- data/src/core/lib/channel/promise_based_filter.h +5 -79
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +14 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +1 -0
- data/src/core/lib/experiments/experiments.cc +90 -39
- data/src/core/lib/experiments/experiments.h +43 -24
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -1
- data/src/core/lib/promise/activity.cc +2 -0
- data/src/core/lib/promise/activity.h +29 -8
- data/src/core/lib/promise/map.h +42 -0
- data/src/core/lib/promise/party.cc +36 -1
- data/src/core/lib/promise/party.h +13 -5
- data/src/core/lib/promise/sleep.h +1 -0
- data/src/core/lib/promise/status_flag.h +10 -0
- data/src/core/lib/resource_quota/arena.h +8 -0
- data/src/core/lib/resource_quota/connection_quota.h +4 -0
- data/src/core/lib/surface/call_utils.h +2 -0
- data/src/core/lib/surface/client_call.cc +43 -35
- data/src/core/lib/surface/client_call.h +5 -0
- data/src/core/lib/surface/event_string.cc +7 -1
- data/src/core/lib/surface/init_internally.h +13 -2
- data/src/core/lib/surface/server_call.cc +100 -85
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/call_filters.cc +10 -4
- data/src/core/lib/transport/call_filters.h +8 -0
- data/src/core/lib/transport/call_spine.cc +36 -71
- data/src/core/lib/transport/call_spine.h +131 -7
- data/src/core/lib/transport/call_state.h +132 -39
- data/src/core/lib/transport/interception_chain.cc +8 -0
- data/src/core/lib/transport/interception_chain.h +9 -0
- data/src/core/load_balancing/endpoint_list.cc +10 -0
- data/src/core/load_balancing/endpoint_list.h +13 -6
- data/src/core/load_balancing/lb_policy.h +0 -8
- data/src/core/load_balancing/pick_first/pick_first.cc +89 -56
- data/src/core/load_balancing/ring_hash/ring_hash.cc +158 -70
- data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -14
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +12 -15
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +4 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +139 -135
- data/src/core/resolver/xds/xds_dependency_manager.h +24 -18
- data/src/core/resolver/xds/xds_resolver.cc +28 -47
- data/src/core/server/server.cc +290 -24
- data/src/core/server/server.h +199 -61
- data/src/core/server/xds_server_config_fetcher.cc +78 -142
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/util/backoff.cc +15 -4
- data/src/core/util/http_client/httpcli.cc +66 -18
- data/src/core/util/http_client/httpcli.h +14 -4
- data/src/core/util/matchers.h +5 -10
- data/src/core/util/ref_counted.h +1 -0
- data/src/core/util/ref_counted_ptr.h +1 -1
- data/src/core/util/useful.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +54 -23
- data/src/core/xds/grpc/xds_metadata.h +8 -0
- data/src/core/xds/xds_client/xds_api.cc +0 -223
- data/src/core/xds/xds_client/xds_api.h +1 -133
- data/src/core/xds/xds_client/xds_client.cc +599 -466
- data/src/core/xds/xds_client/xds_client.h +107 -26
- data/src/core/xds/xds_client/xds_resource_type_impl.h +10 -5
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bitstr.c → a_bitstr.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_d2i_fp.c → a_d2i_fp.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_dup.c → a_dup.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_i2d_fp.c → a_i2d_fp.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_int.c → a_int.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_mbstr.c → a_mbstr.cc} +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_object.c → a_object.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strnid.c → a_strnid.cc} +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_type.c → a_type.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_lib.c → asn1_lib.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn_pack.c → asn_pack.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{posix_time.c → posix_time.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_dec.c → tasn_dec.cc} +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_enc.c → tasn_enc.cc} +9 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_fre.c → tasn_fre.cc} +14 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_new.c → tasn_new.cc} +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_utl.c → tasn_utl.cc} +13 -10
- data/third_party/boringssl-with-bazel/src/crypto/base64/{base64.c → base64.cc} +9 -12
- data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio.c → bio.cc} +32 -58
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio_mem.c → bio_mem.cc} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/{connect.c → connect.cc} +24 -16
- data/third_party/boringssl-with-bazel/src/crypto/bio/{file.c → file.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/{pair.c → pair.cc} +22 -20
- data/third_party/boringssl-with-bazel/src/crypto/bio/{printf.c → printf.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/{socket_helper.c → socket_helper.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/blake2/{blake2.c → blake2.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{bn_asn1.c → bn_asn1.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{convert.c → convert.cc} +21 -21
- data/third_party/boringssl-with-bazel/src/crypto/buf/{buf.c → buf.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{asn1_compat.c → asn1_compat.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{ber.c → ber.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbb.c → cbb.cc} +33 -49
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbs.c → cbs.cc} +20 -27
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{unicode.c → unicode.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/{chacha.c → chacha.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesctrhmac.c → e_aesctrhmac.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesgcmsiv.c → e_aesgcmsiv.cc} +23 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_chacha20poly1305.c → e_chacha20poly1305.cc} +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_des.c → e_des.cc} +61 -49
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_null.c → e_null.cc} +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc2.c → e_rc2.cc} +23 -19
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc4.c → e_rc4.cc} +10 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_tls.c → e_tls.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/{conf.c → conf.cc} +17 -14
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_apple.c → cpu_aarch64_apple.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_fuchsia.c → cpu_aarch64_fuchsia.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_linux.c → cpu_aarch64_linux.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_openbsd.c → cpu_aarch64_openbsd.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_sysreg.c → cpu_aarch64_sysreg.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_win.c → cpu_aarch64_win.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_freebsd.c → cpu_arm_freebsd.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_linux.c → cpu_arm_linux.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_intel.c → cpu_intel.cc} +47 -32
- data/third_party/boringssl-with-bazel/src/crypto/{crypto.c → crypto.cc} +6 -11
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519.c → curve25519.cc} +28 -31
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519_64_adx.c → curve25519_64_adx.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{spake25519.c → spake25519.cc} +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{dh_asn1.c → dh_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/{digest_extra.c → digest_extra.cc} +113 -31
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa.c → dsa.cc} +153 -154
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa_asn1.c → dsa_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_asn1.c → ec_asn1.cc} +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_derive.c → ec_derive.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{hash_to_curve.c → hash_to_curve.cc} +66 -64
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/{ecdsa_asn1.c → ecdsa_asn1.cc} +15 -25
- data/third_party/boringssl-with-bazel/src/crypto/engine/{engine.c → engine.cc} +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/err/{err.c → err.cc} +24 -27
- data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp.c → evp.cc} +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_ctx.c → evp_ctx.cc} +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh.c → p_dh.cc} +23 -14
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh_asn1.c → p_dh_asn1.cc} +38 -21
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dsa_asn1.c → p_dsa_asn1.cc} +19 -24
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec.c → p_ec.cc} +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec_asn1.c → p_ec_asn1.cc} +20 -20
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519.c → p_ed25519.cc} +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519_asn1.c → p_ed25519_asn1.cc} +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_hkdf.c → p_hkdf.cc} +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa.c → p_rsa.cc} +38 -37
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa_asn1.c → p_rsa_asn1.cc} +16 -18
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519.c → p_x25519.cc} +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519_asn1.c → p_x25519_asn1.cc} +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/evp/{pbkdf.c → pbkdf.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/{print.c → print.cc} +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/{scrypt.c → scrypt.cc} +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/{ex_data.c → ex_data.cc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c.inc → aes_nohw.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c.inc → key_wrap.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{bcm.c → bcm.cc} +96 -101
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +165 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c.inc → add.cc.inc} +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c.inc → x86_64-gcc.cc.inc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c.inc → bn.cc.inc} +12 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c.inc → ctx.cc.inc} +5 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c.inc → div.cc.inc} +29 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c.inc → div_extra.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c.inc → exponentiation.cc.inc} +22 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c.inc → gcd.cc.inc} +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c.inc → gcd_extra.cc.inc} +33 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c.inc → montgomery.cc.inc} +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c.inc → mul.cc.inc} +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c.inc → prime.cc.inc} +31 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c.inc → shift.cc.inc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c.inc → aead.cc.inc} +18 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c.inc → cipher.cc.inc} +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c.inc → e_aes.cc.inc} +46 -54
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c.inc → cmac.cc.inc} +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +14 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c.inc → dh.cc.inc} +15 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c.inc → digest.cc.inc} +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c.inc → digests.cc.inc} +29 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c.inc → digestsign.cc.inc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c.inc → ec.cc.inc} +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c.inc → ec_key.cc.inc} +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c.inc → felem.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c.inc → oct.cc.inc} +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c.inc → p224-64.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c.inc → p256-nistz.cc.inc} +15 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c.inc → p256.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c.inc → scalar.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c.inc → simple_mul.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c.inc → util.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c.inc → wnaf.cc.inc} +24 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c.inc → ecdh.cc.inc} +14 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c.inc → ecdsa.cc.inc} +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{fips_shared_support.c → fips_shared_support.cc} +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c.inc → hkdf.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c.inc → hmac.cc.inc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c.inc → gcm.cc.inc} +69 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c.inc → gcm_nohw.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +53 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c.inc → polyval.cc.inc} +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c.inc → ctrdrbg.cc.inc} +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c.inc → rand.cc.inc} +20 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c.inc → blinding.cc.inc} +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c.inc → padding.cc.inc} +21 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c.inc → rsa.cc.inc} +77 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c.inc → rsa_impl.cc.inc} +50 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c.inc → fips.cc.inc} +14 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c.inc → self_check.cc.inc} +56 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c.inc → service_indicator.cc.inc} +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c.inc → sha1.cc.inc} +26 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c.inc → sha256.cc.inc} +37 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c.inc → sha512.cc.inc} +48 -76
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/hpke/{hpke.c → hpke.cc} +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/hrss/{hrss.c → hrss.cc} +53 -110
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +191 -248
- data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/keccak/{keccak.c → keccak.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/{kyber.c → kyber.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/lhash/{lhash.c → lhash.cc} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md4/md4.c.inc → md4/md4.cc} +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5 → md5}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5/md5.c.inc → md5/md5.cc} +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/{mem.c → mem.cc} +34 -22
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/{mldsa.c → mldsa.cc} +646 -543
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/obj/{obj.c → obj.cc} +27 -30
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_info.c → pem_info.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_lib.c → pem_lib.cc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_oth.c → pem_oth.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7.c → pkcs7.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7_x509.c → pkcs7_x509.cc} +26 -25
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{p5_pbev2.c → p5_pbev2.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8.c → pkcs8.cc} +159 -158
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8_x509.c → pkcs8_x509.cc} +90 -97
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305.c → poly1305.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_arm.c → poly1305_arm.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_vec.c → poly1305_vec.cc} +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/{pool.c → pool.cc} +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{deterministic.c → deterministic.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fork_detect.c → fork_detect.cc} +11 -12
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{forkunsafe.c → forkunsafe.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{getentropy.c → getentropy.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{ios.c → ios.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{passive.c → passive.cc} +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{rand_extra.c → rand_extra.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{trusty.c → trusty.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{urandom.c → urandom.cc} +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{windows.c → windows.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{refcount.c → refcount.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_asn1.c → rsa_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_crypt.c → rsa_crypt.cc} +81 -78
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_extra.cc +17 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/{siphash.c → siphash.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/address.h +123 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.cc +169 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/internal.h +63 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.cc +161 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.h +70 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/params.h +83 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +307 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.cc +173 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.h +85 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.cc +171 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.h +50 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/{stack.c → stack.cc} +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/{thread_none.c → thread_none.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{thread_pthread.c → thread_pthread.cc} +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/{thread_win.c → thread_win.cc} +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{pmbtoken.c → pmbtoken.cc} +146 -158
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{trust_token.c → trust_token.cc} +19 -21
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{voprf.c → voprf.cc} +165 -169
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_digest.c → a_digest.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_sign.c → a_sign.cc} +37 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_verify.c → a_verify.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{algorithm.c → algorithm.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{asn1_gen.c → asn1_gen.cc} +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{by_dir.c → by_dir.cc} +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{policy.c → policy.cc} +188 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/{rsa_pss.c → rsa_pss.cc} +48 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akey.c → v3_akey.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_alt.c → v3_alt.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bcons.c → v3_bcons.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bitst.c → v3_bitst.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_conf.c → v3_conf.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_cpols.c → v3_cpols.cc} +47 -41
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_crld.c → v3_crld.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_enum.c → v3_enum.cc} +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_extku.c → v3_extku.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_genn.c → v3_genn.cc} +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ia5.c → v3_ia5.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_info.c → v3_info.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_int.c → v3_int.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_lib.c → v3_lib.cc} +9 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ncons.c → v3_ncons.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ocsp.c → v3_ocsp.cc} +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pcons.c → v3_pcons.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pmaps.c → v3_pmaps.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_prn.c → v3_prn.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_purp.c → v3_purp.cc} +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_skey.c → v3_skey.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_utl.c → v3_utl.cc} +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_att.c → x509_att.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_lu.c → x509_lu.cc} +6 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_v3.c → x509_v3.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vfy.c → x509_vfy.cc} +216 -212
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vpm.c → x509_vpm.cc} +55 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509spki.c → x509spki.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_all.c → x_all.cc} +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_crl.c → x_crl.cc} +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_name.c → x_name.cc} +39 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_pubkey.c → x_pubkey.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509.c → x_x509.cc} +48 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509a.c → x_x509a.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/gen/crypto/{err_data.c → err_data.cc} +359 -358
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +237 -275
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +13 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +17 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +8 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +2 -40
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +133 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +160 -116
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -6
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +667 -322
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +116 -119
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +163 -21
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +4 -12
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +94 -49
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +296 -198
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +23 -14
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +363 -343
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +48 -58
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +44 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -159
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +65 -58
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +910 -356
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +29 -41
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +13 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +90 -183
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +38 -64
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +103 -44
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +210 -220
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +70 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +20 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +146 -169
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +15 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +79 -95
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +91 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +30 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +51 -56
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +22 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +43 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +63 -59
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +204 -121
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +86 -59
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +51 -62
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +37 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
- metadata +339 -339
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -426
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -87
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -32
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -408
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -124
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -38
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -108
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -33
- data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
- data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -48
- data/src/core/util/atm.cc +0 -34
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
- data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
- data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
- data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
- data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
- data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
- data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
- data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
- data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
- data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
- data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
- data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -129
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bool.c → a_bool.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_gentm.c → a_gentm.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_octet.c → a_octet.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strex.c → a_strex.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_time.c → a_time.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_utctm.c → a_utctm.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_par.c → asn1_par.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_int.c → f_int.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_string.c → f_string.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_typ.c → tasn_typ.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{errno.c → errno.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{fd.c → fd.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{hexdump.c → hexdump.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{socket.c → socket.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{cipher_extra.c → cipher_extra.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{derive_key.c → derive_key.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{tls_cbc.c → tls_cbc.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/des/{des.c → des.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{params.c → params.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/{ecdh_extra.c → ecdh_extra.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_asn1.c → evp_asn1.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/evp/{sign.c → sign.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c.inc → aes.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c.inc → mode_wrappers.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c.inc → bytes.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c.inc → cmp.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c.inc → generic.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c.inc → jacobi.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c.inc → montgomery_inv.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c.inc → random.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c.inc → rsaz_exp.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c.inc → sqrt.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c.inc → e_aesccm.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c.inc → check.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c.inc → ec_montgomery.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c.inc → simple.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c.inc → cbc.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c.inc → cfb.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c.inc → ctr.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c.inc → ofb.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c.inc → kdf.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/obj/{obj_xref.c → obj_xref.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_all.c → pem_all.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pk8.c → pem_pk8.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pkey.c → pem_pkey.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_x509.c → pem_x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_xaux.c → pem_xaux.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/rc4/{rc4.c → rc4.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_print.c → rsa_print.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/{thread.c → thread.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{by_file.c → by_file.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{i2d_pr.c → i2d_pr.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{name_print.c → name_print.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_crl.c → t_crl.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_req.c → t_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509.c → t_x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509a.c → t_x509a.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akeya.c → v3_akeya.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509.c → x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_cmp.c → x509_cmp.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_d2.c → x509_d2.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_def.c → x509_def.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_ext.c → x509_ext.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_obj.c → x509_obj.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_req.c → x509_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_set.c → x509_set.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_trs.c → x509_trs.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_txt.c → x509_txt.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509cset.c → x509cset.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509name.c → x509name.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509rset.c → x509rset.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_algor.c → x_algor.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_attrib.c → x_attrib.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_exten.c → x_exten.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_req.c → x_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_sig.c → x_sig.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_spki.c → x_spki.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_val.c → x_val.cc} +0 -0
@@ -175,7 +175,7 @@ static bool tls1_check_duplicate_extensions(const CBS *cbs) {
|
|
175
175
|
}
|
176
176
|
|
177
177
|
Array<uint16_t> extension_types;
|
178
|
-
if (!extension_types.
|
178
|
+
if (!extension_types.InitForOverwrite(num_extensions)) {
|
179
179
|
return false;
|
180
180
|
}
|
181
181
|
|
@@ -243,12 +243,16 @@ bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
|
243
243
|
out->session_id = CBS_data(&session_id);
|
244
244
|
out->session_id_len = CBS_len(&session_id);
|
245
245
|
|
246
|
-
// Skip past DTLS cookie
|
247
246
|
if (SSL_is_dtls(out->ssl)) {
|
248
247
|
CBS cookie;
|
249
248
|
if (!CBS_get_u8_length_prefixed(cbs, &cookie)) {
|
250
249
|
return false;
|
251
250
|
}
|
251
|
+
out->dtls_cookie = CBS_data(&cookie);
|
252
|
+
out->dtls_cookie_len = CBS_len(&cookie);
|
253
|
+
} else {
|
254
|
+
out->dtls_cookie = nullptr;
|
255
|
+
out->dtls_cookie_len = 0;
|
252
256
|
}
|
253
257
|
|
254
258
|
CBS cipher_suites, compression_methods;
|
@@ -513,9 +517,7 @@ static bool ignore_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
513
517
|
return true;
|
514
518
|
}
|
515
519
|
|
516
|
-
static bool dont_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
517
|
-
return true;
|
518
|
-
}
|
520
|
+
static bool dont_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) { return true; }
|
519
521
|
|
520
522
|
// Server name indication (SNI).
|
521
523
|
//
|
@@ -566,7 +568,7 @@ static bool ext_sni_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
566
568
|
}
|
567
569
|
|
568
570
|
static bool ext_sni_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
569
|
-
if (hs->ssl->s3->session_reused ||
|
571
|
+
if (hs->ssl->s3->session_reused || //
|
570
572
|
!hs->should_ack_sni) {
|
571
573
|
return true;
|
572
574
|
}
|
@@ -703,20 +705,20 @@ static bool ext_ri_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
703
705
|
ssl_client_hello_type_t type) {
|
704
706
|
const SSL *const ssl = hs->ssl;
|
705
707
|
// Renegotiation indication is not necessary in TLS 1.3.
|
706
|
-
if (hs->min_version >= TLS1_3_VERSION ||
|
707
|
-
|
708
|
+
if (hs->min_version >= TLS1_3_VERSION || //
|
709
|
+
type == ssl_client_hello_inner) {
|
708
710
|
return true;
|
709
711
|
}
|
710
712
|
|
711
713
|
assert(ssl->s3->initial_handshake_complete ==
|
712
|
-
|
714
|
+
!ssl->s3->previous_client_finished.empty());
|
713
715
|
|
714
716
|
CBB contents, prev_finished;
|
715
717
|
if (!CBB_add_u16(out, TLSEXT_TYPE_renegotiate) ||
|
716
718
|
!CBB_add_u16_length_prefixed(out, &contents) ||
|
717
719
|
!CBB_add_u8_length_prefixed(&contents, &prev_finished) ||
|
718
|
-
!CBB_add_bytes(&prev_finished, ssl->s3->previous_client_finished,
|
719
|
-
ssl->s3->
|
720
|
+
!CBB_add_bytes(&prev_finished, ssl->s3->previous_client_finished.data(),
|
721
|
+
ssl->s3->previous_client_finished.size()) ||
|
720
722
|
!CBB_flush(out)) {
|
721
723
|
return false;
|
722
724
|
}
|
@@ -752,16 +754,11 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
752
754
|
return true;
|
753
755
|
}
|
754
756
|
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
// Check for logic errors
|
759
|
-
assert(!expected_len || ssl->s3->previous_client_finished_len);
|
760
|
-
assert(!expected_len || ssl->s3->previous_server_finished_len);
|
761
|
-
assert(ssl->s3->initial_handshake_complete ==
|
762
|
-
(ssl->s3->previous_client_finished_len != 0));
|
757
|
+
// Check for logic errors.
|
758
|
+
assert(ssl->s3->previous_client_finished.size() ==
|
759
|
+
ssl->s3->previous_server_finished.size());
|
763
760
|
assert(ssl->s3->initial_handshake_complete ==
|
764
|
-
|
761
|
+
!ssl->s3->previous_client_finished.empty());
|
765
762
|
|
766
763
|
// Parse out the extension contents.
|
767
764
|
CBS renegotiated_connection;
|
@@ -773,15 +770,22 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
773
770
|
}
|
774
771
|
|
775
772
|
// Check that the extension matches.
|
776
|
-
|
773
|
+
CBS client_verify, server_verify;
|
774
|
+
if (!CBS_get_bytes(&renegotiated_connection, &client_verify,
|
775
|
+
ssl->s3->previous_client_finished.size()) ||
|
776
|
+
!CBS_get_bytes(&renegotiated_connection, &server_verify,
|
777
|
+
ssl->s3->previous_server_finished.size()) ||
|
778
|
+
CBS_len(&renegotiated_connection) != 0) {
|
777
779
|
OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH);
|
778
780
|
*out_alert = SSL_AD_HANDSHAKE_FAILURE;
|
779
781
|
return false;
|
780
782
|
}
|
781
783
|
|
782
|
-
|
783
|
-
|
784
|
-
|
784
|
+
bool ok =
|
785
|
+
CBS_mem_equal(&client_verify, ssl->s3->previous_client_finished.data(),
|
786
|
+
ssl->s3->previous_client_finished.size()) &&
|
787
|
+
CBS_mem_equal(&server_verify, ssl->s3->previous_server_finished.data(),
|
788
|
+
ssl->s3->previous_server_finished.size());
|
785
789
|
#if defined(BORINGSSL_UNSAFE_FUZZER_MODE)
|
786
790
|
ok = true;
|
787
791
|
#endif
|
@@ -790,20 +794,8 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
790
794
|
*out_alert = SSL_AD_HANDSHAKE_FAILURE;
|
791
795
|
return false;
|
792
796
|
}
|
793
|
-
d += ssl->s3->previous_client_finished_len;
|
794
797
|
|
795
|
-
ok = CRYPTO_memcmp(d, ssl->s3->previous_server_finished,
|
796
|
-
ssl->s3->previous_server_finished_len) == 0;
|
797
|
-
#if defined(BORINGSSL_UNSAFE_FUZZER_MODE)
|
798
|
-
ok = true;
|
799
|
-
#endif
|
800
|
-
if (!ok) {
|
801
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH);
|
802
|
-
*out_alert = SSL_AD_HANDSHAKE_FAILURE;
|
803
|
-
return false;
|
804
|
-
}
|
805
798
|
ssl->s3->send_connection_binding = true;
|
806
|
-
|
807
799
|
return true;
|
808
800
|
}
|
809
801
|
|
@@ -887,7 +879,7 @@ static bool ext_ems_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
887
879
|
SSL *const ssl = hs->ssl;
|
888
880
|
|
889
881
|
if (contents != NULL) {
|
890
|
-
if (ssl_protocol_version(ssl) >= TLS1_3_VERSION ||
|
882
|
+
if (ssl_protocol_version(ssl) >= TLS1_3_VERSION || //
|
891
883
|
CBS_len(contents) != 0) {
|
892
884
|
return false;
|
893
885
|
}
|
@@ -953,17 +945,14 @@ static bool ext_ticket_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
953
945
|
return true;
|
954
946
|
}
|
955
947
|
|
956
|
-
Span<const uint8_t> ticket;
|
957
|
-
|
958
948
|
// Renegotiation does not participate in session resumption. However, still
|
959
949
|
// advertise the extension to avoid potentially breaking servers which carry
|
960
950
|
// over the state from the previous handshake, such as OpenSSL servers
|
961
951
|
// without upstream's 3c3f0259238594d77264a78944d409f2127642c4.
|
962
|
-
|
952
|
+
Span<const uint8_t> ticket;
|
953
|
+
if (!ssl->s3->initial_handshake_complete && //
|
963
954
|
ssl->session != nullptr &&
|
964
|
-
|
965
|
-
// Don't send TLS 1.3 session tickets in the ticket extension.
|
966
|
-
ssl_session_protocol_version(ssl->session.get()) < TLS1_3_VERSION) {
|
955
|
+
ssl_session_get_type(ssl->session.get()) == SSLSessionType::kTicket) {
|
967
956
|
ticket = ssl->session->ticket;
|
968
957
|
}
|
969
958
|
|
@@ -1199,7 +1188,7 @@ static bool ext_npn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1199
1188
|
|
1200
1189
|
while (CBS_len(contents) != 0) {
|
1201
1190
|
CBS proto;
|
1202
|
-
if (!CBS_get_u8_length_prefixed(contents, &proto) ||
|
1191
|
+
if (!CBS_get_u8_length_prefixed(contents, &proto) || //
|
1203
1192
|
CBS_len(&proto) == 0) {
|
1204
1193
|
return false;
|
1205
1194
|
}
|
@@ -1233,9 +1222,9 @@ static bool ext_npn_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1233
1222
|
return false;
|
1234
1223
|
}
|
1235
1224
|
|
1236
|
-
if (contents == NULL ||
|
1237
|
-
ssl->s3->initial_handshake_complete ||
|
1238
|
-
ssl->ctx->next_protos_advertised_cb == NULL ||
|
1225
|
+
if (contents == NULL || //
|
1226
|
+
ssl->s3->initial_handshake_complete || //
|
1227
|
+
ssl->ctx->next_protos_advertised_cb == NULL || //
|
1239
1228
|
SSL_is_dtls(ssl)) {
|
1240
1229
|
return true;
|
1241
1230
|
}
|
@@ -1263,9 +1252,9 @@ static bool ext_npn_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
1263
1252
|
}
|
1264
1253
|
|
1265
1254
|
CBB contents;
|
1266
|
-
if (!CBB_add_u16(out, TLSEXT_TYPE_next_proto_neg) ||
|
1267
|
-
!CBB_add_u16_length_prefixed(out, &contents) ||
|
1268
|
-
!CBB_add_bytes(&contents, npa, npa_len) ||
|
1255
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_next_proto_neg) || //
|
1256
|
+
!CBB_add_u16_length_prefixed(out, &contents) || //
|
1257
|
+
!CBB_add_bytes(&contents, npa, npa_len) || //
|
1269
1258
|
!CBB_flush(out)) {
|
1270
1259
|
return false;
|
1271
1260
|
}
|
@@ -1376,7 +1365,7 @@ static bool ext_alpn_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1376
1365
|
CBB *out_compressible,
|
1377
1366
|
ssl_client_hello_type_t type) {
|
1378
1367
|
const SSL *const ssl = hs->ssl;
|
1379
|
-
if (hs->config->alpn_client_proto_list.empty() && ssl
|
1368
|
+
if (hs->config->alpn_client_proto_list.empty() && SSL_is_quic(ssl)) {
|
1380
1369
|
// ALPN MUST be used with QUIC.
|
1381
1370
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_APPLICATION_PROTOCOL);
|
1382
1371
|
return false;
|
@@ -1405,7 +1394,7 @@ static bool ext_alpn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1405
1394
|
CBS *contents) {
|
1406
1395
|
SSL *const ssl = hs->ssl;
|
1407
1396
|
if (contents == NULL) {
|
1408
|
-
if (ssl
|
1397
|
+
if (SSL_is_quic(ssl)) {
|
1409
1398
|
// ALPN is required when QUIC is used.
|
1410
1399
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_APPLICATION_PROTOCOL);
|
1411
1400
|
*out_alert = SSL_AD_NO_APPLICATION_PROTOCOL;
|
@@ -1427,11 +1416,11 @@ static bool ext_alpn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1427
1416
|
// The extension data consists of a ProtocolNameList which must have
|
1428
1417
|
// exactly one ProtocolName. Each of these is length-prefixed.
|
1429
1418
|
CBS protocol_name_list, protocol_name;
|
1430
|
-
if (!CBS_get_u16_length_prefixed(contents, &protocol_name_list) ||
|
1431
|
-
CBS_len(contents) != 0 ||
|
1432
|
-
!CBS_get_u8_length_prefixed(&protocol_name_list, &protocol_name) ||
|
1419
|
+
if (!CBS_get_u16_length_prefixed(contents, &protocol_name_list) || //
|
1420
|
+
CBS_len(contents) != 0 || //
|
1421
|
+
!CBS_get_u8_length_prefixed(&protocol_name_list, &protocol_name) || //
|
1433
1422
|
// Empty protocol names are forbidden.
|
1434
|
-
CBS_len(&protocol_name) == 0 ||
|
1423
|
+
CBS_len(&protocol_name) == 0 || //
|
1435
1424
|
CBS_len(&protocol_name_list) != 0) {
|
1436
1425
|
return false;
|
1437
1426
|
}
|
@@ -1505,7 +1494,7 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1505
1494
|
!ssl_client_hello_get_extension(
|
1506
1495
|
client_hello, &contents,
|
1507
1496
|
TLSEXT_TYPE_application_layer_protocol_negotiation)) {
|
1508
|
-
if (ssl
|
1497
|
+
if (SSL_is_quic(ssl)) {
|
1509
1498
|
// ALPN is required when QUIC is used.
|
1510
1499
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_APPLICATION_PROTOCOL);
|
1511
1500
|
*out_alert = SSL_AD_NO_APPLICATION_PROTOCOL;
|
@@ -1519,8 +1508,8 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1519
1508
|
hs->next_proto_neg_seen = false;
|
1520
1509
|
|
1521
1510
|
CBS protocol_name_list;
|
1522
|
-
if (!CBS_get_u16_length_prefixed(&contents, &protocol_name_list) ||
|
1523
|
-
CBS_len(&contents) != 0 ||
|
1511
|
+
if (!CBS_get_u16_length_prefixed(&contents, &protocol_name_list) || //
|
1512
|
+
CBS_len(&contents) != 0 || //
|
1524
1513
|
!ssl_is_valid_alpn_list(protocol_name_list)) {
|
1525
1514
|
OPENSSL_PUT_ERROR(SSL, SSL_R_PARSE_TLSEXT);
|
1526
1515
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -1536,7 +1525,7 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1536
1525
|
static_cast<unsigned>(CBS_len(&protocol_name_list)),
|
1537
1526
|
ssl->ctx->alpn_select_cb_arg);
|
1538
1527
|
// ALPN is required when QUIC is used.
|
1539
|
-
if (ssl
|
1528
|
+
if (SSL_is_quic(ssl) &&
|
1540
1529
|
(ret == SSL_TLSEXT_ERR_NOACK || ret == SSL_TLSEXT_ERR_ALERT_WARNING)) {
|
1541
1530
|
ret = SSL_TLSEXT_ERR_ALERT_FATAL;
|
1542
1531
|
}
|
@@ -1678,8 +1667,8 @@ static bool ext_srtp_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1678
1667
|
const SSL *const ssl = hs->ssl;
|
1679
1668
|
const STACK_OF(SRTP_PROTECTION_PROFILE) *profiles =
|
1680
1669
|
SSL_get_srtp_profiles(ssl);
|
1681
|
-
if (profiles == NULL ||
|
1682
|
-
sk_SRTP_PROTECTION_PROFILE_num(profiles) == 0 ||
|
1670
|
+
if (profiles == NULL || //
|
1671
|
+
sk_SRTP_PROTECTION_PROFILE_num(profiles) == 0 || //
|
1683
1672
|
!SSL_is_dtls(ssl)) {
|
1684
1673
|
return true;
|
1685
1674
|
}
|
@@ -1719,10 +1708,10 @@ static bool ext_srtp_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1719
1708
|
assert(SSL_is_dtls(ssl));
|
1720
1709
|
CBS profile_ids, srtp_mki;
|
1721
1710
|
uint16_t profile_id;
|
1722
|
-
if (!CBS_get_u16_length_prefixed(contents, &profile_ids) ||
|
1723
|
-
!CBS_get_u16(&profile_ids, &profile_id) ||
|
1724
|
-
CBS_len(&profile_ids) != 0 ||
|
1725
|
-
!CBS_get_u8_length_prefixed(contents, &srtp_mki) ||
|
1711
|
+
if (!CBS_get_u16_length_prefixed(contents, &profile_ids) || //
|
1712
|
+
!CBS_get_u16(&profile_ids, &profile_id) || //
|
1713
|
+
CBS_len(&profile_ids) != 0 || //
|
1714
|
+
!CBS_get_u8_length_prefixed(contents, &srtp_mki) || //
|
1726
1715
|
CBS_len(contents) != 0) {
|
1727
1716
|
OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST);
|
1728
1717
|
return false;
|
@@ -1802,8 +1791,7 @@ static bool ext_srtp_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
1802
1791
|
!CBB_add_u16_length_prefixed(out, &contents) ||
|
1803
1792
|
!CBB_add_u16_length_prefixed(&contents, &profile_ids) ||
|
1804
1793
|
!CBB_add_u16(&profile_ids, ssl->s3->srtp_profile->id) ||
|
1805
|
-
!CBB_add_u8(&contents, 0 /* empty MKI */) ||
|
1806
|
-
!CBB_flush(out)) {
|
1794
|
+
!CBB_add_u8(&contents, 0 /* empty MKI */) || !CBB_flush(out)) {
|
1807
1795
|
return false;
|
1808
1796
|
}
|
1809
1797
|
|
@@ -1839,8 +1827,8 @@ static bool ext_ec_point_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1839
1827
|
return ext_ec_point_add_extension(hs, out);
|
1840
1828
|
}
|
1841
1829
|
|
1842
|
-
static bool ext_ec_point_parse_serverhello(SSL_HANDSHAKE *hs,
|
1843
|
-
CBS *contents) {
|
1830
|
+
static bool ext_ec_point_parse_serverhello(SSL_HANDSHAKE *hs,
|
1831
|
+
uint8_t *out_alert, CBS *contents) {
|
1844
1832
|
if (contents == NULL) {
|
1845
1833
|
return true;
|
1846
1834
|
}
|
@@ -1867,8 +1855,8 @@ static bool ext_ec_point_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert
|
|
1867
1855
|
return true;
|
1868
1856
|
}
|
1869
1857
|
|
1870
|
-
static bool ext_ec_point_parse_clienthello(SSL_HANDSHAKE *hs,
|
1871
|
-
|
1858
|
+
static bool ext_ec_point_parse_clienthello(SSL_HANDSHAKE *hs,
|
1859
|
+
uint8_t *out_alert, CBS *contents) {
|
1872
1860
|
if (ssl_protocol_version(hs->ssl) >= TLS1_3_VERSION) {
|
1873
1861
|
return true;
|
1874
1862
|
}
|
@@ -1902,7 +1890,8 @@ static bool should_offer_psk(const SSL_HANDSHAKE *hs,
|
|
1902
1890
|
ssl_client_hello_type_t type) {
|
1903
1891
|
const SSL *const ssl = hs->ssl;
|
1904
1892
|
if (hs->max_version < TLS1_3_VERSION || ssl->session == nullptr ||
|
1905
|
-
|
1893
|
+
ssl_session_get_type(ssl->session.get()) !=
|
1894
|
+
SSLSessionType::kPreSharedKey ||
|
1906
1895
|
// TODO(https://crbug.com/boringssl/275): Should we synthesize a
|
1907
1896
|
// placeholder PSK, at least when we offer early data? Otherwise
|
1908
1897
|
// ClientHelloOuter will contain an early_data extension without a
|
@@ -1942,8 +1931,7 @@ static bool ext_pre_shared_key_add_clienthello(const SSL_HANDSHAKE *hs,
|
|
1942
1931
|
return true;
|
1943
1932
|
}
|
1944
1933
|
|
1945
|
-
|
1946
|
-
ssl_get_current_time(ssl, &now);
|
1934
|
+
OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
|
1947
1935
|
uint32_t ticket_age = 1000 * (now.tv_sec - ssl->session->time);
|
1948
1936
|
uint32_t obfuscated_ticket_age = ticket_age + ssl->session->ticket_age_add;
|
1949
1937
|
|
@@ -1973,7 +1961,7 @@ bool ssl_ext_pre_shared_key_parse_serverhello(SSL_HANDSHAKE *hs,
|
|
1973
1961
|
uint8_t *out_alert,
|
1974
1962
|
CBS *contents) {
|
1975
1963
|
uint16_t psk_id;
|
1976
|
-
if (!CBS_get_u16(contents, &psk_id) ||
|
1964
|
+
if (!CBS_get_u16(contents, &psk_id) || //
|
1977
1965
|
CBS_len(contents) != 0) {
|
1978
1966
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
1979
1967
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -2005,11 +1993,11 @@ bool ssl_ext_pre_shared_key_parse_clienthello(
|
|
2005
1993
|
|
2006
1994
|
// We only process the first PSK identity since we don't support pure PSK.
|
2007
1995
|
CBS identities, binders;
|
2008
|
-
if (!CBS_get_u16_length_prefixed(contents, &identities) ||
|
2009
|
-
!CBS_get_u16_length_prefixed(&identities, out_ticket) ||
|
2010
|
-
!CBS_get_u32(&identities, out_obfuscated_ticket_age) ||
|
2011
|
-
!CBS_get_u16_length_prefixed(contents, &binders) ||
|
2012
|
-
CBS_len(&binders) == 0 ||
|
1996
|
+
if (!CBS_get_u16_length_prefixed(contents, &identities) || //
|
1997
|
+
!CBS_get_u16_length_prefixed(&identities, out_ticket) || //
|
1998
|
+
!CBS_get_u32(&identities, out_obfuscated_ticket_age) || //
|
1999
|
+
!CBS_get_u16_length_prefixed(contents, &binders) || //
|
2000
|
+
CBS_len(&binders) == 0 || //
|
2013
2001
|
CBS_len(contents) != 0) {
|
2014
2002
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
2015
2003
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -2062,10 +2050,10 @@ bool ssl_ext_pre_shared_key_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
2062
2050
|
}
|
2063
2051
|
|
2064
2052
|
CBB contents;
|
2065
|
-
if (!CBB_add_u16(out, TLSEXT_TYPE_pre_shared_key) ||
|
2066
|
-
!CBB_add_u16_length_prefixed(out, &contents) ||
|
2053
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_pre_shared_key) || //
|
2054
|
+
!CBB_add_u16_length_prefixed(out, &contents) || //
|
2067
2055
|
// We only consider the first identity for resumption
|
2068
|
-
!CBB_add_u16(&contents, 0) ||
|
2056
|
+
!CBB_add_u16(&contents, 0) || //
|
2069
2057
|
!CBB_flush(out)) {
|
2070
2058
|
return false;
|
2071
2059
|
}
|
@@ -2104,8 +2092,8 @@ static bool ext_psk_key_exchange_modes_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2104
2092
|
}
|
2105
2093
|
|
2106
2094
|
CBS ke_modes;
|
2107
|
-
if (!CBS_get_u8_length_prefixed(contents, &ke_modes) ||
|
2108
|
-
CBS_len(&ke_modes) == 0 ||
|
2095
|
+
if (!CBS_get_u8_length_prefixed(contents, &ke_modes) || //
|
2096
|
+
CBS_len(&ke_modes) == 0 || //
|
2109
2097
|
CBS_len(contents) != 0) {
|
2110
2098
|
*out_alert = SSL_AD_DECODE_ERROR;
|
2111
2099
|
return false;
|
@@ -2142,8 +2130,8 @@ static bool ext_early_data_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2142
2130
|
// send the extension in both ClientHellos. This ensures that, if the server
|
2143
2131
|
// handshakes with ClientHelloOuter, it can skip past early data. See
|
2144
2132
|
// draft-ietf-tls-esni-13, section 6.1.
|
2145
|
-
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_early_data) ||
|
2146
|
-
!CBB_add_u16(out_compressible, 0) ||
|
2133
|
+
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_early_data) || //
|
2134
|
+
!CBB_add_u16(out_compressible, 0) || //
|
2147
2135
|
!CBB_flush(out_compressible)) {
|
2148
2136
|
return false;
|
2149
2137
|
}
|
@@ -2190,10 +2178,10 @@ static bool ext_early_data_parse_serverhello(SSL_HANDSHAKE *hs,
|
|
2190
2178
|
}
|
2191
2179
|
|
2192
2180
|
static bool ext_early_data_parse_clienthello(SSL_HANDSHAKE *hs,
|
2193
|
-
uint8_t *out_alert,
|
2181
|
+
uint8_t *out_alert,
|
2182
|
+
CBS *contents) {
|
2194
2183
|
SSL *const ssl = hs->ssl;
|
2195
|
-
if (contents == NULL ||
|
2196
|
-
ssl_protocol_version(ssl) < TLS1_3_VERSION) {
|
2184
|
+
if (contents == NULL || ssl_protocol_version(ssl) < TLS1_3_VERSION) {
|
2197
2185
|
return true;
|
2198
2186
|
}
|
2199
2187
|
|
@@ -2211,8 +2199,8 @@ static bool ext_early_data_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
2211
2199
|
return true;
|
2212
2200
|
}
|
2213
2201
|
|
2214
|
-
if (!CBB_add_u16(out, TLSEXT_TYPE_early_data) ||
|
2215
|
-
!CBB_add_u16(out, 0) ||
|
2202
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_early_data) || //
|
2203
|
+
!CBB_add_u16(out, 0) || //
|
2216
2204
|
!CBB_flush(out)) {
|
2217
2205
|
return false;
|
2218
2206
|
}
|
@@ -2502,14 +2490,12 @@ static bool ext_supported_groups_add_clienthello(const SSL_HANDSHAKE *hs,
|
|
2502
2490
|
|
2503
2491
|
// Add a fake group. See RFC 8701.
|
2504
2492
|
if (ssl->ctx->grease_enabled &&
|
2505
|
-
!CBB_add_u16(&groups_bytes,
|
2506
|
-
ssl_get_grease_value(hs, ssl_grease_group))) {
|
2493
|
+
!CBB_add_u16(&groups_bytes, ssl_get_grease_value(hs, ssl_grease_group))) {
|
2507
2494
|
return false;
|
2508
2495
|
}
|
2509
2496
|
|
2510
2497
|
for (uint16_t group : tls1_get_grouplist(hs)) {
|
2511
|
-
if (is_post_quantum_group(group) &&
|
2512
|
-
hs->max_version < TLS1_3_VERSION) {
|
2498
|
+
if (is_post_quantum_group(group) && hs->max_version < TLS1_3_VERSION) {
|
2513
2499
|
continue;
|
2514
2500
|
}
|
2515
2501
|
if (!CBB_add_u16(&groups_bytes, group)) {
|
@@ -2536,7 +2522,7 @@ static bool parse_u16_array(const CBS *cbs, Array<uint16_t> *out) {
|
|
2536
2522
|
}
|
2537
2523
|
|
2538
2524
|
Array<uint16_t> ret;
|
2539
|
-
if (!ret.
|
2525
|
+
if (!ret.InitForOverwrite(CBS_len(©) / 2)) {
|
2540
2526
|
return false;
|
2541
2527
|
}
|
2542
2528
|
for (size_t i = 0; i < ret.size(); i++) {
|
@@ -2552,16 +2538,16 @@ static bool parse_u16_array(const CBS *cbs, Array<uint16_t> *out) {
|
|
2552
2538
|
}
|
2553
2539
|
|
2554
2540
|
static bool ext_supported_groups_parse_clienthello(SSL_HANDSHAKE *hs,
|
2555
|
-
|
2541
|
+
uint8_t *out_alert,
|
2556
2542
|
CBS *contents) {
|
2557
2543
|
if (contents == NULL) {
|
2558
2544
|
return true;
|
2559
2545
|
}
|
2560
2546
|
|
2561
2547
|
CBS supported_group_list;
|
2562
|
-
if (!CBS_get_u16_length_prefixed(contents, &supported_group_list) ||
|
2563
|
-
CBS_len(&supported_group_list) == 0 ||
|
2564
|
-
CBS_len(contents) != 0 ||
|
2548
|
+
if (!CBS_get_u16_length_prefixed(contents, &supported_group_list) || //
|
2549
|
+
CBS_len(&supported_group_list) == 0 || //
|
2550
|
+
CBS_len(contents) != 0 || //
|
2565
2551
|
!parse_u16_array(&supported_group_list, &hs->peer_supported_group_list)) {
|
2566
2552
|
return false;
|
2567
2553
|
}
|
@@ -2570,14 +2556,53 @@ static bool ext_supported_groups_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2570
2556
|
}
|
2571
2557
|
|
2572
2558
|
|
2559
|
+
// Certificate Authorities.
|
2560
|
+
//
|
2561
|
+
// https://tools.ietf.org/html/rfc8446#section-4.2.4
|
2562
|
+
|
2563
|
+
static bool ext_certificate_authorities_add_clienthello(
|
2564
|
+
const SSL_HANDSHAKE *hs, CBB *out, CBB *out_compressible,
|
2565
|
+
ssl_client_hello_type_t type) {
|
2566
|
+
if (ssl_has_CA_names(hs->config)) {
|
2567
|
+
CBB ca_contents;
|
2568
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_certificate_authorities) || //
|
2569
|
+
!CBB_add_u16_length_prefixed(out, &ca_contents) || //
|
2570
|
+
!ssl_add_CA_names(hs, &ca_contents) || //
|
2571
|
+
!CBB_flush(out)) {
|
2572
|
+
return false;
|
2573
|
+
}
|
2574
|
+
}
|
2575
|
+
return true;
|
2576
|
+
}
|
2577
|
+
|
2578
|
+
static bool ext_certificate_authorities_parse_clienthello(SSL_HANDSHAKE *hs,
|
2579
|
+
uint8_t *out_alert,
|
2580
|
+
CBS *contents) {
|
2581
|
+
if (contents == NULL) {
|
2582
|
+
return true;
|
2583
|
+
}
|
2584
|
+
|
2585
|
+
if (CBS_len(contents) == 0) {
|
2586
|
+
return false;
|
2587
|
+
}
|
2588
|
+
|
2589
|
+
hs->ca_names = SSL_parse_CA_list(hs->ssl, out_alert, contents);
|
2590
|
+
if (!hs->ca_names) {
|
2591
|
+
return false;
|
2592
|
+
}
|
2593
|
+
|
2594
|
+
return true;
|
2595
|
+
}
|
2596
|
+
|
2597
|
+
|
2573
2598
|
// QUIC Transport Parameters
|
2574
2599
|
|
2575
2600
|
static bool ext_quic_transport_params_add_clienthello_impl(
|
2576
2601
|
const SSL_HANDSHAKE *hs, CBB *out, bool use_legacy_codepoint) {
|
2577
|
-
if (hs->config->quic_transport_params.empty() && !hs->ssl
|
2602
|
+
if (hs->config->quic_transport_params.empty() && !SSL_is_quic(hs->ssl)) {
|
2578
2603
|
return true;
|
2579
2604
|
}
|
2580
|
-
if (hs->config->quic_transport_params.empty() || !hs->ssl
|
2605
|
+
if (hs->config->quic_transport_params.empty() || !SSL_is_quic(hs->ssl)) {
|
2581
2606
|
// QUIC Transport Parameters must be sent over QUIC, and they must not be
|
2582
2607
|
// sent over non-QUIC transports. If transport params are set, then
|
2583
2608
|
// SSL(_CTX)_set_quic_method must also be called.
|
@@ -2629,7 +2654,7 @@ static bool ext_quic_transport_params_parse_serverhello_impl(
|
|
2629
2654
|
// Silently ignore because we expect the other QUIC codepoint.
|
2630
2655
|
return true;
|
2631
2656
|
}
|
2632
|
-
if (!ssl
|
2657
|
+
if (!SSL_is_quic(ssl)) {
|
2633
2658
|
return true;
|
2634
2659
|
}
|
2635
2660
|
*out_alert = SSL_AD_MISSING_EXTENSION;
|
@@ -2637,7 +2662,7 @@ static bool ext_quic_transport_params_parse_serverhello_impl(
|
|
2637
2662
|
}
|
2638
2663
|
// The extensions parser will check for unsolicited extensions before
|
2639
2664
|
// calling the callback.
|
2640
|
-
assert(ssl
|
2665
|
+
assert(SSL_is_quic(ssl));
|
2641
2666
|
assert(ssl_protocol_version(ssl) == TLS1_3_VERSION);
|
2642
2667
|
assert(used_legacy_codepoint == hs->config->quic_use_legacy_codepoint);
|
2643
2668
|
return ssl->s3->peer_quic_transport_params.CopyFrom(*contents);
|
@@ -2661,7 +2686,7 @@ static bool ext_quic_transport_params_parse_clienthello_impl(
|
|
2661
2686
|
bool used_legacy_codepoint) {
|
2662
2687
|
SSL *const ssl = hs->ssl;
|
2663
2688
|
if (!contents) {
|
2664
|
-
if (!ssl
|
2689
|
+
if (!SSL_is_quic(ssl)) {
|
2665
2690
|
if (hs->config->quic_transport_params.empty()) {
|
2666
2691
|
return true;
|
2667
2692
|
}
|
@@ -2678,7 +2703,7 @@ static bool ext_quic_transport_params_parse_clienthello_impl(
|
|
2678
2703
|
*out_alert = SSL_AD_MISSING_EXTENSION;
|
2679
2704
|
return false;
|
2680
2705
|
}
|
2681
|
-
if (!ssl
|
2706
|
+
if (!SSL_is_quic(ssl)) {
|
2682
2707
|
if (used_legacy_codepoint) {
|
2683
2708
|
// Ignore the legacy private-use codepoint because that could be sent
|
2684
2709
|
// to mean something else than QUIC transport parameters.
|
@@ -2712,12 +2737,12 @@ static bool ext_quic_transport_params_parse_clienthello_legacy(
|
|
2712
2737
|
|
2713
2738
|
static bool ext_quic_transport_params_add_serverhello_impl(
|
2714
2739
|
SSL_HANDSHAKE *hs, CBB *out, bool use_legacy_codepoint) {
|
2715
|
-
if (hs->ssl
|
2740
|
+
if (!SSL_is_quic(hs->ssl) && use_legacy_codepoint) {
|
2716
2741
|
// Ignore the legacy private-use codepoint because that could be sent
|
2717
2742
|
// to mean something else than QUIC transport parameters.
|
2718
2743
|
return true;
|
2719
2744
|
}
|
2720
|
-
assert(hs->ssl
|
2745
|
+
assert(SSL_is_quic(hs->ssl));
|
2721
2746
|
if (hs->config->quic_transport_params.empty()) {
|
2722
2747
|
// Transport parameters must be set when using QUIC.
|
2723
2748
|
OPENSSL_PUT_ERROR(SSL, SSL_R_QUIC_TRANSPORT_PARAMETERS_MISCONFIGURED);
|
@@ -2779,9 +2804,9 @@ static bool ext_delegated_credential_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2779
2804
|
// The contents of the extension are the signature algorithms the client will
|
2780
2805
|
// accept for a delegated credential.
|
2781
2806
|
CBS sigalg_list;
|
2782
|
-
if (!CBS_get_u16_length_prefixed(contents, &sigalg_list) ||
|
2783
|
-
CBS_len(&sigalg_list) == 0 ||
|
2784
|
-
CBS_len(contents) != 0 ||
|
2807
|
+
if (!CBS_get_u16_length_prefixed(contents, &sigalg_list) || //
|
2808
|
+
CBS_len(&sigalg_list) == 0 || //
|
2809
|
+
CBS_len(contents) != 0 || //
|
2785
2810
|
!parse_u16_array(&sigalg_list, &hs->peer_delegated_credential_sigalgs)) {
|
2786
2811
|
return false;
|
2787
2812
|
}
|
@@ -2840,16 +2865,16 @@ static bool cert_compression_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2840
2865
|
const size_t num_algs = ctx->cert_compression_algs.size();
|
2841
2866
|
|
2842
2867
|
CBS alg_ids;
|
2843
|
-
if (!CBS_get_u8_length_prefixed(contents, &alg_ids) ||
|
2844
|
-
CBS_len(contents) != 0 ||
|
2845
|
-
CBS_len(&alg_ids) == 0 ||
|
2868
|
+
if (!CBS_get_u8_length_prefixed(contents, &alg_ids) || //
|
2869
|
+
CBS_len(contents) != 0 || //
|
2870
|
+
CBS_len(&alg_ids) == 0 || //
|
2846
2871
|
CBS_len(&alg_ids) % 2 == 1) {
|
2847
2872
|
return false;
|
2848
2873
|
}
|
2849
2874
|
|
2850
2875
|
const size_t num_given_alg_ids = CBS_len(&alg_ids) / 2;
|
2851
2876
|
Array<uint16_t> given_alg_ids;
|
2852
|
-
if (!given_alg_ids.
|
2877
|
+
if (!given_alg_ids.InitForOverwrite(num_given_alg_ids)) {
|
2853
2878
|
return false;
|
2854
2879
|
}
|
2855
2880
|
|
@@ -2917,7 +2942,7 @@ static bool ext_alps_add_clienthello_impl(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2917
2942
|
ssl_client_hello_type_t type,
|
2918
2943
|
bool use_new_codepoint) {
|
2919
2944
|
const SSL *const ssl = hs->ssl;
|
2920
|
-
if (// ALPS requires TLS 1.3.
|
2945
|
+
if ( // ALPS requires TLS 1.3.
|
2921
2946
|
hs->max_version < TLS1_3_VERSION ||
|
2922
2947
|
// Do not offer ALPS without ALPN.
|
2923
2948
|
hs->config->alpn_client_proto_list.empty() ||
|
@@ -2971,8 +2996,7 @@ static bool ext_alps_add_clienthello_old(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2971
2996
|
}
|
2972
2997
|
|
2973
2998
|
static bool ext_alps_parse_serverhello_impl(SSL_HANDSHAKE *hs,
|
2974
|
-
uint8_t *out_alert,
|
2975
|
-
CBS *contents,
|
2999
|
+
uint8_t *out_alert, CBS *contents,
|
2976
3000
|
bool use_new_codepoint) {
|
2977
3001
|
SSL *const ssl = hs->ssl;
|
2978
3002
|
if (contents == nullptr) {
|
@@ -3002,16 +3026,14 @@ static bool ext_alps_parse_serverhello_impl(SSL_HANDSHAKE *hs,
|
|
3002
3026
|
return true;
|
3003
3027
|
}
|
3004
3028
|
|
3005
|
-
static bool ext_alps_parse_serverhello(SSL_HANDSHAKE *hs,
|
3006
|
-
uint8_t *out_alert,
|
3029
|
+
static bool ext_alps_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
3007
3030
|
CBS *contents) {
|
3008
3031
|
return ext_alps_parse_serverhello_impl(hs, out_alert, contents,
|
3009
3032
|
/*use_new_codepoint=*/true);
|
3010
3033
|
}
|
3011
3034
|
|
3012
3035
|
static bool ext_alps_parse_serverhello_old(SSL_HANDSHAKE *hs,
|
3013
|
-
uint8_t *out_alert,
|
3014
|
-
CBS *contents) {
|
3036
|
+
uint8_t *out_alert, CBS *contents) {
|
3015
3037
|
return ext_alps_parse_serverhello_impl(hs, out_alert, contents,
|
3016
3038
|
/*use_new_codepoint=*/false);
|
3017
3039
|
}
|
@@ -3027,7 +3049,7 @@ static bool ext_alps_add_serverhello_impl(SSL_HANDSHAKE *hs, CBB *out,
|
|
3027
3049
|
return true;
|
3028
3050
|
}
|
3029
3051
|
|
3030
|
-
|
3052
|
+
if (use_new_codepoint != hs->config->alps_use_new_codepoint) {
|
3031
3053
|
// Do nothing, we'll send the other codepoint.
|
3032
3054
|
return true;
|
3033
3055
|
}
|
@@ -3080,8 +3102,8 @@ bool ssl_negotiate_alps(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
3080
3102
|
// Check if the client supports ALPS with the selected ALPN.
|
3081
3103
|
bool found = false;
|
3082
3104
|
CBS alps_list;
|
3083
|
-
if (!CBS_get_u16_length_prefixed(&alps_contents, &alps_list) ||
|
3084
|
-
CBS_len(&alps_contents) != 0 ||
|
3105
|
+
if (!CBS_get_u16_length_prefixed(&alps_contents, &alps_list) || //
|
3106
|
+
CBS_len(&alps_contents) != 0 || //
|
3085
3107
|
CBS_len(&alps_list) == 0) {
|
3086
3108
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
3087
3109
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -3116,185 +3138,192 @@ bool ssl_negotiate_alps(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
3116
3138
|
|
3117
3139
|
// kExtensions contains all the supported extensions.
|
3118
3140
|
static const struct tls_extension kExtensions[] = {
|
3119
|
-
|
3120
|
-
|
3121
|
-
|
3122
|
-
|
3123
|
-
|
3124
|
-
|
3125
|
-
|
3126
|
-
|
3127
|
-
|
3128
|
-
|
3129
|
-
|
3130
|
-
|
3131
|
-
|
3132
|
-
|
3133
|
-
|
3134
|
-
|
3135
|
-
|
3136
|
-
|
3137
|
-
|
3138
|
-
|
3139
|
-
|
3140
|
-
|
3141
|
-
|
3142
|
-
|
3143
|
-
|
3144
|
-
|
3145
|
-
|
3146
|
-
|
3147
|
-
|
3148
|
-
|
3149
|
-
|
3150
|
-
|
3151
|
-
|
3152
|
-
|
3153
|
-
|
3154
|
-
|
3155
|
-
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3160
|
-
|
3161
|
-
|
3162
|
-
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3166
|
-
|
3167
|
-
|
3168
|
-
|
3169
|
-
|
3170
|
-
|
3171
|
-
|
3172
|
-
|
3173
|
-
|
3174
|
-
|
3175
|
-
|
3176
|
-
|
3177
|
-
|
3178
|
-
|
3179
|
-
|
3180
|
-
|
3181
|
-
|
3182
|
-
|
3183
|
-
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
|
3190
|
-
|
3191
|
-
|
3192
|
-
|
3193
|
-
|
3194
|
-
|
3195
|
-
|
3196
|
-
|
3197
|
-
|
3198
|
-
|
3199
|
-
|
3200
|
-
|
3201
|
-
|
3202
|
-
|
3203
|
-
|
3204
|
-
|
3205
|
-
|
3206
|
-
|
3207
|
-
|
3208
|
-
|
3209
|
-
|
3210
|
-
|
3211
|
-
|
3212
|
-
|
3213
|
-
|
3214
|
-
|
3215
|
-
|
3216
|
-
|
3217
|
-
|
3218
|
-
|
3219
|
-
|
3220
|
-
|
3221
|
-
|
3222
|
-
|
3223
|
-
|
3224
|
-
|
3225
|
-
|
3226
|
-
|
3227
|
-
|
3228
|
-
|
3229
|
-
|
3230
|
-
|
3231
|
-
|
3232
|
-
|
3233
|
-
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3237
|
-
|
3238
|
-
|
3239
|
-
|
3240
|
-
|
3241
|
-
|
3242
|
-
|
3243
|
-
|
3244
|
-
|
3245
|
-
|
3246
|
-
|
3247
|
-
|
3248
|
-
|
3249
|
-
|
3250
|
-
|
3251
|
-
|
3252
|
-
|
3253
|
-
|
3254
|
-
|
3255
|
-
|
3256
|
-
|
3257
|
-
|
3258
|
-
|
3259
|
-
|
3260
|
-
|
3261
|
-
|
3262
|
-
|
3263
|
-
|
3264
|
-
|
3265
|
-
|
3266
|
-
|
3267
|
-
|
3268
|
-
|
3269
|
-
|
3270
|
-
|
3271
|
-
|
3272
|
-
|
3273
|
-
|
3274
|
-
|
3275
|
-
|
3276
|
-
|
3277
|
-
|
3278
|
-
|
3279
|
-
|
3280
|
-
|
3281
|
-
|
3282
|
-
|
3283
|
-
|
3284
|
-
|
3285
|
-
|
3286
|
-
|
3287
|
-
|
3288
|
-
|
3289
|
-
|
3290
|
-
|
3291
|
-
|
3292
|
-
|
3293
|
-
|
3294
|
-
|
3295
|
-
|
3296
|
-
|
3297
|
-
|
3141
|
+
{
|
3142
|
+
TLSEXT_TYPE_server_name,
|
3143
|
+
ext_sni_add_clienthello,
|
3144
|
+
ext_sni_parse_serverhello,
|
3145
|
+
ext_sni_parse_clienthello,
|
3146
|
+
ext_sni_add_serverhello,
|
3147
|
+
},
|
3148
|
+
{
|
3149
|
+
TLSEXT_TYPE_encrypted_client_hello,
|
3150
|
+
ext_ech_add_clienthello,
|
3151
|
+
ext_ech_parse_serverhello,
|
3152
|
+
ext_ech_parse_clienthello,
|
3153
|
+
ext_ech_add_serverhello,
|
3154
|
+
},
|
3155
|
+
{
|
3156
|
+
TLSEXT_TYPE_extended_master_secret,
|
3157
|
+
ext_ems_add_clienthello,
|
3158
|
+
ext_ems_parse_serverhello,
|
3159
|
+
ext_ems_parse_clienthello,
|
3160
|
+
ext_ems_add_serverhello,
|
3161
|
+
},
|
3162
|
+
{
|
3163
|
+
TLSEXT_TYPE_renegotiate,
|
3164
|
+
ext_ri_add_clienthello,
|
3165
|
+
ext_ri_parse_serverhello,
|
3166
|
+
ext_ri_parse_clienthello,
|
3167
|
+
ext_ri_add_serverhello,
|
3168
|
+
},
|
3169
|
+
{
|
3170
|
+
TLSEXT_TYPE_supported_groups,
|
3171
|
+
ext_supported_groups_add_clienthello,
|
3172
|
+
ext_supported_groups_parse_serverhello,
|
3173
|
+
ext_supported_groups_parse_clienthello,
|
3174
|
+
dont_add_serverhello,
|
3175
|
+
},
|
3176
|
+
{
|
3177
|
+
TLSEXT_TYPE_ec_point_formats,
|
3178
|
+
ext_ec_point_add_clienthello,
|
3179
|
+
ext_ec_point_parse_serverhello,
|
3180
|
+
ext_ec_point_parse_clienthello,
|
3181
|
+
ext_ec_point_add_serverhello,
|
3182
|
+
},
|
3183
|
+
{
|
3184
|
+
TLSEXT_TYPE_session_ticket,
|
3185
|
+
ext_ticket_add_clienthello,
|
3186
|
+
ext_ticket_parse_serverhello,
|
3187
|
+
// Ticket extension client parsing is handled in ssl_session.c
|
3188
|
+
ignore_parse_clienthello,
|
3189
|
+
ext_ticket_add_serverhello,
|
3190
|
+
},
|
3191
|
+
{
|
3192
|
+
TLSEXT_TYPE_application_layer_protocol_negotiation,
|
3193
|
+
ext_alpn_add_clienthello,
|
3194
|
+
ext_alpn_parse_serverhello,
|
3195
|
+
// ALPN is negotiated late in |ssl_negotiate_alpn|.
|
3196
|
+
ignore_parse_clienthello,
|
3197
|
+
ext_alpn_add_serverhello,
|
3198
|
+
},
|
3199
|
+
{
|
3200
|
+
TLSEXT_TYPE_status_request,
|
3201
|
+
ext_ocsp_add_clienthello,
|
3202
|
+
ext_ocsp_parse_serverhello,
|
3203
|
+
ext_ocsp_parse_clienthello,
|
3204
|
+
ext_ocsp_add_serverhello,
|
3205
|
+
},
|
3206
|
+
{
|
3207
|
+
TLSEXT_TYPE_signature_algorithms,
|
3208
|
+
ext_sigalgs_add_clienthello,
|
3209
|
+
forbid_parse_serverhello,
|
3210
|
+
ext_sigalgs_parse_clienthello,
|
3211
|
+
dont_add_serverhello,
|
3212
|
+
},
|
3213
|
+
{
|
3214
|
+
TLSEXT_TYPE_next_proto_neg,
|
3215
|
+
ext_npn_add_clienthello,
|
3216
|
+
ext_npn_parse_serverhello,
|
3217
|
+
ext_npn_parse_clienthello,
|
3218
|
+
ext_npn_add_serverhello,
|
3219
|
+
},
|
3220
|
+
{
|
3221
|
+
TLSEXT_TYPE_certificate_timestamp,
|
3222
|
+
ext_sct_add_clienthello,
|
3223
|
+
ext_sct_parse_serverhello,
|
3224
|
+
ext_sct_parse_clienthello,
|
3225
|
+
ext_sct_add_serverhello,
|
3226
|
+
},
|
3227
|
+
{
|
3228
|
+
TLSEXT_TYPE_channel_id,
|
3229
|
+
ext_channel_id_add_clienthello,
|
3230
|
+
ext_channel_id_parse_serverhello,
|
3231
|
+
ext_channel_id_parse_clienthello,
|
3232
|
+
ext_channel_id_add_serverhello,
|
3233
|
+
},
|
3234
|
+
{
|
3235
|
+
TLSEXT_TYPE_srtp,
|
3236
|
+
ext_srtp_add_clienthello,
|
3237
|
+
ext_srtp_parse_serverhello,
|
3238
|
+
ext_srtp_parse_clienthello,
|
3239
|
+
ext_srtp_add_serverhello,
|
3240
|
+
},
|
3241
|
+
{
|
3242
|
+
TLSEXT_TYPE_key_share,
|
3243
|
+
ext_key_share_add_clienthello,
|
3244
|
+
forbid_parse_serverhello,
|
3245
|
+
ignore_parse_clienthello,
|
3246
|
+
dont_add_serverhello,
|
3247
|
+
},
|
3248
|
+
{
|
3249
|
+
TLSEXT_TYPE_psk_key_exchange_modes,
|
3250
|
+
ext_psk_key_exchange_modes_add_clienthello,
|
3251
|
+
forbid_parse_serverhello,
|
3252
|
+
ext_psk_key_exchange_modes_parse_clienthello,
|
3253
|
+
dont_add_serverhello,
|
3254
|
+
},
|
3255
|
+
{
|
3256
|
+
TLSEXT_TYPE_early_data,
|
3257
|
+
ext_early_data_add_clienthello,
|
3258
|
+
ext_early_data_parse_serverhello,
|
3259
|
+
ext_early_data_parse_clienthello,
|
3260
|
+
ext_early_data_add_serverhello,
|
3261
|
+
},
|
3262
|
+
{
|
3263
|
+
TLSEXT_TYPE_supported_versions,
|
3264
|
+
ext_supported_versions_add_clienthello,
|
3265
|
+
forbid_parse_serverhello,
|
3266
|
+
ignore_parse_clienthello,
|
3267
|
+
dont_add_serverhello,
|
3268
|
+
},
|
3269
|
+
{
|
3270
|
+
TLSEXT_TYPE_cookie,
|
3271
|
+
ext_cookie_add_clienthello,
|
3272
|
+
forbid_parse_serverhello,
|
3273
|
+
ignore_parse_clienthello,
|
3274
|
+
dont_add_serverhello,
|
3275
|
+
},
|
3276
|
+
{
|
3277
|
+
TLSEXT_TYPE_quic_transport_parameters,
|
3278
|
+
ext_quic_transport_params_add_clienthello,
|
3279
|
+
ext_quic_transport_params_parse_serverhello,
|
3280
|
+
ext_quic_transport_params_parse_clienthello,
|
3281
|
+
ext_quic_transport_params_add_serverhello,
|
3282
|
+
},
|
3283
|
+
{
|
3284
|
+
TLSEXT_TYPE_quic_transport_parameters_legacy,
|
3285
|
+
ext_quic_transport_params_add_clienthello_legacy,
|
3286
|
+
ext_quic_transport_params_parse_serverhello_legacy,
|
3287
|
+
ext_quic_transport_params_parse_clienthello_legacy,
|
3288
|
+
ext_quic_transport_params_add_serverhello_legacy,
|
3289
|
+
},
|
3290
|
+
{
|
3291
|
+
TLSEXT_TYPE_cert_compression,
|
3292
|
+
cert_compression_add_clienthello,
|
3293
|
+
cert_compression_parse_serverhello,
|
3294
|
+
cert_compression_parse_clienthello,
|
3295
|
+
cert_compression_add_serverhello,
|
3296
|
+
},
|
3297
|
+
{
|
3298
|
+
TLSEXT_TYPE_delegated_credential,
|
3299
|
+
ext_delegated_credential_add_clienthello,
|
3300
|
+
forbid_parse_serverhello,
|
3301
|
+
ext_delegated_credential_parse_clienthello,
|
3302
|
+
dont_add_serverhello,
|
3303
|
+
},
|
3304
|
+
{
|
3305
|
+
TLSEXT_TYPE_application_settings,
|
3306
|
+
ext_alps_add_clienthello,
|
3307
|
+
ext_alps_parse_serverhello,
|
3308
|
+
// ALPS is negotiated late in |ssl_negotiate_alpn|.
|
3309
|
+
ignore_parse_clienthello,
|
3310
|
+
ext_alps_add_serverhello,
|
3311
|
+
},
|
3312
|
+
{
|
3313
|
+
TLSEXT_TYPE_application_settings_old,
|
3314
|
+
ext_alps_add_clienthello_old,
|
3315
|
+
ext_alps_parse_serverhello_old,
|
3316
|
+
// ALPS is negotiated late in |ssl_negotiate_alpn|.
|
3317
|
+
ignore_parse_clienthello,
|
3318
|
+
ext_alps_add_serverhello_old,
|
3319
|
+
},
|
3320
|
+
{
|
3321
|
+
TLSEXT_TYPE_certificate_authorities,
|
3322
|
+
ext_certificate_authorities_add_clienthello,
|
3323
|
+
forbid_parse_serverhello,
|
3324
|
+
ext_certificate_authorities_parse_clienthello,
|
3325
|
+
dont_add_serverhello,
|
3326
|
+
},
|
3298
3327
|
};
|
3299
3328
|
|
3300
3329
|
#define kNumExtensions (sizeof(kExtensions) / sizeof(struct tls_extension))
|
@@ -3316,7 +3345,7 @@ bool ssl_setup_extension_permutation(SSL_HANDSHAKE *hs) {
|
|
3316
3345
|
uint32_t seeds[kNumExtensions - 1];
|
3317
3346
|
Array<uint8_t> permutation;
|
3318
3347
|
if (!RAND_bytes(reinterpret_cast<uint8_t *>(seeds), sizeof(seeds)) ||
|
3319
|
-
!permutation.
|
3348
|
+
!permutation.InitForOverwrite(kNumExtensions)) {
|
3320
3349
|
return false;
|
3321
3350
|
}
|
3322
3351
|
for (size_t i = 0; i < kNumExtensions; i++) {
|
@@ -3527,7 +3556,7 @@ bool ssl_add_clienthello_tlsext(SSL_HANDSHAKE *hs, CBB *out, CBB *out_encoded,
|
|
3527
3556
|
// bugs. We also apply this padding to ClientHelloOuter, to keep the wire
|
3528
3557
|
// images aligned.
|
3529
3558
|
size_t psk_extension_len = ext_pre_shared_key_clienthello_length(hs, type);
|
3530
|
-
if (!SSL_is_dtls(ssl) && !ssl
|
3559
|
+
if (!SSL_is_dtls(ssl) && !SSL_is_quic(ssl) &&
|
3531
3560
|
!ssl->s3->used_hello_retry_request) {
|
3532
3561
|
header_len +=
|
3533
3562
|
SSL3_HM_HEADER_LENGTH + 2 + CBB_len(&extensions) + psk_extension_len;
|
@@ -3609,7 +3638,7 @@ bool ssl_add_serverhello_tlsext(SSL_HANDSHAKE *hs, CBB *out) {
|
|
3609
3638
|
}
|
3610
3639
|
|
3611
3640
|
// Discard empty extensions blocks before TLS 1.3.
|
3612
|
-
if (ssl_protocol_version(ssl) < TLS1_3_VERSION &&
|
3641
|
+
if (ssl_protocol_version(ssl) < TLS1_3_VERSION && //
|
3613
3642
|
CBB_len(&extensions) == 0) {
|
3614
3643
|
CBB_discard_child(out);
|
3615
3644
|
}
|
@@ -3882,7 +3911,7 @@ static enum ssl_ticket_aead_result_t decrypt_ticket_with_cipher_ctx(
|
|
3882
3911
|
if (ciphertext.size() >= INT_MAX) {
|
3883
3912
|
return ssl_ticket_aead_ignore_ticket;
|
3884
3913
|
}
|
3885
|
-
if (!plaintext.
|
3914
|
+
if (!plaintext.InitForOverwrite(ciphertext.size())) {
|
3886
3915
|
return ssl_ticket_aead_error;
|
3887
3916
|
}
|
3888
3917
|
int len1, len2;
|
@@ -3957,8 +3986,8 @@ static enum ssl_ticket_aead_result_t ssl_decrypt_ticket_with_ticket_keys(
|
|
3957
3986
|
}
|
3958
3987
|
if (!HMAC_Init_ex(hmac_ctx.get(), key->hmac_key, sizeof(key->hmac_key),
|
3959
3988
|
tlsext_tick_md(), NULL) ||
|
3960
|
-
!EVP_DecryptInit_ex(cipher_ctx.get(), cipher, NULL,
|
3961
|
-
|
3989
|
+
!EVP_DecryptInit_ex(cipher_ctx.get(), cipher, NULL, key->aes_key,
|
3990
|
+
iv.data())) {
|
3962
3991
|
return ssl_ticket_aead_error;
|
3963
3992
|
}
|
3964
3993
|
}
|
@@ -3970,7 +3999,7 @@ static enum ssl_ticket_aead_result_t ssl_decrypt_ticket_with_method(
|
|
3970
3999
|
SSL_HANDSHAKE *hs, Array<uint8_t> *out, bool *out_renew_ticket,
|
3971
4000
|
Span<const uint8_t> ticket) {
|
3972
4001
|
Array<uint8_t> plaintext;
|
3973
|
-
if (!plaintext.
|
4002
|
+
if (!plaintext.InitForOverwrite(ticket.size())) {
|
3974
4003
|
return ssl_ticket_aead_error;
|
3975
4004
|
}
|
3976
4005
|
|
@@ -4079,9 +4108,8 @@ enum ssl_ticket_aead_result_t ssl_process_ticket(
|
|
4079
4108
|
// Envoy's tests expect the session to have a session ID that matches the
|
4080
4109
|
// placeholder used by the client. It's unclear whether this is a good idea,
|
4081
4110
|
// but we maintain it for now.
|
4082
|
-
|
4083
|
-
|
4084
|
-
session->session_id_length = SHA256_DIGEST_LENGTH;
|
4111
|
+
session->session_id.ResizeForOverwrite(SHA256_DIGEST_LENGTH);
|
4112
|
+
SHA256(ticket.data(), ticket.size(), session->session_id.data());
|
4085
4113
|
|
4086
4114
|
*out_session = std::move(session);
|
4087
4115
|
return ssl_ticket_aead_success;
|
@@ -4173,10 +4201,10 @@ bool tls1_verify_channel_id(SSL_HANDSHAKE *hs, const SSLMessage &msg) {
|
|
4173
4201
|
// extensions, but the only one that can be present is Channel ID.
|
4174
4202
|
uint16_t extension_type;
|
4175
4203
|
CBS channel_id = msg.body, extension;
|
4176
|
-
if (!CBS_get_u16(&channel_id, &extension_type) ||
|
4177
|
-
!CBS_get_u16_length_prefixed(&channel_id, &extension) ||
|
4178
|
-
CBS_len(&channel_id) != 0 ||
|
4179
|
-
extension_type != TLSEXT_TYPE_channel_id ||
|
4204
|
+
if (!CBS_get_u16(&channel_id, &extension_type) || //
|
4205
|
+
!CBS_get_u16_length_prefixed(&channel_id, &extension) || //
|
4206
|
+
CBS_len(&channel_id) != 0 || //
|
4207
|
+
extension_type != TLSEXT_TYPE_channel_id || //
|
4180
4208
|
CBS_len(&extension) != TLSEXT_CHANNEL_ID_SIZE) {
|
4181
4209
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
4182
4210
|
ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
|
@@ -4257,12 +4285,12 @@ bool tls1_write_channel_id(SSL_HANDSHAKE *hs, CBB *cbb) {
|
|
4257
4285
|
}
|
4258
4286
|
|
4259
4287
|
CBB child;
|
4260
|
-
if (!CBB_add_u16(cbb, TLSEXT_TYPE_channel_id) ||
|
4261
|
-
!CBB_add_u16_length_prefixed(cbb, &child) ||
|
4262
|
-
!BN_bn2cbb_padded(&child, 32, x.get()) ||
|
4263
|
-
!BN_bn2cbb_padded(&child, 32, y.get()) ||
|
4264
|
-
!BN_bn2cbb_padded(&child, 32, sig->r) ||
|
4265
|
-
!BN_bn2cbb_padded(&child, 32, sig->s) ||
|
4288
|
+
if (!CBB_add_u16(cbb, TLSEXT_TYPE_channel_id) || //
|
4289
|
+
!CBB_add_u16_length_prefixed(cbb, &child) || //
|
4290
|
+
!BN_bn2cbb_padded(&child, 32, x.get()) || //
|
4291
|
+
!BN_bn2cbb_padded(&child, 32, y.get()) || //
|
4292
|
+
!BN_bn2cbb_padded(&child, 32, sig->r) || //
|
4293
|
+
!BN_bn2cbb_padded(&child, 32, sig->s) || //
|
4266
4294
|
!CBB_flush(cbb)) {
|
4267
4295
|
return false;
|
4268
4296
|
}
|
@@ -4292,12 +4320,12 @@ bool tls1_channel_id_hash(SSL_HANDSHAKE *hs, uint8_t *out, size_t *out_len) {
|
|
4292
4320
|
if (ssl->session != NULL) {
|
4293
4321
|
static const char kResumptionMagic[] = "Resumption";
|
4294
4322
|
SHA256_Update(&ctx, kResumptionMagic, sizeof(kResumptionMagic));
|
4295
|
-
if (ssl->session->
|
4323
|
+
if (ssl->session->original_handshake_hash.empty()) {
|
4296
4324
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
4297
4325
|
return false;
|
4298
4326
|
}
|
4299
|
-
SHA256_Update(&ctx, ssl->session->original_handshake_hash,
|
4300
|
-
ssl->session->
|
4327
|
+
SHA256_Update(&ctx, ssl->session->original_handshake_hash.data(),
|
4328
|
+
ssl->session->original_handshake_hash.size());
|
4301
4329
|
}
|
4302
4330
|
|
4303
4331
|
uint8_t hs_hash[EVP_MAX_MD_SIZE];
|
@@ -4320,20 +4348,14 @@ bool tls1_record_handshake_hashes_for_channel_id(SSL_HANDSHAKE *hs) {
|
|
4320
4348
|
return false;
|
4321
4349
|
}
|
4322
4350
|
|
4323
|
-
static_assert(
|
4324
|
-
sizeof(hs->new_session->original_handshake_hash) == EVP_MAX_MD_SIZE,
|
4325
|
-
"original_handshake_hash is too small");
|
4326
|
-
|
4327
4351
|
size_t digest_len;
|
4328
|
-
|
4352
|
+
hs->new_session->original_handshake_hash.ResizeForOverwrite(
|
4353
|
+
hs->transcript.DigestLen());
|
4354
|
+
if (!hs->transcript.GetHash(hs->new_session->original_handshake_hash.data(),
|
4329
4355
|
&digest_len)) {
|
4330
4356
|
return false;
|
4331
4357
|
}
|
4332
|
-
|
4333
|
-
static_assert(EVP_MAX_MD_SIZE <= 0xff,
|
4334
|
-
"EVP_MAX_MD_SIZE does not fit in uint8_t");
|
4335
|
-
hs->new_session->original_handshake_hash_len = (uint8_t)digest_len;
|
4336
|
-
|
4358
|
+
assert(digest_len == hs->new_session->original_handshake_hash.size());
|
4337
4359
|
return true;
|
4338
4360
|
}
|
4339
4361
|
|
@@ -4343,16 +4365,14 @@ bool ssl_is_sct_list_valid(const CBS *contents) {
|
|
4343
4365
|
// of the SCTs may be empty.
|
4344
4366
|
CBS copy = *contents;
|
4345
4367
|
CBS sct_list;
|
4346
|
-
if (!CBS_get_u16_length_prefixed(©, &sct_list) ||
|
4347
|
-
CBS_len(©) != 0 ||
|
4368
|
+
if (!CBS_get_u16_length_prefixed(©, &sct_list) || CBS_len(©) != 0 ||
|
4348
4369
|
CBS_len(&sct_list) == 0) {
|
4349
4370
|
return false;
|
4350
4371
|
}
|
4351
4372
|
|
4352
4373
|
while (CBS_len(&sct_list) > 0) {
|
4353
4374
|
CBS sct;
|
4354
|
-
if (!CBS_get_u16_length_prefixed(&sct_list, &sct) ||
|
4355
|
-
CBS_len(&sct) == 0) {
|
4375
|
+
if (!CBS_get_u16_length_prefixed(&sct_list, &sct) || CBS_len(&sct) == 0) {
|
4356
4376
|
return false;
|
4357
4377
|
}
|
4358
4378
|
}
|