grpc 0.13.1 → 0.14.1.pre1
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 -828
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -20
- data/include/grpc/census.h +4 -4
- data/include/grpc/compression.h +6 -5
- data/include/grpc/grpc.h +31 -20
- data/include/grpc/grpc_security.h +17 -31
- data/include/grpc/grpc_security_constants.h +114 -0
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +1 -1
- data/include/grpc/impl/codegen/atm.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_sync.h +1 -1
- data/include/grpc/impl/codegen/atm_win32.h +1 -1
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/{src/core/client_config/lb_policies/round_robin.h → include/grpc/impl/codegen/byte_buffer_reader.h} +19 -8
- data/include/grpc/impl/codegen/grpc_types.h +20 -3
- data/include/grpc/impl/codegen/log.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +102 -17
- data/include/grpc/impl/codegen/propagation_bits.h +3 -3
- data/include/grpc/impl/codegen/slice.h +3 -3
- data/include/grpc/impl/codegen/slice_buffer.h +3 -3
- data/include/grpc/impl/codegen/status.h +1 -1
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/include/grpc/impl/codegen/sync_posix.h +1 -1
- data/include/grpc/impl/codegen/sync_win32.h +1 -1
- data/include/grpc/impl/codegen/time.h +3 -3
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/alloc.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +4 -4
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_win32.h +1 -1
- data/include/grpc/support/avl.h +1 -1
- data/include/grpc/support/cmdline.h +1 -1
- data/include/grpc/support/cpu.h +1 -1
- data/include/grpc/support/histogram.h +1 -1
- data/include/grpc/support/host_port.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/log_win32.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/slice.h +1 -1
- data/include/grpc/support/slice_buffer.h +1 -1
- data/include/grpc/support/string_util.h +3 -1
- data/include/grpc/support/subprocess.h +2 -2
- data/include/grpc/support/sync.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_win32.h +1 -1
- data/include/grpc/support/thd.h +1 -1
- data/include/grpc/support/time.h +1 -1
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +45 -1
- data/include/grpc/support/tls_msvc.h +3 -3
- data/include/grpc/support/tls_pthread.h +1 -1
- data/include/grpc/support/useful.h +1 -1
- data/src/boringssl/err_data.c +258 -252
- data/src/core/{census → ext/census}/aggregation.h +3 -3
- data/src/core/{statistics → ext/census}/census_interface.h +3 -3
- data/src/core/{statistics → ext/census}/census_rpc_stats.h +4 -4
- data/src/core/{census → ext/census}/context.c +2 -2
- data/src/core/{census → ext/census}/grpc_context.c +2 -2
- data/src/core/{census → ext/census}/grpc_filter.c +30 -16
- data/src/core/{census → ext/census}/grpc_filter.h +4 -4
- data/src/core/ext/census/grpc_plugin.c +82 -0
- data/src/core/{census → ext/census}/initialize.c +1 -1
- data/src/core/{census → ext/census}/mlog.c +2 -2
- data/src/core/{census → ext/census}/mlog.h +4 -4
- data/src/core/{census → ext/census}/operation.c +0 -0
- data/src/core/{census → ext/census}/placeholders.c +0 -0
- data/src/core/{census → ext/census}/rpc_metric_id.h +3 -3
- data/src/core/{census → ext/census}/tracing.c +0 -0
- data/src/core/{surface → ext/client_config}/channel_connectivity.c +8 -21
- data/src/core/{channel → ext/client_config}/client_channel.c +80 -35
- data/src/core/{channel → ext/client_config}/client_channel.h +5 -5
- data/src/core/{client_config/subchannel_factory.c → ext/client_config/client_channel_factory.c} +14 -6
- data/src/core/ext/client_config/client_channel_factory.h +85 -0
- data/src/core/{client_config → ext/client_config}/client_config.c +4 -2
- data/src/core/{client_config → ext/client_config}/client_config.h +4 -4
- data/src/core/ext/client_config/client_config_plugin.c +95 -0
- data/src/core/{client_config → ext/client_config}/connector.c +2 -2
- data/src/core/{client_config → ext/client_config}/connector.h +7 -10
- data/src/core/{client_config → ext/client_config}/default_initial_connect_string.c +1 -1
- data/src/core/{client_config → ext/client_config}/initial_connect_string.c +1 -1
- data/src/core/{client_config → ext/client_config}/initial_connect_string.h +4 -4
- data/src/core/{client_config → ext/client_config}/lb_policy.c +12 -3
- data/src/core/{client_config → ext/client_config}/lb_policy.h +19 -6
- data/src/core/{client_config → ext/client_config}/lb_policy_factory.c +4 -3
- data/src/core/{client_config → ext/client_config}/lb_policy_factory.h +14 -9
- data/src/core/{client_config → ext/client_config}/lb_policy_registry.c +4 -9
- data/src/core/{client_config → ext/client_config}/lb_policy_registry.h +7 -6
- data/src/core/ext/client_config/parse_address.c +137 -0
- data/src/core/ext/client_config/parse_address.h +56 -0
- data/src/core/{client_config → ext/client_config}/resolver.c +1 -1
- data/src/core/{client_config → ext/client_config}/resolver.h +6 -6
- data/src/core/{client_config → ext/client_config}/resolver_factory.c +1 -1
- data/src/core/{client_config → ext/client_config}/resolver_factory.h +7 -7
- data/src/core/{client_config → ext/client_config}/resolver_registry.c +25 -11
- data/src/core/{client_config → ext/client_config}/resolver_registry.h +9 -5
- data/src/core/{client_config → ext/client_config}/subchannel.c +90 -126
- data/src/core/{client_config → ext/client_config}/subchannel.h +15 -15
- data/src/core/{channel → ext/client_config}/subchannel_call_holder.c +9 -8
- data/src/core/{channel → ext/client_config}/subchannel_call_holder.h +7 -7
- data/src/core/{client_config → ext/client_config}/subchannel_index.c +3 -2
- data/src/core/{client_config → ext/client_config}/subchannel_index.h +5 -5
- data/src/core/{client_config → ext/client_config}/uri_parser.c +69 -1
- data/src/core/{client_config → ext/client_config}/uri_parser.h +15 -3
- data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.c +18 -9
- data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.h +5 -5
- data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.c +1 -1
- data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.h +0 -0
- data/src/core/{client_config/lb_policies → ext/lb_policy/pick_first}/pick_first.c +95 -32
- data/src/core/{client_config/lb_policies → ext/lb_policy/round_robin}/round_robin.c +98 -34
- data/src/core/{client_config/resolvers → ext/resolver/dns/native}/dns_resolver.c +83 -39
- data/src/core/{client_config/resolvers → ext/resolver/sockaddr}/sockaddr_resolver.c +66 -169
- data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.h +3 -3
- data/src/core/{surface → ext/transport/chttp2/client/insecure}/channel_create.c +65 -59
- data/src/core/{surface → ext/transport/chttp2/client/secure}/secure_channel_create.c +77 -69
- data/src/core/{surface → ext/transport/chttp2/server/insecure}/server_chttp2.c +8 -11
- data/src/core/{security → ext/transport/chttp2/server/secure}/server_secure_chttp2.c +14 -17
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.c +28 -74
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.h +5 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +46 -0
- data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.c +551 -310
- data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.c +30 -14
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.h +10 -7
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.c +9 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.c +6 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.c +11 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.c +21 -12
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.c +42 -25
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.h +7 -7
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.c +21 -11
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/http2_errors.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.c +105 -0
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/huffsyms.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/internal.h +81 -37
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/parsing.c +54 -21
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_lists.c +10 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.c +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/writing.c +30 -20
- data/src/core/{channel → lib/channel}/channel_args.c +3 -15
- data/src/core/{channel → lib/channel}/channel_args.h +11 -15
- data/src/core/{channel → lib/channel}/channel_stack.c +5 -3
- data/src/core/{channel → lib/channel}/channel_stack.h +13 -8
- data/src/core/lib/channel/channel_stack_builder.c +277 -0
- data/src/core/lib/channel/channel_stack_builder.h +161 -0
- data/src/core/{channel → lib/channel}/compress_filter.c +51 -16
- data/src/core/{channel → lib/channel}/compress_filter.h +6 -4
- data/src/core/{channel → lib/channel}/connected_channel.c +34 -24
- data/src/core/lib/channel/connected_channel.h +42 -0
- data/src/core/{channel → lib/channel}/context.h +3 -3
- data/src/core/{channel → lib/channel}/http_client_filter.c +24 -13
- data/src/core/{channel → lib/channel}/http_client_filter.h +4 -4
- data/src/core/{channel → lib/channel}/http_server_filter.c +39 -19
- data/src/core/{channel → lib/channel}/http_server_filter.h +4 -4
- data/src/core/{compression → lib/compression}/algorithm_metadata.h +4 -4
- data/src/core/{compression → lib/compression}/compression_algorithm.c +46 -9
- data/src/core/{compression → lib/compression}/message_compress.c +1 -1
- data/src/core/{compression → lib/compression}/message_compress.h +3 -3
- data/src/core/{debug → lib/debug}/trace.c +2 -2
- data/src/core/{debug → lib/debug}/trace.h +3 -3
- data/src/core/{httpcli → lib/http}/format_request.c +8 -8
- data/src/core/{httpcli → lib/http}/format_request.h +4 -4
- data/src/core/{httpcli → lib/http}/httpcli.c +24 -19
- data/src/core/{httpcli → lib/http}/httpcli.h +14 -33
- data/src/core/{httpcli → lib/http}/httpcli_security_connector.c +5 -5
- data/src/core/lib/http/parser.c +341 -0
- data/src/core/lib/http/parser.h +119 -0
- data/src/core/{iomgr → lib/iomgr}/closure.c +8 -2
- data/src/core/{iomgr → lib/iomgr}/closure.h +7 -4
- data/src/core/{iomgr → lib/iomgr}/endpoint.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/endpoint.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair_posix.c +8 -7
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair_windows.c +4 -4
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +1936 -0
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.h +41 -0
- data/src/core/lib/iomgr/ev_posix.c +164 -0
- data/src/core/lib/iomgr/ev_posix.h +158 -0
- data/src/core/{iomgr → lib/iomgr}/exec_ctx.c +78 -3
- data/src/core/{iomgr → lib/iomgr}/exec_ctx.h +25 -10
- data/src/core/{iomgr → lib/iomgr}/executor.c +3 -3
- data/src/core/{iomgr → lib/iomgr}/executor.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/iocp_windows.c +6 -6
- data/src/core/{iomgr → lib/iomgr}/iocp_windows.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/iomgr.c +13 -10
- data/src/core/{iomgr → lib/iomgr}/iomgr.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/iomgr_internal.h +5 -9
- data/src/core/{iomgr → lib/iomgr}/iomgr_posix.c +6 -6
- data/src/core/{iomgr → lib/iomgr}/iomgr_posix.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/iomgr_windows.c +7 -4
- data/src/core/{iomgr → lib/iomgr}/pollset.h +11 -11
- data/src/core/{iomgr → lib/iomgr}/pollset_set.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/pollset_set_windows.c +2 -2
- data/src/core/lib/iomgr/pollset_set_windows.h +39 -0
- data/src/core/{iomgr → lib/iomgr}/pollset_windows.c +7 -7
- data/src/core/{iomgr → lib/iomgr}/pollset_windows.h +8 -5
- data/src/core/{iomgr → lib/iomgr}/resolve_address.h +10 -9
- data/src/core/{iomgr → lib/iomgr}/resolve_address_posix.c +22 -22
- data/src/core/{iomgr → lib/iomgr}/resolve_address_windows.c +20 -12
- data/src/core/{iomgr → lib/iomgr}/sockaddr.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/sockaddr_posix.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.c +9 -16
- data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/sockaddr_win32.h +6 -4
- data/src/core/{iomgr → lib/iomgr}/socket_utils_common_posix.c +29 -7
- data/src/core/{iomgr → lib/iomgr}/socket_utils_linux.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.h +14 -4
- data/src/core/{iomgr → lib/iomgr}/socket_windows.c +7 -5
- data/src/core/{iomgr → lib/iomgr}/socket_windows.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_client.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_client_posix.c +33 -18
- data/src/core/{iomgr → lib/iomgr}/tcp_client_windows.c +30 -20
- data/src/core/{iomgr → lib/iomgr}/tcp_posix.c +9 -10
- data/src/core/{iomgr → lib/iomgr}/tcp_posix.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_server.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_server_posix.c +24 -37
- data/src/core/{iomgr → lib/iomgr}/tcp_server_windows.c +8 -36
- data/src/core/{iomgr → lib/iomgr}/tcp_windows.c +27 -17
- data/src/core/{iomgr → lib/iomgr}/tcp_windows.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/timer.c +31 -4
- data/src/core/{iomgr → lib/iomgr}/timer.h +6 -7
- data/src/core/{iomgr → lib/iomgr}/timer_heap.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/timer_heap.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/udp_server.c +13 -37
- data/src/core/{iomgr → lib/iomgr}/udp_server.h +11 -10
- data/src/core/lib/iomgr/unix_sockets_posix.c +89 -0
- data/src/core/{client_config/resolvers/sockaddr_resolver.h → lib/iomgr/unix_sockets_posix.h} +15 -11
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +59 -0
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_eventfd.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_nospecial.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.c +8 -3
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/workqueue.h +10 -10
- data/src/core/{iomgr → lib/iomgr}/workqueue_posix.c +5 -6
- data/src/core/{iomgr → lib/iomgr}/workqueue_posix.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/workqueue_windows.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/workqueue_windows.h +3 -3
- data/src/core/{json → lib/json}/json.c +1 -1
- data/src/core/{json → lib/json}/json.h +4 -4
- data/src/core/{json → lib/json}/json_common.h +3 -3
- data/src/core/{json → lib/json}/json_reader.c +16 -4
- data/src/core/{json → lib/json}/json_reader.h +4 -4
- data/src/core/{json → lib/json}/json_string.c +4 -4
- data/src/core/{json → lib/json}/json_writer.c +1 -1
- data/src/core/{json → lib/json}/json_writer.h +4 -4
- data/src/core/{profiling → lib/profiling}/basic_timers.c +3 -2
- data/src/core/{profiling → lib/profiling}/stap_timers.c +2 -2
- data/src/core/{profiling → lib/profiling}/timers.h +3 -3
- data/src/core/{security → lib/security}/auth_filters.h +4 -4
- data/src/core/{security → lib/security}/b64.c +2 -2
- data/src/core/{security → lib/security}/b64.h +4 -4
- data/src/core/{security → lib/security}/client_auth_filter.c +16 -16
- data/src/core/{security → lib/security}/credentials.c +42 -26
- data/src/core/{security → lib/security}/credentials.h +11 -10
- data/src/core/{security → lib/security}/credentials_metadata.c +1 -1
- data/src/core/{security → lib/security}/credentials_posix.c +3 -3
- data/src/core/{security → lib/security}/credentials_win32.c +3 -3
- data/src/core/{security → lib/security}/google_default_credentials.c +10 -9
- data/src/core/{security → lib/security}/handshake.c +4 -4
- data/src/core/{security → lib/security}/handshake.h +6 -6
- data/src/core/{security → lib/security}/json_token.c +4 -4
- data/src/core/{security → lib/security}/json_token.h +4 -4
- data/src/core/{security → lib/security}/jwt_verifier.c +14 -14
- data/src/core/{security → lib/security}/jwt_verifier.h +5 -5
- data/src/core/{security → lib/security}/secure_endpoint.c +9 -8
- data/src/core/{security → lib/security}/secure_endpoint.h +4 -4
- data/src/core/{security → lib/security}/security_connector.c +53 -21
- data/src/core/{security → lib/security}/security_connector.h +8 -8
- data/src/core/{security → lib/security}/security_context.c +5 -5
- data/src/core/{security → lib/security}/security_context.h +5 -5
- data/src/core/{security → lib/security}/server_auth_filter.c +9 -9
- data/src/core/{support → lib/support}/alloc.c +5 -3
- data/src/core/{support → lib/support}/avl.c +1 -1
- data/src/core/lib/support/backoff.c +76 -0
- data/src/core/lib/support/backoff.h +68 -0
- data/src/core/{support → lib/support}/block_annotate.h +3 -3
- data/src/core/{support → lib/support}/cmdline.c +1 -1
- data/src/core/{support → lib/support}/cpu_iphone.c +0 -0
- data/src/core/{support → lib/support}/cpu_linux.c +2 -2
- data/src/core/{support → lib/support}/cpu_posix.c +2 -2
- data/src/core/{support → lib/support}/cpu_windows.c +0 -0
- data/src/core/{support → lib/support}/env.h +3 -3
- data/src/core/{support → lib/support}/env_linux.c +3 -3
- data/src/core/{support → lib/support}/env_posix.c +2 -2
- data/src/core/{support → lib/support}/env_win32.c +27 -21
- data/src/core/{support → lib/support}/histogram.c +1 -1
- data/src/core/{support → lib/support}/host_port.c +1 -1
- data/src/core/{support → lib/support}/load_file.c +4 -4
- data/src/core/{support → lib/support}/load_file.h +4 -4
- data/src/core/{support → lib/support}/log.c +33 -0
- data/src/core/{support → lib/support}/log_android.c +2 -2
- data/src/core/{support → lib/support}/log_linux.c +6 -5
- data/src/core/{support → lib/support}/log_posix.c +3 -3
- data/src/core/{support → lib/support}/log_win32.c +8 -22
- data/src/core/{support → lib/support}/murmur_hash.c +1 -1
- data/src/core/{support → lib/support}/murmur_hash.h +3 -3
- data/src/core/{support → lib/support}/slice.c +0 -0
- data/src/core/{support → lib/support}/slice_buffer.c +0 -0
- data/src/core/{support → lib/support}/stack_lockfree.c +7 -7
- data/src/core/{support → lib/support}/stack_lockfree.h +3 -3
- data/src/core/{support → lib/support}/string.c +1 -1
- data/src/core/{support → lib/support}/string.h +4 -4
- data/src/core/{support → lib/support}/string_posix.c +1 -1
- data/src/core/{support/string_win32.c → lib/support/string_util_win32.c} +23 -38
- data/src/core/lib/support/string_win32.c +83 -0
- data/src/core/{support → lib/support}/string_win32.h +3 -3
- data/src/core/{support → lib/support}/subprocess_posix.c +3 -3
- data/src/core/{support → lib/support}/subprocess_windows.c +3 -3
- data/src/core/{support → lib/support}/sync.c +2 -2
- data/src/core/{support → lib/support}/sync_posix.c +3 -3
- data/src/core/{support → lib/support}/sync_win32.c +1 -1
- data/src/core/{support → lib/support}/thd.c +0 -0
- data/src/core/{support → lib/support}/thd_internal.h +3 -3
- data/src/core/{support → lib/support}/thd_posix.c +4 -3
- data/src/core/{support → lib/support}/thd_win32.c +1 -1
- data/src/core/{support → lib/support}/time.c +2 -2
- data/src/core/{support → lib/support}/time_posix.c +12 -6
- data/src/core/{support → lib/support}/time_precise.c +0 -0
- data/src/core/{support → lib/support}/time_precise.h +3 -3
- data/src/core/{support → lib/support}/time_win32.c +7 -7
- data/src/core/{support → lib/support}/tls_pthread.c +0 -0
- data/src/core/{support → lib/support}/tmpfile.h +4 -4
- data/src/core/lib/support/tmpfile_msys.c +73 -0
- data/src/core/{support → lib/support}/tmpfile_posix.c +5 -5
- data/src/core/{support → lib/support}/tmpfile_win32.c +5 -5
- data/src/core/{support → lib/support}/wrap_memcpy.c +0 -0
- data/src/core/{surface → lib/surface}/alarm.c +3 -3
- data/src/core/{surface → lib/surface}/api_trace.c +1 -1
- data/src/core/{surface → lib/surface}/api_trace.h +4 -4
- data/src/core/{surface → lib/surface}/byte_buffer.c +3 -3
- data/src/core/{surface → lib/surface}/byte_buffer_reader.c +3 -3
- data/src/core/{surface → lib/surface}/call.c +145 -73
- data/src/core/{surface → lib/surface}/call.h +14 -7
- data/src/core/{surface → lib/surface}/call_details.c +1 -1
- data/src/core/{surface → lib/surface}/call_log_batch.c +2 -2
- data/src/core/{surface → lib/surface}/call_test_only.h +3 -3
- data/src/core/{surface → lib/surface}/channel.c +33 -34
- data/src/core/{surface → lib/surface}/channel.h +9 -9
- data/src/core/lib/surface/channel_init.c +140 -0
- data/src/core/lib/surface/channel_init.h +87 -0
- data/src/core/{surface → lib/surface}/channel_ping.c +4 -4
- data/src/core/lib/surface/channel_stack_type.c +54 -0
- data/src/core/{httpcli/parser.h → lib/surface/channel_stack_type.h} +22 -28
- data/src/core/{surface → lib/surface}/completion_queue.c +15 -11
- data/src/core/{surface → lib/surface}/completion_queue.h +4 -4
- data/src/core/{surface → lib/surface}/event_string.c +2 -2
- data/src/core/{surface → lib/surface}/event_string.h +3 -3
- data/src/core/lib/surface/init.c +217 -0
- data/src/core/{surface → lib/surface}/init.h +4 -3
- data/src/core/lib/surface/init_secure.c +89 -0
- data/src/core/{surface → lib/surface}/lame_client.c +31 -19
- data/src/core/{iomgr/pollset_set_windows.h → lib/surface/lame_client.h} +7 -5
- data/src/core/{surface → lib/surface}/metadata_array.c +1 -1
- data/src/core/{surface → lib/surface}/server.c +208 -183
- data/src/core/{surface → lib/surface}/server.h +6 -11
- data/src/core/{surface → lib/surface}/surface_trace.h +5 -5
- data/src/core/{surface → lib/surface}/validate_metadata.c +1 -1
- data/src/core/{surface → lib/surface}/version.c +2 -2
- data/src/core/{transport → lib/transport}/byte_stream.c +1 -1
- data/src/core/{transport → lib/transport}/byte_stream.h +4 -4
- data/src/core/{transport → lib/transport}/connectivity_state.c +2 -2
- data/src/core/{transport → lib/transport}/connectivity_state.h +4 -4
- data/src/core/{transport → lib/transport}/metadata.c +71 -19
- data/src/core/{transport → lib/transport}/metadata.h +11 -4
- data/src/core/{transport → lib/transport}/metadata_batch.c +2 -2
- data/src/core/{transport → lib/transport}/metadata_batch.h +4 -4
- data/src/core/{transport → lib/transport}/static_metadata.c +100 -32
- data/src/core/{transport → lib/transport}/static_metadata.h +58 -58
- data/src/core/{transport → lib/transport}/transport.c +25 -5
- data/src/core/{transport → lib/transport}/transport.h +41 -16
- data/src/core/{transport → lib/transport}/transport_impl.h +8 -5
- data/src/core/{transport → lib/transport}/transport_op_string.c +2 -2
- data/src/core/{tsi → lib/tsi}/fake_transport_security.c +18 -14
- data/src/core/{tsi → lib/tsi}/fake_transport_security.h +4 -4
- data/src/core/{tsi → lib/tsi}/ssl_transport_security.c +173 -63
- data/src/core/{tsi → lib/tsi}/ssl_transport_security.h +24 -6
- data/src/core/{tsi → lib/tsi}/ssl_types.h +3 -3
- data/src/core/{tsi → lib/tsi}/transport_security.c +12 -28
- data/src/core/{tsi → lib/tsi}/transport_security.h +4 -4
- data/src/core/{tsi → lib/tsi}/transport_security_interface.h +12 -3
- data/src/core/plugin_registry/grpc_plugin_registry.c +66 -0
- data/src/ruby/ext/grpc/extconf.rb +14 -20
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
- data/src/ruby/ext/grpc/rb_call.c +37 -4
- data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
- data/src/ruby/ext/grpc/rb_channel.c +2 -3
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
- data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
- data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
- data/src/ruby/ext/grpc/rb_server.c +2 -3
- data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
- data/src/ruby/ext/grpc/rb_signal.c +70 -0
- data/src/ruby/ext/grpc/rb_signal.h +39 -0
- data/src/ruby/lib/grpc.rb +21 -13
- data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
- data/src/ruby/lib/grpc/errors.rb +2 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
- data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
- data/src/ruby/lib/grpc/generic/service.rb +5 -15
- data/src/ruby/lib/grpc/grpc.rb +3 -3
- data/src/ruby/{bin/interop/interop_server.rb → lib/grpc/signals.rb} +39 -20
- data/src/ruby/lib/grpc/version.rb +2 -2
- data/src/ruby/pb/generate_proto_ruby.sh +9 -2
- data/src/ruby/pb/grpc/health/checker.rb +1 -1
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
- data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
- data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
- data/src/ruby/pb/test/client.rb +12 -23
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
- data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
- data/src/ruby/spec/generic/service_spec.rb +0 -69
- data/src/ruby/{bin/interop/interop_client.rb → spec/pb/duplicate/codegen_spec.rb} +41 -21
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +184 -176
- data/third_party/boringssl/crypto/asn1/a_bool.c +42 -44
- data/third_party/boringssl/crypto/asn1/a_bytes.c +236 -245
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +173 -192
- data/third_party/boringssl/crypto/asn1/a_dup.c +43 -35
- data/third_party/boringssl/crypto/asn1/a_enum.c +107 -109
- data/third_party/boringssl/crypto/asn1/a_gentm.c +180 -181
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +73 -80
- data/third_party/boringssl/crypto/asn1/a_int.c +357 -353
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +272 -253
- data/third_party/boringssl/crypto/asn1/a_object.c +293 -309
- data/third_party/boringssl/crypto/asn1/a_octet.c +13 -6
- data/third_party/boringssl/crypto/asn1/a_print.c +54 -52
- data/third_party/boringssl/crypto/asn1/a_strnid.c +179 -157
- data/third_party/boringssl/crypto/asn1/a_time.c +125 -129
- data/third_party/boringssl/crypto/asn1/a_type.c +79 -86
- data/third_party/boringssl/crypto/asn1/a_utctm.c +246 -255
- data/third_party/boringssl/crypto/asn1/a_utf8.c +159 -135
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +361 -368
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +11 -11
- data/third_party/boringssl/crypto/asn1/asn1_par.c +309 -351
- data/third_party/boringssl/crypto/asn1/asn_pack.c +30 -29
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +375 -394
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +146 -149
- data/third_party/boringssl/crypto/asn1/f_enum.c +128 -134
- data/third_party/boringssl/crypto/asn1/f_int.c +131 -139
- data/third_party/boringssl/crypto/asn1/f_string.c +125 -133
- data/third_party/boringssl/crypto/asn1/t_bitst.c +30 -29
- data/third_party/boringssl/crypto/asn1/t_pkey.c +45 -47
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1099 -1216
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +556 -592
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +175 -193
- data/third_party/boringssl/crypto/asn1/tasn_new.c +271 -288
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +462 -508
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +28 -21
- data/third_party/boringssl/crypto/asn1/x_bignum.c +62 -52
- data/third_party/boringssl/crypto/asn1/x_long.c +101 -86
- data/third_party/boringssl/crypto/bio/buffer.c +3 -3
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +8 -68
- data/third_party/boringssl/crypto/bn/bn.c +1 -1
- data/third_party/boringssl/crypto/bn/bn_asn1.c +9 -22
- data/third_party/boringssl/crypto/bn/convert.c +9 -4
- data/third_party/boringssl/crypto/bn/div.c +0 -20
- data/third_party/boringssl/crypto/bn/exponentiation.c +22 -13
- data/third_party/boringssl/crypto/bn/generic.c +6 -242
- data/third_party/boringssl/crypto/bn/internal.h +9 -70
- data/third_party/boringssl/crypto/bn/montgomery.c +1 -2
- data/third_party/boringssl/crypto/bn/mul.c +6 -26
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +21 -28
- data/third_party/boringssl/crypto/bytestring/asn1_compat.c +51 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +128 -87
- data/third_party/boringssl/crypto/bytestring/cbb.c +37 -3
- data/third_party/boringssl/crypto/bytestring/internal.h +39 -10
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +18 -13
- data/third_party/boringssl/crypto/cipher/e_aes.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +4 -9
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +39 -10
- data/third_party/boringssl/crypto/conf/conf.c +9 -0
- data/third_party/boringssl/crypto/cpu-intel.c +1 -1
- data/third_party/boringssl/crypto/crypto.c +2 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +125 -120
- data/third_party/boringssl/crypto/curve25519/internal.h +45 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +225 -0
- data/third_party/boringssl/crypto/dh/check.c +32 -10
- data/third_party/boringssl/crypto/dh/dh.c +1 -1
- data/third_party/boringssl/crypto/digest/md32_common.h +0 -60
- data/third_party/boringssl/crypto/dsa/dsa.c +47 -21
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +249 -64
- data/third_party/boringssl/crypto/ec/ec.c +45 -31
- data/third_party/boringssl/crypto/ec/ec_asn1.c +315 -382
- data/third_party/boringssl/crypto/ec/ec_key.c +1 -4
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -9
- data/third_party/boringssl/crypto/ec/internal.h +1 -19
- data/third_party/boringssl/crypto/ec/oct.c +12 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +4 -65
- data/third_party/boringssl/crypto/ec/p256-64.c +9 -71
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +1 -6
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +3 -13
- data/third_party/boringssl/crypto/ec/simple.c +0 -76
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +1 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +10 -24
- data/third_party/boringssl/crypto/evp/evp.c +4 -3
- data/third_party/boringssl/crypto/evp/evp_asn1.c +101 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +22 -51
- data/third_party/boringssl/crypto/evp/internal.h +28 -27
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +78 -249
- data/third_party/boringssl/crypto/evp/p_ec.c +19 -66
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +74 -231
- data/third_party/boringssl/crypto/evp/p_rsa.c +90 -13
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +49 -48
- data/third_party/boringssl/crypto/internal.h +16 -1
- data/third_party/boringssl/crypto/mem.c +2 -2
- data/third_party/boringssl/crypto/modes/ctr.c +2 -1
- data/third_party/boringssl/crypto/modes/gcm.c +5 -3
- data/third_party/boringssl/crypto/obj/obj_dat.h +6 -3
- data/third_party/boringssl/crypto/pem/pem_all.c +83 -102
- data/third_party/boringssl/crypto/pem/pem_info.c +286 -309
- data/third_party/boringssl/crypto/pem/pem_lib.c +690 -710
- data/third_party/boringssl/crypto/pem/pem_oth.c +15 -16
- data/third_party/boringssl/crypto/pem/pem_pk8.c +132 -119
- data/third_party/boringssl/crypto/pem/pem_pkey.c +144 -220
- data/third_party/boringssl/crypto/pem/pem_x509.c +3 -3
- data/third_party/boringssl/crypto/pem/pem_xaux.c +5 -4
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +54 -60
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +3 -1
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +48 -50
- data/third_party/boringssl/crypto/rand/rand.c +2 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +8 -48
- data/third_party/boringssl/crypto/rsa/internal.h +1 -9
- data/third_party/boringssl/crypto/rsa/padding.c +73 -77
- data/third_party/boringssl/crypto/rsa/rsa.c +1 -1
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +27 -46
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +23 -34
- data/third_party/boringssl/crypto/test/scoped_types.h +3 -0
- data/third_party/boringssl/crypto/thread_win.c +15 -13
- data/third_party/boringssl/crypto/time_support.c +0 -6
- data/third_party/boringssl/crypto/x509/a_digest.c +26 -27
- data/third_party/boringssl/crypto/x509/a_sign.c +63 -64
- data/third_party/boringssl/crypto/x509/a_strex.c +482 -413
- data/third_party/boringssl/crypto/x509/a_verify.c +45 -51
- data/third_party/boringssl/crypto/x509/asn1_gen.c +715 -769
- data/third_party/boringssl/crypto/x509/by_dir.c +355 -393
- data/third_party/boringssl/crypto/x509/by_file.c +186 -206
- data/third_party/boringssl/crypto/x509/charmap.h +11 -11
- data/third_party/boringssl/crypto/x509/i2d_pr.c +21 -22
- data/third_party/boringssl/crypto/x509/t_crl.c +50 -51
- data/third_party/boringssl/crypto/x509/t_x509.c +414 -406
- data/third_party/boringssl/crypto/x509/t_x509a.c +44 -42
- data/third_party/boringssl/crypto/x509/vpm_int.h +13 -13
- data/third_party/boringssl/crypto/x509/x509_att.c +241 -219
- data/third_party/boringssl/crypto/x509/x509_cmp.c +343 -359
- data/third_party/boringssl/crypto/x509/x509_d2.c +36 -35
- data/third_party/boringssl/crypto/x509/x509_def.c +23 -13
- data/third_party/boringssl/crypto/x509/x509_ext.c +75 -75
- data/third_party/boringssl/crypto/x509/x509_lu.c +574 -612
- data/third_party/boringssl/crypto/x509/x509_obj.c +104 -115
- data/third_party/boringssl/crypto/x509/x509_r2x.c +40 -40
- data/third_party/boringssl/crypto/x509/x509_req.c +181 -174
- data/third_party/boringssl/crypto/x509/x509_set.c +71 -76
- data/third_party/boringssl/crypto/x509/x509_trs.c +193 -171
- data/third_party/boringssl/crypto/x509/x509_txt.c +135 -138
- data/third_party/boringssl/crypto/x509/x509_v3.c +174 -167
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2079 -2130
- data/third_party/boringssl/crypto/x509/x509_vpm.c +486 -522
- data/third_party/boringssl/crypto/x509/x509cset.c +96 -99
- data/third_party/boringssl/crypto/x509/x509name.c +280 -275
- data/third_party/boringssl/crypto/x509/x509rset.c +15 -14
- data/third_party/boringssl/crypto/x509/x509spki.c +62 -60
- data/third_party/boringssl/crypto/x509/x509type.c +58 -60
- data/third_party/boringssl/crypto/x509/x_algor.c +70 -73
- data/third_party/boringssl/crypto/x509/x_all.c +282 -328
- data/third_party/boringssl/crypto/x509/x_attrib.c +36 -42
- data/third_party/boringssl/crypto/x509/x_crl.c +397 -418
- data/third_party/boringssl/crypto/x509/x_exten.c +5 -5
- data/third_party/boringssl/crypto/x509/x_info.c +30 -27
- data/third_party/boringssl/crypto/x509/x_name.c +387 -388
- data/third_party/boringssl/crypto/x509/x_pkey.c +32 -29
- data/third_party/boringssl/crypto/x509/x_pubkey.c +261 -280
- data/third_party/boringssl/crypto/x509/x_req.c +30 -33
- data/third_party/boringssl/crypto/x509/x_sig.c +2 -2
- data/third_party/boringssl/crypto/x509/x_spki.c +9 -7
- data/third_party/boringssl/crypto/x509/x_val.c +2 -2
- data/third_party/boringssl/crypto/x509/x_x509.c +120 -119
- data/third_party/boringssl/crypto/x509/x_x509a.c +99 -91
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +57 -51
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +199 -214
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +57 -64
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +95 -90
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +86 -87
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +61 -64
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +108 -117
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +676 -724
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +128 -136
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +7 -6
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +499 -507
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +54 -47
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +67 -67
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +330 -328
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +354 -338
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +441 -496
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +35 -33
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +66 -63
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +157 -159
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +45 -43
- data/third_party/boringssl/crypto/x509v3/v3_info.c +124 -112
- data/third_party/boringssl/crypto/x509v3/v3_int.c +30 -26
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +231 -204
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +353 -381
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +252 -270
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +9 -8
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +58 -61
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +35 -34
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +72 -74
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +146 -121
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +651 -582
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +76 -72
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +139 -131
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1072 -1068
- data/third_party/boringssl/include/openssl/asn1.h +40 -38
- data/third_party/boringssl/include/openssl/base.h +10 -1
- data/third_party/boringssl/include/openssl/bio.h +10 -11
- data/third_party/boringssl/include/openssl/bn.h +12 -9
- data/third_party/boringssl/include/openssl/buf.h +1 -1
- data/third_party/boringssl/include/openssl/bytestring.h +29 -0
- data/third_party/boringssl/include/openssl/conf.h +25 -0
- data/third_party/boringssl/include/openssl/crypto.h +6 -1
- data/third_party/boringssl/include/openssl/curve25519.h +6 -3
- data/third_party/boringssl/include/openssl/dh.h +7 -3
- data/third_party/boringssl/include/openssl/dsa.h +108 -51
- data/third_party/boringssl/include/openssl/ec.h +46 -21
- data/third_party/boringssl/include/openssl/ec_key.h +78 -42
- data/third_party/boringssl/include/openssl/ecdsa.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -2
- data/third_party/boringssl/include/openssl/evp.h +120 -37
- data/third_party/boringssl/include/openssl/mem.h +4 -13
- data/third_party/boringssl/include/openssl/obj_mac.h +4 -0
- data/third_party/boringssl/include/openssl/pem.h +0 -9
- data/third_party/boringssl/include/openssl/pkcs8.h +6 -2
- data/third_party/boringssl/include/openssl/rand.h +3 -0
- data/third_party/boringssl/include/openssl/rsa.h +42 -42
- data/third_party/boringssl/include/openssl/ssl.h +115 -41
- data/third_party/boringssl/include/openssl/stack.h +0 -3
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -256
- data/third_party/boringssl/include/openssl/tls1.h +1 -1
- data/third_party/boringssl/include/openssl/x509.h +0 -2
- data/third_party/boringssl/include/openssl/x509_vfy.h +5 -0
- data/third_party/boringssl/ssl/d1_both.c +102 -101
- data/third_party/boringssl/ssl/d1_clnt.c +145 -150
- data/third_party/boringssl/ssl/d1_lib.c +63 -62
- data/third_party/boringssl/ssl/d1_pkt.c +73 -71
- data/third_party/boringssl/ssl/d1_srvr.c +116 -125
- data/third_party/boringssl/ssl/dtls_record.c +3 -3
- data/third_party/boringssl/ssl/internal.h +210 -208
- data/third_party/boringssl/ssl/pqueue/pqueue.c +2 -2
- data/third_party/boringssl/ssl/s3_both.c +116 -130
- data/third_party/boringssl/ssl/s3_clnt.c +589 -740
- data/third_party/boringssl/ssl/s3_enc.c +52 -151
- data/third_party/boringssl/ssl/s3_lib.c +70 -76
- data/third_party/boringssl/ssl/s3_pkt.c +105 -144
- data/third_party/boringssl/ssl/s3_srvr.c +542 -806
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +1 -1
- data/third_party/boringssl/ssl/ssl_cert.c +2 -2
- data/third_party/boringssl/ssl/ssl_cipher.c +7 -3
- data/third_party/boringssl/ssl/ssl_ecdh.c +374 -0
- data/third_party/boringssl/ssl/ssl_lib.c +260 -221
- data/third_party/boringssl/ssl/ssl_session.c +17 -17
- data/third_party/boringssl/ssl/t1_enc.c +128 -273
- data/third_party/boringssl/ssl/t1_lib.c +134 -258
- data/third_party/boringssl/ssl/test/test_config.h +2 -0
- data/third_party/boringssl/ssl/tls_record.c +52 -15
- metadata +385 -359
- data/src/core/channel/client_uchannel.c +0 -243
- data/src/core/channel/client_uchannel.h +0 -60
- data/src/core/channel/connected_channel.h +0 -51
- data/src/core/client_config/lb_policies/pick_first.h +0 -43
- data/src/core/client_config/resolvers/dns_resolver.h +0 -42
- data/src/core/client_config/subchannel_factory.h +0 -66
- data/src/core/httpcli/parser.c +0 -211
- data/src/core/iomgr/fd_posix.c +0 -451
- data/src/core/iomgr/fd_posix.h +0 -192
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +0 -324
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +0 -234
- data/src/core/iomgr/pollset_posix.c +0 -633
- data/src/core/iomgr/pollset_posix.h +0 -153
- data/src/core/iomgr/pollset_set_posix.c +0 -202
- data/src/core/iomgr/pollset_set_posix.h +0 -45
- data/src/core/surface/init.c +0 -174
- data/src/core/surface/init_secure.c +0 -42
- data/src/core/surface/server_create.c +0 -48
- data/src/core/transport/chttp2/huffsyms.c +0 -297
- data/src/ruby/bin/grpc_ruby_interop_client +0 -33
- data/src/ruby/bin/grpc_ruby_interop_server +0 -33
- data/third_party/boringssl/crypto/dsa/internal.h +0 -78
@@ -161,7 +161,7 @@ static void SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *session);
|
|
161
161
|
static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *session, int lock);
|
162
162
|
|
163
163
|
SSL_SESSION *SSL_SESSION_new(void) {
|
164
|
-
SSL_SESSION *session =
|
164
|
+
SSL_SESSION *session = OPENSSL_malloc(sizeof(SSL_SESSION));
|
165
165
|
if (session == NULL) {
|
166
166
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
167
167
|
return 0;
|
@@ -430,7 +430,7 @@ enum ssl_session_result_t ssl_get_prev_session(
|
|
430
430
|
/* This is used only by servers. */
|
431
431
|
assert(ssl->server);
|
432
432
|
SSL_SESSION *session = NULL;
|
433
|
-
int
|
433
|
+
int renew_ticket = 0;
|
434
434
|
|
435
435
|
/* If tickets are disabled, always behave as if no tickets are present. */
|
436
436
|
const uint8_t *ticket = NULL;
|
@@ -440,24 +440,27 @@ enum ssl_session_result_t ssl_get_prev_session(
|
|
440
440
|
ssl->version > SSL3_VERSION &&
|
441
441
|
SSL_early_callback_ctx_extension_get(ctx, TLSEXT_TYPE_session_ticket,
|
442
442
|
&ticket, &ticket_len);
|
443
|
-
|
444
|
-
|
443
|
+
int from_cache = 0;
|
444
|
+
if (tickets_supported && ticket_len > 0) {
|
445
|
+
if (!tls_process_ticket(ssl, &session, &renew_ticket, ticket, ticket_len,
|
445
446
|
ctx->session_id, ctx->session_id_len)) {
|
446
447
|
return ssl_session_error;
|
447
448
|
}
|
448
449
|
} else {
|
449
|
-
/* The client
|
450
|
-
* used instead. */
|
450
|
+
/* The client didn't send a ticket, so the session ID is a real ID. */
|
451
451
|
enum ssl_session_result_t lookup_ret = ssl_lookup_session(
|
452
452
|
ssl, &session, ctx->session_id, ctx->session_id_len);
|
453
453
|
if (lookup_ret != ssl_session_success) {
|
454
454
|
return lookup_ret;
|
455
455
|
}
|
456
|
+
from_cache = 1;
|
456
457
|
}
|
457
458
|
|
458
459
|
if (session == NULL ||
|
459
460
|
session->sid_ctx_length != ssl->sid_ctx_length ||
|
460
461
|
memcmp(session->sid_ctx, ssl->sid_ctx, ssl->sid_ctx_length) != 0) {
|
462
|
+
/* The client did not offer a suitable ticket or session ID. If supported,
|
463
|
+
* the new session should use a ticket. */
|
461
464
|
goto no_session;
|
462
465
|
}
|
463
466
|
|
@@ -471,11 +474,12 @@ enum ssl_session_result_t ssl_get_prev_session(
|
|
471
474
|
* effectively disable the session cache by accident without anyone
|
472
475
|
* noticing). */
|
473
476
|
OPENSSL_PUT_ERROR(SSL, SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED);
|
474
|
-
|
477
|
+
SSL_SESSION_free(session);
|
478
|
+
return ssl_session_error;
|
475
479
|
}
|
476
480
|
|
477
481
|
if (session->timeout < (long)(time(NULL) - session->time)) {
|
478
|
-
if (
|
482
|
+
if (from_cache) {
|
479
483
|
/* The session was from the cache, so remove it. */
|
480
484
|
SSL_CTX_remove_session(ssl->initial_ctx, session);
|
481
485
|
}
|
@@ -483,13 +487,9 @@ enum ssl_session_result_t ssl_get_prev_session(
|
|
483
487
|
}
|
484
488
|
|
485
489
|
*out_session = session;
|
486
|
-
*out_send_ticket =
|
490
|
+
*out_send_ticket = renew_ticket;
|
487
491
|
return ssl_session_success;
|
488
492
|
|
489
|
-
fatal_error:
|
490
|
-
SSL_SESSION_free(session);
|
491
|
-
return ssl_session_error;
|
492
|
-
|
493
493
|
no_session:
|
494
494
|
*out_session = NULL;
|
495
495
|
*out_send_ticket = tickets_supported;
|
@@ -645,10 +645,10 @@ void SSL_CTX_flush_sessions(SSL_CTX *ctx, long time) {
|
|
645
645
|
CRYPTO_MUTEX_unlock(&ctx->lock);
|
646
646
|
}
|
647
647
|
|
648
|
-
int ssl_clear_bad_session(SSL *
|
649
|
-
if (
|
650
|
-
!SSL_in_init(
|
651
|
-
SSL_CTX_remove_session(
|
648
|
+
int ssl_clear_bad_session(SSL *ssl) {
|
649
|
+
if (ssl->session != NULL && !(ssl->shutdown & SSL_SENT_SHUTDOWN) &&
|
650
|
+
!SSL_in_init(ssl)) {
|
651
|
+
SSL_CTX_remove_session(ssl->ctx, ssl->session);
|
652
652
|
return 1;
|
653
653
|
}
|
654
654
|
|
@@ -224,18 +224,17 @@ err:
|
|
224
224
|
return ret;
|
225
225
|
}
|
226
226
|
|
227
|
-
int tls1_prf(SSL *
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
227
|
+
static int tls1_prf(const SSL *ssl, uint8_t *out, size_t out_len,
|
228
|
+
const uint8_t *secret, size_t secret_len, const char *label,
|
229
|
+
size_t label_len, const uint8_t *seed1, size_t seed1_len,
|
230
|
+
const uint8_t *seed2, size_t seed2_len) {
|
232
231
|
if (out_len == 0) {
|
233
232
|
return 1;
|
234
233
|
}
|
235
234
|
|
236
235
|
memset(out, 0, out_len);
|
237
236
|
|
238
|
-
uint32_t algorithm_prf = ssl_get_algorithm_prf(
|
237
|
+
uint32_t algorithm_prf = ssl_get_algorithm_prf(ssl);
|
239
238
|
if (algorithm_prf == SSL_HANDSHAKE_MAC_DEFAULT) {
|
240
239
|
/* If using the MD5/SHA1 PRF, |secret| is partitioned between SHA-1 and
|
241
240
|
* MD5, MD5 first. */
|
@@ -260,17 +259,12 @@ int tls1_prf(SSL *s, uint8_t *out, size_t out_len, const uint8_t *secret,
|
|
260
259
|
return 1;
|
261
260
|
}
|
262
261
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
s->s3->server_random, SSL3_RANDOM_SIZE,
|
269
|
-
s->s3->client_random,
|
270
|
-
SSL3_RANDOM_SIZE);
|
271
|
-
}
|
262
|
+
int tls1_change_cipher_state(SSL *ssl, int which) {
|
263
|
+
/* Ensure the key block is set up. */
|
264
|
+
if (!tls1_setup_key_block(ssl)) {
|
265
|
+
return 0;
|
266
|
+
}
|
272
267
|
|
273
|
-
int tls1_change_cipher_state(SSL *s, int which) {
|
274
268
|
/* is_read is true if we have just read a ChangeCipherSpec message - i.e. we
|
275
269
|
* need to update the read cipherspec. Otherwise we have just written one. */
|
276
270
|
const char is_read = (which & SSL3_CC_READ) != 0;
|
@@ -279,63 +273,28 @@ int tls1_change_cipher_state(SSL *s, int which) {
|
|
279
273
|
* or a server reading a client's ChangeCipherSpec. */
|
280
274
|
const char use_client_keys = which == SSL3_CHANGE_CIPHER_CLIENT_WRITE ||
|
281
275
|
which == SSL3_CHANGE_CIPHER_SERVER_READ;
|
282
|
-
const uint8_t *client_write_mac_secret, *server_write_mac_secret, *mac_secret;
|
283
|
-
const uint8_t *client_write_key, *server_write_key, *key;
|
284
|
-
const uint8_t *client_write_iv, *server_write_iv, *iv;
|
285
|
-
const EVP_AEAD *aead = s->s3->tmp.new_aead;
|
286
|
-
size_t key_len, iv_len, mac_secret_len;
|
287
|
-
const uint8_t *key_data;
|
288
|
-
|
289
|
-
/* Reset sequence number to zero. */
|
290
|
-
if (is_read) {
|
291
|
-
if (SSL_IS_DTLS(s)) {
|
292
|
-
s->d1->r_epoch++;
|
293
|
-
memset(&s->d1->bitmap, 0, sizeof(s->d1->bitmap));
|
294
|
-
}
|
295
|
-
memset(s->s3->read_sequence, 0, sizeof(s->s3->read_sequence));
|
296
|
-
} else {
|
297
|
-
if (SSL_IS_DTLS(s)) {
|
298
|
-
s->d1->w_epoch++;
|
299
|
-
memcpy(s->d1->last_write_sequence, s->s3->write_sequence,
|
300
|
-
sizeof(s->s3->write_sequence));
|
301
|
-
}
|
302
|
-
memset(s->s3->write_sequence, 0, sizeof(s->s3->write_sequence));
|
303
|
-
}
|
304
276
|
|
305
|
-
mac_secret_len =
|
306
|
-
|
277
|
+
size_t mac_secret_len = ssl->s3->tmp.new_mac_secret_len;
|
278
|
+
size_t key_len = ssl->s3->tmp.new_key_len;
|
279
|
+
size_t iv_len = ssl->s3->tmp.new_fixed_iv_len;
|
280
|
+
assert((mac_secret_len + key_len + iv_len) * 2 ==
|
281
|
+
ssl->s3->tmp.key_block_length);
|
307
282
|
|
308
|
-
|
309
|
-
|
310
|
-
return 0;
|
311
|
-
}
|
312
|
-
|
313
|
-
key_len = EVP_AEAD_key_length(aead);
|
314
|
-
if (mac_secret_len > 0) {
|
315
|
-
/* For "stateful" AEADs (i.e. compatibility with pre-AEAD cipher
|
316
|
-
* suites) the key length reported by |EVP_AEAD_key_length| will
|
317
|
-
* include the MAC and IV key bytes. */
|
318
|
-
if (key_len < mac_secret_len + iv_len) {
|
319
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
320
|
-
return 0;
|
321
|
-
}
|
322
|
-
key_len -= mac_secret_len + iv_len;
|
323
|
-
}
|
324
|
-
|
325
|
-
key_data = s->s3->tmp.key_block;
|
326
|
-
client_write_mac_secret = key_data;
|
283
|
+
const uint8_t *key_data = ssl->s3->tmp.key_block;
|
284
|
+
const uint8_t *client_write_mac_secret = key_data;
|
327
285
|
key_data += mac_secret_len;
|
328
|
-
server_write_mac_secret = key_data;
|
286
|
+
const uint8_t *server_write_mac_secret = key_data;
|
329
287
|
key_data += mac_secret_len;
|
330
|
-
client_write_key = key_data;
|
288
|
+
const uint8_t *client_write_key = key_data;
|
331
289
|
key_data += key_len;
|
332
|
-
server_write_key = key_data;
|
290
|
+
const uint8_t *server_write_key = key_data;
|
333
291
|
key_data += key_len;
|
334
|
-
client_write_iv = key_data;
|
292
|
+
const uint8_t *client_write_iv = key_data;
|
335
293
|
key_data += iv_len;
|
336
|
-
server_write_iv = key_data;
|
294
|
+
const uint8_t *server_write_iv = key_data;
|
337
295
|
key_data += iv_len;
|
338
296
|
|
297
|
+
const uint8_t *mac_secret, *key, *iv;
|
339
298
|
if (use_client_keys) {
|
340
299
|
mac_secret = client_write_mac_secret;
|
341
300
|
key = client_write_key;
|
@@ -346,50 +305,51 @@ int tls1_change_cipher_state(SSL *s, int which) {
|
|
346
305
|
iv = server_write_iv;
|
347
306
|
}
|
348
307
|
|
349
|
-
|
350
|
-
|
308
|
+
SSL_AEAD_CTX *aead_ctx =
|
309
|
+
SSL_AEAD_CTX_new(is_read ? evp_aead_open : evp_aead_seal,
|
310
|
+
ssl3_protocol_version(ssl), ssl->s3->tmp.new_cipher, key,
|
311
|
+
key_len, mac_secret, mac_secret_len, iv, iv_len);
|
312
|
+
if (aead_ctx == NULL) {
|
351
313
|
return 0;
|
352
314
|
}
|
353
315
|
|
354
316
|
if (is_read) {
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
s->s3->tmp.new_cipher, key, key_len, mac_secret, mac_secret_len, iv,
|
359
|
-
iv_len);
|
360
|
-
return s->aead_read_ctx != NULL;
|
317
|
+
ssl_set_read_state(ssl, aead_ctx);
|
318
|
+
} else {
|
319
|
+
ssl_set_write_state(ssl, aead_ctx);
|
361
320
|
}
|
321
|
+
return 1;
|
322
|
+
}
|
362
323
|
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
iv_len);
|
368
|
-
return s->aead_write_ctx != NULL;
|
324
|
+
size_t SSL_get_key_block_len(const SSL *ssl) {
|
325
|
+
return 2 * ((size_t)ssl->s3->tmp.new_mac_secret_len +
|
326
|
+
(size_t)ssl->s3->tmp.new_key_len +
|
327
|
+
(size_t)ssl->s3->tmp.new_fixed_iv_len);
|
369
328
|
}
|
370
329
|
|
371
|
-
int
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
330
|
+
int SSL_generate_key_block(const SSL *ssl, uint8_t *out, size_t out_len) {
|
331
|
+
return ssl->s3->enc_method->prf(
|
332
|
+
ssl, out, out_len, ssl->session->master_key,
|
333
|
+
ssl->session->master_key_length, TLS_MD_KEY_EXPANSION_CONST,
|
334
|
+
TLS_MD_KEY_EXPANSION_CONST_SIZE, ssl->s3->server_random, SSL3_RANDOM_SIZE,
|
335
|
+
ssl->s3->client_random, SSL3_RANDOM_SIZE);
|
336
|
+
}
|
377
337
|
|
378
|
-
|
338
|
+
int tls1_setup_key_block(SSL *ssl) {
|
339
|
+
if (ssl->s3->tmp.key_block_length != 0) {
|
379
340
|
return 1;
|
380
341
|
}
|
381
342
|
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
343
|
+
const EVP_AEAD *aead = NULL;
|
344
|
+
size_t mac_secret_len, fixed_iv_len;
|
345
|
+
if (ssl->session->cipher == NULL ||
|
346
|
+
!ssl_cipher_get_evp_aead(&aead, &mac_secret_len, &fixed_iv_len,
|
347
|
+
ssl->session->cipher,
|
348
|
+
ssl3_protocol_version(ssl))) {
|
349
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_CIPHER_OR_HASH_UNAVAILABLE);
|
350
|
+
return 0;
|
390
351
|
}
|
391
|
-
key_len = EVP_AEAD_key_length(aead);
|
392
|
-
variable_iv_len = EVP_AEAD_nonce_length(aead);
|
352
|
+
size_t key_len = EVP_AEAD_key_length(aead);
|
393
353
|
if (mac_secret_len > 0) {
|
394
354
|
/* For "stateful" AEADs (i.e. compatibility with pre-AEAD cipher suites) the
|
395
355
|
* key length reported by |EVP_AEAD_key_length| will include the MAC key
|
@@ -399,58 +359,43 @@ int tls1_setup_key_block(SSL *s) {
|
|
399
359
|
return 0;
|
400
360
|
}
|
401
361
|
key_len -= mac_secret_len + fixed_iv_len;
|
402
|
-
} else {
|
403
|
-
/* The nonce is split into a fixed portion and a variable portion. */
|
404
|
-
if (variable_iv_len < fixed_iv_len) {
|
405
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
406
|
-
return 0;
|
407
|
-
}
|
408
|
-
variable_iv_len -= fixed_iv_len;
|
409
362
|
}
|
410
363
|
|
411
364
|
assert(mac_secret_len < 256);
|
365
|
+
assert(key_len < 256);
|
412
366
|
assert(fixed_iv_len < 256);
|
413
|
-
assert(variable_iv_len < 256);
|
414
367
|
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
s->s3->tmp.new_variable_iv_len = (uint8_t)variable_iv_len;
|
368
|
+
ssl->s3->tmp.new_mac_secret_len = (uint8_t)mac_secret_len;
|
369
|
+
ssl->s3->tmp.new_key_len = (uint8_t)key_len;
|
370
|
+
ssl->s3->tmp.new_fixed_iv_len = (uint8_t)fixed_iv_len;
|
419
371
|
|
420
|
-
key_block_len =
|
421
|
-
key_block_len *= 2;
|
372
|
+
size_t key_block_len = SSL_get_key_block_len(ssl);
|
422
373
|
|
423
|
-
ssl3_cleanup_key_block(
|
374
|
+
ssl3_cleanup_key_block(ssl);
|
424
375
|
|
425
|
-
|
426
|
-
if (
|
376
|
+
uint8_t *keyblock = OPENSSL_malloc(key_block_len);
|
377
|
+
if (keyblock == NULL) {
|
427
378
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
428
|
-
|
379
|
+
return 0;
|
429
380
|
}
|
430
381
|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
if (!tls1_generate_key_block(s, p, key_block_len)) {
|
435
|
-
goto err;
|
382
|
+
if (!SSL_generate_key_block(ssl, keyblock, key_block_len)) {
|
383
|
+
OPENSSL_free(keyblock);
|
384
|
+
return 0;
|
436
385
|
}
|
437
386
|
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
return
|
442
|
-
|
443
|
-
cipher_unavailable_err:
|
444
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_CIPHER_OR_HASH_UNAVAILABLE);
|
445
|
-
return 0;
|
387
|
+
assert(key_block_len < 256);
|
388
|
+
ssl->s3->tmp.key_block_length = (uint8_t)key_block_len;
|
389
|
+
ssl->s3->tmp.key_block = keyblock;
|
390
|
+
return 1;
|
446
391
|
}
|
447
392
|
|
448
|
-
int tls1_cert_verify_mac(SSL *
|
393
|
+
static int tls1_cert_verify_mac(SSL *ssl, int md_nid, uint8_t *out) {
|
449
394
|
const EVP_MD_CTX *ctx_template;
|
450
395
|
if (md_nid == NID_md5) {
|
451
|
-
ctx_template = &
|
452
|
-
} else if (md_nid == EVP_MD_CTX_type(&
|
453
|
-
ctx_template = &
|
396
|
+
ctx_template = &ssl->s3->handshake_md5;
|
397
|
+
} else if (md_nid == EVP_MD_CTX_type(&ssl->s3->handshake_hash)) {
|
398
|
+
ctx_template = &ssl->s3->handshake_hash;
|
454
399
|
} else {
|
455
400
|
OPENSSL_PUT_ERROR(SSL, SSL_R_NO_REQUIRED_DIGEST);
|
456
401
|
return 0;
|
@@ -498,15 +443,15 @@ err:
|
|
498
443
|
* written or -1 in the event of an error. This function works on a copy of the
|
499
444
|
* underlying digests so can be called multiple times and prior to the final
|
500
445
|
* update etc. */
|
501
|
-
int tls1_handshake_digest(SSL *
|
446
|
+
int tls1_handshake_digest(SSL *ssl, uint8_t *out, size_t out_len) {
|
502
447
|
size_t md5_len = 0;
|
503
|
-
if (EVP_MD_CTX_md(&
|
504
|
-
!append_digest(&
|
448
|
+
if (EVP_MD_CTX_md(&ssl->s3->handshake_md5) != NULL &&
|
449
|
+
!append_digest(&ssl->s3->handshake_md5, out, &md5_len, out_len)) {
|
505
450
|
return -1;
|
506
451
|
}
|
507
452
|
|
508
453
|
size_t len;
|
509
|
-
if (!append_digest(&
|
454
|
+
if (!append_digest(&ssl->s3->handshake_hash, out + md5_len, &len,
|
510
455
|
out_len - md5_len)) {
|
511
456
|
return -1;
|
512
457
|
}
|
@@ -514,55 +459,58 @@ int tls1_handshake_digest(SSL *s, uint8_t *out, size_t out_len) {
|
|
514
459
|
return (int)(md5_len + len);
|
515
460
|
}
|
516
461
|
|
517
|
-
int tls1_final_finish_mac(SSL *
|
518
|
-
uint8_t buf[2 * EVP_MAX_MD_SIZE];
|
519
|
-
int err = 0;
|
520
|
-
int digests_len;
|
521
|
-
|
462
|
+
static int tls1_final_finish_mac(SSL *ssl, int from_server, uint8_t *out) {
|
522
463
|
/* At this point, the handshake should have released the handshake buffer on
|
523
464
|
* its own. */
|
524
|
-
assert(
|
465
|
+
assert(ssl->s3->handshake_buffer == NULL);
|
525
466
|
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
467
|
+
const char *label = TLS_MD_CLIENT_FINISH_CONST;
|
468
|
+
size_t label_len = TLS_MD_SERVER_FINISH_CONST_SIZE;
|
469
|
+
if (from_server) {
|
470
|
+
label = TLS_MD_SERVER_FINISH_CONST;
|
471
|
+
label_len = TLS_MD_SERVER_FINISH_CONST_SIZE;
|
530
472
|
}
|
531
473
|
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
474
|
+
uint8_t buf[EVP_MAX_MD_SIZE];
|
475
|
+
int digests_len = tls1_handshake_digest(ssl, buf, sizeof(buf));
|
476
|
+
if (digests_len < 0) {
|
477
|
+
return 0;
|
536
478
|
}
|
537
479
|
|
538
|
-
|
480
|
+
static const size_t kFinishedLen = 12;
|
481
|
+
if (!ssl->s3->enc_method->prf(ssl, out, kFinishedLen,
|
482
|
+
ssl->session->master_key,
|
483
|
+
ssl->session->master_key_length, label,
|
484
|
+
label_len, buf, digests_len, NULL, 0)) {
|
539
485
|
return 0;
|
540
|
-
} else {
|
541
|
-
return 12;
|
542
486
|
}
|
487
|
+
|
488
|
+
return (int)kFinishedLen;
|
543
489
|
}
|
544
490
|
|
545
|
-
int tls1_generate_master_secret(SSL *
|
491
|
+
int tls1_generate_master_secret(SSL *ssl, uint8_t *out,
|
492
|
+
const uint8_t *premaster,
|
546
493
|
size_t premaster_len) {
|
547
|
-
if (
|
548
|
-
uint8_t digests[
|
549
|
-
int digests_len = tls1_handshake_digest(
|
494
|
+
if (ssl->s3->tmp.extended_master_secret) {
|
495
|
+
uint8_t digests[EVP_MAX_MD_SIZE];
|
496
|
+
int digests_len = tls1_handshake_digest(ssl, digests, sizeof(digests));
|
550
497
|
if (digests_len == -1) {
|
551
498
|
return 0;
|
552
499
|
}
|
553
500
|
|
554
|
-
if (!
|
555
|
-
|
556
|
-
|
557
|
-
|
501
|
+
if (!ssl->s3->enc_method->prf(ssl, out, SSL3_MASTER_SECRET_SIZE, premaster,
|
502
|
+
premaster_len,
|
503
|
+
TLS_MD_EXTENDED_MASTER_SECRET_CONST,
|
504
|
+
TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE,
|
505
|
+
digests, digests_len, NULL, 0)) {
|
558
506
|
return 0;
|
559
507
|
}
|
560
508
|
} else {
|
561
|
-
if (!
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
509
|
+
if (!ssl->s3->enc_method->prf(ssl, out, SSL3_MASTER_SECRET_SIZE, premaster,
|
510
|
+
premaster_len, TLS_MD_MASTER_SECRET_CONST,
|
511
|
+
TLS_MD_MASTER_SECRET_CONST_SIZE,
|
512
|
+
ssl->s3->client_random, SSL3_RANDOM_SIZE,
|
513
|
+
ssl->s3->server_random, SSL3_RANDOM_SIZE)) {
|
566
514
|
return 0;
|
567
515
|
}
|
568
516
|
}
|
@@ -570,12 +518,11 @@ int tls1_generate_master_secret(SSL *s, uint8_t *out, const uint8_t *premaster,
|
|
570
518
|
return SSL3_MASTER_SECRET_SIZE;
|
571
519
|
}
|
572
520
|
|
573
|
-
int
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
if (!
|
578
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
|
521
|
+
int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len,
|
522
|
+
const char *label, size_t label_len,
|
523
|
+
const uint8_t *context, size_t context_len,
|
524
|
+
int use_context) {
|
525
|
+
if (!ssl->s3->have_version || ssl->version == SSL3_VERSION) {
|
579
526
|
return 0;
|
580
527
|
}
|
581
528
|
|
@@ -593,116 +540,24 @@ int tls1_export_keying_material(SSL *s, uint8_t *out, size_t out_len,
|
|
593
540
|
return 0;
|
594
541
|
}
|
595
542
|
|
596
|
-
memcpy(seed,
|
597
|
-
memcpy(seed + SSL3_RANDOM_SIZE,
|
543
|
+
memcpy(seed, ssl->s3->client_random, SSL3_RANDOM_SIZE);
|
544
|
+
memcpy(seed + SSL3_RANDOM_SIZE, ssl->s3->server_random, SSL3_RANDOM_SIZE);
|
598
545
|
if (use_context) {
|
599
546
|
seed[2 * SSL3_RANDOM_SIZE] = (uint8_t)(context_len >> 8);
|
600
547
|
seed[2 * SSL3_RANDOM_SIZE + 1] = (uint8_t)context_len;
|
601
548
|
memcpy(seed + 2 * SSL3_RANDOM_SIZE + 2, context, context_len);
|
602
549
|
}
|
603
550
|
|
604
|
-
int ret =
|
605
|
-
|
606
|
-
|
551
|
+
int ret =
|
552
|
+
ssl->s3->enc_method->prf(ssl, out, out_len, ssl->session->master_key,
|
553
|
+
ssl->session->master_key_length, label,
|
554
|
+
label_len, seed, seed_len, NULL, 0);
|
607
555
|
OPENSSL_free(seed);
|
608
556
|
return ret;
|
609
557
|
}
|
610
558
|
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
case SSL_AD_UNEXPECTED_MESSAGE:
|
617
|
-
return SSL3_AD_UNEXPECTED_MESSAGE;
|
618
|
-
|
619
|
-
case SSL_AD_BAD_RECORD_MAC:
|
620
|
-
return SSL3_AD_BAD_RECORD_MAC;
|
621
|
-
|
622
|
-
case SSL_AD_DECRYPTION_FAILED:
|
623
|
-
return TLS1_AD_DECRYPTION_FAILED;
|
624
|
-
|
625
|
-
case SSL_AD_RECORD_OVERFLOW:
|
626
|
-
return TLS1_AD_RECORD_OVERFLOW;
|
627
|
-
|
628
|
-
case SSL_AD_DECOMPRESSION_FAILURE:
|
629
|
-
return SSL3_AD_DECOMPRESSION_FAILURE;
|
630
|
-
|
631
|
-
case SSL_AD_HANDSHAKE_FAILURE:
|
632
|
-
return SSL3_AD_HANDSHAKE_FAILURE;
|
633
|
-
|
634
|
-
case SSL_AD_NO_CERTIFICATE:
|
635
|
-
return -1;
|
636
|
-
|
637
|
-
case SSL_AD_BAD_CERTIFICATE:
|
638
|
-
return SSL3_AD_BAD_CERTIFICATE;
|
639
|
-
|
640
|
-
case SSL_AD_UNSUPPORTED_CERTIFICATE:
|
641
|
-
return SSL3_AD_UNSUPPORTED_CERTIFICATE;
|
642
|
-
|
643
|
-
case SSL_AD_CERTIFICATE_REVOKED:
|
644
|
-
return SSL3_AD_CERTIFICATE_REVOKED;
|
645
|
-
|
646
|
-
case SSL_AD_CERTIFICATE_EXPIRED:
|
647
|
-
return SSL3_AD_CERTIFICATE_EXPIRED;
|
648
|
-
|
649
|
-
case SSL_AD_CERTIFICATE_UNKNOWN:
|
650
|
-
return SSL3_AD_CERTIFICATE_UNKNOWN;
|
651
|
-
|
652
|
-
case SSL_AD_ILLEGAL_PARAMETER:
|
653
|
-
return SSL3_AD_ILLEGAL_PARAMETER;
|
654
|
-
|
655
|
-
case SSL_AD_UNKNOWN_CA:
|
656
|
-
return TLS1_AD_UNKNOWN_CA;
|
657
|
-
|
658
|
-
case SSL_AD_ACCESS_DENIED:
|
659
|
-
return TLS1_AD_ACCESS_DENIED;
|
660
|
-
|
661
|
-
case SSL_AD_DECODE_ERROR:
|
662
|
-
return TLS1_AD_DECODE_ERROR;
|
663
|
-
|
664
|
-
case SSL_AD_DECRYPT_ERROR:
|
665
|
-
return TLS1_AD_DECRYPT_ERROR;
|
666
|
-
case SSL_AD_EXPORT_RESTRICTION:
|
667
|
-
return TLS1_AD_EXPORT_RESTRICTION;
|
668
|
-
|
669
|
-
case SSL_AD_PROTOCOL_VERSION:
|
670
|
-
return TLS1_AD_PROTOCOL_VERSION;
|
671
|
-
|
672
|
-
case SSL_AD_INSUFFICIENT_SECURITY:
|
673
|
-
return TLS1_AD_INSUFFICIENT_SECURITY;
|
674
|
-
|
675
|
-
case SSL_AD_INTERNAL_ERROR:
|
676
|
-
return TLS1_AD_INTERNAL_ERROR;
|
677
|
-
|
678
|
-
case SSL_AD_USER_CANCELLED:
|
679
|
-
return TLS1_AD_USER_CANCELLED;
|
680
|
-
|
681
|
-
case SSL_AD_NO_RENEGOTIATION:
|
682
|
-
return TLS1_AD_NO_RENEGOTIATION;
|
683
|
-
|
684
|
-
case SSL_AD_UNSUPPORTED_EXTENSION:
|
685
|
-
return TLS1_AD_UNSUPPORTED_EXTENSION;
|
686
|
-
|
687
|
-
case SSL_AD_CERTIFICATE_UNOBTAINABLE:
|
688
|
-
return TLS1_AD_CERTIFICATE_UNOBTAINABLE;
|
689
|
-
|
690
|
-
case SSL_AD_UNRECOGNIZED_NAME:
|
691
|
-
return TLS1_AD_UNRECOGNIZED_NAME;
|
692
|
-
|
693
|
-
case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
|
694
|
-
return TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE;
|
695
|
-
|
696
|
-
case SSL_AD_BAD_CERTIFICATE_HASH_VALUE:
|
697
|
-
return TLS1_AD_BAD_CERTIFICATE_HASH_VALUE;
|
698
|
-
|
699
|
-
case SSL_AD_UNKNOWN_PSK_IDENTITY:
|
700
|
-
return TLS1_AD_UNKNOWN_PSK_IDENTITY;
|
701
|
-
|
702
|
-
case SSL_AD_INAPPROPRIATE_FALLBACK:
|
703
|
-
return SSL3_AD_INAPPROPRIATE_FALLBACK;
|
704
|
-
|
705
|
-
default:
|
706
|
-
return -1;
|
707
|
-
}
|
708
|
-
}
|
559
|
+
const SSL3_ENC_METHOD TLSv1_enc_data = {
|
560
|
+
tls1_prf,
|
561
|
+
tls1_final_finish_mac,
|
562
|
+
tls1_cert_verify_mac,
|
563
|
+
};
|