grpc 1.69.0 → 1.71.0
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 +249 -283
- data/include/grpc/event_engine/endpoint_config.h +5 -5
- data/include/grpc/event_engine/event_engine.h +44 -5
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +0 -13
- data/include/grpc/support/json.h +16 -16
- data/src/core/call/request_buffer.cc +224 -0
- data/src/core/call/request_buffer.h +192 -0
- data/src/core/channelz/channelz.cc +2 -2
- data/src/core/channelz/channelz.h +3 -22
- data/src/core/channelz/channelz_registry.cc +0 -7
- data/src/core/client_channel/client_channel.cc +18 -29
- data/src/core/client_channel/client_channel.h +2 -2
- data/src/core/client_channel/client_channel_args.h +21 -0
- data/src/core/client_channel/client_channel_filter.cc +54 -131
- data/src/core/client_channel/client_channel_filter.h +11 -9
- data/src/core/client_channel/client_channel_plugin.cc +2 -1
- data/src/core/client_channel/client_channel_service_config.cc +1 -1
- data/src/core/client_channel/client_channel_service_config.h +5 -5
- data/src/core/client_channel/direct_channel.cc +1 -1
- data/src/core/client_channel/direct_channel.h +1 -1
- data/src/core/client_channel/lb_metadata.cc +7 -8
- data/src/core/client_channel/lb_metadata.h +3 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +4 -4
- data/src/core/client_channel/retry_filter.cc +1 -1
- data/src/core/client_channel/retry_filter.h +1 -1
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +10 -12
- data/src/core/client_channel/retry_filter_legacy_call_data.h +7 -7
- data/src/core/client_channel/retry_interceptor.cc +408 -0
- data/src/core/client_channel/retry_interceptor.h +157 -0
- data/src/core/client_channel/retry_service_config.cc +1 -1
- data/src/core/client_channel/retry_service_config.h +16 -3
- data/src/core/client_channel/retry_throttle.cc +33 -18
- data/src/core/client_channel/retry_throttle.h +3 -3
- data/src/core/client_channel/subchannel.cc +43 -76
- data/src/core/client_channel/subchannel.h +4 -4
- data/src/core/client_channel/subchannel_stream_client.cc +0 -1
- data/src/core/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/config/config_vars.cc +1 -0
- data/src/core/config/config_vars.h +1 -0
- data/src/core/config/load_config.cc +3 -2
- data/src/core/config/load_config.h +1 -1
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +4 -11
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +7 -7
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +8 -15
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -6
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +0 -7
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -6
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -6
- data/src/core/ext/filters/http/client/http_client_filter.h +4 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -11
- data/src/core/ext/filters/http/client_authority_filter.h +6 -6
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +18 -22
- data/src/core/ext/filters/http/message_compress/compression_filter.h +18 -13
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -8
- data/src/core/ext/filters/http/server/http_server_filter.h +4 -4
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -25
- data/src/core/ext/filters/message_size/message_size_filter.h +20 -21
- data/src/core/ext/filters/rbac/rbac_filter.cc +0 -7
- data/src/core/ext/filters/rbac/rbac_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -4
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +4 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +612 -100
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +189 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +4 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +85 -59
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +7 -7
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -31
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +19 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +14 -14
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +2 -2
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +15 -10
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +3 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +3 -2
- 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 +97 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +17 -11
- 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 +253 -4
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +70 -13
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +4 -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/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +37 -7
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +7 -5
- 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/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +33 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +7 -4
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +11 -10
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +6 -4
- 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 +270 -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 +917 -898
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +10 -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/http/rbac/v3/rbac.upbdefs.c +33 -33
- 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/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +19 -17
- 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/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +33 -0
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +26 -19
- data/src/core/filter/blackboard.cc +2 -2
- data/src/core/filter/filter_args.h +112 -0
- data/src/core/handshaker/handshaker.cc +0 -3
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +4 -6
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +31 -32
- data/src/core/handshaker/http_connect/http_proxy_mapper.h +4 -4
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +5 -5
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +5 -5
- data/src/core/handshaker/proxy_mapper.h +4 -4
- data/src/core/handshaker/proxy_mapper_registry.cc +5 -6
- data/src/core/handshaker/proxy_mapper_registry.h +4 -4
- data/src/core/handshaker/security/secure_endpoint.cc +2 -2
- data/src/core/handshaker/security/security_handshaker.cc +3 -5
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +6 -4
- data/src/core/lib/channel/channel_args.cc +13 -13
- data/src/core/lib/channel/channel_args.h +8 -8
- data/src/core/lib/channel/connected_channel.cc +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +9 -9
- data/src/core/lib/channel/promise_based_filter.h +84 -159
- data/src/core/lib/compression/compression.cc +3 -2
- data/src/core/lib/compression/compression_internal.cc +9 -9
- data/src/core/lib/compression/compression_internal.h +3 -3
- data/src/core/lib/debug/trace_flags.cc +5 -2
- data/src/core/lib/debug/trace_flags.h +2 -1
- data/src/core/lib/event_engine/ares_resolver.cc +9 -11
- data/src/core/lib/event_engine/ares_resolver.h +6 -10
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -4
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +6 -7
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +2 -4
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +3 -7
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -4
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -7
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +6 -7
- data/src/core/lib/event_engine/common_closures.h +2 -4
- data/src/core/lib/event_engine/default_event_engine.cc +62 -33
- data/src/core/lib/event_engine/default_event_engine.h +24 -33
- data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -12
- data/src/core/lib/event_engine/default_event_engine_factory.h +2 -4
- data/src/core/lib/event_engine/event_engine.cc +2 -4
- data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -4
- data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +2 -4
- data/src/core/lib/event_engine/extensions/tcp_trace.h +2 -4
- data/src/core/lib/event_engine/forkable.cc +2 -4
- data/src/core/lib/event_engine/forkable.h +2 -4
- data/src/core/lib/event_engine/grpc_polled_fd.h +2 -4
- data/src/core/lib/event_engine/handle_containers.h +2 -4
- data/src/core/lib/event_engine/memory_allocator_factory.h +2 -4
- data/src/core/lib/event_engine/poller.h +2 -4
- data/src/core/lib/event_engine/posix.h +2 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -50
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -51
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +2 -4
- data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -4
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +2 -4
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -4
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +20 -10
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +2 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +9 -6
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -6
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +2 -4
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +5 -6
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +2 -4
- data/src/core/lib/event_engine/posix_engine/timer.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/timer.h +4 -6
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -4
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -7
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +4 -8
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +24 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -4
- data/src/core/lib/event_engine/query_extensions.h +2 -4
- data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +2 -4
- data/src/core/lib/event_engine/resolved_address.cc +2 -4
- data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
- data/src/core/lib/event_engine/shim.cc +2 -4
- data/src/core/lib/event_engine/shim.h +2 -4
- data/src/core/lib/event_engine/slice.cc +2 -4
- data/src/core/lib/event_engine/slice_buffer.cc +2 -4
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/tcp_socket_utils.h +5 -7
- data/src/core/lib/event_engine/thread_local.cc +2 -4
- data/src/core/lib/event_engine/thread_local.h +2 -4
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +2 -4
- data/src/core/lib/event_engine/thread_pool/thread_count.h +4 -18
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +2 -4
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -4
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +3 -5
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -4
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +2 -4
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +2 -4
- data/src/core/lib/event_engine/time_util.cc +2 -4
- data/src/core/lib/event_engine/time_util.h +2 -4
- data/src/core/lib/event_engine/utils.cc +2 -4
- data/src/core/lib/event_engine/utils.h +2 -4
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -4
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -4
- data/src/core/lib/event_engine/windows/iocp.cc +2 -4
- data/src/core/lib/event_engine/windows/iocp.h +2 -4
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +2 -4
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
- data/src/core/lib/event_engine/windows/win_socket.cc +2 -4
- data/src/core/lib/event_engine/windows/win_socket.h +2 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +2 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.h +4 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +3 -4
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -4
- data/src/core/lib/event_engine/windows/windows_listener.cc +2 -4
- data/src/core/lib/event_engine/windows/windows_listener.h +2 -4
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -4
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -4
- data/src/core/lib/event_engine/work_queue/work_queue.h +2 -4
- data/src/core/lib/experiments/experiments.cc +147 -207
- data/src/core/lib/experiments/experiments.h +79 -96
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/cfstream_handle.cc +0 -2
- data/src/core/lib/iomgr/closure.h +1 -4
- data/src/core/lib/iomgr/combiner.cc +0 -1
- data/src/core/lib/iomgr/error.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +0 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -3
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +0 -1
- data/src/core/lib/iomgr/exec_ctx.cc +1 -7
- data/src/core/lib/iomgr/exec_ctx.h +1 -132
- data/src/core/lib/iomgr/executor.cc +0 -11
- data/src/core/lib/iomgr/resolve_address_posix.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +0 -2
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
- data/src/core/lib/iomgr/timer_manager.cc +1 -9
- data/src/core/lib/promise/activity.cc +2 -0
- data/src/core/lib/promise/activity.h +33 -12
- data/src/core/lib/promise/detail/join_state.h +16 -68
- data/src/core/lib/promise/detail/promise_factory.h +85 -25
- data/src/core/lib/promise/detail/promise_like.h +16 -19
- data/src/core/lib/promise/detail/seq_state.h +102 -315
- data/src/core/lib/promise/for_each.h +14 -5
- data/src/core/lib/promise/if.h +48 -20
- data/src/core/lib/promise/interceptor_list.h +9 -9
- data/src/core/lib/promise/latch.h +14 -6
- data/src/core/lib/promise/loop.h +58 -18
- data/src/core/lib/promise/map.h +145 -49
- data/src/core/lib/promise/party.cc +84 -15
- data/src/core/lib/promise/party.h +229 -32
- data/src/core/lib/promise/pipe.h +12 -12
- data/src/core/lib/promise/poll.h +8 -5
- data/src/core/lib/promise/prioritized_race.h +16 -22
- data/src/core/lib/promise/promise.h +2 -3
- data/src/core/lib/promise/race.h +4 -12
- data/src/core/lib/promise/seq.h +41 -6
- data/src/core/lib/promise/sleep.cc +3 -3
- data/src/core/lib/promise/sleep.h +15 -1
- data/src/core/lib/promise/status_flag.h +19 -3
- data/src/core/lib/promise/try_join.h +119 -5
- data/src/core/lib/promise/try_seq.h +39 -12
- data/src/core/lib/resource_quota/arena.h +87 -0
- data/src/core/lib/resource_quota/connection_quota.h +4 -0
- data/src/core/lib/resource_quota/memory_quota.cc +53 -49
- data/src/core/lib/resource_quota/memory_quota.h +4 -4
- data/src/core/lib/security/authorization/evaluate_args.cc +3 -3
- data/src/core/lib/security/authorization/evaluate_args.h +3 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +0 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +6 -6
- data/src/core/lib/security/authorization/matchers.h +3 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +1 -1
- data/src/core/lib/security/authorization/rbac_policy.h +3 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +1 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +12 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +14 -14
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +23 -15
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +0 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -2
- data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +4 -5
- data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +2 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +9 -9
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +13 -13
- data/src/core/lib/security/transport/auth_filters.h +95 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +96 -6
- data/src/core/lib/security/transport/server_auth_filter.cc +0 -8
- data/src/core/lib/slice/slice_buffer.cc +2 -2
- data/src/core/lib/slice/slice_buffer.h +2 -2
- data/src/core/lib/surface/call.cc +0 -4
- data/src/core/lib/surface/call.h +4 -3
- data/src/core/lib/surface/call_utils.cc +2 -2
- data/src/core/lib/surface/call_utils.h +10 -4
- data/src/core/lib/surface/channel.cc +6 -14
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/client_call.cc +56 -41
- data/src/core/lib/surface/client_call.h +7 -2
- data/src/core/lib/surface/completion_queue.cc +10 -49
- data/src/core/lib/surface/event_string.cc +7 -1
- data/src/core/lib/surface/filter_stack_call.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.h +1 -1
- data/src/core/lib/surface/init.cc +17 -12
- data/src/core/lib/surface/init_internally.h +13 -2
- data/src/core/lib/surface/legacy_channel.cc +10 -8
- data/src/core/lib/surface/legacy_channel.h +2 -2
- data/src/core/lib/surface/server_call.cc +116 -84
- data/src/core/lib/surface/server_call.h +2 -0
- 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 +108 -59
- data/src/core/lib/transport/call_spine.cc +12 -49
- data/src/core/lib/transport/call_spine.h +174 -7
- data/src/core/lib/transport/call_state.h +140 -47
- data/src/core/lib/transport/connectivity_state.cc +8 -9
- data/src/core/lib/transport/connectivity_state.h +2 -4
- data/src/core/lib/transport/http2_errors.h +5 -3
- data/src/core/lib/transport/interception_chain.cc +8 -0
- data/src/core/lib/transport/interception_chain.h +36 -7
- data/src/core/lib/transport/metadata.h +88 -0
- data/src/core/lib/transport/metadata_batch.cc +2 -2
- data/src/core/lib/transport/metadata_batch.h +79 -18
- data/src/core/lib/transport/timeout_encoding.cc +15 -15
- data/src/core/lib/transport/timeout_encoding.h +3 -2
- data/src/core/lib/transport/transport.cc +0 -1
- data/src/core/lib/transport/transport.h +12 -7
- data/src/core/load_balancing/backend_metric_parser.cc +21 -28
- data/src/core/load_balancing/endpoint_list.cc +11 -1
- data/src/core/load_balancing/endpoint_list.h +20 -13
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -6
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +4 -4
- data/src/core/load_balancing/grpclb/grpclb.cc +21 -38
- data/src/core/load_balancing/health_check_client.cc +16 -48
- data/src/core/load_balancing/health_check_client_internal.h +7 -7
- data/src/core/load_balancing/lb_policy.cc +4 -6
- data/src/core/load_balancing/lb_policy.h +4 -12
- data/src/core/load_balancing/lb_policy_registry.cc +10 -8
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +57 -68
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +4 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +110 -77
- data/src/core/load_balancing/priority/priority.cc +8 -13
- data/src/core/load_balancing/ring_hash/ring_hash.cc +210 -158
- data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
- data/src/core/load_balancing/rls/rls.cc +105 -194
- data/src/core/load_balancing/rls/rls.h +97 -1
- data/src/core/load_balancing/round_robin/round_robin.cc +14 -19
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -2
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +20 -29
- data/src/core/load_balancing/weighted_target/weighted_target.cc +7 -15
- data/src/core/load_balancing/xds/cds.cc +11 -15
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +15 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +10 -18
- data/src/core/load_balancing/xds/xds_override_host.cc +45 -92
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +11 -11
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -15
- data/src/core/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +10 -11
- data/src/core/resolver/fake/fake_resolver.h +2 -2
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +9 -12
- data/src/core/resolver/polling_resolver.cc +2 -5
- data/src/core/resolver/polling_resolver.h +3 -3
- data/src/core/resolver/resolver_registry.cc +4 -3
- data/src/core/resolver/xds/xds_config.cc +6 -6
- data/src/core/resolver/xds/xds_config.h +2 -2
- data/src/core/resolver/xds/xds_dependency_manager.cc +190 -183
- data/src/core/resolver/xds/xds_dependency_manager.h +28 -18
- data/src/core/resolver/xds/xds_resolver.cc +81 -122
- data/src/core/server/server.cc +353 -95
- data/src/core/server/server.h +214 -65
- data/src/core/server/server_call_tracer_filter.cc +3 -7
- data/src/core/server/server_config_selector_filter.cc +8 -15
- data/src/core/server/xds_server_config_fetcher.cc +93 -159
- data/src/core/service_config/service_config_channel_arg_filter.cc +7 -19
- data/src/core/service_config/service_config_impl.cc +3 -3
- data/src/core/telemetry/call_tracer.cc +8 -8
- data/src/core/telemetry/call_tracer.h +6 -5
- data/src/core/telemetry/metrics.cc +3 -3
- data/src/core/telemetry/metrics.h +2 -8
- data/src/core/telemetry/tcp_tracer.h +32 -32
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -14
- data/src/core/tsi/fake_transport_security.cc +5 -0
- data/src/core/util/backoff.cc +15 -4
- data/src/core/util/dump_args.h +1 -9
- data/src/core/util/env.h +3 -4
- data/src/core/util/examine_stack.cc +2 -2
- data/src/core/util/examine_stack.h +3 -4
- data/src/core/util/gpr_time.cc +0 -2
- data/src/core/util/http_client/httpcli.cc +69 -22
- data/src/core/util/http_client/httpcli.h +18 -8
- data/src/core/util/http_client/httpcli_security_connector.cc +2 -2
- data/src/core/util/json/json_channel_args.h +2 -1
- data/src/core/util/json/json_object_loader.cc +4 -4
- data/src/core/util/json/json_object_loader.h +12 -12
- data/src/core/util/json/json_reader.cc +4 -4
- data/src/core/util/json/json_writer.cc +3 -3
- data/src/core/util/latent_see.cc +3 -3
- data/src/core/util/latent_see.h +2 -2
- data/src/core/util/linux/env.cc +3 -4
- data/src/core/util/lru_cache.h +4 -4
- data/src/core/util/match.h +7 -7
- data/src/core/util/matchers.cc +1 -2
- data/src/core/util/matchers.h +7 -12
- data/src/core/util/posix/env.cc +2 -2
- data/src/core/util/posix/sync.cc +0 -1
- data/src/core/util/posix/time.cc +0 -1
- data/src/core/util/ref_counted.h +1 -0
- data/src/core/util/ref_counted_ptr.h +1 -1
- data/src/core/util/ring_buffer.h +4 -5
- data/src/core/util/status_helper.cc +16 -20
- data/src/core/util/status_helper.h +5 -5
- data/src/core/util/sync_abseil.cc +0 -1
- data/src/core/util/table.h +6 -21
- data/src/core/util/time.cc +1 -1
- data/src/core/util/time.h +3 -3
- data/src/core/util/time_precise.cc +0 -1
- data/src/core/util/type_list.h +56 -0
- data/src/core/util/uri.cc +6 -4
- data/src/core/util/uri.h +7 -0
- data/src/core/util/useful.h +13 -15
- data/src/core/util/validation_errors.cc +5 -5
- data/src/core/util/wait_for_single_owner.h +62 -0
- data/src/core/util/windows/env.cc +3 -3
- data/src/core/util/windows/sync.cc +0 -1
- data/src/core/util/windows/time.cc +0 -1
- data/src/core/util/work_serializer.cc +27 -267
- data/src/core/util/work_serializer.h +3 -27
- data/src/core/xds/grpc/certificate_provider_store.cc +12 -17
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -2
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +11 -14
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +2 -2
- data/src/core/xds/grpc/xds_certificate_provider.cc +15 -15
- data/src/core/xds/grpc/xds_client_grpc.cc +7 -8
- data/src/core/xds/grpc/xds_cluster.h +4 -4
- data/src/core/xds/grpc/xds_cluster_parser.cc +26 -26
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
- data/src/core/xds/grpc/xds_common_types.cc +2 -2
- data/src/core/xds/grpc/xds_common_types.h +4 -4
- data/src/core/xds/grpc/xds_common_types_parser.cc +29 -31
- data/src/core/xds/grpc/xds_common_types_parser.h +8 -7
- data/src/core/xds/grpc/xds_endpoint.cc +3 -4
- data/src/core/xds/grpc/xds_endpoint_parser.cc +68 -37
- data/src/core/xds/grpc/xds_health_status.cc +4 -4
- data/src/core/xds/grpc/xds_health_status.h +4 -3
- data/src/core/xds/grpc/xds_http_fault_filter.cc +18 -20
- data/src/core/xds/grpc/xds_http_fault_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_filter.h +3 -3
- data/src/core/xds/grpc/xds_http_filter_registry.cc +7 -7
- data/src/core/xds/grpc/xds_http_filter_registry.h +3 -3
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +7 -7
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +30 -23
- data/src/core/xds/grpc/xds_http_rbac_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +10 -10
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +4 -3
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +4 -4
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_listener.h +10 -10
- data/src/core/xds/grpc/xds_listener_parser.cc +58 -51
- data/src/core/xds/grpc/xds_listener_parser.h +2 -1
- data/src/core/xds/grpc/xds_metadata.cc +5 -5
- data/src/core/xds/grpc/xds_metadata.h +8 -0
- data/src/core/xds/grpc/xds_metadata_parser.cc +65 -52
- data/src/core/xds/grpc/xds_route_config.cc +9 -15
- data/src/core/xds/grpc/xds_route_config.h +9 -9
- data/src/core/xds/grpc/xds_route_config_parser.cc +114 -116
- data/src/core/xds/grpc/xds_route_config_parser.h +4 -4
- data/src/core/xds/grpc/xds_routing.cc +6 -6
- data/src/core/xds/grpc/xds_routing.h +5 -5
- data/src/core/xds/grpc/xds_server_grpc.cc +22 -1
- data/src/core/xds/grpc/xds_server_grpc.h +5 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +33 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +5 -6
- data/src/core/xds/xds_client/lrs_client.cc +71 -83
- data/src/core/xds/xds_client/lrs_client.h +8 -8
- data/src/core/xds/xds_client/xds_api.cc +5 -228
- data/src/core/xds/xds_client/xds_api.h +1 -133
- data/src/core/xds/xds_client/xds_bootstrap.cc +11 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +7 -0
- data/src/core/xds/xds_client/xds_client.cc +1030 -704
- data/src/core/xds/xds_client/xds_client.h +135 -29
- data/src/core/xds/xds_client/xds_resource_type.h +2 -3
- data/src/core/xds/xds_client/xds_resource_type_impl.h +13 -8
- 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} +16 -57
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +53 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +47 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +42 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +109 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +43 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_int.c → a_int.cc} +15 -56
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_mbstr.c → a_mbstr.cc} +22 -62
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_object.c → a_object.cc} +14 -56
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +32 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strex.c → a_strex.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strnid.c → a_strnid.cc} +20 -59
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_time.c → a_time.cc} +41 -76
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_type.c → a_type.cc} +17 -59
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +109 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_lib.c → asn1_lib.cc} +17 -59
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +63 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -57
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{posix_time.c → posix_time.cc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_dec.c → tasn_dec.cc} +17 -58
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_enc.c → tasn_enc.cc} +22 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +164 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_new.c → tasn_new.cc} +20 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +84 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_utl.c → tasn_utl.cc} +26 -65
- data/third_party/boringssl-with-bazel/src/crypto/base64/{base64.c → base64.cc} +22 -67
- data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +19 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio.c → bio.cc} +45 -113
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio_mem.c → bio_mem.cc} +21 -62
- data/third_party/boringssl-with-bazel/src/crypto/bio/{connect.c → connect.cc} +40 -73
- data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +50 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/{fd.c → fd.cc} +14 -56
- data/third_party/boringssl-with-bazel/src/crypto/bio/{file.c → file.cc} +17 -59
- data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +152 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/bio/{pair.c → pair.cc} +37 -71
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +59 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/{socket_helper.c → socket_helper.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/blake2/{blake2.c → blake2.cc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/{bn_extra/bn_asn1.c → bn/bn_asn1.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{bn_extra/convert.c → bn/convert.cc} +34 -76
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +118 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{ber.c → ber.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbb.c → cbb.cc} +45 -61
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbs.c → cbs.cc} +42 -41
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{unicode.c → unicode.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/chacha/{chacha.c → chacha.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +18 -18
- data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +110 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra/e_aesctrhmac.c → cipher/e_aesctrhmac.cc} +18 -23
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra/e_aesgcmsiv.c → cipher/e_aesgcmsiv.cc} +42 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra/e_chacha20poly1305.c → cipher/e_chacha20poly1305.cc} +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/cipher/e_des.cc +198 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra/e_rc2.c → cipher/e_rc2.cc} +50 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra/e_tls.c → cipher/e_tls.cc} +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/internal.h +29 -69
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra/tls_cbc.c → cipher/tls_cbc.cc} +13 -51
- data/third_party/boringssl-with-bazel/src/crypto/conf/{conf.c → conf.cc} +31 -72
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_apple.c → cpu_aarch64_apple.cc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_fuchsia.c → cpu_aarch64_fuchsia.cc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_linux.c → cpu_aarch64_linux.cc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_openbsd.c → cpu_aarch64_openbsd.cc} +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_sysreg.c → cpu_aarch64_sysreg.cc} +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_freebsd.c → cpu_arm_freebsd.cc} +15 -15
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_linux.c → cpu_arm_linux.cc} +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_intel.c → cpu_intel.cc} +60 -99
- data/third_party/boringssl-with-bazel/src/crypto/{crypto.c → crypto.cc} +18 -23
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519.c → curve25519.cc} +40 -43
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{spake25519.c → spake25519.cc} +34 -28
- data/third_party/boringssl-with-bazel/src/crypto/des/{des.c → des.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +27 -69
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +124 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh_extra/params.c → dh/params.cc} +13 -51
- data/third_party/boringssl-with-bazel/src/crypto/{digest_extra/digest_extra.c → digest/digest_extra.cc} +126 -86
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa.c → dsa.cc} +166 -212
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa_asn1.c → dsa_asn1.cc} +13 -53
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +13 -15
- data/third_party/boringssl-with-bazel/src/crypto/{ec_extra/ec_asn1.c → ec/ec_asn1.cc} +59 -61
- data/third_party/boringssl-with-bazel/src/crypto/{ec_extra/ec_derive.c → ec/ec_derive.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{ec_extra/hash_to_curve.c → ec/hash_to_curve.cc} +79 -77
- data/third_party/boringssl-with-bazel/src/crypto/{ec_extra → ec}/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
- data/third_party/boringssl-with-bazel/src/crypto/{ecdsa_extra/ecdsa_asn1.c → ecdsa/ecdsa_asn1.cc} +32 -86
- data/third_party/boringssl-with-bazel/src/crypto/engine/{engine.c → engine.cc} +24 -20
- data/third_party/boringssl-with-bazel/src/crypto/err/{err.c → err.cc} +41 -134
- data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp.c → evp.cc} +37 -88
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_asn1.c → evp_asn1.cc} +122 -198
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_ctx.c → evp_ctx.cc} +20 -63
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh.c → p_dh.cc} +38 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh_asn1.c → p_dh_asn1.cc} +51 -29
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dsa_asn1.c → p_dsa_asn1.cc} +75 -134
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec.c → p_ec.cc} +31 -75
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec_asn1.c → p_ec_asn1.cc} +36 -82
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519.c → p_ed25519.cc} +34 -31
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519_asn1.c → p_ed25519_asn1.cc} +26 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_hkdf.c → p_hkdf.cc} +30 -26
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa.c → p_rsa.cc} +54 -91
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa_asn1.c → p_rsa_asn1.cc} +26 -69
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519.c → p_x25519.cc} +34 -31
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519_asn1.c → p_x25519_asn1.cc} +30 -29
- data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +98 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/{print.c → print.cc} +17 -56
- data/third_party/boringssl-with-bazel/src/crypto/evp/{scrypt.c → scrypt.cc} +20 -13
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +114 -0
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +141 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +191 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c.inc → aes_nohw.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes/cbc.c.inc → aes/cbc.cc.inc} +13 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes/cfb.c.inc → aes/cfb.cc.inc} +13 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes/gcm.c.inc → aes/gcm.cc.inc} +175 -314
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes/gcm_nohw.c.inc → aes/gcm_nohw.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +419 -70
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c.inc → key_wrap.cc.inc} +14 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +84 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes/polyval.c.inc → aes/polyval.cc.inc} +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{bcm.c → bcm.cc} +116 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +665 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c.inc → add.cc.inc} +14 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c.inc → x86_64-gcc.cc.inc} +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c.inc → bn.cc.inc} +25 -79
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c.inc → bytes.cc.inc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c.inc → cmp.cc.inc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c.inc → ctx.cc.inc} +20 -63
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c.inc → div.cc.inc} +42 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c.inc → div_extra.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c.inc → exponentiation.cc.inc} +38 -131
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c.inc → gcd.cc.inc} +16 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c.inc → gcd_extra.cc.inc} +45 -37
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c.inc → generic.cc.inc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +25 -134
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c.inc → montgomery.cc.inc} +24 -126
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c.inc → montgomery_inv.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c.inc → mul.cc.inc} +24 -70
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c.inc → prime.cc.inc} +44 -141
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c.inc → random.cc.inc} +13 -107
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c.inc → rsaz_exp.cc.inc} +18 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +20 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c.inc → shift.cc.inc} +16 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c.inc → sqrt.cc.inc} +13 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c.inc → aead.cc.inc} +30 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c.inc → cipher.cc.inc} +20 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c.inc → e_aes.cc.inc} +113 -335
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c.inc → e_aesccm.cc.inc} +21 -58
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +14 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c.inc → cmac.cc.inc} +19 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +26 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c.inc → check.cc.inc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c.inc → dh.cc.inc} +28 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c.inc → digest.cc.inc} +30 -68
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +178 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +13 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c.inc → digestsign.cc.inc} +14 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c.inc → ec.cc.inc} +24 -81
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c.inc → ec_key.cc.inc} +26 -86
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c.inc → ec_montgomery.cc.inc} +14 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c.inc → felem.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +19 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c.inc → oct.cc.inc} +19 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c.inc → p224-64.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c.inc → p256-nistz.cc.inc} +37 -30
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c.inc → p256.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c.inc → scalar.cc.inc} +21 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c.inc → simple.cc.inc} +14 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c.inc → simple_mul.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c.inc → util.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c.inc → wnaf.cc.inc} +38 -81
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +88 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c.inc → ecdsa.cc.inc} +19 -58
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c.inc → hkdf.cc.inc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c.inc → hmac.cc.inc} +16 -57
- data/third_party/boringssl-with-bazel/src/crypto/{keccak → fipsmodule/keccak}/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{keccak/keccak.c → fipsmodule/keccak/keccak.cc.inc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +1993 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1165 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c.inc → ctrdrbg.cc.inc} +22 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +18 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c.inc → rand.cc.inc} +34 -30
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +13 -56
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c.inc → padding.cc.inc} +32 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c.inc → rsa.cc.inc} +93 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c.inc → rsa_impl.cc.inc} +82 -137
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c.inc → fips.cc.inc} +26 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c.inc → self_check.cc.inc} +68 -64
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +34 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c.inc → service_indicator.cc.inc} +23 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +43 -57
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c.inc → sha1.cc.inc} +39 -88
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c.inc → sha256.cc.inc} +50 -110
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c.inc → sha512.cc.inc} +61 -131
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/address.h +119 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.cc.inc +169 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.cc.inc +161 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/params.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +329 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.cc.inc +171 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c.inc → kdf.cc.inc} +13 -51
- data/third_party/boringssl-with-bazel/src/crypto/hpke/{hpke.c → hpke.cc} +19 -16
- data/third_party/boringssl-with-bazel/src/crypto/hrss/{hrss.c → hrss.cc} +73 -122
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +242 -442
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/kyber/{kyber.c → kyber.cc} +52 -28
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +31 -75
- data/third_party/boringssl-with-bazel/src/crypto/lhash/{lhash.c → lhash.cc} +21 -62
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md4/md4.c.inc → md4/md4.cc} +21 -67
- data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5/md5.c.inc → md5/md5.cc} +17 -58
- data/third_party/boringssl-with-bazel/src/crypto/{mem.c → mem.cc} +47 -77
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +90 -0
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +97 -1042
- data/third_party/boringssl-with-bazel/src/crypto/obj/{obj.c → obj.cc} +40 -85
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +14 -56
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +80 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +149 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_info.c → pem_info.cc} +20 -60
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_lib.c → pem_lib.cc} +59 -107
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +45 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pk8.c → pem_pk8.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pkey.c → pem_pkey.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7.c → pkcs7.cc} +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7_x509.c → pkcs7_x509.cc} +40 -37
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +13 -54
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{p5_pbev2.c → p5_pbev2.cc} +13 -54
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8.c → pkcs8.cc} +170 -210
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8_x509.c → pkcs8_x509.cc} +101 -149
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305.c → poly1305.cc} +15 -15
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_arm.c → poly1305_arm.cc} +16 -14
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_vec.c → poly1305_vec.cc} +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/pool/{pool.c → pool.cc} +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/deterministic.c → rand/deterministic.cc} +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/fork_detect.c → rand/fork_detect.cc} +23 -24
- data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/getentropy.c → rand/getentropy.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/getrandom_fillin.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/passive.c → rand/passive.cc} +34 -30
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/rand_extra.c → rand/rand.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/rand/sysrand_internal.h +37 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/urandom.c → rand/urandom.cc} +19 -19
- data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/windows.c → rand/windows.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/{refcount.c → refcount.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
- data/third_party/boringssl-with-bazel/src/crypto/{rsa_extra/rsa_asn1.c → rsa/rsa_asn1.cc} +13 -54
- data/third_party/boringssl-with-bazel/src/crypto/{rsa_extra/rsa_crypt.c → rsa/rsa_crypt.cc} +94 -133
- data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -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} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +113 -0
- data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
- data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/{stack.c → stack.cc} +23 -61
- data/third_party/boringssl-with-bazel/src/crypto/thread.cc +68 -0
- data/third_party/boringssl-with-bazel/src/crypto/{thread_none.c → thread_none.cc} +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/{thread_pthread.c → thread_pthread.cc} +21 -20
- data/third_party/boringssl-with-bazel/src/crypto/{thread_win.c → thread_win.cc} +33 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{pmbtoken.c → pmbtoken.cc} +159 -171
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{trust_token.c → trust_token.cc} +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{voprf.c → voprf.cc} +178 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +97 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{algorithm.c → algorithm.cc} +14 -56
- data/third_party/boringssl-with-bazel/src/crypto/x509/{asn1_gen.c → asn1_gen.cc} +19 -62
- data/third_party/boringssl-with-bazel/src/crypto/x509/{by_dir.c → by_dir.cc} +32 -77
- data/third_party/boringssl-with-bazel/src/crypto/x509/{by_file.c → by_file.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +37 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +13 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/{name_print.c → name_print.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{policy.c → policy.cc} +200 -190
- data/third_party/boringssl-with-bazel/src/crypto/x509/{rsa_pss.c → rsa_pss.cc} +59 -96
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +103 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{t_req.c → t_req.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509.c → t_x509.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akey.c → v3_akey.cc} +17 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_alt.c → v3_alt.cc} +17 -58
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +95 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +102 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_conf.c → v3_conf.cc} +18 -60
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_cpols.c → v3_cpols.cc} +60 -98
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_crld.c → v3_crld.cc} +16 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +73 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +114 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_genn.c → v3_genn.cc} +20 -62
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_info.c → v3_info.cc} +20 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +81 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_lib.c → v3_lib.cc} +23 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ncons.c → v3_ncons.cc} +15 -56
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ocsp.c → v3_ocsp.cc} +17 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +101 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pmaps.c → v3_pmaps.cc} +15 -56
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_prn.c → v3_prn.cc} +15 -56
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_purp.c → v3_purp.cc} +29 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +131 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_utl.c → v3_utl.cc} +30 -78
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +47 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_att.c → x509_att.cc} +16 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_cmp.c → x509_cmp.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +66 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +44 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_ext.c → x509_ext.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_lu.c → x509_lu.cc} +20 -65
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_obj.c → x509_obj.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_req.c → x509_req.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_set.c → x509_set.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_trs.c → x509_trs.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_txt.c → x509_txt.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_v3.c → x509_v3.cc} +15 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vfy.c → x509_vfy.cc} +229 -267
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vpm.c → x509_vpm.cc} +68 -68
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509cset.c → x509cset.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509name.c → x509name.cc} +13 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +67 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +91 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +107 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_all.c → x_all.cc} +23 -61
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_crl.c → x_crl.cc} +19 -61
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +36 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_name.c → x_name.cc} +52 -87
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_pubkey.c → x_pubkey.cc} +17 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +51 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509.c → x_x509.cc} +61 -99
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509a.c → x_x509a.cc} +17 -57
- data/third_party/boringssl-with-bazel/src/gen/crypto/{err_data.c → err_data.cc} +468 -453
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +13 -47
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +13 -51
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +23 -62
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +248 -328
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +24 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +14 -121
- data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +31 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +31 -59
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -56
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +14 -66
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +31 -72
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +14 -65
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +13 -51
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -107
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +14 -56
- data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +13 -107
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +20 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +13 -37
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +27 -69
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +22 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +23 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +15 -95
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +174 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +24 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +358 -290
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +15 -114
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +15 -57
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -156
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +15 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +13 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +14 -61
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +15 -14
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +680 -434
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +129 -174
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +176 -131
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +21 -127
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +107 -104
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +311 -312
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +54 -47
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +677 -475
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +66 -73
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +61 -153
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +198 -331
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +88 -212
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +949 -531
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -157
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +29 -159
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +18 -112
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +103 -196
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +52 -145
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +15 -20
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +117 -157
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +229 -365
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +216 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +194 -350
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +38 -83
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +101 -236
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +17 -91
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +109 -157
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +44 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +66 -195
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -176
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +58 -42
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +146 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +251 -180
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +236 -107
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +64 -117
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +52 -134
- 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 +357 -348
- 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/asn1/a_bool.c +0 -95
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -151
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -74
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -183
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -103
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -105
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -94
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -126
- data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +0 -92
- data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
- 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/ecdh_extra/ecdh_extra.c +0 -124
- data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -156
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c.inc +0 -127
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c.inc +0 -124
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c.inc +0 -146
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c.inc +0 -304
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c.inc +0 -130
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c.inc +0 -196
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -428
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c.inc +0 -87
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c.inc +0 -241
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +0 -73
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.c +0 -1687
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +0 -90
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -243
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -64
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -64
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -42
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +0 -37
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -46
- data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -79
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
- 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/crypto/thread.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -145
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c +0 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -108
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -86
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -109
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -149
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -97
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -78
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -116
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -70
- 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
@@ -1,110 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
*
|
15
|
-
* Copyright remains Eric Young's, and as such any Copyright notices in
|
16
|
-
* the code are not to be removed.
|
17
|
-
* If this package is used in a product, Eric Young should be given attribution
|
18
|
-
* as the author of the parts of the library used.
|
19
|
-
* This can be in the form of a textual message at program startup or
|
20
|
-
* in documentation (online or textual) provided with the package.
|
21
|
-
*
|
22
|
-
* Redistribution and use in source and binary forms, with or without
|
23
|
-
* modification, are permitted provided that the following conditions
|
24
|
-
* are met:
|
25
|
-
* 1. Redistributions of source code must retain the copyright
|
26
|
-
* notice, this list of conditions and the following disclaimer.
|
27
|
-
* 2. Redistributions in binary form must reproduce the above copyright
|
28
|
-
* notice, this list of conditions and the following disclaimer in the
|
29
|
-
* documentation and/or other materials provided with the distribution.
|
30
|
-
* 3. All advertising materials mentioning features or use of this software
|
31
|
-
* must display the following acknowledgement:
|
32
|
-
* "This product includes cryptographic software written by
|
33
|
-
* Eric Young (eay@cryptsoft.com)"
|
34
|
-
* The word 'cryptographic' can be left out if the rouines from the library
|
35
|
-
* being used are not cryptographic related :-).
|
36
|
-
* 4. If you include any Windows specific code (or a derivative thereof) from
|
37
|
-
* the apps directory (application code) you must include an acknowledgement:
|
38
|
-
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
39
|
-
*
|
40
|
-
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
41
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
42
|
-
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
43
|
-
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
44
|
-
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
45
|
-
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
46
|
-
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
47
|
-
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
48
|
-
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
49
|
-
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
50
|
-
* SUCH DAMAGE.
|
51
|
-
*
|
52
|
-
* The licence and distribution terms for any publically available version or
|
53
|
-
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
54
|
-
* copied and put under another distribution licence
|
55
|
-
* [including the GNU Public Licence.]
|
56
|
-
*/
|
57
|
-
/* ====================================================================
|
58
|
-
* Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
|
59
|
-
*
|
60
|
-
* Redistribution and use in source and binary forms, with or without
|
61
|
-
* modification, are permitted provided that the following conditions
|
62
|
-
* are met:
|
63
|
-
*
|
64
|
-
* 1. Redistributions of source code must retain the above copyright
|
65
|
-
* notice, this list of conditions and the following disclaimer.
|
66
|
-
*
|
67
|
-
* 2. Redistributions in binary form must reproduce the above copyright
|
68
|
-
* notice, this list of conditions and the following disclaimer in
|
69
|
-
* the documentation and/or other materials provided with the
|
70
|
-
* distribution.
|
71
|
-
*
|
72
|
-
* 3. All advertising materials mentioning features or use of this
|
73
|
-
* software must display the following acknowledgment:
|
74
|
-
* "This product includes software developed by the OpenSSL Project
|
75
|
-
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
76
|
-
*
|
77
|
-
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
78
|
-
* endorse or promote products derived from this software without
|
79
|
-
* prior written permission. For written permission, please contact
|
80
|
-
* openssl-core@openssl.org.
|
81
|
-
*
|
82
|
-
* 5. Products derived from this software may not be called "OpenSSL"
|
83
|
-
* nor may "OpenSSL" appear in their names without prior written
|
84
|
-
* permission of the OpenSSL Project.
|
85
|
-
*
|
86
|
-
* 6. Redistributions of any form whatsoever must retain the following
|
87
|
-
* acknowledgment:
|
88
|
-
* "This product includes software developed by the OpenSSL Project
|
89
|
-
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
90
|
-
*
|
91
|
-
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
92
|
-
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
93
|
-
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
94
|
-
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
95
|
-
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
96
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
97
|
-
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
98
|
-
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
99
|
-
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
100
|
-
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
101
|
-
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
102
|
-
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
103
|
-
* ====================================================================
|
104
|
-
*
|
105
|
-
* This product includes cryptographic software written by Eric Young
|
106
|
-
* (eay@cryptsoft.com). This product includes software written by Tim
|
107
|
-
* Hudson (tjh@cryptsoft.com). */
|
1
|
+
// Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
108
14
|
|
109
15
|
#include <openssl/ssl.h>
|
110
16
|
|
@@ -130,6 +36,7 @@
|
|
130
36
|
#include <openssl/rand.h>
|
131
37
|
|
132
38
|
#include "../crypto/internal.h"
|
39
|
+
#include "../crypto/spake2plus/internal.h"
|
133
40
|
#include "internal.h"
|
134
41
|
|
135
42
|
|
@@ -175,7 +82,7 @@ static bool tls1_check_duplicate_extensions(const CBS *cbs) {
|
|
175
82
|
}
|
176
83
|
|
177
84
|
Array<uint16_t> extension_types;
|
178
|
-
if (!extension_types.
|
85
|
+
if (!extension_types.InitForOverwrite(num_extensions)) {
|
179
86
|
return false;
|
180
87
|
}
|
181
88
|
|
@@ -214,16 +121,6 @@ static bool is_post_quantum_group(uint16_t id) {
|
|
214
121
|
}
|
215
122
|
}
|
216
123
|
|
217
|
-
bool ssl_client_hello_init(const SSL *ssl, SSL_CLIENT_HELLO *out,
|
218
|
-
Span<const uint8_t> body) {
|
219
|
-
CBS cbs = body;
|
220
|
-
if (!ssl_parse_client_hello_with_trailing_data(ssl, &cbs, out) ||
|
221
|
-
CBS_len(&cbs) != 0) {
|
222
|
-
return false;
|
223
|
-
}
|
224
|
-
return true;
|
225
|
-
}
|
226
|
-
|
227
124
|
bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
228
125
|
SSL_CLIENT_HELLO *out) {
|
229
126
|
OPENSSL_memset(out, 0, sizeof(*out));
|
@@ -235,6 +132,7 @@ bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
|
235
132
|
!CBS_get_bytes(cbs, &random, SSL3_RANDOM_SIZE) ||
|
236
133
|
!CBS_get_u8_length_prefixed(cbs, &session_id) ||
|
237
134
|
CBS_len(&session_id) > SSL_MAX_SSL_SESSION_ID_LENGTH) {
|
135
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_PARSE_FAILED);
|
238
136
|
return false;
|
239
137
|
}
|
240
138
|
|
@@ -243,12 +141,17 @@ bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
|
243
141
|
out->session_id = CBS_data(&session_id);
|
244
142
|
out->session_id_len = CBS_len(&session_id);
|
245
143
|
|
246
|
-
// Skip past DTLS cookie
|
247
144
|
if (SSL_is_dtls(out->ssl)) {
|
248
145
|
CBS cookie;
|
249
146
|
if (!CBS_get_u8_length_prefixed(cbs, &cookie)) {
|
147
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_PARSE_FAILED);
|
250
148
|
return false;
|
251
149
|
}
|
150
|
+
out->dtls_cookie = CBS_data(&cookie);
|
151
|
+
out->dtls_cookie_len = CBS_len(&cookie);
|
152
|
+
} else {
|
153
|
+
out->dtls_cookie = nullptr;
|
154
|
+
out->dtls_cookie_len = 0;
|
252
155
|
}
|
253
156
|
|
254
157
|
CBS cipher_suites, compression_methods;
|
@@ -256,6 +159,7 @@ bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
|
256
159
|
CBS_len(&cipher_suites) < 2 || (CBS_len(&cipher_suites) & 1) != 0 ||
|
257
160
|
!CBS_get_u8_length_prefixed(cbs, &compression_methods) ||
|
258
161
|
CBS_len(&compression_methods) < 1) {
|
162
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_PARSE_FAILED);
|
259
163
|
return false;
|
260
164
|
}
|
261
165
|
|
@@ -274,6 +178,7 @@ bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
|
274
178
|
CBS extensions;
|
275
179
|
if (!CBS_get_u16_length_prefixed(cbs, &extensions) ||
|
276
180
|
!tls1_check_duplicate_extensions(&extensions)) {
|
181
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_PARSE_FAILED);
|
277
182
|
return false;
|
278
183
|
}
|
279
184
|
out->extensions = CBS_data(&extensions);
|
@@ -513,9 +418,7 @@ static bool ignore_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
513
418
|
return true;
|
514
419
|
}
|
515
420
|
|
516
|
-
static bool dont_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
517
|
-
return true;
|
518
|
-
}
|
421
|
+
static bool dont_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) { return true; }
|
519
422
|
|
520
423
|
// Server name indication (SNI).
|
521
424
|
//
|
@@ -533,9 +436,7 @@ static bool ext_sni_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
533
436
|
if (ssl->hostname == nullptr) {
|
534
437
|
return true;
|
535
438
|
}
|
536
|
-
hostname =
|
537
|
-
MakeConstSpan(reinterpret_cast<const uint8_t *>(ssl->hostname.get()),
|
538
|
-
strlen(ssl->hostname.get()));
|
439
|
+
hostname = StringAsBytes(ssl->hostname.get());
|
539
440
|
}
|
540
441
|
|
541
442
|
CBB contents, server_name_list, name;
|
@@ -566,7 +467,7 @@ static bool ext_sni_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
566
467
|
}
|
567
468
|
|
568
469
|
static bool ext_sni_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
569
|
-
if (hs->ssl->s3->session_reused ||
|
470
|
+
if (hs->ssl->s3->session_reused || //
|
570
471
|
!hs->should_ack_sni) {
|
571
472
|
return true;
|
572
473
|
}
|
@@ -703,20 +604,20 @@ static bool ext_ri_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
703
604
|
ssl_client_hello_type_t type) {
|
704
605
|
const SSL *const ssl = hs->ssl;
|
705
606
|
// Renegotiation indication is not necessary in TLS 1.3.
|
706
|
-
if (hs->min_version >= TLS1_3_VERSION ||
|
707
|
-
|
607
|
+
if (hs->min_version >= TLS1_3_VERSION || //
|
608
|
+
type == ssl_client_hello_inner) {
|
708
609
|
return true;
|
709
610
|
}
|
710
611
|
|
711
612
|
assert(ssl->s3->initial_handshake_complete ==
|
712
|
-
|
613
|
+
!ssl->s3->previous_client_finished.empty());
|
713
614
|
|
714
615
|
CBB contents, prev_finished;
|
715
616
|
if (!CBB_add_u16(out, TLSEXT_TYPE_renegotiate) ||
|
716
617
|
!CBB_add_u16_length_prefixed(out, &contents) ||
|
717
618
|
!CBB_add_u8_length_prefixed(&contents, &prev_finished) ||
|
718
|
-
!CBB_add_bytes(&prev_finished, ssl->s3->previous_client_finished,
|
719
|
-
ssl->s3->
|
619
|
+
!CBB_add_bytes(&prev_finished, ssl->s3->previous_client_finished.data(),
|
620
|
+
ssl->s3->previous_client_finished.size()) ||
|
720
621
|
!CBB_flush(out)) {
|
721
622
|
return false;
|
722
623
|
}
|
@@ -752,16 +653,11 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
752
653
|
return true;
|
753
654
|
}
|
754
655
|
|
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));
|
656
|
+
// Check for logic errors.
|
657
|
+
assert(ssl->s3->previous_client_finished.size() ==
|
658
|
+
ssl->s3->previous_server_finished.size());
|
763
659
|
assert(ssl->s3->initial_handshake_complete ==
|
764
|
-
|
660
|
+
!ssl->s3->previous_client_finished.empty());
|
765
661
|
|
766
662
|
// Parse out the extension contents.
|
767
663
|
CBS renegotiated_connection;
|
@@ -773,15 +669,22 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
773
669
|
}
|
774
670
|
|
775
671
|
// Check that the extension matches.
|
776
|
-
|
672
|
+
CBS client_verify, server_verify;
|
673
|
+
if (!CBS_get_bytes(&renegotiated_connection, &client_verify,
|
674
|
+
ssl->s3->previous_client_finished.size()) ||
|
675
|
+
!CBS_get_bytes(&renegotiated_connection, &server_verify,
|
676
|
+
ssl->s3->previous_server_finished.size()) ||
|
677
|
+
CBS_len(&renegotiated_connection) != 0) {
|
777
678
|
OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH);
|
778
679
|
*out_alert = SSL_AD_HANDSHAKE_FAILURE;
|
779
680
|
return false;
|
780
681
|
}
|
781
682
|
|
782
|
-
|
783
|
-
|
784
|
-
|
683
|
+
bool ok =
|
684
|
+
CBS_mem_equal(&client_verify, ssl->s3->previous_client_finished.data(),
|
685
|
+
ssl->s3->previous_client_finished.size()) &&
|
686
|
+
CBS_mem_equal(&server_verify, ssl->s3->previous_server_finished.data(),
|
687
|
+
ssl->s3->previous_server_finished.size());
|
785
688
|
#if defined(BORINGSSL_UNSAFE_FUZZER_MODE)
|
786
689
|
ok = true;
|
787
690
|
#endif
|
@@ -790,20 +693,8 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
790
693
|
*out_alert = SSL_AD_HANDSHAKE_FAILURE;
|
791
694
|
return false;
|
792
695
|
}
|
793
|
-
d += ssl->s3->previous_client_finished_len;
|
794
696
|
|
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
697
|
ssl->s3->send_connection_binding = true;
|
806
|
-
|
807
698
|
return true;
|
808
699
|
}
|
809
700
|
|
@@ -887,7 +778,7 @@ static bool ext_ems_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
887
778
|
SSL *const ssl = hs->ssl;
|
888
779
|
|
889
780
|
if (contents != NULL) {
|
890
|
-
if (ssl_protocol_version(ssl) >= TLS1_3_VERSION ||
|
781
|
+
if (ssl_protocol_version(ssl) >= TLS1_3_VERSION || //
|
891
782
|
CBS_len(contents) != 0) {
|
892
783
|
return false;
|
893
784
|
}
|
@@ -953,17 +844,14 @@ static bool ext_ticket_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
953
844
|
return true;
|
954
845
|
}
|
955
846
|
|
956
|
-
Span<const uint8_t> ticket;
|
957
|
-
|
958
847
|
// Renegotiation does not participate in session resumption. However, still
|
959
848
|
// advertise the extension to avoid potentially breaking servers which carry
|
960
849
|
// over the state from the previous handshake, such as OpenSSL servers
|
961
850
|
// without upstream's 3c3f0259238594d77264a78944d409f2127642c4.
|
962
|
-
|
851
|
+
Span<const uint8_t> ticket;
|
852
|
+
if (!ssl->s3->initial_handshake_complete && //
|
963
853
|
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) {
|
854
|
+
ssl_session_get_type(ssl->session.get()) == SSLSessionType::kTicket) {
|
967
855
|
ticket = ssl->session->ticket;
|
968
856
|
}
|
969
857
|
|
@@ -1029,6 +917,10 @@ static bool ext_sigalgs_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1029
917
|
if (hs->max_version < TLS1_2_VERSION) {
|
1030
918
|
return true;
|
1031
919
|
}
|
920
|
+
// In PAKE mode, signature_algorithms is not used.
|
921
|
+
if (hs->pake_prover != nullptr) {
|
922
|
+
return true;
|
923
|
+
}
|
1032
924
|
|
1033
925
|
CBB contents, sigalgs_cbb;
|
1034
926
|
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_signature_algorithms) ||
|
@@ -1199,7 +1091,7 @@ static bool ext_npn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1199
1091
|
|
1200
1092
|
while (CBS_len(contents) != 0) {
|
1201
1093
|
CBS proto;
|
1202
|
-
if (!CBS_get_u8_length_prefixed(contents, &proto) ||
|
1094
|
+
if (!CBS_get_u8_length_prefixed(contents, &proto) || //
|
1203
1095
|
CBS_len(&proto) == 0) {
|
1204
1096
|
return false;
|
1205
1097
|
}
|
@@ -1212,8 +1104,7 @@ static bool ext_npn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1212
1104
|
ssl, &selected, &selected_len, orig_contents,
|
1213
1105
|
static_cast<unsigned>(orig_len),
|
1214
1106
|
ssl->ctx->next_proto_select_cb_arg) != SSL_TLSEXT_ERR_OK ||
|
1215
|
-
!ssl->s3->next_proto_negotiated.CopyFrom(
|
1216
|
-
MakeConstSpan(selected, selected_len))) {
|
1107
|
+
!ssl->s3->next_proto_negotiated.CopyFrom(Span(selected, selected_len))) {
|
1217
1108
|
*out_alert = SSL_AD_INTERNAL_ERROR;
|
1218
1109
|
return false;
|
1219
1110
|
}
|
@@ -1233,9 +1124,9 @@ static bool ext_npn_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1233
1124
|
return false;
|
1234
1125
|
}
|
1235
1126
|
|
1236
|
-
if (contents == NULL ||
|
1237
|
-
ssl->s3->initial_handshake_complete ||
|
1238
|
-
ssl->ctx->next_protos_advertised_cb == NULL ||
|
1127
|
+
if (contents == NULL || //
|
1128
|
+
ssl->s3->initial_handshake_complete || //
|
1129
|
+
ssl->ctx->next_protos_advertised_cb == NULL || //
|
1239
1130
|
SSL_is_dtls(ssl)) {
|
1240
1131
|
return true;
|
1241
1132
|
}
|
@@ -1263,9 +1154,9 @@ static bool ext_npn_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
1263
1154
|
}
|
1264
1155
|
|
1265
1156
|
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) ||
|
1157
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_next_proto_neg) || //
|
1158
|
+
!CBB_add_u16_length_prefixed(out, &contents) || //
|
1159
|
+
!CBB_add_bytes(&contents, npa, npa_len) || //
|
1269
1160
|
!CBB_flush(out)) {
|
1270
1161
|
return false;
|
1271
1162
|
}
|
@@ -1376,7 +1267,7 @@ static bool ext_alpn_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1376
1267
|
CBB *out_compressible,
|
1377
1268
|
ssl_client_hello_type_t type) {
|
1378
1269
|
const SSL *const ssl = hs->ssl;
|
1379
|
-
if (hs->config->alpn_client_proto_list.empty() && ssl
|
1270
|
+
if (hs->config->alpn_client_proto_list.empty() && SSL_is_quic(ssl)) {
|
1380
1271
|
// ALPN MUST be used with QUIC.
|
1381
1272
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_APPLICATION_PROTOCOL);
|
1382
1273
|
return false;
|
@@ -1405,7 +1296,7 @@ static bool ext_alpn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1405
1296
|
CBS *contents) {
|
1406
1297
|
SSL *const ssl = hs->ssl;
|
1407
1298
|
if (contents == NULL) {
|
1408
|
-
if (ssl
|
1299
|
+
if (SSL_is_quic(ssl)) {
|
1409
1300
|
// ALPN is required when QUIC is used.
|
1410
1301
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_APPLICATION_PROTOCOL);
|
1411
1302
|
*out_alert = SSL_AD_NO_APPLICATION_PROTOCOL;
|
@@ -1427,11 +1318,11 @@ static bool ext_alpn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1427
1318
|
// The extension data consists of a ProtocolNameList which must have
|
1428
1319
|
// exactly one ProtocolName. Each of these is length-prefixed.
|
1429
1320
|
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) ||
|
1321
|
+
if (!CBS_get_u16_length_prefixed(contents, &protocol_name_list) || //
|
1322
|
+
CBS_len(contents) != 0 || //
|
1323
|
+
!CBS_get_u8_length_prefixed(&protocol_name_list, &protocol_name) || //
|
1433
1324
|
// Empty protocol names are forbidden.
|
1434
|
-
CBS_len(&protocol_name) == 0 ||
|
1325
|
+
CBS_len(&protocol_name) == 0 || //
|
1435
1326
|
CBS_len(&protocol_name_list) != 0) {
|
1436
1327
|
return false;
|
1437
1328
|
}
|
@@ -1505,7 +1396,7 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1505
1396
|
!ssl_client_hello_get_extension(
|
1506
1397
|
client_hello, &contents,
|
1507
1398
|
TLSEXT_TYPE_application_layer_protocol_negotiation)) {
|
1508
|
-
if (ssl
|
1399
|
+
if (SSL_is_quic(ssl)) {
|
1509
1400
|
// ALPN is required when QUIC is used.
|
1510
1401
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_APPLICATION_PROTOCOL);
|
1511
1402
|
*out_alert = SSL_AD_NO_APPLICATION_PROTOCOL;
|
@@ -1519,8 +1410,8 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1519
1410
|
hs->next_proto_neg_seen = false;
|
1520
1411
|
|
1521
1412
|
CBS protocol_name_list;
|
1522
|
-
if (!CBS_get_u16_length_prefixed(&contents, &protocol_name_list) ||
|
1523
|
-
CBS_len(&contents) != 0 ||
|
1413
|
+
if (!CBS_get_u16_length_prefixed(&contents, &protocol_name_list) || //
|
1414
|
+
CBS_len(&contents) != 0 || //
|
1524
1415
|
!ssl_is_valid_alpn_list(protocol_name_list)) {
|
1525
1416
|
OPENSSL_PUT_ERROR(SSL, SSL_R_PARSE_TLSEXT);
|
1526
1417
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -1536,7 +1427,7 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1536
1427
|
static_cast<unsigned>(CBS_len(&protocol_name_list)),
|
1537
1428
|
ssl->ctx->alpn_select_cb_arg);
|
1538
1429
|
// ALPN is required when QUIC is used.
|
1539
|
-
if (ssl
|
1430
|
+
if (SSL_is_quic(ssl) &&
|
1540
1431
|
(ret == SSL_TLSEXT_ERR_NOACK || ret == SSL_TLSEXT_ERR_ALERT_WARNING)) {
|
1541
1432
|
ret = SSL_TLSEXT_ERR_ALERT_FATAL;
|
1542
1433
|
}
|
@@ -1547,8 +1438,7 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1547
1438
|
*out_alert = SSL_AD_INTERNAL_ERROR;
|
1548
1439
|
return false;
|
1549
1440
|
}
|
1550
|
-
if (!ssl->s3->alpn_selected.CopyFrom(
|
1551
|
-
MakeConstSpan(selected, selected_len))) {
|
1441
|
+
if (!ssl->s3->alpn_selected.CopyFrom(Span(selected, selected_len))) {
|
1552
1442
|
*out_alert = SSL_AD_INTERNAL_ERROR;
|
1553
1443
|
return false;
|
1554
1444
|
}
|
@@ -1678,8 +1568,8 @@ static bool ext_srtp_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1678
1568
|
const SSL *const ssl = hs->ssl;
|
1679
1569
|
const STACK_OF(SRTP_PROTECTION_PROFILE) *profiles =
|
1680
1570
|
SSL_get_srtp_profiles(ssl);
|
1681
|
-
if (profiles == NULL ||
|
1682
|
-
sk_SRTP_PROTECTION_PROFILE_num(profiles) == 0 ||
|
1571
|
+
if (profiles == NULL || //
|
1572
|
+
sk_SRTP_PROTECTION_PROFILE_num(profiles) == 0 || //
|
1683
1573
|
!SSL_is_dtls(ssl)) {
|
1684
1574
|
return true;
|
1685
1575
|
}
|
@@ -1719,10 +1609,10 @@ static bool ext_srtp_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1719
1609
|
assert(SSL_is_dtls(ssl));
|
1720
1610
|
CBS profile_ids, srtp_mki;
|
1721
1611
|
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) ||
|
1612
|
+
if (!CBS_get_u16_length_prefixed(contents, &profile_ids) || //
|
1613
|
+
!CBS_get_u16(&profile_ids, &profile_id) || //
|
1614
|
+
CBS_len(&profile_ids) != 0 || //
|
1615
|
+
!CBS_get_u8_length_prefixed(contents, &srtp_mki) || //
|
1726
1616
|
CBS_len(contents) != 0) {
|
1727
1617
|
OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST);
|
1728
1618
|
return false;
|
@@ -1802,8 +1692,7 @@ static bool ext_srtp_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
1802
1692
|
!CBB_add_u16_length_prefixed(out, &contents) ||
|
1803
1693
|
!CBB_add_u16_length_prefixed(&contents, &profile_ids) ||
|
1804
1694
|
!CBB_add_u16(&profile_ids, ssl->s3->srtp_profile->id) ||
|
1805
|
-
!CBB_add_u8(&contents, 0 /* empty MKI */) ||
|
1806
|
-
!CBB_flush(out)) {
|
1695
|
+
!CBB_add_u8(&contents, 0 /* empty MKI */) || !CBB_flush(out)) {
|
1807
1696
|
return false;
|
1808
1697
|
}
|
1809
1698
|
|
@@ -1839,8 +1728,8 @@ static bool ext_ec_point_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
1839
1728
|
return ext_ec_point_add_extension(hs, out);
|
1840
1729
|
}
|
1841
1730
|
|
1842
|
-
static bool ext_ec_point_parse_serverhello(SSL_HANDSHAKE *hs,
|
1843
|
-
CBS *contents) {
|
1731
|
+
static bool ext_ec_point_parse_serverhello(SSL_HANDSHAKE *hs,
|
1732
|
+
uint8_t *out_alert, CBS *contents) {
|
1844
1733
|
if (contents == NULL) {
|
1845
1734
|
return true;
|
1846
1735
|
}
|
@@ -1867,8 +1756,8 @@ static bool ext_ec_point_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert
|
|
1867
1756
|
return true;
|
1868
1757
|
}
|
1869
1758
|
|
1870
|
-
static bool ext_ec_point_parse_clienthello(SSL_HANDSHAKE *hs,
|
1871
|
-
|
1759
|
+
static bool ext_ec_point_parse_clienthello(SSL_HANDSHAKE *hs,
|
1760
|
+
uint8_t *out_alert, CBS *contents) {
|
1872
1761
|
if (ssl_protocol_version(hs->ssl) >= TLS1_3_VERSION) {
|
1873
1762
|
return true;
|
1874
1763
|
}
|
@@ -1902,7 +1791,8 @@ static bool should_offer_psk(const SSL_HANDSHAKE *hs,
|
|
1902
1791
|
ssl_client_hello_type_t type) {
|
1903
1792
|
const SSL *const ssl = hs->ssl;
|
1904
1793
|
if (hs->max_version < TLS1_3_VERSION || ssl->session == nullptr ||
|
1905
|
-
|
1794
|
+
ssl_session_get_type(ssl->session.get()) !=
|
1795
|
+
SSLSessionType::kPreSharedKey ||
|
1906
1796
|
// TODO(https://crbug.com/boringssl/275): Should we synthesize a
|
1907
1797
|
// placeholder PSK, at least when we offer early data? Otherwise
|
1908
1798
|
// ClientHelloOuter will contain an early_data extension without a
|
@@ -1942,8 +1832,7 @@ static bool ext_pre_shared_key_add_clienthello(const SSL_HANDSHAKE *hs,
|
|
1942
1832
|
return true;
|
1943
1833
|
}
|
1944
1834
|
|
1945
|
-
|
1946
|
-
ssl_get_current_time(ssl, &now);
|
1835
|
+
OPENSSL_timeval now = ssl_ctx_get_current_time(ssl->ctx.get());
|
1947
1836
|
uint32_t ticket_age = 1000 * (now.tv_sec - ssl->session->time);
|
1948
1837
|
uint32_t obfuscated_ticket_age = ticket_age + ssl->session->ticket_age_add;
|
1949
1838
|
|
@@ -1973,7 +1862,7 @@ bool ssl_ext_pre_shared_key_parse_serverhello(SSL_HANDSHAKE *hs,
|
|
1973
1862
|
uint8_t *out_alert,
|
1974
1863
|
CBS *contents) {
|
1975
1864
|
uint16_t psk_id;
|
1976
|
-
if (!CBS_get_u16(contents, &psk_id) ||
|
1865
|
+
if (!CBS_get_u16(contents, &psk_id) || //
|
1977
1866
|
CBS_len(contents) != 0) {
|
1978
1867
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
1979
1868
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -2005,11 +1894,11 @@ bool ssl_ext_pre_shared_key_parse_clienthello(
|
|
2005
1894
|
|
2006
1895
|
// We only process the first PSK identity since we don't support pure PSK.
|
2007
1896
|
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 ||
|
1897
|
+
if (!CBS_get_u16_length_prefixed(contents, &identities) || //
|
1898
|
+
!CBS_get_u16_length_prefixed(&identities, out_ticket) || //
|
1899
|
+
!CBS_get_u32(&identities, out_obfuscated_ticket_age) || //
|
1900
|
+
!CBS_get_u16_length_prefixed(contents, &binders) || //
|
1901
|
+
CBS_len(&binders) == 0 || //
|
2013
1902
|
CBS_len(contents) != 0) {
|
2014
1903
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
2015
1904
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -2062,10 +1951,10 @@ bool ssl_ext_pre_shared_key_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
2062
1951
|
}
|
2063
1952
|
|
2064
1953
|
CBB contents;
|
2065
|
-
if (!CBB_add_u16(out, TLSEXT_TYPE_pre_shared_key) ||
|
2066
|
-
!CBB_add_u16_length_prefixed(out, &contents) ||
|
1954
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_pre_shared_key) || //
|
1955
|
+
!CBB_add_u16_length_prefixed(out, &contents) || //
|
2067
1956
|
// We only consider the first identity for resumption
|
2068
|
-
!CBB_add_u16(&contents, 0) ||
|
1957
|
+
!CBB_add_u16(&contents, 0) || //
|
2069
1958
|
!CBB_flush(out)) {
|
2070
1959
|
return false;
|
2071
1960
|
}
|
@@ -2084,6 +1973,11 @@ static bool ext_psk_key_exchange_modes_add_clienthello(
|
|
2084
1973
|
if (hs->max_version < TLS1_3_VERSION) {
|
2085
1974
|
return true;
|
2086
1975
|
}
|
1976
|
+
// We do not support resumption with PAKEs, so do not offer any PSK key
|
1977
|
+
// exchange modes, to signal the server not to send a ticket.
|
1978
|
+
if (hs->pake_prover != nullptr) {
|
1979
|
+
return true;
|
1980
|
+
}
|
2087
1981
|
|
2088
1982
|
CBB contents, ke_modes;
|
2089
1983
|
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_psk_key_exchange_modes) ||
|
@@ -2104,8 +1998,8 @@ static bool ext_psk_key_exchange_modes_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2104
1998
|
}
|
2105
1999
|
|
2106
2000
|
CBS ke_modes;
|
2107
|
-
if (!CBS_get_u8_length_prefixed(contents, &ke_modes) ||
|
2108
|
-
CBS_len(&ke_modes) == 0 ||
|
2001
|
+
if (!CBS_get_u8_length_prefixed(contents, &ke_modes) || //
|
2002
|
+
CBS_len(&ke_modes) == 0 || //
|
2109
2003
|
CBS_len(contents) != 0) {
|
2110
2004
|
*out_alert = SSL_AD_DECODE_ERROR;
|
2111
2005
|
return false;
|
@@ -2142,8 +2036,8 @@ static bool ext_early_data_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2142
2036
|
// send the extension in both ClientHellos. This ensures that, if the server
|
2143
2037
|
// handshakes with ClientHelloOuter, it can skip past early data. See
|
2144
2038
|
// 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) ||
|
2039
|
+
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_early_data) || //
|
2040
|
+
!CBB_add_u16(out_compressible, 0) || //
|
2147
2041
|
!CBB_flush(out_compressible)) {
|
2148
2042
|
return false;
|
2149
2043
|
}
|
@@ -2190,10 +2084,10 @@ static bool ext_early_data_parse_serverhello(SSL_HANDSHAKE *hs,
|
|
2190
2084
|
}
|
2191
2085
|
|
2192
2086
|
static bool ext_early_data_parse_clienthello(SSL_HANDSHAKE *hs,
|
2193
|
-
uint8_t *out_alert,
|
2087
|
+
uint8_t *out_alert,
|
2088
|
+
CBS *contents) {
|
2194
2089
|
SSL *const ssl = hs->ssl;
|
2195
|
-
if (contents == NULL ||
|
2196
|
-
ssl_protocol_version(ssl) < TLS1_3_VERSION) {
|
2090
|
+
if (contents == NULL || ssl_protocol_version(ssl) < TLS1_3_VERSION) {
|
2197
2091
|
return true;
|
2198
2092
|
}
|
2199
2093
|
|
@@ -2211,8 +2105,8 @@ static bool ext_early_data_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
2211
2105
|
return true;
|
2212
2106
|
}
|
2213
2107
|
|
2214
|
-
if (!CBB_add_u16(out, TLSEXT_TYPE_early_data) ||
|
2215
|
-
!CBB_add_u16(out, 0) ||
|
2108
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_early_data) || //
|
2109
|
+
!CBB_add_u16(out, 0) || //
|
2216
2110
|
!CBB_flush(out)) {
|
2217
2111
|
return false;
|
2218
2112
|
}
|
@@ -2231,7 +2125,9 @@ bool ssl_setup_key_shares(SSL_HANDSHAKE *hs, uint16_t override_group_id) {
|
|
2231
2125
|
hs->key_shares[1].reset();
|
2232
2126
|
hs->key_share_bytes.Reset();
|
2233
2127
|
|
2234
|
-
|
2128
|
+
// If offering a PAKE, do not set up key shares. We do not currently support
|
2129
|
+
// clients offering both PAKE and non-PAKE modes, including resumption.
|
2130
|
+
if (hs->max_version < TLS1_3_VERSION || hs->pake_prover) {
|
2235
2131
|
return true;
|
2236
2132
|
}
|
2237
2133
|
|
@@ -2296,7 +2192,9 @@ bool ssl_setup_key_shares(SSL_HANDSHAKE *hs, uint16_t override_group_id) {
|
|
2296
2192
|
static bool ext_key_share_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
2297
2193
|
CBB *out_compressible,
|
2298
2194
|
ssl_client_hello_type_t type) {
|
2299
|
-
|
2195
|
+
// If offering a PAKE, do not set up key shares. We do not currently support
|
2196
|
+
// clients offering both PAKE and non-PAKE modes, including resumption.
|
2197
|
+
if (hs->max_version < TLS1_3_VERSION || hs->pake_prover) {
|
2300
2198
|
return true;
|
2301
2199
|
}
|
2302
2200
|
|
@@ -2317,6 +2215,14 @@ static bool ext_key_share_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2317
2215
|
bool ssl_ext_key_share_parse_serverhello(SSL_HANDSHAKE *hs,
|
2318
2216
|
Array<uint8_t> *out_secret,
|
2319
2217
|
uint8_t *out_alert, CBS *contents) {
|
2218
|
+
if (hs->key_shares[0] == nullptr) {
|
2219
|
+
// If we did not offer key shares, the extension should have been rejected
|
2220
|
+
// as unsolicited.
|
2221
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
2222
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
2223
|
+
return false;
|
2224
|
+
}
|
2225
|
+
|
2320
2226
|
CBS ciphertext;
|
2321
2227
|
uint16_t group_id;
|
2322
2228
|
if (!CBS_get_u16(contents, &group_id) ||
|
@@ -2352,7 +2258,8 @@ bool ssl_ext_key_share_parse_clienthello(SSL_HANDSHAKE *hs, bool *out_found,
|
|
2352
2258
|
Span<const uint8_t> *out_peer_key,
|
2353
2259
|
uint8_t *out_alert,
|
2354
2260
|
const SSL_CLIENT_HELLO *client_hello) {
|
2355
|
-
// We only support connections that include an ECDHE key exchange
|
2261
|
+
// We only support connections that include an ECDHE key exchange, or use a
|
2262
|
+
// PAKE.
|
2356
2263
|
CBS contents;
|
2357
2264
|
if (!ssl_client_hello_get_extension(client_hello, &contents,
|
2358
2265
|
TLSEXT_TYPE_key_share)) {
|
@@ -2401,7 +2308,30 @@ bool ssl_ext_key_share_parse_clienthello(SSL_HANDSHAKE *hs, bool *out_found,
|
|
2401
2308
|
return true;
|
2402
2309
|
}
|
2403
2310
|
|
2311
|
+
bool ssl_ext_pake_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
2312
|
+
if (hs->pake_share_bytes.empty()) {
|
2313
|
+
return true;
|
2314
|
+
}
|
2315
|
+
|
2316
|
+
CBB pake_ext, pake_msg;
|
2317
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_pake) ||
|
2318
|
+
!CBB_add_u16_length_prefixed(out, &pake_ext) ||
|
2319
|
+
!CBB_add_u16(&pake_ext, SSL_PAKE_SPAKE2PLUSV1) ||
|
2320
|
+
!CBB_add_u16_length_prefixed(&pake_ext, &pake_msg) ||
|
2321
|
+
!CBB_add_bytes(&pake_msg, hs->pake_share_bytes.data(),
|
2322
|
+
hs->pake_share_bytes.size()) ||
|
2323
|
+
!CBB_flush(out)) {
|
2324
|
+
return false;
|
2325
|
+
}
|
2326
|
+
return true;
|
2327
|
+
}
|
2328
|
+
|
2404
2329
|
bool ssl_ext_key_share_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
2330
|
+
if (hs->pake_verifier) {
|
2331
|
+
// We don't add the key share extension if a PAKE is offered.
|
2332
|
+
return true;
|
2333
|
+
}
|
2334
|
+
|
2405
2335
|
CBB entry, ciphertext;
|
2406
2336
|
if (!CBB_add_u16(out, TLSEXT_TYPE_key_share) ||
|
2407
2337
|
!CBB_add_u16_length_prefixed(out, &entry) ||
|
@@ -2493,6 +2423,11 @@ static bool ext_supported_groups_add_clienthello(const SSL_HANDSHAKE *hs,
|
|
2493
2423
|
CBB *out_compressible,
|
2494
2424
|
ssl_client_hello_type_t type) {
|
2495
2425
|
const SSL *const ssl = hs->ssl;
|
2426
|
+
// In PAKE mode, supported_groups and key_share are not used.
|
2427
|
+
if (hs->pake_prover != nullptr) {
|
2428
|
+
return true;
|
2429
|
+
}
|
2430
|
+
|
2496
2431
|
CBB contents, groups_bytes;
|
2497
2432
|
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_supported_groups) ||
|
2498
2433
|
!CBB_add_u16_length_prefixed(out_compressible, &contents) ||
|
@@ -2502,14 +2437,12 @@ static bool ext_supported_groups_add_clienthello(const SSL_HANDSHAKE *hs,
|
|
2502
2437
|
|
2503
2438
|
// Add a fake group. See RFC 8701.
|
2504
2439
|
if (ssl->ctx->grease_enabled &&
|
2505
|
-
!CBB_add_u16(&groups_bytes,
|
2506
|
-
ssl_get_grease_value(hs, ssl_grease_group))) {
|
2440
|
+
!CBB_add_u16(&groups_bytes, ssl_get_grease_value(hs, ssl_grease_group))) {
|
2507
2441
|
return false;
|
2508
2442
|
}
|
2509
2443
|
|
2510
2444
|
for (uint16_t group : tls1_get_grouplist(hs)) {
|
2511
|
-
if (is_post_quantum_group(group) &&
|
2512
|
-
hs->max_version < TLS1_3_VERSION) {
|
2445
|
+
if (is_post_quantum_group(group) && hs->max_version < TLS1_3_VERSION) {
|
2513
2446
|
continue;
|
2514
2447
|
}
|
2515
2448
|
if (!CBB_add_u16(&groups_bytes, group)) {
|
@@ -2536,7 +2469,7 @@ static bool parse_u16_array(const CBS *cbs, Array<uint16_t> *out) {
|
|
2536
2469
|
}
|
2537
2470
|
|
2538
2471
|
Array<uint16_t> ret;
|
2539
|
-
if (!ret.
|
2472
|
+
if (!ret.InitForOverwrite(CBS_len(©) / 2)) {
|
2540
2473
|
return false;
|
2541
2474
|
}
|
2542
2475
|
for (size_t i = 0; i < ret.size(); i++) {
|
@@ -2552,16 +2485,16 @@ static bool parse_u16_array(const CBS *cbs, Array<uint16_t> *out) {
|
|
2552
2485
|
}
|
2553
2486
|
|
2554
2487
|
static bool ext_supported_groups_parse_clienthello(SSL_HANDSHAKE *hs,
|
2555
|
-
|
2488
|
+
uint8_t *out_alert,
|
2556
2489
|
CBS *contents) {
|
2557
2490
|
if (contents == NULL) {
|
2558
2491
|
return true;
|
2559
2492
|
}
|
2560
2493
|
|
2561
2494
|
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 ||
|
2495
|
+
if (!CBS_get_u16_length_prefixed(contents, &supported_group_list) || //
|
2496
|
+
CBS_len(&supported_group_list) == 0 || //
|
2497
|
+
CBS_len(contents) != 0 || //
|
2565
2498
|
!parse_u16_array(&supported_group_list, &hs->peer_supported_group_list)) {
|
2566
2499
|
return false;
|
2567
2500
|
}
|
@@ -2570,14 +2503,53 @@ static bool ext_supported_groups_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2570
2503
|
}
|
2571
2504
|
|
2572
2505
|
|
2506
|
+
// Certificate Authorities.
|
2507
|
+
//
|
2508
|
+
// https://tools.ietf.org/html/rfc8446#section-4.2.4
|
2509
|
+
|
2510
|
+
static bool ext_certificate_authorities_add_clienthello(
|
2511
|
+
const SSL_HANDSHAKE *hs, CBB *out, CBB *out_compressible,
|
2512
|
+
ssl_client_hello_type_t type) {
|
2513
|
+
if (ssl_has_CA_names(hs->config)) {
|
2514
|
+
CBB ca_contents;
|
2515
|
+
if (!CBB_add_u16(out, TLSEXT_TYPE_certificate_authorities) || //
|
2516
|
+
!CBB_add_u16_length_prefixed(out, &ca_contents) || //
|
2517
|
+
!ssl_add_CA_names(hs, &ca_contents) || //
|
2518
|
+
!CBB_flush(out)) {
|
2519
|
+
return false;
|
2520
|
+
}
|
2521
|
+
}
|
2522
|
+
return true;
|
2523
|
+
}
|
2524
|
+
|
2525
|
+
static bool ext_certificate_authorities_parse_clienthello(SSL_HANDSHAKE *hs,
|
2526
|
+
uint8_t *out_alert,
|
2527
|
+
CBS *contents) {
|
2528
|
+
if (contents == NULL) {
|
2529
|
+
return true;
|
2530
|
+
}
|
2531
|
+
|
2532
|
+
if (CBS_len(contents) == 0) {
|
2533
|
+
return false;
|
2534
|
+
}
|
2535
|
+
|
2536
|
+
hs->ca_names = SSL_parse_CA_list(hs->ssl, out_alert, contents);
|
2537
|
+
if (!hs->ca_names) {
|
2538
|
+
return false;
|
2539
|
+
}
|
2540
|
+
|
2541
|
+
return true;
|
2542
|
+
}
|
2543
|
+
|
2544
|
+
|
2573
2545
|
// QUIC Transport Parameters
|
2574
2546
|
|
2575
2547
|
static bool ext_quic_transport_params_add_clienthello_impl(
|
2576
2548
|
const SSL_HANDSHAKE *hs, CBB *out, bool use_legacy_codepoint) {
|
2577
|
-
if (hs->config->quic_transport_params.empty() && !hs->ssl
|
2549
|
+
if (hs->config->quic_transport_params.empty() && !SSL_is_quic(hs->ssl)) {
|
2578
2550
|
return true;
|
2579
2551
|
}
|
2580
|
-
if (hs->config->quic_transport_params.empty() || !hs->ssl
|
2552
|
+
if (hs->config->quic_transport_params.empty() || !SSL_is_quic(hs->ssl)) {
|
2581
2553
|
// QUIC Transport Parameters must be sent over QUIC, and they must not be
|
2582
2554
|
// sent over non-QUIC transports. If transport params are set, then
|
2583
2555
|
// SSL(_CTX)_set_quic_method must also be called.
|
@@ -2629,7 +2601,7 @@ static bool ext_quic_transport_params_parse_serverhello_impl(
|
|
2629
2601
|
// Silently ignore because we expect the other QUIC codepoint.
|
2630
2602
|
return true;
|
2631
2603
|
}
|
2632
|
-
if (!ssl
|
2604
|
+
if (!SSL_is_quic(ssl)) {
|
2633
2605
|
return true;
|
2634
2606
|
}
|
2635
2607
|
*out_alert = SSL_AD_MISSING_EXTENSION;
|
@@ -2637,7 +2609,7 @@ static bool ext_quic_transport_params_parse_serverhello_impl(
|
|
2637
2609
|
}
|
2638
2610
|
// The extensions parser will check for unsolicited extensions before
|
2639
2611
|
// calling the callback.
|
2640
|
-
assert(ssl
|
2612
|
+
assert(SSL_is_quic(ssl));
|
2641
2613
|
assert(ssl_protocol_version(ssl) == TLS1_3_VERSION);
|
2642
2614
|
assert(used_legacy_codepoint == hs->config->quic_use_legacy_codepoint);
|
2643
2615
|
return ssl->s3->peer_quic_transport_params.CopyFrom(*contents);
|
@@ -2661,7 +2633,7 @@ static bool ext_quic_transport_params_parse_clienthello_impl(
|
|
2661
2633
|
bool used_legacy_codepoint) {
|
2662
2634
|
SSL *const ssl = hs->ssl;
|
2663
2635
|
if (!contents) {
|
2664
|
-
if (!ssl
|
2636
|
+
if (!SSL_is_quic(ssl)) {
|
2665
2637
|
if (hs->config->quic_transport_params.empty()) {
|
2666
2638
|
return true;
|
2667
2639
|
}
|
@@ -2678,7 +2650,7 @@ static bool ext_quic_transport_params_parse_clienthello_impl(
|
|
2678
2650
|
*out_alert = SSL_AD_MISSING_EXTENSION;
|
2679
2651
|
return false;
|
2680
2652
|
}
|
2681
|
-
if (!ssl
|
2653
|
+
if (!SSL_is_quic(ssl)) {
|
2682
2654
|
if (used_legacy_codepoint) {
|
2683
2655
|
// Ignore the legacy private-use codepoint because that could be sent
|
2684
2656
|
// to mean something else than QUIC transport parameters.
|
@@ -2712,12 +2684,12 @@ static bool ext_quic_transport_params_parse_clienthello_legacy(
|
|
2712
2684
|
|
2713
2685
|
static bool ext_quic_transport_params_add_serverhello_impl(
|
2714
2686
|
SSL_HANDSHAKE *hs, CBB *out, bool use_legacy_codepoint) {
|
2715
|
-
if (hs->ssl
|
2687
|
+
if (!SSL_is_quic(hs->ssl) && use_legacy_codepoint) {
|
2716
2688
|
// Ignore the legacy private-use codepoint because that could be sent
|
2717
2689
|
// to mean something else than QUIC transport parameters.
|
2718
2690
|
return true;
|
2719
2691
|
}
|
2720
|
-
assert(hs->ssl
|
2692
|
+
assert(SSL_is_quic(hs->ssl));
|
2721
2693
|
if (hs->config->quic_transport_params.empty()) {
|
2722
2694
|
// Transport parameters must be set when using QUIC.
|
2723
2695
|
OPENSSL_PUT_ERROR(SSL, SSL_R_QUIC_TRANSPORT_PARAMETERS_MISCONFIGURED);
|
@@ -2779,9 +2751,9 @@ static bool ext_delegated_credential_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2779
2751
|
// The contents of the extension are the signature algorithms the client will
|
2780
2752
|
// accept for a delegated credential.
|
2781
2753
|
CBS sigalg_list;
|
2782
|
-
if (!CBS_get_u16_length_prefixed(contents, &sigalg_list) ||
|
2783
|
-
CBS_len(&sigalg_list) == 0 ||
|
2784
|
-
CBS_len(contents) != 0 ||
|
2754
|
+
if (!CBS_get_u16_length_prefixed(contents, &sigalg_list) || //
|
2755
|
+
CBS_len(&sigalg_list) == 0 || //
|
2756
|
+
CBS_len(contents) != 0 || //
|
2785
2757
|
!parse_u16_array(&sigalg_list, &hs->peer_delegated_credential_sigalgs)) {
|
2786
2758
|
return false;
|
2787
2759
|
}
|
@@ -2840,16 +2812,16 @@ static bool cert_compression_parse_clienthello(SSL_HANDSHAKE *hs,
|
|
2840
2812
|
const size_t num_algs = ctx->cert_compression_algs.size();
|
2841
2813
|
|
2842
2814
|
CBS alg_ids;
|
2843
|
-
if (!CBS_get_u8_length_prefixed(contents, &alg_ids) ||
|
2844
|
-
CBS_len(contents) != 0 ||
|
2845
|
-
CBS_len(&alg_ids) == 0 ||
|
2815
|
+
if (!CBS_get_u8_length_prefixed(contents, &alg_ids) || //
|
2816
|
+
CBS_len(contents) != 0 || //
|
2817
|
+
CBS_len(&alg_ids) == 0 || //
|
2846
2818
|
CBS_len(&alg_ids) % 2 == 1) {
|
2847
2819
|
return false;
|
2848
2820
|
}
|
2849
2821
|
|
2850
2822
|
const size_t num_given_alg_ids = CBS_len(&alg_ids) / 2;
|
2851
2823
|
Array<uint16_t> given_alg_ids;
|
2852
|
-
if (!given_alg_ids.
|
2824
|
+
if (!given_alg_ids.InitForOverwrite(num_given_alg_ids)) {
|
2853
2825
|
return false;
|
2854
2826
|
}
|
2855
2827
|
|
@@ -2896,6 +2868,220 @@ static bool cert_compression_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
|
2896
2868
|
return true;
|
2897
2869
|
}
|
2898
2870
|
|
2871
|
+
// PAKEs
|
2872
|
+
//
|
2873
|
+
// See
|
2874
|
+
// https://chris-wood.github.io/draft-bmw-tls-pake13/draft-bmw-tls-pake13.html
|
2875
|
+
|
2876
|
+
bool ssl_setup_pake_shares(SSL_HANDSHAKE *hs) {
|
2877
|
+
hs->pake_share_bytes.Reset();
|
2878
|
+
if (hs->max_version < TLS1_3_VERSION) {
|
2879
|
+
return true;
|
2880
|
+
}
|
2881
|
+
|
2882
|
+
Array<SSL_CREDENTIAL *> creds;
|
2883
|
+
if (!ssl_get_credential_list(hs, &creds)) {
|
2884
|
+
return false;
|
2885
|
+
}
|
2886
|
+
|
2887
|
+
if (std::none_of(creds.begin(), creds.end(), [](SSL_CREDENTIAL *cred) {
|
2888
|
+
return cred->type == SSLCredentialType::kSPAKE2PlusV1Client;
|
2889
|
+
})) {
|
2890
|
+
// If there were no configured PAKE credentials, proceed without filling
|
2891
|
+
// in the PAKE extension.
|
2892
|
+
return true;
|
2893
|
+
}
|
2894
|
+
|
2895
|
+
// We currently do not support multiple PAKE credentials, or a mix of PAKE and
|
2896
|
+
// non-PAKE credentials.
|
2897
|
+
if (creds.size() != 1u) {
|
2898
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_UNSUPPORTED_CREDENTIAL_LIST);
|
2899
|
+
return false;
|
2900
|
+
}
|
2901
|
+
SSL_CREDENTIAL *cred = creds[0];
|
2902
|
+
assert(cred->type == SSLCredentialType::kSPAKE2PlusV1Client);
|
2903
|
+
|
2904
|
+
hs->pake_prover = MakeUnique<spake2plus::Prover>();
|
2905
|
+
uint8_t prover_share[spake2plus::kShareSize];
|
2906
|
+
if (hs->pake_prover == nullptr ||
|
2907
|
+
!hs->pake_prover->Init(cred->pake_context, cred->client_identity,
|
2908
|
+
cred->server_identity, cred->password_verifier_w0,
|
2909
|
+
cred->password_verifier_w1) ||
|
2910
|
+
!hs->pake_prover->GenerateShare(prover_share)) {
|
2911
|
+
return false;
|
2912
|
+
}
|
2913
|
+
|
2914
|
+
hs->credential = UpRef(cred);
|
2915
|
+
|
2916
|
+
bssl::ScopedCBB cbb;
|
2917
|
+
CBB shares, client_identity, server_identity, pake_message;
|
2918
|
+
if (!CBB_init(cbb.get(), 64) ||
|
2919
|
+
!CBB_add_u16_length_prefixed(cbb.get(), &client_identity) ||
|
2920
|
+
!CBB_add_bytes(&client_identity, cred->client_identity.data(),
|
2921
|
+
cred->client_identity.size()) ||
|
2922
|
+
!CBB_add_u16_length_prefixed(cbb.get(), &server_identity) ||
|
2923
|
+
!CBB_add_bytes(&server_identity, cred->server_identity.data(),
|
2924
|
+
cred->server_identity.size()) ||
|
2925
|
+
!CBB_add_u16_length_prefixed(cbb.get(), &shares) ||
|
2926
|
+
!CBB_add_u16(&shares, SSL_PAKE_SPAKE2PLUSV1) ||
|
2927
|
+
!CBB_add_u16_length_prefixed(&shares, &pake_message) ||
|
2928
|
+
!CBB_add_bytes(&pake_message, prover_share, sizeof(prover_share))) {
|
2929
|
+
return false;
|
2930
|
+
}
|
2931
|
+
|
2932
|
+
return CBBFinishArray(cbb.get(), &hs->pake_share_bytes);
|
2933
|
+
}
|
2934
|
+
|
2935
|
+
static bool ext_pake_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
2936
|
+
CBB *out_compressible,
|
2937
|
+
ssl_client_hello_type_t type) {
|
2938
|
+
if (hs->pake_share_bytes.empty()) {
|
2939
|
+
return true;
|
2940
|
+
}
|
2941
|
+
|
2942
|
+
CBB pake_share_bytes;
|
2943
|
+
if (!CBB_add_u16(out_compressible, TLSEXT_TYPE_pake) ||
|
2944
|
+
!CBB_add_u16_length_prefixed(out_compressible, &pake_share_bytes) ||
|
2945
|
+
!CBB_add_bytes(&pake_share_bytes, hs->pake_share_bytes.data(),
|
2946
|
+
hs->pake_share_bytes.size()) ||
|
2947
|
+
!CBB_flush(out_compressible)) {
|
2948
|
+
return false;
|
2949
|
+
}
|
2950
|
+
|
2951
|
+
return true;
|
2952
|
+
}
|
2953
|
+
|
2954
|
+
bool ssl_ext_pake_parse_serverhello(SSL_HANDSHAKE *hs,
|
2955
|
+
Array<uint8_t> *out_secret,
|
2956
|
+
uint8_t *out_alert, CBS *contents) {
|
2957
|
+
*out_alert = SSL_AD_DECODE_ERROR;
|
2958
|
+
|
2959
|
+
if (!hs->pake_prover) {
|
2960
|
+
// If we did not offer a PAKE, the extension should have been rejected as
|
2961
|
+
// unsolicited.
|
2962
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
2963
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
2964
|
+
return false;
|
2965
|
+
}
|
2966
|
+
|
2967
|
+
CBS pake_msg;
|
2968
|
+
uint16_t named_pake;
|
2969
|
+
if (!CBS_get_u16(contents, &named_pake) ||
|
2970
|
+
!CBS_get_u16_length_prefixed(contents, &pake_msg) ||
|
2971
|
+
CBS_len(contents) != 0 || //
|
2972
|
+
named_pake != SSL_PAKE_SPAKE2PLUSV1) {
|
2973
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
2974
|
+
return false;
|
2975
|
+
}
|
2976
|
+
|
2977
|
+
// Check that the server's PAKE share consists of the right number of
|
2978
|
+
// bytes for a PAKE share and a key confirmation message.
|
2979
|
+
if (CBS_len(&pake_msg) != spake2plus::kShareSize + spake2plus::kConfirmSize) {
|
2980
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
2981
|
+
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
2982
|
+
return false;
|
2983
|
+
}
|
2984
|
+
Span<const uint8_t> pake_msg_span = pake_msg;
|
2985
|
+
|
2986
|
+
// Releasing the result of |ComputeConfirmation| lets the client confirm one
|
2987
|
+
// PAKE guess. If all failures are used up, no more guesses are allowed.
|
2988
|
+
if (!hs->credential->HasPAKEAttempts()) {
|
2989
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_PAKE_EXHAUSTED);
|
2990
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
2991
|
+
return false;
|
2992
|
+
}
|
2993
|
+
|
2994
|
+
uint8_t prover_confirm[spake2plus::kConfirmSize];
|
2995
|
+
uint8_t prover_secret[spake2plus::kSecretSize];
|
2996
|
+
if (!hs->pake_prover->ComputeConfirmation(
|
2997
|
+
prover_confirm, prover_secret,
|
2998
|
+
pake_msg_span.subspan(0, spake2plus::kShareSize),
|
2999
|
+
pake_msg_span.subspan(spake2plus::kShareSize))) {
|
3000
|
+
// Record a failure before releasing the answer to the client.
|
3001
|
+
hs->credential->ClaimPAKEAttempt();
|
3002
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
3003
|
+
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
3004
|
+
return false;
|
3005
|
+
}
|
3006
|
+
|
3007
|
+
Array<uint8_t> secret;
|
3008
|
+
if (!secret.CopyFrom(prover_secret)) {
|
3009
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
3010
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
3011
|
+
return false;
|
3012
|
+
}
|
3013
|
+
|
3014
|
+
*out_secret = std::move(secret);
|
3015
|
+
return true;
|
3016
|
+
}
|
3017
|
+
|
3018
|
+
static bool ext_pake_parse_clienthello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
3019
|
+
CBS *contents) {
|
3020
|
+
if (contents == nullptr) {
|
3021
|
+
return true;
|
3022
|
+
}
|
3023
|
+
|
3024
|
+
// struct {
|
3025
|
+
// opaque client_identity<0..2^16-1>;
|
3026
|
+
// opaque server_identity<0..2^16-1>;
|
3027
|
+
// PAKEShare client_shares<0..2^16-1>;
|
3028
|
+
// } PAKEClientHello;
|
3029
|
+
//
|
3030
|
+
// struct {
|
3031
|
+
// NamedPAKE named_pake;
|
3032
|
+
// opaque pake_message<1..2^16-1>;
|
3033
|
+
// } PAKEShare;
|
3034
|
+
|
3035
|
+
*out_alert = SSL_AD_DECODE_ERROR;
|
3036
|
+
CBS client_identity, server_identity, shares;
|
3037
|
+
if (!CBS_get_u16_length_prefixed(contents, &client_identity) ||
|
3038
|
+
!CBS_get_u16_length_prefixed(contents, &server_identity) ||
|
3039
|
+
!CBS_get_u16_length_prefixed(contents, &shares) ||
|
3040
|
+
CBS_len(contents) != 0) {
|
3041
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
3042
|
+
return false;
|
3043
|
+
}
|
3044
|
+
|
3045
|
+
uint16_t last_named_pake = 0;
|
3046
|
+
for (size_t i = 0; CBS_len(&shares) > 0; i++) {
|
3047
|
+
uint16_t pake_id;
|
3048
|
+
CBS message;
|
3049
|
+
if (!CBS_get_u16(&shares, &pake_id) ||
|
3050
|
+
!CBS_get_u16_length_prefixed(&shares, &message)) {
|
3051
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
3052
|
+
return false;
|
3053
|
+
}
|
3054
|
+
|
3055
|
+
// PAKEs must be sent in strictly monotonic order.
|
3056
|
+
if (i > 0 && last_named_pake >= pake_id) {
|
3057
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
3058
|
+
return false;
|
3059
|
+
}
|
3060
|
+
last_named_pake = pake_id;
|
3061
|
+
|
3062
|
+
// We only support one PAKE.
|
3063
|
+
if (pake_id != SSL_PAKE_SPAKE2PLUSV1) {
|
3064
|
+
continue;
|
3065
|
+
}
|
3066
|
+
|
3067
|
+
// Save the PAKE share for the handshake logic to pick up later.
|
3068
|
+
// TODO(crbug.com/391393404): It would be nice if the callback did not have
|
3069
|
+
// to copy this.
|
3070
|
+
hs->pake_share = MakeUnique<SSLPAKEShare>();
|
3071
|
+
if (hs->pake_share == nullptr ||
|
3072
|
+
!hs->pake_share->client_identity.CopyFrom(client_identity) ||
|
3073
|
+
!hs->pake_share->server_identity.CopyFrom(server_identity) ||
|
3074
|
+
!hs->pake_share->pake_message.CopyFrom(message)) {
|
3075
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
3076
|
+
return false;
|
3077
|
+
}
|
3078
|
+
hs->pake_share->named_pake = pake_id;
|
3079
|
+
}
|
3080
|
+
|
3081
|
+
return true;
|
3082
|
+
}
|
3083
|
+
|
3084
|
+
|
2899
3085
|
// Application-level Protocol Settings
|
2900
3086
|
//
|
2901
3087
|
// https://tools.ietf.org/html/draft-vvv-tls-alps-01
|
@@ -2917,7 +3103,7 @@ static bool ext_alps_add_clienthello_impl(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2917
3103
|
ssl_client_hello_type_t type,
|
2918
3104
|
bool use_new_codepoint) {
|
2919
3105
|
const SSL *const ssl = hs->ssl;
|
2920
|
-
if (// ALPS requires TLS 1.3.
|
3106
|
+
if ( // ALPS requires TLS 1.3.
|
2921
3107
|
hs->max_version < TLS1_3_VERSION ||
|
2922
3108
|
// Do not offer ALPS without ALPN.
|
2923
3109
|
hs->config->alpn_client_proto_list.empty() ||
|
@@ -2971,8 +3157,7 @@ static bool ext_alps_add_clienthello_old(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2971
3157
|
}
|
2972
3158
|
|
2973
3159
|
static bool ext_alps_parse_serverhello_impl(SSL_HANDSHAKE *hs,
|
2974
|
-
uint8_t *out_alert,
|
2975
|
-
CBS *contents,
|
3160
|
+
uint8_t *out_alert, CBS *contents,
|
2976
3161
|
bool use_new_codepoint) {
|
2977
3162
|
SSL *const ssl = hs->ssl;
|
2978
3163
|
if (contents == nullptr) {
|
@@ -3002,16 +3187,14 @@ static bool ext_alps_parse_serverhello_impl(SSL_HANDSHAKE *hs,
|
|
3002
3187
|
return true;
|
3003
3188
|
}
|
3004
3189
|
|
3005
|
-
static bool ext_alps_parse_serverhello(SSL_HANDSHAKE *hs,
|
3006
|
-
uint8_t *out_alert,
|
3190
|
+
static bool ext_alps_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
3007
3191
|
CBS *contents) {
|
3008
3192
|
return ext_alps_parse_serverhello_impl(hs, out_alert, contents,
|
3009
3193
|
/*use_new_codepoint=*/true);
|
3010
3194
|
}
|
3011
3195
|
|
3012
3196
|
static bool ext_alps_parse_serverhello_old(SSL_HANDSHAKE *hs,
|
3013
|
-
uint8_t *out_alert,
|
3014
|
-
CBS *contents) {
|
3197
|
+
uint8_t *out_alert, CBS *contents) {
|
3015
3198
|
return ext_alps_parse_serverhello_impl(hs, out_alert, contents,
|
3016
3199
|
/*use_new_codepoint=*/false);
|
3017
3200
|
}
|
@@ -3027,7 +3210,7 @@ static bool ext_alps_add_serverhello_impl(SSL_HANDSHAKE *hs, CBB *out,
|
|
3027
3210
|
return true;
|
3028
3211
|
}
|
3029
3212
|
|
3030
|
-
|
3213
|
+
if (use_new_codepoint != hs->config->alps_use_new_codepoint) {
|
3031
3214
|
// Do nothing, we'll send the other codepoint.
|
3032
3215
|
return true;
|
3033
3216
|
}
|
@@ -3080,8 +3263,8 @@ bool ssl_negotiate_alps(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
3080
3263
|
// Check if the client supports ALPS with the selected ALPN.
|
3081
3264
|
bool found = false;
|
3082
3265
|
CBS alps_list;
|
3083
|
-
if (!CBS_get_u16_length_prefixed(&alps_contents, &alps_list) ||
|
3084
|
-
CBS_len(&alps_contents) != 0 ||
|
3266
|
+
if (!CBS_get_u16_length_prefixed(&alps_contents, &alps_list) || //
|
3267
|
+
CBS_len(&alps_contents) != 0 || //
|
3085
3268
|
CBS_len(&alps_list) == 0) {
|
3086
3269
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
3087
3270
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -3096,7 +3279,7 @@ bool ssl_negotiate_alps(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
3096
3279
|
*out_alert = SSL_AD_DECODE_ERROR;
|
3097
3280
|
return false;
|
3098
3281
|
}
|
3099
|
-
if (protocol_name ==
|
3282
|
+
if (protocol_name == Span(ssl->s3->alpn_selected)) {
|
3100
3283
|
found = true;
|
3101
3284
|
}
|
3102
3285
|
}
|
@@ -3116,185 +3299,201 @@ bool ssl_negotiate_alps(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
3116
3299
|
|
3117
3300
|
// kExtensions contains all the supported extensions.
|
3118
3301
|
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
|
-
|
3302
|
+
{
|
3303
|
+
TLSEXT_TYPE_server_name,
|
3304
|
+
ext_sni_add_clienthello,
|
3305
|
+
ext_sni_parse_serverhello,
|
3306
|
+
ext_sni_parse_clienthello,
|
3307
|
+
ext_sni_add_serverhello,
|
3308
|
+
},
|
3309
|
+
{
|
3310
|
+
TLSEXT_TYPE_encrypted_client_hello,
|
3311
|
+
ext_ech_add_clienthello,
|
3312
|
+
ext_ech_parse_serverhello,
|
3313
|
+
ext_ech_parse_clienthello,
|
3314
|
+
ext_ech_add_serverhello,
|
3315
|
+
},
|
3316
|
+
{
|
3317
|
+
TLSEXT_TYPE_extended_master_secret,
|
3318
|
+
ext_ems_add_clienthello,
|
3319
|
+
ext_ems_parse_serverhello,
|
3320
|
+
ext_ems_parse_clienthello,
|
3321
|
+
ext_ems_add_serverhello,
|
3322
|
+
},
|
3323
|
+
{
|
3324
|
+
TLSEXT_TYPE_renegotiate,
|
3325
|
+
ext_ri_add_clienthello,
|
3326
|
+
ext_ri_parse_serverhello,
|
3327
|
+
ext_ri_parse_clienthello,
|
3328
|
+
ext_ri_add_serverhello,
|
3329
|
+
},
|
3330
|
+
{
|
3331
|
+
TLSEXT_TYPE_supported_groups,
|
3332
|
+
ext_supported_groups_add_clienthello,
|
3333
|
+
ext_supported_groups_parse_serverhello,
|
3334
|
+
ext_supported_groups_parse_clienthello,
|
3335
|
+
dont_add_serverhello,
|
3336
|
+
},
|
3337
|
+
{
|
3338
|
+
TLSEXT_TYPE_ec_point_formats,
|
3339
|
+
ext_ec_point_add_clienthello,
|
3340
|
+
ext_ec_point_parse_serverhello,
|
3341
|
+
ext_ec_point_parse_clienthello,
|
3342
|
+
ext_ec_point_add_serverhello,
|
3343
|
+
},
|
3344
|
+
{
|
3345
|
+
TLSEXT_TYPE_session_ticket,
|
3346
|
+
ext_ticket_add_clienthello,
|
3347
|
+
ext_ticket_parse_serverhello,
|
3348
|
+
// Ticket extension client parsing is handled in ssl_session.c
|
3349
|
+
ignore_parse_clienthello,
|
3350
|
+
ext_ticket_add_serverhello,
|
3351
|
+
},
|
3352
|
+
{
|
3353
|
+
TLSEXT_TYPE_application_layer_protocol_negotiation,
|
3354
|
+
ext_alpn_add_clienthello,
|
3355
|
+
ext_alpn_parse_serverhello,
|
3356
|
+
// ALPN is negotiated late in |ssl_negotiate_alpn|.
|
3357
|
+
ignore_parse_clienthello,
|
3358
|
+
ext_alpn_add_serverhello,
|
3359
|
+
},
|
3360
|
+
{
|
3361
|
+
TLSEXT_TYPE_status_request,
|
3362
|
+
ext_ocsp_add_clienthello,
|
3363
|
+
ext_ocsp_parse_serverhello,
|
3364
|
+
ext_ocsp_parse_clienthello,
|
3365
|
+
ext_ocsp_add_serverhello,
|
3366
|
+
},
|
3367
|
+
{
|
3368
|
+
TLSEXT_TYPE_signature_algorithms,
|
3369
|
+
ext_sigalgs_add_clienthello,
|
3370
|
+
forbid_parse_serverhello,
|
3371
|
+
ext_sigalgs_parse_clienthello,
|
3372
|
+
dont_add_serverhello,
|
3373
|
+
},
|
3374
|
+
{
|
3375
|
+
TLSEXT_TYPE_next_proto_neg,
|
3376
|
+
ext_npn_add_clienthello,
|
3377
|
+
ext_npn_parse_serverhello,
|
3378
|
+
ext_npn_parse_clienthello,
|
3379
|
+
ext_npn_add_serverhello,
|
3380
|
+
},
|
3381
|
+
{
|
3382
|
+
TLSEXT_TYPE_certificate_timestamp,
|
3383
|
+
ext_sct_add_clienthello,
|
3384
|
+
ext_sct_parse_serverhello,
|
3385
|
+
ext_sct_parse_clienthello,
|
3386
|
+
ext_sct_add_serverhello,
|
3387
|
+
},
|
3388
|
+
{
|
3389
|
+
TLSEXT_TYPE_channel_id,
|
3390
|
+
ext_channel_id_add_clienthello,
|
3391
|
+
ext_channel_id_parse_serverhello,
|
3392
|
+
ext_channel_id_parse_clienthello,
|
3393
|
+
ext_channel_id_add_serverhello,
|
3394
|
+
},
|
3395
|
+
{
|
3396
|
+
TLSEXT_TYPE_srtp,
|
3397
|
+
ext_srtp_add_clienthello,
|
3398
|
+
ext_srtp_parse_serverhello,
|
3399
|
+
ext_srtp_parse_clienthello,
|
3400
|
+
ext_srtp_add_serverhello,
|
3401
|
+
},
|
3402
|
+
{
|
3403
|
+
TLSEXT_TYPE_key_share,
|
3404
|
+
ext_key_share_add_clienthello,
|
3405
|
+
forbid_parse_serverhello,
|
3406
|
+
ignore_parse_clienthello,
|
3407
|
+
dont_add_serverhello,
|
3408
|
+
},
|
3409
|
+
{
|
3410
|
+
TLSEXT_TYPE_psk_key_exchange_modes,
|
3411
|
+
ext_psk_key_exchange_modes_add_clienthello,
|
3412
|
+
forbid_parse_serverhello,
|
3413
|
+
ext_psk_key_exchange_modes_parse_clienthello,
|
3414
|
+
dont_add_serverhello,
|
3415
|
+
},
|
3416
|
+
{
|
3417
|
+
TLSEXT_TYPE_early_data,
|
3418
|
+
ext_early_data_add_clienthello,
|
3419
|
+
ext_early_data_parse_serverhello,
|
3420
|
+
ext_early_data_parse_clienthello,
|
3421
|
+
ext_early_data_add_serverhello,
|
3422
|
+
},
|
3423
|
+
{
|
3424
|
+
TLSEXT_TYPE_supported_versions,
|
3425
|
+
ext_supported_versions_add_clienthello,
|
3426
|
+
forbid_parse_serverhello,
|
3427
|
+
ignore_parse_clienthello,
|
3428
|
+
dont_add_serverhello,
|
3429
|
+
},
|
3430
|
+
{
|
3431
|
+
TLSEXT_TYPE_cookie,
|
3432
|
+
ext_cookie_add_clienthello,
|
3433
|
+
forbid_parse_serverhello,
|
3434
|
+
ignore_parse_clienthello,
|
3435
|
+
dont_add_serverhello,
|
3436
|
+
},
|
3437
|
+
{
|
3438
|
+
TLSEXT_TYPE_quic_transport_parameters,
|
3439
|
+
ext_quic_transport_params_add_clienthello,
|
3440
|
+
ext_quic_transport_params_parse_serverhello,
|
3441
|
+
ext_quic_transport_params_parse_clienthello,
|
3442
|
+
ext_quic_transport_params_add_serverhello,
|
3443
|
+
},
|
3444
|
+
{
|
3445
|
+
TLSEXT_TYPE_quic_transport_parameters_legacy,
|
3446
|
+
ext_quic_transport_params_add_clienthello_legacy,
|
3447
|
+
ext_quic_transport_params_parse_serverhello_legacy,
|
3448
|
+
ext_quic_transport_params_parse_clienthello_legacy,
|
3449
|
+
ext_quic_transport_params_add_serverhello_legacy,
|
3450
|
+
},
|
3451
|
+
{
|
3452
|
+
TLSEXT_TYPE_cert_compression,
|
3453
|
+
cert_compression_add_clienthello,
|
3454
|
+
cert_compression_parse_serverhello,
|
3455
|
+
cert_compression_parse_clienthello,
|
3456
|
+
cert_compression_add_serverhello,
|
3457
|
+
},
|
3458
|
+
{
|
3459
|
+
TLSEXT_TYPE_delegated_credential,
|
3460
|
+
ext_delegated_credential_add_clienthello,
|
3461
|
+
forbid_parse_serverhello,
|
3462
|
+
ext_delegated_credential_parse_clienthello,
|
3463
|
+
dont_add_serverhello,
|
3464
|
+
},
|
3465
|
+
{
|
3466
|
+
TLSEXT_TYPE_application_settings,
|
3467
|
+
ext_alps_add_clienthello,
|
3468
|
+
ext_alps_parse_serverhello,
|
3469
|
+
// ALPS is negotiated late in |ssl_negotiate_alpn|.
|
3470
|
+
ignore_parse_clienthello,
|
3471
|
+
ext_alps_add_serverhello,
|
3472
|
+
},
|
3473
|
+
{
|
3474
|
+
TLSEXT_TYPE_application_settings_old,
|
3475
|
+
ext_alps_add_clienthello_old,
|
3476
|
+
ext_alps_parse_serverhello_old,
|
3477
|
+
// ALPS is negotiated late in |ssl_negotiate_alpn|.
|
3478
|
+
ignore_parse_clienthello,
|
3479
|
+
ext_alps_add_serverhello_old,
|
3480
|
+
},
|
3481
|
+
{
|
3482
|
+
TLSEXT_TYPE_certificate_authorities,
|
3483
|
+
ext_certificate_authorities_add_clienthello,
|
3484
|
+
forbid_parse_serverhello,
|
3485
|
+
ext_certificate_authorities_parse_clienthello,
|
3486
|
+
dont_add_serverhello,
|
3487
|
+
},
|
3488
|
+
{
|
3489
|
+
TLSEXT_TYPE_pake,
|
3490
|
+
ext_pake_add_clienthello,
|
3491
|
+
// This extension is unencrypted and so adding and parsing it from the
|
3492
|
+
// ServerHello is handled elsewhere.
|
3493
|
+
forbid_parse_serverhello,
|
3494
|
+
ext_pake_parse_clienthello,
|
3495
|
+
dont_add_serverhello,
|
3496
|
+
},
|
3298
3497
|
};
|
3299
3498
|
|
3300
3499
|
#define kNumExtensions (sizeof(kExtensions) / sizeof(struct tls_extension))
|
@@ -3316,7 +3515,7 @@ bool ssl_setup_extension_permutation(SSL_HANDSHAKE *hs) {
|
|
3316
3515
|
uint32_t seeds[kNumExtensions - 1];
|
3317
3516
|
Array<uint8_t> permutation;
|
3318
3517
|
if (!RAND_bytes(reinterpret_cast<uint8_t *>(seeds), sizeof(seeds)) ||
|
3319
|
-
!permutation.
|
3518
|
+
!permutation.InitForOverwrite(kNumExtensions)) {
|
3320
3519
|
return false;
|
3321
3520
|
}
|
3322
3521
|
for (size_t i = 0; i < kNumExtensions; i++) {
|
@@ -3527,7 +3726,7 @@ bool ssl_add_clienthello_tlsext(SSL_HANDSHAKE *hs, CBB *out, CBB *out_encoded,
|
|
3527
3726
|
// bugs. We also apply this padding to ClientHelloOuter, to keep the wire
|
3528
3727
|
// images aligned.
|
3529
3728
|
size_t psk_extension_len = ext_pre_shared_key_clienthello_length(hs, type);
|
3530
|
-
if (!SSL_is_dtls(ssl) && !ssl
|
3729
|
+
if (!SSL_is_dtls(ssl) && !SSL_is_quic(ssl) &&
|
3531
3730
|
!ssl->s3->used_hello_retry_request) {
|
3532
3731
|
header_len +=
|
3533
3732
|
SSL3_HM_HEADER_LENGTH + 2 + CBB_len(&extensions) + psk_extension_len;
|
@@ -3609,7 +3808,7 @@ bool ssl_add_serverhello_tlsext(SSL_HANDSHAKE *hs, CBB *out) {
|
|
3609
3808
|
}
|
3610
3809
|
|
3611
3810
|
// Discard empty extensions blocks before TLS 1.3.
|
3612
|
-
if (ssl_protocol_version(ssl) < TLS1_3_VERSION &&
|
3811
|
+
if (ssl_protocol_version(ssl) < TLS1_3_VERSION && //
|
3613
3812
|
CBB_len(&extensions) == 0) {
|
3614
3813
|
CBB_discard_child(out);
|
3615
3814
|
}
|
@@ -3741,7 +3940,7 @@ static bool ssl_scan_serverhello_tlsext(SSL_HANDSHAKE *hs, const CBS *cbs,
|
|
3741
3940
|
if (!(hs->extensions.sent & (1u << ext_index))) {
|
3742
3941
|
// If the extension was never sent then it is illegal.
|
3743
3942
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_EXTENSION);
|
3744
|
-
ERR_add_error_dataf("extension
|
3943
|
+
ERR_add_error_dataf("extension %u", (unsigned)type);
|
3745
3944
|
*out_alert = SSL_AD_UNSUPPORTED_EXTENSION;
|
3746
3945
|
return false;
|
3747
3946
|
}
|
@@ -3882,7 +4081,7 @@ static enum ssl_ticket_aead_result_t decrypt_ticket_with_cipher_ctx(
|
|
3882
4081
|
if (ciphertext.size() >= INT_MAX) {
|
3883
4082
|
return ssl_ticket_aead_ignore_ticket;
|
3884
4083
|
}
|
3885
|
-
if (!plaintext.
|
4084
|
+
if (!plaintext.InitForOverwrite(ciphertext.size())) {
|
3886
4085
|
return ssl_ticket_aead_error;
|
3887
4086
|
}
|
3888
4087
|
int len1, len2;
|
@@ -3957,8 +4156,8 @@ static enum ssl_ticket_aead_result_t ssl_decrypt_ticket_with_ticket_keys(
|
|
3957
4156
|
}
|
3958
4157
|
if (!HMAC_Init_ex(hmac_ctx.get(), key->hmac_key, sizeof(key->hmac_key),
|
3959
4158
|
tlsext_tick_md(), NULL) ||
|
3960
|
-
!EVP_DecryptInit_ex(cipher_ctx.get(), cipher, NULL,
|
3961
|
-
|
4159
|
+
!EVP_DecryptInit_ex(cipher_ctx.get(), cipher, NULL, key->aes_key,
|
4160
|
+
iv.data())) {
|
3962
4161
|
return ssl_ticket_aead_error;
|
3963
4162
|
}
|
3964
4163
|
}
|
@@ -3970,7 +4169,7 @@ static enum ssl_ticket_aead_result_t ssl_decrypt_ticket_with_method(
|
|
3970
4169
|
SSL_HANDSHAKE *hs, Array<uint8_t> *out, bool *out_renew_ticket,
|
3971
4170
|
Span<const uint8_t> ticket) {
|
3972
4171
|
Array<uint8_t> plaintext;
|
3973
|
-
if (!plaintext.
|
4172
|
+
if (!plaintext.InitForOverwrite(ticket.size())) {
|
3974
4173
|
return ssl_ticket_aead_error;
|
3975
4174
|
}
|
3976
4175
|
|
@@ -4079,9 +4278,8 @@ enum ssl_ticket_aead_result_t ssl_process_ticket(
|
|
4079
4278
|
// Envoy's tests expect the session to have a session ID that matches the
|
4080
4279
|
// placeholder used by the client. It's unclear whether this is a good idea,
|
4081
4280
|
// but we maintain it for now.
|
4082
|
-
|
4083
|
-
|
4084
|
-
session->session_id_length = SHA256_DIGEST_LENGTH;
|
4281
|
+
session->session_id.ResizeForOverwrite(SHA256_DIGEST_LENGTH);
|
4282
|
+
SHA256(ticket.data(), ticket.size(), session->session_id.data());
|
4085
4283
|
|
4086
4284
|
*out_session = std::move(session);
|
4087
4285
|
return ssl_ticket_aead_success;
|
@@ -4147,9 +4345,8 @@ bool tls1_choose_signature_algorithm(SSL_HANDSHAKE *hs,
|
|
4147
4345
|
}
|
4148
4346
|
}
|
4149
4347
|
|
4150
|
-
Span<const uint16_t> sigalgs =
|
4151
|
-
|
4152
|
-
: cred->sigalgs;
|
4348
|
+
Span<const uint16_t> sigalgs =
|
4349
|
+
cred->sigalgs.empty() ? Span(kSignSignatureAlgorithms) : cred->sigalgs;
|
4153
4350
|
for (uint16_t sigalg : sigalgs) {
|
4154
4351
|
if (!ssl_pkey_supports_algorithm(ssl, cred->pubkey.get(), sigalg,
|
4155
4352
|
/*is_verify=*/false)) {
|
@@ -4173,10 +4370,10 @@ bool tls1_verify_channel_id(SSL_HANDSHAKE *hs, const SSLMessage &msg) {
|
|
4173
4370
|
// extensions, but the only one that can be present is Channel ID.
|
4174
4371
|
uint16_t extension_type;
|
4175
4372
|
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 ||
|
4373
|
+
if (!CBS_get_u16(&channel_id, &extension_type) || //
|
4374
|
+
!CBS_get_u16_length_prefixed(&channel_id, &extension) || //
|
4375
|
+
CBS_len(&channel_id) != 0 || //
|
4376
|
+
extension_type != TLSEXT_TYPE_channel_id || //
|
4180
4377
|
CBS_len(&extension) != TLSEXT_CHANNEL_ID_SIZE) {
|
4181
4378
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
4182
4379
|
ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
|
@@ -4257,12 +4454,12 @@ bool tls1_write_channel_id(SSL_HANDSHAKE *hs, CBB *cbb) {
|
|
4257
4454
|
}
|
4258
4455
|
|
4259
4456
|
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) ||
|
4457
|
+
if (!CBB_add_u16(cbb, TLSEXT_TYPE_channel_id) || //
|
4458
|
+
!CBB_add_u16_length_prefixed(cbb, &child) || //
|
4459
|
+
!BN_bn2cbb_padded(&child, 32, x.get()) || //
|
4460
|
+
!BN_bn2cbb_padded(&child, 32, y.get()) || //
|
4461
|
+
!BN_bn2cbb_padded(&child, 32, sig->r) || //
|
4462
|
+
!BN_bn2cbb_padded(&child, 32, sig->s) || //
|
4266
4463
|
!CBB_flush(cbb)) {
|
4267
4464
|
return false;
|
4268
4465
|
}
|
@@ -4292,12 +4489,12 @@ bool tls1_channel_id_hash(SSL_HANDSHAKE *hs, uint8_t *out, size_t *out_len) {
|
|
4292
4489
|
if (ssl->session != NULL) {
|
4293
4490
|
static const char kResumptionMagic[] = "Resumption";
|
4294
4491
|
SHA256_Update(&ctx, kResumptionMagic, sizeof(kResumptionMagic));
|
4295
|
-
if (ssl->session->
|
4492
|
+
if (ssl->session->original_handshake_hash.empty()) {
|
4296
4493
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
4297
4494
|
return false;
|
4298
4495
|
}
|
4299
|
-
SHA256_Update(&ctx, ssl->session->original_handshake_hash,
|
4300
|
-
ssl->session->
|
4496
|
+
SHA256_Update(&ctx, ssl->session->original_handshake_hash.data(),
|
4497
|
+
ssl->session->original_handshake_hash.size());
|
4301
4498
|
}
|
4302
4499
|
|
4303
4500
|
uint8_t hs_hash[EVP_MAX_MD_SIZE];
|
@@ -4320,20 +4517,14 @@ bool tls1_record_handshake_hashes_for_channel_id(SSL_HANDSHAKE *hs) {
|
|
4320
4517
|
return false;
|
4321
4518
|
}
|
4322
4519
|
|
4323
|
-
static_assert(
|
4324
|
-
sizeof(hs->new_session->original_handshake_hash) == EVP_MAX_MD_SIZE,
|
4325
|
-
"original_handshake_hash is too small");
|
4326
|
-
|
4327
4520
|
size_t digest_len;
|
4328
|
-
|
4521
|
+
hs->new_session->original_handshake_hash.ResizeForOverwrite(
|
4522
|
+
hs->transcript.DigestLen());
|
4523
|
+
if (!hs->transcript.GetHash(hs->new_session->original_handshake_hash.data(),
|
4329
4524
|
&digest_len)) {
|
4330
4525
|
return false;
|
4331
4526
|
}
|
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
|
-
|
4527
|
+
assert(digest_len == hs->new_session->original_handshake_hash.size());
|
4337
4528
|
return true;
|
4338
4529
|
}
|
4339
4530
|
|
@@ -4343,16 +4534,14 @@ bool ssl_is_sct_list_valid(const CBS *contents) {
|
|
4343
4534
|
// of the SCTs may be empty.
|
4344
4535
|
CBS copy = *contents;
|
4345
4536
|
CBS sct_list;
|
4346
|
-
if (!CBS_get_u16_length_prefixed(©, &sct_list) ||
|
4347
|
-
CBS_len(©) != 0 ||
|
4537
|
+
if (!CBS_get_u16_length_prefixed(©, &sct_list) || CBS_len(©) != 0 ||
|
4348
4538
|
CBS_len(&sct_list) == 0) {
|
4349
4539
|
return false;
|
4350
4540
|
}
|
4351
4541
|
|
4352
4542
|
while (CBS_len(&sct_list) > 0) {
|
4353
4543
|
CBS sct;
|
4354
|
-
if (!CBS_get_u16_length_prefixed(&sct_list, &sct) ||
|
4355
|
-
CBS_len(&sct) == 0) {
|
4544
|
+
if (!CBS_get_u16_length_prefixed(&sct_list, &sct) || CBS_len(&sct) == 0) {
|
4356
4545
|
return false;
|
4357
4546
|
}
|
4358
4547
|
}
|
@@ -4364,6 +4553,19 @@ BSSL_NAMESPACE_END
|
|
4364
4553
|
|
4365
4554
|
using namespace bssl;
|
4366
4555
|
|
4556
|
+
int SSL_parse_client_hello(const SSL *ssl, SSL_CLIENT_HELLO *out,
|
4557
|
+
const uint8_t *in, size_t len) {
|
4558
|
+
CBS cbs = Span(in, len);
|
4559
|
+
if (!ssl_parse_client_hello_with_trailing_data(ssl, &cbs, out)) {
|
4560
|
+
return 0;
|
4561
|
+
}
|
4562
|
+
if (CBS_len(&cbs) != 0) {
|
4563
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_PARSE_FAILED);
|
4564
|
+
return 0;
|
4565
|
+
}
|
4566
|
+
return 1;
|
4567
|
+
}
|
4568
|
+
|
4367
4569
|
int SSL_early_callback_ctx_extension_get(const SSL_CLIENT_HELLO *client_hello,
|
4368
4570
|
uint16_t extension_type,
|
4369
4571
|
const uint8_t **out_data,
|