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
@@ -37,6 +37,7 @@ static int cbb_init(CBB *cbb, uint8_t *buf, size_t cap) {
|
|
37
37
|
base->len = 0;
|
38
38
|
base->cap = cap;
|
39
39
|
base->can_resize = 1;
|
40
|
+
base->error = 0;
|
40
41
|
|
41
42
|
cbb->base = base;
|
42
43
|
cbb->is_top_level = 1;
|
@@ -95,7 +96,7 @@ static int cbb_buffer_reserve(struct cbb_buffer_st *base, uint8_t **out,
|
|
95
96
|
newlen = base->len + len;
|
96
97
|
if (newlen < base->len) {
|
97
98
|
/* Overflow */
|
98
|
-
|
99
|
+
goto err;
|
99
100
|
}
|
100
101
|
|
101
102
|
if (newlen > base->cap) {
|
@@ -103,7 +104,7 @@ static int cbb_buffer_reserve(struct cbb_buffer_st *base, uint8_t **out,
|
|
103
104
|
uint8_t *newbuf;
|
104
105
|
|
105
106
|
if (!base->can_resize) {
|
106
|
-
|
107
|
+
goto err;
|
107
108
|
}
|
108
109
|
|
109
110
|
if (newcap < base->cap || newcap < newlen) {
|
@@ -111,7 +112,7 @@ static int cbb_buffer_reserve(struct cbb_buffer_st *base, uint8_t **out,
|
|
111
112
|
}
|
112
113
|
newbuf = OPENSSL_realloc(base->buf, newcap);
|
113
114
|
if (newbuf == NULL) {
|
114
|
-
|
115
|
+
goto err;
|
115
116
|
}
|
116
117
|
|
117
118
|
base->buf = newbuf;
|
@@ -123,6 +124,10 @@ static int cbb_buffer_reserve(struct cbb_buffer_st *base, uint8_t **out,
|
|
123
124
|
}
|
124
125
|
|
125
126
|
return 1;
|
127
|
+
|
128
|
+
err:
|
129
|
+
base->error = 1;
|
130
|
+
return 0;
|
126
131
|
}
|
127
132
|
|
128
133
|
static int cbb_buffer_add(struct cbb_buffer_st *base, uint8_t **out,
|
@@ -137,20 +142,25 @@ static int cbb_buffer_add(struct cbb_buffer_st *base, uint8_t **out,
|
|
137
142
|
|
138
143
|
static int cbb_buffer_add_u(struct cbb_buffer_st *base, uint32_t v,
|
139
144
|
size_t len_len) {
|
140
|
-
uint8_t *buf;
|
141
|
-
size_t i;
|
142
|
-
|
143
145
|
if (len_len == 0) {
|
144
146
|
return 1;
|
145
147
|
}
|
148
|
+
|
149
|
+
uint8_t *buf;
|
146
150
|
if (!cbb_buffer_add(base, &buf, len_len)) {
|
147
151
|
return 0;
|
148
152
|
}
|
149
153
|
|
150
|
-
for (i = len_len - 1; i < len_len; i--) {
|
154
|
+
for (size_t i = len_len - 1; i < len_len; i--) {
|
151
155
|
buf[i] = v;
|
152
156
|
v >>= 8;
|
153
157
|
}
|
158
|
+
|
159
|
+
if (v != 0) {
|
160
|
+
base->error = 1;
|
161
|
+
return 0;
|
162
|
+
}
|
163
|
+
|
154
164
|
return 1;
|
155
165
|
}
|
156
166
|
|
@@ -185,7 +195,10 @@ int CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len) {
|
|
185
195
|
int CBB_flush(CBB *cbb) {
|
186
196
|
size_t child_start, i, len;
|
187
197
|
|
188
|
-
|
198
|
+
/* If |cbb->base| has hit an error, the buffer is in an undefined state, so
|
199
|
+
* fail all following calls. In particular, |cbb->child| may point to invalid
|
200
|
+
* memory. */
|
201
|
+
if (cbb->base == NULL || cbb->base->error) {
|
189
202
|
return 0;
|
190
203
|
}
|
191
204
|
|
@@ -198,7 +211,7 @@ int CBB_flush(CBB *cbb) {
|
|
198
211
|
if (!CBB_flush(cbb->child) ||
|
199
212
|
child_start < cbb->child->offset ||
|
200
213
|
cbb->base->len < child_start) {
|
201
|
-
|
214
|
+
goto err;
|
202
215
|
}
|
203
216
|
|
204
217
|
len = cbb->base->len - child_start;
|
@@ -207,14 +220,14 @@ int CBB_flush(CBB *cbb) {
|
|
207
220
|
/* For ASN.1 we assume that we'll only need a single byte for the length.
|
208
221
|
* If that turned out to be incorrect, we have to move the contents along
|
209
222
|
* in order to make space. */
|
210
|
-
|
223
|
+
uint8_t len_len;
|
211
224
|
uint8_t initial_length_byte;
|
212
225
|
|
213
226
|
assert (cbb->child->pending_len_len == 1);
|
214
227
|
|
215
228
|
if (len > 0xfffffffe) {
|
216
229
|
/* Too large. */
|
217
|
-
|
230
|
+
goto err;
|
218
231
|
} else if (len > 0xffffff) {
|
219
232
|
len_len = 5;
|
220
233
|
initial_length_byte = 0x80 | 4;
|
@@ -229,7 +242,7 @@ int CBB_flush(CBB *cbb) {
|
|
229
242
|
initial_length_byte = 0x80 | 1;
|
230
243
|
} else {
|
231
244
|
len_len = 1;
|
232
|
-
initial_length_byte = len;
|
245
|
+
initial_length_byte = (uint8_t)len;
|
233
246
|
len = 0;
|
234
247
|
}
|
235
248
|
|
@@ -237,7 +250,7 @@ int CBB_flush(CBB *cbb) {
|
|
237
250
|
/* We need to move the contents along in order to make space. */
|
238
251
|
size_t extra_bytes = len_len - 1;
|
239
252
|
if (!cbb_buffer_add(cbb->base, NULL, extra_bytes)) {
|
240
|
-
|
253
|
+
goto err;
|
241
254
|
}
|
242
255
|
memmove(cbb->base->buf + child_start + extra_bytes,
|
243
256
|
cbb->base->buf + child_start, len);
|
@@ -248,17 +261,21 @@ int CBB_flush(CBB *cbb) {
|
|
248
261
|
|
249
262
|
for (i = cbb->child->pending_len_len - 1; i < cbb->child->pending_len_len;
|
250
263
|
i--) {
|
251
|
-
cbb->base->buf[cbb->child->offset + i] = len;
|
264
|
+
cbb->base->buf[cbb->child->offset + i] = (uint8_t)len;
|
252
265
|
len >>= 8;
|
253
266
|
}
|
254
267
|
if (len != 0) {
|
255
|
-
|
268
|
+
goto err;
|
256
269
|
}
|
257
270
|
|
258
271
|
cbb->child->base = NULL;
|
259
272
|
cbb->child = NULL;
|
260
273
|
|
261
274
|
return 1;
|
275
|
+
|
276
|
+
err:
|
277
|
+
cbb->base->error = 1;
|
278
|
+
return 0;
|
262
279
|
}
|
263
280
|
|
264
281
|
const uint8_t *CBB_data(const CBB *cbb) {
|
@@ -274,7 +291,7 @@ size_t CBB_len(const CBB *cbb) {
|
|
274
291
|
}
|
275
292
|
|
276
293
|
static int cbb_add_length_prefixed(CBB *cbb, CBB *out_contents,
|
277
|
-
|
294
|
+
uint8_t len_len) {
|
278
295
|
uint8_t *prefix_bytes;
|
279
296
|
|
280
297
|
if (!CBB_flush(cbb)) {
|
@@ -309,14 +326,18 @@ int CBB_add_u24_length_prefixed(CBB *cbb, CBB *out_contents) {
|
|
309
326
|
return cbb_add_length_prefixed(cbb, out_contents, 3);
|
310
327
|
}
|
311
328
|
|
312
|
-
int CBB_add_asn1(CBB *cbb, CBB *out_contents,
|
313
|
-
if (
|
314
|
-
|
329
|
+
int CBB_add_asn1(CBB *cbb, CBB *out_contents, unsigned tag) {
|
330
|
+
if (tag > 0xff ||
|
331
|
+
(tag & 0x1f) == 0x1f) {
|
332
|
+
/* Long form identifier octets are not supported. Further, all current valid
|
333
|
+
* tag serializations are 8 bits. */
|
334
|
+
cbb->base->error = 1;
|
315
335
|
return 0;
|
316
336
|
}
|
317
337
|
|
318
338
|
if (!CBB_flush(cbb) ||
|
319
|
-
|
339
|
+
/* |tag|'s representation matches the DER encoding. */
|
340
|
+
!CBB_add_u8(cbb, (uint8_t)tag)) {
|
320
341
|
return 0;
|
321
342
|
}
|
322
343
|
|
@@ -397,6 +418,14 @@ int CBB_add_u24(CBB *cbb, uint32_t value) {
|
|
397
418
|
return cbb_buffer_add_u(cbb->base, value, 3);
|
398
419
|
}
|
399
420
|
|
421
|
+
int CBB_add_u32(CBB *cbb, uint32_t value) {
|
422
|
+
if (!CBB_flush(cbb)) {
|
423
|
+
return 0;
|
424
|
+
}
|
425
|
+
|
426
|
+
return cbb_buffer_add_u(cbb->base, value, 4);
|
427
|
+
}
|
428
|
+
|
400
429
|
void CBB_discard_child(CBB *cbb) {
|
401
430
|
if (cbb->child == NULL) {
|
402
431
|
return;
|
@@ -410,14 +439,13 @@ void CBB_discard_child(CBB *cbb) {
|
|
410
439
|
|
411
440
|
int CBB_add_asn1_uint64(CBB *cbb, uint64_t value) {
|
412
441
|
CBB child;
|
413
|
-
size_t i;
|
414
442
|
int started = 0;
|
415
443
|
|
416
444
|
if (!CBB_add_asn1(cbb, &child, CBS_ASN1_INTEGER)) {
|
417
445
|
return 0;
|
418
446
|
}
|
419
447
|
|
420
|
-
for (i = 0; i < 8; i++) {
|
448
|
+
for (size_t i = 0; i < 8; i++) {
|
421
449
|
uint8_t byte = (value >> 8*(7-i)) & 0xff;
|
422
450
|
if (!started) {
|
423
451
|
if (byte == 0) {
|
@@ -88,13 +88,12 @@ int CBS_mem_equal(const CBS *cbs, const uint8_t *data, size_t len) {
|
|
88
88
|
|
89
89
|
static int cbs_get_u(CBS *cbs, uint32_t *out, size_t len) {
|
90
90
|
uint32_t result = 0;
|
91
|
-
size_t i;
|
92
91
|
const uint8_t *data;
|
93
92
|
|
94
93
|
if (!cbs_get(cbs, &data, len)) {
|
95
94
|
return 0;
|
96
95
|
}
|
97
|
-
for (i = 0; i < len; i++) {
|
96
|
+
for (size_t i = 0; i < len; i++) {
|
98
97
|
result <<= 8;
|
99
98
|
result |= data[i];
|
100
99
|
}
|
@@ -128,6 +127,15 @@ int CBS_get_u32(CBS *cbs, uint32_t *out) {
|
|
128
127
|
return cbs_get_u(cbs, out, 4);
|
129
128
|
}
|
130
129
|
|
130
|
+
int CBS_get_last_u8(CBS *cbs, uint8_t *out) {
|
131
|
+
if (cbs->len == 0) {
|
132
|
+
return 0;
|
133
|
+
}
|
134
|
+
*out = cbs->data[cbs->len - 1];
|
135
|
+
cbs->len--;
|
136
|
+
return 1;
|
137
|
+
}
|
138
|
+
|
131
139
|
int CBS_get_bytes(CBS *cbs, CBS *out, size_t len) {
|
132
140
|
const uint8_t *v;
|
133
141
|
if (!cbs_get(cbs, &v, len)) {
|
@@ -181,8 +189,14 @@ static int cbs_get_any_asn1_element(CBS *cbs, CBS *out, unsigned *out_tag,
|
|
181
189
|
return 0;
|
182
190
|
}
|
183
191
|
|
192
|
+
/* ITU-T X.690 section 8.1.2.3 specifies the format for identifiers with a tag
|
193
|
+
* number no greater than 30.
|
194
|
+
*
|
195
|
+
* If the number portion is 31 (0x1f, the largest value that fits in the
|
196
|
+
* allotted bits), then the tag is more than one byte long and the
|
197
|
+
* continuation bytes contain the tag number. This parser only supports tag
|
198
|
+
* numbers less than 31 (and thus single-byte tags). */
|
184
199
|
if ((tag & 0x1f) == 0x1f) {
|
185
|
-
/* Long form tags are not supported. */
|
186
200
|
return 0;
|
187
201
|
}
|
188
202
|
|
@@ -191,6 +205,8 @@ static int cbs_get_any_asn1_element(CBS *cbs, CBS *out, unsigned *out_tag,
|
|
191
205
|
}
|
192
206
|
|
193
207
|
size_t len;
|
208
|
+
/* The format for the length encoding is specified in ITU-T X.690 section
|
209
|
+
* 8.1.3. */
|
194
210
|
if ((length_byte & 0x80) == 0) {
|
195
211
|
/* Short form length. */
|
196
212
|
len = ((size_t) length_byte) + 2;
|
@@ -198,7 +214,9 @@ static int cbs_get_any_asn1_element(CBS *cbs, CBS *out, unsigned *out_tag,
|
|
198
214
|
*out_header_len = 2;
|
199
215
|
}
|
200
216
|
} else {
|
201
|
-
/*
|
217
|
+
/* The high bit indicate that this is the long form, while the next 7 bits
|
218
|
+
* encode the number of subsequent octets used to encode the length (ITU-T
|
219
|
+
* X.690 clause 8.1.3.5.b). */
|
202
220
|
const size_t num_bytes = length_byte & 0x7f;
|
203
221
|
uint32_t len32;
|
204
222
|
|
@@ -210,12 +228,18 @@ static int cbs_get_any_asn1_element(CBS *cbs, CBS *out, unsigned *out_tag,
|
|
210
228
|
return CBS_get_bytes(cbs, out, 2);
|
211
229
|
}
|
212
230
|
|
231
|
+
/* ITU-T X.690 clause 8.1.3.5.c specifies that the value 0xff shall not be
|
232
|
+
* used as the first byte of the length. If this parser encounters that
|
233
|
+
* value, num_bytes will be parsed as 127, which will fail the check below.
|
234
|
+
*/
|
213
235
|
if (num_bytes == 0 || num_bytes > 4) {
|
214
236
|
return 0;
|
215
237
|
}
|
216
238
|
if (!cbs_get_u(&header, &len32, num_bytes)) {
|
217
239
|
return 0;
|
218
240
|
}
|
241
|
+
/* ITU-T X.690 section 10.1 (DER length forms) requires encoding the length
|
242
|
+
* with the minimum number of octets. */
|
219
243
|
if (len32 < 128) {
|
220
244
|
/* Length should have used short-form encoding. */
|
221
245
|
return 0;
|
@@ -16,21 +16,64 @@
|
|
16
16
|
|
17
17
|
#include <openssl/chacha.h>
|
18
18
|
|
19
|
+
#include <assert.h>
|
19
20
|
#include <string.h>
|
20
21
|
|
21
22
|
#include <openssl/cpu.h>
|
22
23
|
|
24
|
+
#include "../internal.h"
|
23
25
|
|
24
|
-
|
26
|
+
|
27
|
+
#define U8TO32_LITTLE(p) \
|
28
|
+
(((uint32_t)((p)[0])) | ((uint32_t)((p)[1]) << 8) | \
|
29
|
+
((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24))
|
30
|
+
|
31
|
+
#if !defined(OPENSSL_NO_ASM) && \
|
32
|
+
(defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
|
33
|
+
defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
|
34
|
+
|
35
|
+
/* ChaCha20_ctr32 is defined in asm/chacha-*.pl. */
|
36
|
+
void ChaCha20_ctr32(uint8_t *out, const uint8_t *in, size_t in_len,
|
37
|
+
const uint32_t key[8], const uint32_t counter[4]);
|
38
|
+
|
39
|
+
void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
|
40
|
+
const uint8_t key[32], const uint8_t nonce[12],
|
41
|
+
uint32_t counter) {
|
42
|
+
assert(!buffers_alias(out, in_len, in, in_len) || in == out);
|
43
|
+
|
44
|
+
uint32_t counter_nonce[4]; counter_nonce[0] = counter;
|
45
|
+
counter_nonce[1] = U8TO32_LITTLE(nonce + 0);
|
46
|
+
counter_nonce[2] = U8TO32_LITTLE(nonce + 4);
|
47
|
+
counter_nonce[3] = U8TO32_LITTLE(nonce + 8);
|
48
|
+
|
49
|
+
const uint32_t *key_ptr = (const uint32_t *)key;
|
50
|
+
#if !defined(OPENSSL_X86) && !defined(OPENSSL_X86_64)
|
51
|
+
/* The assembly expects the key to be four-byte aligned. */
|
52
|
+
uint32_t key_u32[8];
|
53
|
+
if ((((uintptr_t)key) & 3) != 0) {
|
54
|
+
key_u32[0] = U8TO32_LITTLE(key + 0);
|
55
|
+
key_u32[1] = U8TO32_LITTLE(key + 4);
|
56
|
+
key_u32[2] = U8TO32_LITTLE(key + 8);
|
57
|
+
key_u32[3] = U8TO32_LITTLE(key + 12);
|
58
|
+
key_u32[4] = U8TO32_LITTLE(key + 16);
|
59
|
+
key_u32[5] = U8TO32_LITTLE(key + 20);
|
60
|
+
key_u32[6] = U8TO32_LITTLE(key + 24);
|
61
|
+
key_u32[7] = U8TO32_LITTLE(key + 28);
|
62
|
+
|
63
|
+
key_ptr = key_u32;
|
64
|
+
}
|
65
|
+
#endif
|
66
|
+
|
67
|
+
ChaCha20_ctr32(out, in, in_len, key_ptr, counter_nonce);
|
68
|
+
}
|
69
|
+
|
70
|
+
#else
|
25
71
|
|
26
72
|
/* sigma contains the ChaCha constants, which happen to be an ASCII string. */
|
27
73
|
static const uint8_t sigma[16] = { 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3',
|
28
74
|
'2', '-', 'b', 'y', 't', 'e', ' ', 'k' };
|
29
75
|
|
30
76
|
#define ROTATE(v, n) (((v) << (n)) | ((v) >> (32 - (n))))
|
31
|
-
#define XOR(v, w) ((v) ^ (w))
|
32
|
-
#define PLUS(x, y) ((x) + (y))
|
33
|
-
#define PLUSONE(v) (PLUS((v), 1))
|
34
77
|
|
35
78
|
#define U32TO8_LITTLE(p, v) \
|
36
79
|
{ \
|
@@ -40,23 +83,12 @@ static const uint8_t sigma[16] = { 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3',
|
|
40
83
|
(p)[3] = (v >> 24) & 0xff; \
|
41
84
|
}
|
42
85
|
|
43
|
-
#define U8TO32_LITTLE(p) \
|
44
|
-
(((uint32_t)((p)[0])) | ((uint32_t)((p)[1]) << 8) | \
|
45
|
-
((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24))
|
46
|
-
|
47
86
|
/* QUARTERROUND updates a, b, c, d with a ChaCha "quarter" round. */
|
48
|
-
#define QUARTERROUND(a,b,c,d)
|
49
|
-
x[a]
|
50
|
-
x[c]
|
51
|
-
x[a]
|
52
|
-
x[c]
|
53
|
-
|
54
|
-
#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
|
55
|
-
/* Defined in chacha_vec.c */
|
56
|
-
void CRYPTO_chacha_20_neon(uint8_t *out, const uint8_t *in, size_t in_len,
|
57
|
-
const uint8_t key[32], const uint8_t nonce[12],
|
58
|
-
uint32_t counter);
|
59
|
-
#endif
|
87
|
+
#define QUARTERROUND(a, b, c, d) \
|
88
|
+
x[a] += x[b]; x[d] = ROTATE(x[d] ^ x[a], 16); \
|
89
|
+
x[c] += x[d]; x[b] = ROTATE(x[b] ^ x[c], 12); \
|
90
|
+
x[a] += x[b]; x[d] = ROTATE(x[d] ^ x[a], 8); \
|
91
|
+
x[c] += x[d]; x[b] = ROTATE(x[b] ^ x[c], 7);
|
60
92
|
|
61
93
|
/* chacha_core performs 20 rounds of ChaCha on the input words in
|
62
94
|
* |input| and writes the 64 output bytes to |output|. */
|
@@ -77,7 +109,7 @@ static void chacha_core(uint8_t output[64], const uint32_t input[16]) {
|
|
77
109
|
}
|
78
110
|
|
79
111
|
for (i = 0; i < 16; ++i) {
|
80
|
-
x[i]
|
112
|
+
x[i] += input[i];
|
81
113
|
}
|
82
114
|
for (i = 0; i < 16; ++i) {
|
83
115
|
U32TO8_LITTLE(output + 4 * i, x[i]);
|
@@ -87,17 +119,12 @@ static void chacha_core(uint8_t output[64], const uint32_t input[16]) {
|
|
87
119
|
void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
|
88
120
|
const uint8_t key[32], const uint8_t nonce[12],
|
89
121
|
uint32_t counter) {
|
122
|
+
assert(!buffers_alias(out, in_len, in, in_len) || in == out);
|
123
|
+
|
90
124
|
uint32_t input[16];
|
91
125
|
uint8_t buf[64];
|
92
126
|
size_t todo, i;
|
93
127
|
|
94
|
-
#if defined(OPENSSL_ARM) && !defined(OPENSSL_NO_ASM)
|
95
|
-
if (CRYPTO_is_NEON_capable()) {
|
96
|
-
CRYPTO_chacha_20_neon(out, in, in_len, key, nonce, counter);
|
97
|
-
return;
|
98
|
-
}
|
99
|
-
#endif
|
100
|
-
|
101
128
|
input[0] = U8TO32_LITTLE(sigma + 0);
|
102
129
|
input[1] = U8TO32_LITTLE(sigma + 4);
|
103
130
|
input[2] = U8TO32_LITTLE(sigma + 8);
|
@@ -137,4 +164,4 @@ void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
|
|
137
164
|
}
|
138
165
|
}
|
139
166
|
|
140
|
-
#endif
|
167
|
+
#endif
|
@@ -20,6 +20,7 @@
|
|
20
20
|
#include <openssl/err.h>
|
21
21
|
|
22
22
|
#include "internal.h"
|
23
|
+
#include "../internal.h"
|
23
24
|
|
24
25
|
|
25
26
|
size_t EVP_AEAD_key_length(const EVP_AEAD *aead) { return aead->key_len; }
|
@@ -80,21 +81,15 @@ void EVP_AEAD_CTX_cleanup(EVP_AEAD_CTX *ctx) {
|
|
80
81
|
ctx->aead = NULL;
|
81
82
|
}
|
82
83
|
|
83
|
-
/* check_alias returns
|
84
|
-
* and |
|
85
|
-
*
|
86
|
-
|
87
|
-
|
88
|
-
* stomp input that hasn't been read yet.
|
89
|
-
*
|
90
|
-
* This function checks for that case. */
|
91
|
-
static int check_alias(const uint8_t *in, size_t in_len, const uint8_t *out) {
|
92
|
-
if (out <= in) {
|
93
|
-
return 1;
|
94
|
-
} else if (in + in_len <= out) {
|
84
|
+
/* check_alias returns 1 if |out| is compatible with |in| and 0 otherwise. If
|
85
|
+
* |in| and |out| alias, we require that |in| == |out|. */
|
86
|
+
static int check_alias(const uint8_t *in, size_t in_len, const uint8_t *out,
|
87
|
+
size_t out_len) {
|
88
|
+
if (!buffers_alias(in, in_len, out, out_len)) {
|
95
89
|
return 1;
|
96
90
|
}
|
97
|
-
|
91
|
+
|
92
|
+
return in == out;
|
98
93
|
}
|
99
94
|
|
100
95
|
int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len,
|
@@ -108,7 +103,7 @@ int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len,
|
|
108
103
|
goto error;
|
109
104
|
}
|
110
105
|
|
111
|
-
if (!check_alias(in, in_len, out)) {
|
106
|
+
if (!check_alias(in, in_len, out, max_out_len)) {
|
112
107
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_OUTPUT_ALIASES_INPUT);
|
113
108
|
goto error;
|
114
109
|
}
|
@@ -130,7 +125,7 @@ int EVP_AEAD_CTX_open(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len,
|
|
130
125
|
size_t max_out_len, const uint8_t *nonce,
|
131
126
|
size_t nonce_len, const uint8_t *in, size_t in_len,
|
132
127
|
const uint8_t *ad, size_t ad_len) {
|
133
|
-
if (!check_alias(in, in_len, out)) {
|
128
|
+
if (!check_alias(in, in_len, out, max_out_len)) {
|
134
129
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_OUTPUT_ALIASES_INPUT);
|
135
130
|
goto error;
|
136
131
|
}
|
@@ -149,13 +144,7 @@ error:
|
|
149
144
|
return 0;
|
150
145
|
}
|
151
146
|
|
152
|
-
|
153
|
-
if (ctx->aead->get_rc4_state == NULL) {
|
154
|
-
return 0;
|
155
|
-
}
|
156
|
-
|
157
|
-
return ctx->aead->get_rc4_state(ctx, out_key);
|
158
|
-
}
|
147
|
+
const EVP_AEAD *EVP_AEAD_CTX_aead(const EVP_AEAD_CTX *ctx) { return ctx->aead; }
|
159
148
|
|
160
149
|
int EVP_AEAD_CTX_get_iv(const EVP_AEAD_CTX *ctx, const uint8_t **out_iv,
|
161
150
|
size_t *out_len) {
|