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
@@ -299,6 +299,7 @@ OPENSSL_COMPILE_ASSERT(
|
|
299
299
|
#define SSL3_MT_CLIENT_HELLO 1
|
300
300
|
#define SSL3_MT_SERVER_HELLO 2
|
301
301
|
#define SSL3_MT_NEW_SESSION_TICKET 4
|
302
|
+
#define SSL3_MT_END_OF_EARLY_DATA 5
|
302
303
|
#define SSL3_MT_HELLO_RETRY_REQUEST 6
|
303
304
|
#define SSL3_MT_ENCRYPTED_EXTENSIONS 8
|
304
305
|
#define SSL3_MT_CERTIFICATE 11
|
@@ -313,6 +314,7 @@ OPENSSL_COMPILE_ASSERT(
|
|
313
314
|
#define SSL3_MT_KEY_UPDATE 24
|
314
315
|
#define SSL3_MT_NEXT_PROTO 67
|
315
316
|
#define SSL3_MT_CHANNEL_ID 203
|
317
|
+
#define SSL3_MT_MESSAGE_HASH 254
|
316
318
|
#define DTLS1_MT_HELLO_VERIFY_REQUEST 3
|
317
319
|
|
318
320
|
// The following are legacy aliases for consumers which use
|
@@ -245,7 +245,7 @@ struct StackTraits {};
|
|
245
245
|
// are defined in a header.
|
246
246
|
|
247
247
|
#define BORINGSSL_DEFINE_STACK_OF_IMPL(name, ptrtype, constptrtype) \
|
248
|
-
DECLARE_STACK_OF(name)
|
248
|
+
DECLARE_STACK_OF(name) \
|
249
249
|
\
|
250
250
|
typedef int (*stack_##name##_cmp_func)(constptrtype *a, constptrtype *b); \
|
251
251
|
\
|
@@ -214,6 +214,7 @@ extern "C" {
|
|
214
214
|
#define TLSEXT_TYPE_cookie 44
|
215
215
|
#define TLSEXT_TYPE_psk_key_exchange_modes 45
|
216
216
|
#define TLSEXT_TYPE_ticket_early_data_info 46
|
217
|
+
#define TLSEXT_TYPE_certificate_authorities 47
|
217
218
|
|
218
219
|
// ExtensionType value from RFC5746
|
219
220
|
#define TLSEXT_TYPE_renegotiate 0xff01
|
@@ -600,22 +601,6 @@ extern "C" {
|
|
600
601
|
#define TLS_CT_ECDSA_FIXED_ECDH 66
|
601
602
|
|
602
603
|
#define TLS_MD_MAX_CONST_SIZE 20
|
603
|
-
#define TLS_MD_CLIENT_FINISH_CONST "client finished"
|
604
|
-
#define TLS_MD_CLIENT_FINISH_CONST_SIZE 15
|
605
|
-
#define TLS_MD_SERVER_FINISH_CONST "server finished"
|
606
|
-
#define TLS_MD_SERVER_FINISH_CONST_SIZE 15
|
607
|
-
#define TLS_MD_KEY_EXPANSION_CONST "key expansion"
|
608
|
-
#define TLS_MD_KEY_EXPANSION_CONST_SIZE 13
|
609
|
-
#define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key"
|
610
|
-
#define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16
|
611
|
-
#define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
|
612
|
-
#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
|
613
|
-
#define TLS_MD_IV_BLOCK_CONST "IV block"
|
614
|
-
#define TLS_MD_IV_BLOCK_CONST_SIZE 8
|
615
|
-
#define TLS_MD_MASTER_SECRET_CONST "master secret"
|
616
|
-
#define TLS_MD_MASTER_SECRET_CONST_SIZE 13
|
617
|
-
#define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret"
|
618
|
-
#define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22
|
619
604
|
|
620
605
|
|
621
606
|
#ifdef __cplusplus
|
@@ -680,8 +680,9 @@ OPENSSL_EXPORT X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
|
|
680
680
|
OPENSSL_EXPORT X509_REQ *X509_REQ_dup(X509_REQ *req);
|
681
681
|
OPENSSL_EXPORT X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
|
682
682
|
OPENSSL_EXPORT int X509_ALGOR_set0(X509_ALGOR *alg, const ASN1_OBJECT *aobj, int ptype, void *pval);
|
683
|
-
OPENSSL_EXPORT void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype,
|
684
|
-
|
683
|
+
OPENSSL_EXPORT void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype,
|
684
|
+
const void **ppval,
|
685
|
+
const X509_ALGOR *algor);
|
685
686
|
OPENSSL_EXPORT void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
|
686
687
|
OPENSSL_EXPORT int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
|
687
688
|
|
@@ -114,7 +114,7 @@ static int custom_ext_add_hello(SSL_HANDSHAKE *hs, CBB *extensions) {
|
|
114
114
|
break;
|
115
115
|
|
116
116
|
default:
|
117
|
-
|
117
|
+
ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
|
118
118
|
OPENSSL_PUT_ERROR(SSL, SSL_R_CUSTOM_EXTENSION_ERROR);
|
119
119
|
ERR_add_error_dataf("extension %u", (unsigned) ext->value);
|
120
120
|
return 0;
|
@@ -144,23 +144,18 @@ static const unsigned int kDefaultMTU = 1500 - 28;
|
|
144
144
|
|
145
145
|
// Receiving handshake messages.
|
146
146
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
}
|
151
|
-
OPENSSL_free(frag->data);
|
152
|
-
OPENSSL_free(frag->reassembly);
|
153
|
-
OPENSSL_free(frag);
|
147
|
+
hm_fragment::~hm_fragment() {
|
148
|
+
OPENSSL_free(data);
|
149
|
+
OPENSSL_free(reassembly);
|
154
150
|
}
|
155
151
|
|
156
|
-
static hm_fragment
|
152
|
+
static UniquePtr<hm_fragment> dtls1_hm_fragment_new(
|
153
|
+
const struct hm_header_st *msg_hdr) {
|
157
154
|
ScopedCBB cbb;
|
158
|
-
hm_fragment
|
159
|
-
if (frag
|
160
|
-
|
161
|
-
return NULL;
|
155
|
+
UniquePtr<hm_fragment> frag = MakeUnique<hm_fragment>();
|
156
|
+
if (!frag) {
|
157
|
+
return nullptr;
|
162
158
|
}
|
163
|
-
OPENSSL_memset(frag, 0, sizeof(hm_fragment));
|
164
159
|
frag->type = msg_hdr->type;
|
165
160
|
frag->seq = msg_hdr->seq;
|
166
161
|
frag->msg_len = msg_hdr->msg_len;
|
@@ -170,7 +165,7 @@ static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
|
|
170
165
|
(uint8_t *)OPENSSL_malloc(DTLS1_HM_HEADER_LENGTH + msg_hdr->msg_len);
|
171
166
|
if (frag->data == NULL) {
|
172
167
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
173
|
-
|
168
|
+
return nullptr;
|
174
169
|
}
|
175
170
|
|
176
171
|
if (!CBB_init_fixed(cbb.get(), frag->data, DTLS1_HM_HEADER_LENGTH) ||
|
@@ -181,7 +176,7 @@ static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
|
|
181
176
|
!CBB_add_u24(cbb.get(), msg_hdr->msg_len) ||
|
182
177
|
!CBB_finish(cbb.get(), NULL, NULL)) {
|
183
178
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
184
|
-
|
179
|
+
return nullptr;
|
185
180
|
}
|
186
181
|
|
187
182
|
// If the handshake message is empty, |frag->reassembly| is NULL.
|
@@ -189,22 +184,18 @@ static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
|
|
189
184
|
// Initialize reassembly bitmask.
|
190
185
|
if (msg_hdr->msg_len + 7 < msg_hdr->msg_len) {
|
191
186
|
OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
|
192
|
-
|
187
|
+
return nullptr;
|
193
188
|
}
|
194
189
|
size_t bitmask_len = (msg_hdr->msg_len + 7) / 8;
|
195
190
|
frag->reassembly = (uint8_t *)OPENSSL_malloc(bitmask_len);
|
196
191
|
if (frag->reassembly == NULL) {
|
197
192
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
198
|
-
|
193
|
+
return nullptr;
|
199
194
|
}
|
200
195
|
OPENSSL_memset(frag->reassembly, 0, bitmask_len);
|
201
196
|
}
|
202
197
|
|
203
198
|
return frag;
|
204
|
-
|
205
|
-
err:
|
206
|
-
dtls1_hm_fragment_free(frag);
|
207
|
-
return NULL;
|
208
199
|
}
|
209
200
|
|
210
201
|
// bit_range returns a |uint8_t| with bits |start|, inclusive, to |end|,
|
@@ -259,11 +250,11 @@ static void dtls1_hm_fragment_mark(hm_fragment *frag, size_t start,
|
|
259
250
|
frag->reassembly = NULL;
|
260
251
|
}
|
261
252
|
|
262
|
-
// dtls1_is_current_message_complete returns
|
263
|
-
// message is complete
|
264
|
-
static
|
265
|
-
|
266
|
-
|
253
|
+
// dtls1_is_current_message_complete returns whether the current handshake
|
254
|
+
// message is complete.
|
255
|
+
static bool dtls1_is_current_message_complete(const SSL *ssl) {
|
256
|
+
size_t idx = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
|
257
|
+
hm_fragment *frag = ssl->d1->incoming_messages[idx].get();
|
267
258
|
return frag != NULL && frag->reassembly == NULL;
|
268
259
|
}
|
269
260
|
|
@@ -272,14 +263,15 @@ static int dtls1_is_current_message_complete(const SSL *ssl) {
|
|
272
263
|
// queue. Otherwise, it checks |msg_hdr| is consistent with the existing one. It
|
273
264
|
// returns NULL on failure. The caller does not take ownership of the result.
|
274
265
|
static hm_fragment *dtls1_get_incoming_message(
|
275
|
-
SSL *ssl, const struct hm_header_st *msg_hdr) {
|
266
|
+
SSL *ssl, uint8_t *out_alert, const struct hm_header_st *msg_hdr) {
|
276
267
|
if (msg_hdr->seq < ssl->d1->handshake_read_seq ||
|
277
268
|
msg_hdr->seq - ssl->d1->handshake_read_seq >= SSL_MAX_HANDSHAKE_FLIGHT) {
|
269
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
278
270
|
return NULL;
|
279
271
|
}
|
280
272
|
|
281
273
|
size_t idx = msg_hdr->seq % SSL_MAX_HANDSHAKE_FLIGHT;
|
282
|
-
hm_fragment *frag = ssl->d1->incoming_messages[idx];
|
274
|
+
hm_fragment *frag = ssl->d1->incoming_messages[idx].get();
|
283
275
|
if (frag != NULL) {
|
284
276
|
assert(frag->seq == msg_hdr->seq);
|
285
277
|
// The new fragment must be compatible with the previous fragments from this
|
@@ -287,90 +279,84 @@ static hm_fragment *dtls1_get_incoming_message(
|
|
287
279
|
if (frag->type != msg_hdr->type ||
|
288
280
|
frag->msg_len != msg_hdr->msg_len) {
|
289
281
|
OPENSSL_PUT_ERROR(SSL, SSL_R_FRAGMENT_MISMATCH);
|
290
|
-
|
282
|
+
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
291
283
|
return NULL;
|
292
284
|
}
|
293
285
|
return frag;
|
294
286
|
}
|
295
287
|
|
296
288
|
// This is the first fragment from this message.
|
297
|
-
|
298
|
-
if (
|
289
|
+
ssl->d1->incoming_messages[idx] = dtls1_hm_fragment_new(msg_hdr);
|
290
|
+
if (!ssl->d1->incoming_messages[idx]) {
|
291
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
299
292
|
return NULL;
|
300
293
|
}
|
301
|
-
ssl->d1->incoming_messages[idx]
|
302
|
-
return frag;
|
294
|
+
return ssl->d1->incoming_messages[idx].get();
|
303
295
|
}
|
304
296
|
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
297
|
+
ssl_open_record_t dtls1_open_handshake(SSL *ssl, size_t *out_consumed,
|
298
|
+
uint8_t *out_alert, Span<uint8_t> in) {
|
299
|
+
uint8_t type;
|
300
|
+
Span<uint8_t> record;
|
301
|
+
auto ret = dtls_open_record(ssl, &type, &record, out_consumed, out_alert, in);
|
302
|
+
if (ret != ssl_open_record_success) {
|
303
|
+
return ret;
|
312
304
|
}
|
313
305
|
|
314
|
-
switch (
|
306
|
+
switch (type) {
|
315
307
|
case SSL3_RT_APPLICATION_DATA:
|
316
308
|
// Unencrypted application data records are always illegal.
|
317
309
|
if (ssl->s3->aead_read_ctx->is_null_cipher()) {
|
318
|
-
ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
|
319
310
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
|
320
|
-
|
311
|
+
*out_alert = SSL_AD_UNEXPECTED_MESSAGE;
|
312
|
+
return ssl_open_record_error;
|
321
313
|
}
|
322
314
|
|
323
315
|
// Out-of-order application data may be received between ChangeCipherSpec
|
324
316
|
// and finished. Discard it.
|
325
|
-
|
326
|
-
ssl_read_buffer_discard(ssl);
|
327
|
-
return 1;
|
317
|
+
return ssl_open_record_discard;
|
328
318
|
|
329
319
|
case SSL3_RT_CHANGE_CIPHER_SPEC:
|
330
320
|
// We do not support renegotiation, so encrypted ChangeCipherSpec records
|
331
321
|
// are illegal.
|
332
322
|
if (!ssl->s3->aead_read_ctx->is_null_cipher()) {
|
333
|
-
ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
|
334
323
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
|
335
|
-
|
324
|
+
*out_alert = SSL_AD_UNEXPECTED_MESSAGE;
|
325
|
+
return ssl_open_record_error;
|
336
326
|
}
|
337
327
|
|
338
|
-
if (
|
328
|
+
if (record.size() != 1u || record[0] != SSL3_MT_CCS) {
|
339
329
|
OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC);
|
340
|
-
|
341
|
-
return
|
330
|
+
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
331
|
+
return ssl_open_record_error;
|
342
332
|
}
|
343
333
|
|
344
334
|
// Flag the ChangeCipherSpec for later.
|
345
335
|
ssl->d1->has_change_cipher_spec = true;
|
346
336
|
ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_CHANGE_CIPHER_SPEC,
|
347
|
-
|
348
|
-
|
349
|
-
rr->length = 0;
|
350
|
-
ssl_read_buffer_discard(ssl);
|
351
|
-
return 1;
|
337
|
+
record);
|
338
|
+
return ssl_open_record_success;
|
352
339
|
|
353
340
|
case SSL3_RT_HANDSHAKE:
|
354
341
|
// Break out to main processing.
|
355
342
|
break;
|
356
343
|
|
357
344
|
default:
|
358
|
-
ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
|
359
345
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
|
360
|
-
|
346
|
+
*out_alert = SSL_AD_UNEXPECTED_MESSAGE;
|
347
|
+
return ssl_open_record_error;
|
361
348
|
}
|
362
349
|
|
363
350
|
CBS cbs;
|
364
|
-
CBS_init(&cbs,
|
365
|
-
|
351
|
+
CBS_init(&cbs, record.data(), record.size());
|
366
352
|
while (CBS_len(&cbs) > 0) {
|
367
353
|
// Read a handshake fragment.
|
368
354
|
struct hm_header_st msg_hdr;
|
369
355
|
CBS body;
|
370
356
|
if (!dtls1_parse_fragment(&cbs, &msg_hdr, &body)) {
|
371
357
|
OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_HANDSHAKE_RECORD);
|
372
|
-
|
373
|
-
return
|
358
|
+
*out_alert = SSL_AD_DECODE_ERROR;
|
359
|
+
return ssl_open_record_error;
|
374
360
|
}
|
375
361
|
|
376
362
|
const size_t frag_off = msg_hdr.frag_off;
|
@@ -380,15 +366,15 @@ int dtls1_read_message(SSL *ssl) {
|
|
380
366
|
frag_off + frag_len > msg_len ||
|
381
367
|
msg_len > ssl_max_handshake_message_len(ssl)) {
|
382
368
|
OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESSIVE_MESSAGE_SIZE);
|
383
|
-
|
384
|
-
return
|
369
|
+
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
370
|
+
return ssl_open_record_error;
|
385
371
|
}
|
386
372
|
|
387
373
|
// The encrypted epoch in DTLS has only one handshake message.
|
388
374
|
if (ssl->d1->r_epoch == 1 && msg_hdr.seq != ssl->d1->handshake_read_seq) {
|
389
375
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
|
390
|
-
|
391
|
-
return
|
376
|
+
*out_alert = SSL_AD_UNEXPECTED_MESSAGE;
|
377
|
+
return ssl_open_record_error;
|
392
378
|
}
|
393
379
|
|
394
380
|
if (msg_hdr.seq < ssl->d1->handshake_read_seq ||
|
@@ -398,9 +384,9 @@ int dtls1_read_message(SSL *ssl) {
|
|
398
384
|
continue;
|
399
385
|
}
|
400
386
|
|
401
|
-
hm_fragment *frag = dtls1_get_incoming_message(ssl, &msg_hdr);
|
387
|
+
hm_fragment *frag = dtls1_get_incoming_message(ssl, out_alert, &msg_hdr);
|
402
388
|
if (frag == NULL) {
|
403
|
-
return
|
389
|
+
return ssl_open_record_error;
|
404
390
|
}
|
405
391
|
assert(frag->msg_len == msg_len);
|
406
392
|
|
@@ -416,9 +402,7 @@ int dtls1_read_message(SSL *ssl) {
|
|
416
402
|
dtls1_hm_fragment_mark(frag, frag_off, frag_off + frag_len);
|
417
403
|
}
|
418
404
|
|
419
|
-
|
420
|
-
ssl_read_buffer_discard(ssl);
|
421
|
-
return 1;
|
405
|
+
return ssl_open_record_success;
|
422
406
|
}
|
423
407
|
|
424
408
|
bool dtls1_get_message(SSL *ssl, SSLMessage *out) {
|
@@ -426,8 +410,8 @@ bool dtls1_get_message(SSL *ssl, SSLMessage *out) {
|
|
426
410
|
return false;
|
427
411
|
}
|
428
412
|
|
429
|
-
|
430
|
-
|
413
|
+
size_t idx = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
|
414
|
+
hm_fragment *frag = ssl->d1->incoming_messages[idx].get();
|
431
415
|
out->type = frag->type;
|
432
416
|
CBS_init(&out->body, frag->data + DTLS1_HM_HEADER_LENGTH, frag->msg_len);
|
433
417
|
CBS_init(&out->raw, frag->data, DTLS1_HM_HEADER_LENGTH + frag->msg_len);
|
@@ -443,8 +427,7 @@ void dtls1_next_message(SSL *ssl) {
|
|
443
427
|
assert(ssl->s3->has_message);
|
444
428
|
assert(dtls1_is_current_message_complete(ssl));
|
445
429
|
size_t index = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
|
446
|
-
|
447
|
-
ssl->d1->incoming_messages[index] = NULL;
|
430
|
+
ssl->d1->incoming_messages[index].reset();
|
448
431
|
ssl->d1->handshake_read_seq++;
|
449
432
|
ssl->s3->has_message = false;
|
450
433
|
// If we previously sent a flight, mark it as having a reply, so
|
@@ -454,14 +437,11 @@ void dtls1_next_message(SSL *ssl) {
|
|
454
437
|
}
|
455
438
|
}
|
456
439
|
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
ssl->d1->incoming_messages[i] = NULL;
|
440
|
+
bool dtls_has_unprocessed_handshake_data(const SSL *ssl) {
|
441
|
+
if (ssl->d1->has_change_cipher_spec) {
|
442
|
+
return true;
|
461
443
|
}
|
462
|
-
}
|
463
444
|
|
464
|
-
int dtls_has_incoming_messages(const SSL *ssl) {
|
465
445
|
size_t current = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
|
466
446
|
for (size_t i = 0; i < SSL_MAX_HANDSHAKE_FLIGHT; i++) {
|
467
447
|
// Skip the current message.
|
@@ -469,15 +449,15 @@ int dtls_has_incoming_messages(const SSL *ssl) {
|
|
469
449
|
assert(dtls1_is_current_message_complete(ssl));
|
470
450
|
continue;
|
471
451
|
}
|
472
|
-
if (ssl->d1->incoming_messages[i] !=
|
473
|
-
return
|
452
|
+
if (ssl->d1->incoming_messages[i] != nullptr) {
|
453
|
+
return true;
|
474
454
|
}
|
475
455
|
}
|
476
|
-
return
|
456
|
+
return false;
|
477
457
|
}
|
478
458
|
|
479
|
-
|
480
|
-
|
459
|
+
bool dtls1_parse_fragment(CBS *cbs, struct hm_header_st *out_hdr,
|
460
|
+
CBS *out_body) {
|
481
461
|
OPENSSL_memset(out_hdr, 0x00, sizeof(struct hm_header_st));
|
482
462
|
|
483
463
|
if (!CBS_get_u8(cbs, &out_hdr->type) ||
|
@@ -486,32 +466,40 @@ int dtls1_parse_fragment(CBS *cbs, struct hm_header_st *out_hdr,
|
|
486
466
|
!CBS_get_u24(cbs, &out_hdr->frag_off) ||
|
487
467
|
!CBS_get_u24(cbs, &out_hdr->frag_len) ||
|
488
468
|
!CBS_get_bytes(cbs, out_body, out_hdr->frag_len)) {
|
489
|
-
return
|
469
|
+
return false;
|
490
470
|
}
|
491
471
|
|
492
|
-
return
|
472
|
+
return true;
|
493
473
|
}
|
494
474
|
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
475
|
+
ssl_open_record_t dtls1_open_change_cipher_spec(SSL *ssl, size_t *out_consumed,
|
476
|
+
uint8_t *out_alert,
|
477
|
+
Span<uint8_t> in) {
|
478
|
+
if (!ssl->d1->has_change_cipher_spec) {
|
479
|
+
// dtls1_open_handshake processes both handshake and ChangeCipherSpec.
|
480
|
+
auto ret = dtls1_open_handshake(ssl, out_consumed, out_alert, in);
|
481
|
+
if (ret != ssl_open_record_success) {
|
500
482
|
return ret;
|
501
483
|
}
|
502
484
|
}
|
503
|
-
|
504
|
-
|
505
|
-
|
485
|
+
if (ssl->d1->has_change_cipher_spec) {
|
486
|
+
ssl->d1->has_change_cipher_spec = false;
|
487
|
+
return ssl_open_record_success;
|
488
|
+
}
|
489
|
+
return ssl_open_record_discard;
|
506
490
|
}
|
507
491
|
|
508
492
|
|
509
493
|
// Sending handshake messages.
|
510
494
|
|
495
|
+
void DTLS_OUTGOING_MESSAGE::Clear() {
|
496
|
+
OPENSSL_free(data);
|
497
|
+
data = nullptr;
|
498
|
+
}
|
499
|
+
|
511
500
|
void dtls_clear_outgoing_messages(SSL *ssl) {
|
512
501
|
for (size_t i = 0; i < ssl->d1->outgoing_messages_len; i++) {
|
513
|
-
|
514
|
-
ssl->d1->outgoing_messages[i].data = NULL;
|
502
|
+
ssl->d1->outgoing_messages[i].Clear();
|
515
503
|
}
|
516
504
|
ssl->d1->outgoing_messages_len = 0;
|
517
505
|
ssl->d1->outgoing_written = 0;
|
@@ -520,7 +508,7 @@ void dtls_clear_outgoing_messages(SSL *ssl) {
|
|
520
508
|
ssl->d1->flight_has_reply = false;
|
521
509
|
}
|
522
510
|
|
523
|
-
|
511
|
+
bool dtls1_init_message(SSL *ssl, CBB *cbb, CBB *body, uint8_t type) {
|
524
512
|
// Pick a modest size hint to save most of the |realloc| calls.
|
525
513
|
if (!CBB_init(cbb, 64) ||
|
526
514
|
!CBB_add_u8(cbb, type) ||
|
@@ -528,31 +516,29 @@ int dtls1_init_message(SSL *ssl, CBB *cbb, CBB *body, uint8_t type) {
|
|
528
516
|
!CBB_add_u16(cbb, ssl->d1->handshake_write_seq) ||
|
529
517
|
!CBB_add_u24(cbb, 0 /* offset */) ||
|
530
518
|
!CBB_add_u24_length_prefixed(cbb, body)) {
|
531
|
-
return
|
519
|
+
return false;
|
532
520
|
}
|
533
521
|
|
534
|
-
return
|
522
|
+
return true;
|
535
523
|
}
|
536
524
|
|
537
|
-
|
525
|
+
bool dtls1_finish_message(SSL *ssl, CBB *cbb, Array<uint8_t> *out_msg) {
|
538
526
|
if (!CBBFinishArray(cbb, out_msg) ||
|
539
527
|
out_msg->size() < DTLS1_HM_HEADER_LENGTH) {
|
540
528
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
541
|
-
return
|
529
|
+
return false;
|
542
530
|
}
|
543
531
|
|
544
532
|
// Fix up the header. Copy the fragment length into the total message
|
545
533
|
// length.
|
546
534
|
OPENSSL_memcpy(out_msg->data() + 1,
|
547
535
|
out_msg->data() + DTLS1_HM_HEADER_LENGTH - 3, 3);
|
548
|
-
return
|
536
|
+
return true;
|
549
537
|
}
|
550
538
|
|
551
539
|
// add_outgoing adds a new handshake message or ChangeCipherSpec to the current
|
552
|
-
// outgoing flight. It returns
|
553
|
-
|
554
|
-
// done.
|
555
|
-
static int add_outgoing(SSL *ssl, int is_ccs, Array<uint8_t> data) {
|
540
|
+
// outgoing flight. It returns true on success and false on error.
|
541
|
+
static bool add_outgoing(SSL *ssl, bool is_ccs, Array<uint8_t> data) {
|
556
542
|
if (ssl->d1->outgoing_messages_complete) {
|
557
543
|
// If we've begun writing a new flight, we received the peer flight. Discard
|
558
544
|
// the timer and the our flight.
|
@@ -565,18 +551,18 @@ static int add_outgoing(SSL *ssl, int is_ccs, Array<uint8_t> data) {
|
|
565
551
|
"outgoing_messages_len is too small");
|
566
552
|
if (ssl->d1->outgoing_messages_len >= SSL_MAX_HANDSHAKE_FLIGHT ||
|
567
553
|
data.size() > 0xffffffff) {
|
568
|
-
assert(
|
554
|
+
assert(false);
|
569
555
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
570
|
-
return
|
556
|
+
return false;
|
571
557
|
}
|
572
558
|
|
573
559
|
if (!is_ccs) {
|
574
560
|
// TODO(svaldez): Move this up a layer to fix abstraction for SSLTranscript
|
575
561
|
// on hs.
|
576
562
|
if (ssl->s3->hs != NULL &&
|
577
|
-
!ssl->s3->hs->transcript.Update(data
|
563
|
+
!ssl->s3->hs->transcript.Update(data)) {
|
578
564
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
579
|
-
return
|
565
|
+
return false;
|
580
566
|
}
|
581
567
|
ssl->d1->handshake_write_seq++;
|
582
568
|
}
|
@@ -590,24 +576,24 @@ static int add_outgoing(SSL *ssl, int is_ccs, Array<uint8_t> data) {
|
|
590
576
|
msg->is_ccs = is_ccs;
|
591
577
|
|
592
578
|
ssl->d1->outgoing_messages_len++;
|
593
|
-
return
|
579
|
+
return true;
|
594
580
|
}
|
595
581
|
|
596
|
-
|
597
|
-
return add_outgoing(ssl,
|
582
|
+
bool dtls1_add_message(SSL *ssl, Array<uint8_t> data) {
|
583
|
+
return add_outgoing(ssl, false /* handshake */, std::move(data));
|
598
584
|
}
|
599
585
|
|
600
|
-
|
601
|
-
return add_outgoing(ssl,
|
586
|
+
bool dtls1_add_change_cipher_spec(SSL *ssl) {
|
587
|
+
return add_outgoing(ssl, true /* ChangeCipherSpec */, Array<uint8_t>());
|
602
588
|
}
|
603
589
|
|
604
|
-
|
590
|
+
bool dtls1_add_alert(SSL *ssl, uint8_t level, uint8_t desc) {
|
605
591
|
// The |add_alert| path is only used for warning alerts for now, which DTLS
|
606
592
|
// never sends. This will be implemented later once closure alerts are
|
607
593
|
// converted.
|
608
|
-
assert(
|
594
|
+
assert(false);
|
609
595
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
610
|
-
return
|
596
|
+
return false;
|
611
597
|
}
|
612
598
|
|
613
599
|
// dtls1_update_mtu updates the current MTU from the BIO, ensuring it is above
|
@@ -736,9 +722,9 @@ static enum seal_result_t seal_next_message(SSL *ssl, uint8_t *out,
|
|
736
722
|
// seal_next_packet writes as much of the next flight as possible to |out| and
|
737
723
|
// advances |ssl->d1->outgoing_written| and |ssl->d1->outgoing_offset| as
|
738
724
|
// appropriate.
|
739
|
-
static
|
740
|
-
|
741
|
-
|
725
|
+
static bool seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
|
726
|
+
size_t max_out) {
|
727
|
+
bool made_progress = false;
|
742
728
|
size_t total = 0;
|
743
729
|
assert(ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len);
|
744
730
|
for (; ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len;
|
@@ -749,7 +735,7 @@ static int seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
|
|
749
735
|
enum seal_result_t ret = seal_next_message(ssl, out, &len, max_out, msg);
|
750
736
|
switch (ret) {
|
751
737
|
case seal_error:
|
752
|
-
return
|
738
|
+
return false;
|
753
739
|
|
754
740
|
case seal_no_progress:
|
755
741
|
goto packet_full;
|
@@ -759,7 +745,7 @@ static int seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
|
|
759
745
|
out += len;
|
760
746
|
max_out -= len;
|
761
747
|
total += len;
|
762
|
-
made_progress =
|
748
|
+
made_progress = true;
|
763
749
|
|
764
750
|
if (ret == seal_partial) {
|
765
751
|
goto packet_full;
|
@@ -772,14 +758,19 @@ packet_full:
|
|
772
758
|
// The MTU was too small to make any progress.
|
773
759
|
if (!made_progress) {
|
774
760
|
OPENSSL_PUT_ERROR(SSL, SSL_R_MTU_TOO_SMALL);
|
775
|
-
return
|
761
|
+
return false;
|
776
762
|
}
|
777
763
|
|
778
764
|
*out_len = total;
|
779
|
-
return
|
765
|
+
return true;
|
780
766
|
}
|
781
767
|
|
782
768
|
static int send_flight(SSL *ssl) {
|
769
|
+
if (ssl->s3->write_shutdown != ssl_shutdown_none) {
|
770
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_PROTOCOL_IS_SHUTDOWN);
|
771
|
+
return -1;
|
772
|
+
}
|
773
|
+
|
783
774
|
dtls1_update_mtu(ssl);
|
784
775
|
|
785
776
|
int ret = -1;
|
@@ -803,14 +794,14 @@ static int send_flight(SSL *ssl) {
|
|
803
794
|
// Retry this packet the next time around.
|
804
795
|
ssl->d1->outgoing_written = old_written;
|
805
796
|
ssl->d1->outgoing_offset = old_offset;
|
806
|
-
ssl->rwstate = SSL_WRITING;
|
797
|
+
ssl->s3->rwstate = SSL_WRITING;
|
807
798
|
ret = bio_ret;
|
808
799
|
goto err;
|
809
800
|
}
|
810
801
|
}
|
811
802
|
|
812
803
|
if (BIO_flush(ssl->wbio) <= 0) {
|
813
|
-
ssl->rwstate = SSL_WRITING;
|
804
|
+
ssl->s3->rwstate = SSL_WRITING;
|
814
805
|
goto err;
|
815
806
|
}
|
816
807
|
|