grpc 1.37.1 → 1.40.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +112 -59
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +330 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +66 -0
- data/include/grpc/grpc.h +11 -4
- data/include/grpc/grpc_security.h +32 -0
- data/include/grpc/grpc_security_constants.h +15 -0
- data/include/grpc/impl/codegen/grpc_types.h +44 -19
- data/include/grpc/impl/codegen/port_platform.h +46 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +975 -3282
- data/src/core/ext/filters/client_channel/client_channel.h +513 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +20 -7
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +53 -51
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -23
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -16
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -17
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +17 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +53 -65
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +36 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +33 -55
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +151 -163
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +158 -102
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2598 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +33 -23
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -46
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +141 -126
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +652 -736
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +33 -28
- data/src/core/ext/transport/chttp2/transport/parsing.cc +129 -106
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
- data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +665 -317
- data/src/core/ext/xds/xds_api.h +52 -14
- data/src/core/ext/xds/xds_bootstrap.cc +101 -160
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +370 -215
- data/src/core/ext/xds/xds_client.h +38 -28
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_http_filters.cc +3 -2
- data/src/core/ext/xds/xds_http_filters.h +3 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +11 -10
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +21 -13
- data/src/core/lib/channel/channelz.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/channel/status_util.h +4 -0
- data/src/core/lib/compression/stream_compression.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +1 -1
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -2
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/gprpp/sync.h +2 -30
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +8 -10
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +168 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +12 -4
- data/src/core/lib/iomgr/exec_ctx.h +4 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +2 -2
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -5
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -4
- data/src/core/lib/iomgr/resolve_address.h +12 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +13 -10
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +15 -2
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +78 -73
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
- data/src/core/lib/iomgr/tcp_server_posix.cc +29 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer.h +6 -1
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +5 -6
- data/src/core/lib/matchers/matchers.cc +46 -58
- data/src/core/lib/matchers/matchers.h +30 -29
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +68 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +60 -76
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +45 -36
- data/src/core/lib/security/transport/server_auth_filter.cc +17 -18
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +72 -52
- data/src/core/lib/surface/call.h +13 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +68 -69
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +31 -23
- data/src/core/lib/surface/server.h +19 -18
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +21 -10
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +6 -4
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +483 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +77 -195
- metadata +116 -51
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -82,10 +82,10 @@ void grpc_plugin_credentials::pending_request_complete(pending_request* r) {
|
|
82
82
|
Unref();
|
83
83
|
}
|
84
84
|
|
85
|
-
static
|
85
|
+
static grpc_error_handle process_plugin_result(
|
86
86
|
grpc_plugin_credentials::pending_request* r, const grpc_metadata* md,
|
87
87
|
size_t num_md, grpc_status_code status, const char* error_details) {
|
88
|
-
|
88
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
89
89
|
if (status != GRPC_STATUS_OK) {
|
90
90
|
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
91
91
|
absl::StrCat("Getting metadata from plugin failed with error: ",
|
@@ -142,7 +142,7 @@ static void plugin_md_request_metadata_ready(void* request,
|
|
142
142
|
r->creds->pending_request_complete(r);
|
143
143
|
// If it has not been cancelled, process it.
|
144
144
|
if (!r->cancelled) {
|
145
|
-
|
145
|
+
grpc_error_handle error =
|
146
146
|
process_plugin_result(r, md, num_md, status, error_details);
|
147
147
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_request_metadata, error);
|
148
148
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_plugin_credentials_trace)) {
|
@@ -157,7 +157,7 @@ static void plugin_md_request_metadata_ready(void* request,
|
|
157
157
|
bool grpc_plugin_credentials::get_request_metadata(
|
158
158
|
grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context context,
|
159
159
|
grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata,
|
160
|
-
|
160
|
+
grpc_error_handle* error) {
|
161
161
|
bool retval = true; // Synchronous return.
|
162
162
|
if (plugin_.get_metadata != nullptr) {
|
163
163
|
// Create pending_request object.
|
@@ -231,7 +231,7 @@ bool grpc_plugin_credentials::get_request_metadata(
|
|
231
231
|
}
|
232
232
|
|
233
233
|
void grpc_plugin_credentials::cancel_get_request_metadata(
|
234
|
-
grpc_credentials_mdelem_array* md_array,
|
234
|
+
grpc_credentials_mdelem_array* md_array, grpc_error_handle error) {
|
235
235
|
gpr_mu_lock(&mu_);
|
236
236
|
for (pending_request* pending_request = pending_requests_;
|
237
237
|
pending_request != nullptr; pending_request = pending_request->next) {
|
@@ -47,10 +47,10 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
|
|
47
47
|
grpc_auth_metadata_context context,
|
48
48
|
grpc_credentials_mdelem_array* md_array,
|
49
49
|
grpc_closure* on_request_metadata,
|
50
|
-
|
50
|
+
grpc_error_handle* error) override;
|
51
51
|
|
52
52
|
void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array,
|
53
|
-
|
53
|
+
grpc_error_handle error) override;
|
54
54
|
|
55
55
|
// Checks if the request has been cancelled.
|
56
56
|
// If not, removes it from the pending list, so that it cannot be
|
@@ -100,8 +100,9 @@ bool grpc_tls_certificate_distributor::HasKeyCertPairs(
|
|
100
100
|
};
|
101
101
|
|
102
102
|
void grpc_tls_certificate_distributor::SetErrorForCert(
|
103
|
-
const std::string& cert_name,
|
104
|
-
absl::optional<
|
103
|
+
const std::string& cert_name,
|
104
|
+
absl::optional<grpc_error_handle> root_cert_error,
|
105
|
+
absl::optional<grpc_error_handle> identity_cert_error) {
|
105
106
|
GPR_ASSERT(root_cert_error.has_value() || identity_cert_error.has_value());
|
106
107
|
grpc_core::MutexLock lock(&mu_);
|
107
108
|
CertificateInfo& cert_info = certificate_info_map_[cert_name];
|
@@ -112,7 +113,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
|
|
112
113
|
GPR_ASSERT(watcher_it != watchers_.end());
|
113
114
|
// identity_cert_error_to_report is the error of the identity cert this
|
114
115
|
// watcher is watching, if there is any.
|
115
|
-
|
116
|
+
grpc_error_handle identity_cert_error_to_report = GRPC_ERROR_NONE;
|
116
117
|
if (identity_cert_error.has_value() &&
|
117
118
|
watcher_it->second.identity_cert_name == cert_name) {
|
118
119
|
identity_cert_error_to_report = *identity_cert_error;
|
@@ -133,7 +134,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
|
|
133
134
|
GPR_ASSERT(watcher_it != watchers_.end());
|
134
135
|
// root_cert_error_to_report is the error of the root cert this watcher is
|
135
136
|
// watching, if there is any.
|
136
|
-
|
137
|
+
grpc_error_handle root_cert_error_to_report = GRPC_ERROR_NONE;
|
137
138
|
if (root_cert_error.has_value() &&
|
138
139
|
watcher_it->second.root_cert_name == cert_name) {
|
139
140
|
// In this case, We've already sent the error updates at the time when
|
@@ -151,7 +152,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
|
|
151
152
|
}
|
152
153
|
};
|
153
154
|
|
154
|
-
void grpc_tls_certificate_distributor::SetError(
|
155
|
+
void grpc_tls_certificate_distributor::SetError(grpc_error_handle error) {
|
155
156
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
156
157
|
grpc_core::MutexLock lock(&mu_);
|
157
158
|
for (const auto& watcher : watchers_) {
|
@@ -194,8 +195,8 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates(
|
|
194
195
|
identity_cert_name};
|
195
196
|
absl::optional<absl::string_view> updated_root_certs;
|
196
197
|
absl::optional<grpc_core::PemKeyCertPairList> updated_identity_pairs;
|
197
|
-
|
198
|
-
|
198
|
+
grpc_error_handle root_error = GRPC_ERROR_NONE;
|
199
|
+
grpc_error_handle identity_error = GRPC_ERROR_NONE;
|
199
200
|
if (root_cert_name.has_value()) {
|
200
201
|
CertificateInfo& cert_info = certificate_info_map_[*root_cert_name];
|
201
202
|
start_watching_root_cert = cert_info.root_cert_watchers.empty();
|
@@ -68,8 +68,8 @@ struct grpc_tls_certificate_distributor
|
|
68
68
|
// certificates.
|
69
69
|
// @param identity_cert_error the error occurred while reloading identity
|
70
70
|
// certificates.
|
71
|
-
virtual void OnError(
|
72
|
-
|
71
|
+
virtual void OnError(grpc_error_handle root_cert_error,
|
72
|
+
grpc_error_handle identity_cert_error) = 0;
|
73
73
|
};
|
74
74
|
|
75
75
|
// Sets the key materials based on their certificate name.
|
@@ -95,14 +95,14 @@ struct grpc_tls_certificate_distributor
|
|
95
95
|
// @param identity_cert_error The error that the caller encounters when
|
96
96
|
// reloading identity certs.
|
97
97
|
void SetErrorForCert(const std::string& cert_name,
|
98
|
-
absl::optional<
|
99
|
-
absl::optional<
|
98
|
+
absl::optional<grpc_error_handle> root_cert_error,
|
99
|
+
absl::optional<grpc_error_handle> identity_cert_error);
|
100
100
|
|
101
101
|
// Propagates the error that the caller (e.g. Producer) encounters to all
|
102
102
|
// watchers.
|
103
103
|
//
|
104
104
|
// @param error The error that the caller encounters.
|
105
|
-
void SetError(
|
105
|
+
void SetError(grpc_error_handle error);
|
106
106
|
|
107
107
|
// Sets the TLS certificate watch status callback function. The
|
108
108
|
// grpc_tls_certificate_distributor will invoke this callback when a new
|
@@ -169,9 +169,9 @@ struct grpc_tls_certificate_distributor
|
|
169
169
|
// The contents of the identity key-certificate pairs.
|
170
170
|
grpc_core::PemKeyCertPairList pem_key_cert_pairs;
|
171
171
|
// The root cert reloading error propagated by the caller.
|
172
|
-
|
172
|
+
grpc_error_handle root_cert_error = GRPC_ERROR_NONE;
|
173
173
|
// The identity cert reloading error propagated by the caller.
|
174
|
-
|
174
|
+
grpc_error_handle identity_cert_error = GRPC_ERROR_NONE;
|
175
175
|
// The set of watchers watching root certificates.
|
176
176
|
// This is mainly used for quickly looking up the affected watchers while
|
177
177
|
// performing a credential reloading.
|
@@ -185,11 +185,11 @@ struct grpc_tls_certificate_distributor
|
|
185
185
|
GRPC_ERROR_UNREF(root_cert_error);
|
186
186
|
GRPC_ERROR_UNREF(identity_cert_error);
|
187
187
|
}
|
188
|
-
void SetRootError(
|
188
|
+
void SetRootError(grpc_error_handle error) {
|
189
189
|
GRPC_ERROR_UNREF(root_cert_error);
|
190
190
|
root_cert_error = error;
|
191
191
|
}
|
192
|
-
void SetIdentityError(
|
192
|
+
void SetIdentityError(grpc_error_handle error) {
|
193
193
|
GRPC_ERROR_UNREF(identity_cert_error);
|
194
194
|
identity_cert_error = error;
|
195
195
|
}
|
@@ -21,6 +21,7 @@
|
|
21
21
|
#include <grpc/support/alloc.h>
|
22
22
|
#include <grpc/support/log.h>
|
23
23
|
#include <grpc/support/string_util.h>
|
24
|
+
#include <openssl/ssl.h>
|
24
25
|
|
25
26
|
#include "src/core/lib/gprpp/stat.h"
|
26
27
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -60,8 +61,8 @@ StaticDataCertificateProvider::StaticDataCertificateProvider(
|
|
60
61
|
distributor_->SetKeyMaterials(cert_name, std::move(root_certificate),
|
61
62
|
std::move(pem_key_cert_pairs));
|
62
63
|
}
|
63
|
-
|
64
|
-
|
64
|
+
grpc_error_handle root_cert_error = GRPC_ERROR_NONE;
|
65
|
+
grpc_error_handle identity_cert_error = GRPC_ERROR_NONE;
|
65
66
|
if (root_being_watched && !root_has_update) {
|
66
67
|
root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
67
68
|
"Unable to get latest root certificates.");
|
@@ -150,8 +151,8 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider(
|
|
150
151
|
distributor_->SetKeyMaterials(cert_name, root_certificate,
|
151
152
|
pem_key_cert_pairs);
|
152
153
|
}
|
153
|
-
|
154
|
-
|
154
|
+
grpc_error_handle root_cert_error = GRPC_ERROR_NONE;
|
155
|
+
grpc_error_handle identity_cert_error = GRPC_ERROR_NONE;
|
155
156
|
if (root_being_watched && !root_certificate.has_value()) {
|
156
157
|
root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
157
158
|
"Unable to get latest root certificates.");
|
@@ -210,10 +211,11 @@ void FileWatcherCertificateProvider::ForceUpdate() {
|
|
210
211
|
}
|
211
212
|
if (root_cert_changed || identity_cert_changed) {
|
212
213
|
ExecCtx exec_ctx;
|
213
|
-
|
214
|
+
grpc_error_handle root_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
214
215
|
"Unable to get latest root certificates.");
|
215
|
-
|
216
|
-
|
216
|
+
grpc_error_handle identity_cert_error =
|
217
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
218
|
+
"Unable to get latest identity certificates.");
|
217
219
|
for (const auto& p : watcher_info_) {
|
218
220
|
const std::string& cert_name = p.first;
|
219
221
|
const WatcherInfo& info = p.second;
|
@@ -256,11 +258,12 @@ FileWatcherCertificateProvider::ReadRootCertificatesFromFile(
|
|
256
258
|
const std::string& root_cert_full_path) {
|
257
259
|
// Read the root file.
|
258
260
|
grpc_slice root_slice = grpc_empty_slice();
|
259
|
-
|
261
|
+
grpc_error_handle root_error =
|
260
262
|
grpc_load_file(root_cert_full_path.c_str(), 0, &root_slice);
|
261
263
|
if (root_error != GRPC_ERROR_NONE) {
|
262
264
|
gpr_log(GPR_ERROR, "Reading file %s failed: %s",
|
263
|
-
root_cert_full_path.c_str(),
|
265
|
+
root_cert_full_path.c_str(),
|
266
|
+
grpc_error_std_string(root_error).c_str());
|
264
267
|
GRPC_ERROR_UNREF(root_error);
|
265
268
|
return absl::nullopt;
|
266
269
|
}
|
@@ -314,19 +317,21 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
|
|
314
317
|
}
|
315
318
|
// Read the identity files.
|
316
319
|
SliceWrapper key_slice, cert_slice;
|
317
|
-
|
320
|
+
grpc_error_handle key_error =
|
318
321
|
grpc_load_file(private_key_path.c_str(), 0, &key_slice.slice);
|
319
322
|
if (key_error != GRPC_ERROR_NONE) {
|
320
323
|
gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...",
|
321
|
-
private_key_path.c_str(),
|
324
|
+
private_key_path.c_str(),
|
325
|
+
grpc_error_std_string(key_error).c_str());
|
322
326
|
GRPC_ERROR_UNREF(key_error);
|
323
327
|
continue;
|
324
328
|
}
|
325
|
-
|
329
|
+
grpc_error_handle cert_error =
|
326
330
|
grpc_load_file(identity_certificate_path.c_str(), 0, &cert_slice.slice);
|
327
331
|
if (cert_error != GRPC_ERROR_NONE) {
|
328
332
|
gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...",
|
329
|
-
identity_certificate_path.c_str(),
|
333
|
+
identity_certificate_path.c_str(),
|
334
|
+
grpc_error_std_string(cert_error).c_str());
|
330
335
|
GRPC_ERROR_UNREF(cert_error);
|
331
336
|
continue;
|
332
337
|
}
|
@@ -360,6 +365,54 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
|
|
360
365
|
return absl::nullopt;
|
361
366
|
}
|
362
367
|
|
368
|
+
absl::StatusOr<bool> PrivateKeyAndCertificateMatch(
|
369
|
+
absl::string_view private_key, absl::string_view cert_chain) {
|
370
|
+
if (private_key.empty()) {
|
371
|
+
return absl::InvalidArgumentError("Private key string is empty.");
|
372
|
+
}
|
373
|
+
if (cert_chain.empty()) {
|
374
|
+
return absl::InvalidArgumentError("Certificate string is empty.");
|
375
|
+
}
|
376
|
+
BIO* cert_bio = BIO_new_mem_buf(cert_chain.data(), cert_chain.size());
|
377
|
+
if (cert_bio == nullptr) {
|
378
|
+
return absl::InvalidArgumentError(
|
379
|
+
"Conversion from certificate string to BIO failed.");
|
380
|
+
}
|
381
|
+
// Reads the first cert from the cert_chain which is expected to be the leaf
|
382
|
+
// cert
|
383
|
+
X509* x509 = PEM_read_bio_X509(cert_bio, nullptr, nullptr, nullptr);
|
384
|
+
BIO_free(cert_bio);
|
385
|
+
if (x509 == nullptr) {
|
386
|
+
return absl::InvalidArgumentError(
|
387
|
+
"Conversion from PEM string to X509 failed.");
|
388
|
+
}
|
389
|
+
EVP_PKEY* public_evp_pkey = X509_get_pubkey(x509);
|
390
|
+
X509_free(x509);
|
391
|
+
if (public_evp_pkey == nullptr) {
|
392
|
+
return absl::InvalidArgumentError(
|
393
|
+
"Extraction of public key from x.509 certificate failed.");
|
394
|
+
}
|
395
|
+
BIO* private_key_bio =
|
396
|
+
BIO_new_mem_buf(private_key.data(), private_key.size());
|
397
|
+
if (private_key_bio == nullptr) {
|
398
|
+
EVP_PKEY_free(public_evp_pkey);
|
399
|
+
return absl::InvalidArgumentError(
|
400
|
+
"Conversion from private key string to BIO failed.");
|
401
|
+
}
|
402
|
+
EVP_PKEY* private_evp_pkey =
|
403
|
+
PEM_read_bio_PrivateKey(private_key_bio, nullptr, nullptr, nullptr);
|
404
|
+
BIO_free(private_key_bio);
|
405
|
+
if (private_evp_pkey == nullptr) {
|
406
|
+
EVP_PKEY_free(public_evp_pkey);
|
407
|
+
return absl::InvalidArgumentError(
|
408
|
+
"Conversion from PEM string to EVP_PKEY failed.");
|
409
|
+
}
|
410
|
+
bool result = EVP_PKEY_cmp(private_evp_pkey, public_evp_pkey) == 1;
|
411
|
+
EVP_PKEY_free(private_evp_pkey);
|
412
|
+
EVP_PKEY_free(public_evp_pkey);
|
413
|
+
return result;
|
414
|
+
}
|
415
|
+
|
363
416
|
} // namespace grpc_core
|
364
417
|
|
365
418
|
/** -- Wrapper APIs declared in grpc_security.h -- **/
|
@@ -367,6 +420,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
|
|
367
420
|
grpc_tls_certificate_provider* grpc_tls_certificate_provider_static_data_create(
|
368
421
|
const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs) {
|
369
422
|
GPR_ASSERT(root_certificate != nullptr || pem_key_cert_pairs != nullptr);
|
423
|
+
grpc_core::ExecCtx exec_ctx;
|
370
424
|
grpc_core::PemKeyCertPairList identity_pairs_core;
|
371
425
|
if (pem_key_cert_pairs != nullptr) {
|
372
426
|
identity_pairs_core = std::move(pem_key_cert_pairs->pem_key_cert_pairs);
|
@@ -384,6 +438,7 @@ grpc_tls_certificate_provider*
|
|
384
438
|
grpc_tls_certificate_provider_file_watcher_create(
|
385
439
|
const char* private_key_path, const char* identity_certificate_path,
|
386
440
|
const char* root_cert_path, unsigned int refresh_interval_sec) {
|
441
|
+
grpc_core::ExecCtx exec_ctx;
|
387
442
|
return new grpc_core::FileWatcherCertificateProvider(
|
388
443
|
private_key_path == nullptr ? "" : private_key_path,
|
389
444
|
identity_certificate_path == nullptr ? "" : identity_certificate_path,
|
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
25
|
#include "absl/container/inlined_vector.h"
|
26
|
+
#include "absl/status/statusor.h"
|
26
27
|
|
27
28
|
#include "src/core/lib/gprpp/ref_counted.h"
|
28
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -133,6 +134,12 @@ class FileWatcherCertificateProvider final
|
|
133
134
|
std::map<std::string, WatcherInfo> watcher_info_;
|
134
135
|
};
|
135
136
|
|
137
|
+
// Checks if the private key matches the certificate's public key.
|
138
|
+
// Returns a not-OK status on failure, or a bool indicating
|
139
|
+
// whether the key/cert pair matches.
|
140
|
+
absl::StatusOr<bool> PrivateKeyAndCertificateMatch(
|
141
|
+
absl::string_view private_key, absl::string_view cert_chain);
|
142
|
+
|
136
143
|
} // namespace grpc_core
|
137
144
|
|
138
145
|
#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CERTIFICATE_PROVIDER_H
|
@@ -87,6 +87,7 @@ void grpc_tls_server_authorization_check_config::Cancel(
|
|
87
87
|
/** -- Wrapper APIs declared in grpc_security.h -- **/
|
88
88
|
|
89
89
|
grpc_tls_credentials_options* grpc_tls_credentials_options_create() {
|
90
|
+
grpc_core::ExecCtx exec_ctx;
|
90
91
|
return new grpc_tls_credentials_options();
|
91
92
|
}
|
92
93
|
|
@@ -109,6 +110,7 @@ void grpc_tls_credentials_options_set_certificate_provider(
|
|
109
110
|
grpc_tls_certificate_provider* provider) {
|
110
111
|
GPR_ASSERT(options != nullptr);
|
111
112
|
GPR_ASSERT(provider != nullptr);
|
113
|
+
grpc_core::ExecCtx exec_ctx;
|
112
114
|
options->set_certificate_provider(
|
113
115
|
provider->Ref(DEBUG_LOCATION, "set_certificate_provider"));
|
114
116
|
}
|
@@ -142,6 +144,7 @@ void grpc_tls_credentials_options_set_server_authorization_check_config(
|
|
142
144
|
grpc_tls_server_authorization_check_config* config) {
|
143
145
|
GPR_ASSERT(options != nullptr);
|
144
146
|
GPR_ASSERT(config != nullptr);
|
147
|
+
grpc_core::ExecCtx exec_ctx;
|
145
148
|
options->set_server_authorization_check_config(config->Ref());
|
146
149
|
}
|
147
150
|
|
@@ -159,6 +162,7 @@ grpc_tls_server_authorization_check_config_create(
|
|
159
162
|
"check config.");
|
160
163
|
return nullptr;
|
161
164
|
}
|
165
|
+
grpc_core::ExecCtx exec_ctx;
|
162
166
|
return new grpc_tls_server_authorization_check_config(
|
163
167
|
config_user_data, schedule, cancel, destruct);
|
164
168
|
}
|
@@ -88,4 +88,36 @@ bool VerifySubjectAlternativeName(absl::string_view subject_alternative_name,
|
|
88
88
|
std::string::npos;
|
89
89
|
}
|
90
90
|
|
91
|
+
absl::string_view GetAuthPropertyValue(grpc_auth_context* context,
|
92
|
+
const char* property_name) {
|
93
|
+
grpc_auth_property_iterator it =
|
94
|
+
grpc_auth_context_find_properties_by_name(context, property_name);
|
95
|
+
const grpc_auth_property* prop = grpc_auth_property_iterator_next(&it);
|
96
|
+
if (prop == nullptr) {
|
97
|
+
gpr_log(GPR_DEBUG, "No value found for %s property.", property_name);
|
98
|
+
return "";
|
99
|
+
}
|
100
|
+
if (grpc_auth_property_iterator_next(&it) != nullptr) {
|
101
|
+
gpr_log(GPR_DEBUG, "Multiple values found for %s property.", property_name);
|
102
|
+
return "";
|
103
|
+
}
|
104
|
+
return absl::string_view(prop->value, prop->value_length);
|
105
|
+
}
|
106
|
+
|
107
|
+
std::vector<absl::string_view> GetAuthPropertyArray(grpc_auth_context* context,
|
108
|
+
const char* property_name) {
|
109
|
+
std::vector<absl::string_view> values;
|
110
|
+
grpc_auth_property_iterator it =
|
111
|
+
grpc_auth_context_find_properties_by_name(context, property_name);
|
112
|
+
const grpc_auth_property* prop = grpc_auth_property_iterator_next(&it);
|
113
|
+
while (prop != nullptr) {
|
114
|
+
values.emplace_back(prop->value, prop->value_length);
|
115
|
+
prop = grpc_auth_property_iterator_next(&it);
|
116
|
+
}
|
117
|
+
if (values.empty()) {
|
118
|
+
gpr_log(GPR_DEBUG, "No value found for %s property.", property_name);
|
119
|
+
}
|
120
|
+
return values;
|
121
|
+
}
|
122
|
+
|
91
123
|
} // namespace grpc_core
|
@@ -26,6 +26,8 @@
|
|
26
26
|
|
27
27
|
#include "absl/strings/string_view.h"
|
28
28
|
|
29
|
+
#include "src/core/lib/security/context/security_context.h"
|
30
|
+
|
29
31
|
namespace grpc_core {
|
30
32
|
|
31
33
|
// Matches \a subject_alternative_name with \a matcher. Returns true if there
|
@@ -33,6 +35,17 @@ namespace grpc_core {
|
|
33
35
|
bool VerifySubjectAlternativeName(absl::string_view subject_alternative_name,
|
34
36
|
const std::string& matcher);
|
35
37
|
|
38
|
+
// Returns value for the specified property_name from auth context. Here the
|
39
|
+
// property is expected to have a single value. Returns empty if multiple values
|
40
|
+
// are found.
|
41
|
+
absl::string_view GetAuthPropertyValue(grpc_auth_context* context,
|
42
|
+
const char* property_name);
|
43
|
+
|
44
|
+
// Returns values for the specified property_name from auth context. Here the
|
45
|
+
// property can have any number of values.
|
46
|
+
std::vector<absl::string_view> GetAuthPropertyArray(grpc_auth_context* context,
|
47
|
+
const char* property_name);
|
48
|
+
|
36
49
|
} // namespace grpc_core
|
37
50
|
|
38
51
|
#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_TLS_UTILS_H
|
@@ -40,13 +40,13 @@ bool XdsVerifySubjectAlternativeNames(
|
|
40
40
|
if (matchers.empty()) return true;
|
41
41
|
for (size_t i = 0; i < subject_alternative_names_size; ++i) {
|
42
42
|
for (const auto& matcher : matchers) {
|
43
|
-
if (matcher.type() == StringMatcher::Type::
|
44
|
-
// For
|
43
|
+
if (matcher.type() == StringMatcher::Type::kExact) {
|
44
|
+
// For Exact match, use DNS rules for verifying SANs
|
45
45
|
// TODO(zhenlian): Right now, the SSL layer does not save the type of
|
46
46
|
// the SAN, so we are doing a DNS style verification for all SANs when
|
47
47
|
// the type is EXACT. When we expose the SAN type, change this to only
|
48
48
|
// do this verification when the SAN type is DNS and match type is
|
49
|
-
//
|
49
|
+
// kExact. For all other cases, we should use matcher.Match().
|
50
50
|
if (VerifySubjectAlternativeName(subject_alternative_names[i],
|
51
51
|
matcher.string_matcher())) {
|
52
52
|
return true;
|
@@ -54,7 +54,7 @@ void alts_check_peer(tsi_peer peer,
|
|
54
54
|
*auth_context =
|
55
55
|
grpc_core::internal::grpc_alts_auth_context_from_tsi_peer(&peer);
|
56
56
|
tsi_peer_destruct(&peer);
|
57
|
-
|
57
|
+
grpc_error_handle error =
|
58
58
|
*auth_context != nullptr
|
59
59
|
? GRPC_ERROR_NONE
|
60
60
|
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -103,6 +103,11 @@ class grpc_alts_channel_security_connector final
|
|
103
103
|
alts_check_peer(peer, auth_context, on_peer_checked);
|
104
104
|
}
|
105
105
|
|
106
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
107
|
+
grpc_error_handle error) override {
|
108
|
+
GRPC_ERROR_UNREF(error);
|
109
|
+
}
|
110
|
+
|
106
111
|
int cmp(const grpc_security_connector* other_sc) const override {
|
107
112
|
auto* other =
|
108
113
|
reinterpret_cast<const grpc_alts_channel_security_connector*>(other_sc);
|
@@ -114,7 +119,7 @@ class grpc_alts_channel_security_connector final
|
|
114
119
|
bool check_call_host(absl::string_view host,
|
115
120
|
grpc_auth_context* /*auth_context*/,
|
116
121
|
grpc_closure* /*on_call_host_checked*/,
|
117
|
-
|
122
|
+
grpc_error_handle* error) override {
|
118
123
|
if (host.empty() || host != target_name_) {
|
119
124
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
120
125
|
"ALTS call host does not match target name");
|
@@ -123,7 +128,7 @@ class grpc_alts_channel_security_connector final
|
|
123
128
|
}
|
124
129
|
|
125
130
|
void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
|
126
|
-
|
131
|
+
grpc_error_handle error) override {
|
127
132
|
GRPC_ERROR_UNREF(error);
|
128
133
|
}
|
129
134
|
|
@@ -168,6 +173,11 @@ class grpc_alts_server_security_connector final
|
|
168
173
|
alts_check_peer(peer, auth_context, on_peer_checked);
|
169
174
|
}
|
170
175
|
|
176
|
+
void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
|
177
|
+
grpc_error_handle error) override {
|
178
|
+
GRPC_ERROR_UNREF(error);
|
179
|
+
}
|
180
|
+
|
171
181
|
int cmp(const grpc_security_connector* other) const override {
|
172
182
|
return server_security_connector_cmp(
|
173
183
|
static_cast<const grpc_server_security_connector*>(other));
|