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,163 @@
|
|
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_HANDSHAKER_TRANSPORT_SECURITY_COMMON_API_H
|
20
|
+
#define GRPC_CORE_TSI_ALTS_HANDSHAKER_TRANSPORT_SECURITY_COMMON_API_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include "third_party/nanopb/pb_decode.h"
|
25
|
+
#include "third_party/nanopb/pb_encode.h"
|
26
|
+
|
27
|
+
#include <grpc/slice.h>
|
28
|
+
#include <grpc/slice_buffer.h>
|
29
|
+
#include <grpc/support/alloc.h>
|
30
|
+
#include <grpc/support/log.h>
|
31
|
+
|
32
|
+
#include "src/core/tsi/alts/handshaker/transport_security_common.pb.h"
|
33
|
+
|
34
|
+
typedef grpc_gcp_RpcProtocolVersions grpc_gcp_rpc_protocol_versions;
|
35
|
+
|
36
|
+
typedef grpc_gcp_RpcProtocolVersions_Version
|
37
|
+
grpc_gcp_rpc_protocol_versions_version;
|
38
|
+
|
39
|
+
/**
|
40
|
+
* This method sets the value for max_rpc_versions field of rpc protocol
|
41
|
+
* versions.
|
42
|
+
*
|
43
|
+
* - versions: an rpc protocol version instance.
|
44
|
+
* - max_major: a major version of maximum supported RPC version.
|
45
|
+
* - max_minor: a minor version of maximum supported RPC version.
|
46
|
+
*
|
47
|
+
* The method returns true on success and false otherwise.
|
48
|
+
*/
|
49
|
+
bool grpc_gcp_rpc_protocol_versions_set_max(
|
50
|
+
grpc_gcp_rpc_protocol_versions* versions, uint32_t max_major,
|
51
|
+
uint32_t max_minor);
|
52
|
+
|
53
|
+
/**
|
54
|
+
* This method sets the value for min_rpc_versions field of rpc protocol
|
55
|
+
* versions.
|
56
|
+
*
|
57
|
+
* - versions: an rpc protocol version instance.
|
58
|
+
* - min_major: a major version of minimum supported RPC version.
|
59
|
+
* - min_minor: a minor version of minimum supported RPC version.
|
60
|
+
*
|
61
|
+
* The method returns true on success and false otherwise.
|
62
|
+
*/
|
63
|
+
bool grpc_gcp_rpc_protocol_versions_set_min(
|
64
|
+
grpc_gcp_rpc_protocol_versions* versions, uint32_t min_major,
|
65
|
+
uint32_t min_minor);
|
66
|
+
|
67
|
+
/**
|
68
|
+
* This method computes serialized byte length of rpc protocol versions.
|
69
|
+
*
|
70
|
+
* - versions: an rpc protocol versions instance.
|
71
|
+
*
|
72
|
+
* The method returns serialized byte length. It returns 0 on failure.
|
73
|
+
*/
|
74
|
+
size_t grpc_gcp_rpc_protocol_versions_encode_length(
|
75
|
+
const grpc_gcp_rpc_protocol_versions* versions);
|
76
|
+
|
77
|
+
/**
|
78
|
+
* This method serializes rpc protocol versions and writes the result to
|
79
|
+
* the memory buffer provided by the caller. Caller is responsible for
|
80
|
+
* allocating sufficient memory to store the serialized data.
|
81
|
+
*
|
82
|
+
* - versions: an rpc protocol versions instance.
|
83
|
+
* - bytes: bytes buffer where the result will be written to.
|
84
|
+
* - bytes_length: length of the bytes buffer.
|
85
|
+
*
|
86
|
+
* The method returns true on success and false otherwise.
|
87
|
+
*/
|
88
|
+
bool grpc_gcp_rpc_protocol_versions_encode_to_raw_bytes(
|
89
|
+
const grpc_gcp_rpc_protocol_versions* versions, uint8_t* bytes,
|
90
|
+
size_t bytes_length);
|
91
|
+
|
92
|
+
/**
|
93
|
+
* This method serializes an rpc protocol version and returns serialized rpc
|
94
|
+
* versions in grpc slice.
|
95
|
+
*
|
96
|
+
* - versions: an rpc protocol versions instance.
|
97
|
+
* - slice: grpc slice where the serialized result will be written.
|
98
|
+
*
|
99
|
+
* The method returns true on success and false otherwise.
|
100
|
+
*/
|
101
|
+
bool grpc_gcp_rpc_protocol_versions_encode(
|
102
|
+
const grpc_gcp_rpc_protocol_versions* versions, grpc_slice* slice);
|
103
|
+
|
104
|
+
/**
|
105
|
+
* This method de-serializes input in grpc slice form and stores the result
|
106
|
+
* in rpc protocol versions.
|
107
|
+
*
|
108
|
+
* - slice: a data stream containing a serialized rpc protocol version.
|
109
|
+
* - versions: an rpc protocol version instance used to hold de-serialized
|
110
|
+
* result.
|
111
|
+
*
|
112
|
+
* The method returns true on success and false otherwise.
|
113
|
+
*/
|
114
|
+
bool grpc_gcp_rpc_protocol_versions_decode(
|
115
|
+
grpc_slice slice, grpc_gcp_rpc_protocol_versions* versions);
|
116
|
+
|
117
|
+
/**
|
118
|
+
* This method performs a deep copy operation on rpc protocol versions
|
119
|
+
* instance.
|
120
|
+
*
|
121
|
+
* - src: rpc protocol versions instance that needs to be copied.
|
122
|
+
* - dst: rpc protocol versions instance that stores the copied result.
|
123
|
+
*
|
124
|
+
* The method returns true on success and false otherwise.
|
125
|
+
*/
|
126
|
+
bool grpc_gcp_rpc_protocol_versions_copy(
|
127
|
+
const grpc_gcp_rpc_protocol_versions* src,
|
128
|
+
grpc_gcp_rpc_protocol_versions* dst);
|
129
|
+
|
130
|
+
/**
|
131
|
+
* This method performs a version check between local and peer rpc protocol
|
132
|
+
* versions.
|
133
|
+
*
|
134
|
+
* - local_versions: local rpc protocol versions instance.
|
135
|
+
* - peer_versions: peer rpc protocol versions instance.
|
136
|
+
* - highest_common_version: an output parameter that will store the highest
|
137
|
+
* common rpc protocol version both parties agreed on.
|
138
|
+
*
|
139
|
+
* The method returns true if the check passes which means both parties agreed
|
140
|
+
* on a common rpc protocol to use, and false otherwise.
|
141
|
+
*/
|
142
|
+
bool grpc_gcp_rpc_protocol_versions_check(
|
143
|
+
const grpc_gcp_rpc_protocol_versions* local_versions,
|
144
|
+
const grpc_gcp_rpc_protocol_versions* peer_versions,
|
145
|
+
grpc_gcp_rpc_protocol_versions_version* highest_common_version);
|
146
|
+
|
147
|
+
namespace grpc_core {
|
148
|
+
namespace internal {
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Exposed for testing only.
|
152
|
+
* The method returns 0 if v1 = v2,
|
153
|
+
* returns 1 if v1 > v2,
|
154
|
+
* returns -1 if v1 < v2.
|
155
|
+
*/
|
156
|
+
int grpc_gcp_rpc_protocol_version_compare(
|
157
|
+
const grpc_gcp_rpc_protocol_versions_version* v1,
|
158
|
+
const grpc_gcp_rpc_protocol_versions_version* v2);
|
159
|
+
|
160
|
+
} // namespace internal
|
161
|
+
} // namespace grpc_core
|
162
|
+
|
163
|
+
#endif /* GRPC_CORE_TSI_ALTS_HANDSHAKER_TRANSPORT_SECURITY_COMMON_API_H */
|
@@ -0,0 +1,180 @@
|
|
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/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h"
|
22
|
+
|
23
|
+
#include <grpc/support/alloc.h>
|
24
|
+
#include <grpc/support/log.h>
|
25
|
+
|
26
|
+
#include "src/core/lib/slice/slice_internal.h"
|
27
|
+
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h"
|
28
|
+
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h"
|
29
|
+
|
30
|
+
/* Main struct for alts_grpc_integrity_only_record_protocol. */
|
31
|
+
typedef struct alts_grpc_integrity_only_record_protocol {
|
32
|
+
alts_grpc_record_protocol base;
|
33
|
+
grpc_slice_buffer data_sb;
|
34
|
+
unsigned char* tag_buf;
|
35
|
+
} alts_grpc_integrity_only_record_protocol;
|
36
|
+
|
37
|
+
/* --- alts_grpc_record_protocol methods implementation. --- */
|
38
|
+
|
39
|
+
static tsi_result alts_grpc_integrity_only_protect(
|
40
|
+
alts_grpc_record_protocol* rp, grpc_slice_buffer* unprotected_slices,
|
41
|
+
grpc_slice_buffer* protected_slices) {
|
42
|
+
/* Input sanity check. */
|
43
|
+
if (rp == nullptr || unprotected_slices == nullptr ||
|
44
|
+
protected_slices == nullptr) {
|
45
|
+
gpr_log(GPR_ERROR,
|
46
|
+
"Invalid nullptr arguments to alts_grpc_record_protocol protect.");
|
47
|
+
return TSI_INVALID_ARGUMENT;
|
48
|
+
}
|
49
|
+
/* Allocates memory for header and tag slices. */
|
50
|
+
grpc_slice header_slice = GRPC_SLICE_MALLOC(rp->header_length);
|
51
|
+
grpc_slice tag_slice = GRPC_SLICE_MALLOC(rp->tag_length);
|
52
|
+
/* Calls alts_iovec_record_protocol protect. */
|
53
|
+
char* error_details = nullptr;
|
54
|
+
iovec_t header_iovec = {GRPC_SLICE_START_PTR(header_slice),
|
55
|
+
GRPC_SLICE_LENGTH(header_slice)};
|
56
|
+
iovec_t tag_iovec = {GRPC_SLICE_START_PTR(tag_slice),
|
57
|
+
GRPC_SLICE_LENGTH(tag_slice)};
|
58
|
+
alts_grpc_record_protocol_convert_slice_buffer_to_iovec(rp,
|
59
|
+
unprotected_slices);
|
60
|
+
grpc_status_code status = alts_iovec_record_protocol_integrity_only_protect(
|
61
|
+
rp->iovec_rp, rp->iovec_buf, unprotected_slices->count, header_iovec,
|
62
|
+
tag_iovec, &error_details);
|
63
|
+
if (status != GRPC_STATUS_OK) {
|
64
|
+
gpr_log(GPR_ERROR, "Failed to protect, %s", error_details);
|
65
|
+
gpr_free(error_details);
|
66
|
+
return TSI_INTERNAL_ERROR;
|
67
|
+
}
|
68
|
+
/* Appends result to protected_slices. */
|
69
|
+
grpc_slice_buffer_add(protected_slices, header_slice);
|
70
|
+
grpc_slice_buffer_move_into(unprotected_slices, protected_slices);
|
71
|
+
grpc_slice_buffer_add(protected_slices, tag_slice);
|
72
|
+
return TSI_OK;
|
73
|
+
}
|
74
|
+
|
75
|
+
static tsi_result alts_grpc_integrity_only_unprotect(
|
76
|
+
alts_grpc_record_protocol* rp, grpc_slice_buffer* protected_slices,
|
77
|
+
grpc_slice_buffer* unprotected_slices) {
|
78
|
+
/* Input sanity check. */
|
79
|
+
if (rp == nullptr || protected_slices == nullptr ||
|
80
|
+
unprotected_slices == nullptr) {
|
81
|
+
gpr_log(
|
82
|
+
GPR_ERROR,
|
83
|
+
"Invalid nullptr arguments to alts_grpc_record_protocol unprotect.");
|
84
|
+
return TSI_INVALID_ARGUMENT;
|
85
|
+
}
|
86
|
+
if (protected_slices->length < rp->header_length + rp->tag_length) {
|
87
|
+
gpr_log(GPR_ERROR, "Protected slices do not have sufficient data.");
|
88
|
+
return TSI_INVALID_ARGUMENT;
|
89
|
+
}
|
90
|
+
/* In this method, rp points to alts_grpc_record_protocol struct
|
91
|
+
* and integrity_only_record_protocol points to
|
92
|
+
* alts_grpc_integrity_only_record_protocol struct. */
|
93
|
+
alts_grpc_integrity_only_record_protocol* integrity_only_record_protocol =
|
94
|
+
reinterpret_cast<alts_grpc_integrity_only_record_protocol*>(rp);
|
95
|
+
/* Strips frame header from protected slices. */
|
96
|
+
grpc_slice_buffer_reset_and_unref_internal(&rp->header_sb);
|
97
|
+
grpc_slice_buffer_move_first(protected_slices, rp->header_length,
|
98
|
+
&rp->header_sb);
|
99
|
+
GPR_ASSERT(rp->header_sb.length == rp->header_length);
|
100
|
+
iovec_t header_iovec = alts_grpc_record_protocol_get_header_iovec(rp);
|
101
|
+
/* Moves protected slices data to data_sb and leaves the remaining tag. */
|
102
|
+
grpc_slice_buffer_reset_and_unref_internal(
|
103
|
+
&integrity_only_record_protocol->data_sb);
|
104
|
+
grpc_slice_buffer_move_first(protected_slices,
|
105
|
+
protected_slices->length - rp->tag_length,
|
106
|
+
&integrity_only_record_protocol->data_sb);
|
107
|
+
GPR_ASSERT(protected_slices->length == rp->tag_length);
|
108
|
+
iovec_t tag_iovec = {nullptr, rp->tag_length};
|
109
|
+
if (protected_slices->count == 1) {
|
110
|
+
tag_iovec.iov_base = GRPC_SLICE_START_PTR(protected_slices->slices[0]);
|
111
|
+
} else {
|
112
|
+
/* Frame tag is in multiple slices, copies the tag bytes from slice
|
113
|
+
* buffer to a single flat buffer. */
|
114
|
+
alts_grpc_record_protocol_copy_slice_buffer(
|
115
|
+
protected_slices, integrity_only_record_protocol->tag_buf);
|
116
|
+
tag_iovec.iov_base = integrity_only_record_protocol->tag_buf;
|
117
|
+
}
|
118
|
+
/* Calls alts_iovec_record_protocol unprotect. */
|
119
|
+
char* error_details = nullptr;
|
120
|
+
alts_grpc_record_protocol_convert_slice_buffer_to_iovec(
|
121
|
+
rp, &integrity_only_record_protocol->data_sb);
|
122
|
+
grpc_status_code status = alts_iovec_record_protocol_integrity_only_unprotect(
|
123
|
+
rp->iovec_rp, rp->iovec_buf,
|
124
|
+
integrity_only_record_protocol->data_sb.count, header_iovec, tag_iovec,
|
125
|
+
&error_details);
|
126
|
+
if (status != GRPC_STATUS_OK) {
|
127
|
+
gpr_log(GPR_ERROR, "Failed to unprotect, %s", error_details);
|
128
|
+
gpr_free(error_details);
|
129
|
+
return TSI_INTERNAL_ERROR;
|
130
|
+
}
|
131
|
+
grpc_slice_buffer_reset_and_unref_internal(&rp->header_sb);
|
132
|
+
grpc_slice_buffer_reset_and_unref_internal(protected_slices);
|
133
|
+
grpc_slice_buffer_move_into(&integrity_only_record_protocol->data_sb,
|
134
|
+
unprotected_slices);
|
135
|
+
return TSI_OK;
|
136
|
+
}
|
137
|
+
|
138
|
+
static void alts_grpc_integrity_only_destruct(alts_grpc_record_protocol* rp) {
|
139
|
+
if (rp == nullptr) {
|
140
|
+
return;
|
141
|
+
}
|
142
|
+
alts_grpc_integrity_only_record_protocol* integrity_only_rp =
|
143
|
+
reinterpret_cast<alts_grpc_integrity_only_record_protocol*>(rp);
|
144
|
+
grpc_slice_buffer_destroy_internal(&integrity_only_rp->data_sb);
|
145
|
+
gpr_free(integrity_only_rp->tag_buf);
|
146
|
+
}
|
147
|
+
|
148
|
+
static const alts_grpc_record_protocol_vtable
|
149
|
+
alts_grpc_integrity_only_record_protocol_vtable = {
|
150
|
+
alts_grpc_integrity_only_protect, alts_grpc_integrity_only_unprotect,
|
151
|
+
alts_grpc_integrity_only_destruct};
|
152
|
+
|
153
|
+
tsi_result alts_grpc_integrity_only_record_protocol_create(
|
154
|
+
gsec_aead_crypter* crypter, size_t overflow_size, bool is_client,
|
155
|
+
bool is_protect, alts_grpc_record_protocol** rp) {
|
156
|
+
if (crypter == nullptr || rp == nullptr) {
|
157
|
+
gpr_log(GPR_ERROR,
|
158
|
+
"Invalid nullptr arguments to alts_grpc_record_protocol create.");
|
159
|
+
return TSI_INVALID_ARGUMENT;
|
160
|
+
}
|
161
|
+
alts_grpc_integrity_only_record_protocol* impl =
|
162
|
+
static_cast<alts_grpc_integrity_only_record_protocol*>(
|
163
|
+
gpr_zalloc(sizeof(alts_grpc_integrity_only_record_protocol)));
|
164
|
+
/* Calls alts_grpc_record_protocol init. */
|
165
|
+
tsi_result result = alts_grpc_record_protocol_init(
|
166
|
+
&impl->base, crypter, overflow_size, is_client,
|
167
|
+
/*is_integrity_only=*/true, is_protect);
|
168
|
+
if (result != TSI_OK) {
|
169
|
+
gpr_free(impl);
|
170
|
+
return result;
|
171
|
+
}
|
172
|
+
/* Initializes slice buffer for data_sb. */
|
173
|
+
grpc_slice_buffer_init(&impl->data_sb);
|
174
|
+
/* Allocates tag buffer. */
|
175
|
+
impl->tag_buf =
|
176
|
+
static_cast<unsigned char*>(gpr_malloc(impl->base.tag_length));
|
177
|
+
impl->base.vtable = &alts_grpc_integrity_only_record_protocol_vtable;
|
178
|
+
*rp = &impl->base;
|
179
|
+
return TSI_OK;
|
180
|
+
}
|
@@ -0,0 +1,52 @@
|
|
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_ZERO_COPY_FRAME_PROTECTOR_ALTS_GRPC_INTEGRITY_ONLY_RECORD_PROTOCOL_H
|
20
|
+
#define GRPC_CORE_TSI_ALTS_ZERO_COPY_FRAME_PROTECTOR_ALTS_GRPC_INTEGRITY_ONLY_RECORD_PROTOCOL_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <stdbool.h>
|
25
|
+
|
26
|
+
#include "src/core/tsi/alts/crypt/gsec.h"
|
27
|
+
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h"
|
28
|
+
|
29
|
+
/**
|
30
|
+
* This method creates an integrity-only alts_grpc_record_protocol instance,
|
31
|
+
* given a gsec_aead_crypter instance and a flag indicating if the created
|
32
|
+
* instance will be used at the client or server side. The ownership of
|
33
|
+
* gsec_aead_crypter instance is transferred to this new object.
|
34
|
+
*
|
35
|
+
* - crypter: a gsec_aead_crypter instance used to perform AEAD decryption.
|
36
|
+
* - overflow_size: overflow size of counter in bytes.
|
37
|
+
* - is_client: a flag indicating if the alts_grpc_record_protocol instance will
|
38
|
+
* be used at the client or server side.
|
39
|
+
* - is_protect: a flag indicating if the alts_grpc_record_protocol instance
|
40
|
+
* will be used for protect or unprotect.
|
41
|
+
* - rp: an alts_grpc_record_protocol instance to be returned from
|
42
|
+
* the method.
|
43
|
+
*
|
44
|
+
* This method returns TSI_OK in case of success or a specific error code in
|
45
|
+
* case of failure.
|
46
|
+
*/
|
47
|
+
tsi_result alts_grpc_integrity_only_record_protocol_create(
|
48
|
+
gsec_aead_crypter* crypter, size_t overflow_size, bool is_client,
|
49
|
+
bool is_protect, alts_grpc_record_protocol** rp);
|
50
|
+
|
51
|
+
#endif /* GRPC_CORE_TSI_ALTS_ZERO_COPY_FRAME_PROTECTOR_ALTS_GRPC_INTEGRITY_ONLY_RECORD_PROTOCOL_H \
|
52
|
+
*/
|
data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc
ADDED
@@ -0,0 +1,144 @@
|
|
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/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h"
|
22
|
+
|
23
|
+
#include <grpc/support/alloc.h>
|
24
|
+
#include <grpc/support/log.h>
|
25
|
+
|
26
|
+
#include "src/core/lib/slice/slice_internal.h"
|
27
|
+
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h"
|
28
|
+
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h"
|
29
|
+
|
30
|
+
/* Privacy-integrity alts_grpc_record_protocol object uses the same struct
|
31
|
+
* defined in alts_grpc_record_protocol_common.h. */
|
32
|
+
|
33
|
+
/* --- alts_grpc_record_protocol methods implementation. --- */
|
34
|
+
|
35
|
+
static tsi_result alts_grpc_privacy_integrity_protect(
|
36
|
+
alts_grpc_record_protocol* rp, grpc_slice_buffer* unprotected_slices,
|
37
|
+
grpc_slice_buffer* protected_slices) {
|
38
|
+
/* Input sanity check. */
|
39
|
+
if (rp == nullptr || unprotected_slices == nullptr ||
|
40
|
+
protected_slices == nullptr) {
|
41
|
+
gpr_log(GPR_ERROR,
|
42
|
+
"Invalid nullptr arguments to alts_grpc_record_protocol protect.");
|
43
|
+
return TSI_INVALID_ARGUMENT;
|
44
|
+
}
|
45
|
+
/* Allocates memory for output frame. In privacy-integrity protect, the
|
46
|
+
* protected frame is stored in a newly allocated buffer. */
|
47
|
+
size_t protected_frame_size =
|
48
|
+
unprotected_slices->length + rp->header_length +
|
49
|
+
alts_iovec_record_protocol_get_tag_length(rp->iovec_rp);
|
50
|
+
grpc_slice protected_slice = GRPC_SLICE_MALLOC(protected_frame_size);
|
51
|
+
iovec_t protected_iovec = {GRPC_SLICE_START_PTR(protected_slice),
|
52
|
+
GRPC_SLICE_LENGTH(protected_slice)};
|
53
|
+
/* Calls alts_iovec_record_protocol protect. */
|
54
|
+
char* error_details = nullptr;
|
55
|
+
alts_grpc_record_protocol_convert_slice_buffer_to_iovec(rp,
|
56
|
+
unprotected_slices);
|
57
|
+
grpc_status_code status =
|
58
|
+
alts_iovec_record_protocol_privacy_integrity_protect(
|
59
|
+
rp->iovec_rp, rp->iovec_buf, unprotected_slices->count,
|
60
|
+
protected_iovec, &error_details);
|
61
|
+
if (status != GRPC_STATUS_OK) {
|
62
|
+
gpr_log(GPR_ERROR, "Failed to protect, %s", error_details);
|
63
|
+
gpr_free(error_details);
|
64
|
+
grpc_slice_unref(protected_slice);
|
65
|
+
return TSI_INTERNAL_ERROR;
|
66
|
+
}
|
67
|
+
grpc_slice_buffer_add(protected_slices, protected_slice);
|
68
|
+
grpc_slice_buffer_reset_and_unref_internal(unprotected_slices);
|
69
|
+
return TSI_OK;
|
70
|
+
}
|
71
|
+
|
72
|
+
static tsi_result alts_grpc_privacy_integrity_unprotect(
|
73
|
+
alts_grpc_record_protocol* rp, grpc_slice_buffer* protected_slices,
|
74
|
+
grpc_slice_buffer* unprotected_slices) {
|
75
|
+
/* Input sanity check. */
|
76
|
+
if (rp == nullptr || protected_slices == nullptr ||
|
77
|
+
unprotected_slices == nullptr) {
|
78
|
+
gpr_log(
|
79
|
+
GPR_ERROR,
|
80
|
+
"Invalid nullptr arguments to alts_grpc_record_protocol unprotect.");
|
81
|
+
return TSI_INVALID_ARGUMENT;
|
82
|
+
}
|
83
|
+
/* Allocates memory for output frame. In privacy-integrity unprotect, the
|
84
|
+
* unprotected data are stored in a newly allocated buffer. */
|
85
|
+
if (protected_slices->length < rp->header_length + rp->tag_length) {
|
86
|
+
gpr_log(GPR_ERROR, "Protected slices do not have sufficient data.");
|
87
|
+
return TSI_INVALID_ARGUMENT;
|
88
|
+
}
|
89
|
+
size_t unprotected_frame_size =
|
90
|
+
protected_slices->length - rp->header_length - rp->tag_length;
|
91
|
+
grpc_slice unprotected_slice = GRPC_SLICE_MALLOC(unprotected_frame_size);
|
92
|
+
iovec_t unprotected_iovec = {GRPC_SLICE_START_PTR(unprotected_slice),
|
93
|
+
GRPC_SLICE_LENGTH(unprotected_slice)};
|
94
|
+
/* Strips frame header from protected slices. */
|
95
|
+
grpc_slice_buffer_reset_and_unref_internal(&rp->header_sb);
|
96
|
+
grpc_slice_buffer_move_first(protected_slices, rp->header_length,
|
97
|
+
&rp->header_sb);
|
98
|
+
iovec_t header_iovec = alts_grpc_record_protocol_get_header_iovec(rp);
|
99
|
+
/* Calls alts_iovec_record_protocol unprotect. */
|
100
|
+
char* error_details = nullptr;
|
101
|
+
alts_grpc_record_protocol_convert_slice_buffer_to_iovec(rp, protected_slices);
|
102
|
+
grpc_status_code status =
|
103
|
+
alts_iovec_record_protocol_privacy_integrity_unprotect(
|
104
|
+
rp->iovec_rp, header_iovec, rp->iovec_buf, protected_slices->count,
|
105
|
+
unprotected_iovec, &error_details);
|
106
|
+
if (status != GRPC_STATUS_OK) {
|
107
|
+
gpr_log(GPR_ERROR, "Failed to unprotect, %s", error_details);
|
108
|
+
gpr_free(error_details);
|
109
|
+
grpc_slice_unref(unprotected_slice);
|
110
|
+
return TSI_INTERNAL_ERROR;
|
111
|
+
}
|
112
|
+
grpc_slice_buffer_reset_and_unref_internal(&rp->header_sb);
|
113
|
+
grpc_slice_buffer_reset_and_unref_internal(protected_slices);
|
114
|
+
grpc_slice_buffer_add(unprotected_slices, unprotected_slice);
|
115
|
+
return TSI_OK;
|
116
|
+
}
|
117
|
+
|
118
|
+
static const alts_grpc_record_protocol_vtable
|
119
|
+
alts_grpc_privacy_integrity_record_protocol_vtable = {
|
120
|
+
alts_grpc_privacy_integrity_protect,
|
121
|
+
alts_grpc_privacy_integrity_unprotect, nullptr};
|
122
|
+
|
123
|
+
tsi_result alts_grpc_privacy_integrity_record_protocol_create(
|
124
|
+
gsec_aead_crypter* crypter, size_t overflow_size, bool is_client,
|
125
|
+
bool is_protect, alts_grpc_record_protocol** rp) {
|
126
|
+
if (crypter == nullptr || rp == nullptr) {
|
127
|
+
gpr_log(GPR_ERROR,
|
128
|
+
"Invalid nullptr arguments to alts_grpc_record_protocol create.");
|
129
|
+
return TSI_INVALID_ARGUMENT;
|
130
|
+
}
|
131
|
+
auto* impl = static_cast<alts_grpc_record_protocol*>(
|
132
|
+
gpr_zalloc(sizeof(alts_grpc_record_protocol)));
|
133
|
+
/* Calls alts_grpc_record_protocol init. */
|
134
|
+
tsi_result result =
|
135
|
+
alts_grpc_record_protocol_init(impl, crypter, overflow_size, is_client,
|
136
|
+
/*is_integrity_only=*/false, is_protect);
|
137
|
+
if (result != TSI_OK) {
|
138
|
+
gpr_free(impl);
|
139
|
+
return result;
|
140
|
+
}
|
141
|
+
impl->vtable = &alts_grpc_privacy_integrity_record_protocol_vtable;
|
142
|
+
*rp = impl;
|
143
|
+
return TSI_OK;
|
144
|
+
}
|