grpc 1.10.0 → 1.11.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 +2098 -501
- data/include/grpc/byte_buffer.h +2 -0
- data/include/grpc/byte_buffer_reader.h +2 -0
- data/include/grpc/census.h +2 -0
- data/include/grpc/fork.h +2 -0
- data/include/grpc/grpc.h +10 -0
- data/include/grpc/grpc_cronet.h +2 -0
- data/include/grpc/grpc_posix.h +2 -1
- data/include/grpc/grpc_security.h +21 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/byte_buffer.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +24 -0
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/include/grpc/impl/codegen/sync.h +1 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +2 -0
- data/include/grpc/impl/codegen/sync_posix.h +2 -0
- data/include/grpc/impl/codegen/sync_windows.h +2 -0
- data/include/grpc/slice.h +2 -0
- data/include/grpc/slice_buffer.h +2 -0
- data/include/grpc/status.h +2 -0
- data/include/grpc/support/alloc.h +2 -2
- data/include/grpc/support/atm.h +2 -0
- data/include/grpc/support/atm_gcc_atomic.h +2 -0
- data/include/grpc/support/atm_gcc_sync.h +2 -0
- data/include/grpc/support/atm_windows.h +2 -0
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/sync.h +2 -0
- data/include/grpc/support/sync_custom.h +2 -0
- data/include/grpc/support/sync_generic.h +2 -0
- data/include/grpc/support/sync_posix.h +2 -0
- data/include/grpc/support/sync_windows.h +2 -0
- data/include/grpc/support/time.h +2 -0
- data/src/boringssl/err_data.c +444 -438
- data/src/core/ext/census/grpc_context.cc +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +13 -8
- data/src/core/ext/filters/client_channel/backup_poller.h +3 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +1988 -433
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +2 -27
- data/src/core/ext/filters/client_channel/connector.cc +2 -0
- data/src/core/ext/filters/client_channel/connector.h +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +96 -78
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +9 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +70 -62
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +2 -1
- data/src/core/ext/filters/client_channel/method_params.cc +178 -0
- data/src/core/ext/filters/client_channel/method_params.h +74 -0
- data/src/core/ext/filters/client_channel/parse_address.cc +17 -13
- data/src/core/ext/filters/client_channel/parse_address.h +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -0
- data/src/core/ext/filters/client_channel/resolver.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver.h +6 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +55 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +30 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +102 -120
- data/src/core/ext/filters/client_channel/retry_throttle.h +52 -25
- data/src/core/ext/filters/client_channel/subchannel.cc +14 -4
- data/src/core/ext/filters/client_channel/subchannel.h +10 -1
- data/src/core/ext/filters/client_channel/subchannel_index.cc +2 -0
- data/src/core/ext/filters/client_channel/subchannel_index.h +2 -0
- data/src/core/ext/filters/client_channel/uri_parser.cc +2 -1
- data/src/core/ext/filters/client_channel/uri_parser.h +2 -1
- data/src/core/ext/filters/deadline/deadline_filter.cc +2 -1
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +27 -25
- data/src/core/ext/filters/http/client/http_client_filter.h +2 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +156 -0
- data/src/core/ext/filters/http/client_authority_filter.h +34 -0
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -0
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +21 -22
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -8
- data/src/core/ext/filters/http/server/http_server_filter.h +2 -0
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +2 -0
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +2 -0
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +2 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -0
- data/src/core/ext/filters/max_age/max_age_filter.h +2 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +52 -49
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -0
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +2 -0
- data/src/core/ext/filters/workarounds/workaround_utils.cc +2 -0
- data/src/core/ext/filters/workarounds/workaround_utils.h +2 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +3 -1
- data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -0
- data/src/core/ext/transport/chttp2/client/authority.cc +42 -0
- data/src/core/ext/transport/chttp2/client/authority.h +36 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -0
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +10 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +2 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +2 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +152 -182
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +15 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.h +7 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +60 -24
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -6
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -23
- data/src/core/ext/transport/inproc/inproc_transport.h +2 -0
- data/src/core/lib/avl/avl.cc +2 -0
- data/src/core/lib/avl/avl.h +2 -0
- data/src/core/lib/backoff/backoff.cc +2 -0
- data/src/core/lib/backoff/backoff.h +2 -0
- data/src/core/lib/channel/channel_args.h +2 -0
- data/src/core/lib/channel/channel_stack.cc +3 -1
- data/src/core/lib/channel/channel_stack.h +2 -0
- data/src/core/lib/channel/channel_stack_builder.cc +2 -0
- data/src/core/lib/channel/channel_stack_builder.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +239 -0
- data/src/core/lib/channel/channel_trace.h +133 -0
- data/src/core/lib/channel/channel_trace_registry.cc +80 -0
- data/src/core/lib/channel/channel_trace_registry.h +43 -0
- data/src/core/lib/channel/connected_channel.cc +2 -0
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/handshaker.cc +2 -0
- data/src/core/lib/channel/handshaker.h +2 -0
- data/src/core/lib/channel/handshaker_factory.cc +2 -0
- data/src/core/lib/channel/handshaker_factory.h +2 -1
- data/src/core/lib/channel/handshaker_registry.cc +2 -0
- data/src/core/lib/channel/handshaker_registry.h +2 -1
- data/src/core/lib/channel/status_util.cc +100 -0
- data/src/core/lib/channel/status_util.h +58 -0
- data/src/core/lib/compression/algorithm_metadata.h +2 -0
- data/src/core/lib/compression/compression.cc +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -0
- data/src/core/lib/compression/compression_internal.h +2 -0
- data/src/core/lib/compression/message_compress.cc +2 -0
- data/src/core/lib/compression/message_compress.h +2 -0
- data/src/core/lib/compression/stream_compression.cc +2 -0
- data/src/core/lib/compression/stream_compression.h +2 -0
- data/src/core/lib/compression/stream_compression_gzip.cc +2 -0
- data/src/core/lib/compression/stream_compression_gzip.h +2 -0
- data/src/core/lib/compression/stream_compression_identity.cc +2 -1
- data/src/core/lib/compression/stream_compression_identity.h +2 -0
- data/src/core/lib/debug/stats.cc +2 -0
- data/src/core/lib/debug/stats.h +2 -0
- data/src/core/lib/debug/stats_data.cc +3 -1
- data/src/core/lib/debug/stats_data.h +2 -0
- data/src/core/lib/debug/trace.cc +2 -0
- data/src/core/lib/debug/trace.h +2 -1
- data/src/core/lib/gpr/alloc.cc +2 -1
- data/src/core/lib/gpr/arena.cc +47 -0
- data/src/core/lib/gpr/arena.h +2 -0
- data/src/core/lib/gpr/atm.cc +2 -0
- data/src/core/lib/gpr/cpu_linux.cc +5 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env.h +2 -0
- data/src/core/lib/gpr/fork.cc +2 -0
- data/src/core/lib/gpr/host_port.cc +2 -0
- data/src/core/lib/gpr/log.cc +2 -1
- data/src/core/lib/gpr/log_linux.cc +1 -0
- data/src/core/lib/gpr/mpscq.cc +2 -0
- data/src/core/lib/gpr/mpscq.h +2 -0
- data/src/core/lib/gpr/murmur_hash.cc +2 -0
- data/src/core/lib/gpr/spinlock.h +2 -0
- data/src/core/lib/gpr/string.cc +2 -1
- data/src/core/lib/gpr/string.h +2 -2
- data/src/core/lib/gpr/sync.cc +2 -0
- data/src/core/lib/gpr/time.cc +2 -0
- data/src/core/lib/gpr/time_posix.cc +1 -0
- data/src/core/lib/gpr/time_precise.cc +2 -0
- data/src/core/lib/gpr/time_precise.h +2 -0
- data/src/core/lib/gpr/tls_gcc.h +2 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_pthread.h +2 -0
- data/src/core/lib/gpr/tmpfile.h +2 -0
- data/src/core/lib/gprpp/atomic_with_atm.h +2 -0
- data/src/core/lib/gprpp/atomic_with_std.h +2 -0
- data/src/core/lib/gprpp/inlined_vector.h +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +3 -1
- data/src/core/lib/gprpp/memory.h +5 -3
- data/src/core/lib/gprpp/orphanable.h +3 -0
- data/src/core/lib/gprpp/ref_counted.h +4 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +3 -0
- data/src/core/lib/gprpp/thd.h +135 -0
- data/src/core/lib/gprpp/thd_posix.cc +209 -0
- data/src/core/lib/gprpp/thd_windows.cc +162 -0
- data/src/core/lib/http/format_request.cc +2 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +2 -0
- data/src/core/lib/http/httpcli.h +2 -0
- data/src/core/lib/http/httpcli_security_connector.cc +16 -7
- data/src/core/lib/http/parser.cc +2 -0
- data/src/core/lib/http/parser.h +2 -1
- data/src/core/lib/iomgr/call_combiner.cc +2 -0
- data/src/core/lib/iomgr/call_combiner.h +2 -1
- data/src/core/lib/iomgr/combiner.cc +2 -0
- data/src/core/lib/iomgr/combiner.h +2 -0
- data/src/core/lib/iomgr/endpoint.cc +4 -0
- data/src/core/lib/iomgr/endpoint.h +2 -0
- data/src/core/lib/iomgr/endpoint_pair.h +2 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -0
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +2 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +7 -4
- data/src/core/lib/iomgr/error.h +2 -0
- data/src/core/lib/iomgr/error_internal.h +2 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +2 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.h +2 -0
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -18
- data/src/core/lib/iomgr/ev_epollex_linux.h +2 -0
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +2 -0
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -0
- data/src/core/lib/iomgr/ev_poll_posix.cc +61 -31
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -0
- data/src/core/lib/iomgr/ev_posix.cc +35 -19
- data/src/core/lib/iomgr/ev_posix.h +2 -0
- data/src/core/lib/iomgr/ev_windows.cc +2 -0
- data/src/core/lib/iomgr/exec_ctx.cc +3 -1
- data/src/core/lib/iomgr/exec_ctx.h +21 -9
- data/src/core/lib/iomgr/executor.cc +13 -11
- data/src/core/lib/iomgr/executor.h +2 -0
- data/src/core/lib/iomgr/fork_posix.cc +4 -2
- data/src/core/lib/iomgr/fork_windows.cc +2 -0
- data/src/core/lib/iomgr/gethostname_fallback.cc +2 -0
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +2 -0
- data/src/core/lib/iomgr/gethostname_sysconf.cc +2 -0
- data/src/core/lib/iomgr/iocp_windows.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.h +3 -0
- data/src/core/lib/iomgr/iomgr.cc +2 -1
- data/src/core/lib/iomgr/iomgr.h +2 -0
- data/src/core/lib/iomgr/iomgr_custom.cc +63 -0
- data/src/core/lib/iomgr/iomgr_custom.h +47 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +43 -0
- data/src/core/lib/iomgr/iomgr_internal.h +14 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +30 -3
- data/src/core/lib/iomgr/iomgr_posix.h +2 -0
- data/src/core/lib/iomgr/iomgr_uv.cc +17 -20
- data/src/core/lib/iomgr/iomgr_windows.cc +29 -3
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +2 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.h +2 -0
- data/src/core/lib/iomgr/load_file.cc +2 -0
- data/src/core/lib/iomgr/load_file.h +2 -0
- data/src/core/lib/iomgr/lockfree_event.cc +2 -0
- data/src/core/lib/iomgr/lockfree_event.h +14 -1
- data/src/core/lib/iomgr/nameser.h +2 -0
- data/src/core/lib/iomgr/network_status_tracker.cc +3 -1
- data/src/core/lib/iomgr/network_status_tracker.h +2 -0
- data/src/core/lib/iomgr/polling_entity.cc +2 -0
- data/src/core/lib/iomgr/polling_entity.h +2 -0
- data/src/core/lib/iomgr/pollset.cc +56 -0
- data/src/core/lib/iomgr/pollset.h +19 -0
- data/src/core/lib/iomgr/pollset_custom.cc +106 -0
- data/src/core/lib/iomgr/{timer_generic.h → pollset_custom.h} +15 -17
- data/src/core/lib/iomgr/pollset_set.cc +55 -0
- data/src/core/lib/iomgr/pollset_set.h +13 -0
- data/src/core/lib/iomgr/pollset_set_custom.cc +48 -0
- data/src/core/lib/iomgr/{pollset_uv.h → pollset_set_custom.h} +6 -7
- data/src/core/lib/iomgr/pollset_set_windows.cc +17 -10
- data/src/core/lib/iomgr/pollset_set_windows.h +2 -0
- data/src/core/lib/iomgr/pollset_uv.cc +42 -105
- data/src/core/lib/iomgr/pollset_windows.cc +20 -12
- data/src/core/lib/iomgr/pollset_windows.h +2 -0
- data/src/core/lib/iomgr/port.h +10 -19
- data/src/core/lib/iomgr/resolve_address.cc +50 -0
- data/src/core/lib/iomgr/resolve_address.h +39 -10
- data/src/core/lib/iomgr/resolve_address_custom.cc +187 -0
- data/src/core/lib/iomgr/resolve_address_custom.h +43 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -22
- data/src/core/lib/iomgr/resolve_address_windows.cc +10 -22
- data/src/core/lib/iomgr/resource_quota.cc +2 -0
- data/src/core/lib/iomgr/resource_quota.h +3 -5
- data/src/core/lib/iomgr/sockaddr.h +3 -11
- data/src/core/lib/iomgr/sockaddr_custom.h +54 -0
- data/src/core/lib/iomgr/sockaddr_posix.h +26 -0
- data/src/core/lib/iomgr/sockaddr_utils.cc +91 -71
- data/src/core/lib/iomgr/sockaddr_utils.h +4 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +21 -0
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -0
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -0
- data/src/core/lib/iomgr/socket_mutator.cc +2 -0
- data/src/core/lib/iomgr/socket_mutator.h +2 -0
- data/src/core/lib/iomgr/socket_utils.h +11 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +15 -6
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -0
- data/src/core/lib/iomgr/socket_utils_uv.cc +13 -2
- data/src/core/lib/iomgr/socket_utils_windows.cc +10 -0
- data/src/core/lib/iomgr/socket_windows.cc +2 -0
- data/src/core/lib/iomgr/socket_windows.h +2 -1
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +2 -0
- data/src/core/lib/iomgr/tcp_client.cc +36 -0
- data/src/core/lib/iomgr/tcp_client.h +13 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +151 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +11 -24
- data/src/core/lib/iomgr/tcp_client_posix.h +2 -0
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -23
- data/src/core/lib/iomgr/tcp_custom.cc +365 -0
- data/src/core/lib/iomgr/tcp_custom.h +81 -0
- data/src/core/lib/iomgr/tcp_posix.cc +3 -1
- data/src/core/lib/iomgr/tcp_posix.h +2 -0
- data/src/core/lib/iomgr/tcp_server.cc +73 -0
- data/src/core/lib/iomgr/tcp_server.h +24 -0
- data/src/core/lib/iomgr/tcp_server_custom.cc +472 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +41 -23
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +2 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +43 -21
- data/src/core/lib/iomgr/tcp_uv.cc +308 -314
- data/src/core/lib/iomgr/tcp_windows.cc +3 -1
- data/src/core/lib/iomgr/tcp_windows.h +2 -0
- data/src/core/lib/iomgr/time_averaged_stats.cc +2 -0
- data/src/core/lib/iomgr/timer.cc +45 -0
- data/src/core/lib/iomgr/timer.h +36 -15
- data/src/core/lib/iomgr/timer_custom.cc +93 -0
- data/src/core/lib/iomgr/timer_custom.h +43 -0
- data/src/core/lib/iomgr/timer_generic.cc +12 -10
- data/src/core/lib/iomgr/timer_heap.cc +2 -4
- data/src/core/lib/iomgr/timer_heap.h +2 -0
- data/src/core/lib/iomgr/timer_manager.cc +12 -20
- data/src/core/lib/iomgr/timer_manager.h +2 -0
- data/src/core/lib/iomgr/timer_uv.cc +15 -49
- data/src/core/lib/iomgr/udp_server.cc +271 -230
- data/src/core/lib/iomgr/udp_server.h +44 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +10 -7
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +3 -1
- data/src/core/lib/iomgr/wakeup_fd_cv.h +2 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +2 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.h +2 -0
- data/src/core/lib/json/json.cc +38 -0
- data/src/core/lib/json/json.h +22 -1
- data/src/core/lib/json/json_reader.cc +2 -2
- data/src/core/lib/json/json_reader.h +1 -0
- data/src/core/lib/json/json_string.cc +2 -0
- data/src/core/lib/json/json_writer.cc +2 -2
- data/src/core/lib/json/json_writer.h +2 -0
- data/src/core/lib/profiling/basic_timers.cc +11 -9
- data/src/core/lib/profiling/timers.h +6 -3
- data/src/core/lib/security/context/security_context.cc +2 -0
- data/src/core/lib/security/context/security_context.h +2 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +119 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.h +102 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +72 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +57 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +67 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +33 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +114 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +126 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +46 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +112 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +58 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +2 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -0
- data/src/core/lib/security/credentials/credentials.cc +2 -0
- data/src/core/lib/security/credentials/credentials.h +2 -0
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +5 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +2 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +2 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -0
- data/src/core/lib/security/security_connector/alts_security_connector.cc +287 -0
- data/src/core/lib/security/security_connector/alts_security_connector.h +69 -0
- data/src/core/lib/security/security_connector/security_connector.cc +174 -74
- data/src/core/lib/security/security_connector/security_connector.h +41 -7
- data/src/core/lib/security/transport/auth_filters.h +2 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +14 -28
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -0
- data/src/core/lib/security/transport/secure_endpoint.h +2 -0
- data/src/core/lib/security/transport/security_handshaker.cc +2 -0
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
- data/src/core/lib/security/transport/target_authority_table.cc +75 -0
- data/src/core/lib/security/transport/{lb_targets_info.h → target_authority_table.h} +16 -8
- data/src/core/lib/security/transport/tsi_error.cc +2 -0
- data/src/core/lib/security/transport/tsi_error.h +2 -0
- data/src/core/lib/security/util/json_util.cc +2 -0
- data/src/core/lib/security/util/json_util.h +2 -0
- data/src/core/lib/slice/b64.cc +2 -0
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +2 -0
- data/src/core/lib/slice/percent_encoding.h +2 -0
- data/src/core/lib/slice/slice.cc +2 -0
- data/src/core/lib/slice/slice_buffer.cc +3 -1
- data/src/core/lib/slice/slice_hash_table.h +178 -45
- data/src/core/lib/slice/slice_intern.cc +2 -0
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/slice/slice_string_helpers.cc +2 -0
- data/src/core/lib/slice/slice_string_helpers.h +2 -1
- data/src/core/lib/slice/slice_weak_hash_table.h +105 -0
- data/src/core/lib/surface/api_trace.cc +3 -1
- data/src/core/lib/surface/api_trace.h +2 -0
- data/src/core/lib/surface/byte_buffer.cc +3 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +3 -0
- data/src/core/lib/surface/call.cc +46 -80
- data/src/core/lib/surface/call.h +2 -0
- data/src/core/lib/surface/call_details.cc +2 -0
- data/src/core/lib/surface/call_log_batch.cc +2 -0
- data/src/core/lib/surface/call_test_only.h +2 -0
- data/src/core/lib/surface/channel.cc +72 -41
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_init.cc +2 -0
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +2 -0
- data/src/core/lib/surface/channel_stack_type.cc +3 -2
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.h +2 -0
- data/src/core/lib/surface/completion_queue_factory.cc +3 -1
- data/src/core/lib/surface/completion_queue_factory.h +2 -0
- data/src/core/lib/surface/event_string.cc +2 -0
- data/src/core/lib/surface/event_string.h +2 -0
- data/src/core/lib/surface/init.cc +5 -2
- data/src/core/lib/surface/init_secure.cc +5 -2
- data/src/core/lib/surface/lame_client.cc +7 -5
- data/src/core/lib/surface/lame_client.h +2 -0
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +2 -0
- data/src/core/lib/surface/server.h +2 -0
- data/src/core/lib/surface/validate_metadata.cc +2 -1
- data/src/core/lib/surface/validate_metadata.h +2 -0
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -0
- data/src/core/lib/transport/byte_stream.cc +94 -116
- data/src/core/lib/transport/byte_stream.h +111 -78
- data/src/core/lib/transport/connectivity_state.cc +2 -0
- data/src/core/lib/transport/connectivity_state.h +3 -1
- data/src/core/lib/transport/error_utils.cc +2 -0
- data/src/core/lib/transport/error_utils.h +2 -0
- data/src/core/lib/transport/metadata.cc +2 -0
- data/src/core/lib/transport/metadata.h +3 -1
- data/src/core/lib/transport/metadata_batch.cc +26 -0
- data/src/core/lib/transport/metadata_batch.h +12 -1
- data/src/core/lib/transport/pid_controller.cc +2 -0
- data/src/core/lib/transport/pid_controller.h +2 -0
- data/src/core/lib/transport/service_config.cc +21 -175
- data/src/core/lib/transport/service_config.h +223 -35
- data/src/core/lib/transport/static_metadata.cc +310 -294
- data/src/core/lib/transport/static_metadata.h +96 -82
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +3 -0
- data/src/core/lib/transport/status_metadata.cc +54 -0
- data/src/core/lib/{iomgr/timer_uv.h → transport/status_metadata.h} +10 -12
- data/src/core/lib/transport/timeout_encoding.cc +2 -1
- data/src/core/lib/transport/timeout_encoding.h +2 -0
- data/src/core/lib/transport/transport.cc +3 -1
- data/src/core/lib/transport/transport.h +33 -7
- data/src/core/lib/transport/transport_impl.h +2 -0
- data/src/core/lib/transport/transport_op_string.cc +10 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +687 -0
- data/src/core/tsi/alts/crypt/gsec.cc +189 -0
- data/src/core/tsi/alts/crypt/gsec.h +454 -0
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +118 -0
- data/src/core/tsi/alts/frame_protector/alts_counter.h +98 -0
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +66 -0
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +255 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +407 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +55 -0
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +114 -0
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +114 -0
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +105 -0
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +103 -0
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +218 -0
- data/src/core/tsi/alts/frame_protector/frame_handler.h +236 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +316 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +137 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +520 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +323 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +143 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +149 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_event.cc +73 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_event.h +93 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +483 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +83 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +52 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +58 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +52 -0
- data/src/core/tsi/alts/handshaker/altscontext.pb.c +48 -0
- data/src/core/tsi/alts/handshaker/altscontext.pb.h +64 -0
- data/src/core/tsi/alts/handshaker/handshaker.pb.c +123 -0
- data/src/core/tsi/alts/handshaker/handshaker.pb.h +255 -0
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +50 -0
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +78 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +196 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +163 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +180 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +52 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +144 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +49 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +91 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +174 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +100 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +476 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +199 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +296 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +52 -0
- data/src/core/tsi/alts_transport_security.cc +3 -1
- data/src/core/tsi/alts_transport_security.h +4 -2
- data/src/core/tsi/fake_transport_security.cc +2 -1
- data/src/core/tsi/fake_transport_security.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +73 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +58 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +211 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +93 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +76 -0
- data/src/core/tsi/ssl_transport_security.cc +266 -62
- data/src/core/tsi/ssl_transport_security.h +128 -6
- data/src/core/tsi/ssl_types.h +2 -0
- data/src/core/tsi/transport_security.cc +2 -0
- data/src/core/tsi/transport_security.h +2 -0
- data/src/core/tsi/transport_security_adapter.cc +2 -0
- data/src/core/tsi/transport_security_adapter.h +2 -0
- data/src/core/tsi/transport_security_grpc.cc +2 -0
- data/src/core/tsi/transport_security_grpc.h +2 -0
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -2
- data/src/ruby/ext/grpc/rb_call.c +1 -13
- data/src/ruby/ext/grpc/rb_channel.c +6 -6
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +15 -0
- data/src/ruby/lib/grpc/core/time_consts.rb +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +19 -8
- data/src/ruby/lib/grpc/generic/client_stub.rb +6 -10
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +133 -0
- data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +54 -0
- data/src/ruby/spec/pb/package_with_underscore/data.proto +23 -0
- data/src/ruby/spec/pb/package_with_underscore/service.proto +23 -0
- data/third_party/address_sorting/address_sorting.c +369 -0
- data/third_party/address_sorting/address_sorting_internal.h +70 -0
- data/third_party/address_sorting/address_sorting_posix.c +97 -0
- data/third_party/address_sorting/address_sorting_windows.c +55 -0
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +110 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +20 -9
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +19 -8
- data/third_party/boringssl/crypto/asn1/a_object.c +0 -128
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +3 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +2 -4
- data/third_party/boringssl/crypto/asn1/tasn_new.c +3 -2
- data/third_party/boringssl/crypto/bn_extra/bn_asn1.c +0 -16
- data/third_party/boringssl/crypto/buf/buf.c +14 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +93 -0
- data/third_party/boringssl/crypto/conf/conf.c +2 -2
- data/third_party/boringssl/crypto/cpu-intel.c +17 -17
- data/third_party/boringssl/crypto/crypto.c +16 -4
- data/third_party/boringssl/crypto/curve25519/spake25519.c +11 -11
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +9 -21
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +2 -2
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -8
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +2 -23
- data/third_party/boringssl/crypto/ex_data.c +0 -1
- data/third_party/boringssl/crypto/fipsmodule/bn/add.c +7 -11
- data/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.c +19 -16
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +15 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +53 -46
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +242 -85
- data/third_party/boringssl/crypto/fipsmodule/bn/generic.c +42 -47
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +176 -34
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +118 -65
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +94 -61
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +79 -63
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +26 -28
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +250 -149
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -27
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +54 -20
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +7 -41
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-64.c +6 -40
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +17 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +3 -64
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +27 -9
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +203 -205
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +14 -15
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +12 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +4 -3
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +25 -36
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +10 -0
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -4
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +9 -19
- data/third_party/boringssl/crypto/lhash/lhash.c +19 -0
- data/third_party/boringssl/crypto/obj/obj.c +29 -69
- data/third_party/boringssl/crypto/pem/pem_lib.c +2 -2
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +4 -55
- data/third_party/boringssl/crypto/rsa_extra/rsa_asn1.c +3 -22
- data/third_party/boringssl/crypto/x509/by_dir.c +1 -3
- data/third_party/boringssl/crypto/x509/by_file.c +0 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +0 -1
- data/third_party/boringssl/crypto/x509/x509_obj.c +1 -3
- data/third_party/boringssl/crypto/x509/x509_txt.c +0 -6
- data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -1
- data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -1
- data/third_party/boringssl/crypto/x509/x_algor.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +3 -4
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +1 -2
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +15 -7
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +41 -2
- data/third_party/boringssl/include/openssl/asn1.h +0 -1
- data/third_party/boringssl/include/openssl/base.h +1 -1
- data/third_party/boringssl/include/openssl/bio.h +5 -2
- data/third_party/boringssl/include/openssl/bn.h +2 -17
- data/third_party/boringssl/include/openssl/buf.h +4 -0
- data/third_party/boringssl/include/openssl/bytestring.h +11 -0
- data/third_party/boringssl/include/openssl/chacha.h +5 -1
- data/third_party/boringssl/include/openssl/cipher.h +10 -0
- data/third_party/boringssl/include/openssl/conf.h +4 -8
- data/third_party/boringssl/include/openssl/dsa.h +2 -18
- data/third_party/boringssl/include/openssl/ec.h +5 -5
- data/third_party/boringssl/include/openssl/ecdsa.h +10 -28
- data/third_party/boringssl/include/openssl/evp.h +0 -4
- data/third_party/boringssl/include/openssl/lhash.h +1 -18
- data/third_party/boringssl/include/openssl/obj.h +1 -0
- data/third_party/boringssl/include/openssl/rsa.h +3 -4
- data/third_party/boringssl/include/openssl/ssl.h +35 -54
- data/third_party/boringssl/include/openssl/ssl3.h +2 -0
- data/third_party/boringssl/include/openssl/stack.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +1 -16
- data/third_party/boringssl/include/openssl/x509.h +3 -2
- data/third_party/boringssl/include/openssl/x509_vfy.h +0 -2
- data/third_party/boringssl/include/openssl/x509v3.h +1 -0
- data/third_party/boringssl/ssl/custom_extensions.cc +1 -1
- data/third_party/boringssl/ssl/d1_both.cc +120 -129
- data/third_party/boringssl/ssl/d1_lib.cc +23 -21
- data/third_party/boringssl/ssl/d1_pkt.cc +39 -143
- data/third_party/boringssl/ssl/dtls_method.cc +16 -23
- data/third_party/boringssl/ssl/dtls_record.cc +11 -4
- data/third_party/boringssl/ssl/handshake.cc +109 -40
- data/third_party/boringssl/ssl/handshake_client.cc +104 -96
- data/third_party/boringssl/ssl/handshake_server.cc +62 -72
- data/third_party/boringssl/ssl/internal.h +397 -318
- data/third_party/boringssl/ssl/s3_both.cc +173 -191
- data/third_party/boringssl/ssl/s3_lib.cc +26 -34
- data/third_party/boringssl/ssl/s3_pkt.cc +105 -247
- data/third_party/boringssl/ssl/ssl_asn1.cc +22 -22
- data/third_party/boringssl/ssl/ssl_buffer.cc +98 -108
- data/third_party/boringssl/ssl/ssl_cert.cc +12 -1
- data/third_party/boringssl/ssl/ssl_cipher.cc +23 -28
- data/third_party/boringssl/ssl/ssl_key_share.cc +11 -6
- data/third_party/boringssl/ssl/ssl_lib.cc +190 -113
- data/third_party/boringssl/ssl/ssl_privkey.cc +76 -106
- data/third_party/boringssl/ssl/ssl_session.cc +3 -3
- data/third_party/boringssl/ssl/ssl_stat.cc +3 -3
- data/third_party/boringssl/ssl/ssl_transcript.cc +38 -22
- data/third_party/boringssl/ssl/ssl_versions.cc +64 -31
- data/third_party/boringssl/ssl/t1_enc.cc +137 -154
- data/third_party/boringssl/ssl/t1_lib.cc +463 -478
- data/third_party/boringssl/ssl/tls13_both.cc +57 -58
- data/third_party/boringssl/ssl/tls13_client.cc +256 -121
- data/third_party/boringssl/ssl/tls13_enc.cc +187 -72
- data/third_party/boringssl/ssl/tls13_server.cc +187 -86
- data/third_party/boringssl/ssl/tls_method.cc +20 -30
- data/third_party/boringssl/ssl/tls_record.cc +77 -40
- data/third_party/boringssl/third_party/fiat/curve25519.c +5062 -0
- data/third_party/boringssl/{crypto/curve25519 → third_party/fiat}/internal.h +40 -27
- data/third_party/nanopb/pb.h +1 -1
- metadata +147 -45
- data/src/core/lib/gpr/thd.cc +0 -49
- data/src/core/lib/gpr/thd.h +0 -71
- data/src/core/lib/gpr/thd_posix.cc +0 -154
- data/src/core/lib/gpr/thd_windows.cc +0 -107
- data/src/core/lib/iomgr/iomgr_uv.h +0 -37
- data/src/core/lib/iomgr/pollset_set_uv.cc +0 -43
- data/src/core/lib/iomgr/resolve_address_uv.cc +0 -284
- data/src/core/lib/iomgr/tcp_client_uv.cc +0 -175
- data/src/core/lib/iomgr/tcp_server_uv.cc +0 -471
- data/src/core/lib/iomgr/tcp_uv.h +0 -51
- data/src/core/lib/security/transport/lb_targets_info.cc +0 -59
- data/src/core/lib/slice/slice_hash_table.cc +0 -145
- data/third_party/boringssl/crypto/curve25519/curve25519.c +0 -4938
@@ -0,0 +1,236 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2018 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_TSI_ALTS_FRAME_PROTECTOR_FRAME_HANDLER_H
|
20
|
+
#define GRPC_CORE_TSI_ALTS_FRAME_PROTECTOR_FRAME_HANDLER_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <stdbool.h>
|
25
|
+
#include <stdlib.h>
|
26
|
+
|
27
|
+
const size_t kFrameMessageType = 0x06;
|
28
|
+
const size_t kFrameLengthFieldSize = 4;
|
29
|
+
const size_t kFrameMessageTypeFieldSize = 4;
|
30
|
+
const size_t kFrameMaxSize = 1024 * 1024;
|
31
|
+
const size_t kFrameHeaderSize =
|
32
|
+
kFrameLengthFieldSize + kFrameMessageTypeFieldSize;
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Implementation of frame reader and frame writer. All APIs in the
|
36
|
+
* header are thread-compatible.
|
37
|
+
*/
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Main struct for a frame writer. It reads frames from an input buffer, and
|
41
|
+
* writes the contents as raw bytes. It does not own the input buffer.
|
42
|
+
*/
|
43
|
+
typedef struct alts_frame_writer {
|
44
|
+
const unsigned char* input_buffer;
|
45
|
+
unsigned char header_buffer[kFrameHeaderSize];
|
46
|
+
size_t input_bytes_written;
|
47
|
+
size_t header_bytes_written;
|
48
|
+
size_t input_size;
|
49
|
+
} alts_frame_writer;
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Main struct for a frame reader. It reads raw bytes and puts the framed
|
53
|
+
* result into an output buffer. It does not own the output buffer.
|
54
|
+
*/
|
55
|
+
typedef struct alts_frame_reader {
|
56
|
+
unsigned char* output_buffer;
|
57
|
+
unsigned char header_buffer[kFrameHeaderSize];
|
58
|
+
size_t header_bytes_read;
|
59
|
+
size_t output_bytes_read;
|
60
|
+
size_t bytes_remaining;
|
61
|
+
} alts_frame_reader;
|
62
|
+
|
63
|
+
/**
|
64
|
+
* This method creates a frame writer instance and initializes its internal
|
65
|
+
* states.
|
66
|
+
*/
|
67
|
+
alts_frame_writer* alts_create_frame_writer();
|
68
|
+
|
69
|
+
/**
|
70
|
+
* This method resets internal states of a frame writer and prepares to write
|
71
|
+
* a single frame. It does not take ownership of payload_buffer.
|
72
|
+
* The payload_buffer must outlive the writer.
|
73
|
+
*
|
74
|
+
* - writer: a frame writer instance.
|
75
|
+
* - buffer: a buffer storing full payload data to be framed.
|
76
|
+
* - length: size of payload data.
|
77
|
+
*
|
78
|
+
* The method returns true on success and false otherwise.
|
79
|
+
*/
|
80
|
+
bool alts_reset_frame_writer(alts_frame_writer* writer,
|
81
|
+
const unsigned char* buffer, size_t length);
|
82
|
+
|
83
|
+
/**
|
84
|
+
* This method writes up to bytes_size bytes of a frame to output.
|
85
|
+
*
|
86
|
+
* - writer: a frame writer instance.
|
87
|
+
* - output: an output buffer used to store the frame.
|
88
|
+
* - bytes_size: an in/out parameter that stores the size of output buffer
|
89
|
+
* before the call, and gets written the number of frame bytes written to the
|
90
|
+
* buffer.
|
91
|
+
*
|
92
|
+
* The method returns true on success and false otherwise.
|
93
|
+
*/
|
94
|
+
bool alts_write_frame_bytes(alts_frame_writer* writer, unsigned char* output,
|
95
|
+
size_t* bytes_size);
|
96
|
+
|
97
|
+
/**
|
98
|
+
* This method checks if a reset can be called to write a new frame. It returns
|
99
|
+
* true if it's the first time to frame a payload, or the current frame has
|
100
|
+
* been finished processing. It returns false if it's not ready yet to start a
|
101
|
+
* new frame (e.g., more payload data needs to be accumulated to process the
|
102
|
+
* current frame).
|
103
|
+
*
|
104
|
+
* if (alts_is_frame_writer_done(writer)) {
|
105
|
+
* // a new frame can be written, call reset.
|
106
|
+
* alts_reset_frame_writer(writer, payload_buffer, payload_size);
|
107
|
+
* } else {
|
108
|
+
* // accumulate more payload data until a full frame can be written.
|
109
|
+
* }
|
110
|
+
*
|
111
|
+
* - writer: a frame writer instance.
|
112
|
+
*/
|
113
|
+
bool alts_is_frame_writer_done(alts_frame_writer* writer);
|
114
|
+
|
115
|
+
/**
|
116
|
+
* This method returns the number of bytes left to write before a complete frame
|
117
|
+
* is formed.
|
118
|
+
*
|
119
|
+
* - writer: a frame writer instance.
|
120
|
+
*/
|
121
|
+
size_t alts_get_num_writer_bytes_remaining(alts_frame_writer* writer);
|
122
|
+
|
123
|
+
/**
|
124
|
+
* This method destroys a frame writer instance.
|
125
|
+
*
|
126
|
+
* - writer: a frame writer instance.
|
127
|
+
*/
|
128
|
+
void alts_destroy_frame_writer(alts_frame_writer* writer);
|
129
|
+
|
130
|
+
/**
|
131
|
+
* This method creates a frame reader instance and initializes its internal
|
132
|
+
* states.
|
133
|
+
*/
|
134
|
+
alts_frame_reader* alts_create_frame_reader();
|
135
|
+
|
136
|
+
/**
|
137
|
+
* This method resets internal states of a frame reader (including setting its
|
138
|
+
* output_buffer with buffer), and prepares to write processed bytes to
|
139
|
+
* an output_buffer. It does not take ownership of buffer. The buffer must
|
140
|
+
* outlive reader.
|
141
|
+
*
|
142
|
+
* - reader: a frame reader instance.
|
143
|
+
* - buffer: an output buffer used to store deframed results.
|
144
|
+
*
|
145
|
+
* The method returns true on success and false otherwise.
|
146
|
+
*/
|
147
|
+
bool alts_reset_frame_reader(alts_frame_reader* reader, unsigned char* buffer);
|
148
|
+
|
149
|
+
/**
|
150
|
+
* This method processes up to the number of bytes given in bytes_size. It may
|
151
|
+
* choose not to process all the bytes, if, for instance, more bytes are
|
152
|
+
* given to the method than required to complete the current frame.
|
153
|
+
*
|
154
|
+
* - reader: a frame reader instance.
|
155
|
+
* - bytes: a buffer that stores data to be processed.
|
156
|
+
* - bytes_size: an in/out parameter that stores the size of bytes before the
|
157
|
+
* call and gets written the number of bytes processed.
|
158
|
+
*
|
159
|
+
* The method returns true on success and false otherwise.
|
160
|
+
*/
|
161
|
+
bool alts_read_frame_bytes(alts_frame_reader* reader,
|
162
|
+
const unsigned char* bytes, size_t* bytes_size);
|
163
|
+
|
164
|
+
/**
|
165
|
+
* This method checks if a frame length has been read.
|
166
|
+
*
|
167
|
+
* - reader: a frame reader instance.
|
168
|
+
*
|
169
|
+
* The method returns true if a frame length has been read and false otherwise.
|
170
|
+
*/
|
171
|
+
bool alts_has_read_frame_length(alts_frame_reader* reader);
|
172
|
+
|
173
|
+
/**
|
174
|
+
* This method returns the number of bytes the frame reader intends to write.
|
175
|
+
* It may only be called if alts_has_read_frame_length() returns true.
|
176
|
+
*
|
177
|
+
* - reader: a frame reader instance.
|
178
|
+
*/
|
179
|
+
size_t alts_get_reader_bytes_remaining(alts_frame_reader* reader);
|
180
|
+
|
181
|
+
/**
|
182
|
+
* This method resets output_buffer but does not otherwise modify other internal
|
183
|
+
* states of a frame reader instance. After being set, the new output_buffer
|
184
|
+
* will hold the deframed payload held by the original output_buffer. It does
|
185
|
+
* not take ownership of buffer. The buffer must outlive the reader.
|
186
|
+
* To distinguish between two reset methods on a frame reader,
|
187
|
+
*
|
188
|
+
* if (alts_fh_is_frame_reader_done(reader)) {
|
189
|
+
* // if buffer contains a full payload to be deframed, call reset.
|
190
|
+
* alts_reset_frame_reader(reader, buffer);
|
191
|
+
* }
|
192
|
+
*
|
193
|
+
* // if remaining buffer space is not enough to hold a full payload
|
194
|
+
* if (buffer_space_remaining < alts_get_reader_bytes_remaining(reader)) {
|
195
|
+
* // allocate enough space for a new buffer, copy back data processed so far,
|
196
|
+
* // and call reset.
|
197
|
+
* alts_reset_reader_output_buffer(reader, new_buffer).
|
198
|
+
* }
|
199
|
+
*
|
200
|
+
* - reader: a frame reader instance.
|
201
|
+
* - buffer: a buffer used to set reader's output_buffer.
|
202
|
+
*/
|
203
|
+
void alts_reset_reader_output_buffer(alts_frame_reader* reader,
|
204
|
+
unsigned char* buffer);
|
205
|
+
|
206
|
+
/**
|
207
|
+
* This method checks if reset can be called to start processing a new frame.
|
208
|
+
* If true and reset was previously called, a full frame has been processed and
|
209
|
+
* the content of the frame is available in output_buffer.
|
210
|
+
|
211
|
+
* - reader: a frame reader instance.
|
212
|
+
*/
|
213
|
+
bool alts_is_frame_reader_done(alts_frame_reader* reader);
|
214
|
+
|
215
|
+
/**
|
216
|
+
* This method returns output_bytes_read of a frame reader instance.
|
217
|
+
*
|
218
|
+
* - reader: a frame reader instance.
|
219
|
+
*/
|
220
|
+
size_t alts_get_output_bytes_read(alts_frame_reader* reader);
|
221
|
+
|
222
|
+
/**
|
223
|
+
* This method returns output_buffer of a frame reader instance.
|
224
|
+
*
|
225
|
+
* - reader: a frame reader instance.
|
226
|
+
*/
|
227
|
+
unsigned char* alts_get_output_buffer(alts_frame_reader* reader);
|
228
|
+
|
229
|
+
/**
|
230
|
+
* This method destroys a frame reader instance.
|
231
|
+
*
|
232
|
+
* - reader: a frame reader instance.
|
233
|
+
*/
|
234
|
+
void alts_destroy_frame_reader(alts_frame_reader* reader);
|
235
|
+
|
236
|
+
#endif /* GRPC_CORE_TSI_ALTS_FRAME_PROTECTOR_FRAME_HANDLER_H */
|
@@ -0,0 +1,316 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2018 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/tsi/alts/handshaker/alts_handshaker_client.h"
|
22
|
+
|
23
|
+
#include <grpc/byte_buffer.h>
|
24
|
+
#include <grpc/support/alloc.h>
|
25
|
+
#include <grpc/support/log.h>
|
26
|
+
|
27
|
+
#include "src/core/tsi/alts/handshaker/alts_handshaker_service_api.h"
|
28
|
+
|
29
|
+
const int kHandshakerClientOpNum = 4;
|
30
|
+
|
31
|
+
typedef struct alts_grpc_handshaker_client {
|
32
|
+
alts_handshaker_client base;
|
33
|
+
grpc_call* call;
|
34
|
+
alts_grpc_caller grpc_caller;
|
35
|
+
} alts_grpc_handshaker_client;
|
36
|
+
|
37
|
+
static grpc_call_error grpc_start_batch(grpc_call* call, const grpc_op* ops,
|
38
|
+
size_t nops, void* tag) {
|
39
|
+
return grpc_call_start_batch(call, ops, nops, tag, nullptr);
|
40
|
+
}
|
41
|
+
|
42
|
+
/**
|
43
|
+
* Populate grpc operation data with the fields of ALTS TSI event and make a
|
44
|
+
* grpc call.
|
45
|
+
*/
|
46
|
+
static tsi_result make_grpc_call(alts_handshaker_client* client,
|
47
|
+
alts_tsi_event* event, bool is_start) {
|
48
|
+
GPR_ASSERT(client != nullptr && event != nullptr);
|
49
|
+
alts_grpc_handshaker_client* grpc_client =
|
50
|
+
reinterpret_cast<alts_grpc_handshaker_client*>(client);
|
51
|
+
grpc_op ops[kHandshakerClientOpNum];
|
52
|
+
memset(ops, 0, sizeof(ops));
|
53
|
+
grpc_op* op = ops;
|
54
|
+
if (is_start) {
|
55
|
+
op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
56
|
+
op->data.send_initial_metadata.count = 0;
|
57
|
+
op++;
|
58
|
+
GPR_ASSERT(op - ops <= kHandshakerClientOpNum);
|
59
|
+
op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
60
|
+
op->data.recv_initial_metadata.recv_initial_metadata =
|
61
|
+
&event->initial_metadata;
|
62
|
+
op++;
|
63
|
+
GPR_ASSERT(op - ops <= kHandshakerClientOpNum);
|
64
|
+
}
|
65
|
+
op->op = GRPC_OP_SEND_MESSAGE;
|
66
|
+
op->data.send_message.send_message = event->send_buffer;
|
67
|
+
op++;
|
68
|
+
GPR_ASSERT(op - ops <= kHandshakerClientOpNum);
|
69
|
+
op->op = GRPC_OP_RECV_MESSAGE;
|
70
|
+
op->data.recv_message.recv_message = &event->recv_buffer;
|
71
|
+
op++;
|
72
|
+
GPR_ASSERT(op - ops <= kHandshakerClientOpNum);
|
73
|
+
GPR_ASSERT(grpc_client->grpc_caller != nullptr);
|
74
|
+
if (grpc_client->grpc_caller(grpc_client->call, ops,
|
75
|
+
static_cast<size_t>(op - ops),
|
76
|
+
(void*)event) != GRPC_CALL_OK) {
|
77
|
+
gpr_log(GPR_ERROR, "Start batch operation failed");
|
78
|
+
return TSI_INTERNAL_ERROR;
|
79
|
+
}
|
80
|
+
return TSI_OK;
|
81
|
+
}
|
82
|
+
|
83
|
+
/* Create and populate a client_start handshaker request, then serialize it. */
|
84
|
+
static grpc_byte_buffer* get_serialized_start_client(alts_tsi_event* event) {
|
85
|
+
bool ok = true;
|
86
|
+
grpc_gcp_handshaker_req* req =
|
87
|
+
grpc_gcp_handshaker_req_create(CLIENT_START_REQ);
|
88
|
+
ok &= grpc_gcp_handshaker_req_set_handshake_protocol(
|
89
|
+
req, grpc_gcp_HandshakeProtocol_ALTS);
|
90
|
+
ok &= grpc_gcp_handshaker_req_add_application_protocol(
|
91
|
+
req, ALTS_APPLICATION_PROTOCOL);
|
92
|
+
ok &= grpc_gcp_handshaker_req_add_record_protocol(req, ALTS_RECORD_PROTOCOL);
|
93
|
+
grpc_gcp_rpc_protocol_versions* versions = &event->options->rpc_versions;
|
94
|
+
ok &= grpc_gcp_handshaker_req_set_rpc_versions(
|
95
|
+
req, versions->max_rpc_version.major, versions->max_rpc_version.minor,
|
96
|
+
versions->min_rpc_version.major, versions->min_rpc_version.minor);
|
97
|
+
char* target_name = grpc_slice_to_c_string(event->target_name);
|
98
|
+
ok &= grpc_gcp_handshaker_req_set_target_name(req, target_name);
|
99
|
+
target_service_account* ptr =
|
100
|
+
(reinterpret_cast<grpc_alts_credentials_client_options*>(event->options))
|
101
|
+
->target_account_list_head;
|
102
|
+
while (ptr != nullptr) {
|
103
|
+
grpc_gcp_handshaker_req_add_target_identity_service_account(req, ptr->data);
|
104
|
+
ptr = ptr->next;
|
105
|
+
}
|
106
|
+
grpc_slice slice;
|
107
|
+
ok &= grpc_gcp_handshaker_req_encode(req, &slice);
|
108
|
+
grpc_byte_buffer* buffer = nullptr;
|
109
|
+
if (ok) {
|
110
|
+
buffer = grpc_raw_byte_buffer_create(&slice, 1 /* number of slices */);
|
111
|
+
}
|
112
|
+
grpc_slice_unref(slice);
|
113
|
+
gpr_free(target_name);
|
114
|
+
grpc_gcp_handshaker_req_destroy(req);
|
115
|
+
return buffer;
|
116
|
+
}
|
117
|
+
|
118
|
+
static tsi_result handshaker_client_start_client(alts_handshaker_client* client,
|
119
|
+
alts_tsi_event* event) {
|
120
|
+
if (client == nullptr || event == nullptr) {
|
121
|
+
gpr_log(GPR_ERROR,
|
122
|
+
"Invalid arguments to alts_grpc_handshaker_client_start_client()");
|
123
|
+
return TSI_INVALID_ARGUMENT;
|
124
|
+
}
|
125
|
+
grpc_byte_buffer* buffer = get_serialized_start_client(event);
|
126
|
+
if (buffer == nullptr) {
|
127
|
+
gpr_log(GPR_ERROR, "get_serialized_start_client() failed");
|
128
|
+
return TSI_INTERNAL_ERROR;
|
129
|
+
}
|
130
|
+
event->send_buffer = buffer;
|
131
|
+
tsi_result result = make_grpc_call(client, event, true /* is_start */);
|
132
|
+
if (result != TSI_OK) {
|
133
|
+
gpr_log(GPR_ERROR, "make_grpc_call() failed");
|
134
|
+
}
|
135
|
+
return result;
|
136
|
+
}
|
137
|
+
|
138
|
+
/* Create and populate a start_server handshaker request, then serialize it. */
|
139
|
+
static grpc_byte_buffer* get_serialized_start_server(
|
140
|
+
alts_tsi_event* event, grpc_slice* bytes_received) {
|
141
|
+
GPR_ASSERT(bytes_received != nullptr);
|
142
|
+
grpc_gcp_handshaker_req* req =
|
143
|
+
grpc_gcp_handshaker_req_create(SERVER_START_REQ);
|
144
|
+
bool ok = grpc_gcp_handshaker_req_add_application_protocol(
|
145
|
+
req, ALTS_APPLICATION_PROTOCOL);
|
146
|
+
ok &= grpc_gcp_handshaker_req_param_add_record_protocol(
|
147
|
+
req, grpc_gcp_HandshakeProtocol_ALTS, ALTS_RECORD_PROTOCOL);
|
148
|
+
ok &= grpc_gcp_handshaker_req_set_in_bytes(
|
149
|
+
req, reinterpret_cast<const char*> GRPC_SLICE_START_PTR(*bytes_received),
|
150
|
+
GRPC_SLICE_LENGTH(*bytes_received));
|
151
|
+
grpc_gcp_rpc_protocol_versions* versions = &event->options->rpc_versions;
|
152
|
+
ok &= grpc_gcp_handshaker_req_set_rpc_versions(
|
153
|
+
req, versions->max_rpc_version.major, versions->max_rpc_version.minor,
|
154
|
+
versions->min_rpc_version.major, versions->min_rpc_version.minor);
|
155
|
+
grpc_slice req_slice;
|
156
|
+
ok &= grpc_gcp_handshaker_req_encode(req, &req_slice);
|
157
|
+
grpc_byte_buffer* buffer = nullptr;
|
158
|
+
if (ok) {
|
159
|
+
buffer = grpc_raw_byte_buffer_create(&req_slice, 1 /* number of slices */);
|
160
|
+
}
|
161
|
+
grpc_slice_unref(req_slice);
|
162
|
+
grpc_gcp_handshaker_req_destroy(req);
|
163
|
+
return buffer;
|
164
|
+
}
|
165
|
+
|
166
|
+
static tsi_result handshaker_client_start_server(alts_handshaker_client* client,
|
167
|
+
alts_tsi_event* event,
|
168
|
+
grpc_slice* bytes_received) {
|
169
|
+
if (client == nullptr || event == nullptr || bytes_received == nullptr) {
|
170
|
+
gpr_log(GPR_ERROR,
|
171
|
+
"Invalid arguments to alts_grpc_handshaker_client_start_server()");
|
172
|
+
return TSI_INVALID_ARGUMENT;
|
173
|
+
}
|
174
|
+
grpc_byte_buffer* buffer = get_serialized_start_server(event, bytes_received);
|
175
|
+
if (buffer == nullptr) {
|
176
|
+
gpr_log(GPR_ERROR, "get_serialized_start_server() failed");
|
177
|
+
return TSI_INTERNAL_ERROR;
|
178
|
+
}
|
179
|
+
event->send_buffer = buffer;
|
180
|
+
tsi_result result = make_grpc_call(client, event, true /* is_start */);
|
181
|
+
if (result != TSI_OK) {
|
182
|
+
gpr_log(GPR_ERROR, "make_grpc_call() failed");
|
183
|
+
}
|
184
|
+
return result;
|
185
|
+
}
|
186
|
+
|
187
|
+
/* Create and populate a next handshaker request, then serialize it. */
|
188
|
+
static grpc_byte_buffer* get_serialized_next(grpc_slice* bytes_received) {
|
189
|
+
GPR_ASSERT(bytes_received != nullptr);
|
190
|
+
grpc_gcp_handshaker_req* req = grpc_gcp_handshaker_req_create(NEXT_REQ);
|
191
|
+
bool ok = grpc_gcp_handshaker_req_set_in_bytes(
|
192
|
+
req, reinterpret_cast<const char*> GRPC_SLICE_START_PTR(*bytes_received),
|
193
|
+
GRPC_SLICE_LENGTH(*bytes_received));
|
194
|
+
grpc_slice req_slice;
|
195
|
+
ok &= grpc_gcp_handshaker_req_encode(req, &req_slice);
|
196
|
+
grpc_byte_buffer* buffer = nullptr;
|
197
|
+
if (ok) {
|
198
|
+
buffer = grpc_raw_byte_buffer_create(&req_slice, 1 /* number of slices */);
|
199
|
+
}
|
200
|
+
grpc_slice_unref(req_slice);
|
201
|
+
grpc_gcp_handshaker_req_destroy(req);
|
202
|
+
return buffer;
|
203
|
+
}
|
204
|
+
|
205
|
+
static tsi_result handshaker_client_next(alts_handshaker_client* client,
|
206
|
+
alts_tsi_event* event,
|
207
|
+
grpc_slice* bytes_received) {
|
208
|
+
if (client == nullptr || event == nullptr || bytes_received == nullptr) {
|
209
|
+
gpr_log(GPR_ERROR,
|
210
|
+
"Invalid arguments to alts_grpc_handshaker_client_next()");
|
211
|
+
return TSI_INVALID_ARGUMENT;
|
212
|
+
}
|
213
|
+
grpc_byte_buffer* buffer = get_serialized_next(bytes_received);
|
214
|
+
if (buffer == nullptr) {
|
215
|
+
gpr_log(GPR_ERROR, "get_serialized_next() failed");
|
216
|
+
return TSI_INTERNAL_ERROR;
|
217
|
+
}
|
218
|
+
event->send_buffer = buffer;
|
219
|
+
tsi_result result = make_grpc_call(client, event, false /* is_start */);
|
220
|
+
if (result != TSI_OK) {
|
221
|
+
gpr_log(GPR_ERROR, "make_grpc_call() failed");
|
222
|
+
}
|
223
|
+
return result;
|
224
|
+
}
|
225
|
+
|
226
|
+
static void handshaker_client_destruct(alts_handshaker_client* client) {
|
227
|
+
if (client == nullptr) {
|
228
|
+
return;
|
229
|
+
}
|
230
|
+
alts_grpc_handshaker_client* grpc_client =
|
231
|
+
reinterpret_cast<alts_grpc_handshaker_client*>(client);
|
232
|
+
grpc_call_unref(grpc_client->call);
|
233
|
+
}
|
234
|
+
|
235
|
+
static const alts_handshaker_client_vtable vtable = {
|
236
|
+
handshaker_client_start_client, handshaker_client_start_server,
|
237
|
+
handshaker_client_next, handshaker_client_destruct};
|
238
|
+
|
239
|
+
alts_handshaker_client* alts_grpc_handshaker_client_create(
|
240
|
+
grpc_channel* channel, grpc_completion_queue* queue,
|
241
|
+
const char* handshaker_service_url) {
|
242
|
+
if (channel == nullptr || queue == nullptr ||
|
243
|
+
handshaker_service_url == nullptr) {
|
244
|
+
gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()");
|
245
|
+
return nullptr;
|
246
|
+
}
|
247
|
+
alts_grpc_handshaker_client* client =
|
248
|
+
static_cast<alts_grpc_handshaker_client*>(gpr_zalloc(sizeof(*client)));
|
249
|
+
client->grpc_caller = grpc_start_batch;
|
250
|
+
grpc_slice slice = grpc_slice_from_copied_string(handshaker_service_url);
|
251
|
+
client->call = grpc_channel_create_call(
|
252
|
+
channel, nullptr, GRPC_PROPAGATE_DEFAULTS, queue,
|
253
|
+
grpc_slice_from_static_string(ALTS_SERVICE_METHOD), &slice,
|
254
|
+
gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
|
255
|
+
client->base.vtable = &vtable;
|
256
|
+
grpc_slice_unref(slice);
|
257
|
+
return &client->base;
|
258
|
+
}
|
259
|
+
|
260
|
+
namespace grpc_core {
|
261
|
+
namespace internal {
|
262
|
+
|
263
|
+
void alts_handshaker_client_set_grpc_caller_for_testing(
|
264
|
+
alts_handshaker_client* client, alts_grpc_caller caller) {
|
265
|
+
GPR_ASSERT(client != nullptr && caller != nullptr);
|
266
|
+
alts_grpc_handshaker_client* grpc_client =
|
267
|
+
reinterpret_cast<alts_grpc_handshaker_client*>(client);
|
268
|
+
grpc_client->grpc_caller = caller;
|
269
|
+
}
|
270
|
+
|
271
|
+
} // namespace internal
|
272
|
+
} // namespace grpc_core
|
273
|
+
|
274
|
+
tsi_result alts_handshaker_client_start_client(alts_handshaker_client* client,
|
275
|
+
alts_tsi_event* event) {
|
276
|
+
if (client != nullptr && client->vtable != nullptr &&
|
277
|
+
client->vtable->client_start != nullptr) {
|
278
|
+
return client->vtable->client_start(client, event);
|
279
|
+
}
|
280
|
+
gpr_log(GPR_ERROR,
|
281
|
+
"client or client->vtable has not been initialized properly");
|
282
|
+
return TSI_INVALID_ARGUMENT;
|
283
|
+
}
|
284
|
+
|
285
|
+
tsi_result alts_handshaker_client_start_server(alts_handshaker_client* client,
|
286
|
+
alts_tsi_event* event,
|
287
|
+
grpc_slice* bytes_received) {
|
288
|
+
if (client != nullptr && client->vtable != nullptr &&
|
289
|
+
client->vtable->server_start != nullptr) {
|
290
|
+
return client->vtable->server_start(client, event, bytes_received);
|
291
|
+
}
|
292
|
+
gpr_log(GPR_ERROR,
|
293
|
+
"client or client->vtable has not been initialized properly");
|
294
|
+
return TSI_INVALID_ARGUMENT;
|
295
|
+
}
|
296
|
+
|
297
|
+
tsi_result alts_handshaker_client_next(alts_handshaker_client* client,
|
298
|
+
alts_tsi_event* event,
|
299
|
+
grpc_slice* bytes_received) {
|
300
|
+
if (client != nullptr && client->vtable != nullptr &&
|
301
|
+
client->vtable->next != nullptr) {
|
302
|
+
return client->vtable->next(client, event, bytes_received);
|
303
|
+
}
|
304
|
+
gpr_log(GPR_ERROR,
|
305
|
+
"client or client->vtable has not been initialized properly");
|
306
|
+
return TSI_INVALID_ARGUMENT;
|
307
|
+
}
|
308
|
+
|
309
|
+
void alts_handshaker_client_destroy(alts_handshaker_client* client) {
|
310
|
+
if (client != nullptr) {
|
311
|
+
if (client->vtable != nullptr && client->vtable->destruct != nullptr) {
|
312
|
+
client->vtable->destruct(client);
|
313
|
+
}
|
314
|
+
gpr_free(client);
|
315
|
+
}
|
316
|
+
}
|