grpc 1.55.0 → 1.56.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +102 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/grpc_security.h +19 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +53 -21
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +42 -40
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +176 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +325 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +567 -543
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +150 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +46 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -5
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/backoff/random_early_detection.h +5 -0
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +33 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +10 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +182 -119
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +5 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -1
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -1
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/validate_metadata.cc +37 -22
- data/src/core/lib/surface/validate_metadata.h +13 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +5 -2
- data/src/core/tsi/ssl_transport_security.h +13 -1
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- 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/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -12
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -23,12 +23,15 @@
|
|
23
23
|
|
24
24
|
#include <string>
|
25
25
|
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
|
26
28
|
#include <grpc/grpc_security.h>
|
27
29
|
|
28
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
29
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
|
-
#include "src/core/lib/
|
32
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
31
33
|
#include "src/core/lib/json/json.h"
|
34
|
+
#include "src/core/lib/json/json_args.h"
|
32
35
|
|
33
36
|
namespace grpc_core {
|
34
37
|
|
@@ -43,7 +46,7 @@ class CertificateProviderFactory {
|
|
43
46
|
|
44
47
|
// Name of the type of the CertificateProvider. Unique to each type of
|
45
48
|
// config.
|
46
|
-
virtual
|
49
|
+
virtual absl::string_view name() const = 0;
|
47
50
|
|
48
51
|
virtual std::string ToString() const = 0;
|
49
52
|
};
|
@@ -51,10 +54,11 @@ class CertificateProviderFactory {
|
|
51
54
|
virtual ~CertificateProviderFactory() = default;
|
52
55
|
|
53
56
|
// Name of the plugin.
|
54
|
-
virtual
|
57
|
+
virtual absl::string_view name() const = 0;
|
55
58
|
|
56
59
|
virtual RefCountedPtr<Config> CreateCertificateProviderConfig(
|
57
|
-
const Json& config_json,
|
60
|
+
const Json& config_json, const JsonArgs& args,
|
61
|
+
ValidationErrors* errors) = 0;
|
58
62
|
|
59
63
|
// Create a CertificateProvider instance from config.
|
60
64
|
virtual RefCountedPtr<grpc_tls_certificate_provider>
|
@@ -20,11 +20,8 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
|
22
22
|
|
23
|
-
#include <string
|
24
|
-
|
25
|
-
#include <algorithm>
|
23
|
+
#include <string>
|
26
24
|
#include <utility>
|
27
|
-
#include <vector>
|
28
25
|
|
29
26
|
#include <grpc/support/log.h>
|
30
27
|
|
@@ -32,29 +29,22 @@ namespace grpc_core {
|
|
32
29
|
|
33
30
|
void CertificateProviderRegistry::Builder::RegisterCertificateProviderFactory(
|
34
31
|
std::unique_ptr<CertificateProviderFactory> factory) {
|
32
|
+
absl::string_view name = factory->name();
|
35
33
|
gpr_log(GPR_DEBUG, "registering certificate provider factory for \"%s\"",
|
36
|
-
|
37
|
-
|
38
|
-
GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
|
39
|
-
}
|
40
|
-
factories_.push_back(std::move(factory));
|
34
|
+
std::string(name).c_str());
|
35
|
+
GPR_ASSERT(factories_.emplace(name, std::move(factory)).second);
|
41
36
|
}
|
42
37
|
|
43
38
|
CertificateProviderRegistry CertificateProviderRegistry::Builder::Build() {
|
44
|
-
CertificateProviderRegistry
|
45
|
-
r.factories_ = std::move(factories_);
|
46
|
-
return r;
|
39
|
+
return CertificateProviderRegistry(std::move(factories_));
|
47
40
|
}
|
48
41
|
|
49
42
|
CertificateProviderFactory*
|
50
43
|
CertificateProviderRegistry::LookupCertificateProviderFactory(
|
51
44
|
absl::string_view name) const {
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
}
|
56
|
-
}
|
57
|
-
return nullptr;
|
45
|
+
auto it = factories_.find(name);
|
46
|
+
if (it == factories_.end()) return nullptr;
|
47
|
+
return it->second.get();
|
58
48
|
}
|
59
49
|
|
60
50
|
} // namespace grpc_core
|
@@ -21,8 +21,9 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <map>
|
24
25
|
#include <memory>
|
25
|
-
#include <
|
26
|
+
#include <utility>
|
26
27
|
|
27
28
|
#include "absl/strings/string_view.h"
|
28
29
|
|
@@ -32,20 +33,24 @@ namespace grpc_core {
|
|
32
33
|
|
33
34
|
// Global registry for all the certificate provider plugins.
|
34
35
|
class CertificateProviderRegistry {
|
36
|
+
private:
|
37
|
+
using FactoryMap =
|
38
|
+
std::map<absl::string_view, std::unique_ptr<CertificateProviderFactory>>;
|
39
|
+
|
35
40
|
public:
|
36
41
|
class Builder {
|
37
42
|
public:
|
38
|
-
// Register a provider with the registry.
|
39
|
-
//
|
40
|
-
//
|
41
|
-
//
|
43
|
+
// Register a provider with the registry. The key of the factory is
|
44
|
+
// extracted from factory parameter with method
|
45
|
+
// CertificateProviderFactory::name. The registry with a given name
|
46
|
+
// cannot be registered twice.
|
42
47
|
void RegisterCertificateProviderFactory(
|
43
48
|
std::unique_ptr<CertificateProviderFactory> factory);
|
44
49
|
|
45
50
|
CertificateProviderRegistry Build();
|
46
51
|
|
47
52
|
private:
|
48
|
-
|
53
|
+
FactoryMap factories_;
|
49
54
|
};
|
50
55
|
|
51
56
|
CertificateProviderRegistry(const CertificateProviderRegistry&) = delete;
|
@@ -60,9 +65,10 @@ class CertificateProviderRegistry {
|
|
60
65
|
absl::string_view name) const;
|
61
66
|
|
62
67
|
private:
|
63
|
-
CertificateProviderRegistry()
|
68
|
+
explicit CertificateProviderRegistry(FactoryMap factories)
|
69
|
+
: factories_(std::move(factories)) {}
|
64
70
|
|
65
|
-
|
71
|
+
FactoryMap factories_;
|
66
72
|
};
|
67
73
|
|
68
74
|
} // namespace grpc_core
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include <grpc/grpc.h>
|
35
35
|
#include <grpc/grpc_security.h>
|
36
36
|
#include <grpc/support/alloc.h>
|
37
|
+
#include <grpc/support/json.h>
|
37
38
|
#include <grpc/support/log.h>
|
38
39
|
#include <grpc/support/string_util.h>
|
39
40
|
|
@@ -487,19 +488,25 @@ void AwsExternalAccountCredentials::BuildSubjectToken() {
|
|
487
488
|
}
|
488
489
|
// Construct subject token
|
489
490
|
Json::Array headers;
|
490
|
-
headers.push_back(Json(
|
491
|
-
{{"key", "Authorization"},
|
492
|
-
|
491
|
+
headers.push_back(Json::FromObject(
|
492
|
+
{{"key", Json::FromString("Authorization")},
|
493
|
+
{"value", Json::FromString(signed_headers["Authorization"])}}));
|
493
494
|
headers.push_back(
|
494
|
-
Json({{"key", "
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
Json::
|
500
|
-
|
501
|
-
|
502
|
-
Json
|
495
|
+
Json::FromObject({{"key", Json::FromString("host")},
|
496
|
+
{"value", Json::FromString(signed_headers["host"])}}));
|
497
|
+
headers.push_back(Json::FromObject(
|
498
|
+
{{"key", Json::FromString("x-amz-date")},
|
499
|
+
{"value", Json::FromString(signed_headers["x-amz-date"])}}));
|
500
|
+
headers.push_back(Json::FromObject(
|
501
|
+
{{"key", Json::FromString("x-amz-security-token")},
|
502
|
+
{"value", Json::FromString(signed_headers["x-amz-security-token"])}}));
|
503
|
+
headers.push_back(Json::FromObject(
|
504
|
+
{{"key", Json::FromString("x-goog-cloud-target-resource")},
|
505
|
+
{"value", Json::FromString(audience_)}}));
|
506
|
+
Json subject_token_json =
|
507
|
+
Json::FromObject({{"url", Json::FromString(cred_verification_url_)},
|
508
|
+
{"method", Json::FromString("POST")},
|
509
|
+
{"headers", Json::FromArray(headers)}});
|
503
510
|
std::string subject_token = UrlEncode(JsonDump(subject_token_json));
|
504
511
|
FinishRetrieveSubjectToken(subject_token, absl::OkStatus());
|
505
512
|
}
|
@@ -40,6 +40,7 @@
|
|
40
40
|
#include <grpc/grpc.h>
|
41
41
|
#include <grpc/grpc_security.h>
|
42
42
|
#include <grpc/support/alloc.h>
|
43
|
+
#include <grpc/support/json.h>
|
43
44
|
#include <grpc/support/log.h>
|
44
45
|
#include <grpc/support/string_util.h>
|
45
46
|
|
@@ -328,9 +329,10 @@ void ExternalAccountCredentials::ExchangeToken(
|
|
328
329
|
Json::Object addtional_options_json_object;
|
329
330
|
if (options_.client_id.empty() && options_.client_secret.empty()) {
|
330
331
|
addtional_options_json_object["userProject"] =
|
331
|
-
options_.workforce_pool_user_project;
|
332
|
+
Json::FromString(options_.workforce_pool_user_project);
|
332
333
|
}
|
333
|
-
Json addtional_options_json
|
334
|
+
Json addtional_options_json =
|
335
|
+
Json::FromObject(std::move(addtional_options_json_object));
|
334
336
|
body_parts.push_back(absl::StrFormat(
|
335
337
|
"options=%s", UrlEncode(JsonDump(addtional_options_json)).c_str()));
|
336
338
|
std::string body = absl::StrJoin(body_parts, "&");
|
@@ -36,6 +36,7 @@
|
|
36
36
|
|
37
37
|
#include <grpc/grpc_security.h>
|
38
38
|
#include <grpc/support/alloc.h>
|
39
|
+
#include <grpc/support/json.h>
|
39
40
|
#include <grpc/support/log.h>
|
40
41
|
#include <grpc/support/time.h>
|
41
42
|
|
@@ -165,12 +166,12 @@ void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
|
|
165
166
|
// --- jwt encoding and signature. ---
|
166
167
|
|
167
168
|
static char* encoded_jwt_header(const char* key_id, const char* algorithm) {
|
168
|
-
Json json = Json::
|
169
|
-
{"alg", algorithm},
|
170
|
-
{"typ", GRPC_JWT_TYPE},
|
171
|
-
{"kid", key_id},
|
172
|
-
};
|
173
|
-
std::string json_str = JsonDump(json);
|
169
|
+
Json json = Json::FromObject({
|
170
|
+
{"alg", Json::FromString(algorithm)},
|
171
|
+
{"typ", Json::FromString(GRPC_JWT_TYPE)},
|
172
|
+
{"kid", Json::FromString(key_id)},
|
173
|
+
});
|
174
|
+
std::string json_str = grpc_core::JsonDump(json);
|
174
175
|
return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
|
175
176
|
}
|
176
177
|
|
@@ -185,20 +186,20 @@ static char* encoded_jwt_claim(const grpc_auth_json_key* json_key,
|
|
185
186
|
}
|
186
187
|
|
187
188
|
Json::Object object = {
|
188
|
-
{"iss", json_key->client_email},
|
189
|
-
{"aud", audience},
|
190
|
-
{"iat", now.tv_sec},
|
191
|
-
{"exp", expiration.tv_sec},
|
189
|
+
{"iss", Json::FromString(json_key->client_email)},
|
190
|
+
{"aud", Json::FromString(audience)},
|
191
|
+
{"iat", Json::FromNumber(now.tv_sec)},
|
192
|
+
{"exp", Json::FromNumber(expiration.tv_sec)},
|
192
193
|
};
|
193
194
|
if (scope != nullptr) {
|
194
|
-
object["scope"] = scope;
|
195
|
+
object["scope"] = Json::FromString(scope);
|
195
196
|
} else {
|
196
197
|
// Unscoped JWTs need a sub field.
|
197
|
-
object["sub"] = json_key->client_email;
|
198
|
+
object["sub"] = Json::FromString(json_key->client_email);
|
198
199
|
}
|
199
200
|
|
200
|
-
|
201
|
-
|
201
|
+
std::string json_str =
|
202
|
+
grpc_core::JsonDump(Json::FromObject(std::move(object)));
|
202
203
|
return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
|
203
204
|
}
|
204
205
|
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "absl/strings/str_cat.h"
|
31
31
|
|
32
32
|
#include <grpc/support/alloc.h>
|
33
|
+
#include <grpc/support/json.h>
|
33
34
|
#include <grpc/support/log.h>
|
34
35
|
#include <grpc/support/string_util.h>
|
35
36
|
#include <grpc/support/sync.h>
|
@@ -145,9 +146,10 @@ static char* redact_private_key(const char* json_key) {
|
|
145
146
|
return gpr_strdup("<Json failed to parse.>");
|
146
147
|
}
|
147
148
|
Json::Object object = json->object();
|
148
|
-
object["private_key"] = "<redacted>";
|
149
|
+
object["private_key"] = Json::FromString("<redacted>");
|
149
150
|
return gpr_strdup(
|
150
|
-
grpc_core::JsonDump(Json(std::move(object)), /*indent=*/2)
|
151
|
+
grpc_core::JsonDump(Json::FromObject(std::move(object)), /*indent=*/2)
|
152
|
+
.c_str());
|
151
153
|
}
|
152
154
|
|
153
155
|
grpc_call_credentials* grpc_service_account_jwt_access_credentials_create(
|
@@ -120,3 +120,11 @@ void grpc_tls_credentials_options_set_tls_session_key_log_file_path(
|
|
120
120
|
}
|
121
121
|
options->set_tls_session_key_log_file_path(path != nullptr ? path : "");
|
122
122
|
}
|
123
|
+
|
124
|
+
void grpc_tls_credentials_options_set_send_client_ca_list(
|
125
|
+
grpc_tls_credentials_options* options, bool send_client_ca_list) {
|
126
|
+
if (options == nullptr) {
|
127
|
+
return;
|
128
|
+
}
|
129
|
+
options->set_send_client_ca_list(send_client_ca_list);
|
130
|
+
}
|
@@ -61,6 +61,7 @@ struct grpc_tls_credentials_options
|
|
61
61
|
const std::string& identity_cert_name() const { return identity_cert_name_; }
|
62
62
|
const std::string& tls_session_key_log_file_path() const { return tls_session_key_log_file_path_; }
|
63
63
|
const std::string& crl_directory() const { return crl_directory_; }
|
64
|
+
bool send_client_ca_list() const { return send_client_ca_list_; }
|
64
65
|
|
65
66
|
// Setters for member fields.
|
66
67
|
void set_cert_request_type(grpc_ssl_client_certificate_request_type cert_request_type) { cert_request_type_ = cert_request_type; }
|
@@ -81,6 +82,7 @@ struct grpc_tls_credentials_options
|
|
81
82
|
void set_tls_session_key_log_file_path(std::string tls_session_key_log_file_path) { tls_session_key_log_file_path_ = std::move(tls_session_key_log_file_path); }
|
82
83
|
// gRPC will enforce CRLs on all handshakes from all hashed CRL files inside of the crl_directory. If not set, an empty string will be used, which will not enable CRL checking. Only supported for OpenSSL version > 1.1.
|
83
84
|
void set_crl_directory(std::string crl_directory) { crl_directory_ = std::move(crl_directory); }
|
85
|
+
void set_send_client_ca_list(bool send_client_ca_list) { send_client_ca_list_ = send_client_ca_list; }
|
84
86
|
|
85
87
|
bool operator==(const grpc_tls_credentials_options& other) const {
|
86
88
|
return cert_request_type_ == other.cert_request_type_ &&
|
@@ -95,7 +97,8 @@ struct grpc_tls_credentials_options
|
|
95
97
|
watch_identity_pair_ == other.watch_identity_pair_ &&
|
96
98
|
identity_cert_name_ == other.identity_cert_name_ &&
|
97
99
|
tls_session_key_log_file_path_ == other.tls_session_key_log_file_path_ &&
|
98
|
-
crl_directory_ == other.crl_directory_
|
100
|
+
crl_directory_ == other.crl_directory_ &&
|
101
|
+
send_client_ca_list_ == other.send_client_ca_list_;
|
99
102
|
}
|
100
103
|
|
101
104
|
private:
|
@@ -112,6 +115,7 @@ struct grpc_tls_credentials_options
|
|
112
115
|
std::string identity_cert_name_;
|
113
116
|
std::string tls_session_key_log_file_path_;
|
114
117
|
std::string crl_directory_;
|
118
|
+
bool send_client_ca_list_ = false;
|
115
119
|
};
|
116
120
|
|
117
121
|
#endif // GRPC_SRC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
|
@@ -130,11 +130,7 @@ class grpc_alts_channel_security_connector final
|
|
130
130
|
}
|
131
131
|
|
132
132
|
grpc_core::ArenaPromise<absl::Status> CheckCallHost(
|
133
|
-
absl::string_view
|
134
|
-
if (host.empty() || host != target_name_) {
|
135
|
-
return grpc_core::Immediate(absl::UnauthenticatedError(
|
136
|
-
"ALTS call host does not match target name"));
|
137
|
-
}
|
133
|
+
absl::string_view, grpc_auth_context*) override {
|
138
134
|
return grpc_core::ImmediateOkStatus();
|
139
135
|
}
|
140
136
|
|
@@ -465,7 +465,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
465
465
|
grpc_ssl_client_certificate_request_type client_certificate_request,
|
466
466
|
tsi_tls_version min_tls_version, tsi_tls_version max_tls_version,
|
467
467
|
tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger,
|
468
|
-
const char* crl_directory,
|
468
|
+
const char* crl_directory, bool send_client_ca_list,
|
469
469
|
tsi_ssl_server_handshaker_factory** handshaker_factory) {
|
470
470
|
size_t num_alpn_protocols = 0;
|
471
471
|
const char** alpn_protocol_strings =
|
@@ -483,6 +483,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
483
483
|
options.max_tls_version = max_tls_version;
|
484
484
|
options.key_logger = tls_session_key_logger;
|
485
485
|
options.crl_directory = crl_directory;
|
486
|
+
options.send_client_ca_list = send_client_ca_list;
|
486
487
|
const tsi_result result =
|
487
488
|
tsi_create_ssl_server_handshaker_factory_with_options(&options,
|
488
489
|
handshaker_factory);
|
@@ -93,7 +93,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
93
93
|
grpc_ssl_client_certificate_request_type client_certificate_request,
|
94
94
|
tsi_tls_version min_tls_version, tsi_tls_version max_tls_version,
|
95
95
|
tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger,
|
96
|
-
const char* crl_directory,
|
96
|
+
const char* crl_directory, bool send_client_ca_list,
|
97
97
|
tsi_ssl_server_handshaker_factory** handshaker_factory);
|
98
98
|
|
99
99
|
// Free the memory occupied by key cert pairs.
|
@@ -830,7 +830,7 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
|
|
830
830
|
grpc_get_tsi_tls_version(options_->min_tls_version()),
|
831
831
|
grpc_get_tsi_tls_version(options_->max_tls_version()),
|
832
832
|
tls_session_key_logger_.get(), options_->crl_directory().c_str(),
|
833
|
-
&server_handshaker_factory_);
|
833
|
+
options_->send_client_ca_list(), &server_handshaker_factory_);
|
834
834
|
// Free memory.
|
835
835
|
grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pairs,
|
836
836
|
num_key_cert_pairs);
|
@@ -21,14 +21,14 @@
|
|
21
21
|
|
22
22
|
#include <stddef.h>
|
23
23
|
|
24
|
-
#include <map>
|
25
24
|
#include <memory>
|
26
25
|
#include <utility>
|
27
26
|
|
28
|
-
#include "
|
29
|
-
|
27
|
+
#include "src/core/lib/channel/context.h"
|
28
|
+
#include "src/core/lib/gprpp/chunked_vector.h"
|
30
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
30
|
#include "src/core/lib/gprpp/unique_type_name.h"
|
31
|
+
#include "src/core/lib/resource_quota/arena.h"
|
32
32
|
#include "src/core/lib/service_config/service_config.h"
|
33
33
|
#include "src/core/lib/service_config/service_config_parser.h"
|
34
34
|
|
@@ -38,43 +38,72 @@ namespace grpc_core {
|
|
38
38
|
/// A pointer to this object is stored in the call_context
|
39
39
|
/// GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA element, so that filters can
|
40
40
|
/// easily access method and global parameters for the call.
|
41
|
+
///
|
42
|
+
/// Must be accessed when holding the call combiner (legacy filter) or from
|
43
|
+
/// inside the activity (promise-based filter).
|
41
44
|
class ServiceConfigCallData {
|
42
45
|
public:
|
43
|
-
|
46
|
+
class CallAttributeInterface {
|
47
|
+
public:
|
48
|
+
virtual ~CallAttributeInterface() = default;
|
49
|
+
virtual UniqueTypeName type() const = 0;
|
50
|
+
};
|
51
|
+
|
52
|
+
ServiceConfigCallData(Arena* arena, grpc_call_context_element* call_context)
|
53
|
+
: call_attributes_(arena) {
|
54
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
|
55
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
|
56
|
+
}
|
44
57
|
|
45
|
-
ServiceConfigCallData()
|
58
|
+
virtual ~ServiceConfigCallData() = default;
|
46
59
|
|
47
|
-
|
60
|
+
void SetServiceConfig(
|
48
61
|
RefCountedPtr<ServiceConfig> service_config,
|
49
|
-
const ServiceConfigParser::ParsedConfigVector* method_configs
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
call_attributes_(std::move(call_attributes)) {}
|
62
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs) {
|
63
|
+
service_config_ = std::move(service_config);
|
64
|
+
method_configs_ = method_configs;
|
65
|
+
}
|
54
66
|
|
55
67
|
ServiceConfig* service_config() { return service_config_.get(); }
|
56
68
|
|
57
69
|
ServiceConfigParser::ParsedConfig* GetMethodParsedConfig(size_t index) const {
|
58
|
-
|
59
|
-
|
70
|
+
if (method_configs_ == nullptr) return nullptr;
|
71
|
+
return (*method_configs_)[index].get();
|
60
72
|
}
|
61
73
|
|
62
74
|
ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(size_t index) const {
|
75
|
+
if (service_config_ == nullptr) return nullptr;
|
63
76
|
return service_config_->GetGlobalParsedConfig(index);
|
64
77
|
}
|
65
78
|
|
66
|
-
|
79
|
+
void SetCallAttribute(CallAttributeInterface* value) {
|
80
|
+
// Overwrite existing entry if we already have one for this type.
|
81
|
+
for (CallAttributeInterface*& attribute : call_attributes_) {
|
82
|
+
if (value->type() == attribute->type()) {
|
83
|
+
attribute = value;
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
// Otherwise, add a new entry.
|
88
|
+
call_attributes_.EmplaceBack(value);
|
89
|
+
}
|
67
90
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
91
|
+
CallAttributeInterface* GetCallAttribute(UniqueTypeName type) const {
|
92
|
+
for (CallAttributeInterface* attribute : call_attributes_) {
|
93
|
+
if (attribute->type() == type) return attribute;
|
94
|
+
}
|
95
|
+
return nullptr;
|
72
96
|
}
|
73
97
|
|
74
98
|
private:
|
99
|
+
static void Destroy(void* ptr) {
|
100
|
+
auto* self = static_cast<ServiceConfigCallData*>(ptr);
|
101
|
+
self->~ServiceConfigCallData();
|
102
|
+
}
|
103
|
+
|
75
104
|
RefCountedPtr<ServiceConfig> service_config_;
|
76
|
-
const ServiceConfigParser::ParsedConfigVector* method_configs_;
|
77
|
-
|
105
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs_ = nullptr;
|
106
|
+
ChunkedVector<CallAttributeInterface*, 4> call_attributes_;
|
78
107
|
};
|
79
108
|
|
80
109
|
} // namespace grpc_core
|
@@ -121,7 +121,8 @@ RefCountedPtr<ServiceConfig> ServiceConfigImpl::Create(
|
|
121
121
|
service_config->parsed_method_config_vectors_storage_.reserve(
|
122
122
|
method_configs->size());
|
123
123
|
for (size_t i = 0; i < method_configs->size(); ++i) {
|
124
|
-
const Json
|
124
|
+
const Json method_config_json =
|
125
|
+
Json::FromObject(std::move((*method_configs)[i]));
|
125
126
|
ValidationErrors::ScopedField field(
|
126
127
|
errors, absl::StrCat(".methodConfig[", i, "]"));
|
127
128
|
// Have each parser read this method config.
|