grpc 1.83.1 → 1.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +21 -17
- data/include/grpc/credentials.h +10 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +9 -0
- data/src/core/call/call_filters.h +4 -2
- data/src/core/call/client_call.cc +20 -8
- data/src/core/call/client_call.h +4 -0
- data/src/core/call/interception_chain.cc +2 -0
- data/src/core/call/interception_chain.h +14 -1
- data/src/core/call/metadata.cc +1 -3
- data/src/core/call/metadata_batch.h +13 -5
- data/src/core/call/server_call.cc +31 -14
- data/src/core/call/server_call.h +4 -0
- data/src/core/channelz/text_encode.cc +9 -4
- data/src/core/channelz/v2tov1/convert.cc +2 -2
- data/src/core/client_channel/backup_poller.cc +1 -2
- data/src/core/client_channel/client_channel.cc +6 -33
- data/src/core/client_channel/client_channel_filter.cc +22 -55
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_service_config.cc +3 -19
- data/src/core/client_channel/direct_channel.cc +7 -1
- data/src/core/client_channel/direct_channel.h +2 -2
- data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -12
- data/src/core/client_channel/subchannel.cc +310 -1058
- data/src/core/client_channel/subchannel.h +44 -329
- data/src/core/client_channel/subchannel_metrics.cc +48 -0
- data/src/core/client_channel/subchannel_metrics.h +60 -0
- data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
- data/src/core/credentials/call/json_util.h +1 -0
- data/src/core/credentials/call/jwt/json_token.cc +10 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +42 -79
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -5
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +52 -31
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +21 -8
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
- data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +12 -6
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -18
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +9 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +45 -56
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +26 -0
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +1 -1
- data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
- data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +2 -4
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +13 -15
- data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
- data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
- data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
- data/src/core/credentials/transport/tls/ssl_utils.cc +39 -28
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
- data/src/core/credentials/transport/tls/tls_security_connector.cc +48 -33
- data/src/core/credentials/transport/tls/tls_security_connector.h +31 -10
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +15 -11
- data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
- data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
- data/src/core/ext/filters/rbac/rbac_filter.h +21 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +32 -67
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/goaway.h +7 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +141 -130
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +22 -22
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +402 -269
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +80 -49
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +1 -2
- data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +178 -5
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +345 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/read_context.h +30 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +65 -23
- data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -5
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +4 -17
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +715 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
- data/src/core/filter/auth/server_auth_filter.cc +2 -3
- data/src/core/filter/composite/composite_filter.cc +45 -33
- data/src/core/filter/composite/composite_filter.h +5 -4
- data/src/core/filter/ext_proc/ext_proc_filter.cc +224 -0
- data/src/core/filter/ext_proc/ext_proc_filter.h +155 -0
- data/src/core/filter/ext_proc/ext_proc_messages.cc +701 -0
- data/src/core/filter/ext_proc/ext_proc_messages.h +297 -0
- data/src/core/filter/filter_args.h +13 -2
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
- data/src/core/handshaker/security/security_handshaker.cc +9 -6
- data/src/core/lib/channel/channel_stack.cc +3 -0
- data/src/core/lib/channel/channel_stack.h +2 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -2
- data/src/core/lib/channel/promise_based_filter.cc +132 -20
- data/src/core/lib/channel/promise_based_filter.h +42 -12
- data/src/core/lib/compression/compression_internal.cc +4 -5
- data/src/core/lib/debug/trace_flags.cc +8 -0
- data/src/core/lib/debug/trace_flags.h +3 -0
- data/src/core/lib/event_engine/ares_resolver.cc +54 -50
- data/src/core/lib/event_engine/ares_resolver.h +3 -2
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -10
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +74 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
- data/src/core/lib/experiments/experiments.cc +60 -96
- data/src/core/lib/experiments/experiments.h +34 -50
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error_cfstream.cc +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +5 -9
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -2
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
- data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/systemd_utils.cc +0 -1
- data/src/core/lib/iomgr/tcp_client.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +23 -15
- data/src/core/lib/iomgr/tcp_server.h +1 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.cc +5 -10
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/vsock.h +3 -1
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
- data/src/core/lib/security/authorization/rbac_policy.h +21 -3
- data/src/core/lib/surface/call.cc +3 -9
- data/src/core/lib/surface/call_utils.h +113 -0
- data/src/core/lib/surface/channel_create.cc +1 -1
- data/src/core/lib/surface/channel_create.h +0 -2
- data/src/core/lib/surface/channel_init.cc +77 -38
- data/src/core/lib/surface/channel_init.h +30 -16
- data/src/core/lib/surface/filter_stack_call.cc +5 -10
- data/src/core/lib/surface/init.cc +13 -27
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -27
- data/src/core/lib/transport/error_utils.h +0 -16
- data/src/core/lib/transport/transport.h +7 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +2 -0
- data/src/core/load_balancing/rls/rls.cc +28 -11
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -42
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +0 -2
- data/src/core/load_balancing/xds/cds.cc +3 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +0 -1
- data/src/core/mitigation_engine/mitigation.h +14 -5
- data/src/core/mitigation_engine/mitigation_engine.h +7 -3
- data/src/core/mitigation_engine/mitigation_provider.h +2 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +39 -8
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +42 -41
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
- data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
- data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +35 -9
- data/src/core/server/server.cc +2 -6
- data/src/core/server/server_config_selector.h +18 -3
- data/src/core/server/server_config_selector_filter.cc +178 -91
- data/src/core/server/server_config_selector_filter.h +58 -3
- data/src/core/server/xds_server_config_fetcher.cc +196 -129
- data/src/core/server/xds_server_config_fetcher.h +49 -0
- data/src/core/server/xds_server_config_fetcher_legacy.cc +41 -37
- data/src/core/telemetry/histogram.h +94 -14
- data/src/core/telemetry/instrument.cc +179 -74
- data/src/core/telemetry/instrument.h +78 -30
- data/src/core/telemetry/metrics.h +5 -0
- data/src/core/{resolver/dns/dns_resolver_plugin.h → telemetry/telemetry_label.h} +12 -8
- data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -1
- data/src/core/tsi/ssl_telemetry_utils.cc +216 -259
- data/src/core/tsi/ssl_telemetry_utils.h +12 -2
- data/src/core/tsi/ssl_transport_security.cc +238 -80
- data/src/core/tsi/ssl_transport_security.h +63 -33
- data/src/core/tsi/tls_telemetry.cc +31 -0
- data/src/core/tsi/tls_telemetry.h +47 -0
- data/src/core/tsi/transport_security.cc +2 -2
- data/src/core/tsi/transport_security.h +1 -1
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
- data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
- data/src/core/util/http_client/httpcli.cc +16 -53
- data/src/core/util/http_client/httpcli.h +0 -7
- data/src/core/util/http_client/httpcli_security_connector.cc +13 -8
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/load_file.cc +3 -9
- data/src/core/util/load_file.h +3 -4
- data/src/core/util/matchers.h +8 -0
- data/src/core/util/posix/cpu.cc +1 -1
- data/src/core/util/status_helper.cc +0 -20
- data/src/core/util/status_helper.h +3 -14
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
- data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -10
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
- data/src/core/xds/grpc/xds_client_grpc.cc +4 -8
- data/src/core/xds/grpc/xds_client_grpc.h +0 -4
- data/src/core/xds/grpc/xds_cluster.h +1 -0
- data/src/core/xds/grpc/xds_cluster_parser.cc +1 -5
- data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
- data/src/core/xds/grpc/xds_common_types.cc +0 -91
- data/src/core/xds/grpc/xds_common_types.h +1 -47
- data/src/core/xds/grpc/xds_common_types_parser.cc +84 -378
- data/src/core/xds/grpc/xds_common_types_parser.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +0 -2
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +177 -0
- data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → xds/grpc/xds_grpc_service_parser.h} +14 -9
- data/src/core/xds/grpc/xds_http_composite_filter.cc +26 -21
- data/src/core/xds/grpc/xds_http_composite_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +418 -0
- data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -12
- data/src/core/xds/grpc/xds_http_fault_filter.h +1 -4
- data/src/core/xds/grpc/xds_http_filter.cc +2 -1
- data/src/core/xds/grpc/xds_http_filter.h +6 -5
- data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -127
- data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +13 -14
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +403 -25
- data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -13
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +1 -4
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -292
- data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
- data/src/core/xds/grpc/xds_listener.cc +2 -0
- data/src/core/xds/grpc/xds_listener.h +5 -0
- data/src/core/xds/grpc/xds_listener_parser.cc +16 -11
- data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
- data/src/core/xds/grpc/xds_metadata_parser.cc +6 -1
- data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
- data/src/core/xds/grpc/xds_route_config.cc +2 -0
- data/src/core/xds/grpc/xds_route_config.h +3 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +13 -79
- data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
- data/src/core/xds/grpc/xds_routing.cc +116 -69
- data/src/core/xds/grpc/xds_routing.h +19 -8
- data/src/core/xds/grpc/xds_tls_context.cc +117 -0
- data/src/core/xds/grpc/xds_tls_context.h +76 -0
- data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
- data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +41 -38
- data/src/core/xds/grpc/xds_transport_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_call.c +26 -15
- data/src/ruby/ext/grpc/rb_completion_queue.c +6 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +5 -4
- data/src/ruby/spec/call_spec.rb +14 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +3 -6
- metadata +50 -35
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
- data/src/core/lib/iomgr/resolve_address.cc +0 -59
- data/src/core/lib/iomgr/resolve_address.h +0 -125
- data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
- data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
- data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
- data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
- data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -64
- data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
- data/src/core/util/json/json_util.cc +0 -101
- data/src/core/util/json/json_util.h +0 -163
|
@@ -23,177 +23,29 @@
|
|
|
23
23
|
#include <openssl/ssl.h>
|
|
24
24
|
#include <openssl/x509.h>
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
#if defined(OPENSSL_IS_BORINGSSL)
|
|
26
|
+
#include "absl/strings/string_view.h"
|
|
29
27
|
|
|
28
|
+
namespace grpc_core {
|
|
30
29
|
namespace {
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
case
|
|
44
|
-
|
|
45
|
-
case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
|
|
46
|
-
case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
|
|
47
|
-
return TlsTelemetryHandshakeResult::kCertificateAuthorityInvalid;
|
|
48
|
-
case X509_V_ERR_HOSTNAME_MISMATCH:
|
|
49
|
-
return TlsTelemetryHandshakeResult::kCertificateHostnameMismatch;
|
|
50
|
-
case X509_V_ERR_CERT_REJECTED:
|
|
51
|
-
return TlsTelemetryHandshakeResult::kCertificateVerificationFailed;
|
|
52
|
-
case X509_V_ERR_UNABLE_TO_GET_CRL:
|
|
53
|
-
return TlsTelemetryHandshakeResult::kCrlNotFound;
|
|
54
|
-
case X509_V_ERR_CRL_HAS_EXPIRED:
|
|
55
|
-
case X509_V_ERR_CRL_NOT_YET_VALID:
|
|
56
|
-
return TlsTelemetryHandshakeResult::kCrlExpired;
|
|
57
|
-
case X509_V_ERR_CRL_SIGNATURE_FAILURE:
|
|
58
|
-
return TlsTelemetryHandshakeResult::kCrlSignatureFailure;
|
|
59
|
-
case X509_V_ERR_INVALID_CA:
|
|
60
|
-
case X509_V_ERR_INVALID_NON_CA:
|
|
61
|
-
case X509_V_ERR_INVALID_PURPOSE:
|
|
62
|
-
case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
|
|
63
|
-
case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
|
|
64
|
-
return TlsTelemetryHandshakeResult::kCertificateMalformed;
|
|
65
|
-
case X509_V_ERR_CERT_SIGNATURE_FAILURE:
|
|
66
|
-
return TlsTelemetryHandshakeResult::kSignatureVerificationFailed;
|
|
31
|
+
// Most of the TSI error states are relatively generic and don't allow us to
|
|
32
|
+
// report more granular failure details.
|
|
33
|
+
TlsTelemetryHandshakeResult MapTsiResultToTlsTelemetryHandshakeResult(
|
|
34
|
+
tsi_result status) {
|
|
35
|
+
switch (status) {
|
|
36
|
+
case TSI_OK:
|
|
37
|
+
return TlsTelemetryHandshakeResult::kSuccess;
|
|
38
|
+
case TSI_HANDSHAKE_SHUTDOWN:
|
|
39
|
+
return TlsTelemetryHandshakeResult::kCancelled;
|
|
40
|
+
case TSI_CLOSE_NOTIFY:
|
|
41
|
+
return TlsTelemetryHandshakeResult::kPeerConnectionClosed;
|
|
42
|
+
case TSI_OUT_OF_RESOURCES:
|
|
43
|
+
return TlsTelemetryHandshakeResult::kInternalSystemError;
|
|
67
44
|
default:
|
|
68
|
-
return TlsTelemetryHandshakeResult::
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
} // namespace
|
|
73
|
-
|
|
74
|
-
TlsTelemetryHandshakeResult MapSslErrorToTlsTelemetryHandshakeResult(
|
|
75
|
-
int ssl_error, unsigned long err_code, long verify_result) {
|
|
76
|
-
if (ssl_error == SSL_ERROR_NONE) {
|
|
77
|
-
return MapVerifyResultToTlsTelemetryHandshakeResult(verify_result);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (ssl_error == SSL_ERROR_ZERO_RETURN) {
|
|
81
|
-
return TlsTelemetryHandshakeResult::kPeerConnectionClosed;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (ssl_error == SSL_ERROR_SYSCALL) {
|
|
85
|
-
return TlsTelemetryHandshakeResult::kPeerConnectionClosed;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (ssl_error == SSL_ERROR_SSL) {
|
|
89
|
-
int reason = ERR_GET_REASON(err_code);
|
|
90
|
-
switch (reason) {
|
|
91
|
-
// Cipher suite mismatch failures
|
|
92
|
-
case SSL_R_NO_CIPHERS_AVAILABLE:
|
|
93
|
-
case SSL_R_NO_CIPHERS_PASSED:
|
|
94
|
-
case SSL_R_NO_CIPHER_MATCH:
|
|
95
|
-
case SSL_R_NO_SHARED_CIPHER:
|
|
96
|
-
case SSL_R_REQUIRED_CIPHER_MISSING:
|
|
97
|
-
case SSL_R_UNSUPPORTED_CIPHER:
|
|
98
|
-
case SSL_R_WRONG_CIPHER_RETURNED:
|
|
99
|
-
case SSL_R_CIPHER_MISMATCH_ON_EARLY_DATA:
|
|
100
|
-
case SSL_R_CIPHER_OR_HASH_UNAVAILABLE:
|
|
101
|
-
return TlsTelemetryHandshakeResult::kCipherSuiteMismatch;
|
|
102
|
-
|
|
103
|
-
// Protocol version unsupported failures
|
|
104
|
-
case SSL_R_UNKNOWN_PROTOCOL:
|
|
105
|
-
case SSL_R_UNKNOWN_SSL_VERSION:
|
|
106
|
-
case SSL_R_UNSUPPORTED_PROTOCOL:
|
|
107
|
-
case SSL_R_WRONG_SSL_VERSION:
|
|
108
|
-
case SSL_R_WRONG_VERSION_NUMBER:
|
|
109
|
-
case SSL_R_UNSUPPORTED_PROTOCOL_FOR_CUSTOM_KEY:
|
|
110
|
-
case SSL_R_WRONG_VERSION_ON_EARLY_DATA:
|
|
111
|
-
case SSL_R_NO_SUPPORTED_VERSIONS_ENABLED:
|
|
112
|
-
case SSL_R_SECOND_SERVERHELLO_VERSION_MISMATCH:
|
|
113
|
-
return TlsTelemetryHandshakeResult::kProtocolVersionUnsupported;
|
|
114
|
-
|
|
115
|
-
// Inappropriate fallback
|
|
116
|
-
case SSL_R_INAPPROPRIATE_FALLBACK:
|
|
117
|
-
return TlsTelemetryHandshakeResult::kInappropriateFallback;
|
|
118
|
-
|
|
119
|
-
// No application protocol
|
|
120
|
-
case SSL_R_NO_APPLICATION_PROTOCOL:
|
|
121
|
-
case SSL_R_INVALID_ALPN_PROTOCOL:
|
|
122
|
-
case SSL_R_INVALID_ALPN_PROTOCOL_LIST:
|
|
123
|
-
case SSL_R_NEGOTIATED_BOTH_NPN_AND_ALPN:
|
|
124
|
-
case SSL_R_ALPN_MISMATCH_ON_EARLY_DATA:
|
|
125
|
-
return TlsTelemetryHandshakeResult::kNoApplicationProtocol;
|
|
126
|
-
|
|
127
|
-
// Cryptographic failures: Signature verification failed
|
|
128
|
-
case SSL_R_BAD_SIGNATURE:
|
|
129
|
-
case SSL_R_WRONG_SIGNATURE_TYPE:
|
|
130
|
-
return TlsTelemetryHandshakeResult::kSignatureVerificationFailed;
|
|
131
|
-
|
|
132
|
-
// Cryptographic failures: Decryption failed
|
|
133
|
-
case SSL_R_DECRYPTION_FAILED:
|
|
134
|
-
case SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC:
|
|
135
|
-
case SSL_R_BLOCK_CIPHER_PAD_IS_WRONG:
|
|
136
|
-
return TlsTelemetryHandshakeResult::kDecryptionFailed;
|
|
137
|
-
|
|
138
|
-
// Cryptographic failures: Key exchange failure
|
|
139
|
-
case SSL_R_WRONG_CURVE:
|
|
140
|
-
case SSL_R_BAD_ECPOINT:
|
|
141
|
-
return TlsTelemetryHandshakeResult::kKeyExchangeFailure;
|
|
142
|
-
|
|
143
|
-
// Unexpected message
|
|
144
|
-
case SSL_R_UNEXPECTED_MESSAGE:
|
|
145
|
-
case SSL_R_UNEXPECTED_RECORD:
|
|
146
|
-
case SSL_R_APP_DATA_IN_HANDSHAKE:
|
|
147
|
-
case SSL_R_EXCESS_HANDSHAKE_DATA:
|
|
148
|
-
return TlsTelemetryHandshakeResult::kUnexpectedMessage;
|
|
149
|
-
|
|
150
|
-
// Handshake timeout
|
|
151
|
-
case SSL_R_READ_TIMEOUT_EXPIRED:
|
|
152
|
-
return TlsTelemetryHandshakeResult::kHandshakeTimeout;
|
|
153
|
-
|
|
154
|
-
// Certificate verification failures
|
|
155
|
-
case SSL_R_CERTIFICATE_VERIFY_FAILED: {
|
|
156
|
-
TlsTelemetryHandshakeResult result =
|
|
157
|
-
MapVerifyResultToTlsTelemetryHandshakeResult(verify_result);
|
|
158
|
-
if (result == TlsTelemetryHandshakeResult::kSuccess) {
|
|
159
|
-
// There's no more detail on certificate failure, this is as granular
|
|
160
|
-
// as we can get.
|
|
161
|
-
return TlsTelemetryHandshakeResult::kCertificateVerificationFailed;
|
|
162
|
-
}
|
|
163
|
-
return result;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Certificate malformed
|
|
167
|
-
case SSL_R_DECODE_ERROR:
|
|
168
|
-
return TlsTelemetryHandshakeResult::kCertificateMalformed;
|
|
169
|
-
|
|
170
|
-
// Peer Certificate required but missing
|
|
171
|
-
case SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE:
|
|
172
|
-
case SSL_R_NO_CERTIFICATES_RETURNED:
|
|
173
|
-
case SSL_R_NO_CERTIFICATE_SET:
|
|
174
|
-
case SSL_R_NO_CERTIFICATE_ASSIGNED:
|
|
175
|
-
case SSL_R_SSLV3_ALERT_NO_CERTIFICATE:
|
|
176
|
-
case SSL_R_TLSV1_ALERT_CERTIFICATE_REQUIRED:
|
|
177
|
-
return TlsTelemetryHandshakeResult::kPeerCertificateRequiredButMissing;
|
|
178
|
-
|
|
179
|
-
// Internal / Resource failures
|
|
180
|
-
case ERR_R_MALLOC_FAILURE:
|
|
181
|
-
case ERR_R_INTERNAL_ERROR:
|
|
182
|
-
case ERR_R_OVERFLOW:
|
|
183
|
-
return TlsTelemetryHandshakeResult::kInternalSystemError;
|
|
184
|
-
|
|
185
|
-
default:
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
45
|
+
return TlsTelemetryHandshakeResult::kInternalSystemError;
|
|
188
46
|
}
|
|
189
|
-
|
|
190
|
-
return TlsTelemetryHandshakeResult::kUnknownFailure;
|
|
191
47
|
}
|
|
192
48
|
|
|
193
|
-
#else // !defined(OPENSSL_IS_BORINGSSL)
|
|
194
|
-
|
|
195
|
-
namespace {
|
|
196
|
-
|
|
197
49
|
TlsTelemetryHandshakeResult MapVerifyResultToTlsTelemetryHandshakeResult(
|
|
198
50
|
long verify_result) {
|
|
199
51
|
if (verify_result == X509_V_OK) return TlsTelemetryHandshakeResult::kSuccess;
|
|
@@ -237,107 +89,212 @@ TlsTelemetryHandshakeResult MapVerifyResultToTlsTelemetryHandshakeResult(
|
|
|
237
89
|
} // namespace
|
|
238
90
|
|
|
239
91
|
TlsTelemetryHandshakeResult MapSslErrorToTlsTelemetryHandshakeResult(
|
|
240
|
-
int ssl_error, unsigned long err_code,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
case SSL_R_INAPPROPRIATE_FALLBACK:
|
|
274
|
-
return TlsTelemetryHandshakeResult::kInappropriateFallback;
|
|
275
|
-
|
|
276
|
-
// No application protocol
|
|
277
|
-
#ifdef SSL_R_NO_APPLICATION_PROTOCOL
|
|
278
|
-
case SSL_R_NO_APPLICATION_PROTOCOL:
|
|
279
|
-
return TlsTelemetryHandshakeResult::kNoApplicationProtocol;
|
|
92
|
+
tsi_result status, int ssl_error, unsigned long err_code,
|
|
93
|
+
long verify_result) {
|
|
94
|
+
TlsTelemetryHandshakeResult result =
|
|
95
|
+
MapTsiResultToTlsTelemetryHandshakeResult(status);
|
|
96
|
+
switch (ssl_error) {
|
|
97
|
+
case SSL_ERROR_NONE: {
|
|
98
|
+
TlsTelemetryHandshakeResult verify_res =
|
|
99
|
+
MapVerifyResultToTlsTelemetryHandshakeResult(verify_result);
|
|
100
|
+
if (verify_res != TlsTelemetryHandshakeResult::kSuccess) {
|
|
101
|
+
result = verify_res;
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case SSL_ERROR_ZERO_RETURN:
|
|
106
|
+
result = TlsTelemetryHandshakeResult::kPeerConnectionClosed;
|
|
107
|
+
break;
|
|
108
|
+
case SSL_ERROR_SYSCALL:
|
|
109
|
+
result = TlsTelemetryHandshakeResult::kInternalSystemError;
|
|
110
|
+
break;
|
|
111
|
+
case SSL_ERROR_SSL: {
|
|
112
|
+
int reason = ERR_GET_REASON(err_code);
|
|
113
|
+
switch (reason) {
|
|
114
|
+
// Cipher suite mismatch failures
|
|
115
|
+
case SSL_R_NO_CIPHERS_AVAILABLE:
|
|
116
|
+
case SSL_R_NO_SHARED_CIPHER:
|
|
117
|
+
case SSL_R_REQUIRED_CIPHER_MISSING:
|
|
118
|
+
case SSL_R_WRONG_CIPHER_RETURNED:
|
|
119
|
+
case SSL_R_NO_CIPHER_MATCH:
|
|
120
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
121
|
+
case SSL_R_NO_CIPHERS_PASSED:
|
|
122
|
+
case SSL_R_UNSUPPORTED_CIPHER:
|
|
123
|
+
case SSL_R_CIPHER_MISMATCH_ON_EARLY_DATA:
|
|
124
|
+
case SSL_R_CIPHER_OR_HASH_UNAVAILABLE:
|
|
280
125
|
#endif
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
126
|
+
result = TlsTelemetryHandshakeResult::kCipherSuiteMismatch;
|
|
127
|
+
break;
|
|
128
|
+
// Protocol version unsupported failures
|
|
129
|
+
case SSL_R_UNKNOWN_PROTOCOL:
|
|
130
|
+
case SSL_R_UNKNOWN_SSL_VERSION:
|
|
131
|
+
case SSL_R_UNSUPPORTED_PROTOCOL:
|
|
132
|
+
case SSL_R_WRONG_SSL_VERSION:
|
|
133
|
+
case SSL_R_WRONG_VERSION_NUMBER:
|
|
134
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
135
|
+
case SSL_R_UNSUPPORTED_PROTOCOL_FOR_CUSTOM_KEY:
|
|
136
|
+
case SSL_R_WRONG_VERSION_ON_EARLY_DATA:
|
|
137
|
+
case SSL_R_NO_SUPPORTED_VERSIONS_ENABLED:
|
|
138
|
+
case SSL_R_SECOND_SERVERHELLO_VERSION_MISMATCH:
|
|
139
|
+
#endif
|
|
140
|
+
result = TlsTelemetryHandshakeResult::kProtocolVersionUnsupported;
|
|
141
|
+
break;
|
|
142
|
+
// Inappropriate fallback
|
|
143
|
+
case SSL_R_INAPPROPRIATE_FALLBACK:
|
|
144
|
+
result = TlsTelemetryHandshakeResult::kInappropriateFallback;
|
|
145
|
+
break;
|
|
146
|
+
// No application protocol
|
|
147
|
+
#if defined(OPENSSL_IS_BORINGSSL) || defined(SSL_R_NO_APPLICATION_PROTOCOL)
|
|
148
|
+
case SSL_R_NO_APPLICATION_PROTOCOL:
|
|
149
|
+
#endif
|
|
150
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
151
|
+
case SSL_R_INVALID_ALPN_PROTOCOL:
|
|
152
|
+
case SSL_R_INVALID_ALPN_PROTOCOL_LIST:
|
|
153
|
+
case SSL_R_NEGOTIATED_BOTH_NPN_AND_ALPN:
|
|
154
|
+
case SSL_R_ALPN_MISMATCH_ON_EARLY_DATA:
|
|
155
|
+
#endif
|
|
156
|
+
#if defined(OPENSSL_IS_BORINGSSL) || defined(SSL_R_NO_APPLICATION_PROTOCOL)
|
|
157
|
+
result = TlsTelemetryHandshakeResult::kNoApplicationProtocol;
|
|
158
|
+
break;
|
|
159
|
+
#endif
|
|
160
|
+
// Cryptographic failures: Signature verification failed
|
|
161
|
+
case SSL_R_BAD_SIGNATURE:
|
|
162
|
+
case SSL_R_WRONG_SIGNATURE_TYPE:
|
|
163
|
+
result = TlsTelemetryHandshakeResult::kSignatureVerificationFailed;
|
|
164
|
+
break;
|
|
165
|
+
// Cryptographic failures: Decryption failed
|
|
166
|
+
case SSL_R_DECRYPTION_FAILED:
|
|
167
|
+
case SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC:
|
|
168
|
+
case SSL_R_BLOCK_CIPHER_PAD_IS_WRONG:
|
|
169
|
+
result = TlsTelemetryHandshakeResult::kDecryptionFailed;
|
|
170
|
+
break;
|
|
171
|
+
// Cryptographic failures: Key exchange failure
|
|
172
|
+
case SSL_R_WRONG_CURVE:
|
|
173
|
+
case SSL_R_BAD_ECPOINT:
|
|
174
|
+
result = TlsTelemetryHandshakeResult::kKeyExchangeFailure;
|
|
175
|
+
break;
|
|
176
|
+
// Unexpected message
|
|
177
|
+
case SSL_R_UNEXPECTED_MESSAGE:
|
|
178
|
+
case SSL_R_UNEXPECTED_RECORD:
|
|
179
|
+
case SSL_R_APP_DATA_IN_HANDSHAKE:
|
|
180
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
181
|
+
case SSL_R_EXCESS_HANDSHAKE_DATA:
|
|
182
|
+
#endif
|
|
183
|
+
result = TlsTelemetryHandshakeResult::kUnexpectedMessage;
|
|
184
|
+
break;
|
|
185
|
+
// Handshake timeout
|
|
186
|
+
case SSL_R_READ_TIMEOUT_EXPIRED:
|
|
187
|
+
result = TlsTelemetryHandshakeResult::kCancelled;
|
|
188
|
+
break;
|
|
189
|
+
// Certificate verification failures
|
|
190
|
+
case SSL_R_CERTIFICATE_VERIFY_FAILED: {
|
|
191
|
+
result = MapVerifyResultToTlsTelemetryHandshakeResult(verify_result);
|
|
192
|
+
// If there is not a more granular failure, use the generic
|
|
193
|
+
// certificate verification failed result.
|
|
194
|
+
if (result == TlsTelemetryHandshakeResult::kSuccess) {
|
|
195
|
+
result =
|
|
196
|
+
TlsTelemetryHandshakeResult::kCertificateVerificationFailed;
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
316
199
|
}
|
|
317
|
-
|
|
200
|
+
// Certificate malformed
|
|
201
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
202
|
+
case SSL_R_DECODE_ERROR:
|
|
203
|
+
result = TlsTelemetryHandshakeResult::kCertificateMalformed;
|
|
204
|
+
break;
|
|
205
|
+
#endif
|
|
206
|
+
// Peer Certificate required but missing
|
|
207
|
+
case SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE:
|
|
208
|
+
case SSL_R_NO_CERTIFICATES_RETURNED:
|
|
209
|
+
case SSL_R_NO_CERTIFICATE_SET:
|
|
210
|
+
case SSL_R_NO_CERTIFICATE_ASSIGNED:
|
|
211
|
+
case SSL_R_SSLV3_ALERT_NO_CERTIFICATE:
|
|
212
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
213
|
+
case SSL_R_TLSV1_ALERT_CERTIFICATE_REQUIRED:
|
|
214
|
+
#endif
|
|
215
|
+
result =
|
|
216
|
+
TlsTelemetryHandshakeResult::kPeerCertificateRequiredButMissing;
|
|
217
|
+
break;
|
|
218
|
+
// Internal / Resource failures
|
|
219
|
+
case ERR_R_MALLOC_FAILURE:
|
|
220
|
+
case ERR_R_INTERNAL_ERROR:
|
|
221
|
+
#if defined(OPENSSL_IS_BORINGSSL)
|
|
222
|
+
case ERR_R_OVERFLOW:
|
|
223
|
+
#endif
|
|
224
|
+
result = TlsTelemetryHandshakeResult::kInternalSystemError;
|
|
225
|
+
break;
|
|
226
|
+
default:
|
|
227
|
+
// This branch should not be reached in practice. This is kept as a
|
|
228
|
+
// safety - to reach this default, the error is NOT SSL_ERROR_NONE, so
|
|
229
|
+
// there is some error.
|
|
230
|
+
if (result == TlsTelemetryHandshakeResult::kSuccess) {
|
|
231
|
+
result = TlsTelemetryHandshakeResult::kUnknownFailure;
|
|
232
|
+
}
|
|
233
|
+
break;
|
|
318
234
|
}
|
|
319
|
-
|
|
320
|
-
// Peer Certificate required but missing
|
|
321
|
-
case SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE:
|
|
322
|
-
case SSL_R_NO_CERTIFICATES_RETURNED:
|
|
323
|
-
case SSL_R_NO_CERTIFICATE_SET:
|
|
324
|
-
case SSL_R_NO_CERTIFICATE_ASSIGNED:
|
|
325
|
-
case SSL_R_SSLV3_ALERT_NO_CERTIFICATE:
|
|
326
|
-
return TlsTelemetryHandshakeResult::kPeerCertificateRequiredButMissing;
|
|
327
|
-
|
|
328
|
-
// Internal / Resource failures
|
|
329
|
-
case ERR_R_MALLOC_FAILURE:
|
|
330
|
-
case ERR_R_INTERNAL_ERROR:
|
|
331
|
-
return TlsTelemetryHandshakeResult::kInternalSystemError;
|
|
332
|
-
|
|
333
|
-
default:
|
|
334
|
-
break;
|
|
235
|
+
break;
|
|
335
236
|
}
|
|
237
|
+
default:
|
|
238
|
+
break;
|
|
336
239
|
}
|
|
337
|
-
|
|
338
|
-
return TlsTelemetryHandshakeResult::kUnknownFailure;
|
|
240
|
+
return result;
|
|
339
241
|
}
|
|
340
242
|
|
|
341
|
-
|
|
243
|
+
absl::string_view TlsTelemetryHandshakeResultToString(
|
|
244
|
+
TlsTelemetryHandshakeResult result) {
|
|
245
|
+
switch (result) {
|
|
246
|
+
case TlsTelemetryHandshakeResult::kSuccess:
|
|
247
|
+
return "OK";
|
|
248
|
+
case TlsTelemetryHandshakeResult::kCertificateVerificationFailed:
|
|
249
|
+
return "CERTIFICATE_VERIFICATION_FAILED";
|
|
250
|
+
case TlsTelemetryHandshakeResult::kCertificateRevoked:
|
|
251
|
+
return "CERTIFICATE_REVOKED";
|
|
252
|
+
case TlsTelemetryHandshakeResult::kCertificateExpired:
|
|
253
|
+
return "CERTIFICATE_EXPIRED";
|
|
254
|
+
case TlsTelemetryHandshakeResult::kCertificateNotYetValid:
|
|
255
|
+
return "CERTIFICATE_NOT_YET_VALID";
|
|
256
|
+
case TlsTelemetryHandshakeResult::kCertificateAuthorityInvalid:
|
|
257
|
+
return "CERTIFICATE_AUTHORITY_INVALID";
|
|
258
|
+
case TlsTelemetryHandshakeResult::kPeerCertificateRequiredButMissing:
|
|
259
|
+
return "PEER_CERTIFICATE_REQUIRED_BUT_MISSING";
|
|
260
|
+
case TlsTelemetryHandshakeResult::kCrlNotFound:
|
|
261
|
+
return "CRL_NOT_FOUND";
|
|
262
|
+
case TlsTelemetryHandshakeResult::kCrlExpired:
|
|
263
|
+
return "CRL_EXPIRED";
|
|
264
|
+
case TlsTelemetryHandshakeResult::kCrlSignatureFailure:
|
|
265
|
+
return "CRL_SIGNATURE_FAILURE";
|
|
266
|
+
case TlsTelemetryHandshakeResult::kCertificateHostnameMismatch:
|
|
267
|
+
return "CERTIFICATE_HOSTNAME_MISMATCH";
|
|
268
|
+
case TlsTelemetryHandshakeResult::kCertificateMalformed:
|
|
269
|
+
return "CERTIFICATE_MALFORMED";
|
|
270
|
+
case TlsTelemetryHandshakeResult::kCipherSuiteMismatch:
|
|
271
|
+
return "CIPHER_SUITE_MISMATCH";
|
|
272
|
+
case TlsTelemetryHandshakeResult::kProtocolVersionUnsupported:
|
|
273
|
+
return "PROTOCOL_VERSION_UNSUPPORTED";
|
|
274
|
+
case TlsTelemetryHandshakeResult::kInappropriateFallback:
|
|
275
|
+
return "INAPPROPRIATE_FALLBACK";
|
|
276
|
+
case TlsTelemetryHandshakeResult::kNoApplicationProtocol:
|
|
277
|
+
return "NO_APPLICATION_PROTOCOL";
|
|
278
|
+
case TlsTelemetryHandshakeResult::kSignatureVerificationFailed:
|
|
279
|
+
return "SIGNATURE_VERIFICATION_FAILED";
|
|
280
|
+
case TlsTelemetryHandshakeResult::kDecryptionFailed:
|
|
281
|
+
return "DECRYPTION_FAILED";
|
|
282
|
+
case TlsTelemetryHandshakeResult::kKeyExchangeFailure:
|
|
283
|
+
return "KEY_EXCHANGE_FAILURE";
|
|
284
|
+
case TlsTelemetryHandshakeResult::kPrivateKeySigningFailed:
|
|
285
|
+
return "PRIVATE_KEY_SIGNING_FAILED";
|
|
286
|
+
case TlsTelemetryHandshakeResult::kUnexpectedMessage:
|
|
287
|
+
return "UNEXPECTED_MESSAGE";
|
|
288
|
+
case TlsTelemetryHandshakeResult::kPeerConnectionClosed:
|
|
289
|
+
return "PEER_CONNECTION_CLOSED";
|
|
290
|
+
case TlsTelemetryHandshakeResult::kInternalSystemError:
|
|
291
|
+
return "INTERNAL_SYSTEM_ERROR";
|
|
292
|
+
case TlsTelemetryHandshakeResult::kUnknownFailure:
|
|
293
|
+
return "UNKNOWN_FAILURE";
|
|
294
|
+
case TlsTelemetryHandshakeResult::kCancelled:
|
|
295
|
+
return "CANCELLED";
|
|
296
|
+
}
|
|
297
|
+
return "UNKNOWN_FAILURE";
|
|
298
|
+
}
|
|
342
299
|
|
|
343
300
|
} // namespace grpc_core
|
|
@@ -21,6 +21,9 @@
|
|
|
21
21
|
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
|
23
23
|
|
|
24
|
+
#include "src/core/tsi/transport_security_interface.h"
|
|
25
|
+
#include "absl/strings/string_view.h"
|
|
26
|
+
|
|
24
27
|
namespace grpc_core {
|
|
25
28
|
|
|
26
29
|
enum class TlsTelemetryHandshakeResult {
|
|
@@ -50,14 +53,15 @@ enum class TlsTelemetryHandshakeResult {
|
|
|
50
53
|
kPrivateKeySigningFailed,
|
|
51
54
|
// Other failures
|
|
52
55
|
kUnexpectedMessage,
|
|
53
|
-
kHandshakeTimeout,
|
|
54
56
|
kPeerConnectionClosed,
|
|
57
|
+
kCancelled,
|
|
55
58
|
kInternalSystemError
|
|
56
59
|
};
|
|
57
60
|
|
|
58
61
|
// Maps different kinds of handshake/SSL/TLS errors to a unified
|
|
59
62
|
// TlsTelemetryHandshakeResult.
|
|
60
63
|
//
|
|
64
|
+
// - status: the tsi_result status of the overall TSI implementation.
|
|
61
65
|
// - ssl_error: the return code from SSL_get_error().
|
|
62
66
|
// - err_code: the packed error code from the OpenSSL error queue
|
|
63
67
|
// (ERR_get_error()).
|
|
@@ -67,7 +71,13 @@ enum class TlsTelemetryHandshakeResult {
|
|
|
67
71
|
// - Returns the corresponding TlsTelemetryHandshakeResult mapping for the
|
|
68
72
|
// failures.
|
|
69
73
|
TlsTelemetryHandshakeResult MapSslErrorToTlsTelemetryHandshakeResult(
|
|
70
|
-
int ssl_error, unsigned long err_code,
|
|
74
|
+
tsi_result status, int ssl_error, unsigned long err_code,
|
|
75
|
+
long verify_result);
|
|
76
|
+
|
|
77
|
+
// Converts the C-Core enum into a cross-language-consistent string
|
|
78
|
+
// representation for monitoring.
|
|
79
|
+
absl::string_view TlsTelemetryHandshakeResultToString(
|
|
80
|
+
TlsTelemetryHandshakeResult result);
|
|
71
81
|
|
|
72
82
|
} // namespace grpc_core
|
|
73
83
|
|