grpc 1.63.0 → 1.65.2
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 +105 -103
- data/include/grpc/credentials.h +1222 -0
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/grpc.h +7 -0
- data/include/grpc/grpc_crl_provider.h +1 -0
- data/include/grpc/grpc_security.h +0 -1171
- data/include/grpc/impl/channel_arg_names.h +7 -6
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/{lib/channel → channelz}/channel_trace.cc +57 -63
- data/src/core/{lib/channel → channelz}/channel_trace.h +22 -20
- data/src/core/{lib/channel → channelz}/channelz.cc +71 -9
- data/src/core/{lib/channel → channelz}/channelz.h +52 -13
- data/src/core/{lib/channel → channelz}/channelz_registry.cc +11 -9
- data/src/core/{lib/channel → channelz}/channelz_registry.h +6 -6
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +312 -759
- data/src/core/client_channel/client_channel_filter.h +13 -68
- data/src/core/client_channel/client_channel_internal.h +19 -7
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +4 -4
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +5 -4
- data/src/core/client_channel/connector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +6 -5
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/local_subchannel_pool.cc +5 -3
- data/src/core/client_channel/retry_filter.cc +3 -10
- data/src/core/client_channel/retry_filter.h +5 -9
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +70 -76
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +241 -129
- data/src/core/client_channel/subchannel.h +31 -19
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +41 -52
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -13
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +3 -2
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +11 -16
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +5 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +6 -4
- data/src/core/ext/filters/http/client/http_client_filter.h +6 -5
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -3
- data/src/core/ext/filters/http/client_authority_filter.h +6 -4
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +19 -23
- data/src/core/ext/filters/http/message_compress/compression_filter.h +10 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +4 -4
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -5
- data/src/core/ext/filters/message_size/message_size_filter.cc +16 -28
- data/src/core/ext/filters/message_size/message_size_filter.h +14 -12
- data/src/core/ext/filters/rbac/rbac_filter.cc +13 -11
- data/src/core/ext/filters/rbac/rbac_filter.h +6 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -18
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -2
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +5 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +23 -38
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -8
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +233 -158
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +36 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -2
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +190 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -11
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -6
- data/src/core/ext/transport/chttp2/transport/frame.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +9 -7
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +10 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -9
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +29 -31
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -13
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -23
- data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +29 -39
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +1 -4
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +30 -15
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +7 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +10 -11
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.h +4 -3
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +59 -47
- data/src/core/ext/transport/inproc/inproc_transport.cc +65 -41
- data/src/core/ext/transport/inproc/inproc_transport.h +2 -5
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +20 -23
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -4
- data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.cc +6 -6
- data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.h +3 -3
- data/src/core/{lib/transport → handshaker}/handshaker.cc +14 -20
- data/src/core/{lib/transport → handshaker}/handshaker.h +4 -5
- data/src/core/{lib/transport → handshaker}/handshaker_factory.h +19 -3
- data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +3 -3
- data/src/core/{lib/transport → handshaker}/handshaker_registry.h +6 -6
- data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +16 -25
- data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +3 -3
- data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +16 -18
- data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +6 -6
- data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +5 -5
- data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +3 -3
- data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +6 -6
- data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +42 -36
- data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +4 -7
- data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +35 -47
- data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +5 -6
- data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +10 -9
- data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/address_utils/parse_address.cc +30 -40
- data/src/core/lib/address_utils/parse_address.h +2 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +20 -15
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/backoff/backoff.h +2 -2
- data/src/core/lib/backoff/random_early_detection.cc +2 -2
- data/src/core/lib/backoff/random_early_detection.h +2 -2
- data/src/core/lib/channel/call_finalization.h +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -21
- data/src/core/lib/channel/channel_args.h +20 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
- data/src/core/lib/channel/channel_stack.cc +13 -70
- data/src/core/lib/channel/channel_stack.h +14 -39
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +2 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -150
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -4
- data/src/core/lib/channel/connected_channel.cc +40 -694
- data/src/core/lib/channel/promise_based_filter.cc +111 -122
- data/src/core/lib/channel/promise_based_filter.h +219 -531
- data/src/core/lib/channel/status_util.cc +3 -3
- data/src/core/lib/channel/status_util.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -3
- data/src/core/lib/compression/compression_internal.cc +3 -3
- data/src/core/lib/compression/compression_internal.h +1 -2
- data/src/core/lib/compression/message_compress.cc +15 -14
- data/src/core/lib/compression/message_compress.h +1 -2
- data/src/core/lib/config/config_vars.cc +5 -10
- data/src/core/lib/config/config_vars.h +3 -7
- data/src/core/lib/config/config_vars_non_generated.cc +2 -2
- data/src/core/lib/config/core_configuration.cc +9 -8
- data/src/core/lib/config/core_configuration.h +8 -8
- data/src/core/lib/config/load_config.cc +4 -4
- data/src/core/lib/config/load_config.h +2 -2
- data/src/core/lib/debug/event_log.cc +3 -3
- data/src/core/lib/debug/event_log.h +3 -3
- data/src/core/lib/debug/trace.cc +44 -61
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +23 -26
- data/src/core/lib/event_engine/ares_resolver.h +3 -5
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +4 -2
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -3
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +19 -23
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +1 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -2
- data/src/core/lib/event_engine/common_closures.h +1 -2
- data/src/core/lib/event_engine/default_event_engine.cc +1 -2
- data/src/core/lib/event_engine/default_event_engine.h +1 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -2
- data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
- data/src/core/lib/event_engine/event_engine.cc +29 -5
- data/src/core/lib/event_engine/event_engine_context.h +1 -2
- data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
- data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -2
- data/src/core/lib/event_engine/extensions/supports_fd.h +8 -2
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +11 -11
- data/src/core/lib/event_engine/forkable.h +1 -13
- data/src/core/lib/event_engine/grpc_polled_fd.h +1 -2
- data/src/core/lib/event_engine/handle_containers.h +1 -2
- data/src/core/lib/event_engine/memory_allocator_factory.h +1 -2
- data/src/core/lib/event_engine/poller.h +1 -2
- data/src/core/lib/event_engine/posix.h +1 -2
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +1 -2
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +11 -11
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +1 -2
- data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -2
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -2
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +43 -58
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +14 -13
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -17
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +17 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +24 -28
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +22 -20
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.cc +2 -3
- data/src/core/lib/event_engine/posix_engine/timer.h +1 -2
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +9 -11
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -2
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
- data/src/core/lib/event_engine/query_extensions.h +3 -2
- data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -2
- data/src/core/lib/event_engine/resolved_address.cc +5 -4
- data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
- data/src/core/lib/event_engine/shim.cc +3 -3
- data/src/core/lib/event_engine/slice.cc +4 -3
- data/src/core/lib/event_engine/slice_buffer.cc +1 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -16
- data/src/core/lib/event_engine/tcp_socket_utils.h +1 -2
- data/src/core/lib/event_engine/thread_local.cc +2 -2
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -2
- data/src/core/lib/event_engine/thread_pool/thread_count.h +2 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -2
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +27 -28
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +4 -8
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +16 -15
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +5 -5
- data/src/core/lib/event_engine/time_util.cc +1 -2
- data/src/core/lib/event_engine/time_util.h +1 -2
- data/src/core/lib/event_engine/trace.h +7 -19
- data/src/core/lib/event_engine/utils.cc +1 -2
- data/src/core/lib/event_engine/utils.h +1 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -30
- data/src/core/lib/event_engine/windows/iocp.cc +10 -8
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +32 -22
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +24 -25
- data/src/core/lib/event_engine/windows/windows_engine.cc +205 -90
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +19 -29
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +1 -2
- data/src/core/lib/event_engine/work_queue/work_queue.h +1 -2
- data/src/core/lib/experiments/config.cc +16 -14
- data/src/core/lib/experiments/config.h +2 -2
- data/src/core/lib/experiments/experiments.cc +57 -158
- data/src/core/lib/experiments/experiments.h +35 -52
- data/src/core/lib/gprpp/atomic_utils.h +2 -2
- data/src/core/lib/gprpp/bitset.h +3 -3
- data/src/core/lib/gprpp/chunked_vector.h +6 -5
- data/src/core/lib/gprpp/construct_destruct.h +2 -2
- data/src/core/lib/gprpp/crash.cc +3 -5
- data/src/core/lib/gprpp/crash.h +2 -2
- data/src/core/lib/gprpp/debug_location.h +2 -2
- data/src/core/lib/gprpp/directory_reader.h +2 -2
- data/src/core/lib/gprpp/down_cast.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +54 -41
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/env.h +2 -2
- data/src/core/lib/gprpp/examine_stack.cc +2 -2
- data/src/core/lib/gprpp/examine_stack.h +2 -2
- data/src/core/lib/gprpp/fork.cc +1 -2
- data/src/core/lib/gprpp/fork.h +2 -2
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/host_port.cc +6 -4
- data/src/core/lib/gprpp/host_port.h +2 -2
- data/src/core/lib/gprpp/linux/env.cc +2 -2
- data/src/core/lib/gprpp/load_file.cc +1 -2
- data/src/core/lib/gprpp/load_file.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -2
- data/src/core/lib/gprpp/match.h +2 -2
- data/src/core/lib/gprpp/memory.h +1 -2
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/mpscq.h +5 -4
- data/src/core/lib/gprpp/no_destruct.h +2 -2
- data/src/core/lib/gprpp/notification.h +2 -2
- data/src/core/lib/gprpp/orphanable.h +2 -2
- data/src/core/lib/gprpp/overload.h +2 -2
- data/src/core/lib/gprpp/per_cpu.cc +2 -3
- data/src/core/lib/gprpp/per_cpu.h +1 -2
- data/src/core/lib/gprpp/posix/directory_reader.cc +2 -2
- data/src/core/lib/gprpp/posix/stat.cc +8 -7
- data/src/core/lib/gprpp/posix/thd.cc +18 -19
- data/src/core/lib/gprpp/ref_counted.h +35 -26
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -2
- data/src/core/lib/gprpp/ref_counted_string.cc +1 -2
- data/src/core/lib/gprpp/ref_counted_string.h +2 -2
- data/src/core/lib/gprpp/single_set_ptr.h +9 -6
- data/src/core/lib/gprpp/sorted_pack.h +2 -2
- data/src/core/lib/gprpp/stat.h +2 -2
- data/src/core/lib/gprpp/status_helper.cc +14 -33
- data/src/core/lib/gprpp/status_helper.h +5 -33
- data/src/core/lib/gprpp/strerror.cc +2 -2
- data/src/core/lib/gprpp/strerror.h +2 -2
- data/src/core/lib/gprpp/sync.h +5 -5
- data/src/core/lib/gprpp/table.h +2 -2
- data/src/core/lib/gprpp/tchar.cc +2 -2
- data/src/core/lib/gprpp/thd.h +7 -7
- data/src/core/lib/gprpp/time.cc +9 -10
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/time_averaged_stats.cc +2 -2
- data/src/core/lib/gprpp/time_util.cc +5 -4
- data/src/core/lib/gprpp/time_util.h +1 -2
- data/src/core/lib/gprpp/unique_type_name.h +3 -3
- data/src/core/lib/gprpp/uuid_v4.cc +2 -2
- data/src/core/lib/gprpp/uuid_v4.h +2 -2
- data/src/core/lib/gprpp/validation_errors.cc +12 -3
- data/src/core/lib/gprpp/validation_errors.h +13 -2
- data/src/core/lib/gprpp/windows/stat.cc +6 -5
- data/src/core/lib/gprpp/windows/thd.cc +7 -4
- data/src/core/lib/gprpp/work_serializer.cc +53 -62
- data/src/core/lib/gprpp/work_serializer.h +1 -2
- data/src/core/lib/iomgr/buffer_list.cc +5 -4
- data/src/core/lib/iomgr/buffer_list.h +1 -2
- data/src/core/lib/iomgr/call_combiner.cc +23 -31
- data/src/core/lib/iomgr/call_combiner.h +2 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.cc +2 -2
- data/src/core/lib/iomgr/closure.h +6 -7
- data/src/core/lib/iomgr/combiner.cc +13 -14
- data/src/core/lib/iomgr/combiner.h +1 -4
- data/src/core/lib/iomgr/endpoint.cc +1 -7
- data/src/core/lib/iomgr/endpoint.h +1 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -46
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -15
- data/src/core/lib/iomgr/error.cc +16 -24
- data/src/core/lib/iomgr/error.h +4 -4
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +58 -56
- data/src/core/lib/iomgr/ev_poll_posix.cc +47 -38
- data/src/core/lib/iomgr/ev_posix.cc +9 -11
- data/src/core/lib/iomgr/ev_posix.h +11 -8
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -4
- data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +17 -31
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
- data/src/core/lib/iomgr/exec_ctx.cc +7 -7
- data/src/core/lib/iomgr/exec_ctx.h +7 -5
- data/src/core/lib/iomgr/executor.cc +13 -23
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +5 -4
- data/src/core/lib/iomgr/iocp_windows.cc +13 -9
- data/src/core/lib/iomgr/iocp_windows.h +0 -1
- data/src/core/lib/iomgr/iomgr.cc +14 -19
- data/src/core/lib/iomgr/iomgr.h +2 -2
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +4 -2
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +1 -2
- data/src/core/lib/iomgr/polling_entity.cc +5 -5
- data/src/core/lib/iomgr/pollset.cc +2 -2
- data/src/core/lib/iomgr/pollset.h +0 -3
- data/src/core/lib/iomgr/pollset_set.cc +2 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +2 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/pollset_windows.h +0 -1
- data/src/core/lib/iomgr/python_util.h +1 -2
- data/src/core/lib/iomgr/resolve_address.cc +1 -2
- data/src/core/lib/iomgr/resolve_address.h +1 -2
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
- data/src/core/lib/iomgr/resolved_address.h +2 -2
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +1 -2
- data/src/core/lib/iomgr/socket_utils.h +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +28 -33
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
- data/src/core/lib/iomgr/socket_windows.cc +8 -9
- data/src/core/lib/iomgr/tcp_client.cc +2 -2
- data/src/core/lib/iomgr/tcp_client.h +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +14 -19
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_posix.cc +99 -125
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server.cc +2 -2
- data/src/core/lib/iomgr/tcp_server.h +1 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +35 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +10 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -8
- data/src/core/lib/iomgr/tcp_server_windows.cc +25 -30
- data/src/core/lib/iomgr/tcp_windows.cc +33 -47
- data/src/core/lib/iomgr/timer.cc +2 -2
- data/src/core/lib/iomgr/timer.h +1 -2
- data/src/core/lib/iomgr/timer_generic.cc +20 -23
- data/src/core/lib/iomgr/timer_generic.h +0 -1
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +21 -33
- data/src/core/lib/iomgr/timer_manager.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -2
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +3 -1
- data/src/core/lib/iomgr/vsock.cc +3 -3
- data/src/core/lib/iomgr/vsock.h +1 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/matchers/matchers.cc +2 -2
- data/src/core/lib/matchers/matchers.h +2 -2
- data/src/core/lib/promise/activity.cc +4 -3
- data/src/core/lib/promise/activity.h +34 -11
- data/src/core/lib/promise/all_ok.h +2 -2
- data/src/core/lib/promise/arena_promise.h +2 -2
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +14 -3
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +365 -408
- data/src/core/lib/promise/detail/promise_factory.h +2 -2
- data/src/core/lib/promise/detail/promise_like.h +15 -8
- data/src/core/lib/promise/detail/seq_state.h +1192 -1192
- data/src/core/lib/promise/detail/status.h +4 -3
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -2
- data/src/core/lib/promise/for_each.h +91 -30
- data/src/core/lib/promise/if.h +2 -2
- data/src/core/lib/promise/interceptor_list.h +9 -10
- data/src/core/lib/promise/latch.h +17 -17
- data/src/core/lib/promise/loop.h +2 -2
- data/src/core/lib/promise/map.h +19 -2
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +22 -23
- data/src/core/lib/promise/party.h +19 -17
- data/src/core/lib/promise/pipe.h +31 -50
- data/src/core/lib/promise/poll.h +6 -5
- data/src/core/lib/promise/prioritized_race.h +2 -2
- data/src/core/lib/promise/promise.h +3 -2
- data/src/core/lib/promise/race.h +2 -2
- data/src/core/lib/promise/seq.h +2 -2
- data/src/core/lib/promise/sleep.cc +1 -2
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/status_flag.h +10 -8
- data/src/core/lib/promise/try_join.h +4 -3
- data/src/core/lib/promise/try_seq.h +4 -3
- data/src/core/lib/resource_quota/api.cc +1 -2
- data/src/core/lib/resource_quota/api.h +1 -2
- data/src/core/lib/resource_quota/arena.cc +57 -81
- data/src/core/lib/resource_quota/arena.h +119 -211
- data/src/core/lib/resource_quota/connection_quota.cc +8 -9
- data/src/core/lib/resource_quota/connection_quota.h +2 -2
- data/src/core/lib/resource_quota/memory_quota.cc +20 -21
- data/src/core/lib/resource_quota/memory_quota.h +6 -7
- data/src/core/lib/resource_quota/periodic_update.cc +3 -3
- data/src/core/lib/resource_quota/periodic_update.h +2 -2
- data/src/core/lib/resource_quota/resource_quota.cc +2 -2
- data/src/core/lib/resource_quota/resource_quota.h +2 -3
- data/src/core/lib/resource_quota/thread_quota.cc +4 -3
- data/src/core/lib/resource_quota/thread_quota.h +2 -2
- data/src/core/lib/security/authorization/audit_logging.cc +6 -6
- data/src/core/lib/security/authorization/audit_logging.h +1 -2
- data/src/core/lib/security/authorization/authorization_engine.h +2 -2
- data/src/core/lib/security/authorization/authorization_policy_provider.h +2 -3
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -3
- data/src/core/lib/security/authorization/evaluate_args.cc +8 -11
- data/src/core/lib/security/authorization/evaluate_args.h +1 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -11
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +8 -8
- data/src/core/lib/security/authorization/matchers.cc +4 -5
- data/src/core/lib/security/authorization/matchers.h +2 -2
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
- data/src/core/lib/security/authorization/rbac_policy.h +1 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +4 -3
- data/src/core/lib/security/authorization/stdout_logger.h +1 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +4 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +6 -6
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -2
- data/src/core/lib/security/context/security_context.cc +17 -16
- data/src/core/lib/security/context/security_context.h +33 -10
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -6
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry.h +4 -4
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +7 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
- data/src/core/lib/security/credentials/credentials.cc +10 -9
- data/src/core/lib/security/credentials/credentials.h +5 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +9 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -4
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -2
- data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +16 -17
- data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +19 -18
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +19 -19
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +65 -69
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +1 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +6 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -10
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +28 -34
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +26 -25
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +28 -36
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +5 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +15 -18
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -8
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +27 -30
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -17
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots.h +1 -2
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +8 -8
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +19 -23
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +8 -10
- data/src/core/lib/security/security_connector/security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +29 -30
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -53
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
- data/src/core/lib/security/transport/auth_filters.h +14 -13
- data/src/core/lib/security/transport/client_auth_filter.cc +13 -18
- data/src/core/lib/security/transport/server_auth_filter.cc +10 -13
- data/src/core/lib/security/util/json_util.cc +1 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/percent_encoding.cc +4 -3
- data/src/core/lib/slice/slice.cc +11 -10
- data/src/core/lib/slice/slice.h +5 -5
- data/src/core/lib/slice/slice_buffer.cc +15 -14
- data/src/core/lib/slice/slice_buffer.h +1 -2
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_refcount.h +3 -6
- data/src/core/lib/slice/slice_string_helpers.cc +3 -3
- data/src/core/lib/slice/slice_string_helpers.h +1 -2
- data/src/core/lib/surface/api_trace.h +2 -5
- data/src/core/lib/surface/byte_buffer.cc +1 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -3
- data/src/core/lib/surface/call.cc +102 -3899
- data/src/core/lib/surface/call.h +158 -90
- data/src/core/lib/surface/call_details.cc +1 -2
- data/src/core/lib/surface/call_log_batch.cc +2 -3
- data/src/core/lib/surface/call_test_only.h +1 -2
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +17 -11
- data/src/core/lib/surface/channel.h +12 -10
- data/src/core/lib/surface/channel_create.cc +18 -9
- data/src/core/lib/surface/channel_create.h +5 -4
- data/src/core/lib/surface/channel_init.cc +27 -83
- data/src/core/lib/surface/channel_init.h +27 -100
- data/src/core/lib/surface/channel_stack_type.cc +2 -2
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +45 -51
- data/src/core/lib/surface/completion_queue.h +1 -10
- data/src/core/lib/surface/completion_queue_factory.cc +9 -8
- data/src/core/lib/surface/completion_queue_factory.h +1 -2
- data/src/core/lib/surface/event_string.cc +2 -2
- data/src/core/lib/surface/event_string.h +1 -2
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +8 -8
- data/src/core/lib/surface/init_internally.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +10 -13
- data/src/core/lib/surface/lame_client.h +6 -11
- data/src/core/lib/surface/legacy_channel.cc +52 -39
- data/src/core/lib/surface/legacy_channel.h +11 -21
- data/src/core/lib/surface/metadata_array.cc +1 -2
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/validate_metadata.cc +1 -2
- data/src/core/lib/surface/validate_metadata.h +3 -3
- data/src/core/lib/surface/version.cc +3 -4
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +6 -8
- data/src/core/lib/transport/{call_size_estimator.cc → call_arena_allocator.cc} +3 -3
- data/src/core/lib/transport/{call_size_estimator.h → call_arena_allocator.h} +29 -6
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +54 -21
- data/src/core/lib/transport/call_filters.h +240 -84
- data/src/core/lib/transport/call_final_info.cc +2 -2
- data/src/core/lib/transport/call_final_info.h +1 -2
- data/src/core/lib/transport/call_spine.cc +17 -19
- data/src/core/lib/transport/call_spine.h +238 -215
- data/src/core/lib/transport/connectivity_state.cc +9 -12
- data/src/core/lib/transport/connectivity_state.h +1 -4
- data/src/core/lib/transport/error_utils.cc +1 -2
- data/src/core/lib/transport/error_utils.h +1 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/message.cc +1 -2
- data/src/core/lib/transport/metadata.cc +2 -2
- data/src/core/lib/transport/metadata_batch.cc +2 -2
- data/src/core/lib/transport/metadata_batch.h +43 -5
- data/src/core/lib/transport/metadata_compression_traits.h +2 -2
- data/src/core/lib/transport/metadata_info.cc +2 -2
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -2
- data/src/core/lib/transport/parsed_metadata.h +1 -2
- data/src/core/lib/transport/simple_slice_based_metadata.h +2 -2
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -2
- data/src/core/lib/transport/timeout_encoding.cc +5 -5
- data/src/core/lib/transport/timeout_encoding.h +2 -2
- data/src/core/lib/transport/transport.cc +4 -8
- data/src/core/lib/transport/transport.h +80 -74
- data/src/core/lib/transport/transport_op_string.cc +1 -2
- data/src/core/lib/uri/uri_parser.cc +3 -3
- data/src/core/lib/uri/uri_parser.h +2 -2
- data/src/core/load_balancing/address_filtering.cc +2 -2
- data/src/core/load_balancing/address_filtering.h +2 -2
- data/src/core/load_balancing/backend_metric_data.h +2 -2
- data/src/core/load_balancing/backend_metric_parser.cc +2 -2
- data/src/core/load_balancing/backend_metric_parser.h +2 -2
- data/src/core/load_balancing/child_policy_handler.cc +14 -14
- data/src/core/load_balancing/child_policy_handler.h +2 -2
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/endpoint_list.cc +11 -13
- data/src/core/load_balancing/endpoint_list.h +16 -10
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +29 -30
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +20 -8
- data/src/core/load_balancing/grpclb/grpclb.cc +65 -70
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +3 -3
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
- data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/load_balancing/grpclb/grpclb_client_stats.h +1 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
- data/src/core/load_balancing/grpclb/load_balancer_api.h +2 -3
- data/src/core/load_balancing/health_check_client.cc +14 -18
- data/src/core/load_balancing/health_check_client.h +2 -2
- data/src/core/load_balancing/health_check_client_internal.h +1 -2
- data/src/core/load_balancing/lb_policy.cc +7 -10
- data/src/core/load_balancing/lb_policy.h +20 -5
- data/src/core/load_balancing/lb_policy_factory.h +3 -3
- data/src/core/load_balancing/lb_policy_registry.cc +5 -6
- data/src/core/load_balancing/lb_policy_registry.h +3 -3
- data/src/core/load_balancing/oob_backend_metric.cc +6 -9
- data/src/core/load_balancing/oob_backend_metric.h +2 -2
- data/src/core/load_balancing/oob_backend_metric_internal.h +1 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +36 -38
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +5 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +1141 -156
- data/src/core/load_balancing/priority/priority.cc +41 -38
- data/src/core/load_balancing/ring_hash/ring_hash.cc +45 -30
- data/src/core/load_balancing/ring_hash/ring_hash.h +5 -5
- data/src/core/load_balancing/rls/rls.cc +106 -99
- data/src/core/load_balancing/round_robin/round_robin.cc +43 -35
- data/src/core/load_balancing/subchannel_interface.h +1 -2
- 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 +79 -58
- data/src/core/load_balancing/weighted_target/weighted_target.cc +29 -32
- data/src/core/load_balancing/weighted_target/weighted_target.h +1 -1
- data/src/core/load_balancing/xds/cds.cc +25 -28
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +28 -28
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +17 -20
- data/src/core/load_balancing/xds/xds_override_host.cc +46 -47
- data/src/core/load_balancing/xds/xds_override_host.h +5 -5
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +12 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +1 -2
- data/src/core/resolver/binder/binder_resolver.cc +7 -6
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +36 -35
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +20 -27
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -7
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
- data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -10
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +9 -14
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -3
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +7 -7
- data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
- data/src/core/resolver/dns/native/dns_resolver.cc +11 -13
- data/src/core/resolver/endpoint_addresses.cc +5 -5
- data/src/core/resolver/endpoint_addresses.h +2 -2
- data/src/core/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/resolver/fake/fake_resolver.h +2 -3
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +22 -23
- data/src/core/resolver/polling_resolver.cc +35 -40
- data/src/core/resolver/polling_resolver.h +1 -2
- data/src/core/resolver/resolver.cc +3 -7
- data/src/core/resolver/resolver.h +2 -4
- data/src/core/resolver/resolver_factory.h +3 -3
- data/src/core/resolver/resolver_registry.cc +11 -13
- data/src/core/resolver/resolver_registry.h +3 -3
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +5 -6
- data/src/core/resolver/xds/xds_dependency_manager.cc +27 -27
- data/src/core/resolver/xds/xds_dependency_manager.h +7 -7
- data/src/core/resolver/xds/xds_resolver.cc +32 -39
- data/src/core/resolver/xds/xds_resolver_attributes.h +2 -2
- data/src/core/{lib/surface → server}/server.cc +306 -424
- data/src/core/{lib/surface → server}/server.h +43 -26
- data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +16 -20
- data/src/core/{lib/channel → server}/server_call_tracer_filter.h +3 -3
- data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +6 -6
- data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +39 -40
- data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
- data/src/core/{lib/surface → server}/server_interface.h +6 -4
- data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +4 -4
- data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +5 -6
- data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +24 -26
- data/src/core/service_config/service_config.h +2 -3
- data/src/core/service_config/service_config_call_data.h +15 -13
- data/src/core/service_config/service_config_channel_arg_filter.cc +12 -11
- data/src/core/service_config/service_config_impl.cc +7 -7
- data/src/core/service_config/service_config_impl.h +4 -4
- data/src/core/service_config/service_config_parser.cc +4 -8
- data/src/core/service_config/service_config_parser.h +3 -3
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +25 -35
- data/src/core/{lib/channel → telemetry}/call_tracer.h +33 -11
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +2 -2
- data/src/core/{lib/debug → telemetry}/histogram_view.h +5 -5
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +3 -3
- data/src/core/{lib/debug → telemetry}/stats.h +7 -7
- data/src/core/{lib/debug → telemetry}/stats_data.cc +3 -3
- data/src/core/{lib/debug → telemetry}/stats_data.h +6 -6
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +5 -5
- data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -2
- data/src/core/tsi/alts/crypt/gsec.cc +1 -2
- data/src/core/tsi/alts/crypt/gsec.h +1 -2
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
- data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -2
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -15
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +2 -2
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -2
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -2
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -2
- data/src/core/tsi/alts/frame_protector/frame_handler.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +63 -64
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +54 -53
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +7 -5
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +10 -8
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +6 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +10 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +1 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +2 -2
- data/src/core/tsi/fake_transport_security.cc +20 -21
- data/src/core/tsi/local_transport_security.cc +7 -7
- data/src/core/tsi/local_transport_security.h +1 -2
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +6 -5
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +15 -14
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -4
- data/src/core/tsi/ssl_transport_security.cc +96 -100
- data/src/core/tsi/ssl_transport_security.h +1 -2
- data/src/core/tsi/ssl_transport_security_utils.cc +85 -28
- data/src/core/tsi/ssl_transport_security_utils.h +12 -2
- data/src/core/tsi/ssl_types.h +2 -2
- data/src/core/tsi/transport_security.cc +1 -6
- data/src/core/tsi/transport_security.h +2 -4
- data/src/core/tsi/transport_security_grpc.cc +2 -2
- data/src/core/tsi/transport_security_grpc.h +1 -2
- data/src/core/tsi/transport_security_interface.h +2 -6
- data/src/core/{lib/gpr → util}/alloc.cc +3 -1
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +26 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +9 -9
- data/src/core/{lib/http → util/http_client}/format_request.cc +2 -2
- data/src/core/{lib/http → util/http_client}/format_request.h +4 -4
- data/src/core/{lib/http → util/http_client}/httpcli.cc +12 -13
- data/src/core/{lib/http → util/http_client}/httpcli.h +5 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +10 -10
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +3 -3
- data/src/core/{lib/http → util/http_client}/parser.cc +6 -7
- data/src/core/{lib/http → util/http_client}/parser.h +3 -5
- data/src/core/{lib → util}/json/json.h +3 -3
- data/src/core/{lib → util}/json/json_args.h +3 -3
- data/src/core/{lib → util}/json/json_channel_args.h +4 -4
- data/src/core/{lib → util}/json/json_object_loader.cc +1 -1
- data/src/core/{lib → util}/json/json_object_loader.h +5 -5
- data/src/core/{lib → util}/json/json_reader.cc +4 -3
- data/src/core/{lib → util}/json/json_reader.h +4 -4
- data/src/core/{lib → util}/json/json_util.cc +3 -3
- data/src/core/{lib → util}/json/json_util.h +4 -4
- data/src/core/{lib → util}/json/json_writer.cc +1 -1
- data/src/core/{lib → util}/json/json_writer.h +4 -4
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +167 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/sync.cc +25 -23
- data/src/core/{lib/gpr → util}/posix/time.cc +10 -7
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +5 -3
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/sync.cc +5 -3
- data/src/core/{lib/gpr → util}/time.cc +10 -8
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/sync.cc +3 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +5 -2
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +5 -6
- data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +8 -9
- data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +5 -6
- data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +7 -8
- data/src/core/{ext/xds → xds/grpc}/upb_utils.h +5 -5
- data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +4 -4
- data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +7 -7
- data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +7 -8
- data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +14 -14
- data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +5 -5
- data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +5 -6
- data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +51 -34
- data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +10 -11
- data/src/core/{ext/xds → xds/grpc}/xds_cluster.cc +22 -14
- data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +12 -13
- data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +6 -6
- data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +7 -7
- data/src/core/{ext/xds → xds/grpc}/xds_common_types.cc +6 -7
- data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +7 -7
- data/src/core/{ext/xds → xds/grpc}/xds_endpoint.cc +11 -12
- data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +9 -9
- data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +3 -3
- data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +5 -5
- data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +6 -7
- data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +8 -8
- data/src/core/{ext/xds → xds/grpc}/xds_http_filters.cc +8 -9
- data/src/core/{ext/xds → xds/grpc}/xds_http_filters.h +9 -9
- data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +9 -10
- data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +8 -8
- data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +7 -8
- data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +8 -8
- data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +3 -4
- data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -7
- data/src/core/{ext/xds → xds/grpc}/xds_listener.cc +12 -14
- data/src/core/{ext/xds → xds/grpc}/xds_listener.h +12 -12
- data/src/core/{ext/xds → xds/grpc}/xds_route_config.cc +23 -24
- data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +11 -11
- data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +6 -6
- data/src/core/{ext/xds → xds/grpc}/xds_routing.h +8 -8
- data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +16 -16
- data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +7 -8
- data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +9 -14
- data/src/core/{ext/xds → xds/xds_client}/xds_api.h +7 -7
- data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +4 -4
- data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +6 -6
- data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
- data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +60 -62
- data/src/core/{ext/xds → xds/xds_client}/xds_client.h +10 -14
- data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.cc +23 -22
- data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.h +8 -8
- data/src/core/{ext/xds → xds/xds_client}/xds_metrics.h +7 -5
- data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +6 -6
- data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +7 -7
- data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +6 -6
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +130 -130
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +198 -197
- data/src/ruby/ext/grpc/rb_server.c +40 -22
- data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/abseil-cpp/absl/log/check.h +209 -0
- data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +118 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +420 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +13 -18
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -18
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +48 -66
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +7 -61
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +36 -20
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +31 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +46 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +8 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +14 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +22 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +78 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -27
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +44 -41
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +21 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +8 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
- data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +85 -42
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +131 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +10 -0
- data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +63 -53
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +358 -102
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2931 -2453
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -8
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +19 -18
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -58
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +69 -16
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +145 -114
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +243 -189
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +59 -385
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +108 -81
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +116 -93
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +21 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +36 -3
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +53 -18
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +1 -1
- metadata +207 -196
- data/src/core/client_channel/client_channel_channelz.cc +0 -93
- data/src/core/client_channel/client_channel_channelz.h +0 -85
- data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
- data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -77
- data/src/core/lib/channel/metrics.cc +0 -396
- data/src/core/lib/channel/metrics.h +0 -406
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/gpr/log_internal.h +0 -55
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/security/transport/tsi_error.cc +0 -31
- data/src/core/lib/security/transport/tsi_error.h +0 -30
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -170
- data/src/core/lib/transport/batch_builder.h +0 -476
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- data/third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h +0 -83
- data/third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h +0 -41
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
|
@@ -146,6 +146,8 @@
|
|
|
146
146
|
|
|
147
147
|
#include <stdlib.h>
|
|
148
148
|
|
|
149
|
+
#include <algorithm>
|
|
150
|
+
#include <bitset>
|
|
149
151
|
#include <initializer_list>
|
|
150
152
|
#include <limits>
|
|
151
153
|
#include <new>
|
|
@@ -227,23 +229,6 @@ UniquePtr<T> MakeUnique(Args &&... args) {
|
|
|
227
229
|
return UniquePtr<T>(New<T>(std::forward<Args>(args)...));
|
|
228
230
|
}
|
|
229
231
|
|
|
230
|
-
#if defined(BORINGSSL_ALLOW_CXX_RUNTIME)
|
|
231
|
-
#define HAS_VIRTUAL_DESTRUCTOR
|
|
232
|
-
#define PURE_VIRTUAL = 0
|
|
233
|
-
#else
|
|
234
|
-
// HAS_VIRTUAL_DESTRUCTOR should be declared in any base class which defines a
|
|
235
|
-
// virtual destructor. This avoids a dependency on |_ZdlPv| and prevents the
|
|
236
|
-
// class from being used with |delete|.
|
|
237
|
-
#define HAS_VIRTUAL_DESTRUCTOR \
|
|
238
|
-
void operator delete(void *) { abort(); }
|
|
239
|
-
|
|
240
|
-
// PURE_VIRTUAL should be used instead of = 0 when defining pure-virtual
|
|
241
|
-
// functions. This avoids a dependency on |__cxa_pure_virtual| but loses
|
|
242
|
-
// compile-time checking.
|
|
243
|
-
#define PURE_VIRTUAL \
|
|
244
|
-
{ abort(); }
|
|
245
|
-
#endif
|
|
246
|
-
|
|
247
232
|
// Array<T> is an owning array of elements of |T|.
|
|
248
233
|
template <typename T>
|
|
249
234
|
class Array {
|
|
@@ -329,7 +314,7 @@ class Array {
|
|
|
329
314
|
if (!Init(in.size())) {
|
|
330
315
|
return false;
|
|
331
316
|
}
|
|
332
|
-
|
|
317
|
+
std::copy(in.begin(), in.end(), data_);
|
|
333
318
|
return true;
|
|
334
319
|
}
|
|
335
320
|
|
|
@@ -472,6 +457,48 @@ inline size_t GetAllNames(const char **out, size_t max_out,
|
|
|
472
457
|
return fixed_names.size() + objects.size();
|
|
473
458
|
}
|
|
474
459
|
|
|
460
|
+
// RefCounted is a common base for ref-counted types. This is an instance of the
|
|
461
|
+
// C++ curiously-recurring template pattern, so a type Foo must subclass
|
|
462
|
+
// RefCounted<Foo>. It additionally must friend RefCounted<Foo> to allow calling
|
|
463
|
+
// the destructor.
|
|
464
|
+
template <typename Derived>
|
|
465
|
+
class RefCounted {
|
|
466
|
+
public:
|
|
467
|
+
RefCounted(const RefCounted &) = delete;
|
|
468
|
+
RefCounted &operator=(const RefCounted &) = delete;
|
|
469
|
+
|
|
470
|
+
// These methods are intentionally named differently from `bssl::UpRef` to
|
|
471
|
+
// avoid a collision. Only the implementations of `FOO_up_ref` and `FOO_free`
|
|
472
|
+
// should call these.
|
|
473
|
+
void UpRefInternal() { CRYPTO_refcount_inc(&references_); }
|
|
474
|
+
void DecRefInternal() {
|
|
475
|
+
if (CRYPTO_refcount_dec_and_test_zero(&references_)) {
|
|
476
|
+
Derived *d = static_cast<Derived *>(this);
|
|
477
|
+
d->~Derived();
|
|
478
|
+
OPENSSL_free(d);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
protected:
|
|
483
|
+
// Ensure that only `Derived`, which must inherit from `RefCounted<Derived>`,
|
|
484
|
+
// can call the constructor. This catches bugs where someone inherited from
|
|
485
|
+
// the wrong base.
|
|
486
|
+
class CheckSubClass {
|
|
487
|
+
private:
|
|
488
|
+
friend Derived;
|
|
489
|
+
CheckSubClass() = default;
|
|
490
|
+
};
|
|
491
|
+
RefCounted(CheckSubClass) {
|
|
492
|
+
static_assert(std::is_base_of<RefCounted, Derived>::value,
|
|
493
|
+
"Derived must subclass RefCounted<Derived>");
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
~RefCounted() = default;
|
|
497
|
+
|
|
498
|
+
private:
|
|
499
|
+
CRYPTO_refcount_t references_ = 1;
|
|
500
|
+
};
|
|
501
|
+
|
|
475
502
|
|
|
476
503
|
// Protocol versions.
|
|
477
504
|
//
|
|
@@ -554,13 +581,14 @@ BSSL_NAMESPACE_BEGIN
|
|
|
554
581
|
#define SSL_kGENERIC 0x00000008u
|
|
555
582
|
|
|
556
583
|
// Bits for |algorithm_auth| (server authentication).
|
|
557
|
-
#define
|
|
558
|
-
#define
|
|
584
|
+
#define SSL_aRSA_SIGN 0x00000001u
|
|
585
|
+
#define SSL_aRSA_DECRYPT 0x00000002u
|
|
586
|
+
#define SSL_aECDSA 0x00000004u
|
|
559
587
|
// SSL_aPSK is set for both PSK and ECDHE_PSK.
|
|
560
|
-
#define SSL_aPSK
|
|
561
|
-
#define SSL_aGENERIC
|
|
588
|
+
#define SSL_aPSK 0x00000008u
|
|
589
|
+
#define SSL_aGENERIC 0x00000010u
|
|
562
590
|
|
|
563
|
-
#define SSL_aCERT (
|
|
591
|
+
#define SSL_aCERT (SSL_aRSA_SIGN | SSL_aRSA_DECRYPT | SSL_aECDSA)
|
|
564
592
|
|
|
565
593
|
// Bits for |algorithm_enc| (symmetric encryption).
|
|
566
594
|
#define SSL_3DES 0x00000001u
|
|
@@ -661,8 +689,9 @@ bool ssl_create_cipher_list(UniquePtr<SSLCipherPreferenceList> *out_cipher_list,
|
|
|
661
689
|
bool strict);
|
|
662
690
|
|
|
663
691
|
// ssl_cipher_auth_mask_for_key returns the mask of cipher |algorithm_auth|
|
|
664
|
-
// values suitable for use with |key| in TLS 1.2 and below.
|
|
665
|
-
|
|
692
|
+
// values suitable for use with |key| in TLS 1.2 and below. |sign_ok| indicates
|
|
693
|
+
// whether |key| may be used for signing.
|
|
694
|
+
uint32_t ssl_cipher_auth_mask_for_key(const EVP_PKEY *key, bool sign_ok);
|
|
666
695
|
|
|
667
696
|
// ssl_cipher_uses_certificate_auth returns whether |cipher| authenticates the
|
|
668
697
|
// server and, optionally, the client with a certificate.
|
|
@@ -681,12 +710,11 @@ bool ssl_cipher_requires_server_key_exchange(const SSL_CIPHER *cipher);
|
|
|
681
710
|
size_t ssl_cipher_get_record_split_len(const SSL_CIPHER *cipher);
|
|
682
711
|
|
|
683
712
|
// ssl_choose_tls13_cipher returns an |SSL_CIPHER| corresponding with the best
|
|
684
|
-
// available from |cipher_suites| compatible with |version
|
|
685
|
-
//
|
|
686
|
-
//
|
|
687
|
-
// is available.
|
|
713
|
+
// available from |cipher_suites| compatible with |version| and |policy|. It
|
|
714
|
+
// returns NULL if there isn't a compatible cipher. |has_aes_hw| indicates if
|
|
715
|
+
// the choice should be made as if support for AES in hardware is available.
|
|
688
716
|
const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, bool has_aes_hw,
|
|
689
|
-
uint16_t version,
|
|
717
|
+
uint16_t version,
|
|
690
718
|
enum ssl_compliance_policy_t policy);
|
|
691
719
|
|
|
692
720
|
// ssl_tls13_cipher_meets_policy returns true if |cipher_id| is acceptable given
|
|
@@ -929,9 +957,9 @@ class SSLAEADContext {
|
|
|
929
957
|
// DTLS1_BITMAP maintains a sliding window of 64 sequence numbers to detect
|
|
930
958
|
// replayed packets. It should be initialized by zeroing every field.
|
|
931
959
|
struct DTLS1_BITMAP {
|
|
932
|
-
// map is a
|
|
933
|
-
//
|
|
934
|
-
|
|
960
|
+
// map is a bitset of sequence numbers that have been seen. Bit i corresponds
|
|
961
|
+
// to |max_seq_num - i|.
|
|
962
|
+
std::bitset<256> map;
|
|
935
963
|
// max_seq_num is the largest sequence number seen so far as a 64-bit
|
|
936
964
|
// integer.
|
|
937
965
|
uint64_t max_seq_num = 0;
|
|
@@ -1016,26 +1044,21 @@ size_t ssl_seal_align_prefix_len(const SSL *ssl);
|
|
|
1016
1044
|
bool tls_seal_record(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out,
|
|
1017
1045
|
uint8_t type, const uint8_t *in, size_t in_len);
|
|
1018
1046
|
|
|
1019
|
-
enum dtls1_use_epoch_t {
|
|
1020
|
-
dtls1_use_previous_epoch,
|
|
1021
|
-
dtls1_use_current_epoch,
|
|
1022
|
-
};
|
|
1023
|
-
|
|
1024
1047
|
// dtls_max_seal_overhead returns the maximum overhead, in bytes, of sealing a
|
|
1025
1048
|
// record.
|
|
1026
|
-
size_t dtls_max_seal_overhead(const SSL *ssl,
|
|
1049
|
+
size_t dtls_max_seal_overhead(const SSL *ssl, uint16_t epoch);
|
|
1027
1050
|
|
|
1028
1051
|
// dtls_seal_prefix_len returns the number of bytes of prefix to reserve in
|
|
1029
1052
|
// front of the plaintext when sealing a record in-place.
|
|
1030
|
-
size_t dtls_seal_prefix_len(const SSL *ssl,
|
|
1053
|
+
size_t dtls_seal_prefix_len(const SSL *ssl, uint16_t epoch);
|
|
1031
1054
|
|
|
1032
|
-
// dtls_seal_record implements |tls_seal_record| for DTLS. |
|
|
1033
|
-
//
|
|
1034
|
-
//
|
|
1055
|
+
// dtls_seal_record implements |tls_seal_record| for DTLS. |epoch| selects which
|
|
1056
|
+
// epoch's cipher state to use. Unlike |tls_seal_record|, |in| and |out| may
|
|
1057
|
+
// alias but, if they do, |in| must be exactly |dtls_seal_prefix_len| bytes
|
|
1035
1058
|
// ahead of |out|.
|
|
1036
1059
|
bool dtls_seal_record(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out,
|
|
1037
1060
|
uint8_t type, const uint8_t *in, size_t in_len,
|
|
1038
|
-
|
|
1061
|
+
uint16_t epoch);
|
|
1039
1062
|
|
|
1040
1063
|
// ssl_process_alert processes |in| as an alert and updates |ssl|'s shutdown
|
|
1041
1064
|
// state. It returns one of |ssl_open_record_discard|, |ssl_open_record_error|,
|
|
@@ -1047,9 +1070,6 @@ enum ssl_open_record_t ssl_process_alert(SSL *ssl, uint8_t *out_alert,
|
|
|
1047
1070
|
|
|
1048
1071
|
// Private key operations.
|
|
1049
1072
|
|
|
1050
|
-
// ssl_has_private_key returns whether |hs| has a private key configured.
|
|
1051
|
-
bool ssl_has_private_key(const SSL_HANDSHAKE *hs);
|
|
1052
|
-
|
|
1053
1073
|
// ssl_private_key_* perform the corresponding operation on
|
|
1054
1074
|
// |SSL_PRIVATE_KEY_METHOD|. If there is a custom private key configured, they
|
|
1055
1075
|
// call the corresponding function or |complete| depending on whether there is a
|
|
@@ -1066,10 +1086,10 @@ enum ssl_private_key_result_t ssl_private_key_decrypt(SSL_HANDSHAKE *hs,
|
|
|
1066
1086
|
size_t max_out,
|
|
1067
1087
|
Span<const uint8_t> in);
|
|
1068
1088
|
|
|
1069
|
-
//
|
|
1070
|
-
//
|
|
1071
|
-
bool
|
|
1072
|
-
|
|
1089
|
+
// ssl_pkey_supports_algorithm returns whether |pkey| may be used to sign
|
|
1090
|
+
// |sigalg|.
|
|
1091
|
+
bool ssl_pkey_supports_algorithm(const SSL *ssl, EVP_PKEY *pkey,
|
|
1092
|
+
uint16_t sigalg, bool is_verify);
|
|
1073
1093
|
|
|
1074
1094
|
// ssl_public_key_verify verifies that the |signature| is valid for the public
|
|
1075
1095
|
// key |pkey| and input |in|, using the signature algorithm |sigalg|.
|
|
@@ -1093,18 +1113,17 @@ class SSLKeyShare {
|
|
|
1093
1113
|
public:
|
|
1094
1114
|
virtual ~SSLKeyShare() {}
|
|
1095
1115
|
static constexpr bool kAllowUniquePtr = true;
|
|
1096
|
-
HAS_VIRTUAL_DESTRUCTOR
|
|
1097
1116
|
|
|
1098
1117
|
// Create returns a SSLKeyShare instance for use with group |group_id| or
|
|
1099
1118
|
// nullptr on error.
|
|
1100
1119
|
static UniquePtr<SSLKeyShare> Create(uint16_t group_id);
|
|
1101
1120
|
|
|
1102
1121
|
// GroupID returns the group ID.
|
|
1103
|
-
virtual uint16_t GroupID() const
|
|
1122
|
+
virtual uint16_t GroupID() const = 0;
|
|
1104
1123
|
|
|
1105
1124
|
// Generate generates a keypair and writes the public key to |out_public_key|.
|
|
1106
1125
|
// It returns true on success and false on error.
|
|
1107
|
-
virtual bool Generate(CBB *out_public_key)
|
|
1126
|
+
virtual bool Generate(CBB *out_public_key) = 0;
|
|
1108
1127
|
|
|
1109
1128
|
// Encap generates an ephemeral, symmetric secret and encapsulates it with
|
|
1110
1129
|
// |peer_key|. On success, it returns true, writes the encapsulated secret to
|
|
@@ -1112,13 +1131,13 @@ class SSLKeyShare {
|
|
|
1112
1131
|
// it returns false and sets |*out_alert| to an alert to send to the peer.
|
|
1113
1132
|
virtual bool Encap(CBB *out_ciphertext, Array<uint8_t> *out_secret,
|
|
1114
1133
|
uint8_t *out_alert,
|
|
1115
|
-
Span<const uint8_t> peer_key)
|
|
1134
|
+
Span<const uint8_t> peer_key) = 0;
|
|
1116
1135
|
|
|
1117
1136
|
// Decap decapsulates the symmetric secret in |ciphertext|. On success, it
|
|
1118
1137
|
// returns true and sets |*out_secret| to the shared secret. On failure, it
|
|
1119
1138
|
// returns false and sets |*out_alert| to an alert to send to the peer.
|
|
1120
1139
|
virtual bool Decap(Array<uint8_t> *out_secret, uint8_t *out_alert,
|
|
1121
|
-
Span<const uint8_t> ciphertext)
|
|
1140
|
+
Span<const uint8_t> ciphertext) = 0;
|
|
1122
1141
|
|
|
1123
1142
|
// SerializePrivateKey writes the private key to |out|, returning true if
|
|
1124
1143
|
// successful and false otherwise. It should be called after |Generate|.
|
|
@@ -1307,10 +1326,6 @@ int ssl_write_buffer_flush(SSL *ssl);
|
|
|
1307
1326
|
|
|
1308
1327
|
// Certificate functions.
|
|
1309
1328
|
|
|
1310
|
-
// ssl_has_certificate returns whether a certificate and private key are
|
|
1311
|
-
// configured.
|
|
1312
|
-
bool ssl_has_certificate(const SSL_HANDSHAKE *hs);
|
|
1313
|
-
|
|
1314
1329
|
// ssl_parse_cert_chain parses a certificate list from |cbs| in the format used
|
|
1315
1330
|
// by a TLS Certificate message. On success, it advances |cbs| and returns
|
|
1316
1331
|
// true. Otherwise, it returns false and sets |*out_alert| to an alert to send
|
|
@@ -1328,11 +1343,6 @@ bool ssl_parse_cert_chain(uint8_t *out_alert,
|
|
|
1328
1343
|
uint8_t *out_leaf_sha256, CBS *cbs,
|
|
1329
1344
|
CRYPTO_BUFFER_POOL *pool);
|
|
1330
1345
|
|
|
1331
|
-
// ssl_add_cert_chain adds |hs->ssl|'s certificate chain to |cbb| in the format
|
|
1332
|
-
// used by a TLS Certificate message. If there is no certificate chain, it emits
|
|
1333
|
-
// an empty certificate list. It returns true on success and false on error.
|
|
1334
|
-
bool ssl_add_cert_chain(SSL_HANDSHAKE *hs, CBB *cbb);
|
|
1335
|
-
|
|
1336
1346
|
enum ssl_key_usage_t {
|
|
1337
1347
|
key_usage_digital_signature = 0,
|
|
1338
1348
|
key_usage_encipherment = 2,
|
|
@@ -1371,11 +1381,6 @@ bool ssl_add_client_CA_list(SSL_HANDSHAKE *hs, CBB *cbb);
|
|
|
1371
1381
|
bool ssl_check_leaf_certificate(SSL_HANDSHAKE *hs, EVP_PKEY *pkey,
|
|
1372
1382
|
const CRYPTO_BUFFER *leaf);
|
|
1373
1383
|
|
|
1374
|
-
// ssl_on_certificate_selected is called once the certificate has been selected.
|
|
1375
|
-
// It finalizes the certificate and initializes |hs->local_pubkey|. It returns
|
|
1376
|
-
// true on success and false on error.
|
|
1377
|
-
bool ssl_on_certificate_selected(SSL_HANDSHAKE *hs);
|
|
1378
|
-
|
|
1379
1384
|
|
|
1380
1385
|
// TLS 1.3 key derivation.
|
|
1381
1386
|
|
|
@@ -1584,43 +1589,117 @@ size_t ssl_ech_extension_body_length(const EVP_HPKE_AEAD *aead, size_t enc_len,
|
|
|
1584
1589
|
bool ssl_encrypt_client_hello(SSL_HANDSHAKE *hs, Span<const uint8_t> enc);
|
|
1585
1590
|
|
|
1586
1591
|
|
|
1587
|
-
//
|
|
1592
|
+
// Credentials.
|
|
1588
1593
|
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
~DC();
|
|
1594
|
+
enum class SSLCredentialType {
|
|
1595
|
+
kX509,
|
|
1596
|
+
kDelegated,
|
|
1597
|
+
};
|
|
1594
1598
|
|
|
1595
|
-
|
|
1596
|
-
UniquePtr<DC> Dup();
|
|
1599
|
+
BSSL_NAMESPACE_END
|
|
1597
1600
|
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1601
|
+
// SSL_CREDENTIAL is exported to C, so it must be defined outside the namespace.
|
|
1602
|
+
struct ssl_credential_st : public bssl::RefCounted<ssl_credential_st> {
|
|
1603
|
+
explicit ssl_credential_st(bssl::SSLCredentialType type);
|
|
1604
|
+
ssl_credential_st(const ssl_credential_st &) = delete;
|
|
1605
|
+
ssl_credential_st &operator=(const ssl_credential_st &) = delete;
|
|
1602
1606
|
|
|
1603
|
-
//
|
|
1604
|
-
//
|
|
1605
|
-
|
|
1607
|
+
// Dup returns a copy of the credential, or nullptr on error. The |ex_data|
|
|
1608
|
+
// values are not copied. This is only used on the default credential, whose
|
|
1609
|
+
// |ex_data| is inaccessible.
|
|
1610
|
+
bssl::UniquePtr<SSL_CREDENTIAL> Dup() const;
|
|
1611
|
+
|
|
1612
|
+
// ClearCertAndKey erases any certificate and private key on the credential.
|
|
1613
|
+
void ClearCertAndKey();
|
|
1614
|
+
|
|
1615
|
+
// UsesX509 returns true if the credential type uses an X.509 certificate.
|
|
1616
|
+
bool UsesX509() const;
|
|
1617
|
+
|
|
1618
|
+
// UsesPrivateKey returns true if the credential type uses an asymmetric
|
|
1619
|
+
// private key.
|
|
1620
|
+
bool UsesPrivateKey() const;
|
|
1621
|
+
|
|
1622
|
+
// IsComplete returns whether all required fields in the credential have been
|
|
1623
|
+
// filled in.
|
|
1624
|
+
bool IsComplete() const;
|
|
1625
|
+
|
|
1626
|
+
// SetLeafCert sets the leaf certificate to |leaf|, leaving the remaining
|
|
1627
|
+
// certificates unmodified. It returns true on success and false on error. If
|
|
1628
|
+
// |discard_key_on_mismatch| is true and the private key is inconsistent with
|
|
1629
|
+
// the new leaf certificate, it is silently discarded.
|
|
1630
|
+
bool SetLeafCert(bssl::UniquePtr<CRYPTO_BUFFER> leaf,
|
|
1631
|
+
bool discard_key_on_mismatch);
|
|
1632
|
+
|
|
1633
|
+
// ClearIntermediateCerts clears intermediate certificates in the certificate
|
|
1634
|
+
// chain, while preserving the leaf.
|
|
1635
|
+
void ClearIntermediateCerts();
|
|
1636
|
+
|
|
1637
|
+
// AppendIntermediateCert appends |cert| to the certificate chain. If there is
|
|
1638
|
+
// no leaf certificate configured, it leaves a placeholder null in |chain|. It
|
|
1639
|
+
// returns one on success and zero on error.
|
|
1640
|
+
bool AppendIntermediateCert(bssl::UniquePtr<CRYPTO_BUFFER> cert);
|
|
1641
|
+
|
|
1642
|
+
// type is the credential type and determines which other fields apply.
|
|
1643
|
+
bssl::SSLCredentialType type;
|
|
1644
|
+
|
|
1645
|
+
// pubkey is the cached public key of the credential. Unlike |privkey|, it is
|
|
1646
|
+
// always present and is extracted from the certificate, delegated credential,
|
|
1647
|
+
// etc.
|
|
1648
|
+
bssl::UniquePtr<EVP_PKEY> pubkey;
|
|
1649
|
+
|
|
1650
|
+
// privkey is the private key of the credential. It may be omitted in favor of
|
|
1651
|
+
// |key_method|.
|
|
1652
|
+
bssl::UniquePtr<EVP_PKEY> privkey;
|
|
1653
|
+
|
|
1654
|
+
// key_method, if non-null, is a set of callbacks to call for private key
|
|
1655
|
+
// operations.
|
|
1656
|
+
const SSL_PRIVATE_KEY_METHOD *key_method = nullptr;
|
|
1657
|
+
|
|
1658
|
+
// sigalgs, if non-empty, is the set of signature algorithms supported by the
|
|
1659
|
+
// private key in decreasing order of preference. If empty, the default list
|
|
1660
|
+
// is used.
|
|
1661
|
+
//
|
|
1662
|
+
// In delegated credentials, this field is not configurable and is instead
|
|
1663
|
+
// computed from the dc_cert_verify_algorithm field.
|
|
1664
|
+
bssl::Array<uint16_t> sigalgs;
|
|
1665
|
+
|
|
1666
|
+
// chain contains the certificate chain, with the leaf at the beginning. The
|
|
1667
|
+
// first element of |chain| may be nullptr to indicate that the leaf
|
|
1668
|
+
// certificate has not yet been set.
|
|
1669
|
+
// If |chain| != nullptr -> len(chain) >= 1
|
|
1670
|
+
// If |chain[0]| == nullptr -> len(chain) >= 2.
|
|
1671
|
+
// |chain[1..]| != nullptr
|
|
1672
|
+
bssl::UniquePtr<STACK_OF(CRYPTO_BUFFER)> chain;
|
|
1673
|
+
|
|
1674
|
+
// dc is the DelegatedCredential structure, if this is a delegated credential.
|
|
1675
|
+
bssl::UniquePtr<CRYPTO_BUFFER> dc;
|
|
1676
|
+
|
|
1677
|
+
// dc_algorithm is the signature scheme of the signature over the delegated
|
|
1678
|
+
// credential itself, made by the end-entity certificate's public key.
|
|
1679
|
+
uint16_t dc_algorithm = 0;
|
|
1680
|
+
|
|
1681
|
+
// Signed certificate timestamp list to be sent to the client, if requested
|
|
1682
|
+
bssl::UniquePtr<CRYPTO_BUFFER> signed_cert_timestamp_list;
|
|
1606
1683
|
|
|
1607
|
-
//
|
|
1608
|
-
|
|
1609
|
-
uint16_t expected_cert_verify_algorithm = 0;
|
|
1684
|
+
// OCSP response to be sent to the client, if requested.
|
|
1685
|
+
bssl::UniquePtr<CRYPTO_BUFFER> ocsp_response;
|
|
1610
1686
|
|
|
1611
|
-
|
|
1612
|
-
UniquePtr<EVP_PKEY> pkey;
|
|
1687
|
+
CRYPTO_EX_DATA ex_data;
|
|
1613
1688
|
|
|
1614
1689
|
private:
|
|
1615
|
-
friend
|
|
1616
|
-
|
|
1690
|
+
friend RefCounted;
|
|
1691
|
+
~ssl_credential_st();
|
|
1617
1692
|
};
|
|
1618
1693
|
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
//
|
|
1622
|
-
//
|
|
1623
|
-
|
|
1694
|
+
BSSL_NAMESPACE_BEGIN
|
|
1695
|
+
|
|
1696
|
+
// ssl_get_credential_list computes |hs|'s credential list. On success, it
|
|
1697
|
+
// writes it to |*out| and returns true. Otherwise, it returns false. The
|
|
1698
|
+
// credential list may be empty, in which case this function will successfully
|
|
1699
|
+
// return an empty array.
|
|
1700
|
+
//
|
|
1701
|
+
// The pointers in the result are only valid until |hs| is next mutated.
|
|
1702
|
+
bool ssl_get_credential_list(SSL_HANDSHAKE *hs, Array<SSL_CREDENTIAL *> *out);
|
|
1624
1703
|
|
|
1625
1704
|
|
|
1626
1705
|
// Handshake functions.
|
|
@@ -1661,7 +1740,7 @@ enum tls12_server_hs_state_t {
|
|
|
1661
1740
|
state12_start_accept = 0,
|
|
1662
1741
|
state12_read_client_hello,
|
|
1663
1742
|
state12_read_client_hello_after_ech,
|
|
1664
|
-
|
|
1743
|
+
state12_cert_callback,
|
|
1665
1744
|
state12_tls13,
|
|
1666
1745
|
state12_select_parameters,
|
|
1667
1746
|
state12_send_server_hello,
|
|
@@ -1896,7 +1975,8 @@ struct SSL_HANDSHAKE {
|
|
|
1896
1975
|
Array<uint16_t> peer_supported_group_list;
|
|
1897
1976
|
|
|
1898
1977
|
// peer_delegated_credential_sigalgs are the signature algorithms the peer
|
|
1899
|
-
// supports with delegated credentials
|
|
1978
|
+
// supports with delegated credentials, or empty if the peer does not support
|
|
1979
|
+
// delegated credentials.
|
|
1900
1980
|
Array<uint16_t> peer_delegated_credential_sigalgs;
|
|
1901
1981
|
|
|
1902
1982
|
// peer_key is the peer's ECDH key for a TLS 1.2 client.
|
|
@@ -1939,8 +2019,8 @@ struct SSL_HANDSHAKE {
|
|
|
1939
2019
|
// received in a CertificateRequest message.
|
|
1940
2020
|
Array<uint8_t> certificate_types;
|
|
1941
2021
|
|
|
1942
|
-
//
|
|
1943
|
-
UniquePtr<
|
|
2022
|
+
// credential is the credential we are using for the handshake.
|
|
2023
|
+
UniquePtr<SSL_CREDENTIAL> credential;
|
|
1944
2024
|
|
|
1945
2025
|
// peer_pubkey is the public key parsed from the peer's leaf certificate.
|
|
1946
2026
|
UniquePtr<EVP_PKEY> peer_pubkey;
|
|
@@ -2006,10 +2086,6 @@ struct SSL_HANDSHAKE {
|
|
|
2006
2086
|
// ocsp_stapling_requested is true if a client requested OCSP stapling.
|
|
2007
2087
|
bool ocsp_stapling_requested : 1;
|
|
2008
2088
|
|
|
2009
|
-
// delegated_credential_requested is true if the peer indicated support for
|
|
2010
|
-
// the delegated credential extension.
|
|
2011
|
-
bool delegated_credential_requested : 1;
|
|
2012
|
-
|
|
2013
2089
|
// should_ack_sni is used by a server and indicates that the SNI extension
|
|
2014
2090
|
// should be echoed in the ServerHello.
|
|
2015
2091
|
bool should_ack_sni : 1;
|
|
@@ -2085,6 +2161,10 @@ struct SSL_HANDSHAKE {
|
|
|
2085
2161
|
// record layer.
|
|
2086
2162
|
uint16_t early_data_written = 0;
|
|
2087
2163
|
|
|
2164
|
+
// signature_algorithm is the signature algorithm to be used in signing with
|
|
2165
|
+
// the selected credential, or zero if not applicable or not yet selected.
|
|
2166
|
+
uint16_t signature_algorithm = 0;
|
|
2167
|
+
|
|
2088
2168
|
// ech_config_id is the ECH config sent by the client.
|
|
2089
2169
|
uint8_t ech_config_id = 0;
|
|
2090
2170
|
|
|
@@ -2239,6 +2319,11 @@ bool ssl_is_valid_alpn_list(Span<const uint8_t> in);
|
|
|
2239
2319
|
bool ssl_is_alpn_protocol_allowed(const SSL_HANDSHAKE *hs,
|
|
2240
2320
|
Span<const uint8_t> protocol);
|
|
2241
2321
|
|
|
2322
|
+
// ssl_alpn_list_contains_protocol returns whether |list|, a serialized ALPN
|
|
2323
|
+
// protocol list, contains |protocol|.
|
|
2324
|
+
bool ssl_alpn_list_contains_protocol(Span<const uint8_t> list,
|
|
2325
|
+
Span<const uint8_t> protocol);
|
|
2326
|
+
|
|
2242
2327
|
// ssl_negotiate_alpn negotiates the ALPN extension, if applicable. It returns
|
|
2243
2328
|
// true on successful negotiation or if nothing was negotiated. It returns false
|
|
2244
2329
|
// and sets |*out_alert| to an alert on error.
|
|
@@ -2287,8 +2372,14 @@ enum ssl_verify_result_t ssl_reverify_peer_cert(SSL_HANDSHAKE *hs,
|
|
|
2287
2372
|
bool send_alert);
|
|
2288
2373
|
|
|
2289
2374
|
enum ssl_hs_wait_t ssl_get_finished(SSL_HANDSHAKE *hs);
|
|
2375
|
+
|
|
2376
|
+
// ssl_send_finished adds a Finished message to the current flight of messages.
|
|
2377
|
+
// It returns true on success and false on error.
|
|
2290
2378
|
bool ssl_send_finished(SSL_HANDSHAKE *hs);
|
|
2291
|
-
|
|
2379
|
+
|
|
2380
|
+
// ssl_send_tls12_certificate adds a TLS 1.2 Certificate message to the current
|
|
2381
|
+
// flight of messages. It returns true on success and false on error.
|
|
2382
|
+
bool ssl_send_tls12_certificate(SSL_HANDSHAKE *hs);
|
|
2292
2383
|
|
|
2293
2384
|
// ssl_handshake_session returns the |SSL_SESSION| corresponding to the current
|
|
2294
2385
|
// handshake. Note, in TLS 1.2 resumptions, this session is immutable.
|
|
@@ -2348,28 +2439,20 @@ bool tls1_parse_peer_sigalgs(SSL_HANDSHAKE *hs, const CBS *sigalgs);
|
|
|
2348
2439
|
bool tls1_get_legacy_signature_algorithm(uint16_t *out, const EVP_PKEY *pkey);
|
|
2349
2440
|
|
|
2350
2441
|
// tls1_choose_signature_algorithm sets |*out| to a signature algorithm for use
|
|
2351
|
-
// with |
|
|
2352
|
-
//
|
|
2353
|
-
bool tls1_choose_signature_algorithm(SSL_HANDSHAKE *hs,
|
|
2354
|
-
|
|
2355
|
-
// tls1_get_peer_verify_algorithms returns the signature schemes for which the
|
|
2356
|
-
// peer indicated support.
|
|
2357
|
-
//
|
|
2358
|
-
// NOTE: The related function |SSL_get0_peer_verify_algorithms| only has
|
|
2359
|
-
// well-defined behavior during the callbacks set by |SSL_CTX_set_cert_cb| and
|
|
2360
|
-
// |SSL_CTX_set_client_cert_cb|, or when the handshake is paused because of
|
|
2361
|
-
// them.
|
|
2362
|
-
Span<const uint16_t> tls1_get_peer_verify_algorithms(const SSL_HANDSHAKE *hs);
|
|
2442
|
+
// with |cred| based on the peer's preferences and the algorithms supported. It
|
|
2443
|
+
// returns true on success and false on error.
|
|
2444
|
+
bool tls1_choose_signature_algorithm(SSL_HANDSHAKE *hs,
|
|
2445
|
+
const SSL_CREDENTIAL *cred, uint16_t *out);
|
|
2363
2446
|
|
|
2364
2447
|
// tls12_add_verify_sigalgs adds the signature algorithms acceptable for the
|
|
2365
2448
|
// peer signature to |out|. It returns true on success and false on error.
|
|
2366
2449
|
bool tls12_add_verify_sigalgs(const SSL_HANDSHAKE *hs, CBB *out);
|
|
2367
2450
|
|
|
2368
2451
|
// tls12_check_peer_sigalg checks if |sigalg| is acceptable for the peer
|
|
2369
|
-
// signature
|
|
2452
|
+
// signature from |pkey|. It returns true on success and false on error, setting
|
|
2370
2453
|
// |*out_alert| to an alert to send.
|
|
2371
2454
|
bool tls12_check_peer_sigalg(const SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
2372
|
-
uint16_t sigalg);
|
|
2455
|
+
uint16_t sigalg, EVP_PKEY *pkey);
|
|
2373
2456
|
|
|
2374
2457
|
|
|
2375
2458
|
// Underdocumented functions.
|
|
@@ -2387,42 +2470,36 @@ struct CERT {
|
|
|
2387
2470
|
explicit CERT(const SSL_X509_METHOD *x509_method);
|
|
2388
2471
|
~CERT();
|
|
2389
2472
|
|
|
2390
|
-
|
|
2473
|
+
bool is_valid() const { return default_credential != nullptr; }
|
|
2391
2474
|
|
|
2392
|
-
//
|
|
2393
|
-
//
|
|
2394
|
-
|
|
2395
|
-
// If |chain| != NULL -> len(chain) >= 1
|
|
2396
|
-
// If |chain[0]| == NULL -> len(chain) >= 2.
|
|
2397
|
-
// |chain[1..]| != NULL
|
|
2398
|
-
UniquePtr<STACK_OF(CRYPTO_BUFFER)> chain;
|
|
2399
|
-
|
|
2400
|
-
// x509_chain may contain a parsed copy of |chain[1..]|. This is only used as
|
|
2401
|
-
// a cache in order to implement “get0” functions that return a non-owning
|
|
2402
|
-
// pointer to the certificate chain.
|
|
2403
|
-
STACK_OF(X509) *x509_chain = nullptr;
|
|
2475
|
+
// credentials is the list of credentials to select between. Elements of this
|
|
2476
|
+
// array immutable.
|
|
2477
|
+
GrowableArray<UniquePtr<SSL_CREDENTIAL>> credentials;
|
|
2404
2478
|
|
|
2405
|
-
//
|
|
2406
|
-
//
|
|
2407
|
-
//
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
// x509_stash contains the last |X509| object append to the chain. This is a
|
|
2411
|
-
// workaround for some third-party code that continue to use an |X509| object
|
|
2412
|
-
// even after passing ownership with an “add0” function.
|
|
2413
|
-
X509 *x509_stash = nullptr;
|
|
2414
|
-
|
|
2415
|
-
// key_method, if non-NULL, is a set of callbacks to call for private key
|
|
2416
|
-
// operations.
|
|
2417
|
-
const SSL_PRIVATE_KEY_METHOD *key_method = nullptr;
|
|
2479
|
+
// default_credential is the credential configured by the legacy,
|
|
2480
|
+
// non-credential-based APIs. If IsComplete() returns true, it is appended to
|
|
2481
|
+
// the list of credentials.
|
|
2482
|
+
UniquePtr<SSL_CREDENTIAL> default_credential;
|
|
2418
2483
|
|
|
2419
2484
|
// x509_method contains pointers to functions that might deal with |X509|
|
|
2420
2485
|
// compatibility, or might be a no-op, depending on the application.
|
|
2421
2486
|
const SSL_X509_METHOD *x509_method = nullptr;
|
|
2422
2487
|
|
|
2423
|
-
//
|
|
2424
|
-
//
|
|
2425
|
-
|
|
2488
|
+
// x509_chain may contain a parsed copy of |chain[1..]| from the default
|
|
2489
|
+
// credential. This is only used as a cache in order to implement “get0”
|
|
2490
|
+
// functions that return a non-owning pointer to the certificate chain.
|
|
2491
|
+
STACK_OF(X509) *x509_chain = nullptr;
|
|
2492
|
+
|
|
2493
|
+
// x509_leaf may contain a parsed copy of the first element of |chain| from
|
|
2494
|
+
// the default credential. This is only used as a cache in order to implement
|
|
2495
|
+
// “get0” functions that return a non-owning pointer to the certificate chain.
|
|
2496
|
+
X509 *x509_leaf = nullptr;
|
|
2497
|
+
|
|
2498
|
+
// x509_stash contains the last |X509| object append to the default
|
|
2499
|
+
// credential's chain. This is a workaround for some third-party code that
|
|
2500
|
+
// continue to use an |X509| object even after passing ownership with an
|
|
2501
|
+
// “add0” function.
|
|
2502
|
+
X509 *x509_stash = nullptr;
|
|
2426
2503
|
|
|
2427
2504
|
// Certificate setup callback: if set is called whenever a
|
|
2428
2505
|
// certificate may be required (client or server). the callback
|
|
@@ -2437,29 +2514,10 @@ struct CERT {
|
|
|
2437
2514
|
// store is used instead.
|
|
2438
2515
|
X509_STORE *verify_store = nullptr;
|
|
2439
2516
|
|
|
2440
|
-
// Signed certificate timestamp list to be sent to the client, if requested
|
|
2441
|
-
UniquePtr<CRYPTO_BUFFER> signed_cert_timestamp_list;
|
|
2442
|
-
|
|
2443
|
-
// OCSP response to be sent to the client, if requested.
|
|
2444
|
-
UniquePtr<CRYPTO_BUFFER> ocsp_response;
|
|
2445
|
-
|
|
2446
2517
|
// sid_ctx partitions the session space within a shared session cache or
|
|
2447
2518
|
// ticket key. Only sessions with a matching value will be accepted.
|
|
2448
2519
|
uint8_t sid_ctx_length = 0;
|
|
2449
2520
|
uint8_t sid_ctx[SSL_MAX_SID_CTX_LENGTH] = {0};
|
|
2450
|
-
|
|
2451
|
-
// Delegated credentials.
|
|
2452
|
-
|
|
2453
|
-
// dc is the delegated credential to send to the peer (if requested).
|
|
2454
|
-
UniquePtr<DC> dc = nullptr;
|
|
2455
|
-
|
|
2456
|
-
// dc_privatekey is used instead of |privatekey| or |key_method| to
|
|
2457
|
-
// authenticate the host if a delegated credential is used in the handshake.
|
|
2458
|
-
UniquePtr<EVP_PKEY> dc_privatekey = nullptr;
|
|
2459
|
-
|
|
2460
|
-
// dc_key_method, if not NULL, is used instead of |dc_privatekey| to
|
|
2461
|
-
// authenticate the host.
|
|
2462
|
-
const SSL_PRIVATE_KEY_METHOD *dc_key_method = nullptr;
|
|
2463
2521
|
};
|
|
2464
2522
|
|
|
2465
2523
|
// |SSL_PROTOCOL_METHOD| abstracts between TLS and DTLS.
|
|
@@ -2763,10 +2821,6 @@ struct SSL3_STATE {
|
|
|
2763
2821
|
// session_reused indicates whether a session was resumed.
|
|
2764
2822
|
bool session_reused : 1;
|
|
2765
2823
|
|
|
2766
|
-
// delegated_credential_used is whether we presented a delegated credential to
|
|
2767
|
-
// the peer.
|
|
2768
|
-
bool delegated_credential_used : 1;
|
|
2769
|
-
|
|
2770
2824
|
bool send_connection_binding : 1;
|
|
2771
2825
|
|
|
2772
2826
|
// channel_id_valid is true if, on the server, the client has negotiated a
|
|
@@ -3157,6 +3211,15 @@ struct SSL_CONFIG {
|
|
|
3157
3211
|
// alps_use_new_codepoint if set indicates we use new ALPS extension codepoint
|
|
3158
3212
|
// to negotiate and convey application settings.
|
|
3159
3213
|
bool alps_use_new_codepoint : 1;
|
|
3214
|
+
|
|
3215
|
+
// check_client_certificate_type indicates whether the client, in TLS 1.2 and
|
|
3216
|
+
// below, will check its certificate against the server's requested
|
|
3217
|
+
// certificate types.
|
|
3218
|
+
bool check_client_certificate_type : 1;
|
|
3219
|
+
|
|
3220
|
+
// check_ecdsa_curve indicates whether the server, in TLS 1.2 and below, will
|
|
3221
|
+
// check its certificate against the client's supported ECDSA curves.
|
|
3222
|
+
bool check_ecdsa_curve : 1;
|
|
3160
3223
|
};
|
|
3161
3224
|
|
|
3162
3225
|
// From RFC 8446, used in determining PSK modes.
|
|
@@ -3168,7 +3231,6 @@ struct SSL_CONFIG {
|
|
|
3168
3231
|
static const size_t kMaxEarlyDataAccepted = 14336;
|
|
3169
3232
|
|
|
3170
3233
|
UniquePtr<CERT> ssl_cert_dup(CERT *cert);
|
|
3171
|
-
void ssl_cert_clear_certs(CERT *cert);
|
|
3172
3234
|
bool ssl_set_cert(CERT *cert, UniquePtr<CRYPTO_BUFFER> buffer);
|
|
3173
3235
|
bool ssl_is_key_type_supported(int key_type);
|
|
3174
3236
|
// ssl_compare_public_and_private_key returns true if |pubkey| is the public
|
|
@@ -3176,7 +3238,6 @@ bool ssl_is_key_type_supported(int key_type);
|
|
|
3176
3238
|
// message on the error queue.
|
|
3177
3239
|
bool ssl_compare_public_and_private_key(const EVP_PKEY *pubkey,
|
|
3178
3240
|
const EVP_PKEY *privkey);
|
|
3179
|
-
bool ssl_cert_check_private_key(const CERT *cert, const EVP_PKEY *privkey);
|
|
3180
3241
|
bool ssl_get_new_session(SSL_HANDSHAKE *hs);
|
|
3181
3242
|
bool ssl_encrypt_ticket(SSL_HANDSHAKE *hs, CBB *out,
|
|
3182
3243
|
const SSL_SESSION *session);
|
|
@@ -3313,7 +3374,7 @@ int dtls1_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
|
|
3313
3374
|
// dtls1_write_record sends a record. It returns one on success and <= 0 on
|
|
3314
3375
|
// error.
|
|
3315
3376
|
int dtls1_write_record(SSL *ssl, int type, Span<const uint8_t> in,
|
|
3316
|
-
|
|
3377
|
+
uint16_t epoch);
|
|
3317
3378
|
|
|
3318
3379
|
int dtls1_retransmit_outgoing_messages(SSL *ssl);
|
|
3319
3380
|
bool dtls1_parse_fragment(CBS *cbs, struct hm_header_st *out_hdr,
|
|
@@ -3459,7 +3520,7 @@ struct ssl_method_st {
|
|
|
3459
3520
|
const bssl::SSL_X509_METHOD *x509_method;
|
|
3460
3521
|
};
|
|
3461
3522
|
|
|
3462
|
-
struct ssl_ctx_st {
|
|
3523
|
+
struct ssl_ctx_st : public bssl::RefCounted<ssl_ctx_st> {
|
|
3463
3524
|
explicit ssl_ctx_st(const SSL_METHOD *ssl_method);
|
|
3464
3525
|
ssl_ctx_st(const ssl_ctx_st &) = delete;
|
|
3465
3526
|
ssl_ctx_st &operator=(const ssl_ctx_st &) = delete;
|
|
@@ -3529,8 +3590,6 @@ struct ssl_ctx_st {
|
|
|
3529
3590
|
SSL_SESSION *(*get_session_cb)(SSL *ssl, const uint8_t *data, int len,
|
|
3530
3591
|
int *copy) = nullptr;
|
|
3531
3592
|
|
|
3532
|
-
CRYPTO_refcount_t references = 1;
|
|
3533
|
-
|
|
3534
3593
|
// if defined, these override the X509_verify_cert() calls
|
|
3535
3594
|
int (*app_verify_callback)(X509_STORE_CTX *store_ctx, void *arg) = nullptr;
|
|
3536
3595
|
void *app_verify_arg = nullptr;
|
|
@@ -3767,8 +3826,8 @@ struct ssl_ctx_st {
|
|
|
3767
3826
|
bool aes_hw_override_value : 1;
|
|
3768
3827
|
|
|
3769
3828
|
private:
|
|
3829
|
+
friend RefCounted;
|
|
3770
3830
|
~ssl_ctx_st();
|
|
3771
|
-
friend OPENSSL_EXPORT void SSL_CTX_free(SSL_CTX *);
|
|
3772
3831
|
};
|
|
3773
3832
|
|
|
3774
3833
|
struct ssl_st {
|
|
@@ -3860,13 +3919,11 @@ struct ssl_st {
|
|
|
3860
3919
|
bool enable_early_data : 1;
|
|
3861
3920
|
};
|
|
3862
3921
|
|
|
3863
|
-
struct ssl_session_st {
|
|
3922
|
+
struct ssl_session_st : public bssl::RefCounted<ssl_session_st> {
|
|
3864
3923
|
explicit ssl_session_st(const bssl::SSL_X509_METHOD *method);
|
|
3865
3924
|
ssl_session_st(const ssl_session_st &) = delete;
|
|
3866
3925
|
ssl_session_st &operator=(const ssl_session_st &) = delete;
|
|
3867
3926
|
|
|
3868
|
-
CRYPTO_refcount_t references = 1;
|
|
3869
|
-
|
|
3870
3927
|
// ssl_version is the (D)TLS version that established the session.
|
|
3871
3928
|
uint16_t ssl_version = 0;
|
|
3872
3929
|
|
|
@@ -4009,21 +4066,18 @@ struct ssl_session_st {
|
|
|
4009
4066
|
bssl::Array<uint8_t> quic_early_data_context;
|
|
4010
4067
|
|
|
4011
4068
|
private:
|
|
4069
|
+
friend RefCounted;
|
|
4012
4070
|
~ssl_session_st();
|
|
4013
|
-
friend OPENSSL_EXPORT void SSL_SESSION_free(SSL_SESSION *);
|
|
4014
4071
|
};
|
|
4015
4072
|
|
|
4016
|
-
struct ssl_ech_keys_st {
|
|
4017
|
-
ssl_ech_keys_st()
|
|
4018
|
-
ssl_ech_keys_st(const ssl_ech_keys_st &) = delete;
|
|
4019
|
-
ssl_ech_keys_st &operator=(const ssl_ech_keys_st &) = delete;
|
|
4073
|
+
struct ssl_ech_keys_st : public bssl::RefCounted<ssl_ech_keys_st> {
|
|
4074
|
+
ssl_ech_keys_st() : RefCounted(CheckSubClass()) {}
|
|
4020
4075
|
|
|
4021
4076
|
bssl::GrowableArray<bssl::UniquePtr<bssl::ECHServerConfig>> configs;
|
|
4022
|
-
CRYPTO_refcount_t references = 1;
|
|
4023
4077
|
|
|
4024
4078
|
private:
|
|
4079
|
+
friend RefCounted;
|
|
4025
4080
|
~ssl_ech_keys_st() = default;
|
|
4026
|
-
friend OPENSSL_EXPORT void SSL_ECH_KEYS_free(SSL_ECH_KEYS *);
|
|
4027
4081
|
};
|
|
4028
4082
|
|
|
4029
4083
|
#endif // OPENSSL_HEADER_SSL_INTERNAL_H
|