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
@@ -127,50 +127,8 @@
|
|
127
127
|
#include "internal.h"
|
128
128
|
|
129
129
|
|
130
|
-
static int ssl_check_clienthello_tlsext(SSL *
|
131
|
-
static int ssl_check_serverhello_tlsext(SSL *
|
132
|
-
|
133
|
-
const SSL3_ENC_METHOD TLSv1_enc_data = {
|
134
|
-
tls1_prf,
|
135
|
-
tls1_setup_key_block,
|
136
|
-
tls1_generate_master_secret,
|
137
|
-
tls1_change_cipher_state,
|
138
|
-
tls1_final_finish_mac,
|
139
|
-
tls1_cert_verify_mac,
|
140
|
-
TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
|
141
|
-
TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
|
142
|
-
tls1_alert_code,
|
143
|
-
tls1_export_keying_material,
|
144
|
-
0,
|
145
|
-
};
|
146
|
-
|
147
|
-
const SSL3_ENC_METHOD TLSv1_1_enc_data = {
|
148
|
-
tls1_prf,
|
149
|
-
tls1_setup_key_block,
|
150
|
-
tls1_generate_master_secret,
|
151
|
-
tls1_change_cipher_state,
|
152
|
-
tls1_final_finish_mac,
|
153
|
-
tls1_cert_verify_mac,
|
154
|
-
TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
|
155
|
-
TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
|
156
|
-
tls1_alert_code,
|
157
|
-
tls1_export_keying_material,
|
158
|
-
SSL_ENC_FLAG_EXPLICIT_IV,
|
159
|
-
};
|
160
|
-
|
161
|
-
const SSL3_ENC_METHOD TLSv1_2_enc_data = {
|
162
|
-
tls1_prf,
|
163
|
-
tls1_setup_key_block,
|
164
|
-
tls1_generate_master_secret,
|
165
|
-
tls1_change_cipher_state,
|
166
|
-
tls1_final_finish_mac,
|
167
|
-
tls1_cert_verify_mac,
|
168
|
-
TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
|
169
|
-
TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
|
170
|
-
tls1_alert_code,
|
171
|
-
tls1_export_keying_material,
|
172
|
-
SSL_ENC_FLAG_EXPLICIT_IV|SSL_ENC_FLAG_SIGALGS|SSL_ENC_FLAG_SHA256_PRF,
|
173
|
-
};
|
130
|
+
static int ssl_check_clienthello_tlsext(SSL *ssl);
|
131
|
+
static int ssl_check_serverhello_tlsext(SSL *ssl);
|
174
132
|
|
175
133
|
static int compare_uint16_t(const void *p1, const void *p2) {
|
176
134
|
uint16_t u1 = *((const uint16_t *)p1);
|
@@ -211,8 +169,7 @@ static int tls1_check_duplicate_extensions(const CBS *cbs) {
|
|
211
169
|
return 1;
|
212
170
|
}
|
213
171
|
|
214
|
-
extension_types =
|
215
|
-
(uint16_t *)OPENSSL_malloc(sizeof(uint16_t) * num_extensions);
|
172
|
+
extension_types = OPENSSL_malloc(sizeof(uint16_t) * num_extensions);
|
216
173
|
if (extension_types == NULL) {
|
217
174
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
218
175
|
goto done;
|
@@ -335,126 +292,62 @@ int SSL_early_callback_ctx_extension_get(
|
|
335
292
|
return 0;
|
336
293
|
}
|
337
294
|
|
338
|
-
struct tls_curve {
|
339
|
-
uint16_t curve_id;
|
340
|
-
int nid;
|
341
|
-
const char curve_name[8];
|
342
|
-
};
|
343
|
-
|
344
|
-
/* ECC curves from RFC4492. */
|
345
|
-
static const struct tls_curve tls_curves[] = {
|
346
|
-
{21, NID_secp224r1, "P-224"},
|
347
|
-
{23, NID_X9_62_prime256v1, "P-256"},
|
348
|
-
{24, NID_secp384r1, "P-384"},
|
349
|
-
{25, NID_secp521r1, "P-521"},
|
350
|
-
};
|
351
|
-
|
352
295
|
static const uint16_t eccurves_default[] = {
|
353
|
-
|
354
|
-
|
296
|
+
SSL_CURVE_X25519,
|
297
|
+
SSL_CURVE_SECP256R1,
|
298
|
+
SSL_CURVE_SECP384R1,
|
355
299
|
#if defined(BORINGSSL_ANDROID_SYSTEM)
|
356
|
-
|
300
|
+
SSL_CURVE_SECP521R1,
|
357
301
|
#endif
|
358
302
|
};
|
359
303
|
|
360
|
-
int tls1_ec_curve_id2nid(uint16_t curve_id) {
|
361
|
-
size_t i;
|
362
|
-
for (i = 0; i < sizeof(tls_curves) / sizeof(tls_curves[0]); i++) {
|
363
|
-
if (curve_id == tls_curves[i].curve_id) {
|
364
|
-
return tls_curves[i].nid;
|
365
|
-
}
|
366
|
-
}
|
367
|
-
return NID_undef;
|
368
|
-
}
|
369
|
-
|
370
|
-
int tls1_ec_nid2curve_id(uint16_t *out_curve_id, int nid) {
|
371
|
-
size_t i;
|
372
|
-
for (i = 0; i < sizeof(tls_curves) / sizeof(tls_curves[0]); i++) {
|
373
|
-
if (nid == tls_curves[i].nid) {
|
374
|
-
*out_curve_id = tls_curves[i].curve_id;
|
375
|
-
return 1;
|
376
|
-
}
|
377
|
-
}
|
378
|
-
return 0;
|
379
|
-
}
|
380
|
-
|
381
|
-
const char* tls1_ec_curve_id2name(uint16_t curve_id) {
|
382
|
-
size_t i;
|
383
|
-
for (i = 0; i < sizeof(tls_curves) / sizeof(tls_curves[0]); i++) {
|
384
|
-
if (curve_id == tls_curves[i].curve_id) {
|
385
|
-
return tls_curves[i].curve_name;
|
386
|
-
}
|
387
|
-
}
|
388
|
-
return NULL;
|
389
|
-
}
|
390
|
-
|
391
304
|
/* tls1_get_curvelist sets |*out_curve_ids| and |*out_curve_ids_len| to the
|
392
305
|
* list of allowed curve IDs. If |get_peer_curves| is non-zero, return the
|
393
306
|
* peer's curve list. Otherwise, return the preferred list. */
|
394
|
-
static void tls1_get_curvelist(SSL *
|
307
|
+
static void tls1_get_curvelist(SSL *ssl, int get_peer_curves,
|
395
308
|
const uint16_t **out_curve_ids,
|
396
309
|
size_t *out_curve_ids_len) {
|
397
310
|
if (get_peer_curves) {
|
398
311
|
/* Only clients send a curve list, so this function is only called
|
399
312
|
* on the server. */
|
400
|
-
assert(
|
401
|
-
*out_curve_ids =
|
402
|
-
*out_curve_ids_len =
|
313
|
+
assert(ssl->server);
|
314
|
+
*out_curve_ids = ssl->s3->tmp.peer_ellipticcurvelist;
|
315
|
+
*out_curve_ids_len = ssl->s3->tmp.peer_ellipticcurvelist_length;
|
403
316
|
return;
|
404
317
|
}
|
405
318
|
|
406
|
-
*out_curve_ids =
|
407
|
-
*out_curve_ids_len =
|
319
|
+
*out_curve_ids = ssl->tlsext_ellipticcurvelist;
|
320
|
+
*out_curve_ids_len = ssl->tlsext_ellipticcurvelist_length;
|
408
321
|
if (!*out_curve_ids) {
|
409
322
|
*out_curve_ids = eccurves_default;
|
410
323
|
*out_curve_ids_len = sizeof(eccurves_default) / sizeof(eccurves_default[0]);
|
411
324
|
}
|
412
325
|
}
|
413
326
|
|
414
|
-
int
|
415
|
-
uint8_t curve_type;
|
416
|
-
uint16_t curve_id;
|
417
|
-
const uint16_t *curves;
|
418
|
-
size_t curves_len, i;
|
419
|
-
|
420
|
-
/* Only support named curves. */
|
421
|
-
if (!CBS_get_u8(cbs, &curve_type) ||
|
422
|
-
curve_type != NAMED_CURVE_TYPE ||
|
423
|
-
!CBS_get_u16(cbs, &curve_id)) {
|
424
|
-
return 0;
|
425
|
-
}
|
426
|
-
|
427
|
-
tls1_get_curvelist(s, 0, &curves, &curves_len);
|
428
|
-
for (i = 0; i < curves_len; i++) {
|
429
|
-
if (curve_id == curves[i]) {
|
430
|
-
*out_curve_id = curve_id;
|
431
|
-
return 1;
|
432
|
-
}
|
433
|
-
}
|
434
|
-
|
435
|
-
return 0;
|
436
|
-
}
|
437
|
-
|
438
|
-
int tls1_get_shared_curve(SSL *s) {
|
327
|
+
int tls1_get_shared_curve(SSL *ssl, uint16_t *out_curve_id) {
|
439
328
|
const uint16_t *curves, *peer_curves, *pref, *supp;
|
440
329
|
size_t curves_len, peer_curves_len, pref_len, supp_len, i, j;
|
441
330
|
|
442
331
|
/* Can't do anything on client side */
|
443
|
-
if (
|
444
|
-
return
|
332
|
+
if (ssl->server == 0) {
|
333
|
+
return 0;
|
445
334
|
}
|
446
335
|
|
447
|
-
tls1_get_curvelist(
|
448
|
-
tls1_get_curvelist(
|
336
|
+
tls1_get_curvelist(ssl, 0 /* local curves */, &curves, &curves_len);
|
337
|
+
tls1_get_curvelist(ssl, 1 /* peer curves */, &peer_curves, &peer_curves_len);
|
449
338
|
|
450
339
|
if (peer_curves_len == 0) {
|
451
340
|
/* Clients are not required to send a supported_curves extension. In this
|
452
341
|
* case, the server is free to pick any curve it likes. See RFC 4492,
|
453
|
-
* section 4, paragraph 3.
|
454
|
-
|
342
|
+
* section 4, paragraph 3.
|
343
|
+
*
|
344
|
+
* However, in the interests of compatibility, we will skip ECDH if the
|
345
|
+
* client didn't send an extension because we can't be sure that they'll
|
346
|
+
* support our favoured curve. */
|
347
|
+
return 0;
|
455
348
|
}
|
456
349
|
|
457
|
-
if (
|
350
|
+
if (ssl->options & SSL_OP_CIPHER_SERVER_PREFERENCE) {
|
458
351
|
pref = curves;
|
459
352
|
pref_len = curves_len;
|
460
353
|
supp = peer_curves;
|
@@ -469,12 +362,13 @@ int tls1_get_shared_curve(SSL *s) {
|
|
469
362
|
for (i = 0; i < pref_len; i++) {
|
470
363
|
for (j = 0; j < supp_len; j++) {
|
471
364
|
if (pref[i] == supp[j]) {
|
472
|
-
|
365
|
+
*out_curve_id = pref[i];
|
366
|
+
return 1;
|
473
367
|
}
|
474
368
|
}
|
475
369
|
}
|
476
370
|
|
477
|
-
return
|
371
|
+
return 0;
|
478
372
|
}
|
479
373
|
|
480
374
|
int tls1_set_curves(uint16_t **out_curve_ids, size_t *out_curve_ids_len,
|
@@ -482,13 +376,13 @@ int tls1_set_curves(uint16_t **out_curve_ids, size_t *out_curve_ids_len,
|
|
482
376
|
uint16_t *curve_ids;
|
483
377
|
size_t i;
|
484
378
|
|
485
|
-
curve_ids =
|
379
|
+
curve_ids = OPENSSL_malloc(ncurves * sizeof(uint16_t));
|
486
380
|
if (curve_ids == NULL) {
|
487
381
|
return 0;
|
488
382
|
}
|
489
383
|
|
490
384
|
for (i = 0; i < ncurves; i++) {
|
491
|
-
if (!
|
385
|
+
if (!ssl_nid_to_curve_id(&curve_ids[i], curves[i])) {
|
492
386
|
OPENSSL_free(curve_ids);
|
493
387
|
return 0;
|
494
388
|
}
|
@@ -521,7 +415,7 @@ static int tls1_curve_params_from_ec_key(uint16_t *out_curve_id,
|
|
521
415
|
|
522
416
|
/* Determine curve ID */
|
523
417
|
nid = EC_GROUP_get_curve_name(grp);
|
524
|
-
if (!
|
418
|
+
if (!ssl_nid_to_curve_id(&id, nid)) {
|
525
419
|
return 0;
|
526
420
|
}
|
527
421
|
|
@@ -545,19 +439,19 @@ static int tls1_curve_params_from_ec_key(uint16_t *out_curve_id,
|
|
545
439
|
/* tls1_check_curve_id returns one if |curve_id| is consistent with both our
|
546
440
|
* and the peer's curve preferences. Note: if called as the client, only our
|
547
441
|
* preferences are checked; the peer (the server) does not send preferences. */
|
548
|
-
|
442
|
+
int tls1_check_curve_id(SSL *ssl, uint16_t curve_id) {
|
549
443
|
const uint16_t *curves;
|
550
444
|
size_t curves_len, i, get_peer_curves;
|
551
445
|
|
552
446
|
/* Check against our list, then the peer's list. */
|
553
447
|
for (get_peer_curves = 0; get_peer_curves <= 1; get_peer_curves++) {
|
554
|
-
if (get_peer_curves && !
|
448
|
+
if (get_peer_curves && !ssl->server) {
|
555
449
|
/* Servers do not present a preference list so, if we are a client, only
|
556
450
|
* check our list. */
|
557
451
|
continue;
|
558
452
|
}
|
559
453
|
|
560
|
-
tls1_get_curvelist(
|
454
|
+
tls1_get_curvelist(ssl, get_peer_curves, &curves, &curves_len);
|
561
455
|
if (get_peer_curves && curves_len == 0) {
|
562
456
|
/* Clients are not required to send a supported_curves extension. In this
|
563
457
|
* case, the server is free to pick any curve it likes. See RFC 4492,
|
@@ -578,7 +472,7 @@ static int tls1_check_curve_id(SSL *s, uint16_t curve_id) {
|
|
578
472
|
return 1;
|
579
473
|
}
|
580
474
|
|
581
|
-
int tls1_check_ec_cert(SSL *
|
475
|
+
int tls1_check_ec_cert(SSL *ssl, X509 *x) {
|
582
476
|
int ret = 0;
|
583
477
|
EVP_PKEY *pkey = X509_get_pubkey(x);
|
584
478
|
uint16_t curve_id;
|
@@ -590,7 +484,7 @@ int tls1_check_ec_cert(SSL *s, X509 *x) {
|
|
590
484
|
EC_KEY *ec_key = EVP_PKEY_get0_EC_KEY(pkey);
|
591
485
|
if (ec_key == NULL ||
|
592
486
|
!tls1_curve_params_from_ec_key(&curve_id, &comp_id, ec_key) ||
|
593
|
-
!tls1_check_curve_id(
|
487
|
+
!tls1_check_curve_id(ssl, curve_id) ||
|
594
488
|
comp_id != TLSEXT_ECPOINTFORMAT_uncompressed) {
|
595
489
|
goto done;
|
596
490
|
}
|
@@ -615,11 +509,10 @@ static const uint8_t tls12_sigalgs[] = {
|
|
615
509
|
tlsext_sigalg(TLSEXT_hash_sha512)
|
616
510
|
tlsext_sigalg(TLSEXT_hash_sha384)
|
617
511
|
tlsext_sigalg(TLSEXT_hash_sha256)
|
618
|
-
tlsext_sigalg(TLSEXT_hash_sha224)
|
619
512
|
tlsext_sigalg(TLSEXT_hash_sha1)
|
620
513
|
};
|
621
514
|
|
622
|
-
size_t tls12_get_psigalgs(SSL *
|
515
|
+
size_t tls12_get_psigalgs(SSL *ssl, const uint8_t **psigs) {
|
623
516
|
*psigs = tls12_sigalgs;
|
624
517
|
return sizeof(tls12_sigalgs);
|
625
518
|
}
|
@@ -672,8 +565,8 @@ int tls12_check_peer_sigalg(SSL *ssl, const EVP_MD **out_md, int *out_alert,
|
|
672
565
|
* supported or doesn't appear in supported signature algorithms. Unlike
|
673
566
|
* ssl_cipher_get_disabled this applies to a specific session and not global
|
674
567
|
* settings. */
|
675
|
-
void ssl_set_client_disabled(SSL *
|
676
|
-
CERT *c =
|
568
|
+
void ssl_set_client_disabled(SSL *ssl) {
|
569
|
+
CERT *c = ssl->cert;
|
677
570
|
const uint8_t *sigalgs;
|
678
571
|
size_t i, sigalgslen;
|
679
572
|
int have_rsa = 0, have_ecdsa = 0;
|
@@ -682,7 +575,7 @@ void ssl_set_client_disabled(SSL *s) {
|
|
682
575
|
|
683
576
|
/* Now go through all signature algorithms seeing if we support any for RSA,
|
684
577
|
* DSA, ECDSA. Do this for all versions not just TLS 1.2. */
|
685
|
-
sigalgslen = tls12_get_psigalgs(
|
578
|
+
sigalgslen = tls12_get_psigalgs(ssl, &sigalgs);
|
686
579
|
for (i = 0; i < sigalgslen; i += 2, sigalgs += 2) {
|
687
580
|
switch (sigalgs[1]) {
|
688
581
|
case TLSEXT_signature_rsa:
|
@@ -704,7 +597,7 @@ void ssl_set_client_disabled(SSL *s) {
|
|
704
597
|
}
|
705
598
|
|
706
599
|
/* with PSK there must be client callback set */
|
707
|
-
if (!
|
600
|
+
if (!ssl->psk_client_callback) {
|
708
601
|
c->mask_a |= SSL_aPSK;
|
709
602
|
c->mask_k |= SSL_kPSK;
|
710
603
|
}
|
@@ -765,7 +658,8 @@ static int ext_sni_add_clienthello(SSL *ssl, CBB *out) {
|
|
765
658
|
return 1;
|
766
659
|
}
|
767
660
|
|
768
|
-
static int ext_sni_parse_serverhello(SSL *ssl, uint8_t *out_alert,
|
661
|
+
static int ext_sni_parse_serverhello(SSL *ssl, uint8_t *out_alert,
|
662
|
+
CBS *contents) {
|
769
663
|
if (contents == NULL) {
|
770
664
|
return 1;
|
771
665
|
}
|
@@ -788,7 +682,8 @@ static int ext_sni_parse_serverhello(SSL *ssl, uint8_t *out_alert, CBS *contents
|
|
788
682
|
return 1;
|
789
683
|
}
|
790
684
|
|
791
|
-
static int ext_sni_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
685
|
+
static int ext_sni_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
686
|
+
CBS *contents) {
|
792
687
|
if (contents == NULL) {
|
793
688
|
return 1;
|
794
689
|
}
|
@@ -1005,7 +900,8 @@ static int ext_ri_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
|
1005
900
|
}
|
1006
901
|
|
1007
902
|
/* Check that the extension matches */
|
1008
|
-
if (!CBS_mem_equal(&renegotiated_connection,
|
903
|
+
if (!CBS_mem_equal(&renegotiated_connection,
|
904
|
+
ssl->s3->previous_client_finished,
|
1009
905
|
ssl->s3->previous_client_finished_len)) {
|
1010
906
|
OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH);
|
1011
907
|
*out_alert = SSL_AD_HANDSHAKE_FAILURE;
|
@@ -1036,7 +932,7 @@ static int ext_ri_add_serverhello(SSL *ssl, CBB *out) {
|
|
1036
932
|
|
1037
933
|
/* Extended Master Secret.
|
1038
934
|
*
|
1039
|
-
* https://tools.ietf.org/html/
|
935
|
+
* https://tools.ietf.org/html/rfc7627 */
|
1040
936
|
|
1041
937
|
static void ext_ems_init(SSL *ssl) {
|
1042
938
|
ssl->s3->tmp.extended_master_secret = 0;
|
@@ -1069,7 +965,8 @@ static int ext_ems_parse_serverhello(SSL *ssl, uint8_t *out_alert,
|
|
1069
965
|
return 1;
|
1070
966
|
}
|
1071
967
|
|
1072
|
-
static int ext_ems_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
968
|
+
static int ext_ems_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
969
|
+
CBS *contents) {
|
1073
970
|
if (ssl->version == SSL3_VERSION || contents == NULL) {
|
1074
971
|
return 1;
|
1075
972
|
}
|
@@ -1151,7 +1048,8 @@ static int ext_ticket_parse_serverhello(SSL *ssl, uint8_t *out_alert,
|
|
1151
1048
|
return 1;
|
1152
1049
|
}
|
1153
1050
|
|
1154
|
-
static int ext_ticket_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
1051
|
+
static int ext_ticket_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
1052
|
+
CBS *contents) {
|
1155
1053
|
/* This function isn't used because the ticket extension from the client is
|
1156
1054
|
* handled in ssl_session.c. */
|
1157
1055
|
return 1;
|
@@ -1244,6 +1142,7 @@ static int ext_sigalgs_add_serverhello(SSL *ssl, CBB *out) {
|
|
1244
1142
|
|
1245
1143
|
static void ext_ocsp_init(SSL *ssl) {
|
1246
1144
|
ssl->s3->tmp.certificate_status_expected = 0;
|
1145
|
+
ssl->tlsext_status_type = -1;
|
1247
1146
|
}
|
1248
1147
|
|
1249
1148
|
static int ext_ocsp_add_clienthello(SSL *ssl, CBB *out) {
|
@@ -1261,6 +1160,7 @@ static int ext_ocsp_add_clienthello(SSL *ssl, CBB *out) {
|
|
1261
1160
|
return 0;
|
1262
1161
|
}
|
1263
1162
|
|
1163
|
+
ssl->tlsext_status_type = TLSEXT_STATUSTYPE_ocsp;
|
1264
1164
|
return 1;
|
1265
1165
|
}
|
1266
1166
|
|
@@ -1376,14 +1276,14 @@ static int ext_npn_parse_serverhello(SSL *ssl, uint8_t *out_alert,
|
|
1376
1276
|
return 0;
|
1377
1277
|
}
|
1378
1278
|
|
1379
|
-
OPENSSL_free(ssl->next_proto_negotiated);
|
1380
|
-
ssl->next_proto_negotiated = BUF_memdup(selected, selected_len);
|
1381
|
-
if (ssl->next_proto_negotiated == NULL) {
|
1279
|
+
OPENSSL_free(ssl->s3->next_proto_negotiated);
|
1280
|
+
ssl->s3->next_proto_negotiated = BUF_memdup(selected, selected_len);
|
1281
|
+
if (ssl->s3->next_proto_negotiated == NULL) {
|
1382
1282
|
*out_alert = SSL_AD_INTERNAL_ERROR;
|
1383
1283
|
return 0;
|
1384
1284
|
}
|
1385
1285
|
|
1386
|
-
ssl->next_proto_negotiated_len = selected_len;
|
1286
|
+
ssl->s3->next_proto_negotiated_len = selected_len;
|
1387
1287
|
ssl->s3->next_proto_neg_seen = 1;
|
1388
1288
|
|
1389
1289
|
return 1;
|
@@ -1629,7 +1529,8 @@ static int ext_alpn_add_serverhello(SSL *ssl, CBB *out) {
|
|
1629
1529
|
!CBB_add_u16_length_prefixed(out, &contents) ||
|
1630
1530
|
!CBB_add_u16_length_prefixed(&contents, &proto_list) ||
|
1631
1531
|
!CBB_add_u8_length_prefixed(&proto_list, &proto) ||
|
1632
|
-
!CBB_add_bytes(&proto, ssl->s3->alpn_selected,
|
1532
|
+
!CBB_add_bytes(&proto, ssl->s3->alpn_selected,
|
1533
|
+
ssl->s3->alpn_selected_len) ||
|
1633
1534
|
!CBB_flush(out)) {
|
1634
1535
|
return 0;
|
1635
1536
|
}
|
@@ -2003,9 +1904,7 @@ static int ext_ec_curves_parse_clienthello(SSL *ssl, uint8_t *out_alert,
|
|
2003
1904
|
return 0;
|
2004
1905
|
}
|
2005
1906
|
|
2006
|
-
ssl->s3->tmp.peer_ellipticcurvelist =
|
2007
|
-
(uint16_t *)OPENSSL_malloc(CBS_len(&elliptic_curve_list));
|
2008
|
-
|
1907
|
+
ssl->s3->tmp.peer_ellipticcurvelist = OPENSSL_malloc(CBS_len(&elliptic_curve_list));
|
2009
1908
|
if (ssl->s3->tmp.peer_ellipticcurvelist == NULL) {
|
2010
1909
|
*out_alert = SSL_AD_INTERNAL_ERROR;
|
2011
1910
|
return 0;
|
@@ -2293,16 +2192,16 @@ err:
|
|
2293
2192
|
return 0;
|
2294
2193
|
}
|
2295
2194
|
|
2296
|
-
static int ssl_scan_clienthello_tlsext(SSL *
|
2195
|
+
static int ssl_scan_clienthello_tlsext(SSL *ssl, CBS *cbs, int *out_alert) {
|
2297
2196
|
size_t i;
|
2298
2197
|
for (i = 0; i < kNumExtensions; i++) {
|
2299
2198
|
if (kExtensions[i].init != NULL) {
|
2300
|
-
kExtensions[i].init(
|
2199
|
+
kExtensions[i].init(ssl);
|
2301
2200
|
}
|
2302
2201
|
}
|
2303
2202
|
|
2304
|
-
|
2305
|
-
|
2203
|
+
ssl->s3->tmp.extensions.received = 0;
|
2204
|
+
ssl->s3->tmp.custom_extensions.received = 0;
|
2306
2205
|
/* The renegotiation extension must always be at index zero because the
|
2307
2206
|
* |received| and |sent| bitsets need to be tweaked when the "extension" is
|
2308
2207
|
* sent as an SCSV. */
|
@@ -2331,7 +2230,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2331
2230
|
|
2332
2231
|
/* RFC 5746 made the existence of extensions in SSL 3.0 somewhat
|
2333
2232
|
* ambiguous. Ignore all but the renegotiation_info extension. */
|
2334
|
-
if (
|
2233
|
+
if (ssl->version == SSL3_VERSION && type != TLSEXT_TYPE_renegotiate) {
|
2335
2234
|
continue;
|
2336
2235
|
}
|
2337
2236
|
|
@@ -2340,16 +2239,16 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2340
2239
|
tls_extension_find(&ext_index, type);
|
2341
2240
|
|
2342
2241
|
if (ext == NULL) {
|
2343
|
-
if (!custom_ext_parse_clienthello(
|
2242
|
+
if (!custom_ext_parse_clienthello(ssl, out_alert, type, &extension)) {
|
2344
2243
|
OPENSSL_PUT_ERROR(SSL, SSL_R_ERROR_PARSING_EXTENSION);
|
2345
2244
|
return 0;
|
2346
2245
|
}
|
2347
2246
|
continue;
|
2348
2247
|
}
|
2349
2248
|
|
2350
|
-
|
2249
|
+
ssl->s3->tmp.extensions.received |= (1u << ext_index);
|
2351
2250
|
uint8_t alert = SSL_AD_DECODE_ERROR;
|
2352
|
-
if (!ext->parse_clienthello(
|
2251
|
+
if (!ext->parse_clienthello(ssl, &alert, &extension)) {
|
2353
2252
|
*out_alert = alert;
|
2354
2253
|
OPENSSL_PUT_ERROR(SSL, SSL_R_ERROR_PARSING_EXTENSION);
|
2355
2254
|
ERR_add_error_dataf("extension: %u", (unsigned)type);
|
@@ -2359,11 +2258,11 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2359
2258
|
}
|
2360
2259
|
|
2361
2260
|
for (i = 0; i < kNumExtensions; i++) {
|
2362
|
-
if (!(
|
2261
|
+
if (!(ssl->s3->tmp.extensions.received & (1u << i))) {
|
2363
2262
|
/* Extension wasn't observed so call the callback with a NULL
|
2364
2263
|
* parameter. */
|
2365
2264
|
uint8_t alert = SSL_AD_DECODE_ERROR;
|
2366
|
-
if (!kExtensions[i].parse_clienthello(
|
2265
|
+
if (!kExtensions[i].parse_clienthello(ssl, &alert, NULL)) {
|
2367
2266
|
OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
|
2368
2267
|
ERR_add_error_dataf("extension: %u", (unsigned)kExtensions[i].value);
|
2369
2268
|
*out_alert = alert;
|
@@ -2375,14 +2274,14 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2375
2274
|
return 1;
|
2376
2275
|
}
|
2377
2276
|
|
2378
|
-
int ssl_parse_clienthello_tlsext(SSL *
|
2277
|
+
int ssl_parse_clienthello_tlsext(SSL *ssl, CBS *cbs) {
|
2379
2278
|
int alert = -1;
|
2380
|
-
if (ssl_scan_clienthello_tlsext(
|
2381
|
-
ssl3_send_alert(
|
2279
|
+
if (ssl_scan_clienthello_tlsext(ssl, cbs, &alert) <= 0) {
|
2280
|
+
ssl3_send_alert(ssl, SSL3_AL_FATAL, alert);
|
2382
2281
|
return 0;
|
2383
2282
|
}
|
2384
2283
|
|
2385
|
-
if (ssl_check_clienthello_tlsext(
|
2284
|
+
if (ssl_check_clienthello_tlsext(ssl) <= 0) {
|
2386
2285
|
OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_TLSEXT);
|
2387
2286
|
return 0;
|
2388
2287
|
}
|
@@ -2392,7 +2291,7 @@ int ssl_parse_clienthello_tlsext(SSL *s, CBS *cbs) {
|
|
2392
2291
|
|
2393
2292
|
OPENSSL_COMPILE_ASSERT(kNumExtensions <= sizeof(uint32_t) * 8, too_many_bits);
|
2394
2293
|
|
2395
|
-
static int ssl_scan_serverhello_tlsext(SSL *
|
2294
|
+
static int ssl_scan_serverhello_tlsext(SSL *ssl, CBS *cbs, int *out_alert) {
|
2396
2295
|
uint32_t received = 0;
|
2397
2296
|
|
2398
2297
|
if (CBS_len(cbs) != 0) {
|
@@ -2421,13 +2320,13 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2421
2320
|
tls_extension_find(&ext_index, type);
|
2422
2321
|
|
2423
2322
|
if (ext == NULL) {
|
2424
|
-
if (!custom_ext_parse_serverhello(
|
2323
|
+
if (!custom_ext_parse_serverhello(ssl, out_alert, type, &extension)) {
|
2425
2324
|
return 0;
|
2426
2325
|
}
|
2427
2326
|
continue;
|
2428
2327
|
}
|
2429
2328
|
|
2430
|
-
if (!(
|
2329
|
+
if (!(ssl->s3->tmp.extensions.sent & (1u << ext_index))) {
|
2431
2330
|
/* If the extension was never sent then it is illegal. */
|
2432
2331
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_EXTENSION);
|
2433
2332
|
ERR_add_error_dataf("extension :%u", (unsigned)type);
|
@@ -2438,7 +2337,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2438
2337
|
received |= (1u << ext_index);
|
2439
2338
|
|
2440
2339
|
uint8_t alert = SSL_AD_DECODE_ERROR;
|
2441
|
-
if (!ext->parse_serverhello(
|
2340
|
+
if (!ext->parse_serverhello(ssl, &alert, &extension)) {
|
2442
2341
|
OPENSSL_PUT_ERROR(SSL, SSL_R_ERROR_PARSING_EXTENSION);
|
2443
2342
|
ERR_add_error_dataf("extension: %u", (unsigned)type);
|
2444
2343
|
*out_alert = alert;
|
@@ -2453,7 +2352,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2453
2352
|
/* Extension wasn't observed so call the callback with a NULL
|
2454
2353
|
* parameter. */
|
2455
2354
|
uint8_t alert = SSL_AD_DECODE_ERROR;
|
2456
|
-
if (!kExtensions[i].parse_serverhello(
|
2355
|
+
if (!kExtensions[i].parse_serverhello(ssl, &alert, NULL)) {
|
2457
2356
|
OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
|
2458
2357
|
ERR_add_error_dataf("extension: %u", (unsigned)kExtensions[i].value);
|
2459
2358
|
*out_alert = alert;
|
@@ -2465,33 +2364,33 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
|
|
2465
2364
|
return 1;
|
2466
2365
|
}
|
2467
2366
|
|
2468
|
-
static int ssl_check_clienthello_tlsext(SSL *
|
2367
|
+
static int ssl_check_clienthello_tlsext(SSL *ssl) {
|
2469
2368
|
int ret = SSL_TLSEXT_ERR_NOACK;
|
2470
2369
|
int al = SSL_AD_UNRECOGNIZED_NAME;
|
2471
2370
|
|
2472
2371
|
/* The handling of the ECPointFormats extension is done elsewhere, namely in
|
2473
2372
|
* ssl3_choose_cipher in s3_lib.c. */
|
2474
2373
|
|
2475
|
-
if (
|
2476
|
-
ret =
|
2477
|
-
|
2478
|
-
} else if (
|
2479
|
-
|
2480
|
-
ret =
|
2481
|
-
|
2374
|
+
if (ssl->ctx != NULL && ssl->ctx->tlsext_servername_callback != 0) {
|
2375
|
+
ret = ssl->ctx->tlsext_servername_callback(ssl, &al,
|
2376
|
+
ssl->ctx->tlsext_servername_arg);
|
2377
|
+
} else if (ssl->initial_ctx != NULL &&
|
2378
|
+
ssl->initial_ctx->tlsext_servername_callback != 0) {
|
2379
|
+
ret = ssl->initial_ctx->tlsext_servername_callback(
|
2380
|
+
ssl, &al, ssl->initial_ctx->tlsext_servername_arg);
|
2482
2381
|
}
|
2483
2382
|
|
2484
2383
|
switch (ret) {
|
2485
2384
|
case SSL_TLSEXT_ERR_ALERT_FATAL:
|
2486
|
-
ssl3_send_alert(
|
2385
|
+
ssl3_send_alert(ssl, SSL3_AL_FATAL, al);
|
2487
2386
|
return -1;
|
2488
2387
|
|
2489
2388
|
case SSL_TLSEXT_ERR_ALERT_WARNING:
|
2490
|
-
ssl3_send_alert(
|
2389
|
+
ssl3_send_alert(ssl, SSL3_AL_WARNING, al);
|
2491
2390
|
return 1;
|
2492
2391
|
|
2493
2392
|
case SSL_TLSEXT_ERR_NOACK:
|
2494
|
-
|
2393
|
+
ssl->s3->tmp.should_ack_sni = 0;
|
2495
2394
|
return 1;
|
2496
2395
|
|
2497
2396
|
default:
|
@@ -2499,26 +2398,26 @@ static int ssl_check_clienthello_tlsext(SSL *s) {
|
|
2499
2398
|
}
|
2500
2399
|
}
|
2501
2400
|
|
2502
|
-
static int ssl_check_serverhello_tlsext(SSL *
|
2401
|
+
static int ssl_check_serverhello_tlsext(SSL *ssl) {
|
2503
2402
|
int ret = SSL_TLSEXT_ERR_OK;
|
2504
2403
|
int al = SSL_AD_UNRECOGNIZED_NAME;
|
2505
2404
|
|
2506
|
-
if (
|
2507
|
-
ret =
|
2508
|
-
|
2509
|
-
} else if (
|
2510
|
-
|
2511
|
-
ret =
|
2512
|
-
|
2405
|
+
if (ssl->ctx != NULL && ssl->ctx->tlsext_servername_callback != 0) {
|
2406
|
+
ret = ssl->ctx->tlsext_servername_callback(ssl, &al,
|
2407
|
+
ssl->ctx->tlsext_servername_arg);
|
2408
|
+
} else if (ssl->initial_ctx != NULL &&
|
2409
|
+
ssl->initial_ctx->tlsext_servername_callback != 0) {
|
2410
|
+
ret = ssl->initial_ctx->tlsext_servername_callback(
|
2411
|
+
ssl, &al, ssl->initial_ctx->tlsext_servername_arg);
|
2513
2412
|
}
|
2514
2413
|
|
2515
2414
|
switch (ret) {
|
2516
2415
|
case SSL_TLSEXT_ERR_ALERT_FATAL:
|
2517
|
-
ssl3_send_alert(
|
2416
|
+
ssl3_send_alert(ssl, SSL3_AL_FATAL, al);
|
2518
2417
|
return -1;
|
2519
2418
|
|
2520
2419
|
case SSL_TLSEXT_ERR_ALERT_WARNING:
|
2521
|
-
ssl3_send_alert(
|
2420
|
+
ssl3_send_alert(ssl, SSL3_AL_WARNING, al);
|
2522
2421
|
return 1;
|
2523
2422
|
|
2524
2423
|
default:
|
@@ -2526,14 +2425,14 @@ static int ssl_check_serverhello_tlsext(SSL *s) {
|
|
2526
2425
|
}
|
2527
2426
|
}
|
2528
2427
|
|
2529
|
-
int ssl_parse_serverhello_tlsext(SSL *
|
2428
|
+
int ssl_parse_serverhello_tlsext(SSL *ssl, CBS *cbs) {
|
2530
2429
|
int alert = -1;
|
2531
|
-
if (ssl_scan_serverhello_tlsext(
|
2532
|
-
ssl3_send_alert(
|
2430
|
+
if (ssl_scan_serverhello_tlsext(ssl, cbs, &alert) <= 0) {
|
2431
|
+
ssl3_send_alert(ssl, SSL3_AL_FATAL, alert);
|
2533
2432
|
return 0;
|
2534
2433
|
}
|
2535
2434
|
|
2536
|
-
if (ssl_check_serverhello_tlsext(
|
2435
|
+
if (ssl_check_serverhello_tlsext(ssl) <= 0) {
|
2537
2436
|
OPENSSL_PUT_ERROR(SSL, SSL_R_SERVERHELLO_TLSEXT);
|
2538
2437
|
return 0;
|
2539
2438
|
}
|
@@ -2542,7 +2441,7 @@ int ssl_parse_serverhello_tlsext(SSL *s, CBS *cbs) {
|
|
2542
2441
|
}
|
2543
2442
|
|
2544
2443
|
int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
|
2545
|
-
int *
|
2444
|
+
int *out_renew_ticket, const uint8_t *ticket,
|
2546
2445
|
size_t ticket_len, const uint8_t *session_id,
|
2547
2446
|
size_t session_id_len) {
|
2548
2447
|
int ret = 1; /* Most errors are non-fatal. */
|
@@ -2554,19 +2453,13 @@ int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
|
|
2554
2453
|
EVP_CIPHER_CTX cipher_ctx;
|
2555
2454
|
EVP_CIPHER_CTX_init(&cipher_ctx);
|
2556
2455
|
|
2557
|
-
*
|
2456
|
+
*out_renew_ticket = 0;
|
2558
2457
|
*out_session = NULL;
|
2559
2458
|
|
2560
2459
|
if (session_id_len > SSL_MAX_SSL_SESSION_ID_LENGTH) {
|
2561
2460
|
goto done;
|
2562
2461
|
}
|
2563
2462
|
|
2564
|
-
if (ticket_len == 0) {
|
2565
|
-
/* The client will accept a ticket but doesn't currently have one. */
|
2566
|
-
*out_send_ticket = 1;
|
2567
|
-
goto done;
|
2568
|
-
}
|
2569
|
-
|
2570
2463
|
/* Ensure there is room for the key name and the largest IV
|
2571
2464
|
* |tlsext_ticket_key_cb| may try to consume. The real limit may be lower, but
|
2572
2465
|
* the maximum IV length should be well under the minimum size for the
|
@@ -2577,9 +2470,9 @@ int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
|
|
2577
2470
|
const uint8_t *iv = ticket + SSL_TICKET_KEY_NAME_LEN;
|
2578
2471
|
|
2579
2472
|
if (ssl_ctx->tlsext_ticket_key_cb != NULL) {
|
2580
|
-
int cb_ret = ssl_ctx->tlsext_ticket_key_cb(
|
2581
|
-
|
2582
|
-
|
2473
|
+
int cb_ret = ssl_ctx->tlsext_ticket_key_cb(
|
2474
|
+
ssl, (uint8_t *)ticket /* name */, (uint8_t *)iv, &cipher_ctx,
|
2475
|
+
&hmac_ctx, 0 /* decrypt */);
|
2583
2476
|
if (cb_ret < 0) {
|
2584
2477
|
ret = 0;
|
2585
2478
|
goto done;
|
@@ -2588,7 +2481,7 @@ int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
|
|
2588
2481
|
goto done;
|
2589
2482
|
}
|
2590
2483
|
if (cb_ret == 2) {
|
2591
|
-
*
|
2484
|
+
*out_renew_ticket = 1;
|
2592
2485
|
}
|
2593
2486
|
} else {
|
2594
2487
|
/* Check the key name matches. */
|
@@ -2667,12 +2560,12 @@ typedef struct {
|
|
2667
2560
|
int id;
|
2668
2561
|
} tls12_lookup;
|
2669
2562
|
|
2670
|
-
static const tls12_lookup tls12_md[] = {
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2674
|
-
|
2675
|
-
|
2563
|
+
static const tls12_lookup tls12_md[] = {
|
2564
|
+
{NID_sha1, TLSEXT_hash_sha1},
|
2565
|
+
{NID_sha256, TLSEXT_hash_sha256},
|
2566
|
+
{NID_sha384, TLSEXT_hash_sha384},
|
2567
|
+
{NID_sha512, TLSEXT_hash_sha512},
|
2568
|
+
};
|
2676
2569
|
|
2677
2570
|
static const tls12_lookup tls12_sig[] = {{EVP_PKEY_RSA, TLSEXT_signature_rsa},
|
2678
2571
|
{EVP_PKEY_EC, TLSEXT_signature_ecdsa}};
|
@@ -2693,40 +2586,22 @@ int tls12_get_sigid(int pkey_type) {
|
|
2693
2586
|
sizeof(tls12_sig) / sizeof(tls12_lookup));
|
2694
2587
|
}
|
2695
2588
|
|
2696
|
-
int
|
2697
|
-
int
|
2698
|
-
|
2699
|
-
|
2700
|
-
return 0;
|
2701
|
-
}
|
2702
|
-
|
2703
|
-
md_id = tls12_find_id(EVP_MD_type(md), tls12_md,
|
2704
|
-
sizeof(tls12_md) / sizeof(tls12_lookup));
|
2705
|
-
if (md_id == -1) {
|
2706
|
-
return 0;
|
2707
|
-
}
|
2708
|
-
|
2709
|
-
sig_id = tls12_get_sigid(ssl_private_key_type(ssl));
|
2710
|
-
if (sig_id == -1) {
|
2711
|
-
return 0;
|
2712
|
-
}
|
2589
|
+
int tls12_add_sigandhash(SSL *ssl, CBB *out, const EVP_MD *md) {
|
2590
|
+
int md_id = tls12_find_id(EVP_MD_type(md), tls12_md,
|
2591
|
+
sizeof(tls12_md) / sizeof(tls12_lookup));
|
2592
|
+
int sig_id = tls12_get_sigid(ssl_private_key_type(ssl));
|
2713
2593
|
|
2714
|
-
|
2715
|
-
|
2716
|
-
|
2594
|
+
return md_id != -1 &&
|
2595
|
+
sig_id != -1 &&
|
2596
|
+
CBB_add_u8(out, (uint8_t)md_id) &&
|
2597
|
+
CBB_add_u8(out, (uint8_t)sig_id);
|
2717
2598
|
}
|
2718
2599
|
|
2719
2600
|
const EVP_MD *tls12_get_hash(uint8_t hash_alg) {
|
2720
2601
|
switch (hash_alg) {
|
2721
|
-
case TLSEXT_hash_md5:
|
2722
|
-
return EVP_md5();
|
2723
|
-
|
2724
2602
|
case TLSEXT_hash_sha1:
|
2725
2603
|
return EVP_sha1();
|
2726
2604
|
|
2727
|
-
case TLSEXT_hash_sha224:
|
2728
|
-
return EVP_sha224();
|
2729
|
-
|
2730
2605
|
case TLSEXT_hash_sha256:
|
2731
2606
|
return EVP_sha256();
|
2732
2607
|
|
@@ -2761,7 +2636,7 @@ OPENSSL_COMPILE_ASSERT(sizeof(TLS_SIGALGS) == 2,
|
|
2761
2636
|
|
2762
2637
|
int tls1_parse_peer_sigalgs(SSL *ssl, const CBS *in_sigalgs) {
|
2763
2638
|
/* Extension ignored for inappropriate versions */
|
2764
|
-
if (
|
2639
|
+
if (ssl3_protocol_version(ssl) < TLS1_2_VERSION) {
|
2765
2640
|
return 1;
|
2766
2641
|
}
|
2767
2642
|
|
@@ -2812,7 +2687,7 @@ const EVP_MD *tls1_choose_signing_digest(SSL *ssl) {
|
|
2812
2687
|
size_t i, j;
|
2813
2688
|
|
2814
2689
|
static const int kDefaultDigestList[] = {NID_sha256, NID_sha384, NID_sha512,
|
2815
|
-
|
2690
|
+
NID_sha1};
|
2816
2691
|
|
2817
2692
|
const int *digest_nids = kDefaultDigestList;
|
2818
2693
|
size_t num_digest_nids =
|
@@ -2882,24 +2757,25 @@ err:
|
|
2882
2757
|
}
|
2883
2758
|
|
2884
2759
|
/* tls1_record_handshake_hashes_for_channel_id records the current handshake
|
2885
|
-
* hashes in |
|
2886
|
-
|
2760
|
+
* hashes in |ssl->session| so that Channel ID resumptions can sign that
|
2761
|
+
* data. */
|
2762
|
+
int tls1_record_handshake_hashes_for_channel_id(SSL *ssl) {
|
2887
2763
|
int digest_len;
|
2888
2764
|
/* This function should never be called for a resumed session because the
|
2889
2765
|
* handshake hashes that we wish to record are for the original, full
|
2890
2766
|
* handshake. */
|
2891
|
-
if (
|
2767
|
+
if (ssl->hit) {
|
2892
2768
|
return -1;
|
2893
2769
|
}
|
2894
2770
|
|
2895
2771
|
digest_len =
|
2896
|
-
tls1_handshake_digest(
|
2897
|
-
sizeof(
|
2772
|
+
tls1_handshake_digest(ssl, ssl->session->original_handshake_hash,
|
2773
|
+
sizeof(ssl->session->original_handshake_hash));
|
2898
2774
|
if (digest_len < 0) {
|
2899
2775
|
return -1;
|
2900
2776
|
}
|
2901
2777
|
|
2902
|
-
|
2778
|
+
ssl->session->original_handshake_hash_len = digest_len;
|
2903
2779
|
|
2904
2780
|
return 1;
|
2905
2781
|
}
|