grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -0,0 +1,170 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_SECURITY_AUTHORIZATION_RBAC_POLICY_H
|
16
|
+
#define GRPC_CORE_LIB_SECURITY_AUTHORIZATION_RBAC_POLICY_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <memory>
|
21
|
+
|
22
|
+
#include "src/core/lib/matchers/matchers.h"
|
23
|
+
|
24
|
+
namespace grpc_core {
|
25
|
+
|
26
|
+
// Represents Envoy RBAC Proto. [See
|
27
|
+
// https://github.com/envoyproxy/envoy/blob/release/v1.17/api/envoy/config/rbac/v3/rbac.proto]
|
28
|
+
struct Rbac {
|
29
|
+
enum class Action {
|
30
|
+
kAllow,
|
31
|
+
kDeny,
|
32
|
+
};
|
33
|
+
|
34
|
+
struct CidrRange {
|
35
|
+
CidrRange() = default;
|
36
|
+
CidrRange(std::string address_prefix, uint32_t prefix_len);
|
37
|
+
|
38
|
+
CidrRange(CidrRange&& other) noexcept;
|
39
|
+
CidrRange& operator=(CidrRange&& other) noexcept;
|
40
|
+
|
41
|
+
std::string ToString() const;
|
42
|
+
|
43
|
+
std::string address_prefix;
|
44
|
+
uint32_t prefix_len;
|
45
|
+
};
|
46
|
+
|
47
|
+
// TODO(ashithasantosh): Support for destination_port_range.
|
48
|
+
struct Permission {
|
49
|
+
enum class RuleType {
|
50
|
+
kAnd,
|
51
|
+
kOr,
|
52
|
+
kNot,
|
53
|
+
kAny,
|
54
|
+
kHeader,
|
55
|
+
kPath,
|
56
|
+
kDestIp,
|
57
|
+
kDestPort,
|
58
|
+
kMetadata,
|
59
|
+
kReqServerName,
|
60
|
+
};
|
61
|
+
|
62
|
+
static Permission MakeAndPermission(
|
63
|
+
std::vector<std::unique_ptr<Permission>> permissions);
|
64
|
+
static Permission MakeOrPermission(
|
65
|
+
std::vector<std::unique_ptr<Permission>> permissions);
|
66
|
+
static Permission MakeNotPermission(Permission permission);
|
67
|
+
static Permission MakeAnyPermission();
|
68
|
+
static Permission MakeHeaderPermission(HeaderMatcher header_matcher);
|
69
|
+
static Permission MakePathPermission(StringMatcher string_matcher);
|
70
|
+
static Permission MakeDestIpPermission(CidrRange ip);
|
71
|
+
static Permission MakeDestPortPermission(int port);
|
72
|
+
// All the other fields in MetadataMatcher are ignored except invert.
|
73
|
+
static Permission MakeMetadataPermission(bool invert);
|
74
|
+
static Permission MakeReqServerNamePermission(StringMatcher string_matcher);
|
75
|
+
|
76
|
+
Permission() = default;
|
77
|
+
|
78
|
+
Permission(Permission&& other) noexcept;
|
79
|
+
Permission& operator=(Permission&& other) noexcept;
|
80
|
+
|
81
|
+
std::string ToString() const;
|
82
|
+
|
83
|
+
RuleType type = RuleType::kAnd;
|
84
|
+
HeaderMatcher header_matcher;
|
85
|
+
StringMatcher string_matcher;
|
86
|
+
CidrRange ip;
|
87
|
+
int port;
|
88
|
+
// For type kAnd/kOr/kNot. For kNot type, the vector will have only one
|
89
|
+
// element.
|
90
|
+
std::vector<std::unique_ptr<Permission>> permissions;
|
91
|
+
// For kMetadata
|
92
|
+
bool invert = false;
|
93
|
+
};
|
94
|
+
|
95
|
+
struct Principal {
|
96
|
+
enum class RuleType {
|
97
|
+
kAnd,
|
98
|
+
kOr,
|
99
|
+
kNot,
|
100
|
+
kAny,
|
101
|
+
kPrincipalName,
|
102
|
+
kSourceIp,
|
103
|
+
kDirectRemoteIp,
|
104
|
+
kRemoteIp,
|
105
|
+
kHeader,
|
106
|
+
kPath,
|
107
|
+
kMetadata,
|
108
|
+
};
|
109
|
+
|
110
|
+
static Principal MakeAndPrincipal(
|
111
|
+
std::vector<std::unique_ptr<Principal>> principals);
|
112
|
+
static Principal MakeOrPrincipal(
|
113
|
+
std::vector<std::unique_ptr<Principal>> principals);
|
114
|
+
static Principal MakeNotPrincipal(Principal principal);
|
115
|
+
static Principal MakeAnyPrincipal();
|
116
|
+
static Principal MakeAuthenticatedPrincipal(StringMatcher string_matcher);
|
117
|
+
static Principal MakeSourceIpPrincipal(CidrRange ip);
|
118
|
+
static Principal MakeDirectRemoteIpPrincipal(CidrRange ip);
|
119
|
+
static Principal MakeRemoteIpPrincipal(CidrRange ip);
|
120
|
+
static Principal MakeHeaderPrincipal(HeaderMatcher header_matcher);
|
121
|
+
static Principal MakePathPrincipal(StringMatcher string_matcher);
|
122
|
+
// All the other fields in MetadataMatcher are ignored except invert.
|
123
|
+
static Principal MakeMetadataPrincipal(bool invert);
|
124
|
+
|
125
|
+
Principal() = default;
|
126
|
+
|
127
|
+
Principal(Principal&& other) noexcept;
|
128
|
+
Principal& operator=(Principal&& other) noexcept;
|
129
|
+
|
130
|
+
std::string ToString() const;
|
131
|
+
|
132
|
+
RuleType type = RuleType::kAnd;
|
133
|
+
HeaderMatcher header_matcher;
|
134
|
+
StringMatcher string_matcher;
|
135
|
+
CidrRange ip;
|
136
|
+
// For type kAnd/kOr/kNot. For kNot type, the vector will have only one
|
137
|
+
// element.
|
138
|
+
std::vector<std::unique_ptr<Principal>> principals;
|
139
|
+
// For kMetadata
|
140
|
+
bool invert = false;
|
141
|
+
};
|
142
|
+
|
143
|
+
struct Policy {
|
144
|
+
Policy() = default;
|
145
|
+
Policy(Permission permissions, Principal principals);
|
146
|
+
|
147
|
+
Policy(Policy&& other) noexcept;
|
148
|
+
Policy& operator=(Policy&& other) noexcept;
|
149
|
+
|
150
|
+
std::string ToString() const;
|
151
|
+
|
152
|
+
Permission permissions;
|
153
|
+
Principal principals;
|
154
|
+
};
|
155
|
+
|
156
|
+
Rbac() = default;
|
157
|
+
Rbac(Rbac::Action action, std::map<std::string, Policy> policies);
|
158
|
+
|
159
|
+
Rbac(Rbac&& other) noexcept;
|
160
|
+
Rbac& operator=(Rbac&& other) noexcept;
|
161
|
+
|
162
|
+
std::string ToString() const;
|
163
|
+
|
164
|
+
Action action;
|
165
|
+
std::map<std::string, Policy> policies;
|
166
|
+
};
|
167
|
+
|
168
|
+
} // namespace grpc_core
|
169
|
+
|
170
|
+
#endif /* GRPC_CORE_LIB_SECURITY_AUTHORIZATION_RBAC_POLICY_H */
|
@@ -29,9 +29,9 @@
|
|
29
29
|
|
30
30
|
#include "src/core/lib/channel/channel_args.h"
|
31
31
|
#include "src/core/lib/gpr/string.h"
|
32
|
-
#include "src/core/lib/gprpp/arena.h"
|
33
32
|
#include "src/core/lib/gprpp/ref_counted.h"
|
34
33
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
34
|
+
#include "src/core/lib/resource_quota/arena.h"
|
35
35
|
#include "src/core/lib/surface/api_trace.h"
|
36
36
|
#include "src/core/lib/surface/call.h"
|
37
37
|
|
@@ -235,7 +235,9 @@ void grpc_auth_context::add_property(const char* name, const char* value,
|
|
235
235
|
grpc_auth_property* prop = &properties_.array[properties_.count++];
|
236
236
|
prop->name = gpr_strdup(name);
|
237
237
|
prop->value = static_cast<char*>(gpr_malloc(value_length + 1));
|
238
|
-
|
238
|
+
if (value != nullptr) {
|
239
|
+
memcpy(prop->value, value, value_length);
|
240
|
+
}
|
239
241
|
prop->value[value_length] = '\0';
|
240
242
|
prop->value_length = value_length;
|
241
243
|
}
|
@@ -21,10 +21,10 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include "src/core/lib/gprpp/arena.h"
|
25
24
|
#include "src/core/lib/gprpp/ref_counted.h"
|
26
25
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
27
26
|
#include "src/core/lib/iomgr/pollset.h"
|
27
|
+
#include "src/core/lib/resource_quota/arena.h"
|
28
28
|
#include "src/core/lib/security/credentials/credentials.h"
|
29
29
|
|
30
30
|
extern grpc_core::DebugOnlyTraceFlag grpc_trace_auth_context_refcount;
|
@@ -44,7 +44,7 @@ struct grpc_composite_call_credentials_metadata_context {
|
|
44
44
|
grpc_composite_call_credentials_metadata_context(
|
45
45
|
grpc_composite_call_credentials* composite_creds,
|
46
46
|
grpc_polling_entity* pollent, grpc_auth_metadata_context auth_md_context,
|
47
|
-
|
47
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
48
48
|
grpc_closure* on_request_metadata)
|
49
49
|
: composite_creds(composite_creds),
|
50
50
|
pollent(pollent),
|
@@ -59,7 +59,7 @@ struct grpc_composite_call_credentials_metadata_context {
|
|
59
59
|
size_t creds_index = 0;
|
60
60
|
grpc_polling_entity* pollent;
|
61
61
|
grpc_auth_metadata_context auth_md_context;
|
62
|
-
|
62
|
+
grpc_core::CredentialsMetadataArray* md_array;
|
63
63
|
grpc_closure* on_request_metadata;
|
64
64
|
grpc_closure internal_on_request_metadata;
|
65
65
|
};
|
@@ -91,8 +91,8 @@ static void composite_call_metadata_cb(void* arg, grpc_error_handle error) {
|
|
91
91
|
|
92
92
|
bool grpc_composite_call_credentials::get_request_metadata(
|
93
93
|
grpc_polling_entity* pollent, grpc_auth_metadata_context auth_md_context,
|
94
|
-
|
95
|
-
grpc_error_handle* error) {
|
94
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
95
|
+
grpc_closure* on_request_metadata, grpc_error_handle* error) {
|
96
96
|
grpc_composite_call_credentials_metadata_context* ctx;
|
97
97
|
ctx = new grpc_composite_call_credentials_metadata_context(
|
98
98
|
this, pollent, auth_md_context, md_array, on_request_metadata);
|
@@ -113,7 +113,7 @@ bool grpc_composite_call_credentials::get_request_metadata(
|
|
113
113
|
}
|
114
114
|
|
115
115
|
void grpc_composite_call_credentials::cancel_get_request_metadata(
|
116
|
-
|
116
|
+
grpc_core::CredentialsMetadataArray* md_array, grpc_error_handle error) {
|
117
117
|
for (size_t i = 0; i < inner_.size(); ++i) {
|
118
118
|
inner_[i]->cancel_get_request_metadata(md_array, GRPC_ERROR_REF(error));
|
119
119
|
}
|
@@ -81,12 +81,13 @@ class grpc_composite_call_credentials : public grpc_call_credentials {
|
|
81
81
|
|
82
82
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
83
83
|
grpc_auth_metadata_context context,
|
84
|
-
|
84
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
85
85
|
grpc_closure* on_request_metadata,
|
86
86
|
grpc_error_handle* error) override;
|
87
87
|
|
88
|
-
void cancel_get_request_metadata(
|
89
|
-
|
88
|
+
void cancel_get_request_metadata(
|
89
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
90
|
+
grpc_error_handle error) override;
|
90
91
|
|
91
92
|
grpc_security_level min_security_level() const override {
|
92
93
|
return min_security_level_;
|
@@ -153,21 +153,11 @@ grpc_channel_credentials* grpc_channel_credentials_from_arg(
|
|
153
153
|
grpc_channel_credentials* grpc_channel_credentials_find_in_args(
|
154
154
|
const grpc_channel_args* args);
|
155
155
|
|
156
|
-
/* ---
|
156
|
+
/* --- grpc_core::CredentialsMetadataArray. --- */
|
157
157
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
};
|
162
|
-
/// Takes a new ref to \a md.
|
163
|
-
void grpc_credentials_mdelem_array_add(grpc_credentials_mdelem_array* list,
|
164
|
-
grpc_mdelem md);
|
165
|
-
|
166
|
-
/// Appends all elements from \a src to \a dst, taking a new ref to each one.
|
167
|
-
void grpc_credentials_mdelem_array_append(grpc_credentials_mdelem_array* dst,
|
168
|
-
grpc_credentials_mdelem_array* src);
|
169
|
-
|
170
|
-
void grpc_credentials_mdelem_array_destroy(grpc_credentials_mdelem_array* list);
|
158
|
+
namespace grpc_core {
|
159
|
+
using CredentialsMetadataArray = std::vector<std::pair<Slice, Slice>>;
|
160
|
+
}
|
171
161
|
|
172
162
|
/* --- grpc_call_credentials. --- */
|
173
163
|
|
@@ -188,17 +178,17 @@ struct grpc_call_credentials
|
|
188
178
|
// be set to indicate the result. Otherwise, \a on_request_metadata will
|
189
179
|
// be invoked asynchronously when complete. \a md_array will be populated
|
190
180
|
// with the resulting metadata once complete.
|
191
|
-
virtual bool get_request_metadata(
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
grpc_error_handle* error) = 0;
|
181
|
+
virtual bool get_request_metadata(
|
182
|
+
grpc_polling_entity* pollent, grpc_auth_metadata_context context,
|
183
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
184
|
+
grpc_closure* on_request_metadata, grpc_error_handle* error) = 0;
|
196
185
|
|
197
186
|
// Cancels a pending asynchronous operation started by
|
198
187
|
// grpc_call_credentials_get_request_metadata() with the corresponding
|
199
188
|
// value of \a md_array.
|
200
189
|
virtual void cancel_get_request_metadata(
|
201
|
-
|
190
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
191
|
+
grpc_error_handle error) = 0;
|
202
192
|
|
203
193
|
virtual grpc_security_level min_security_level() const {
|
204
194
|
return min_security_level_;
|
@@ -169,9 +169,8 @@ void AwsExternalAccountCredentials::RetrieveRegion() {
|
|
169
169
|
grpc_http_response_destroy(&ctx_->response);
|
170
170
|
ctx_->response = {};
|
171
171
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveRegion, this, nullptr);
|
172
|
-
grpc_httpcli_get(ctx_->
|
173
|
-
|
174
|
-
&ctx_->closure, &ctx_->response);
|
172
|
+
grpc_httpcli_get(ctx_->pollent, ResourceQuota::Default(), &request,
|
173
|
+
ctx_->deadline, &ctx_->closure, &ctx_->response);
|
175
174
|
grpc_http_request_destroy(&request.http);
|
176
175
|
}
|
177
176
|
|
@@ -217,9 +216,8 @@ void AwsExternalAccountCredentials::RetrieveRoleName() {
|
|
217
216
|
ctx_->response = {};
|
218
217
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveRoleName, this, nullptr);
|
219
218
|
// TODO(ctiller): use the caller's resource quota.
|
220
|
-
grpc_httpcli_get(ctx_->
|
221
|
-
|
222
|
-
&ctx_->closure, &ctx_->response);
|
219
|
+
grpc_httpcli_get(ctx_->pollent, ResourceQuota::Default(), &request,
|
220
|
+
ctx_->deadline, &ctx_->closure, &ctx_->response);
|
223
221
|
grpc_http_request_destroy(&request.http);
|
224
222
|
}
|
225
223
|
|
@@ -277,9 +275,8 @@ void AwsExternalAccountCredentials::RetrieveSigningKeys() {
|
|
277
275
|
ctx_->response = {};
|
278
276
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveSigningKeys, this, nullptr);
|
279
277
|
// TODO(ctiller): use the caller's resource quota.
|
280
|
-
grpc_httpcli_get(ctx_->
|
281
|
-
|
282
|
-
&ctx_->closure, &ctx_->response);
|
278
|
+
grpc_httpcli_get(ctx_->pollent, ResourceQuota::Default(), &request,
|
279
|
+
ctx_->deadline, &ctx_->closure, &ctx_->response);
|
283
280
|
grpc_http_request_destroy(&request.http);
|
284
281
|
}
|
285
282
|
|
@@ -237,10 +237,10 @@ std::string ExternalAccountCredentials::debug_string() {
|
|
237
237
|
// down.
|
238
238
|
void ExternalAccountCredentials::fetch_oauth2(
|
239
239
|
grpc_credentials_metadata_request* metadata_req,
|
240
|
-
|
241
|
-
|
240
|
+
grpc_polling_entity* pollent, grpc_iomgr_cb_func response_cb,
|
241
|
+
grpc_millis deadline) {
|
242
242
|
GPR_ASSERT(ctx_ == nullptr);
|
243
|
-
ctx_ = new HTTPRequestContext(
|
243
|
+
ctx_ = new HTTPRequestContext(pollent, deadline);
|
244
244
|
metadata_req_ = metadata_req;
|
245
245
|
response_cb_ = response_cb;
|
246
246
|
auto cb = [this](std::string token, grpc_error_handle error) {
|
@@ -326,9 +326,8 @@ void ExternalAccountCredentials::ExchangeToken(
|
|
326
326
|
grpc_http_response_destroy(&ctx_->response);
|
327
327
|
ctx_->response = {};
|
328
328
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnExchangeToken, this, nullptr);
|
329
|
-
grpc_httpcli_post(ctx_->
|
330
|
-
|
331
|
-
body.size(), ctx_->deadline, &ctx_->closure,
|
329
|
+
grpc_httpcli_post(ctx_->pollent, ResourceQuota::Default(), &request,
|
330
|
+
body.c_str(), body.size(), ctx_->deadline, &ctx_->closure,
|
332
331
|
&ctx_->response);
|
333
332
|
grpc_http_request_destroy(&request.http);
|
334
333
|
}
|
@@ -412,9 +411,8 @@ void ExternalAccountCredentials::ImpersenateServiceAccount() {
|
|
412
411
|
ctx_->response = {};
|
413
412
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnImpersenateServiceAccount, this, nullptr);
|
414
413
|
// TODO(ctiller): Use the callers resource quota.
|
415
|
-
grpc_httpcli_post(ctx_->
|
416
|
-
|
417
|
-
body.size(), ctx_->deadline, &ctx_->closure,
|
414
|
+
grpc_httpcli_post(ctx_->pollent, ResourceQuota::Default(), &request,
|
415
|
+
body.c_str(), body.size(), ctx_->deadline, &ctx_->closure,
|
418
416
|
&ctx_->response);
|
419
417
|
grpc_http_request_destroy(&request.http);
|
420
418
|
}
|
@@ -61,16 +61,12 @@ class ExternalAccountCredentials
|
|
61
61
|
// This is a helper struct to pass information between multiple callback based
|
62
62
|
// asynchronous calls.
|
63
63
|
struct HTTPRequestContext {
|
64
|
-
HTTPRequestContext(
|
65
|
-
|
66
|
-
: httpcli_context(httpcli_context),
|
67
|
-
pollent(pollent),
|
68
|
-
deadline(deadline) {}
|
64
|
+
HTTPRequestContext(grpc_polling_entity* pollent, grpc_millis deadline)
|
65
|
+
: pollent(pollent), deadline(deadline) {}
|
69
66
|
~HTTPRequestContext() { grpc_http_response_destroy(&response); }
|
70
67
|
|
71
68
|
// Contextual parameters passed from
|
72
69
|
// grpc_oauth2_token_fetcher_credentials::fetch_oauth2().
|
73
|
-
grpc_httpcli_context* httpcli_context;
|
74
70
|
grpc_polling_entity* pollent;
|
75
71
|
grpc_millis deadline;
|
76
72
|
|
@@ -92,7 +88,6 @@ class ExternalAccountCredentials
|
|
92
88
|
// This method implements the common token fetch logic and it will be called
|
93
89
|
// when grpc_oauth2_token_fetcher_credentials request a new access token.
|
94
90
|
void fetch_oauth2(grpc_credentials_metadata_request* req,
|
95
|
-
grpc_httpcli_context* httpcli_context,
|
96
91
|
grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
|
97
92
|
grpc_millis deadline) override;
|
98
93
|
|
@@ -142,9 +142,8 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken(
|
|
142
142
|
grpc_http_response_destroy(&ctx_->response);
|
143
143
|
ctx_->response = {};
|
144
144
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveSubjectToken, this, nullptr);
|
145
|
-
grpc_httpcli_get(ctx_->
|
146
|
-
|
147
|
-
&ctx_->closure, &ctx_->response);
|
145
|
+
grpc_httpcli_get(ctx_->pollent, ResourceQuota::Default(), &request,
|
146
|
+
ctx_->deadline, &ctx_->closure, &ctx_->response);
|
148
147
|
grpc_http_request_destroy(&request.http);
|
149
148
|
}
|
150
149
|
|
@@ -91,9 +91,9 @@ const char* grpc_fake_transport_get_expected_targets(
|
|
91
91
|
|
92
92
|
bool grpc_md_only_test_credentials::get_request_metadata(
|
93
93
|
grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/,
|
94
|
-
|
95
|
-
grpc_error_handle* /*error*/) {
|
96
|
-
|
94
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
95
|
+
grpc_closure* on_request_metadata, grpc_error_handle* /*error*/) {
|
96
|
+
md_array->emplace_back(key_.Ref(), value_.Ref());
|
97
97
|
if (is_async_) {
|
98
98
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_request_metadata,
|
99
99
|
GRPC_ERROR_NONE);
|
@@ -103,7 +103,8 @@ bool grpc_md_only_test_credentials::get_request_metadata(
|
|
103
103
|
}
|
104
104
|
|
105
105
|
void grpc_md_only_test_credentials::cancel_get_request_metadata(
|
106
|
-
|
106
|
+
grpc_core::CredentialsMetadataArray* /*md_array*/,
|
107
|
+
grpc_error_handle error) {
|
107
108
|
GRPC_ERROR_UNREF(error);
|
108
109
|
}
|
109
110
|
|
@@ -63,24 +63,25 @@ class grpc_md_only_test_credentials : public grpc_call_credentials {
|
|
63
63
|
bool is_async)
|
64
64
|
: grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2,
|
65
65
|
GRPC_SECURITY_NONE),
|
66
|
-
|
67
|
-
|
66
|
+
key_(grpc_core::Slice::FromCopiedString(md_key)),
|
67
|
+
value_(grpc_core::Slice::FromCopiedString(md_value)),
|
68
68
|
is_async_(is_async) {}
|
69
|
-
~grpc_md_only_test_credentials() override { GRPC_MDELEM_UNREF(md_); }
|
70
69
|
|
71
70
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
72
71
|
grpc_auth_metadata_context context,
|
73
|
-
|
72
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
74
73
|
grpc_closure* on_request_metadata,
|
75
74
|
grpc_error_handle* error) override;
|
76
75
|
|
77
|
-
void cancel_get_request_metadata(
|
78
|
-
|
76
|
+
void cancel_get_request_metadata(
|
77
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
78
|
+
grpc_error_handle error) override;
|
79
79
|
|
80
80
|
std::string debug_string() override { return "MD only Test Credentials"; };
|
81
81
|
|
82
82
|
private:
|
83
|
-
|
83
|
+
grpc_core::Slice key_;
|
84
|
+
grpc_core::Slice value_;
|
84
85
|
bool is_async_;
|
85
86
|
};
|
86
87
|
|
@@ -172,7 +172,6 @@ static void destroy_pollset(void* p, grpc_error_handle /*e*/) {
|
|
172
172
|
static int is_metadata_server_reachable() {
|
173
173
|
metadata_server_detector detector;
|
174
174
|
grpc_httpcli_request request;
|
175
|
-
grpc_httpcli_context context;
|
176
175
|
grpc_closure destroy_closure;
|
177
176
|
/* The http call is local. If it takes more than one sec, it is for sure not
|
178
177
|
on compute engine. */
|
@@ -186,10 +185,9 @@ static int is_metadata_server_reachable() {
|
|
186
185
|
memset(&request, 0, sizeof(grpc_httpcli_request));
|
187
186
|
request.host = const_cast<char*>(GRPC_COMPUTE_ENGINE_DETECTION_HOST);
|
188
187
|
request.http.path = const_cast<char*>("/");
|
189
|
-
grpc_httpcli_context_init(&context);
|
190
188
|
grpc_httpcli_get(
|
191
|
-
&
|
192
|
-
|
189
|
+
&detector.pollent, grpc_core::ResourceQuota::Default(), &request,
|
190
|
+
grpc_core::ExecCtx::Get()->Now() + max_detection_delay,
|
193
191
|
GRPC_CLOSURE_CREATE(on_metadata_server_detection_http_response, &detector,
|
194
192
|
grpc_schedule_on_exec_ctx),
|
195
193
|
&detector.response);
|
@@ -208,7 +206,6 @@ static int is_metadata_server_reachable() {
|
|
208
206
|
}
|
209
207
|
}
|
210
208
|
gpr_mu_unlock(g_polling_mu);
|
211
|
-
grpc_httpcli_context_destroy(&context);
|
212
209
|
GRPC_CLOSURE_INIT(&destroy_closure, destroy_pollset,
|
213
210
|
grpc_polling_entity_pollset(&detector.pollent),
|
214
211
|
grpc_schedule_on_exec_ctx);
|
@@ -30,40 +30,37 @@
|
|
30
30
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
31
|
#include "src/core/lib/surface/api_trace.h"
|
32
32
|
|
33
|
-
grpc_google_iam_credentials::~grpc_google_iam_credentials() {
|
34
|
-
grpc_credentials_mdelem_array_destroy(&md_array_);
|
35
|
-
}
|
36
|
-
|
37
33
|
bool grpc_google_iam_credentials::get_request_metadata(
|
38
34
|
grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/,
|
39
|
-
|
35
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
40
36
|
grpc_closure* /*on_request_metadata*/, grpc_error_handle* /*error*/) {
|
41
|
-
|
37
|
+
if (token_.has_value()) {
|
38
|
+
md_array->emplace_back(grpc_core::Slice::FromStaticString(
|
39
|
+
GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY),
|
40
|
+
token_->Ref());
|
41
|
+
}
|
42
|
+
md_array->emplace_back(grpc_core::Slice::FromStaticString(
|
43
|
+
GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY),
|
44
|
+
authority_selector_.Ref());
|
42
45
|
return true;
|
43
46
|
}
|
44
47
|
|
45
48
|
void grpc_google_iam_credentials::cancel_get_request_metadata(
|
46
|
-
|
49
|
+
grpc_core::CredentialsMetadataArray* /*md_array*/,
|
50
|
+
grpc_error_handle error) {
|
47
51
|
GRPC_ERROR_UNREF(error);
|
48
52
|
}
|
49
53
|
|
50
54
|
grpc_google_iam_credentials::grpc_google_iam_credentials(
|
51
55
|
const char* token, const char* authority_selector)
|
52
56
|
: grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_IAM),
|
57
|
+
token_(token == nullptr ? absl::optional<grpc_core::Slice>()
|
58
|
+
: grpc_core::Slice::FromCopiedString(token)),
|
59
|
+
authority_selector_(
|
60
|
+
grpc_core::Slice::FromCopiedString(authority_selector)),
|
53
61
|
debug_string_(absl::StrFormat(
|
54
62
|
"GoogleIAMCredentials{Token:%s,AuthoritySelector:%s}",
|
55
|
-
token != nullptr ? "present" : "absent", authority_selector)) {
|
56
|
-
grpc_mdelem md = grpc_mdelem_from_slices(
|
57
|
-
grpc_slice_from_static_string(GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY),
|
58
|
-
grpc_slice_from_copied_string(token));
|
59
|
-
grpc_credentials_mdelem_array_add(&md_array_, md);
|
60
|
-
GRPC_MDELEM_UNREF(md);
|
61
|
-
md = grpc_mdelem_from_slices(
|
62
|
-
grpc_slice_from_static_string(GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY),
|
63
|
-
grpc_slice_from_copied_string(authority_selector));
|
64
|
-
grpc_credentials_mdelem_array_add(&md_array_, md);
|
65
|
-
GRPC_MDELEM_UNREF(md);
|
66
|
-
}
|
63
|
+
token != nullptr ? "present" : "absent", authority_selector)) {}
|
67
64
|
|
68
65
|
grpc_call_credentials* grpc_google_iam_credentials_create(
|
69
66
|
const char* token, const char* authority_selector, void* reserved) {
|
@@ -29,20 +29,21 @@ class grpc_google_iam_credentials : public grpc_call_credentials {
|
|
29
29
|
public:
|
30
30
|
grpc_google_iam_credentials(const char* token,
|
31
31
|
const char* authority_selector);
|
32
|
-
~grpc_google_iam_credentials() override;
|
33
32
|
|
34
33
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
35
34
|
grpc_auth_metadata_context context,
|
36
|
-
|
35
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
37
36
|
grpc_closure* on_request_metadata,
|
38
37
|
grpc_error_handle* error) override;
|
39
38
|
|
40
|
-
void cancel_get_request_metadata(
|
41
|
-
|
39
|
+
void cancel_get_request_metadata(
|
40
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
41
|
+
grpc_error_handle error) override;
|
42
42
|
std::string debug_string() override { return debug_string_; }
|
43
43
|
|
44
44
|
private:
|
45
|
-
|
45
|
+
const absl::optional<grpc_core::Slice> token_;
|
46
|
+
const grpc_core::Slice authority_selector_;
|
46
47
|
const std::string debug_string_;
|
47
48
|
};
|
48
49
|
|
@@ -22,6 +22,10 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include <openssl/bio.h>
|
26
|
+
#include <openssl/evp.h>
|
27
|
+
#include <openssl/pem.h>
|
28
|
+
|
25
29
|
#include <grpc/grpc_security.h>
|
26
30
|
#include <grpc/support/alloc.h>
|
27
31
|
#include <grpc/support/log.h>
|
@@ -33,12 +37,6 @@
|
|
33
37
|
#include "src/core/lib/security/util/json_util.h"
|
34
38
|
#include "src/core/lib/slice/b64.h"
|
35
39
|
|
36
|
-
extern "C" {
|
37
|
-
#include <openssl/bio.h>
|
38
|
-
#include <openssl/evp.h>
|
39
|
-
#include <openssl/pem.h>
|
40
|
-
}
|
41
|
-
|
42
40
|
using grpc_core::Json;
|
43
41
|
|
44
42
|
/* --- Constants. --- */
|