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
|
@@ -550,8 +550,8 @@ OPENSSL_EXPORT int SSL_get_error(const SSL *ssl, int ret_code);
|
|
|
550
550
|
// a private key operation was unfinished. The caller may retry the operation
|
|
551
551
|
// when the private key operation is complete.
|
|
552
552
|
//
|
|
553
|
-
// See also |SSL_set_private_key_method| and
|
|
554
|
-
// |
|
|
553
|
+
// See also |SSL_set_private_key_method|, |SSL_CTX_set_private_key_method|, and
|
|
554
|
+
// |SSL_CREDENTIAL_set_private_key_method|.
|
|
555
555
|
#define SSL_ERROR_WANT_PRIVATE_KEY_OPERATION 13
|
|
556
556
|
|
|
557
557
|
// SSL_ERROR_PENDING_TICKET indicates that a ticket decryption is pending. The
|
|
@@ -841,6 +841,142 @@ OPENSSL_EXPORT void SSL_CTX_set0_buffer_pool(SSL_CTX *ctx,
|
|
|
841
841
|
CRYPTO_BUFFER_POOL *pool);
|
|
842
842
|
|
|
843
843
|
|
|
844
|
+
// Credentials.
|
|
845
|
+
//
|
|
846
|
+
// TLS endpoints may present authentication during the handshake, usually using
|
|
847
|
+
// X.509 certificates. This is typically required for servers and optional for
|
|
848
|
+
// clients. BoringSSL uses the |SSL_CREDENTIAL| object to abstract between
|
|
849
|
+
// different kinds of credentials, as well as configure automatic selection
|
|
850
|
+
// between multiple credentials. This may be used to select between ECDSA and
|
|
851
|
+
// RSA certificates.
|
|
852
|
+
//
|
|
853
|
+
// |SSL_CTX| and |SSL| objects maintain lists of credentials in preference
|
|
854
|
+
// order. During the handshake, BoringSSL will select the first usable
|
|
855
|
+
// credential from the list. Non-credential APIs, such as
|
|
856
|
+
// |SSL_CTX_use_certificate|, configure a "default credential", which is
|
|
857
|
+
// appended to this list if configured.
|
|
858
|
+
//
|
|
859
|
+
// When selecting credentials, BoringSSL considers the credential's type, its
|
|
860
|
+
// cryptographic capabilities, and capabilities advertised by the peer. This
|
|
861
|
+
// varies between TLS versions but includes:
|
|
862
|
+
//
|
|
863
|
+
// - Whether the peer supports the leaf certificate key
|
|
864
|
+
// - Whether there is a common signature algorithm that is compatible with the
|
|
865
|
+
// credential
|
|
866
|
+
// - Whether there is a common cipher suite that is compatible with the
|
|
867
|
+
// credential
|
|
868
|
+
//
|
|
869
|
+
// WARNING: In TLS 1.2 and below, there is no mechanism for servers to advertise
|
|
870
|
+
// supported ECDSA curves to the client. BoringSSL clients will assume the
|
|
871
|
+
// server accepts all ECDSA curves in client certificates.
|
|
872
|
+
//
|
|
873
|
+
// By default, BoringSSL does not check the following, though we may add APIs
|
|
874
|
+
// in the future to enable them on a per-credential basis.
|
|
875
|
+
//
|
|
876
|
+
// - Whether the peer supports the signature algorithms in the certificate chain
|
|
877
|
+
// - Whether the a server certificate is compatible with the server_name
|
|
878
|
+
// extension (SNI)
|
|
879
|
+
// - Whether the peer supports the certificate authority that issued the
|
|
880
|
+
// certificate
|
|
881
|
+
//
|
|
882
|
+
// Credentials may be configured before the handshake or dynamically in the
|
|
883
|
+
// early callback (see |SSL_CTX_set_select_certificate_cb|) and certificate
|
|
884
|
+
// callback (see |SSL_CTX_set_cert_cb|). These callbacks allow applications to
|
|
885
|
+
// use BoringSSL's built-in selection logic in tandem with custom logic. For
|
|
886
|
+
// example, a callback could evaluate application-specific SNI rules to filter
|
|
887
|
+
// down to an ECDSA and RSA credential, then configure both for BoringSSL to
|
|
888
|
+
// select between the two.
|
|
889
|
+
|
|
890
|
+
// SSL_CREDENTIAL_new_x509 returns a new, empty X.509 credential, or NULL on
|
|
891
|
+
// error. Callers should release the result with |SSL_CREDENTIAL_free| when
|
|
892
|
+
// done.
|
|
893
|
+
//
|
|
894
|
+
// Callers should configure a certificate chain and private key on the
|
|
895
|
+
// credential, along with other properties, then add it with
|
|
896
|
+
// |SSL_CTX_add1_credential|.
|
|
897
|
+
OPENSSL_EXPORT SSL_CREDENTIAL *SSL_CREDENTIAL_new_x509(void);
|
|
898
|
+
|
|
899
|
+
// SSL_CREDENTIAL_up_ref increments the reference count of |cred|.
|
|
900
|
+
OPENSSL_EXPORT void SSL_CREDENTIAL_up_ref(SSL_CREDENTIAL *cred);
|
|
901
|
+
|
|
902
|
+
// SSL_CREDENTIAL_free decrements the reference count of |cred|. If it reaches
|
|
903
|
+
// zero, all data referenced by |cred| and |cred| itself are released.
|
|
904
|
+
OPENSSL_EXPORT void SSL_CREDENTIAL_free(SSL_CREDENTIAL *cred);
|
|
905
|
+
|
|
906
|
+
// SSL_CREDENTIAL_set1_private_key sets |cred|'s private key to |cred|. It
|
|
907
|
+
// returns one on success and zero on failure.
|
|
908
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set1_private_key(SSL_CREDENTIAL *cred,
|
|
909
|
+
EVP_PKEY *key);
|
|
910
|
+
|
|
911
|
+
// SSL_CREDENTIAL_set1_signing_algorithm_prefs configures |cred| to use |prefs|
|
|
912
|
+
// as the preference list when signing with |cred|'s private key. It returns one
|
|
913
|
+
// on success and zero on error. |prefs| should not include the internal-only
|
|
914
|
+
// value |SSL_SIGN_RSA_PKCS1_MD5_SHA1|.
|
|
915
|
+
//
|
|
916
|
+
// It is an error to call this function with delegated credentials (see
|
|
917
|
+
// |SSL_CREDENTIAL_new_delegated|) because delegated credentials already
|
|
918
|
+
// constrain the key to a single algorithm.
|
|
919
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set1_signing_algorithm_prefs(
|
|
920
|
+
SSL_CREDENTIAL *cred, const uint16_t *prefs, size_t num_prefs);
|
|
921
|
+
|
|
922
|
+
// SSL_CREDENTIAL_set1_cert_chain sets |cred|'s certificate chain, starting from
|
|
923
|
+
// the leaf, to |num_cert|s certificates from |certs|. It returns one on success
|
|
924
|
+
// and zero on error.
|
|
925
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set1_cert_chain(SSL_CREDENTIAL *cred,
|
|
926
|
+
CRYPTO_BUFFER *const *certs,
|
|
927
|
+
size_t num_certs);
|
|
928
|
+
|
|
929
|
+
// SSL_CREDENTIAL_set1_ocsp_response sets |cred|'s stapled OCSP response to
|
|
930
|
+
// |ocsp|. It returns one on success and zero on error.
|
|
931
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set1_ocsp_response(SSL_CREDENTIAL *cred,
|
|
932
|
+
CRYPTO_BUFFER *ocsp);
|
|
933
|
+
|
|
934
|
+
// SSL_CREDENTIAL_set1_signed_cert_timestamp_list sets |cred|'s list of signed
|
|
935
|
+
// certificate timestamps |sct_list|. |sct_list| must contain one or more SCT
|
|
936
|
+
// structures serialised as a SignedCertificateTimestampList (see
|
|
937
|
+
// https://tools.ietf.org/html/rfc6962#section-3.3) – i.e. each SCT is prefixed
|
|
938
|
+
// by a big-endian, uint16 length and the concatenation of one or more such
|
|
939
|
+
// prefixed SCTs are themselves also prefixed by a uint16 length. It returns one
|
|
940
|
+
// on success and zero on error.
|
|
941
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set1_signed_cert_timestamp_list(
|
|
942
|
+
SSL_CREDENTIAL *cred, CRYPTO_BUFFER *sct_list);
|
|
943
|
+
|
|
944
|
+
// SSL_CTX_add1_credential appends |cred| to |ctx|'s credential list. It returns
|
|
945
|
+
// one on success and zero on error. The credential list is maintained in order
|
|
946
|
+
// of decreasing preference, so earlier calls are preferred over later calls.
|
|
947
|
+
//
|
|
948
|
+
// After calling this function, it is an error to modify |cred|. Doing so may
|
|
949
|
+
// result in inconsistent handshake behavior or race conditions.
|
|
950
|
+
OPENSSL_EXPORT int SSL_CTX_add1_credential(SSL_CTX *ctx, SSL_CREDENTIAL *cred);
|
|
951
|
+
|
|
952
|
+
// SSL_add1_credential appends |cred| to |ssl|'s credential list. It returns one
|
|
953
|
+
// on success and zero on error. The credential list is maintained in order of
|
|
954
|
+
// decreasing preference, so earlier calls are preferred over later calls.
|
|
955
|
+
//
|
|
956
|
+
// After calling this function, it is an error to modify |cred|. Doing so may
|
|
957
|
+
// result in inconsistent handshake behavior or race conditions.
|
|
958
|
+
OPENSSL_EXPORT int SSL_add1_credential(SSL *ssl, SSL_CREDENTIAL *cred);
|
|
959
|
+
|
|
960
|
+
// SSL_certs_clear removes all credentials configured on |ssl|. It also removes
|
|
961
|
+
// the certificate chain and private key on the default credential.
|
|
962
|
+
OPENSSL_EXPORT void SSL_certs_clear(SSL *ssl);
|
|
963
|
+
|
|
964
|
+
// SSL_get0_selected_credential returns the credential in use in the current
|
|
965
|
+
// handshake on |ssl|. If there is current handshake on |ssl| or if the
|
|
966
|
+
// handshake has not progressed to this point, it returns NULL.
|
|
967
|
+
//
|
|
968
|
+
// This function is intended for use with |SSL_CREDENTIAL_get_ex_data|. It may
|
|
969
|
+
// be called from handshake callbacks, such as those in
|
|
970
|
+
// |SSL_PRIVATE_KEY_METHOD|, to trigger credential-specific behavior.
|
|
971
|
+
//
|
|
972
|
+
// In applications that use the older APIs, such as |SSL_use_certificate|, this
|
|
973
|
+
// function may return an internal |SSL_CREDENTIAL| object. This internal object
|
|
974
|
+
// will have no ex_data installed. To avoid this, it is recommended that callers
|
|
975
|
+
// moving to |SSL_CREDENTIAL| use the new APIs consistently.
|
|
976
|
+
OPENSSL_EXPORT const SSL_CREDENTIAL *SSL_get0_selected_credential(
|
|
977
|
+
const SSL *ssl);
|
|
978
|
+
|
|
979
|
+
|
|
844
980
|
// Configuring certificates and private keys.
|
|
845
981
|
//
|
|
846
982
|
// These functions configure the connection's leaf certificate, private key, and
|
|
@@ -848,23 +984,32 @@ OPENSSL_EXPORT void SSL_CTX_set0_buffer_pool(SSL_CTX *ctx,
|
|
|
848
984
|
// the wire) but does not include the leaf. Both client and server certificates
|
|
849
985
|
// use these functions.
|
|
850
986
|
//
|
|
851
|
-
//
|
|
852
|
-
//
|
|
987
|
+
// Prefer to configure the certificate before the private key. If configured in
|
|
988
|
+
// the other order, inconsistent private keys will be silently dropped, rather
|
|
989
|
+
// than return an error. Additionally, overwriting a previously-configured
|
|
990
|
+
// certificate and key pair only works if the certificate is configured first.
|
|
991
|
+
//
|
|
992
|
+
// Each of these functions configures the default credential. To select between
|
|
993
|
+
// multiple certificates, see |SSL_CREDENTIAL_new_x509| and related APIs.
|
|
853
994
|
|
|
854
995
|
// SSL_CTX_use_certificate sets |ctx|'s leaf certificate to |x509|. It returns
|
|
855
|
-
// one on success and zero on failure.
|
|
996
|
+
// one on success and zero on failure. If |ctx| has a private key which is
|
|
997
|
+
// inconsistent with |x509|, the private key is silently dropped.
|
|
856
998
|
OPENSSL_EXPORT int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x509);
|
|
857
999
|
|
|
858
1000
|
// SSL_use_certificate sets |ssl|'s leaf certificate to |x509|. It returns one
|
|
859
|
-
// on success and zero on failure.
|
|
1001
|
+
// on success and zero on failure. If |ssl| has a private key which is
|
|
1002
|
+
// inconsistent with |x509|, the private key is silently dropped.
|
|
860
1003
|
OPENSSL_EXPORT int SSL_use_certificate(SSL *ssl, X509 *x509);
|
|
861
1004
|
|
|
862
1005
|
// SSL_CTX_use_PrivateKey sets |ctx|'s private key to |pkey|. It returns one on
|
|
863
|
-
// success and zero on failure.
|
|
1006
|
+
// success and zero on failure. If |ctx| had a private key or
|
|
1007
|
+
// |SSL_PRIVATE_KEY_METHOD| previously configured, it is replaced.
|
|
864
1008
|
OPENSSL_EXPORT int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
|
|
865
1009
|
|
|
866
1010
|
// SSL_use_PrivateKey sets |ssl|'s private key to |pkey|. It returns one on
|
|
867
|
-
// success and zero on failure.
|
|
1011
|
+
// success and zero on failure. If |ssl| had a private key or
|
|
1012
|
+
// |SSL_PRIVATE_KEY_METHOD| previously configured, it is replaced.
|
|
868
1013
|
OPENSSL_EXPORT int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
|
|
869
1014
|
|
|
870
1015
|
// SSL_CTX_set0_chain sets |ctx|'s certificate chain, excluding the leaf, to
|
|
@@ -986,18 +1131,6 @@ OPENSSL_EXPORT size_t
|
|
|
986
1131
|
SSL_get0_peer_delegation_algorithms(const SSL *ssl,
|
|
987
1132
|
const uint16_t **out_sigalgs);
|
|
988
1133
|
|
|
989
|
-
// SSL_certs_clear resets the private key, leaf certificate, and certificate
|
|
990
|
-
// chain of |ssl|.
|
|
991
|
-
OPENSSL_EXPORT void SSL_certs_clear(SSL *ssl);
|
|
992
|
-
|
|
993
|
-
// SSL_CTX_check_private_key returns one if the certificate and private key
|
|
994
|
-
// configured in |ctx| are consistent and zero otherwise.
|
|
995
|
-
OPENSSL_EXPORT int SSL_CTX_check_private_key(const SSL_CTX *ctx);
|
|
996
|
-
|
|
997
|
-
// SSL_check_private_key returns one if the certificate and private key
|
|
998
|
-
// configured in |ssl| are consistent and zero otherwise.
|
|
999
|
-
OPENSSL_EXPORT int SSL_check_private_key(const SSL *ssl);
|
|
1000
|
-
|
|
1001
1134
|
// SSL_CTX_get0_certificate returns |ctx|'s leaf certificate.
|
|
1002
1135
|
OPENSSL_EXPORT X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
|
|
1003
1136
|
|
|
@@ -1072,6 +1205,11 @@ OPENSSL_EXPORT int SSL_set_ocsp_response(SSL *ssl,
|
|
|
1072
1205
|
#define SSL_SIGN_RSA_PSS_RSAE_SHA512 0x0806
|
|
1073
1206
|
#define SSL_SIGN_ED25519 0x0807
|
|
1074
1207
|
|
|
1208
|
+
// SSL_SIGN_RSA_PKCS1_SHA256_LEGACY is a backport of RSASSA-PKCS1-v1_5 with
|
|
1209
|
+
// SHA-256 to TLS 1.3. It is disabled by default and only defined for client
|
|
1210
|
+
// certificates.
|
|
1211
|
+
#define SSL_SIGN_RSA_PKCS1_SHA256_LEGACY 0x0420
|
|
1212
|
+
|
|
1075
1213
|
// SSL_SIGN_RSA_PKCS1_MD5_SHA1 is an internal signature algorithm used to
|
|
1076
1214
|
// specify raw RSASSA-PKCS1-v1_5 with an MD5/SHA-1 concatenation, as used in TLS
|
|
1077
1215
|
// before TLS 1.2.
|
|
@@ -1229,6 +1367,11 @@ OPENSSL_EXPORT int SSL_use_PrivateKey_file(SSL *ssl, const char *file,
|
|
|
1229
1367
|
// reads the contents of |file| as a PEM-encoded leaf certificate followed
|
|
1230
1368
|
// optionally by the certificate chain to send to the peer. It returns one on
|
|
1231
1369
|
// success and zero on failure.
|
|
1370
|
+
//
|
|
1371
|
+
// WARNING: If the input contains "TRUSTED CERTIFICATE" PEM blocks, this
|
|
1372
|
+
// function parses auxiliary properties as in |d2i_X509_AUX|. Passing untrusted
|
|
1373
|
+
// input to this function allows an attacker to influence those properties. See
|
|
1374
|
+
// |d2i_X509_AUX| for details.
|
|
1232
1375
|
OPENSSL_EXPORT int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx,
|
|
1233
1376
|
const char *file);
|
|
1234
1377
|
|
|
@@ -1264,11 +1407,6 @@ enum ssl_private_key_result_t BORINGSSL_ENUM_INT {
|
|
|
1264
1407
|
// key hooks. This is used to off-load signing operations to a custom,
|
|
1265
1408
|
// potentially asynchronous, backend. Metadata about the key such as the type
|
|
1266
1409
|
// and size are parsed out of the certificate.
|
|
1267
|
-
//
|
|
1268
|
-
// Callers that use this structure should additionally call
|
|
1269
|
-
// |SSL_set_signing_algorithm_prefs| or |SSL_CTX_set_signing_algorithm_prefs|
|
|
1270
|
-
// with the private key's capabilities. This ensures BoringSSL will select a
|
|
1271
|
-
// suitable signature algorithm for the private key.
|
|
1272
1410
|
struct ssl_private_key_method_st {
|
|
1273
1411
|
// sign signs the message |in| in using the specified signature algorithm. On
|
|
1274
1412
|
// success, it returns |ssl_private_key_success| and writes at most |max_out|
|
|
@@ -1321,14 +1459,39 @@ struct ssl_private_key_method_st {
|
|
|
1321
1459
|
|
|
1322
1460
|
// SSL_set_private_key_method configures a custom private key on |ssl|.
|
|
1323
1461
|
// |key_method| must remain valid for the lifetime of |ssl|.
|
|
1462
|
+
//
|
|
1463
|
+
// If using an RSA or ECDSA key, callers should configure signing capabilities
|
|
1464
|
+
// with |SSL_set_signing_algorithm_prefs|. Otherwise, BoringSSL may select a
|
|
1465
|
+
// signature algorithm that |key_method| does not support.
|
|
1324
1466
|
OPENSSL_EXPORT void SSL_set_private_key_method(
|
|
1325
1467
|
SSL *ssl, const SSL_PRIVATE_KEY_METHOD *key_method);
|
|
1326
1468
|
|
|
1327
1469
|
// SSL_CTX_set_private_key_method configures a custom private key on |ctx|.
|
|
1328
1470
|
// |key_method| must remain valid for the lifetime of |ctx|.
|
|
1471
|
+
//
|
|
1472
|
+
// If using an RSA or ECDSA key, callers should configure signing capabilities
|
|
1473
|
+
// with |SSL_CTX_set_signing_algorithm_prefs|. Otherwise, BoringSSL may select a
|
|
1474
|
+
// signature algorithm that |key_method| does not support.
|
|
1329
1475
|
OPENSSL_EXPORT void SSL_CTX_set_private_key_method(
|
|
1330
1476
|
SSL_CTX *ctx, const SSL_PRIVATE_KEY_METHOD *key_method);
|
|
1331
1477
|
|
|
1478
|
+
// SSL_CREDENTIAL_set_private_key_method configures a custom private key on
|
|
1479
|
+
// |cred|. |key_method| must remain valid for the lifetime of |cred|. It returns
|
|
1480
|
+
// one on success and zero if |cred| does not use private keys.
|
|
1481
|
+
//
|
|
1482
|
+
// If using an RSA or ECDSA key, callers should configure signing capabilities
|
|
1483
|
+
// with |SSL_CREDENTIAL_set1_signing_algorithm_prefs|. Otherwise, BoringSSL may
|
|
1484
|
+
// select a signature algorithm that |key_method| does not support. This is not
|
|
1485
|
+
// necessary for delegated credentials (see |SSL_CREDENTIAL_new_delegated|)
|
|
1486
|
+
// because delegated credentials only support a single signature algorithm.
|
|
1487
|
+
//
|
|
1488
|
+
// Functions in |key_method| will be passed an |SSL| object, but not |cred|
|
|
1489
|
+
// directly. Use |SSL_get0_selected_credential| to determine the selected
|
|
1490
|
+
// credential. From there, |SSL_CREDENTIAL_get_ex_data| can be used to look up
|
|
1491
|
+
// credential-specific state, such as a handle to the private key.
|
|
1492
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set_private_key_method(
|
|
1493
|
+
SSL_CREDENTIAL *cred, const SSL_PRIVATE_KEY_METHOD *key_method);
|
|
1494
|
+
|
|
1332
1495
|
// SSL_can_release_private_key returns one if |ssl| will no longer call into the
|
|
1333
1496
|
// private key and zero otherwise. If the function returns one, the caller can
|
|
1334
1497
|
// release state associated with the private key.
|
|
@@ -2674,19 +2837,17 @@ OPENSSL_EXPORT void SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *store);
|
|
|
2674
2837
|
// SSL_CTX_get_cert_store returns |ctx|'s certificate store.
|
|
2675
2838
|
OPENSSL_EXPORT X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx);
|
|
2676
2839
|
|
|
2677
|
-
// SSL_CTX_set_default_verify_paths
|
|
2678
|
-
//
|
|
2840
|
+
// SSL_CTX_set_default_verify_paths calls |X509_STORE_set_default_paths| on
|
|
2841
|
+
// |ctx|'s store. See that function for details.
|
|
2842
|
+
//
|
|
2843
|
+
// Using this function is not recommended. In OpenSSL, these defaults are
|
|
2844
|
+
// determined by OpenSSL's install prefix. There is no corresponding concept for
|
|
2845
|
+
// BoringSSL. Future versions of BoringSSL may change or remove this
|
|
2846
|
+
// functionality.
|
|
2679
2847
|
OPENSSL_EXPORT int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
|
|
2680
2848
|
|
|
2681
|
-
// SSL_CTX_load_verify_locations
|
|
2682
|
-
//
|
|
2683
|
-
// it is opened and PEM-encoded CA certificates are read. If |ca_dir| is passed,
|
|
2684
|
-
// it is treated as a directory in OpenSSL's hashed directory format. It returns
|
|
2685
|
-
// one on success and zero on failure.
|
|
2686
|
-
//
|
|
2687
|
-
// See
|
|
2688
|
-
// https://www.openssl.org/docs/man1.1.0/man3/SSL_CTX_load_verify_locations.html
|
|
2689
|
-
// for documentation on the directory format.
|
|
2849
|
+
// SSL_CTX_load_verify_locations calls |X509_STORE_load_locations| on |ctx|'s
|
|
2850
|
+
// store. See that function for details.
|
|
2690
2851
|
OPENSSL_EXPORT int SSL_CTX_load_verify_locations(SSL_CTX *ctx,
|
|
2691
2852
|
const char *ca_file,
|
|
2692
2853
|
const char *ca_dir);
|
|
@@ -2959,7 +3120,8 @@ OPENSSL_EXPORT int SSL_set_alpn_protos(SSL *ssl, const uint8_t *protos,
|
|
|
2959
3120
|
|
|
2960
3121
|
// SSL_CTX_set_alpn_select_cb sets a callback function on |ctx| that is called
|
|
2961
3122
|
// during ClientHello processing in order to select an ALPN protocol from the
|
|
2962
|
-
// client's list of offered protocols.
|
|
3123
|
+
// client's list of offered protocols. |SSL_select_next_proto| is an optional
|
|
3124
|
+
// utility function which may be useful in implementing this callback.
|
|
2963
3125
|
//
|
|
2964
3126
|
// The callback is passed a wire-format (i.e. a series of non-empty, 8-bit
|
|
2965
3127
|
// length-prefixed strings) ALPN protocol list in |in|. To select a protocol,
|
|
@@ -3109,30 +3271,50 @@ OPENSSL_EXPORT int SSL_CTX_add_cert_compression_alg(
|
|
|
3109
3271
|
// and deprecated in favor of it.
|
|
3110
3272
|
|
|
3111
3273
|
// SSL_CTX_set_next_protos_advertised_cb sets a callback that is called when a
|
|
3112
|
-
// TLS server needs a list of supported protocols for Next Protocol
|
|
3113
|
-
//
|
|
3114
|
-
//
|
|
3115
|
-
//
|
|
3116
|
-
//
|
|
3117
|
-
//
|
|
3118
|
-
//
|
|
3119
|
-
//
|
|
3274
|
+
// TLS server needs a list of supported protocols for Next Protocol Negotiation.
|
|
3275
|
+
//
|
|
3276
|
+
// If the callback wishes to advertise NPN to the client, it should return
|
|
3277
|
+
// |SSL_TLSEXT_ERR_OK| and then set |*out| and |*out_len| to describe to a
|
|
3278
|
+
// buffer containing a (possibly empty) list of supported protocols in wire
|
|
3279
|
+
// format. That is, each protocol is prefixed with a 1-byte length, then
|
|
3280
|
+
// concatenated. From there, the client will select a protocol, possibly one not
|
|
3281
|
+
// on the server's list. The caller can use |SSL_get0_next_proto_negotiated|
|
|
3282
|
+
// after the handshake completes to query the final protocol.
|
|
3283
|
+
//
|
|
3284
|
+
// The returned buffer must remain valid and unmodified for at least the
|
|
3285
|
+
// duration of the |SSL| operation (e.g. |SSL_do_handshake|) that triggered the
|
|
3286
|
+
// callback.
|
|
3287
|
+
//
|
|
3288
|
+
// If the caller wishes not to advertise NPN, it should return
|
|
3289
|
+
// |SSL_TLSEXT_ERR_NOACK|. No NPN extension will be included in the ServerHello,
|
|
3290
|
+
// and the TLS server will behave as if it does not implement NPN.
|
|
3120
3291
|
OPENSSL_EXPORT void SSL_CTX_set_next_protos_advertised_cb(
|
|
3121
3292
|
SSL_CTX *ctx,
|
|
3122
3293
|
int (*cb)(SSL *ssl, const uint8_t **out, unsigned *out_len, void *arg),
|
|
3123
3294
|
void *arg);
|
|
3124
3295
|
|
|
3125
3296
|
// SSL_CTX_set_next_proto_select_cb sets a callback that is called when a client
|
|
3126
|
-
// needs to select a protocol from the server's provided list
|
|
3127
|
-
//
|
|
3128
|
-
//
|
|
3129
|
-
//
|
|
3130
|
-
//
|
|
3131
|
-
//
|
|
3132
|
-
//
|
|
3133
|
-
//
|
|
3134
|
-
//
|
|
3135
|
-
//
|
|
3297
|
+
// needs to select a protocol from the server's provided list, passed in wire
|
|
3298
|
+
// format in |in_len| bytes from |in|. The callback can assume that |in| is
|
|
3299
|
+
// syntactically valid. |SSL_select_next_proto| is an optional utility function
|
|
3300
|
+
// which may be useful in implementing this callback.
|
|
3301
|
+
//
|
|
3302
|
+
// On success, the callback should return |SSL_TLSEXT_ERR_OK| and set |*out| and
|
|
3303
|
+
// |*out_len| to describe a buffer containing the selected protocol, or an
|
|
3304
|
+
// empty buffer to select no protocol. The returned buffer may point within
|
|
3305
|
+
// |in|, or it may point to some other buffer that remains valid and unmodified
|
|
3306
|
+
// for at least the duration of the |SSL| operation (e.g. |SSL_do_handshake|)
|
|
3307
|
+
// that triggered the callback.
|
|
3308
|
+
//
|
|
3309
|
+
// Returning any other value indicates a fatal error and will terminate the TLS
|
|
3310
|
+
// connection. To proceed without selecting a protocol, the callback must return
|
|
3311
|
+
// |SSL_TLSEXT_ERR_OK| and set |*out| and |*out_len| to an empty buffer. (E.g.
|
|
3312
|
+
// NULL and zero, respectively.)
|
|
3313
|
+
//
|
|
3314
|
+
// Configuring this callback enables NPN on a client. Although the callback can
|
|
3315
|
+
// then decline to negotiate a protocol, merely configuring the callback causes
|
|
3316
|
+
// the client to offer NPN in the ClientHello. Callers thus should not configure
|
|
3317
|
+
// this callback in TLS client contexts that are not intended to use NPN.
|
|
3136
3318
|
OPENSSL_EXPORT void SSL_CTX_set_next_proto_select_cb(
|
|
3137
3319
|
SSL_CTX *ctx, int (*cb)(SSL *ssl, uint8_t **out, uint8_t *out_len,
|
|
3138
3320
|
const uint8_t *in, unsigned in_len, void *arg),
|
|
@@ -3140,7 +3322,7 @@ OPENSSL_EXPORT void SSL_CTX_set_next_proto_select_cb(
|
|
|
3140
3322
|
|
|
3141
3323
|
// SSL_get0_next_proto_negotiated sets |*out_data| and |*out_len| to point to
|
|
3142
3324
|
// the client's requested protocol for this connection. If the client didn't
|
|
3143
|
-
// request any protocol, then |*
|
|
3325
|
+
// request any protocol, then |*out_len| is set to zero.
|
|
3144
3326
|
//
|
|
3145
3327
|
// Note that the client can request any protocol it chooses. The value returned
|
|
3146
3328
|
// from this function need not be a member of the list of supported protocols
|
|
@@ -3149,21 +3331,45 @@ OPENSSL_EXPORT void SSL_get0_next_proto_negotiated(const SSL *ssl,
|
|
|
3149
3331
|
const uint8_t **out_data,
|
|
3150
3332
|
unsigned *out_len);
|
|
3151
3333
|
|
|
3152
|
-
// SSL_select_next_proto implements the standard protocol selection
|
|
3153
|
-
// expected that this function is called from
|
|
3334
|
+
// SSL_select_next_proto implements the standard protocol selection for either
|
|
3335
|
+
// ALPN servers or NPN clients. It is expected that this function is called from
|
|
3336
|
+
// the callback set by |SSL_CTX_set_alpn_select_cb| or
|
|
3154
3337
|
// |SSL_CTX_set_next_proto_select_cb|.
|
|
3155
3338
|
//
|
|
3156
|
-
// |peer| and |supported|
|
|
3157
|
-
//
|
|
3158
|
-
//
|
|
3159
|
-
//
|
|
3160
|
-
// non-empty.
|
|
3161
|
-
//
|
|
3162
|
-
// This function finds the first protocol in |peer| which is also in
|
|
3163
|
-
// |supported|. If one was found, it sets |*out| and |*out_len| to point to it
|
|
3164
|
-
// and returns |OPENSSL_NPN_NEGOTIATED|. Otherwise, it returns
|
|
3339
|
+
// |peer| and |supported| contain the peer and locally-configured protocols,
|
|
3340
|
+
// respectively. This function finds the first protocol in |peer| which is also
|
|
3341
|
+
// in |supported|. If one was found, it sets |*out| and |*out_len| to point to
|
|
3342
|
+
// it and returns |OPENSSL_NPN_NEGOTIATED|. Otherwise, it returns
|
|
3165
3343
|
// |OPENSSL_NPN_NO_OVERLAP| and sets |*out| and |*out_len| to the first
|
|
3166
3344
|
// supported protocol.
|
|
3345
|
+
//
|
|
3346
|
+
// In ALPN, the server should only select protocols among those that the client
|
|
3347
|
+
// offered. Thus, if this function returns |OPENSSL_NPN_NO_OVERLAP|, the caller
|
|
3348
|
+
// should ignore |*out| and return |SSL_TLSEXT_ERR_ALERT_FATAL| from
|
|
3349
|
+
// |SSL_CTX_set_alpn_select_cb|'s callback to indicate there was no match.
|
|
3350
|
+
//
|
|
3351
|
+
// In NPN, the client may either select one of the server's protocols, or an
|
|
3352
|
+
// "opportunistic" protocol as described in Section 6 of
|
|
3353
|
+
// draft-agl-tls-nextprotoneg-03. When this function returns
|
|
3354
|
+
// |OPENSSL_NPN_NO_OVERLAP|, |*out| implicitly selects the first supported
|
|
3355
|
+
// protocol for use as the opportunistic protocol. The caller may use it,
|
|
3356
|
+
// ignore it and select a different opportunistic protocol, or ignore it and
|
|
3357
|
+
// select no protocol (empty string).
|
|
3358
|
+
//
|
|
3359
|
+
// |peer| and |supported| must be vectors of 8-bit, length-prefixed byte
|
|
3360
|
+
// strings. The length byte itself is not included in the length. A byte string
|
|
3361
|
+
// of length 0 is invalid. No byte string may be truncated. |supported| must be
|
|
3362
|
+
// non-empty; a caller that supports no ALPN/NPN protocols should skip
|
|
3363
|
+
// negotiating the extension, rather than calling this function. If any of these
|
|
3364
|
+
// preconditions do not hold, this function will return |OPENSSL_NPN_NO_OVERLAP|
|
|
3365
|
+
// and set |*out| and |*out_len| to an empty buffer for robustness, but callers
|
|
3366
|
+
// are not recommended to rely on this. An empty buffer is not a valid output
|
|
3367
|
+
// for |SSL_CTX_set_alpn_select_cb|'s callback.
|
|
3368
|
+
//
|
|
3369
|
+
// WARNING: |*out| and |*out_len| may alias either |peer| or |supported| and may
|
|
3370
|
+
// not be used after one of those buffers is modified or released. Additionally,
|
|
3371
|
+
// this function is not const-correct for compatibility reasons. Although |*out|
|
|
3372
|
+
// is a non-const pointer, callers may not modify the buffer though |*out|.
|
|
3167
3373
|
OPENSSL_EXPORT int SSL_select_next_proto(uint8_t **out, uint8_t *out_len,
|
|
3168
3374
|
const uint8_t *peer, unsigned peer_len,
|
|
3169
3375
|
const uint8_t *supported,
|
|
@@ -3335,41 +3541,34 @@ OPENSSL_EXPORT const char *SSL_get_psk_identity(const SSL *ssl);
|
|
|
3335
3541
|
|
|
3336
3542
|
// Delegated credentials.
|
|
3337
3543
|
//
|
|
3338
|
-
//
|
|
3339
|
-
//
|
|
3340
|
-
// draft-ietf-tls-subcerts is a proposed extension for TLS 1.3 and above that
|
|
3341
|
-
// allows an end point to use its certificate to delegate credentials for
|
|
3342
|
-
// authentication. If the peer indicates support for this extension, then this
|
|
3343
|
-
// host may use a delegated credential to sign the handshake. Once issued,
|
|
3544
|
+
// Delegated credentials (RFC 9345) allow a TLS 1.3 endpoint to use its
|
|
3545
|
+
// certificate to issue new credentials for authentication. Once issued,
|
|
3344
3546
|
// credentials can't be revoked. In order to mitigate the damage in case the
|
|
3345
3547
|
// credential secret key is compromised, the credential is only valid for a
|
|
3346
|
-
// short time (days, hours, or even minutes).
|
|
3347
|
-
// of the protocol spec.
|
|
3548
|
+
// short time (days, hours, or even minutes).
|
|
3348
3549
|
//
|
|
3349
|
-
//
|
|
3350
|
-
//
|
|
3351
|
-
//
|
|
3352
|
-
//
|
|
3353
|
-
//
|
|
3354
|
-
//
|
|
3550
|
+
// Currently only the authenticating side, as a server, is implemented. To
|
|
3551
|
+
// authenticate with delegated credentials, construct an |SSL_CREDENTIAL| with
|
|
3552
|
+
// |SSL_CREDENTIAL_new_delegated| and add it to the credential list. See also
|
|
3553
|
+
// |SSL_CTX_add1_credential|. Callers may configure a mix of delegated
|
|
3554
|
+
// credentials and X.509 credentials on the same |SSL| or |SSL_CTX| to support a
|
|
3555
|
+
// range of clients.
|
|
3355
3556
|
|
|
3356
|
-
//
|
|
3357
|
-
//
|
|
3358
|
-
//
|
|
3359
|
-
// Currently (as of draft-03), only servers may configure a DC to use in the
|
|
3360
|
-
// handshake.
|
|
3557
|
+
// SSL_CREDENTIAL_new_delegated returns a new, empty delegated credential, or
|
|
3558
|
+
// NULL on error. Callers should release the result with |SSL_CREDENTIAL_free|
|
|
3559
|
+
// when done.
|
|
3361
3560
|
//
|
|
3362
|
-
//
|
|
3363
|
-
//
|
|
3364
|
-
//
|
|
3365
|
-
|
|
3366
|
-
OPENSSL_EXPORT int SSL_set1_delegated_credential(
|
|
3367
|
-
SSL *ssl, CRYPTO_BUFFER *dc, EVP_PKEY *pkey,
|
|
3368
|
-
const SSL_PRIVATE_KEY_METHOD *key_method);
|
|
3561
|
+
// Callers should configure a delegated credential, certificate chain and
|
|
3562
|
+
// private key on the credential, along with other properties, then add it with
|
|
3563
|
+
// |SSL_CTX_add1_credential|.
|
|
3564
|
+
OPENSSL_EXPORT SSL_CREDENTIAL *SSL_CREDENTIAL_new_delegated(void);
|
|
3369
3565
|
|
|
3370
|
-
//
|
|
3371
|
-
// and zero
|
|
3372
|
-
|
|
3566
|
+
// SSL_CREDENTIAL_set1_delegated_credential sets |cred|'s delegated credentials
|
|
3567
|
+
// structure to |dc|. It returns one on success and zero on error, including if
|
|
3568
|
+
// |dc| is malformed. This should be a DelegatedCredential structure, signed by
|
|
3569
|
+
// the end-entity certificate, as described in RFC 9345.
|
|
3570
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set1_delegated_credential(
|
|
3571
|
+
SSL_CREDENTIAL *cred, CRYPTO_BUFFER *dc);
|
|
3373
3572
|
|
|
3374
3573
|
|
|
3375
3574
|
// QUIC integration.
|
|
@@ -3838,7 +4037,7 @@ OPENSSL_EXPORT void SSL_get0_ech_retry_configs(
|
|
|
3838
4037
|
// to the size of the buffer. The caller must call |OPENSSL_free| on |*out| to
|
|
3839
4038
|
// release the memory. On failure, it returns zero.
|
|
3840
4039
|
//
|
|
3841
|
-
// The |config_id| field is a single byte
|
|
4040
|
+
// The |config_id| field is a single byte identifier for the ECHConfig. Reusing
|
|
3842
4041
|
// config IDs is allowed, but if multiple ECHConfigs with the same config ID are
|
|
3843
4042
|
// active at a time, server load may increase. See
|
|
3844
4043
|
// |SSL_ECH_KEYS_has_duplicate_config_id|.
|
|
@@ -4034,6 +4233,15 @@ OPENSSL_EXPORT int SSL_CTX_get_ex_new_index(long argl, void *argp,
|
|
|
4034
4233
|
CRYPTO_EX_dup *dup_unused,
|
|
4035
4234
|
CRYPTO_EX_free *free_func);
|
|
4036
4235
|
|
|
4236
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_set_ex_data(SSL_CREDENTIAL *cred, int idx,
|
|
4237
|
+
void *data);
|
|
4238
|
+
OPENSSL_EXPORT void *SSL_CREDENTIAL_get_ex_data(const SSL_CREDENTIAL *cred,
|
|
4239
|
+
int idx);
|
|
4240
|
+
OPENSSL_EXPORT int SSL_CREDENTIAL_get_ex_new_index(long argl, void *argp,
|
|
4241
|
+
CRYPTO_EX_unused *unused,
|
|
4242
|
+
CRYPTO_EX_dup *dup_unused,
|
|
4243
|
+
CRYPTO_EX_free *free_func);
|
|
4244
|
+
|
|
4037
4245
|
|
|
4038
4246
|
// Low-level record-layer state.
|
|
4039
4247
|
|
|
@@ -4217,9 +4425,18 @@ OPENSSL_EXPORT void SSL_set_msg_callback_arg(SSL *ssl, void *arg);
|
|
|
4217
4425
|
// access to the log.
|
|
4218
4426
|
//
|
|
4219
4427
|
// The format is described in
|
|
4220
|
-
// https://
|
|
4221
|
-
|
|
4222
|
-
|
|
4428
|
+
// https://www.ietf.org/archive/id/draft-ietf-tls-keylogfile-01.html
|
|
4429
|
+
//
|
|
4430
|
+
// WARNING: The data in |line| allows an attacker to break security properties
|
|
4431
|
+
// of the TLS protocol, including confidentiality, integrity, and forward
|
|
4432
|
+
// secrecy. This impacts both the current connection, and, in TLS 1.2, future
|
|
4433
|
+
// connections that resume a session from it. Both direct access to the data and
|
|
4434
|
+
// side channel leaks from application code are possible attack vectors. This
|
|
4435
|
+
// callback is intended for debugging and should not be used in production
|
|
4436
|
+
// connections.
|
|
4437
|
+
OPENSSL_EXPORT void SSL_CTX_set_keylog_callback(SSL_CTX *ctx,
|
|
4438
|
+
void (*cb)(const SSL *ssl,
|
|
4439
|
+
const char *line));
|
|
4223
4440
|
|
|
4224
4441
|
// SSL_CTX_get_keylog_callback returns the callback configured by
|
|
4225
4442
|
// |SSL_CTX_set_keylog_callback|.
|
|
@@ -4626,10 +4843,28 @@ OPENSSL_EXPORT int SSL_used_hello_retry_request(const SSL *ssl);
|
|
|
4626
4843
|
// https://bugs.openjdk.java.net/browse/JDK-8213202
|
|
4627
4844
|
OPENSSL_EXPORT void SSL_set_jdk11_workaround(SSL *ssl, int enable);
|
|
4628
4845
|
|
|
4846
|
+
// SSL_set_check_client_certificate_type configures whether the client, in
|
|
4847
|
+
// TLS 1.2 and below, will check its certificate against the server's requested
|
|
4848
|
+
// certificate types.
|
|
4849
|
+
//
|
|
4850
|
+
// By default, this option is enabled. If disabled, certificate selection within
|
|
4851
|
+
// the library may not function correctly. This flag is provided temporarily in
|
|
4852
|
+
// case of compatibility issues. It will be removed sometime after June 2024.
|
|
4853
|
+
OPENSSL_EXPORT void SSL_set_check_client_certificate_type(SSL *ssl, int enable);
|
|
4854
|
+
|
|
4855
|
+
// SSL_set_check_ecdsa_curve configures whether the server, in TLS 1.2 and
|
|
4856
|
+
// below, will check its certificate against the client's supported ECDSA
|
|
4857
|
+
// curves.
|
|
4858
|
+
//
|
|
4859
|
+
// By default, this option is enabled. If disabled, certificate selection within
|
|
4860
|
+
// the library may not function correctly. This flag is provided temporarily in
|
|
4861
|
+
// case of compatibility issues. It will be removed sometime after June 2024.
|
|
4862
|
+
OPENSSL_EXPORT void SSL_set_check_ecdsa_curve(SSL *ssl, int enable);
|
|
4863
|
+
|
|
4629
4864
|
|
|
4630
4865
|
// Deprecated functions.
|
|
4631
4866
|
|
|
4632
|
-
// SSL_library_init
|
|
4867
|
+
// SSL_library_init returns one.
|
|
4633
4868
|
OPENSSL_EXPORT int SSL_library_init(void);
|
|
4634
4869
|
|
|
4635
4870
|
// SSL_CIPHER_description writes a description of |cipher| into |buf| and
|
|
@@ -5192,7 +5427,7 @@ OPENSSL_EXPORT SSL_SESSION *SSL_get1_session(SSL *ssl);
|
|
|
5192
5427
|
#define OPENSSL_INIT_LOAD_SSL_STRINGS 0
|
|
5193
5428
|
#define OPENSSL_INIT_SSL_DEFAULT 0
|
|
5194
5429
|
|
|
5195
|
-
// OPENSSL_init_ssl
|
|
5430
|
+
// OPENSSL_init_ssl returns one.
|
|
5196
5431
|
OPENSSL_EXPORT int OPENSSL_init_ssl(uint64_t opts,
|
|
5197
5432
|
const OPENSSL_INIT_SETTINGS *settings);
|
|
5198
5433
|
|
|
@@ -5315,6 +5550,25 @@ OPENSSL_EXPORT int SSL_set1_curves_list(SSL *ssl, const char *curves);
|
|
|
5315
5550
|
// returns this value, but we define this constant for compatibility.
|
|
5316
5551
|
#define TLSEXT_nid_unknown 0x1000000
|
|
5317
5552
|
|
|
5553
|
+
// SSL_CTX_check_private_key returns one if |ctx| has both a certificate and
|
|
5554
|
+
// private key, and zero otherwise.
|
|
5555
|
+
//
|
|
5556
|
+
// This function does not check consistency because the library checks when the
|
|
5557
|
+
// certificate and key are individually configured. However, if the private key
|
|
5558
|
+
// is configured before the certificate, inconsistent private keys are silently
|
|
5559
|
+
// dropped. Some callers are inadvertently relying on this function to detect
|
|
5560
|
+
// when this happens.
|
|
5561
|
+
//
|
|
5562
|
+
// Instead, callers should configure the certificate first, then the private
|
|
5563
|
+
// key, checking for errors in each. This function is then unnecessary.
|
|
5564
|
+
OPENSSL_EXPORT int SSL_CTX_check_private_key(const SSL_CTX *ctx);
|
|
5565
|
+
|
|
5566
|
+
// SSL_check_private_key returns one if |ssl| has both a certificate and private
|
|
5567
|
+
// key, and zero otherwise.
|
|
5568
|
+
//
|
|
5569
|
+
// See discussion in |SSL_CTX_check_private_key|.
|
|
5570
|
+
OPENSSL_EXPORT int SSL_check_private_key(const SSL *ssl);
|
|
5571
|
+
|
|
5318
5572
|
|
|
5319
5573
|
// Compliance policy configurations
|
|
5320
5574
|
//
|
|
@@ -5543,6 +5797,8 @@ extern "C++" {
|
|
|
5543
5797
|
BSSL_NAMESPACE_BEGIN
|
|
5544
5798
|
|
|
5545
5799
|
BORINGSSL_MAKE_DELETER(SSL, SSL_free)
|
|
5800
|
+
BORINGSSL_MAKE_DELETER(SSL_CREDENTIAL, SSL_CREDENTIAL_free)
|
|
5801
|
+
BORINGSSL_MAKE_UP_REF(SSL_CREDENTIAL, SSL_CREDENTIAL_up_ref)
|
|
5546
5802
|
BORINGSSL_MAKE_DELETER(SSL_CTX, SSL_CTX_free)
|
|
5547
5803
|
BORINGSSL_MAKE_UP_REF(SSL_CTX, SSL_CTX_up_ref)
|
|
5548
5804
|
BORINGSSL_MAKE_DELETER(SSL_ECH_KEYS, SSL_ECH_KEYS_free)
|