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
@@ -41,23 +41,15 @@
|
|
41
41
|
|
42
42
|
using grpc_core::Json;
|
43
43
|
|
44
|
-
void grpc_service_account_jwt_access_credentials::reset_cache() {
|
45
|
-
GRPC_MDELEM_UNREF(cached_.jwt_md);
|
46
|
-
cached_.jwt_md = GRPC_MDNULL;
|
47
|
-
cached_.service_url.clear();
|
48
|
-
cached_.jwt_expiration = gpr_inf_past(GPR_CLOCK_REALTIME);
|
49
|
-
}
|
50
|
-
|
51
44
|
grpc_service_account_jwt_access_credentials::
|
52
45
|
~grpc_service_account_jwt_access_credentials() {
|
53
46
|
grpc_auth_json_key_destruct(&key_);
|
54
|
-
reset_cache();
|
55
47
|
gpr_mu_destroy(&cache_mu_);
|
56
48
|
}
|
57
49
|
|
58
50
|
bool grpc_service_account_jwt_access_credentials::get_request_metadata(
|
59
51
|
grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context context,
|
60
|
-
|
52
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
61
53
|
grpc_closure* /*on_request_metadata*/, grpc_error_handle* error) {
|
62
54
|
gpr_timespec refresh_threshold = gpr_time_from_seconds(
|
63
55
|
GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS, GPR_TIMESPAN);
|
@@ -71,42 +63,38 @@ bool grpc_service_account_jwt_access_credentials::get_request_metadata(
|
|
71
63
|
return true;
|
72
64
|
}
|
73
65
|
/* See if we can return a cached jwt. */
|
74
|
-
|
66
|
+
absl::optional<grpc_core::Slice> jwt_value;
|
75
67
|
{
|
76
68
|
gpr_mu_lock(&cache_mu_);
|
77
|
-
if (
|
78
|
-
!GRPC_MDISNULL(cached_.jwt_md) &&
|
69
|
+
if (cached_.has_value() && cached_->service_url == *uri &&
|
79
70
|
(gpr_time_cmp(
|
80
|
-
gpr_time_sub(cached_
|
71
|
+
gpr_time_sub(cached_->jwt_expiration, gpr_now(GPR_CLOCK_REALTIME)),
|
81
72
|
refresh_threshold) > 0)) {
|
82
|
-
|
73
|
+
jwt_value = cached_->jwt_value.Ref();
|
83
74
|
}
|
84
75
|
gpr_mu_unlock(&cache_mu_);
|
85
76
|
}
|
86
77
|
|
87
|
-
if (
|
78
|
+
if (!jwt_value.has_value()) {
|
88
79
|
char* jwt = nullptr;
|
89
80
|
/* Generate a new jwt. */
|
90
81
|
gpr_mu_lock(&cache_mu_);
|
91
|
-
|
82
|
+
cached_.reset();
|
92
83
|
jwt = grpc_jwt_encode_and_sign(&key_, uri->c_str(), jwt_lifetime_, nullptr);
|
93
84
|
if (jwt != nullptr) {
|
94
85
|
std::string md_value = absl::StrCat("Bearer ", jwt);
|
95
86
|
gpr_free(jwt);
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
cached_.jwt_md = grpc_mdelem_from_slices(
|
100
|
-
grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY),
|
101
|
-
grpc_slice_from_cpp_string(std::move(md_value)));
|
102
|
-
jwt_md = GRPC_MDELEM_REF(cached_.jwt_md);
|
87
|
+
jwt_value = grpc_core::Slice::FromCopiedString(md_value);
|
88
|
+
cached_ = {jwt_value->Ref(), std::move(*uri),
|
89
|
+
gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), jwt_lifetime_)};
|
103
90
|
}
|
104
91
|
gpr_mu_unlock(&cache_mu_);
|
105
92
|
}
|
106
93
|
|
107
|
-
if (
|
108
|
-
|
109
|
-
|
94
|
+
if (jwt_value.has_value()) {
|
95
|
+
md_array->emplace_back(
|
96
|
+
grpc_core::Slice::FromStaticString(GRPC_AUTHORIZATION_METADATA_KEY),
|
97
|
+
std::move(*jwt_value));
|
110
98
|
} else {
|
111
99
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Could not generate JWT.");
|
112
100
|
}
|
@@ -114,7 +102,8 @@ bool grpc_service_account_jwt_access_credentials::get_request_metadata(
|
|
114
102
|
}
|
115
103
|
|
116
104
|
void grpc_service_account_jwt_access_credentials::cancel_get_request_metadata(
|
117
|
-
|
105
|
+
grpc_core::CredentialsMetadataArray* /*md_array*/,
|
106
|
+
grpc_error_handle error) {
|
118
107
|
GRPC_ERROR_UNREF(error);
|
119
108
|
}
|
120
109
|
|
@@ -131,7 +120,6 @@ grpc_service_account_jwt_access_credentials::
|
|
131
120
|
}
|
132
121
|
jwt_lifetime_ = token_lifetime;
|
133
122
|
gpr_mu_init(&cache_mu_);
|
134
|
-
reset_cache();
|
135
123
|
}
|
136
124
|
|
137
125
|
grpc_core::RefCountedPtr<grpc_call_credentials>
|
@@ -40,12 +40,13 @@ class grpc_service_account_jwt_access_credentials
|
|
40
40
|
|
41
41
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
42
42
|
grpc_auth_metadata_context context,
|
43
|
-
|
43
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
44
44
|
grpc_closure* on_request_metadata,
|
45
45
|
grpc_error_handle* error) override;
|
46
46
|
|
47
|
-
void cancel_get_request_metadata(
|
48
|
-
|
47
|
+
void cancel_get_request_metadata(
|
48
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
49
|
+
grpc_error_handle error) override;
|
49
50
|
|
50
51
|
const gpr_timespec& jwt_lifetime() const { return jwt_lifetime_; }
|
51
52
|
const grpc_auth_json_key& key() const { return key_; }
|
@@ -58,16 +59,15 @@ class grpc_service_account_jwt_access_credentials
|
|
58
59
|
};
|
59
60
|
|
60
61
|
private:
|
61
|
-
void reset_cache();
|
62
|
-
|
63
62
|
// Have a simple cache for now with just 1 entry. We could have a map based on
|
64
63
|
// the service_url for a more sophisticated one.
|
65
64
|
gpr_mu cache_mu_;
|
66
|
-
struct {
|
67
|
-
|
65
|
+
struct Cache {
|
66
|
+
grpc_core::Slice jwt_value;
|
68
67
|
std::string service_url;
|
69
68
|
gpr_timespec jwt_expiration;
|
70
|
-
}
|
69
|
+
};
|
70
|
+
absl::optional<Cache> cached_;
|
71
71
|
|
72
72
|
grpc_auth_json_key key_;
|
73
73
|
gpr_timespec jwt_lifetime_;
|
@@ -23,17 +23,15 @@
|
|
23
23
|
#include <limits.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include <openssl/bn.h>
|
27
|
+
#include <openssl/pem.h>
|
28
|
+
#include <openssl/rsa.h>
|
29
|
+
|
26
30
|
#include <grpc/support/alloc.h>
|
27
31
|
#include <grpc/support/log.h>
|
28
32
|
#include <grpc/support/string_util.h>
|
29
33
|
#include <grpc/support/sync.h>
|
30
34
|
|
31
|
-
extern "C" {
|
32
|
-
#include <openssl/bn.h>
|
33
|
-
#include <openssl/pem.h>
|
34
|
-
#include <openssl/rsa.h>
|
35
|
-
}
|
36
|
-
|
37
35
|
#include "src/core/lib/gpr/string.h"
|
38
36
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
39
37
|
#include "src/core/lib/http/httpcli.h"
|
@@ -397,7 +395,6 @@ struct grpc_jwt_verifier {
|
|
397
395
|
email_key_mapping* mappings;
|
398
396
|
size_t num_mappings; /* Should be very few, linear search ok. */
|
399
397
|
size_t allocated_mappings;
|
400
|
-
grpc_httpcli_context http_ctx;
|
401
398
|
};
|
402
399
|
|
403
400
|
static Json json_from_http(const grpc_httpcli_response* response) {
|
@@ -700,8 +697,7 @@ static void on_openid_config_retrieved(void* user_data,
|
|
700
697
|
channel. This would allow us to cancel an authentication query when under
|
701
698
|
extreme memory pressure. */
|
702
699
|
grpc_httpcli_get(
|
703
|
-
&ctx->
|
704
|
-
grpc_core::ResourceQuota::Default(), &req,
|
700
|
+
&ctx->pollent, grpc_core::ResourceQuota::Default(), &req,
|
705
701
|
grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay,
|
706
702
|
GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx),
|
707
703
|
&ctx->responses[HTTP_RESPONSE_KEYS]);
|
@@ -824,8 +820,7 @@ static void retrieve_key_and_verify(verifier_cb_ctx* ctx) {
|
|
824
820
|
channel. This would allow us to cancel an authentication query when under
|
825
821
|
extreme memory pressure. */
|
826
822
|
grpc_httpcli_get(
|
827
|
-
&ctx->
|
828
|
-
grpc_core::ResourceQuota::Default(), &req,
|
823
|
+
&ctx->pollent, grpc_core::ResourceQuota::Default(), &req,
|
829
824
|
grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, http_cb,
|
830
825
|
&ctx->responses[rsp_idx]);
|
831
826
|
gpr_free(req.host);
|
@@ -886,7 +881,6 @@ grpc_jwt_verifier* grpc_jwt_verifier_create(
|
|
886
881
|
const grpc_jwt_verifier_email_domain_key_url_mapping* mappings,
|
887
882
|
size_t num_mappings) {
|
888
883
|
grpc_jwt_verifier* v = grpc_core::Zalloc<grpc_jwt_verifier>();
|
889
|
-
grpc_httpcli_context_init(&v->http_ctx);
|
890
884
|
|
891
885
|
/* We know at least of one mapping. */
|
892
886
|
v->allocated_mappings = 1 + num_mappings;
|
@@ -908,7 +902,6 @@ grpc_jwt_verifier* grpc_jwt_verifier_create(
|
|
908
902
|
void grpc_jwt_verifier_destroy(grpc_jwt_verifier* v) {
|
909
903
|
size_t i;
|
910
904
|
if (v == nullptr) return;
|
911
|
-
grpc_httpcli_context_destroy(&v->http_ctx);
|
912
905
|
if (v->mappings != nullptr) {
|
913
906
|
for (i = 0; i < v->num_mappings; i++) {
|
914
907
|
gpr_free(v->mappings[i].email_domain);
|
@@ -127,15 +127,14 @@ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token) {
|
|
127
127
|
|
128
128
|
grpc_oauth2_token_fetcher_credentials::
|
129
129
|
~grpc_oauth2_token_fetcher_credentials() {
|
130
|
-
GRPC_MDELEM_UNREF(access_token_md_);
|
131
130
|
gpr_mu_destroy(&mu_);
|
132
131
|
grpc_pollset_set_destroy(grpc_polling_entity_pollset_set(&pollent_));
|
133
|
-
grpc_httpcli_context_destroy(&httpcli_context_);
|
134
132
|
}
|
135
133
|
|
136
134
|
grpc_credentials_status
|
137
135
|
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
138
|
-
const grpc_http_response* response,
|
136
|
+
const grpc_http_response* response,
|
137
|
+
absl::optional<grpc_core::Slice>* token_value,
|
139
138
|
grpc_millis* token_lifetime) {
|
140
139
|
char* null_terminated_body = nullptr;
|
141
140
|
grpc_credentials_status status = GRPC_CREDENTIALS_OK;
|
@@ -204,19 +203,13 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
204
203
|
}
|
205
204
|
expires_in = it->second.string_value().c_str();
|
206
205
|
*token_lifetime = strtol(expires_in, nullptr, 10) * GPR_MS_PER_SEC;
|
207
|
-
|
208
|
-
|
209
|
-
grpc_core::ExternallyManagedSlice(GRPC_AUTHORIZATION_METADATA_KEY),
|
210
|
-
grpc_slice_from_cpp_string(
|
211
|
-
absl::StrCat(token_type, " ", access_token)));
|
206
|
+
*token_value = grpc_core::Slice::FromCopiedString(
|
207
|
+
absl::StrCat(token_type, " ", access_token));
|
212
208
|
status = GRPC_CREDENTIALS_OK;
|
213
209
|
}
|
214
210
|
|
215
211
|
end:
|
216
|
-
if (status != GRPC_CREDENTIALS_OK
|
217
|
-
GRPC_MDELEM_UNREF(*token_md);
|
218
|
-
*token_md = GRPC_MDNULL;
|
219
|
-
}
|
212
|
+
if (status != GRPC_CREDENTIALS_OK) *token_value = absl::nullopt;
|
220
213
|
gpr_free(null_terminated_body);
|
221
214
|
return status;
|
222
215
|
}
|
@@ -233,17 +226,21 @@ static void on_oauth2_token_fetcher_http_response(void* user_data,
|
|
233
226
|
|
234
227
|
void grpc_oauth2_token_fetcher_credentials::on_http_response(
|
235
228
|
grpc_credentials_metadata_request* r, grpc_error_handle error) {
|
236
|
-
|
229
|
+
absl::optional<grpc_core::Slice> access_token_value;
|
237
230
|
grpc_millis token_lifetime = 0;
|
238
231
|
grpc_credentials_status status =
|
239
232
|
error == GRPC_ERROR_NONE
|
240
233
|
? grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
241
|
-
&r->response, &
|
234
|
+
&r->response, &access_token_value, &token_lifetime)
|
242
235
|
: GRPC_CREDENTIALS_ERROR;
|
243
236
|
// Update cache and grab list of pending requests.
|
244
237
|
gpr_mu_lock(&mu_);
|
245
238
|
token_fetch_pending_ = false;
|
246
|
-
|
239
|
+
if (access_token_value.has_value()) {
|
240
|
+
access_token_value_ = access_token_value->Ref();
|
241
|
+
} else {
|
242
|
+
access_token_value_ = absl::nullopt;
|
243
|
+
}
|
247
244
|
token_expiration_ =
|
248
245
|
status == GRPC_CREDENTIALS_OK
|
249
246
|
? gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
|
@@ -256,8 +253,9 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
|
|
256
253
|
while (pending_request != nullptr) {
|
257
254
|
grpc_error_handle new_error = GRPC_ERROR_NONE;
|
258
255
|
if (status == GRPC_CREDENTIALS_OK) {
|
259
|
-
|
260
|
-
|
256
|
+
pending_request->md_array->emplace_back(
|
257
|
+
grpc_core::Slice::FromStaticString(GRPC_AUTHORIZATION_METADATA_KEY),
|
258
|
+
access_token_value->Ref());
|
261
259
|
} else {
|
262
260
|
new_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
263
261
|
"Error occurred when fetching oauth2 token.", &error, 1);
|
@@ -270,31 +268,31 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
|
|
270
268
|
pending_request = pending_request->next;
|
271
269
|
gpr_free(prev);
|
272
270
|
}
|
273
|
-
GRPC_MDELEM_UNREF(access_token_md);
|
274
271
|
Unref();
|
275
272
|
grpc_credentials_metadata_request_destroy(r);
|
276
273
|
}
|
277
274
|
|
278
275
|
bool grpc_oauth2_token_fetcher_credentials::get_request_metadata(
|
279
276
|
grpc_polling_entity* pollent, grpc_auth_metadata_context /*context*/,
|
280
|
-
|
281
|
-
grpc_error_handle* /*error*/) {
|
277
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
278
|
+
grpc_closure* on_request_metadata, grpc_error_handle* /*error*/) {
|
282
279
|
// Check if we can use the cached token.
|
283
280
|
grpc_millis refresh_threshold =
|
284
281
|
GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS * GPR_MS_PER_SEC;
|
285
|
-
|
282
|
+
absl::optional<grpc_core::Slice> cached_access_token_value;
|
286
283
|
gpr_mu_lock(&mu_);
|
287
|
-
if (
|
284
|
+
if (access_token_value_.has_value() &&
|
288
285
|
gpr_time_cmp(
|
289
286
|
gpr_time_sub(token_expiration_, gpr_now(GPR_CLOCK_MONOTONIC)),
|
290
287
|
gpr_time_from_seconds(GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS,
|
291
288
|
GPR_TIMESPAN)) > 0) {
|
292
|
-
|
289
|
+
cached_access_token_value = access_token_value_->Ref();
|
293
290
|
}
|
294
|
-
if (
|
291
|
+
if (cached_access_token_value.has_value()) {
|
295
292
|
gpr_mu_unlock(&mu_);
|
296
|
-
|
297
|
-
|
293
|
+
md_array->emplace_back(
|
294
|
+
grpc_core::Slice::FromStaticString(GRPC_AUTHORIZATION_METADATA_KEY),
|
295
|
+
std::move(*cached_access_token_value));
|
298
296
|
return true;
|
299
297
|
}
|
300
298
|
// Couldn't get the token from the cache.
|
@@ -318,15 +316,14 @@ bool grpc_oauth2_token_fetcher_credentials::get_request_metadata(
|
|
318
316
|
if (start_fetch) {
|
319
317
|
Ref().release();
|
320
318
|
fetch_oauth2(grpc_credentials_metadata_request_create(this->Ref()),
|
321
|
-
&
|
322
|
-
on_oauth2_token_fetcher_http_response,
|
319
|
+
&pollent_, on_oauth2_token_fetcher_http_response,
|
323
320
|
grpc_core::ExecCtx::Get()->Now() + refresh_threshold);
|
324
321
|
}
|
325
322
|
return false;
|
326
323
|
}
|
327
324
|
|
328
325
|
void grpc_oauth2_token_fetcher_credentials::cancel_get_request_metadata(
|
329
|
-
|
326
|
+
grpc_core::CredentialsMetadataArray* md_array, grpc_error_handle error) {
|
330
327
|
gpr_mu_lock(&mu_);
|
331
328
|
grpc_oauth2_pending_get_request_metadata* prev = nullptr;
|
332
329
|
grpc_oauth2_pending_get_request_metadata* pending_request = pending_requests_;
|
@@ -358,7 +355,6 @@ grpc_oauth2_token_fetcher_credentials::grpc_oauth2_token_fetcher_credentials()
|
|
358
355
|
pollent_(grpc_polling_entity_create_from_pollset_set(
|
359
356
|
grpc_pollset_set_create())) {
|
360
357
|
gpr_mu_init(&mu_);
|
361
|
-
grpc_httpcli_context_init(&httpcli_context_);
|
362
358
|
}
|
363
359
|
|
364
360
|
std::string grpc_oauth2_token_fetcher_credentials::debug_string() {
|
@@ -379,7 +375,6 @@ class grpc_compute_engine_token_fetcher_credentials
|
|
379
375
|
|
380
376
|
protected:
|
381
377
|
void fetch_oauth2(grpc_credentials_metadata_request* metadata_req,
|
382
|
-
grpc_httpcli_context* http_context,
|
383
378
|
grpc_polling_entity* pollent,
|
384
379
|
grpc_iomgr_cb_func response_cb,
|
385
380
|
grpc_millis deadline) override {
|
@@ -395,8 +390,8 @@ class grpc_compute_engine_token_fetcher_credentials
|
|
395
390
|
/* TODO(ctiller): Carry the memory quota in ctx and share it with the host
|
396
391
|
channel. This would allow us to cancel an authentication query when under
|
397
392
|
extreme memory pressure. */
|
398
|
-
grpc_httpcli_get(
|
399
|
-
|
393
|
+
grpc_httpcli_get(pollent, grpc_core::ResourceQuota::Default(), &request,
|
394
|
+
deadline,
|
400
395
|
GRPC_CLOSURE_INIT(&http_get_cb_closure_, response_cb,
|
401
396
|
metadata_req, grpc_schedule_on_exec_ctx),
|
402
397
|
&metadata_req->response);
|
@@ -435,8 +430,8 @@ grpc_google_refresh_token_credentials::
|
|
435
430
|
|
436
431
|
void grpc_google_refresh_token_credentials::fetch_oauth2(
|
437
432
|
grpc_credentials_metadata_request* metadata_req,
|
438
|
-
|
439
|
-
|
433
|
+
grpc_polling_entity* pollent, grpc_iomgr_cb_func response_cb,
|
434
|
+
grpc_millis deadline) {
|
440
435
|
grpc_http_header header = {
|
441
436
|
const_cast<char*>("Content-Type"),
|
442
437
|
const_cast<char*>("application/x-www-form-urlencoded")};
|
@@ -453,9 +448,8 @@ void grpc_google_refresh_token_credentials::fetch_oauth2(
|
|
453
448
|
/* TODO(ctiller): Carry the memory quota in ctx and share it with the host
|
454
449
|
channel. This would allow us to cancel an authentication query when under
|
455
450
|
extreme memory pressure. */
|
456
|
-
grpc_httpcli_post(
|
457
|
-
|
458
|
-
body.size(), deadline,
|
451
|
+
grpc_httpcli_post(pollent, grpc_core::ResourceQuota::Default(), &request,
|
452
|
+
body.c_str(), body.size(), deadline,
|
459
453
|
GRPC_CLOSURE_INIT(&http_post_cb_closure_, response_cb,
|
460
454
|
metadata_req, grpc_schedule_on_exec_ctx),
|
461
455
|
&metadata_req->response);
|
@@ -556,7 +550,6 @@ class StsTokenFetcherCredentials
|
|
556
550
|
|
557
551
|
private:
|
558
552
|
void fetch_oauth2(grpc_credentials_metadata_request* metadata_req,
|
559
|
-
grpc_httpcli_context* http_context,
|
560
553
|
grpc_polling_entity* pollent,
|
561
554
|
grpc_iomgr_cb_func response_cb,
|
562
555
|
grpc_millis deadline) override {
|
@@ -584,8 +577,8 @@ class StsTokenFetcherCredentials
|
|
584
577
|
channel. This would allow us to cancel an authentication query when under
|
585
578
|
extreme memory pressure. */
|
586
579
|
grpc_httpcli_post(
|
587
|
-
|
588
|
-
|
580
|
+
pollent, ResourceQuota::Default(), &request, body, body_length,
|
581
|
+
deadline,
|
589
582
|
GRPC_CLOSURE_INIT(&http_post_cb_closure_, response_cb, metadata_req,
|
590
583
|
grpc_schedule_on_exec_ctx),
|
591
584
|
&metadata_req->response);
|
@@ -705,36 +698,30 @@ grpc_call_credentials* grpc_sts_credentials_create(
|
|
705
698
|
// Oauth2 Access Token credentials.
|
706
699
|
//
|
707
700
|
|
708
|
-
grpc_access_token_credentials::~grpc_access_token_credentials() {
|
709
|
-
GRPC_MDELEM_UNREF(access_token_md_);
|
710
|
-
}
|
711
|
-
|
712
701
|
bool grpc_access_token_credentials::get_request_metadata(
|
713
702
|
grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/,
|
714
|
-
|
703
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
715
704
|
grpc_closure* /*on_request_metadata*/, grpc_error_handle* /*error*/) {
|
716
|
-
|
705
|
+
md_array->emplace_back(
|
706
|
+
grpc_core::Slice::FromStaticString(GRPC_AUTHORIZATION_METADATA_KEY),
|
707
|
+
access_token_value_.Ref());
|
717
708
|
return true;
|
718
709
|
}
|
719
710
|
|
720
711
|
void grpc_access_token_credentials::cancel_get_request_metadata(
|
721
|
-
|
712
|
+
grpc_core::CredentialsMetadataArray* /*md_array*/,
|
713
|
+
grpc_error_handle error) {
|
722
714
|
GRPC_ERROR_UNREF(error);
|
723
715
|
}
|
724
716
|
|
725
717
|
grpc_access_token_credentials::grpc_access_token_credentials(
|
726
718
|
const char* access_token)
|
727
|
-
: grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2)
|
728
|
-
|
729
|
-
|
730
|
-
grpc_core::ExternallyManagedSlice(GRPC_AUTHORIZATION_METADATA_KEY),
|
731
|
-
grpc_slice_from_cpp_string(absl::StrCat("Bearer ", access_token)));
|
732
|
-
}
|
719
|
+
: grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2),
|
720
|
+
access_token_value_(grpc_core::Slice::FromCopiedString(
|
721
|
+
absl::StrCat("Bearer ", access_token))) {}
|
733
722
|
|
734
723
|
std::string grpc_access_token_credentials::debug_string() {
|
735
|
-
|
736
|
-
return absl::StrFormat("AccessTokenCredentials{Token:%s}",
|
737
|
-
access_token_present ? "present" : "absent");
|
724
|
+
return absl::StrFormat("AccessTokenCredentials{Token:present}");
|
738
725
|
}
|
739
726
|
|
740
727
|
grpc_call_credentials* grpc_access_token_credentials_create(
|
@@ -64,7 +64,7 @@ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token);
|
|
64
64
|
// from an http service.
|
65
65
|
|
66
66
|
struct grpc_oauth2_pending_get_request_metadata {
|
67
|
-
|
67
|
+
grpc_core::CredentialsMetadataArray* md_array;
|
68
68
|
grpc_closure* on_request_metadata;
|
69
69
|
grpc_polling_entity* pollent;
|
70
70
|
struct grpc_oauth2_pending_get_request_metadata* next;
|
@@ -77,12 +77,13 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
|
|
77
77
|
|
78
78
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
79
79
|
grpc_auth_metadata_context context,
|
80
|
-
|
80
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
81
81
|
grpc_closure* on_request_metadata,
|
82
82
|
grpc_error_handle* error) override;
|
83
83
|
|
84
|
-
void cancel_get_request_metadata(
|
85
|
-
|
84
|
+
void cancel_get_request_metadata(
|
85
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
86
|
+
grpc_error_handle error) override;
|
86
87
|
|
87
88
|
void on_http_response(grpc_credentials_metadata_request* r,
|
88
89
|
grpc_error_handle error);
|
@@ -90,17 +91,15 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
|
|
90
91
|
|
91
92
|
protected:
|
92
93
|
virtual void fetch_oauth2(grpc_credentials_metadata_request* req,
|
93
|
-
grpc_httpcli_context* httpcli_context,
|
94
94
|
grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
|
95
95
|
grpc_millis deadline) = 0;
|
96
96
|
|
97
97
|
private:
|
98
98
|
gpr_mu mu_;
|
99
|
-
|
99
|
+
absl::optional<grpc_core::Slice> access_token_value_;
|
100
100
|
gpr_timespec token_expiration_;
|
101
101
|
bool token_fetch_pending_ = false;
|
102
102
|
grpc_oauth2_pending_get_request_metadata* pending_requests_ = nullptr;
|
103
|
-
grpc_httpcli_context httpcli_context_;
|
104
103
|
grpc_polling_entity pollent_;
|
105
104
|
};
|
106
105
|
|
@@ -120,7 +119,6 @@ class grpc_google_refresh_token_credentials final
|
|
120
119
|
|
121
120
|
protected:
|
122
121
|
void fetch_oauth2(grpc_credentials_metadata_request* req,
|
123
|
-
grpc_httpcli_context* httpcli_context,
|
124
122
|
grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
|
125
123
|
grpc_millis deadline) override;
|
126
124
|
|
@@ -133,21 +131,21 @@ class grpc_google_refresh_token_credentials final
|
|
133
131
|
class grpc_access_token_credentials final : public grpc_call_credentials {
|
134
132
|
public:
|
135
133
|
explicit grpc_access_token_credentials(const char* access_token);
|
136
|
-
~grpc_access_token_credentials() override;
|
137
134
|
|
138
135
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
139
136
|
grpc_auth_metadata_context context,
|
140
|
-
|
137
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
141
138
|
grpc_closure* on_request_metadata,
|
142
139
|
grpc_error_handle* error) override;
|
143
140
|
|
144
|
-
void cancel_get_request_metadata(
|
145
|
-
|
141
|
+
void cancel_get_request_metadata(
|
142
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
143
|
+
grpc_error_handle error) override;
|
146
144
|
|
147
145
|
std::string debug_string() override;
|
148
146
|
|
149
147
|
private:
|
150
|
-
|
148
|
+
const grpc_core::Slice access_token_value_;
|
151
149
|
};
|
152
150
|
|
153
151
|
// Private constructor for refresh token credentials from an already parsed
|
@@ -159,8 +157,8 @@ grpc_refresh_token_credentials_create_from_auth_refresh_token(
|
|
159
157
|
// Exposed for testing only.
|
160
158
|
grpc_credentials_status
|
161
159
|
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
162
|
-
const struct grpc_http_response* response,
|
163
|
-
grpc_millis* token_lifetime);
|
160
|
+
const struct grpc_http_response* response,
|
161
|
+
absl::optional<grpc_core::Slice>* token_value, grpc_millis* token_lifetime);
|
164
162
|
|
165
163
|
namespace grpc_core {
|
166
164
|
// Exposed for testing only. This function validates the options, ensuring that
|
@@ -110,10 +110,9 @@ static grpc_error_handle process_plugin_result(
|
|
110
110
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal metadata");
|
111
111
|
} else {
|
112
112
|
for (size_t i = 0; i < num_md; ++i) {
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
GRPC_MDELEM_UNREF(mdelem);
|
113
|
+
r->md_array->emplace_back(
|
114
|
+
grpc_core::Slice(grpc_slice_ref_internal(md[i].key)),
|
115
|
+
grpc_core::Slice(grpc_slice_ref_internal(md[i].value)));
|
117
116
|
}
|
118
117
|
}
|
119
118
|
}
|
@@ -155,8 +154,8 @@ static void plugin_md_request_metadata_ready(void* request,
|
|
155
154
|
|
156
155
|
bool grpc_plugin_credentials::get_request_metadata(
|
157
156
|
grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context context,
|
158
|
-
|
159
|
-
grpc_error_handle* error) {
|
157
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
158
|
+
grpc_closure* on_request_metadata, grpc_error_handle* error) {
|
160
159
|
bool retval = true; // Synchronous return.
|
161
160
|
if (plugin_.get_metadata != nullptr) {
|
162
161
|
// Create pending_request object.
|
@@ -229,7 +228,7 @@ bool grpc_plugin_credentials::get_request_metadata(
|
|
229
228
|
}
|
230
229
|
|
231
230
|
void grpc_plugin_credentials::cancel_get_request_metadata(
|
232
|
-
|
231
|
+
grpc_core::CredentialsMetadataArray* md_array, grpc_error_handle error) {
|
233
232
|
gpr_mu_lock(&mu_);
|
234
233
|
for (pending_request* pending_request = pending_requests_;
|
235
234
|
pending_request != nullptr; pending_request = pending_request->next) {
|
@@ -33,7 +33,7 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
|
|
33
33
|
struct pending_request {
|
34
34
|
bool cancelled;
|
35
35
|
struct grpc_plugin_credentials* creds;
|
36
|
-
|
36
|
+
grpc_core::CredentialsMetadataArray* md_array;
|
37
37
|
grpc_closure* on_request_metadata;
|
38
38
|
struct pending_request* prev;
|
39
39
|
struct pending_request* next;
|
@@ -45,12 +45,13 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
|
|
45
45
|
|
46
46
|
bool get_request_metadata(grpc_polling_entity* pollent,
|
47
47
|
grpc_auth_metadata_context context,
|
48
|
-
|
48
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
49
49
|
grpc_closure* on_request_metadata,
|
50
50
|
grpc_error_handle* error) override;
|
51
51
|
|
52
|
-
void cancel_get_request_metadata(
|
53
|
-
|
52
|
+
void cancel_get_request_metadata(
|
53
|
+
grpc_core::CredentialsMetadataArray* md_array,
|
54
|
+
grpc_error_handle error) override;
|
54
55
|
|
55
56
|
// Checks if the request has been cancelled.
|
56
57
|
// If not, removes it from the pending list, so that it cannot be
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <grpc/support/string_util.h>
|
28
28
|
|
29
29
|
#include "src/core/lib/channel/channel_args.h"
|
30
|
+
#include "src/core/lib/security/security_connector/ssl_utils.h"
|
30
31
|
#include "src/core/lib/surface/api_trace.h"
|
31
32
|
#include "src/core/tsi/ssl_transport_security.h"
|
32
33
|
|
@@ -34,16 +35,6 @@
|
|
34
35
|
// SSL Channel Credentials.
|
35
36
|
//
|
36
37
|
|
37
|
-
void grpc_tsi_ssl_pem_key_cert_pairs_destroy(tsi_ssl_pem_key_cert_pair* kp,
|
38
|
-
size_t num_key_cert_pairs) {
|
39
|
-
if (kp == nullptr) return;
|
40
|
-
for (size_t i = 0; i < num_key_cert_pairs; i++) {
|
41
|
-
gpr_free(const_cast<char*>(kp[i].private_key));
|
42
|
-
gpr_free(const_cast<char*>(kp[i].cert_chain));
|
43
|
-
}
|
44
|
-
gpr_free(kp);
|
45
|
-
}
|
46
|
-
|
47
38
|
grpc_ssl_credentials::grpc_ssl_credentials(
|
48
39
|
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
|
49
40
|
const grpc_ssl_verify_peer_options* verify_options)
|
@@ -91,6 +91,12 @@ void grpc_tls_credentials_options_set_certificate_verifier(
|
|
91
91
|
options->set_certificate_verifier(verifier->Ref());
|
92
92
|
}
|
93
93
|
|
94
|
+
void grpc_tls_credentials_options_set_crl_directory(
|
95
|
+
grpc_tls_credentials_options* options, const char* crl_directory) {
|
96
|
+
GPR_ASSERT(options != nullptr);
|
97
|
+
options->set_crl_directory(crl_directory);
|
98
|
+
}
|
99
|
+
|
94
100
|
void grpc_tls_credentials_options_set_check_call_host(
|
95
101
|
grpc_tls_credentials_options* options, int check_call_host) {
|
96
102
|
GPR_ASSERT(options != nullptr);
|