grpc 1.0.1 → 1.1.2
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 +3696 -867
- data/etc/roots.pem +39 -111
- data/include/grpc/byte_buffer.h +64 -1
- data/include/grpc/census.h +40 -96
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +42 -7
- data/include/grpc/grpc_posix.h +8 -5
- data/include/grpc/impl/codegen/atm.h +3 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
- data/include/grpc/impl/codegen/compression_types.h +1 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
- data/include/grpc/impl/codegen/gpr_slice.h +84 -0
- data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
- data/include/grpc/impl/codegen/grpc_types.h +91 -9
- data/include/grpc/impl/codegen/port_platform.h +25 -92
- data/include/grpc/impl/codegen/slice.h +54 -97
- data/include/grpc/impl/codegen/sync.h +0 -253
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice.h +132 -0
- data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
- data/include/grpc/support/alloc.h +40 -1
- data/include/grpc/support/log.h +80 -1
- data/include/grpc/support/log_windows.h +2 -0
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +252 -0
- data/include/grpc/support/time.h +67 -1
- data/src/boringssl/err_data.c +639 -627
- data/src/core/ext/census/base_resources.c +71 -0
- data/src/core/ext/census/base_resources.h +39 -0
- data/src/core/ext/census/gen/census.pb.c +26 -29
- data/src/core/ext/census/gen/census.pb.h +68 -67
- data/src/core/ext/census/gen/trace_context.pb.c +81 -0
- data/src/core/ext/census/gen/trace_context.pb.h +99 -0
- data/src/core/ext/census/grpc_filter.c +22 -16
- data/src/core/ext/census/grpc_plugin.c +2 -1
- data/src/core/ext/census/initialize.c +16 -4
- data/src/core/ext/census/mlog.h +1 -1
- data/src/core/ext/census/placeholders.c +0 -45
- data/src/core/ext/census/resource.c +312 -0
- data/src/core/ext/census/resource.h +63 -0
- data/src/core/ext/census/trace_context.c +86 -0
- data/src/core/ext/census/trace_context.h +68 -0
- data/src/core/ext/census/tracing.c +8 -2
- data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
- data/src/core/ext/client_channel/client_channel.c +1218 -0
- data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
- data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
- data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
- data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
- data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
- data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
- data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
- data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
- data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
- data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
- data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
- data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
- data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
- data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
- data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
- data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
- data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
- data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
- data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
- data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
- data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
- data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
- data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
- data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
- data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
- data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
- data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
- data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
- data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
- data/src/core/ext/load_reporting/load_reporting.c +7 -56
- data/src/core/ext/load_reporting/load_reporting.h +41 -28
- data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
- data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
- data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
- data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
- data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
- data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
- data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
- data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
- data/src/core/lib/channel/channel_args.c +70 -13
- data/src/core/lib/channel/channel_args.h +28 -2
- data/src/core/lib/channel/channel_stack.c +77 -28
- data/src/core/lib/channel/channel_stack.h +61 -23
- data/src/core/lib/channel/channel_stack_builder.c +33 -25
- data/src/core/lib/channel/channel_stack_builder.h +17 -8
- data/src/core/lib/channel/compress_filter.c +52 -36
- data/src/core/lib/channel/connected_channel.c +20 -12
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +13 -1
- data/src/core/lib/channel/deadline_filter.c +344 -0
- data/src/core/lib/channel/deadline_filter.h +99 -0
- data/src/core/lib/channel/handshaker.c +240 -0
- data/src/core/lib/channel/handshaker.h +164 -0
- data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
- data/src/core/lib/channel/handshaker_factory.h +66 -0
- data/src/core/lib/channel/handshaker_registry.c +113 -0
- data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
- data/src/core/lib/channel/http_client_filter.c +248 -46
- data/src/core/lib/channel/http_client_filter.h +3 -0
- data/src/core/lib/channel/http_server_filter.c +136 -24
- data/src/core/lib/channel/message_size_filter.c +261 -0
- data/src/core/lib/channel/message_size_filter.h +39 -0
- data/src/core/lib/compression/message_compress.c +43 -37
- data/src/core/lib/compression/message_compress.h +7 -5
- data/src/core/lib/http/format_request.c +26 -11
- data/src/core/lib/http/format_request.h +7 -5
- data/src/core/lib/http/httpcli.c +45 -27
- data/src/core/lib/http/httpcli.h +4 -4
- data/src/core/lib/http/httpcli_security_connector.c +56 -46
- data/src/core/lib/http/parser.c +17 -14
- data/src/core/lib/http/parser.h +4 -2
- data/src/core/lib/iomgr/closure.c +49 -7
- data/src/core/lib/iomgr/closure.h +56 -14
- data/src/core/lib/iomgr/combiner.c +422 -0
- data/src/core/lib/iomgr/combiner.h +64 -0
- data/src/core/lib/iomgr/endpoint.c +8 -2
- data/src/core/lib/iomgr/endpoint.h +17 -7
- data/src/core/lib/iomgr/endpoint_pair.h +3 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
- data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
- data/src/core/lib/iomgr/error.c +72 -6
- data/src/core/lib/iomgr/error.h +30 -3
- data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
- data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
- data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
- data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
- data/src/core/lib/iomgr/ev_posix.c +26 -5
- data/src/core/lib/iomgr/ev_posix.h +12 -1
- data/src/core/lib/iomgr/exec_ctx.c +27 -94
- data/src/core/lib/iomgr/exec_ctx.h +19 -22
- data/src/core/lib/iomgr/executor.c +29 -8
- data/src/core/lib/iomgr/executor.h +2 -4
- data/src/core/lib/iomgr/iocp_windows.c +3 -4
- data/src/core/lib/iomgr/iomgr.c +14 -10
- data/src/core/lib/iomgr/iomgr.h +6 -2
- data/src/core/lib/iomgr/iomgr_posix.c +2 -2
- data/src/core/lib/iomgr/iomgr_uv.c +49 -0
- data/src/core/lib/iomgr/iomgr_windows.c +2 -2
- data/src/core/lib/iomgr/load_file.c +3 -3
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/network_status_tracker.c +1 -1
- data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
- data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
- data/src/core/lib/iomgr/pollset_uv.c +142 -0
- data/src/core/lib/iomgr/pollset_uv.h +42 -0
- data/src/core/lib/iomgr/pollset_windows.c +5 -6
- data/src/core/lib/iomgr/port.h +129 -0
- data/src/core/lib/iomgr/resolve_address.h +2 -1
- data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
- data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
- data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
- data/src/core/lib/iomgr/resource_quota.c +832 -0
- data/src/core/lib/iomgr/resource_quota.h +159 -0
- data/src/core/lib/iomgr/sockaddr.h +10 -2
- data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
- data/src/core/lib/iomgr/socket_mutator.c +98 -0
- data/src/core/lib/iomgr/socket_mutator.h +80 -0
- data/src/core/lib/iomgr/socket_utils.h +42 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
- data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
- data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
- data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
- data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
- data/src/core/lib/iomgr/socket_windows.c +14 -6
- data/src/core/lib/iomgr/socket_windows.h +1 -0
- data/src/core/lib/iomgr/tcp_client.h +8 -2
- data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
- data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
- data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
- data/src/core/lib/iomgr/tcp_posix.c +135 -56
- data/src/core/lib/iomgr/tcp_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server.h +14 -6
- data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
- data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
- data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
- data/src/core/lib/iomgr/tcp_uv.c +367 -0
- data/src/core/lib/iomgr/tcp_uv.h +59 -0
- data/src/core/lib/iomgr/tcp_windows.c +65 -48
- data/src/core/lib/iomgr/tcp_windows.h +3 -1
- data/src/core/lib/iomgr/timer.h +21 -21
- data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
- data/src/core/lib/iomgr/timer_generic.h +49 -0
- data/src/core/lib/iomgr/timer_heap.c +6 -0
- data/src/core/lib/iomgr/timer_uv.c +99 -0
- data/src/core/lib/iomgr/timer_uv.h +47 -0
- data/src/core/lib/iomgr/udp_server.c +116 -98
- data/src/core/lib/iomgr/udp_server.h +5 -3
- data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
- data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
- data/src/core/lib/iomgr/workqueue.h +12 -20
- data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
- data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
- data/src/core/lib/iomgr/workqueue_windows.c +9 -8
- data/src/core/lib/json/json.c +3 -3
- data/src/core/lib/json/json.h +11 -11
- data/src/core/lib/json/json_reader.c +9 -5
- data/src/core/lib/profiling/basic_timers.c +10 -1
- data/src/core/lib/profiling/timers.h +2 -0
- data/src/core/lib/security/context/security_context.c +13 -3
- data/src/core/lib/security/context/security_context.h +20 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.c +48 -19
- data/src/core/lib/security/credentials/credentials.h +36 -19
- data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
- data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
- data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
- data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
- data/src/core/lib/security/transport/client_auth_filter.c +33 -27
- data/src/core/lib/security/transport/secure_endpoint.c +93 -68
- data/src/core/lib/security/transport/secure_endpoint.h +2 -2
- data/src/core/lib/security/transport/security_connector.c +133 -168
- data/src/core/lib/security/transport/security_connector.h +31 -46
- data/src/core/lib/security/transport/security_handshaker.c +501 -0
- data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
- data/src/core/lib/security/transport/server_auth_filter.c +50 -38
- data/src/core/lib/security/util/b64.c +11 -8
- data/src/core/lib/security/util/b64.h +5 -4
- data/src/core/lib/slice/percent_encoding.c +182 -0
- data/src/core/lib/slice/percent_encoding.h +78 -0
- data/src/core/lib/{support → slice}/slice.c +81 -50
- data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
- data/src/core/lib/slice/slice_internal.h +49 -0
- data/src/core/lib/slice/slice_string_helpers.c +90 -0
- data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
- data/src/core/lib/support/backoff.c +24 -13
- data/src/core/lib/support/backoff.h +5 -2
- data/src/core/lib/support/env.h +0 -2
- data/src/core/lib/support/log.c +5 -4
- data/src/core/lib/support/log_linux.c +0 -1
- data/src/core/lib/support/log_posix.c +1 -1
- data/src/core/lib/support/mpscq.c +83 -0
- data/src/core/lib/support/mpscq.h +65 -0
- data/src/core/lib/support/string.c +58 -49
- data/src/core/lib/support/string.h +11 -8
- data/src/core/lib/support/subprocess_posix.c +5 -2
- data/src/core/lib/support/thd.c +1 -1
- data/src/core/lib/support/time.c +43 -79
- data/src/core/lib/support/time_posix.c +1 -1
- data/src/core/lib/support/tmpfile.h +0 -2
- data/src/core/lib/surface/alarm.c +4 -1
- data/src/core/lib/surface/byte_buffer.c +17 -11
- data/src/core/lib/surface/byte_buffer_reader.c +23 -15
- data/src/core/lib/surface/call.c +294 -276
- data/src/core/lib/surface/call.h +24 -9
- data/src/core/lib/surface/call_log_batch.c +5 -3
- data/src/core/lib/surface/channel.c +127 -111
- data/src/core/lib/surface/channel.h +14 -5
- data/src/core/lib/surface/channel_init.c +1 -1
- data/src/core/lib/surface/channel_init.h +10 -1
- data/src/core/lib/surface/channel_ping.c +7 -6
- data/src/core/lib/surface/completion_queue.c +154 -18
- data/src/core/lib/surface/completion_queue.h +5 -0
- data/src/core/lib/surface/init.c +40 -6
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.c +5 -2
- data/src/core/lib/surface/lame_client.c +28 -18
- data/src/core/lib/surface/server.c +134 -87
- data/src/core/lib/surface/server.h +8 -0
- data/src/core/lib/surface/validate_metadata.c +1 -1
- data/src/core/lib/surface/version.c +3 -1
- data/src/core/lib/transport/byte_stream.c +7 -4
- data/src/core/lib/transport/byte_stream.h +6 -10
- data/src/core/lib/transport/connectivity_state.c +21 -12
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/mdstr_hash_table.c +118 -0
- data/src/core/lib/transport/mdstr_hash_table.h +77 -0
- data/src/core/lib/transport/metadata.c +83 -60
- data/src/core/lib/transport/metadata.h +41 -23
- data/src/core/lib/transport/metadata_batch.c +17 -11
- data/src/core/lib/transport/metadata_batch.h +20 -6
- data/src/core/lib/transport/pid_controller.c +57 -0
- data/src/core/lib/transport/pid_controller.h +64 -0
- data/src/core/lib/transport/service_config.c +251 -0
- data/src/core/lib/transport/service_config.h +71 -0
- data/src/core/lib/transport/static_metadata.c +18 -16
- data/src/core/lib/transport/static_metadata.h +113 -107
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
- data/src/core/lib/transport/transport.c +84 -23
- data/src/core/lib/transport/transport.h +53 -8
- data/src/core/lib/transport/transport_impl.h +3 -0
- data/src/core/lib/transport/transport_op_string.c +92 -20
- data/src/core/lib/tsi/ssl_transport_security.c +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
- data/src/ruby/ext/grpc/extconf.rb +0 -1
- data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
- data/src/ruby/ext/grpc/rb_call.c +15 -5
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
- data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
- data/src/ruby/ext/grpc/rb_grpc.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
- data/src/ruby/ext/grpc/rb_server.c +18 -12
- data/src/ruby/lib/grpc/errors.rb +154 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
- data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
- data/src/ruby/lib/grpc/generic/service.rb +3 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
- data/src/ruby/pb/test/client.rb +307 -7
- data/src/ruby/pb/test/server.rb +26 -1
- data/src/ruby/spec/compression_options_spec.rb +164 -0
- data/src/ruby/spec/error_sanity_spec.rb +64 -0
- data/src/ruby/spec/generic/active_call_spec.rb +290 -12
- data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
- data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
- data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
- data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
- data/src/ruby/spec/spec_helper.rb +2 -0
- data/third_party/boringssl/crypto/aes/aes.c +12 -12
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
- data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
- data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
- data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
- data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
- data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
- data/third_party/boringssl/crypto/base64/base64.c +249 -285
- data/third_party/boringssl/crypto/bio/bio.c +13 -23
- data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
- data/third_party/boringssl/crypto/bio/connect.c +12 -3
- data/third_party/boringssl/crypto/bio/fd.c +22 -15
- data/third_party/boringssl/crypto/bio/file.c +2 -38
- data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
- data/third_party/boringssl/crypto/bio/internal.h +3 -0
- data/third_party/boringssl/crypto/bio/pair.c +1 -1
- data/third_party/boringssl/crypto/bio/socket.c +10 -2
- data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
- data/third_party/boringssl/crypto/bn/bn.c +38 -0
- data/third_party/boringssl/crypto/bn/cmp.c +25 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -76
- data/third_party/boringssl/crypto/bn/div.c +136 -70
- data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
- data/third_party/boringssl/crypto/bn/gcd.c +213 -296
- data/third_party/boringssl/crypto/bn/generic.c +0 -80
- data/third_party/boringssl/crypto/bn/internal.h +15 -3
- data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
- data/third_party/boringssl/crypto/bn/mul.c +2 -1
- data/third_party/boringssl/crypto/bn/prime.c +24 -8
- data/third_party/boringssl/crypto/bn/random.c +47 -33
- data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
- data/third_party/boringssl/crypto/buf/buf.c +25 -21
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
- data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
- data/third_party/boringssl/crypto/cipher/aead.c +11 -22
- data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
- data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
- data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
- data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
- data/third_party/boringssl/crypto/cipher/internal.h +8 -10
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
- data/third_party/boringssl/crypto/conf/conf.c +2 -1
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
- data/third_party/boringssl/crypto/cpu-arm.c +0 -161
- data/third_party/boringssl/crypto/cpu-intel.c +5 -3
- data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
- data/third_party/boringssl/crypto/crypto.c +29 -7
- data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
- data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
- data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
- data/third_party/boringssl/crypto/dh/check.c +22 -6
- data/third_party/boringssl/crypto/dh/dh.c +45 -21
- data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
- data/third_party/boringssl/crypto/dh/params.c +30 -78
- data/third_party/boringssl/crypto/digest/digest.c +3 -3
- data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
- data/third_party/boringssl/crypto/ec/ec.c +84 -140
- data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
- data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
- data/third_party/boringssl/crypto/ec/internal.h +12 -36
- data/third_party/boringssl/crypto/ec/oct.c +11 -11
- data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
- data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
- data/third_party/boringssl/crypto/ec/simple.c +81 -201
- data/third_party/boringssl/crypto/ec/util-64.c +0 -74
- data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
- data/third_party/boringssl/crypto/engine/engine.c +1 -1
- data/third_party/boringssl/crypto/err/err.c +3 -3
- data/third_party/boringssl/crypto/evp/evp.c +14 -59
- data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
- data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
- data/third_party/boringssl/crypto/evp/internal.h +4 -46
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
- data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
- data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
- data/third_party/boringssl/crypto/evp/print.c +520 -0
- data/third_party/boringssl/crypto/ex_data.c +4 -6
- data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
- data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
- data/third_party/boringssl/crypto/internal.h +57 -77
- data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
- data/third_party/boringssl/crypto/md4/md4.c +9 -0
- data/third_party/boringssl/crypto/mem.c +19 -19
- data/third_party/boringssl/crypto/modes/cfb.c +5 -6
- data/third_party/boringssl/crypto/modes/ctr.c +10 -18
- data/third_party/boringssl/crypto/modes/gcm.c +100 -66
- data/third_party/boringssl/crypto/modes/internal.h +15 -27
- data/third_party/boringssl/crypto/modes/ofb.c +9 -22
- data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
- data/third_party/boringssl/crypto/newhope/internal.h +71 -0
- data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
- data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
- data/third_party/boringssl/crypto/newhope/poly.c +183 -0
- data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
- data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
- data/third_party/boringssl/crypto/obj/obj.c +111 -135
- data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
- data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
- data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
- data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
- data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
- data/third_party/boringssl/crypto/rand/rand.c +4 -1
- data/third_party/boringssl/crypto/rand/urandom.c +5 -7
- data/third_party/boringssl/crypto/rand/windows.c +5 -8
- data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
- data/third_party/boringssl/crypto/rsa/internal.h +5 -13
- data/third_party/boringssl/crypto/rsa/padding.c +64 -63
- data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
- data/third_party/boringssl/crypto/sha/sha256.c +2 -2
- data/third_party/boringssl/crypto/sha/sha512.c +7 -7
- data/third_party/boringssl/crypto/stack/stack.c +13 -22
- data/third_party/boringssl/crypto/thread.c +21 -12
- data/third_party/boringssl/crypto/thread_none.c +6 -2
- data/third_party/boringssl/crypto/thread_pthread.c +16 -7
- data/third_party/boringssl/crypto/thread_win.c +38 -85
- data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
- data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
- data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
- data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
- data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
- data/third_party/boringssl/crypto/x509/internal.h +66 -0
- data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
- data/third_party/boringssl/crypto/x509/x509.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
- data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
- data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
- data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
- data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
- data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl/crypto/x509/x_name.c +14 -17
- data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
- data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
- data/third_party/boringssl/include/openssl/aead.h +72 -73
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
- data/third_party/boringssl/include/openssl/asn1.h +103 -235
- data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
- data/third_party/boringssl/include/openssl/asn1t.h +1 -11
- data/third_party/boringssl/include/openssl/base.h +145 -3
- data/third_party/boringssl/include/openssl/base64.h +20 -17
- data/third_party/boringssl/include/openssl/bio.h +59 -34
- data/third_party/boringssl/include/openssl/bn.h +118 -51
- data/third_party/boringssl/include/openssl/buf.h +15 -0
- data/third_party/boringssl/include/openssl/bytestring.h +52 -4
- data/third_party/boringssl/include/openssl/chacha.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +18 -1
- data/third_party/boringssl/include/openssl/cmac.h +11 -0
- data/third_party/boringssl/include/openssl/conf.h +13 -2
- data/third_party/boringssl/include/openssl/cpu.h +20 -23
- data/third_party/boringssl/include/openssl/crypto.h +22 -1
- data/third_party/boringssl/include/openssl/curve25519.h +96 -4
- data/third_party/boringssl/include/openssl/dh.h +71 -16
- data/third_party/boringssl/include/openssl/digest.h +38 -11
- data/third_party/boringssl/include/openssl/dsa.h +40 -4
- data/third_party/boringssl/include/openssl/ec.h +44 -18
- data/third_party/boringssl/include/openssl/ec_key.h +27 -6
- data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
- data/third_party/boringssl/include/openssl/engine.h +11 -0
- data/third_party/boringssl/include/openssl/evp.h +52 -88
- data/third_party/boringssl/include/openssl/hkdf.h +24 -4
- data/third_party/boringssl/include/openssl/hmac.h +20 -6
- data/third_party/boringssl/include/openssl/md4.h +4 -0
- data/third_party/boringssl/include/openssl/mem.h +19 -0
- data/third_party/boringssl/include/openssl/newhope.h +158 -0
- data/third_party/boringssl/include/openssl/nid.h +4166 -0
- data/third_party/boringssl/include/openssl/obj.h +31 -3
- data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
- data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
- data/third_party/boringssl/include/openssl/pem.h +5 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
- data/third_party/boringssl/include/openssl/rand.h +6 -0
- data/third_party/boringssl/include/openssl/rc4.h +6 -0
- data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
- data/third_party/boringssl/include/openssl/rsa.h +127 -65
- data/third_party/boringssl/include/openssl/sha.h +14 -10
- data/third_party/boringssl/include/openssl/ssl.h +561 -275
- data/third_party/boringssl/include/openssl/ssl3.h +18 -25
- data/third_party/boringssl/include/openssl/stack.h +2 -4
- data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
- data/third_party/boringssl/include/openssl/thread.h +31 -13
- data/third_party/boringssl/include/openssl/time_support.h +1 -0
- data/third_party/boringssl/include/openssl/tls1.h +37 -33
- data/third_party/boringssl/include/openssl/x509.h +69 -26
- data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
- data/third_party/boringssl/include/openssl/x509v3.h +23 -2
- data/third_party/boringssl/ssl/custom_extensions.c +3 -5
- data/third_party/boringssl/ssl/d1_both.c +463 -499
- data/third_party/boringssl/ssl/d1_lib.c +38 -109
- data/third_party/boringssl/ssl/d1_pkt.c +173 -334
- data/third_party/boringssl/ssl/d1_srtp.c +20 -18
- data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
- data/third_party/boringssl/ssl/dtls_record.c +27 -26
- data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
- data/third_party/boringssl/ssl/handshake_server.c +1932 -0
- data/third_party/boringssl/ssl/internal.h +712 -439
- data/third_party/boringssl/ssl/s3_both.c +445 -257
- data/third_party/boringssl/ssl/s3_enc.c +53 -36
- data/third_party/boringssl/ssl/s3_lib.c +23 -268
- data/third_party/boringssl/ssl/s3_pkt.c +168 -364
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
- data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
- data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
- data/third_party/boringssl/ssl/ssl_cert.c +324 -49
- data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
- data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
- data/third_party/boringssl/ssl/ssl_file.c +21 -68
- data/third_party/boringssl/ssl/ssl_lib.c +881 -510
- data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
- data/third_party/boringssl/ssl/ssl_session.c +324 -103
- data/third_party/boringssl/ssl/ssl_stat.c +6 -88
- data/third_party/boringssl/ssl/t1_enc.c +23 -39
- data/third_party/boringssl/ssl/t1_lib.c +1120 -622
- data/third_party/boringssl/ssl/tls13_both.c +440 -0
- data/third_party/boringssl/ssl/tls13_client.c +682 -0
- data/third_party/boringssl/ssl/tls13_enc.c +391 -0
- data/third_party/boringssl/ssl/tls13_server.c +672 -0
- data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
- data/third_party/boringssl/ssl/tls_record.c +159 -77
- data/third_party/nanopb/pb.h +60 -28
- data/third_party/nanopb/pb_decode.c +120 -92
- data/third_party/nanopb/pb_decode.h +3 -3
- data/third_party/nanopb/pb_encode.c +73 -67
- data/third_party/nanopb/pb_encode.h +4 -4
- metadata +155 -89
- data/include/grpc/impl/codegen/byte_buffer.h +0 -122
- data/include/grpc/impl/codegen/log.h +0 -118
- data/include/grpc/impl/codegen/time.h +0 -130
- data/src/core/ext/client_config/client_channel.c +0 -593
- data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
- data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
- data/src/core/lib/iomgr/workqueue_posix.c +0 -151
- data/src/core/lib/security/transport/handshake.c +0 -368
- data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
- data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
- data/third_party/boringssl/crypto/directory.h +0 -66
- data/third_party/boringssl/crypto/directory_posix.c +0 -108
- data/third_party/boringssl/crypto/directory_win.c +0 -144
- data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
- data/third_party/boringssl/include/openssl/pqueue.h +0 -146
- data/third_party/boringssl/ssl/d1_clnt.c +0 -561
- data/third_party/boringssl/ssl/d1_srvr.c +0 -476
- data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
- data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
- data/third_party/boringssl/ssl/test/async_bio.h +0 -45
- data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
- data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -141,7 +141,6 @@
|
|
141
141
|
#include <openssl/ssl.h>
|
142
142
|
|
143
143
|
#include <assert.h>
|
144
|
-
#include <stdio.h>
|
145
144
|
#include <string.h>
|
146
145
|
|
147
146
|
#include <openssl/buf.h>
|
@@ -152,6 +151,7 @@
|
|
152
151
|
#include <openssl/stack.h>
|
153
152
|
|
154
153
|
#include "internal.h"
|
154
|
+
#include "../crypto/internal.h"
|
155
155
|
|
156
156
|
|
157
157
|
/* kCiphers is an array of all supported ciphers, sorted by id. */
|
@@ -168,28 +168,6 @@ static const SSL_CIPHER kCiphers[] = {
|
|
168
168
|
SSL_HANDSHAKE_MAC_DEFAULT,
|
169
169
|
},
|
170
170
|
|
171
|
-
/* Cipher 04 */
|
172
|
-
{
|
173
|
-
SSL3_TXT_RSA_RC4_128_MD5,
|
174
|
-
SSL3_CK_RSA_RC4_128_MD5,
|
175
|
-
SSL_kRSA,
|
176
|
-
SSL_aRSA,
|
177
|
-
SSL_RC4,
|
178
|
-
SSL_MD5,
|
179
|
-
SSL_HANDSHAKE_MAC_DEFAULT,
|
180
|
-
},
|
181
|
-
|
182
|
-
/* Cipher 05 */
|
183
|
-
{
|
184
|
-
SSL3_TXT_RSA_RC4_128_SHA,
|
185
|
-
SSL3_CK_RSA_RC4_128_SHA,
|
186
|
-
SSL_kRSA,
|
187
|
-
SSL_aRSA,
|
188
|
-
SSL_RC4,
|
189
|
-
SSL_SHA1,
|
190
|
-
SSL_HANDSHAKE_MAC_DEFAULT,
|
191
|
-
},
|
192
|
-
|
193
171
|
/* Cipher 0A */
|
194
172
|
{
|
195
173
|
SSL3_TXT_RSA_DES_192_CBC3_SHA,
|
@@ -297,17 +275,6 @@ static const SSL_CIPHER kCiphers[] = {
|
|
297
275
|
|
298
276
|
/* PSK cipher suites. */
|
299
277
|
|
300
|
-
/* Cipher 8A */
|
301
|
-
{
|
302
|
-
TLS1_TXT_PSK_WITH_RC4_128_SHA,
|
303
|
-
TLS1_CK_PSK_WITH_RC4_128_SHA,
|
304
|
-
SSL_kPSK,
|
305
|
-
SSL_aPSK,
|
306
|
-
SSL_RC4,
|
307
|
-
SSL_SHA1,
|
308
|
-
SSL_HANDSHAKE_MAC_DEFAULT,
|
309
|
-
},
|
310
|
-
|
311
278
|
/* Cipher 8C */
|
312
279
|
{
|
313
280
|
TLS1_TXT_PSK_WITH_AES_128_CBC_SHA,
|
@@ -376,15 +343,50 @@ static const SSL_CIPHER kCiphers[] = {
|
|
376
343
|
SSL_HANDSHAKE_MAC_SHA384,
|
377
344
|
},
|
378
345
|
|
379
|
-
/*
|
346
|
+
/* CECPQ1 (combined elliptic curve + post-quantum) suites. */
|
347
|
+
|
348
|
+
/* Cipher 16B7 */
|
380
349
|
{
|
381
|
-
|
382
|
-
|
383
|
-
|
350
|
+
TLS1_TXT_CECPQ1_RSA_WITH_CHACHA20_POLY1305_SHA256,
|
351
|
+
TLS1_CK_CECPQ1_RSA_WITH_CHACHA20_POLY1305_SHA256,
|
352
|
+
SSL_kCECPQ1,
|
353
|
+
SSL_aRSA,
|
354
|
+
SSL_CHACHA20POLY1305,
|
355
|
+
SSL_AEAD,
|
356
|
+
SSL_HANDSHAKE_MAC_SHA256,
|
357
|
+
},
|
358
|
+
|
359
|
+
/* Cipher 16B8 */
|
360
|
+
{
|
361
|
+
TLS1_TXT_CECPQ1_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
|
362
|
+
TLS1_CK_CECPQ1_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
|
363
|
+
SSL_kCECPQ1,
|
384
364
|
SSL_aECDSA,
|
385
|
-
|
386
|
-
|
387
|
-
|
365
|
+
SSL_CHACHA20POLY1305,
|
366
|
+
SSL_AEAD,
|
367
|
+
SSL_HANDSHAKE_MAC_SHA256,
|
368
|
+
},
|
369
|
+
|
370
|
+
/* Cipher 16B9 */
|
371
|
+
{
|
372
|
+
TLS1_TXT_CECPQ1_RSA_WITH_AES_256_GCM_SHA384,
|
373
|
+
TLS1_CK_CECPQ1_RSA_WITH_AES_256_GCM_SHA384,
|
374
|
+
SSL_kCECPQ1,
|
375
|
+
SSL_aRSA,
|
376
|
+
SSL_AES256GCM,
|
377
|
+
SSL_AEAD,
|
378
|
+
SSL_HANDSHAKE_MAC_SHA384,
|
379
|
+
},
|
380
|
+
|
381
|
+
/* Cipher 16BA */
|
382
|
+
{
|
383
|
+
TLS1_TXT_CECPQ1_ECDSA_WITH_AES_256_GCM_SHA384,
|
384
|
+
TLS1_CK_CECPQ1_ECDSA_WITH_AES_256_GCM_SHA384,
|
385
|
+
SSL_kCECPQ1,
|
386
|
+
SSL_aECDSA,
|
387
|
+
SSL_AES256GCM,
|
388
|
+
SSL_AEAD,
|
389
|
+
SSL_HANDSHAKE_MAC_SHA384,
|
388
390
|
},
|
389
391
|
|
390
392
|
/* Cipher C009 */
|
@@ -409,17 +411,6 @@ static const SSL_CIPHER kCiphers[] = {
|
|
409
411
|
SSL_HANDSHAKE_MAC_DEFAULT,
|
410
412
|
},
|
411
413
|
|
412
|
-
/* Cipher C011 */
|
413
|
-
{
|
414
|
-
TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA,
|
415
|
-
TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA,
|
416
|
-
SSL_kECDHE,
|
417
|
-
SSL_aRSA,
|
418
|
-
SSL_RC4,
|
419
|
-
SSL_SHA1,
|
420
|
-
SSL_HANDSHAKE_MAC_DEFAULT,
|
421
|
-
},
|
422
|
-
|
423
414
|
/* Cipher C013 */
|
424
415
|
{
|
425
416
|
TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,
|
@@ -616,9 +607,32 @@ static const SSL_CIPHER kCiphers[] = {
|
|
616
607
|
SSL_AEAD,
|
617
608
|
SSL_HANDSHAKE_MAC_SHA256,
|
618
609
|
},
|
610
|
+
|
611
|
+
/* Cipher D001 */
|
612
|
+
{
|
613
|
+
TLS1_TXT_ECDHE_PSK_WITH_AES_128_GCM_SHA256,
|
614
|
+
TLS1_CK_ECDHE_PSK_WITH_AES_128_GCM_SHA256,
|
615
|
+
SSL_kECDHE,
|
616
|
+
SSL_aPSK,
|
617
|
+
SSL_AES128GCM,
|
618
|
+
SSL_AEAD,
|
619
|
+
SSL_HANDSHAKE_MAC_SHA256,
|
620
|
+
},
|
621
|
+
|
622
|
+
/* Cipher D002 */
|
623
|
+
{
|
624
|
+
TLS1_TXT_ECDHE_PSK_WITH_AES_256_GCM_SHA384,
|
625
|
+
TLS1_CK_ECDHE_PSK_WITH_AES_256_GCM_SHA384,
|
626
|
+
SSL_kECDHE,
|
627
|
+
SSL_aPSK,
|
628
|
+
SSL_AES256GCM,
|
629
|
+
SSL_AEAD,
|
630
|
+
SSL_HANDSHAKE_MAC_SHA384,
|
631
|
+
},
|
632
|
+
|
619
633
|
};
|
620
634
|
|
621
|
-
static const size_t kCiphersLen =
|
635
|
+
static const size_t kCiphersLen = OPENSSL_ARRAY_SIZE(kCiphers);
|
622
636
|
|
623
637
|
#define CIPHER_ADD 1
|
624
638
|
#define CIPHER_KILL 2
|
@@ -652,8 +666,9 @@ typedef struct cipher_alias_st {
|
|
652
666
|
} CIPHER_ALIAS;
|
653
667
|
|
654
668
|
static const CIPHER_ALIAS kCipherAliases[] = {
|
655
|
-
/* "ALL" doesn't include eNULL
|
656
|
-
|
669
|
+
/* "ALL" doesn't include eNULL nor kCECPQ1. These must be explicitly
|
670
|
+
* enabled. */
|
671
|
+
{"ALL", ~SSL_kCECPQ1, ~0u, ~SSL_eNULL, ~0u, 0},
|
657
672
|
|
658
673
|
/* The "COMPLEMENTOFDEFAULT" rule is omitted. It matches nothing. */
|
659
674
|
|
@@ -668,15 +683,16 @@ static const CIPHER_ALIAS kCipherAliases[] = {
|
|
668
683
|
{"DH", SSL_kDHE, ~0u, ~0u, ~0u, 0},
|
669
684
|
|
670
685
|
{"kECDHE", SSL_kECDHE, ~0u, ~0u, ~0u, 0},
|
686
|
+
{"kCECPQ1", SSL_kCECPQ1, ~0u, ~0u, ~0u, 0},
|
671
687
|
{"kEECDH", SSL_kECDHE, ~0u, ~0u, ~0u, 0},
|
672
688
|
{"ECDH", SSL_kECDHE, ~0u, ~0u, ~0u, 0},
|
673
689
|
|
674
690
|
{"kPSK", SSL_kPSK, ~0u, ~0u, ~0u, 0},
|
675
691
|
|
676
692
|
/* server authentication aliases */
|
677
|
-
{"aRSA", ~
|
678
|
-
{"aECDSA", ~
|
679
|
-
{"ECDSA", ~
|
693
|
+
{"aRSA", ~SSL_kCECPQ1, SSL_aRSA, ~SSL_eNULL, ~0u, 0},
|
694
|
+
{"aECDSA", ~SSL_kCECPQ1, SSL_aECDSA, ~0u, ~0u, 0},
|
695
|
+
{"ECDSA", ~SSL_kCECPQ1, SSL_aECDSA, ~0u, ~0u, 0},
|
680
696
|
{"aPSK", ~0u, SSL_aPSK, ~0u, ~0u, 0},
|
681
697
|
|
682
698
|
/* aliases combining key exchange and server authentication */
|
@@ -689,35 +705,32 @@ static const CIPHER_ALIAS kCipherAliases[] = {
|
|
689
705
|
|
690
706
|
/* symmetric encryption aliases */
|
691
707
|
{"3DES", ~0u, ~0u, SSL_3DES, ~0u, 0},
|
692
|
-
{"RC4", ~0u, ~0u, SSL_RC4, ~0u, 0},
|
693
708
|
{"AES128", ~0u, ~0u, SSL_AES128 | SSL_AES128GCM, ~0u, 0},
|
694
|
-
{"AES256", ~
|
695
|
-
{"AES", ~
|
696
|
-
{"AESGCM", ~
|
697
|
-
{"CHACHA20", ~
|
709
|
+
{"AES256", ~SSL_kCECPQ1, ~0u, SSL_AES256 | SSL_AES256GCM, ~0u, 0},
|
710
|
+
{"AES", ~SSL_kCECPQ1, ~0u, SSL_AES, ~0u, 0},
|
711
|
+
{"AESGCM", ~SSL_kCECPQ1, ~0u, SSL_AES128GCM | SSL_AES256GCM, ~0u, 0},
|
712
|
+
{"CHACHA20", ~SSL_kCECPQ1, ~0u, SSL_CHACHA20POLY1305 | SSL_CHACHA20POLY1305_OLD, ~0u,
|
698
713
|
0},
|
699
714
|
|
700
715
|
/* MAC aliases */
|
701
716
|
{"MD5", ~0u, ~0u, ~0u, SSL_MD5, 0},
|
702
717
|
{"SHA1", ~0u, ~0u, ~SSL_eNULL, SSL_SHA1, 0},
|
703
718
|
{"SHA", ~0u, ~0u, ~SSL_eNULL, SSL_SHA1, 0},
|
704
|
-
{"SHA256", ~
|
705
|
-
{"SHA384", ~
|
719
|
+
{"SHA256", ~SSL_kCECPQ1, ~0u, ~0u, SSL_SHA256, 0},
|
720
|
+
{"SHA384", ~SSL_kCECPQ1, ~0u, ~0u, SSL_SHA384, 0},
|
706
721
|
|
707
722
|
/* Legacy protocol minimum version aliases. "TLSv1" is intentionally the
|
708
723
|
* same as "SSLv3". */
|
709
|
-
{"SSLv3", ~
|
710
|
-
{"TLSv1", ~
|
711
|
-
{"TLSv1.2", ~
|
724
|
+
{"SSLv3", ~SSL_kCECPQ1, ~0u, ~SSL_eNULL, ~0u, SSL3_VERSION},
|
725
|
+
{"TLSv1", ~SSL_kCECPQ1, ~0u, ~SSL_eNULL, ~0u, SSL3_VERSION},
|
726
|
+
{"TLSv1.2", ~SSL_kCECPQ1, ~0u, ~SSL_eNULL, ~0u, TLS1_2_VERSION},
|
712
727
|
|
713
728
|
/* Legacy strength classes. */
|
714
|
-
{"
|
715
|
-
{"
|
716
|
-
{"FIPS", ~0u, ~0u, ~(SSL_eNULL|SSL_RC4), ~0u, 0},
|
729
|
+
{"HIGH", ~SSL_kCECPQ1, ~0u, ~SSL_eNULL, ~0u, 0},
|
730
|
+
{"FIPS", ~SSL_kCECPQ1, ~0u, ~SSL_eNULL, ~0u, 0},
|
717
731
|
};
|
718
732
|
|
719
|
-
static const size_t kCipherAliasesLen =
|
720
|
-
sizeof(kCipherAliases) / sizeof(kCipherAliases[0]);
|
733
|
+
static const size_t kCipherAliasesLen = OPENSSL_ARRAY_SIZE(kCipherAliases);
|
721
734
|
|
722
735
|
static int ssl_cipher_id_cmp(const void *in_a, const void *in_b) {
|
723
736
|
const SSL_CIPHER *a = in_a;
|
@@ -756,46 +769,24 @@ int ssl_cipher_get_evp_aead(const EVP_AEAD **out_aead,
|
|
756
769
|
case SSL_AES128GCM:
|
757
770
|
*out_aead = EVP_aead_aes_128_gcm();
|
758
771
|
*out_fixed_iv_len = 4;
|
759
|
-
|
772
|
+
break;
|
760
773
|
|
761
774
|
case SSL_AES256GCM:
|
762
775
|
*out_aead = EVP_aead_aes_256_gcm();
|
763
776
|
*out_fixed_iv_len = 4;
|
764
|
-
|
777
|
+
break;
|
765
778
|
|
766
779
|
#if !defined(BORINGSSL_ANDROID_SYSTEM)
|
767
780
|
case SSL_CHACHA20POLY1305_OLD:
|
768
781
|
*out_aead = EVP_aead_chacha20_poly1305_old();
|
769
782
|
*out_fixed_iv_len = 0;
|
770
|
-
|
783
|
+
break;
|
771
784
|
#endif
|
772
785
|
|
773
786
|
case SSL_CHACHA20POLY1305:
|
774
787
|
*out_aead = EVP_aead_chacha20_poly1305();
|
775
788
|
*out_fixed_iv_len = 12;
|
776
|
-
|
777
|
-
|
778
|
-
case SSL_RC4:
|
779
|
-
switch (cipher->algorithm_mac) {
|
780
|
-
case SSL_MD5:
|
781
|
-
if (version == SSL3_VERSION) {
|
782
|
-
*out_aead = EVP_aead_rc4_md5_ssl3();
|
783
|
-
} else {
|
784
|
-
*out_aead = EVP_aead_rc4_md5_tls();
|
785
|
-
}
|
786
|
-
*out_mac_secret_len = MD5_DIGEST_LENGTH;
|
787
|
-
return 1;
|
788
|
-
case SSL_SHA1:
|
789
|
-
if (version == SSL3_VERSION) {
|
790
|
-
*out_aead = EVP_aead_rc4_sha1_ssl3();
|
791
|
-
} else {
|
792
|
-
*out_aead = EVP_aead_rc4_sha1_tls();
|
793
|
-
}
|
794
|
-
*out_mac_secret_len = SHA_DIGEST_LENGTH;
|
795
|
-
return 1;
|
796
|
-
default:
|
797
|
-
return 0;
|
798
|
-
}
|
789
|
+
break;
|
799
790
|
|
800
791
|
case SSL_AES128:
|
801
792
|
switch (cipher->algorithm_mac) {
|
@@ -810,14 +801,15 @@ int ssl_cipher_get_evp_aead(const EVP_AEAD **out_aead,
|
|
810
801
|
*out_aead = EVP_aead_aes_128_cbc_sha1_tls();
|
811
802
|
}
|
812
803
|
*out_mac_secret_len = SHA_DIGEST_LENGTH;
|
813
|
-
|
804
|
+
break;
|
814
805
|
case SSL_SHA256:
|
815
806
|
*out_aead = EVP_aead_aes_128_cbc_sha256_tls();
|
816
807
|
*out_mac_secret_len = SHA256_DIGEST_LENGTH;
|
817
|
-
|
808
|
+
break;
|
818
809
|
default:
|
819
810
|
return 0;
|
820
811
|
}
|
812
|
+
break;
|
821
813
|
|
822
814
|
case SSL_AES256:
|
823
815
|
switch (cipher->algorithm_mac) {
|
@@ -832,18 +824,19 @@ int ssl_cipher_get_evp_aead(const EVP_AEAD **out_aead,
|
|
832
824
|
*out_aead = EVP_aead_aes_256_cbc_sha1_tls();
|
833
825
|
}
|
834
826
|
*out_mac_secret_len = SHA_DIGEST_LENGTH;
|
835
|
-
|
827
|
+
break;
|
836
828
|
case SSL_SHA256:
|
837
829
|
*out_aead = EVP_aead_aes_256_cbc_sha256_tls();
|
838
830
|
*out_mac_secret_len = SHA256_DIGEST_LENGTH;
|
839
|
-
|
831
|
+
break;
|
840
832
|
case SSL_SHA384:
|
841
833
|
*out_aead = EVP_aead_aes_256_cbc_sha384_tls();
|
842
834
|
*out_mac_secret_len = SHA384_DIGEST_LENGTH;
|
843
|
-
|
835
|
+
break;
|
844
836
|
default:
|
845
837
|
return 0;
|
846
838
|
}
|
839
|
+
break;
|
847
840
|
|
848
841
|
case SSL_3DES:
|
849
842
|
switch (cipher->algorithm_mac) {
|
@@ -858,10 +851,11 @@ int ssl_cipher_get_evp_aead(const EVP_AEAD **out_aead,
|
|
858
851
|
*out_aead = EVP_aead_des_ede3_cbc_sha1_tls();
|
859
852
|
}
|
860
853
|
*out_mac_secret_len = SHA_DIGEST_LENGTH;
|
861
|
-
|
854
|
+
break;
|
862
855
|
default:
|
863
856
|
return 0;
|
864
857
|
}
|
858
|
+
break;
|
865
859
|
|
866
860
|
case SSL_eNULL:
|
867
861
|
switch (cipher->algorithm_mac) {
|
@@ -872,14 +866,25 @@ int ssl_cipher_get_evp_aead(const EVP_AEAD **out_aead,
|
|
872
866
|
*out_aead = EVP_aead_null_sha1_tls();
|
873
867
|
}
|
874
868
|
*out_mac_secret_len = SHA_DIGEST_LENGTH;
|
875
|
-
|
869
|
+
break;
|
876
870
|
default:
|
877
871
|
return 0;
|
878
872
|
}
|
873
|
+
break;
|
879
874
|
|
880
875
|
default:
|
881
876
|
return 0;
|
882
877
|
}
|
878
|
+
|
879
|
+
/* In TLS 1.3, the iv_len is equal to the AEAD nonce length whereas the code
|
880
|
+
* above computes the TLS 1.2 construction.
|
881
|
+
*
|
882
|
+
* TODO(davidben,svaldez): Avoid computing the wrong value and fixing it. */
|
883
|
+
if (version >= TLS1_3_VERSION) {
|
884
|
+
*out_fixed_iv_len = EVP_AEAD_nonce_length(*out_aead);
|
885
|
+
assert(*out_fixed_iv_len >= 8);
|
886
|
+
}
|
887
|
+
return 1;
|
883
888
|
}
|
884
889
|
|
885
890
|
const EVP_MD *ssl_get_handshake_digest(uint32_t algorithm_prf) {
|
@@ -952,8 +957,7 @@ static void ssl_cipher_collect_ciphers(const SSL_PROTOCOL_METHOD *ssl_method,
|
|
952
957
|
/* The set of ciphers is static, but some subset may be unsupported by
|
953
958
|
* |ssl_method|, so the list may be smaller. */
|
954
959
|
size_t co_list_num = 0;
|
955
|
-
size_t i;
|
956
|
-
for (i = 0; i < kCiphersLen; i++) {
|
960
|
+
for (size_t i = 0; i < kCiphersLen; i++) {
|
957
961
|
const SSL_CIPHER *cipher = &kCiphers[i];
|
958
962
|
if (ssl_method->supports_cipher(cipher)) {
|
959
963
|
co_list[co_list_num].cipher = cipher;
|
@@ -972,7 +976,7 @@ static void ssl_cipher_collect_ciphers(const SSL_PROTOCOL_METHOD *ssl_method,
|
|
972
976
|
if (co_list_num > 1) {
|
973
977
|
co_list[0].next = &co_list[1];
|
974
978
|
|
975
|
-
for (i = 1; i < co_list_num - 1; i++) {
|
979
|
+
for (size_t i = 1; i < co_list_num - 1; i++) {
|
976
980
|
co_list[i].prev = &co_list[i - 1];
|
977
981
|
co_list[i].next = &co_list[i + 1];
|
978
982
|
}
|
@@ -1051,13 +1055,22 @@ static void ssl_cipher_apply_rule(
|
|
1051
1055
|
if (strength_bits != SSL_CIPHER_get_bits(cp, NULL)) {
|
1052
1056
|
continue;
|
1053
1057
|
}
|
1054
|
-
} else
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1058
|
+
} else {
|
1059
|
+
if (!(alg_mkey & cp->algorithm_mkey) ||
|
1060
|
+
!(alg_auth & cp->algorithm_auth) ||
|
1061
|
+
!(alg_enc & cp->algorithm_enc) ||
|
1062
|
+
!(alg_mac & cp->algorithm_mac) ||
|
1063
|
+
(min_version != 0 && SSL_CIPHER_get_min_version(cp) != min_version)) {
|
1064
|
+
continue;
|
1065
|
+
}
|
1066
|
+
|
1067
|
+
/* The following ciphers are internal implementation details of TLS 1.3
|
1068
|
+
* resumption but are not yet finalized. Disable them by default until
|
1069
|
+
* then. */
|
1070
|
+
if (cp->id == TLS1_CK_ECDHE_PSK_WITH_AES_128_GCM_SHA256 ||
|
1071
|
+
cp->id == TLS1_CK_ECDHE_PSK_WITH_AES_256_GCM_SHA384) {
|
1072
|
+
continue;
|
1073
|
+
}
|
1061
1074
|
}
|
1062
1075
|
|
1063
1076
|
/* add the cipher if it has not been added yet. */
|
@@ -1405,6 +1418,7 @@ ssl_create_cipher_list(const SSL_PROTOCOL_METHOD *ssl_method,
|
|
1405
1418
|
|
1406
1419
|
/* Everything else being equal, prefer ECDHE_ECDSA then ECDHE_RSA over other
|
1407
1420
|
* key exchange mechanisms */
|
1421
|
+
|
1408
1422
|
ssl_cipher_apply_rule(0, SSL_kECDHE, SSL_aECDSA, ~0u, ~0u, 0, CIPHER_ADD, -1,
|
1409
1423
|
0, &head, &tail);
|
1410
1424
|
ssl_cipher_apply_rule(0, SSL_kECDHE, ~0u, ~0u, ~0u, 0, CIPHER_ADD, -1, 0,
|
@@ -1417,10 +1431,10 @@ ssl_create_cipher_list(const SSL_PROTOCOL_METHOD *ssl_method,
|
|
1417
1431
|
* AES_GCM. Of the two CHACHA20 variants, the new one is preferred over the
|
1418
1432
|
* old one. */
|
1419
1433
|
if (EVP_has_aes_hardware()) {
|
1420
|
-
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES256GCM, ~0u, 0, CIPHER_ADD, -1, 0,
|
1421
|
-
&head, &tail);
|
1422
1434
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES128GCM, ~0u, 0, CIPHER_ADD, -1, 0,
|
1423
1435
|
&head, &tail);
|
1436
|
+
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES256GCM, ~0u, 0, CIPHER_ADD, -1, 0,
|
1437
|
+
&head, &tail);
|
1424
1438
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_CHACHA20POLY1305, ~0u, 0, CIPHER_ADD,
|
1425
1439
|
-1, 0, &head, &tail);
|
1426
1440
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_CHACHA20POLY1305_OLD, ~0u, 0,
|
@@ -1430,21 +1444,17 @@ ssl_create_cipher_list(const SSL_PROTOCOL_METHOD *ssl_method,
|
|
1430
1444
|
-1, 0, &head, &tail);
|
1431
1445
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_CHACHA20POLY1305_OLD, ~0u, 0,
|
1432
1446
|
CIPHER_ADD, -1, 0, &head, &tail);
|
1433
|
-
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES256GCM, ~0u, 0, CIPHER_ADD, -1, 0,
|
1434
|
-
&head, &tail);
|
1435
1447
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES128GCM, ~0u, 0, CIPHER_ADD, -1, 0,
|
1436
1448
|
&head, &tail);
|
1449
|
+
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES256GCM, ~0u, 0, CIPHER_ADD, -1, 0,
|
1450
|
+
&head, &tail);
|
1437
1451
|
}
|
1438
1452
|
|
1439
|
-
/* Then the legacy non-AEAD ciphers:
|
1440
|
-
*
|
1441
|
-
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES256, ~0u, 0, CIPHER_ADD, -1, 0,
|
1442
|
-
&head, &tail);
|
1453
|
+
/* Then the legacy non-AEAD ciphers: AES_128_CBC, AES_256_CBC,
|
1454
|
+
* 3DES_EDE_CBC_SHA. */
|
1443
1455
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES128, ~0u, 0, CIPHER_ADD, -1, 0,
|
1444
1456
|
&head, &tail);
|
1445
|
-
ssl_cipher_apply_rule(0, ~0u, ~0u,
|
1446
|
-
&head, &tail);
|
1447
|
-
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_RC4, SSL_MD5, 0, CIPHER_ADD, -1, 0,
|
1457
|
+
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_AES256, ~0u, 0, CIPHER_ADD, -1, 0,
|
1448
1458
|
&head, &tail);
|
1449
1459
|
ssl_cipher_apply_rule(0, ~0u, ~0u, SSL_3DES, ~0u, 0, CIPHER_ADD, -1, 0, &head,
|
1450
1460
|
&tail);
|
@@ -1565,6 +1575,30 @@ uint16_t ssl_cipher_get_value(const SSL_CIPHER *cipher) {
|
|
1565
1575
|
return id & 0xffff;
|
1566
1576
|
}
|
1567
1577
|
|
1578
|
+
int ssl_cipher_get_ecdhe_psk_cipher(const SSL_CIPHER *cipher,
|
1579
|
+
uint16_t *out_cipher) {
|
1580
|
+
switch (cipher->id) {
|
1581
|
+
case TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:
|
1582
|
+
case TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:
|
1583
|
+
case TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256:
|
1584
|
+
*out_cipher = TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 & 0xffff;
|
1585
|
+
return 1;
|
1586
|
+
|
1587
|
+
case TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
|
1588
|
+
case TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:
|
1589
|
+
case TLS1_CK_ECDHE_PSK_WITH_AES_128_GCM_SHA256:
|
1590
|
+
*out_cipher = TLS1_CK_ECDHE_PSK_WITH_AES_128_GCM_SHA256 & 0xffff;
|
1591
|
+
return 1;
|
1592
|
+
|
1593
|
+
case TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
|
1594
|
+
case TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:
|
1595
|
+
case TLS1_CK_ECDHE_PSK_WITH_AES_256_GCM_SHA384:
|
1596
|
+
*out_cipher = TLS1_CK_ECDHE_PSK_WITH_AES_256_GCM_SHA384 & 0xffff;
|
1597
|
+
return 1;
|
1598
|
+
}
|
1599
|
+
return 0;
|
1600
|
+
}
|
1601
|
+
|
1568
1602
|
int SSL_CIPHER_is_AES(const SSL_CIPHER *cipher) {
|
1569
1603
|
return (cipher->algorithm_enc & SSL_AES) != 0;
|
1570
1604
|
}
|
@@ -1577,6 +1611,10 @@ int SSL_CIPHER_has_SHA1_HMAC(const SSL_CIPHER *cipher) {
|
|
1577
1611
|
return (cipher->algorithm_mac & SSL_SHA1) != 0;
|
1578
1612
|
}
|
1579
1613
|
|
1614
|
+
int SSL_CIPHER_has_SHA256_HMAC(const SSL_CIPHER *cipher) {
|
1615
|
+
return (cipher->algorithm_mac & SSL_SHA256) != 0;
|
1616
|
+
}
|
1617
|
+
|
1580
1618
|
int SSL_CIPHER_is_AESGCM(const SSL_CIPHER *cipher) {
|
1581
1619
|
return (cipher->algorithm_enc & (SSL_AES128GCM | SSL_AES256GCM)) != 0;
|
1582
1620
|
}
|
@@ -1602,13 +1640,8 @@ int SSL_CIPHER_is_NULL(const SSL_CIPHER *cipher) {
|
|
1602
1640
|
return (cipher->algorithm_enc & SSL_eNULL) != 0;
|
1603
1641
|
}
|
1604
1642
|
|
1605
|
-
int SSL_CIPHER_is_RC4(const SSL_CIPHER *cipher) {
|
1606
|
-
return (cipher->algorithm_enc & SSL_RC4) != 0;
|
1607
|
-
}
|
1608
|
-
|
1609
1643
|
int SSL_CIPHER_is_block_cipher(const SSL_CIPHER *cipher) {
|
1610
|
-
|
1611
|
-
return (cipher->algorithm_enc & (SSL_RC4 | SSL_eNULL)) == 0 &&
|
1644
|
+
return (cipher->algorithm_enc & SSL_eNULL) == 0 &&
|
1612
1645
|
cipher->algorithm_mac != SSL_AEAD;
|
1613
1646
|
}
|
1614
1647
|
|
@@ -1616,10 +1649,18 @@ int SSL_CIPHER_is_ECDSA(const SSL_CIPHER *cipher) {
|
|
1616
1649
|
return (cipher->algorithm_auth & SSL_aECDSA) != 0;
|
1617
1650
|
}
|
1618
1651
|
|
1652
|
+
int SSL_CIPHER_is_DHE(const SSL_CIPHER *cipher) {
|
1653
|
+
return (cipher->algorithm_mkey & SSL_kDHE) != 0;
|
1654
|
+
}
|
1655
|
+
|
1619
1656
|
int SSL_CIPHER_is_ECDHE(const SSL_CIPHER *cipher) {
|
1620
1657
|
return (cipher->algorithm_mkey & SSL_kECDHE) != 0;
|
1621
1658
|
}
|
1622
1659
|
|
1660
|
+
int SSL_CIPHER_is_CECPQ1(const SSL_CIPHER *cipher) {
|
1661
|
+
return (cipher->algorithm_mkey & SSL_kCECPQ1) != 0;
|
1662
|
+
}
|
1663
|
+
|
1623
1664
|
uint16_t SSL_CIPHER_get_min_version(const SSL_CIPHER *cipher) {
|
1624
1665
|
if (cipher->algorithm_prf != SSL_HANDSHAKE_MAC_DEFAULT) {
|
1625
1666
|
/* Cipher suites before TLS 1.2 use the default PRF, while all those added
|
@@ -1629,6 +1670,17 @@ uint16_t SSL_CIPHER_get_min_version(const SSL_CIPHER *cipher) {
|
|
1629
1670
|
return SSL3_VERSION;
|
1630
1671
|
}
|
1631
1672
|
|
1673
|
+
uint16_t SSL_CIPHER_get_max_version(const SSL_CIPHER *cipher) {
|
1674
|
+
if (cipher->algorithm_mac == SSL_AEAD &&
|
1675
|
+
(cipher->algorithm_enc & SSL_CHACHA20POLY1305_OLD) == 0 &&
|
1676
|
+
(cipher->algorithm_mkey & SSL_kECDHE) != 0 &&
|
1677
|
+
/* TODO(davidben,svaldez): Support PSK-based ciphers in TLS 1.3. */
|
1678
|
+
(cipher->algorithm_auth & SSL_aCERT) != 0) {
|
1679
|
+
return TLS1_3_VERSION;
|
1680
|
+
}
|
1681
|
+
return TLS1_2_VERSION;
|
1682
|
+
}
|
1683
|
+
|
1632
1684
|
/* return the actual cipher being used */
|
1633
1685
|
const char *SSL_CIPHER_get_name(const SSL_CIPHER *cipher) {
|
1634
1686
|
if (cipher != NULL) {
|
@@ -1669,6 +1721,17 @@ const char *SSL_CIPHER_get_kx_name(const SSL_CIPHER *cipher) {
|
|
1669
1721
|
return "UNKNOWN";
|
1670
1722
|
}
|
1671
1723
|
|
1724
|
+
case SSL_kCECPQ1:
|
1725
|
+
switch (cipher->algorithm_auth) {
|
1726
|
+
case SSL_aECDSA:
|
1727
|
+
return "CECPQ1_ECDSA";
|
1728
|
+
case SSL_aRSA:
|
1729
|
+
return "CECPQ1_RSA";
|
1730
|
+
default:
|
1731
|
+
assert(0);
|
1732
|
+
return "UNKNOWN";
|
1733
|
+
}
|
1734
|
+
|
1672
1735
|
case SSL_kPSK:
|
1673
1736
|
assert(cipher->algorithm_auth == SSL_aPSK);
|
1674
1737
|
return "PSK";
|
@@ -1683,8 +1746,6 @@ static const char *ssl_cipher_get_enc_name(const SSL_CIPHER *cipher) {
|
|
1683
1746
|
switch (cipher->algorithm_enc) {
|
1684
1747
|
case SSL_3DES:
|
1685
1748
|
return "3DES_EDE_CBC";
|
1686
|
-
case SSL_RC4:
|
1687
|
-
return "RC4";
|
1688
1749
|
case SSL_AES128:
|
1689
1750
|
return "AES_128_CBC";
|
1690
1751
|
case SSL_AES256:
|
@@ -1763,7 +1824,6 @@ int SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *out_alg_bits) {
|
|
1763
1824
|
switch (cipher->algorithm_enc) {
|
1764
1825
|
case SSL_AES128:
|
1765
1826
|
case SSL_AES128GCM:
|
1766
|
-
case SSL_RC4:
|
1767
1827
|
alg_bits = 128;
|
1768
1828
|
strength_bits = 128;
|
1769
1829
|
break;
|
@@ -1823,6 +1883,10 @@ const char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf,
|
|
1823
1883
|
kx = "ECDH";
|
1824
1884
|
break;
|
1825
1885
|
|
1886
|
+
case SSL_kCECPQ1:
|
1887
|
+
kx = "CECPQ1";
|
1888
|
+
break;
|
1889
|
+
|
1826
1890
|
case SSL_kPSK:
|
1827
1891
|
kx = "PSK";
|
1828
1892
|
break;
|
@@ -1854,10 +1918,6 @@ const char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf,
|
|
1854
1918
|
enc = "3DES(168)";
|
1855
1919
|
break;
|
1856
1920
|
|
1857
|
-
case SSL_RC4:
|
1858
|
-
enc = "RC4(128)";
|
1859
|
-
break;
|
1860
|
-
|
1861
1921
|
case SSL_AES128:
|
1862
1922
|
enc = "AES(128)";
|
1863
1923
|
break;
|
@@ -1954,20 +2014,15 @@ int ssl_cipher_get_key_type(const SSL_CIPHER *cipher) {
|
|
1954
2014
|
return EVP_PKEY_NONE;
|
1955
2015
|
}
|
1956
2016
|
|
1957
|
-
int
|
1958
|
-
|
1959
|
-
* supported.) */
|
1960
|
-
if (cipher->algorithm_auth & SSL_aPSK) {
|
1961
|
-
return 0;
|
1962
|
-
}
|
1963
|
-
|
1964
|
-
/* All other ciphers include it. */
|
1965
|
-
return 1;
|
2017
|
+
int ssl_cipher_uses_certificate_auth(const SSL_CIPHER *cipher) {
|
2018
|
+
return (cipher->algorithm_auth & SSL_aCERT) != 0;
|
1966
2019
|
}
|
1967
2020
|
|
1968
2021
|
int ssl_cipher_requires_server_key_exchange(const SSL_CIPHER *cipher) {
|
1969
2022
|
/* Ephemeral Diffie-Hellman key exchanges require a ServerKeyExchange. */
|
1970
|
-
if (cipher->algorithm_mkey & SSL_kDHE ||
|
2023
|
+
if (cipher->algorithm_mkey & SSL_kDHE ||
|
2024
|
+
cipher->algorithm_mkey & SSL_kECDHE ||
|
2025
|
+
cipher->algorithm_mkey & SSL_kCECPQ1) {
|
1971
2026
|
return 1;
|
1972
2027
|
}
|
1973
2028
|
|