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
@@ -134,7 +134,7 @@ class grpc_alts_channel_security_connector final
|
|
134
134
|
class grpc_alts_server_security_connector final
|
135
135
|
: public grpc_server_security_connector {
|
136
136
|
public:
|
137
|
-
grpc_alts_server_security_connector(
|
137
|
+
explicit grpc_alts_server_security_connector(
|
138
138
|
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
|
139
139
|
: grpc_server_security_connector(GRPC_ALTS_URL_SCHEME,
|
140
140
|
std::move(server_creds)) {}
|
@@ -275,7 +275,7 @@ void grpc_fake_channel_security_connector::check_peer(
|
|
275
275
|
class grpc_fake_server_security_connector
|
276
276
|
: public grpc_server_security_connector {
|
277
277
|
public:
|
278
|
-
grpc_fake_server_security_connector(
|
278
|
+
explicit grpc_fake_server_security_connector(
|
279
279
|
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
|
280
280
|
: grpc_server_security_connector(GRPC_FAKE_SECURITY_URL_SCHEME,
|
281
281
|
std::move(server_creds)) {}
|
@@ -28,6 +28,26 @@ namespace grpc_core {
|
|
28
28
|
|
29
29
|
const char kInsecureTransportSecurityType[] = "insecure";
|
30
30
|
|
31
|
+
namespace {
|
32
|
+
|
33
|
+
RefCountedPtr<grpc_auth_context> MakeAuthContext() {
|
34
|
+
auto ctx = MakeRefCounted<grpc_auth_context>(nullptr);
|
35
|
+
grpc_auth_context_add_cstring_property(
|
36
|
+
ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
|
37
|
+
kInsecureTransportSecurityType);
|
38
|
+
const char* security_level = tsi_security_level_to_string(TSI_SECURITY_NONE);
|
39
|
+
grpc_auth_context_add_property(ctx.get(),
|
40
|
+
GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME,
|
41
|
+
security_level, strlen(security_level));
|
42
|
+
return ctx;
|
43
|
+
}
|
44
|
+
|
45
|
+
} // namespace
|
46
|
+
|
47
|
+
RefCountedPtr<grpc_auth_context> TestOnlyMakeInsecureAuthContext() {
|
48
|
+
return MakeAuthContext();
|
49
|
+
}
|
50
|
+
|
31
51
|
// check_call_host and cancel_check_call_host are no-ops since we want to
|
32
52
|
// provide an insecure channel.
|
33
53
|
bool InsecureChannelSecurityConnector::check_call_host(
|
@@ -70,19 +90,32 @@ int InsecureChannelSecurityConnector::cmp(
|
|
70
90
|
static_cast<const grpc_channel_security_connector*>(other_sc));
|
71
91
|
}
|
72
92
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
93
|
+
// add_handshakers should have been a no-op but we need to add a minimalist
|
94
|
+
// security handshaker so that check_peer is invoked and an auth_context is
|
95
|
+
// created with the security level of TSI_SECURITY_NONE.
|
96
|
+
void InsecureServerSecurityConnector::add_handshakers(
|
97
|
+
const grpc_channel_args* args, grpc_pollset_set* /* interested_parties */,
|
98
|
+
grpc_core::HandshakeManager* handshake_manager) {
|
99
|
+
tsi_handshaker* handshaker = nullptr;
|
100
|
+
// Re-use local_tsi_handshaker_create as a minimalist handshaker.
|
101
|
+
GPR_ASSERT(tsi_local_handshaker_create(false /* is_client */, &handshaker) ==
|
102
|
+
TSI_OK);
|
103
|
+
handshake_manager->Add(SecurityHandshakerCreate(handshaker, this, args));
|
104
|
+
}
|
105
|
+
|
106
|
+
void InsecureServerSecurityConnector::check_peer(
|
107
|
+
tsi_peer peer, grpc_endpoint* ep,
|
108
|
+
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
|
109
|
+
grpc_closure* on_peer_checked) {
|
110
|
+
*auth_context = MakeAuthContext();
|
111
|
+
tsi_peer_destruct(&peer);
|
112
|
+
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, GRPC_ERROR_NONE);
|
113
|
+
}
|
114
|
+
|
115
|
+
int InsecureServerSecurityConnector::cmp(
|
116
|
+
const grpc_security_connector* other) const {
|
117
|
+
return server_security_connector_cmp(
|
118
|
+
static_cast<const grpc_server_security_connector*>(other));
|
86
119
|
}
|
87
120
|
|
88
121
|
} // namespace grpc_core
|
@@ -29,6 +29,12 @@ namespace grpc_core {
|
|
29
29
|
|
30
30
|
extern const char kInsecureTransportSecurityType[];
|
31
31
|
|
32
|
+
// Exposed for testing purposes only.
|
33
|
+
// Create an auth context which is necessary to pass the santiy check in
|
34
|
+
// client_auth_filter that verifies if the peer's auth context is obtained
|
35
|
+
// during handshakes.
|
36
|
+
RefCountedPtr<grpc_auth_context> TestOnlyMakeInsecureAuthContext();
|
37
|
+
|
32
38
|
class InsecureChannelSecurityConnector
|
33
39
|
: public grpc_channel_security_connector {
|
34
40
|
public:
|
@@ -55,13 +61,24 @@ class InsecureChannelSecurityConnector
|
|
55
61
|
grpc_closure* on_peer_checked) override;
|
56
62
|
|
57
63
|
int cmp(const grpc_security_connector* other_sc) const override;
|
64
|
+
};
|
65
|
+
|
66
|
+
class InsecureServerSecurityConnector : public grpc_server_security_connector {
|
67
|
+
public:
|
68
|
+
explicit InsecureServerSecurityConnector(
|
69
|
+
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
|
70
|
+
: grpc_server_security_connector(nullptr /* url_scheme */,
|
71
|
+
std::move(server_creds)) {}
|
72
|
+
|
73
|
+
void add_handshakers(const grpc_channel_args* args,
|
74
|
+
grpc_pollset_set* /* interested_parties */,
|
75
|
+
grpc_core::HandshakeManager* handshake_manager) override;
|
76
|
+
|
77
|
+
void check_peer(tsi_peer peer, grpc_endpoint* ep,
|
78
|
+
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
|
79
|
+
grpc_closure* on_peer_checked) override;
|
58
80
|
|
59
|
-
|
60
|
-
// Create an auth context which is necessary to pass the santiy check in
|
61
|
-
// client_auth_filter that verifies if the peer's auth context is obtained
|
62
|
-
// during handshakes. The auth context is only checked for its existence and
|
63
|
-
// not actually used.
|
64
|
-
static RefCountedPtr<grpc_auth_context> MakeAuthContext();
|
81
|
+
int cmp(const grpc_security_connector* other) const override;
|
65
82
|
};
|
66
83
|
|
67
84
|
} // namespace grpc_core
|
@@ -206,7 +206,7 @@ class grpc_local_channel_security_connector final
|
|
206
206
|
class grpc_local_server_security_connector final
|
207
207
|
: public grpc_server_security_connector {
|
208
208
|
public:
|
209
|
-
grpc_local_server_security_connector(
|
209
|
+
explicit grpc_local_server_security_connector(
|
210
210
|
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
|
211
211
|
: grpc_server_security_connector(nullptr, std::move(server_creds)) {}
|
212
212
|
~grpc_local_server_security_connector() override = default;
|
@@ -104,8 +104,9 @@ static const grpc_arg_pointer_vtable connector_arg_vtable = {
|
|
104
104
|
connector_arg_copy, connector_arg_destroy, connector_cmp};
|
105
105
|
|
106
106
|
grpc_arg grpc_security_connector_to_arg(grpc_security_connector* sc) {
|
107
|
-
return grpc_channel_arg_pointer_create(
|
108
|
-
|
107
|
+
return grpc_channel_arg_pointer_create(
|
108
|
+
const_cast<char*>(GRPC_ARG_SECURITY_CONNECTOR), sc,
|
109
|
+
&connector_arg_vtable);
|
109
110
|
}
|
110
111
|
|
111
112
|
grpc_security_connector* grpc_security_connector_from_arg(const grpc_arg* arg) {
|
@@ -111,7 +111,7 @@ class grpc_ssl_channel_security_connector final
|
|
111
111
|
const tsi_result result =
|
112
112
|
tsi_create_ssl_client_handshaker_factory_with_options(
|
113
113
|
&options, &client_handshaker_factory_);
|
114
|
-
gpr_free(
|
114
|
+
gpr_free(options.alpn_protocols);
|
115
115
|
if (result != TSI_OK) {
|
116
116
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
117
117
|
tsi_result_to_string(result));
|
@@ -206,7 +206,7 @@ class grpc_ssl_channel_security_connector final
|
|
206
206
|
class grpc_ssl_server_security_connector
|
207
207
|
: public grpc_server_security_connector {
|
208
208
|
public:
|
209
|
-
grpc_ssl_server_security_connector(
|
209
|
+
explicit grpc_ssl_server_security_connector(
|
210
210
|
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
|
211
211
|
: grpc_server_security_connector(GRPC_SSL_URL_SCHEME,
|
212
212
|
std::move(server_creds)) {}
|
@@ -258,7 +258,7 @@ class grpc_ssl_server_security_connector
|
|
258
258
|
const tsi_result result =
|
259
259
|
tsi_create_ssl_server_handshaker_factory_with_options(
|
260
260
|
&options, &server_handshaker_factory_);
|
261
|
-
gpr_free(
|
261
|
+
gpr_free(alpn_protocol_strings);
|
262
262
|
if (result != TSI_OK) {
|
263
263
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
264
264
|
tsi_result_to_string(result));
|
@@ -368,7 +368,7 @@ class grpc_ssl_server_security_connector
|
|
368
368
|
grpc_tsi_ssl_pem_key_cert_pairs_destroy(
|
369
369
|
const_cast<tsi_ssl_pem_key_cert_pair*>(options.pem_key_cert_pairs),
|
370
370
|
options.num_key_cert_pairs);
|
371
|
-
gpr_free(
|
371
|
+
gpr_free(alpn_protocol_strings);
|
372
372
|
|
373
373
|
if (result != TSI_OK) {
|
374
374
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
@@ -427,7 +427,7 @@ grpc_security_status grpc_ssl_tsi_client_handshaker_factory_init(
|
|
427
427
|
const tsi_result result =
|
428
428
|
tsi_create_ssl_client_handshaker_factory_with_options(&options,
|
429
429
|
handshaker_factory);
|
430
|
-
gpr_free(
|
430
|
+
gpr_free(options.alpn_protocols);
|
431
431
|
if (result != TSI_OK) {
|
432
432
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
433
433
|
tsi_result_to_string(result));
|
@@ -459,7 +459,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
459
459
|
const tsi_result result =
|
460
460
|
tsi_create_ssl_server_handshaker_factory_with_options(&options,
|
461
461
|
handshaker_factory);
|
462
|
-
gpr_free(
|
462
|
+
gpr_free(alpn_protocol_strings);
|
463
463
|
if (result != TSI_OK) {
|
464
464
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
465
465
|
tsi_result_to_string(result));
|
@@ -145,13 +145,8 @@ class DefaultSslRootStore {
|
|
145
145
|
|
146
146
|
class PemKeyCertPair {
|
147
147
|
public:
|
148
|
-
|
149
|
-
|
150
|
-
explicit PemKeyCertPair(grpc_ssl_pem_key_cert_pair* pair)
|
151
|
-
: private_key_(const_cast<char*>(pair->private_key)),
|
152
|
-
cert_chain_(const_cast<char*>(pair->cert_chain)) {
|
153
|
-
gpr_free(pair);
|
154
|
-
}
|
148
|
+
PemKeyCertPair(absl::string_view private_key, absl::string_view cert_chain)
|
149
|
+
: private_key_(private_key), cert_chain_(cert_chain) {}
|
155
150
|
|
156
151
|
// Movable.
|
157
152
|
PemKeyCertPair(PemKeyCertPair&& other) noexcept {
|
@@ -166,30 +161,28 @@ class PemKeyCertPair {
|
|
166
161
|
|
167
162
|
// Copyable.
|
168
163
|
PemKeyCertPair(const PemKeyCertPair& other)
|
169
|
-
: private_key_(
|
170
|
-
cert_chain_(gpr_strdup(other.cert_chain())) {}
|
164
|
+
: private_key_(other.private_key()), cert_chain_(other.cert_chain()) {}
|
171
165
|
PemKeyCertPair& operator=(const PemKeyCertPair& other) {
|
172
|
-
private_key_ =
|
173
|
-
cert_chain_ =
|
166
|
+
private_key_ = other.private_key();
|
167
|
+
cert_chain_ = other.cert_chain();
|
174
168
|
return *this;
|
175
169
|
}
|
176
170
|
|
177
171
|
bool operator==(const PemKeyCertPair& other) const {
|
178
|
-
return
|
179
|
-
|
172
|
+
return this->private_key() == other.private_key() &&
|
173
|
+
this->cert_chain() == other.cert_chain();
|
180
174
|
}
|
181
175
|
|
182
|
-
|
183
|
-
|
176
|
+
const std::string& private_key() const { return private_key_; }
|
177
|
+
const std::string& cert_chain() const { return cert_chain_; }
|
184
178
|
|
185
179
|
private:
|
186
|
-
|
187
|
-
|
180
|
+
std::string private_key_;
|
181
|
+
std::string cert_chain_;
|
188
182
|
};
|
189
183
|
|
190
184
|
typedef absl::InlinedVector<grpc_core::PemKeyCertPair, 1> PemKeyCertPairList;
|
191
185
|
|
192
186
|
} // namespace grpc_core
|
193
187
|
|
194
|
-
#endif
|
195
|
-
*/
|
188
|
+
#endif // GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_UTILS_H
|
@@ -55,10 +55,12 @@ tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
|
|
55
55
|
gpr_zalloc(num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair)));
|
56
56
|
}
|
57
57
|
for (size_t i = 0; i < num_key_cert_pairs; i++) {
|
58
|
-
GPR_ASSERT(cert_pair_list[i].private_key()
|
59
|
-
GPR_ASSERT(cert_pair_list[i].cert_chain()
|
60
|
-
tsi_pairs[i].cert_chain =
|
61
|
-
|
58
|
+
GPR_ASSERT(!cert_pair_list[i].private_key().empty());
|
59
|
+
GPR_ASSERT(!cert_pair_list[i].cert_chain().empty());
|
60
|
+
tsi_pairs[i].cert_chain =
|
61
|
+
gpr_strdup(cert_pair_list[i].cert_chain().c_str());
|
62
|
+
tsi_pairs[i].private_key =
|
63
|
+
gpr_strdup(cert_pair_list[i].private_key().c_str());
|
62
64
|
}
|
63
65
|
return tsi_pairs;
|
64
66
|
}
|
@@ -68,12 +70,12 @@ tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
|
|
68
70
|
// -------------------channel security connector-------------------
|
69
71
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
70
72
|
TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
|
71
|
-
grpc_core::RefCountedPtr<grpc_channel_credentials>
|
73
|
+
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
|
72
74
|
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
|
73
75
|
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
|
74
76
|
const char* target_name, const char* overridden_target_name,
|
75
77
|
tsi_ssl_session_cache* ssl_session_cache) {
|
76
|
-
if (
|
78
|
+
if (channel_creds == nullptr) {
|
77
79
|
gpr_log(GPR_ERROR,
|
78
80
|
"channel_creds is nullptr in "
|
79
81
|
"TlsChannelSecurityConnectorCreate()");
|
@@ -93,19 +95,20 @@ TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
|
|
93
95
|
}
|
94
96
|
grpc_core::RefCountedPtr<TlsChannelSecurityConnector> c =
|
95
97
|
grpc_core::MakeRefCounted<TlsChannelSecurityConnector>(
|
96
|
-
std::move(
|
98
|
+
std::move(channel_creds), std::move(options),
|
97
99
|
std::move(request_metadata_creds), target_name,
|
98
100
|
overridden_target_name, ssl_session_cache);
|
99
101
|
return c;
|
100
102
|
}
|
101
103
|
|
102
104
|
TlsChannelSecurityConnector::TlsChannelSecurityConnector(
|
103
|
-
grpc_core::RefCountedPtr<grpc_channel_credentials>
|
105
|
+
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
|
104
106
|
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
|
105
107
|
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
|
106
108
|
const char* target_name, const char* overridden_target_name,
|
107
109
|
tsi_ssl_session_cache* ssl_session_cache)
|
108
|
-
: grpc_channel_security_connector(GRPC_SSL_URL_SCHEME,
|
110
|
+
: grpc_channel_security_connector(GRPC_SSL_URL_SCHEME,
|
111
|
+
std::move(channel_creds),
|
109
112
|
std::move(request_metadata_creds)),
|
110
113
|
options_(std::move(options)),
|
111
114
|
overridden_target_name_(
|
@@ -240,6 +243,39 @@ void TlsChannelSecurityConnector::check_peer(
|
|
240
243
|
: check_arg_->peer_cert_full_chain;
|
241
244
|
gpr_free(peer_pem_chain);
|
242
245
|
}
|
246
|
+
// TODO(zhenlian) - This should be cleaned up as part of the custom
|
247
|
+
// verification changes. Fill in the subject alternative names
|
248
|
+
std::vector<char*> subject_alternative_names;
|
249
|
+
for (size_t i = 0; i < peer.property_count; i++) {
|
250
|
+
const tsi_peer_property* prop = &peer.properties[i];
|
251
|
+
if (strcmp(prop->name,
|
252
|
+
TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY) == 0) {
|
253
|
+
char* san = new char[prop->value.length + 1];
|
254
|
+
memcpy(san, prop->value.data, prop->value.length);
|
255
|
+
san[prop->value.length] = '\0';
|
256
|
+
subject_alternative_names.emplace_back(san);
|
257
|
+
}
|
258
|
+
}
|
259
|
+
if (check_arg_->subject_alternative_names != nullptr) {
|
260
|
+
for (size_t i = 0; i < check_arg_->subject_alternative_names_size;
|
261
|
+
++i) {
|
262
|
+
delete[] check_arg_->subject_alternative_names[i];
|
263
|
+
}
|
264
|
+
delete[] check_arg_->subject_alternative_names;
|
265
|
+
}
|
266
|
+
check_arg_->subject_alternative_names_size =
|
267
|
+
subject_alternative_names.size();
|
268
|
+
if (subject_alternative_names.empty()) {
|
269
|
+
check_arg_->subject_alternative_names = nullptr;
|
270
|
+
} else {
|
271
|
+
check_arg_->subject_alternative_names =
|
272
|
+
new char*[check_arg_->subject_alternative_names_size];
|
273
|
+
for (size_t i = 0; i < check_arg_->subject_alternative_names_size;
|
274
|
+
++i) {
|
275
|
+
check_arg_->subject_alternative_names[i] =
|
276
|
+
subject_alternative_names[i];
|
277
|
+
}
|
278
|
+
}
|
243
279
|
int callback_status = config->Schedule(check_arg_);
|
244
280
|
/* Server authorization check is handled asynchronously. */
|
245
281
|
if (callback_status) {
|
@@ -406,6 +442,11 @@ TlsChannelSecurityConnector::ServerAuthorizationCheckArgCreate(
|
|
406
442
|
void* user_data) {
|
407
443
|
grpc_tls_server_authorization_check_arg* arg =
|
408
444
|
new grpc_tls_server_authorization_check_arg();
|
445
|
+
arg->target_name = nullptr;
|
446
|
+
arg->peer_cert = nullptr;
|
447
|
+
arg->peer_cert_full_chain = nullptr;
|
448
|
+
arg->subject_alternative_names = nullptr;
|
449
|
+
arg->subject_alternative_names_size = 0;
|
409
450
|
arg->error_details = new grpc_tls_error_details();
|
410
451
|
arg->cb = ServerAuthorizationCheckDone;
|
411
452
|
arg->cb_user_data = user_data;
|
@@ -418,9 +459,13 @@ void TlsChannelSecurityConnector::ServerAuthorizationCheckArgDestroy(
|
|
418
459
|
if (arg == nullptr) {
|
419
460
|
return;
|
420
461
|
}
|
421
|
-
gpr_free((
|
422
|
-
gpr_free((
|
423
|
-
|
462
|
+
gpr_free(const_cast<char*>(arg->target_name));
|
463
|
+
gpr_free(const_cast<char*>(arg->peer_cert));
|
464
|
+
gpr_free(const_cast<char*>(arg->peer_cert_full_chain));
|
465
|
+
for (size_t i = 0; i < arg->subject_alternative_names_size; ++i) {
|
466
|
+
delete[] arg->subject_alternative_names[i];
|
467
|
+
}
|
468
|
+
delete[] arg->subject_alternative_names;
|
424
469
|
delete arg->error_details;
|
425
470
|
if (arg->destroy_context != nullptr) {
|
426
471
|
arg->destroy_context(arg->context);
|
@@ -74,13 +74,12 @@ class TlsChannelSecurityConnector final
|
|
74
74
|
return client_handshaker_factory_;
|
75
75
|
};
|
76
76
|
|
77
|
-
|
77
|
+
absl::optional<absl::string_view> RootCertsForTesting() {
|
78
78
|
grpc_core::MutexLock lock(&mu_);
|
79
79
|
return pem_root_certs_;
|
80
80
|
}
|
81
81
|
|
82
|
-
|
83
|
-
KeyCertPairListForTesting() {
|
82
|
+
absl::optional<grpc_core::PemKeyCertPairList> KeyCertPairListForTesting() {
|
84
83
|
grpc_core::MutexLock lock(&mu_);
|
85
84
|
return pem_key_cert_pair_list_;
|
86
85
|
}
|
@@ -443,10 +443,10 @@ static const grpc_endpoint_vtable vtable = {endpoint_read,
|
|
443
443
|
grpc_endpoint* grpc_secure_endpoint_create(
|
444
444
|
struct tsi_frame_protector* protector,
|
445
445
|
struct tsi_zero_copy_grpc_protector* zero_copy_protector,
|
446
|
-
grpc_endpoint*
|
446
|
+
grpc_endpoint* to_wrap, grpc_slice* leftover_slices,
|
447
447
|
size_t leftover_nslices) {
|
448
448
|
secure_endpoint* ep =
|
449
|
-
new secure_endpoint(&vtable, protector, zero_copy_protector,
|
449
|
+
new secure_endpoint(&vtable, protector, zero_copy_protector, to_wrap,
|
450
450
|
leftover_slices, leftover_nslices);
|
451
451
|
return &ep->base;
|
452
452
|
}
|
@@ -241,8 +241,8 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) {
|
|
241
241
|
handshaker_result_, &unused_bytes, &unused_bytes_size);
|
242
242
|
// Create secure endpoint.
|
243
243
|
if (unused_bytes_size > 0) {
|
244
|
-
grpc_slice slice =
|
245
|
-
|
244
|
+
grpc_slice slice = grpc_slice_from_copied_buffer(
|
245
|
+
reinterpret_cast<const char*>(unused_bytes), unused_bytes_size);
|
246
246
|
args_->endpoint = grpc_secure_endpoint_create(
|
247
247
|
protector, zero_copy_protector, args_->endpoint, &slice, 1);
|
248
248
|
grpc_slice_unref_internal(slice);
|
@@ -273,17 +273,16 @@ grpc_core::ManagedMemorySlice::ManagedMemorySlice(const char* string)
|
|
273
273
|
: grpc_core::ManagedMemorySlice::ManagedMemorySlice(string,
|
274
274
|
strlen(string)) {}
|
275
275
|
|
276
|
-
grpc_core::ManagedMemorySlice::ManagedMemorySlice(const char*
|
277
|
-
size_t len) {
|
276
|
+
grpc_core::ManagedMemorySlice::ManagedMemorySlice(const char* buf, size_t len) {
|
278
277
|
GPR_TIMER_SCOPE("grpc_slice_intern", 0);
|
279
|
-
const uint32_t hash = gpr_murmur_hash3(
|
278
|
+
const uint32_t hash = gpr_murmur_hash3(buf, len, g_hash_seed);
|
280
279
|
const StaticMetadataSlice* static_slice =
|
281
|
-
MatchStaticSlice(hash, std::pair<const char*, size_t>(
|
280
|
+
MatchStaticSlice(hash, std::pair<const char*, size_t>(buf, len));
|
282
281
|
if (static_slice) {
|
283
282
|
*this = *static_slice;
|
284
283
|
} else {
|
285
284
|
*this = grpc_core::InternedSlice(FindOrCreateInternedSlice(
|
286
|
-
hash, std::pair<const char*, size_t>(
|
285
|
+
hash, std::pair<const char*, size_t>(buf, len)));
|
287
286
|
}
|
288
287
|
}
|
289
288
|
|