grpc 1.34.0 → 1.35.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 +808 -2787
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +14 -0
- data/include/grpc/grpc_security.h +61 -3
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +1 -1
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
- data/src/core/ext/filters/client_channel/client_channel.h +0 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- 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_wrapper.cc +454 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
- data/src/core/ext/filters/client_channel/subchannel.h +12 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/xds/certificate_provider_store.cc +10 -7
- data/src/core/ext/xds/certificate_provider_store.h +12 -7
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
- data/src/core/ext/xds/xds_api.cc +220 -31
- data/src/core/ext/xds/xds_api.h +41 -10
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
- data/src/core/ext/xds/xds_certificate_provider.h +40 -2
- data/src/core/ext/xds/xds_client.cc +31 -29
- data/src/core/ext/xds/xds_client.h +6 -1
- data/src/core/ext/xds/xds_client_stats.cc +2 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
- data/src/core/lib/channel/channel_args.cc +8 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +13 -14
- data/src/core/lib/channel/channelz.h +0 -1
- data/src/core/lib/channel/channelz_registry.h +0 -1
- data/src/core/lib/channel/handshaker.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/debug/stats.h +2 -2
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/log.cc +53 -16
- data/src/core/lib/gpr/log_linux.cc +3 -1
- data/src/core/lib/gpr/log_posix.cc +3 -1
- data/src/core/lib/gpr/log_windows.cc +3 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +22 -21
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/ref_counted.h +2 -2
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
- data/src/core/lib/gprpp/thd_posix.cc +6 -1
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +1 -1
- data/src/core/lib/http/parser.cc +1 -2
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/error.cc +15 -11
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/exec_ctx.h +6 -4
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/threadpool.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +52 -46
- data/src/core/lib/iomgr/parse_address.h +13 -9
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/timer_custom.cc +3 -3
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
- data/src/core/lib/json/json.h +10 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
- data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +3 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +32 -24
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +16 -10
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +23 -18
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +6 -5
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +59 -15
- data/src/core/lib/surface/server.h +37 -5
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/authority_override.cc +6 -4
- data/src/core/lib/transport/authority_override.h +5 -2
- data/src/core/lib/transport/connectivity_state.h +6 -4
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/transport.h +7 -7
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +5 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +62 -49
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +6 -6
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +525 -516
- data/third_party/upb/upb/def.h +16 -31
- data/third_party/upb/upb/def.hpp +37 -123
- data/third_party/upb/upb/encode.c +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +36 -19
- data/third_party/upb/upb/table.c +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- data/third_party/upb/upb/text_encode.c +45 -22
- data/third_party/upb/upb/text_encode.h +4 -1
- data/third_party/upb/upb/upb.c +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +60 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/third_party/upb/upb/port.c +0 -26
@@ -35,7 +35,7 @@ class ExternalAccountCredentials
|
|
35
35
|
: public grpc_oauth2_token_fetcher_credentials {
|
36
36
|
public:
|
37
37
|
// External account credentials json interface.
|
38
|
-
struct
|
38
|
+
struct Options {
|
39
39
|
std::string type;
|
40
40
|
std::string audience;
|
41
41
|
std::string subject_token_type;
|
@@ -48,8 +48,10 @@ class ExternalAccountCredentials
|
|
48
48
|
std::string client_secret;
|
49
49
|
};
|
50
50
|
|
51
|
-
ExternalAccountCredentials(
|
52
|
-
|
51
|
+
static RefCountedPtr<ExternalAccountCredentials> Create(
|
52
|
+
const Json& json, std::vector<std::string> scopes, grpc_error** error);
|
53
|
+
|
54
|
+
ExternalAccountCredentials(Options options, std::vector<std::string> scopes);
|
53
55
|
~ExternalAccountCredentials() override;
|
54
56
|
std::string debug_string() override;
|
55
57
|
|
@@ -81,7 +83,7 @@ class ExternalAccountCredentials
|
|
81
83
|
// the callback function (cb) to pass the subject token (or error)
|
82
84
|
// back.
|
83
85
|
virtual void RetrieveSubjectToken(
|
84
|
-
HTTPRequestContext* ctx, const
|
86
|
+
HTTPRequestContext* ctx, const Options& options,
|
85
87
|
std::function<void(std::string, grpc_error*)> cb) = 0;
|
86
88
|
|
87
89
|
private:
|
@@ -105,7 +107,7 @@ class ExternalAccountCredentials
|
|
105
107
|
|
106
108
|
void FinishTokenFetch(grpc_error* error);
|
107
109
|
|
108
|
-
|
110
|
+
Options options_;
|
109
111
|
std::vector<std::string> scopes_;
|
110
112
|
|
111
113
|
HTTPRequestContext* ctx_ = nullptr;
|
@@ -26,9 +26,9 @@
|
|
26
26
|
namespace grpc_core {
|
27
27
|
|
28
28
|
RefCountedPtr<FileExternalAccountCredentials>
|
29
|
-
FileExternalAccountCredentials::Create(
|
30
|
-
|
31
|
-
|
29
|
+
FileExternalAccountCredentials::Create(Options options,
|
30
|
+
std::vector<std::string> scopes,
|
31
|
+
grpc_error** error) {
|
32
32
|
auto creds = MakeRefCounted<FileExternalAccountCredentials>(
|
33
33
|
std::move(options), std::move(scopes), error);
|
34
34
|
if (*error == GRPC_ERROR_NONE) {
|
@@ -39,8 +39,7 @@ FileExternalAccountCredentials::Create(
|
|
39
39
|
}
|
40
40
|
|
41
41
|
FileExternalAccountCredentials::FileExternalAccountCredentials(
|
42
|
-
|
43
|
-
grpc_error** error)
|
42
|
+
Options options, std::vector<std::string> scopes, grpc_error** error)
|
44
43
|
: ExternalAccountCredentials(options, std::move(scopes)) {
|
45
44
|
auto it = options.credential_source.object_value().find("file");
|
46
45
|
if (it == options.credential_source.object_value().end()) {
|
@@ -92,7 +91,7 @@ FileExternalAccountCredentials::FileExternalAccountCredentials(
|
|
92
91
|
}
|
93
92
|
|
94
93
|
void FileExternalAccountCredentials::RetrieveSubjectToken(
|
95
|
-
HTTPRequestContext* ctx, const
|
94
|
+
HTTPRequestContext* ctx, const Options& options,
|
96
95
|
std::function<void(std::string, grpc_error*)> cb) {
|
97
96
|
struct SliceWrapper {
|
98
97
|
~SliceWrapper() { grpc_slice_unref_internal(slice); }
|
@@ -26,16 +26,15 @@ namespace grpc_core {
|
|
26
26
|
class FileExternalAccountCredentials final : public ExternalAccountCredentials {
|
27
27
|
public:
|
28
28
|
static RefCountedPtr<FileExternalAccountCredentials> Create(
|
29
|
-
|
30
|
-
std::vector<std::string> scopes, grpc_error** error);
|
29
|
+
Options options, std::vector<std::string> scopes, grpc_error** error);
|
31
30
|
|
32
|
-
FileExternalAccountCredentials(
|
31
|
+
FileExternalAccountCredentials(Options options,
|
33
32
|
std::vector<std::string> scopes,
|
34
33
|
grpc_error** error);
|
35
34
|
|
36
35
|
private:
|
37
36
|
void RetrieveSubjectToken(
|
38
|
-
HTTPRequestContext* ctx, const
|
37
|
+
HTTPRequestContext* ctx, const Options& options,
|
39
38
|
std::function<void(std::string, grpc_error*)> cb) override;
|
40
39
|
|
41
40
|
// Fields of credential source
|
@@ -17,12 +17,14 @@
|
|
17
17
|
|
18
18
|
#include "src/core/lib/security/credentials/external/url_external_account_credentials.h"
|
19
19
|
|
20
|
+
#include "absl/strings/str_cat.h"
|
20
21
|
#include "absl/strings/str_format.h"
|
22
|
+
#include "absl/strings/str_split.h"
|
21
23
|
|
22
24
|
namespace grpc_core {
|
23
25
|
|
24
26
|
RefCountedPtr<UrlExternalAccountCredentials>
|
25
|
-
UrlExternalAccountCredentials::Create(
|
27
|
+
UrlExternalAccountCredentials::Create(Options options,
|
26
28
|
std::vector<std::string> scopes,
|
27
29
|
grpc_error** error) {
|
28
30
|
auto creds = MakeRefCounted<UrlExternalAccountCredentials>(
|
@@ -35,8 +37,7 @@ UrlExternalAccountCredentials::Create(ExternalAccountCredentialsOptions options,
|
|
35
37
|
}
|
36
38
|
|
37
39
|
UrlExternalAccountCredentials::UrlExternalAccountCredentials(
|
38
|
-
|
39
|
-
grpc_error** error)
|
40
|
+
Options options, std::vector<std::string> scopes, grpc_error** error)
|
40
41
|
: ExternalAccountCredentials(options, std::move(scopes)) {
|
41
42
|
auto it = options.credential_source.object_value().find("url");
|
42
43
|
if (it == options.credential_source.object_value().end()) {
|
@@ -48,13 +49,19 @@ UrlExternalAccountCredentials::UrlExternalAccountCredentials(
|
|
48
49
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("url field must be a string.");
|
49
50
|
return;
|
50
51
|
}
|
51
|
-
|
52
|
-
if (
|
53
|
-
*error =
|
54
|
-
|
52
|
+
absl::StatusOr<URI> tmp_url = URI::Parse(it->second.string_value());
|
53
|
+
if (!tmp_url.ok()) {
|
54
|
+
*error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
55
|
+
absl::StrFormat("Invalid credential source url. Error: %s",
|
56
|
+
tmp_url.status().ToString())
|
57
|
+
.c_str());
|
55
58
|
return;
|
56
59
|
}
|
57
|
-
url_ =
|
60
|
+
url_ = *tmp_url;
|
61
|
+
// The url must follow the format of <scheme>://<authority>/<path>
|
62
|
+
std::vector<absl::string_view> v =
|
63
|
+
absl::StrSplit(it->second.string_value(), absl::MaxSplits('/', 3));
|
64
|
+
url_full_path_ = absl::StrCat("/", v[3]);
|
58
65
|
it = options.credential_source.object_value().find("headers");
|
59
66
|
if (it != options.credential_source.object_value().end()) {
|
60
67
|
if (it->second.type() != Json::Type::OBJECT) {
|
@@ -104,12 +111,8 @@ UrlExternalAccountCredentials::UrlExternalAccountCredentials(
|
|
104
111
|
}
|
105
112
|
}
|
106
113
|
|
107
|
-
UrlExternalAccountCredentials::~UrlExternalAccountCredentials() {
|
108
|
-
grpc_uri_destroy(url_);
|
109
|
-
}
|
110
|
-
|
111
114
|
void UrlExternalAccountCredentials::RetrieveSubjectToken(
|
112
|
-
HTTPRequestContext* ctx, const
|
115
|
+
HTTPRequestContext* ctx, const Options& options,
|
113
116
|
std::function<void(std::string, grpc_error*)> cb) {
|
114
117
|
if (ctx == nullptr) {
|
115
118
|
FinishRetrieveSubjectToken(
|
@@ -122,8 +125,8 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken(
|
|
122
125
|
cb_ = cb;
|
123
126
|
grpc_httpcli_request request;
|
124
127
|
memset(&request, 0, sizeof(grpc_httpcli_request));
|
125
|
-
request.host = const_cast<char*>(url_
|
126
|
-
request.http.path = gpr_strdup(
|
128
|
+
request.host = const_cast<char*>(url_.authority().c_str());
|
129
|
+
request.http.path = gpr_strdup(url_full_path_.c_str());
|
127
130
|
grpc_http_header* headers = nullptr;
|
128
131
|
request.http.hdr_count = headers_.size();
|
129
132
|
headers = static_cast<grpc_http_header*>(
|
@@ -135,9 +138,8 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken(
|
|
135
138
|
++i;
|
136
139
|
}
|
137
140
|
request.http.hdrs = headers;
|
138
|
-
request.handshaker =
|
139
|
-
|
140
|
-
: &grpc_httpcli_plaintext;
|
141
|
+
request.handshaker =
|
142
|
+
url_.scheme() == "https" ? &grpc_httpcli_ssl : &grpc_httpcli_plaintext;
|
141
143
|
grpc_resource_quota* resource_quota =
|
142
144
|
grpc_resource_quota_create("external_account_credentials");
|
143
145
|
grpc_http_response_destroy(&ctx_->response);
|
@@ -26,17 +26,15 @@ namespace grpc_core {
|
|
26
26
|
class UrlExternalAccountCredentials final : public ExternalAccountCredentials {
|
27
27
|
public:
|
28
28
|
static RefCountedPtr<UrlExternalAccountCredentials> Create(
|
29
|
-
|
30
|
-
std::vector<std::string> scopes, grpc_error** error);
|
29
|
+
Options options, std::vector<std::string> scopes, grpc_error** error);
|
31
30
|
|
32
|
-
UrlExternalAccountCredentials(
|
31
|
+
UrlExternalAccountCredentials(Options options,
|
33
32
|
std::vector<std::string> scopes,
|
34
33
|
grpc_error** error);
|
35
|
-
~UrlExternalAccountCredentials() override;
|
36
34
|
|
37
35
|
private:
|
38
36
|
void RetrieveSubjectToken(
|
39
|
-
HTTPRequestContext* ctx, const
|
37
|
+
HTTPRequestContext* ctx, const Options& options,
|
40
38
|
std::function<void(std::string, grpc_error*)> cb) override;
|
41
39
|
|
42
40
|
static void OnRetrieveSubjectToken(void* arg, grpc_error* error);
|
@@ -45,7 +43,8 @@ class UrlExternalAccountCredentials final : public ExternalAccountCredentials {
|
|
45
43
|
void FinishRetrieveSubjectToken(std::string subject_token, grpc_error* error);
|
46
44
|
|
47
45
|
// Fields of credential source
|
48
|
-
|
46
|
+
URI url_;
|
47
|
+
std::string url_full_path_;
|
49
48
|
std::map<std::string, std::string> headers_;
|
50
49
|
std::string format_type_;
|
51
50
|
std::string format_subject_token_field_name_;
|
@@ -76,7 +76,8 @@ grpc_fake_transport_security_server_credentials_create() {
|
|
76
76
|
|
77
77
|
grpc_arg grpc_fake_transport_expected_targets_arg(char* expected_targets) {
|
78
78
|
return grpc_channel_arg_string_create(
|
79
|
-
(
|
79
|
+
const_cast<char*>(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS),
|
80
|
+
expected_targets);
|
80
81
|
}
|
81
82
|
|
82
83
|
const char* grpc_fake_transport_get_expected_targets(
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <grpc/support/sync.h>
|
28
28
|
|
29
29
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
30
|
+
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
|
30
31
|
#include "src/core/lib/channel/channel_args.h"
|
31
32
|
#include "src/core/lib/gpr/env.h"
|
32
33
|
#include "src/core/lib/gpr/string.h"
|
@@ -37,6 +38,7 @@
|
|
37
38
|
#include "src/core/lib/iomgr/polling_entity.h"
|
38
39
|
#include "src/core/lib/security/credentials/alts/alts_credentials.h"
|
39
40
|
#include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
|
41
|
+
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
|
40
42
|
#include "src/core/lib/security/credentials/google_default/google_default_credentials.h"
|
41
43
|
#include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
|
42
44
|
#include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
|
@@ -80,21 +82,22 @@ grpc_google_default_channel_credentials::create_security_connector(
|
|
80
82
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
81
83
|
const char* target, const grpc_channel_args* args,
|
82
84
|
grpc_channel_args** new_args) {
|
83
|
-
bool is_grpclb_load_balancer =
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
85
|
+
const bool is_grpclb_load_balancer = grpc_channel_args_find_bool(
|
86
|
+
args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, false);
|
87
|
+
const bool is_backend_from_grpclb_load_balancer = grpc_channel_args_find_bool(
|
88
|
+
args, GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER, false);
|
89
|
+
const char* xds_cluster =
|
90
|
+
grpc_channel_args_find_string(args, GRPC_ARG_XDS_CLUSTER_NAME);
|
91
|
+
const bool is_xds_non_cfe_cluster =
|
92
|
+
xds_cluster != nullptr && strcmp(xds_cluster, "google_cfe") != 0;
|
93
|
+
const bool use_alts = is_grpclb_load_balancer ||
|
94
|
+
is_backend_from_grpclb_load_balancer ||
|
95
|
+
is_xds_non_cfe_cluster;
|
92
96
|
/* Return failure if ALTS is selected but not running on GCE. */
|
93
97
|
if (use_alts && alts_creds_ == nullptr) {
|
94
98
|
gpr_log(GPR_ERROR, "ALTS is selected, but not running on GCE.");
|
95
99
|
return nullptr;
|
96
100
|
}
|
97
|
-
|
98
101
|
grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
|
99
102
|
use_alts ? alts_creds_->create_security_connector(call_creds, target,
|
100
103
|
args, new_args)
|
@@ -175,8 +178,8 @@ static int is_metadata_server_reachable() {
|
|
175
178
|
detector.is_done = 0;
|
176
179
|
detector.success = 0;
|
177
180
|
memset(&request, 0, sizeof(grpc_httpcli_request));
|
178
|
-
request.host = (
|
179
|
-
request.http.path = (
|
181
|
+
request.host = const_cast<char*>(GRPC_COMPUTE_ENGINE_DETECTION_HOST);
|
182
|
+
request.http.path = const_cast<char*>("/");
|
180
183
|
grpc_httpcli_context_init(&context);
|
181
184
|
grpc_resource_quota* resource_quota =
|
182
185
|
grpc_resource_quota_create("google_default_credentials");
|
@@ -267,6 +270,9 @@ static grpc_error* create_default_creds_from_path(
|
|
267
270
|
goto end;
|
268
271
|
}
|
269
272
|
|
273
|
+
/* Finally try an external account credentials.*/
|
274
|
+
result = grpc_core::ExternalAccountCredentials::Create(json, {}, &error);
|
275
|
+
|
270
276
|
end:
|
271
277
|
GPR_ASSERT((result == nullptr) + (error == GRPC_ERROR_NONE) == 1);
|
272
278
|
grpc_slice_unref_internal(creds_data);
|
@@ -30,12 +30,10 @@ constexpr char kCredentialsTypeInsecure[] = "insecure";
|
|
30
30
|
|
31
31
|
class InsecureCredentials final : public grpc_channel_credentials {
|
32
32
|
public:
|
33
|
-
|
34
|
-
: grpc_channel_credentials(kCredentialsTypeInsecure) {}
|
33
|
+
InsecureCredentials() : grpc_channel_credentials(kCredentialsTypeInsecure) {}
|
35
34
|
|
36
|
-
|
37
|
-
|
38
|
-
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
35
|
+
RefCountedPtr<grpc_channel_security_connector> create_security_connector(
|
36
|
+
RefCountedPtr<grpc_call_credentials> call_creds,
|
39
37
|
const char* /* target_name */, const grpc_channel_args* /* args */,
|
40
38
|
grpc_channel_args** /* new_args */) override {
|
41
39
|
return MakeRefCounted<InsecureChannelSecurityConnector>(
|
@@ -43,9 +41,24 @@ class InsecureCredentials final : public grpc_channel_credentials {
|
|
43
41
|
}
|
44
42
|
};
|
45
43
|
|
44
|
+
class InsecureServerCredentials final : public grpc_server_credentials {
|
45
|
+
public:
|
46
|
+
InsecureServerCredentials()
|
47
|
+
: grpc_server_credentials(kCredentialsTypeInsecure) {}
|
48
|
+
|
49
|
+
RefCountedPtr<grpc_server_security_connector> create_security_connector()
|
50
|
+
override {
|
51
|
+
return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
|
52
|
+
}
|
53
|
+
};
|
54
|
+
|
46
55
|
} // namespace
|
47
56
|
} // namespace grpc_core
|
48
57
|
|
49
58
|
grpc_channel_credentials* grpc_insecure_credentials_create() {
|
50
59
|
return new grpc_core::InsecureCredentials();
|
51
60
|
}
|
61
|
+
|
62
|
+
grpc_server_credentials* grpc_insecure_server_credentials_create() {
|
63
|
+
return new grpc_core::InsecureServerCredentials();
|
64
|
+
}
|
@@ -112,7 +112,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
|
|
112
112
|
goto end;
|
113
113
|
}
|
114
114
|
result.private_key =
|
115
|
-
PEM_read_bio_RSAPrivateKey(bio, nullptr, nullptr, (
|
115
|
+
PEM_read_bio_RSAPrivateKey(bio, nullptr, nullptr, const_cast<char*>(""));
|
116
116
|
if (result.private_key == nullptr) {
|
117
117
|
gpr_log(GPR_ERROR, "Could not deserialize private key.");
|
118
118
|
goto end;
|
@@ -696,7 +696,7 @@ static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) {
|
|
696
696
|
req.host = gpr_strdup(jwks_uri);
|
697
697
|
req.http.path = const_cast<char*>(strchr(jwks_uri, '/'));
|
698
698
|
if (req.http.path == nullptr) {
|
699
|
-
req.http.path = (
|
699
|
+
req.http.path = const_cast<char*>("");
|
700
700
|
} else {
|
701
701
|
*(req.host + (req.http.path - jwks_uri)) = '\0';
|
702
702
|
}
|
@@ -757,8 +757,8 @@ const char* grpc_jwt_issuer_email_domain(const char* issuer) {
|
|
757
757
|
if (dot == nullptr || dot == email_domain) return email_domain;
|
758
758
|
GPR_ASSERT(dot > email_domain);
|
759
759
|
/* There may be a subdomain, we just want the domain. */
|
760
|
-
dot = static_cast<const char*>(
|
761
|
-
(
|
760
|
+
dot = static_cast<const char*>(
|
761
|
+
gpr_memrchr(email_domain, '.', static_cast<size_t>(dot - email_domain)));
|
762
762
|
if (dot == nullptr) return email_domain;
|
763
763
|
return dot + 1;
|
764
764
|
}
|
@@ -386,8 +386,9 @@ class grpc_compute_engine_token_fetcher_credentials
|
|
386
386
|
const_cast<char*>("Google")};
|
387
387
|
grpc_httpcli_request request;
|
388
388
|
memset(&request, 0, sizeof(grpc_httpcli_request));
|
389
|
-
request.host = (
|
390
|
-
request.http.path =
|
389
|
+
request.host = const_cast<char*>(GRPC_COMPUTE_ENGINE_METADATA_HOST);
|
390
|
+
request.http.path =
|
391
|
+
const_cast<char*>(GRPC_COMPUTE_ENGINE_METADATA_TOKEN_PATH);
|
391
392
|
request.http.hdr_count = 1;
|
392
393
|
request.http.hdrs = &header;
|
393
394
|
/* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
|
@@ -445,8 +446,8 @@ void grpc_google_refresh_token_credentials::fetch_oauth2(
|
|
445
446
|
GRPC_REFRESH_TOKEN_POST_BODY_FORMAT_STRING, refresh_token_.client_id,
|
446
447
|
refresh_token_.client_secret, refresh_token_.refresh_token);
|
447
448
|
memset(&request, 0, sizeof(grpc_httpcli_request));
|
448
|
-
request.host = (
|
449
|
-
request.http.path = (
|
449
|
+
request.host = const_cast<char*>(GRPC_GOOGLE_OAUTH2_SERVICE_HOST);
|
450
|
+
request.http.path = const_cast<char*>(GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH);
|
450
451
|
request.http.hdr_count = 1;
|
451
452
|
request.http.hdrs = &header;
|
452
453
|
request.handshaker = &grpc_httpcli_ssl;
|
@@ -537,9 +538,9 @@ grpc_error* LoadTokenFile(const char* path, gpr_slice* token) {
|
|
537
538
|
class StsTokenFetcherCredentials
|
538
539
|
: public grpc_oauth2_token_fetcher_credentials {
|
539
540
|
public:
|
540
|
-
StsTokenFetcherCredentials(
|
541
|
+
StsTokenFetcherCredentials(URI sts_url,
|
541
542
|
const grpc_sts_credentials_options* options)
|
542
|
-
: sts_url_(sts_url),
|
543
|
+
: sts_url_(std::move(sts_url)),
|
543
544
|
resource_(gpr_strdup(options->resource)),
|
544
545
|
audience_(gpr_strdup(options->audience)),
|
545
546
|
scope_(gpr_strdup(options->scope)),
|
@@ -549,12 +550,10 @@ class StsTokenFetcherCredentials
|
|
549
550
|
actor_token_path_(gpr_strdup(options->actor_token_path)),
|
550
551
|
actor_token_type_(gpr_strdup(options->actor_token_type)) {}
|
551
552
|
|
552
|
-
~StsTokenFetcherCredentials() override { grpc_uri_destroy(sts_url_); }
|
553
|
-
|
554
553
|
std::string debug_string() override {
|
555
554
|
return absl::StrFormat(
|
556
|
-
"StsTokenFetcherCredentials{Path:%s,Authority:%s,%s}", sts_url_
|
557
|
-
sts_url_
|
555
|
+
"StsTokenFetcherCredentials{Path:%s,Authority:%s,%s}", sts_url_.path(),
|
556
|
+
sts_url_.authority(),
|
558
557
|
grpc_oauth2_token_fetcher_credentials::debug_string());
|
559
558
|
}
|
560
559
|
|
@@ -577,11 +576,11 @@ class StsTokenFetcherCredentials
|
|
577
576
|
const_cast<char*>("application/x-www-form-urlencoded")};
|
578
577
|
grpc_httpcli_request request;
|
579
578
|
memset(&request, 0, sizeof(grpc_httpcli_request));
|
580
|
-
request.host = (
|
581
|
-
request.http.path = (
|
579
|
+
request.host = const_cast<char*>(sts_url_.authority().c_str());
|
580
|
+
request.http.path = const_cast<char*>(sts_url_.path().c_str());
|
582
581
|
request.http.hdr_count = 1;
|
583
582
|
request.http.hdrs = &header;
|
584
|
-
request.handshaker = (
|
583
|
+
request.handshaker = (sts_url_.scheme() == "https")
|
585
584
|
? &grpc_httpcli_ssl
|
586
585
|
: &grpc_httpcli_plaintext;
|
587
586
|
/* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
|
@@ -641,7 +640,7 @@ class StsTokenFetcherCredentials
|
|
641
640
|
return cleanup();
|
642
641
|
}
|
643
642
|
|
644
|
-
|
643
|
+
URI sts_url_;
|
645
644
|
grpc_closure http_post_cb_closure_;
|
646
645
|
grpc_core::UniquePtr<char> resource_;
|
647
646
|
grpc_core::UniquePtr<char> audience_;
|
@@ -655,26 +654,21 @@ class StsTokenFetcherCredentials
|
|
655
654
|
|
656
655
|
} // namespace
|
657
656
|
|
658
|
-
|
659
|
-
const grpc_sts_credentials_options* options
|
660
|
-
struct GrpcUriDeleter {
|
661
|
-
void operator()(grpc_uri* uri) { grpc_uri_destroy(uri); }
|
662
|
-
};
|
663
|
-
*sts_url_out = nullptr;
|
657
|
+
absl::StatusOr<URI> ValidateStsCredentialsOptions(
|
658
|
+
const grpc_sts_credentials_options* options) {
|
664
659
|
absl::InlinedVector<grpc_error*, 3> error_list;
|
665
|
-
|
666
|
-
options->token_exchange_service_uri
|
667
|
-
|
668
|
-
|
669
|
-
if (sts_url
|
660
|
+
absl::StatusOr<URI> sts_url =
|
661
|
+
URI::Parse(options->token_exchange_service_uri == nullptr
|
662
|
+
? ""
|
663
|
+
: options->token_exchange_service_uri);
|
664
|
+
if (!sts_url.ok()) {
|
665
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
666
|
+
absl::StrFormat("Invalid or missing STS endpoint URL. Error: %s",
|
667
|
+
sts_url.status().ToString())
|
668
|
+
.c_str()));
|
669
|
+
} else if (sts_url->scheme() != "https" && sts_url->scheme() != "http") {
|
670
670
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
671
|
-
"Invalid
|
672
|
-
} else {
|
673
|
-
if (strcmp(sts_url->scheme, "https") != 0 &&
|
674
|
-
strcmp(sts_url->scheme, "http") != 0) {
|
675
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
676
|
-
"Invalid URI scheme, must be https to http."));
|
677
|
-
}
|
671
|
+
"Invalid URI scheme, must be https to http."));
|
678
672
|
}
|
679
673
|
if (options->subject_token_path == nullptr ||
|
680
674
|
strlen(options->subject_token_path) == 0) {
|
@@ -687,12 +681,13 @@ grpc_error* ValidateStsCredentialsOptions(
|
|
687
681
|
"subject_token_type needs to be specified"));
|
688
682
|
}
|
689
683
|
if (error_list.empty()) {
|
690
|
-
|
691
|
-
return GRPC_ERROR_NONE;
|
692
|
-
} else {
|
693
|
-
return GRPC_ERROR_CREATE_FROM_VECTOR("Invalid STS Credentials Options",
|
694
|
-
&error_list);
|
684
|
+
return sts_url;
|
695
685
|
}
|
686
|
+
auto grpc_error_vec = GRPC_ERROR_CREATE_FROM_VECTOR(
|
687
|
+
"Invalid STS Credentials Options", &error_list);
|
688
|
+
auto retval = absl::InvalidArgumentError(grpc_error_string(grpc_error_vec));
|
689
|
+
GRPC_ERROR_UNREF(grpc_error_vec);
|
690
|
+
return retval;
|
696
691
|
}
|
697
692
|
|
698
693
|
} // namespace grpc_core
|
@@ -700,17 +695,15 @@ grpc_error* ValidateStsCredentialsOptions(
|
|
700
695
|
grpc_call_credentials* grpc_sts_credentials_create(
|
701
696
|
const grpc_sts_credentials_options* options, void* reserved) {
|
702
697
|
GPR_ASSERT(reserved == nullptr);
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
if (error != GRPC_ERROR_NONE) {
|
698
|
+
absl::StatusOr<grpc_core::URI> sts_url =
|
699
|
+
grpc_core::ValidateStsCredentialsOptions(options);
|
700
|
+
if (!sts_url.ok()) {
|
707
701
|
gpr_log(GPR_ERROR, "STS Credentials creation failed. Error: %s.",
|
708
|
-
|
709
|
-
GRPC_ERROR_UNREF(error);
|
702
|
+
sts_url.status().ToString().c_str());
|
710
703
|
return nullptr;
|
711
704
|
}
|
712
705
|
return grpc_core::MakeRefCounted<grpc_core::StsTokenFetcherCredentials>(
|
713
|
-
sts_url, options)
|
706
|
+
std::move(*sts_url), options)
|
714
707
|
.release();
|
715
708
|
}
|
716
709
|
|