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