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
@@ -163,7 +163,7 @@ int CRYPTO_get_ex_new_index(CRYPTO_EX_DATA_CLASS *ex_data_class, int *out_index,
|
|
163
163
|
ret = 1;
|
164
164
|
|
165
165
|
err:
|
166
|
-
|
166
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&ex_data_class->lock);
|
167
167
|
return ret;
|
168
168
|
}
|
169
169
|
|
@@ -217,7 +217,7 @@ static int get_func_pointers(STACK_OF(CRYPTO_EX_DATA_FUNCS) **out,
|
|
217
217
|
if (n > 0) {
|
218
218
|
*out = sk_CRYPTO_EX_DATA_FUNCS_dup(ex_data_class->meth);
|
219
219
|
}
|
220
|
-
|
220
|
+
CRYPTO_STATIC_MUTEX_unlock_read(&ex_data_class->lock);
|
221
221
|
|
222
222
|
if (n > 0 && *out == NULL) {
|
223
223
|
OPENSSL_PUT_ERROR(CRYPTO, ERR_R_MALLOC_FAILURE);
|
@@ -244,8 +244,7 @@ int CRYPTO_dup_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class, CRYPTO_EX_DATA *to,
|
|
244
244
|
return 0;
|
245
245
|
}
|
246
246
|
|
247
|
-
size_t i;
|
248
|
-
for (i = 0; i < sk_CRYPTO_EX_DATA_FUNCS_num(func_pointers); i++) {
|
247
|
+
for (size_t i = 0; i < sk_CRYPTO_EX_DATA_FUNCS_num(func_pointers); i++) {
|
249
248
|
CRYPTO_EX_DATA_FUNCS *func_pointer =
|
250
249
|
sk_CRYPTO_EX_DATA_FUNCS_value(func_pointers, i);
|
251
250
|
void *ptr = CRYPTO_get_ex_data(from, i + ex_data_class->num_reserved);
|
@@ -274,8 +273,7 @@ void CRYPTO_free_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class, void *obj,
|
|
274
273
|
return;
|
275
274
|
}
|
276
275
|
|
277
|
-
size_t i;
|
278
|
-
for (i = 0; i < sk_CRYPTO_EX_DATA_FUNCS_num(func_pointers); i++) {
|
276
|
+
for (size_t i = 0; i < sk_CRYPTO_EX_DATA_FUNCS_num(func_pointers); i++) {
|
279
277
|
CRYPTO_EX_DATA_FUNCS *func_pointer =
|
280
278
|
sk_CRYPTO_EX_DATA_FUNCS_value(func_pointers, i);
|
281
279
|
if (func_pointer->free_func) {
|
@@ -21,22 +21,50 @@
|
|
21
21
|
#include <openssl/hmac.h>
|
22
22
|
|
23
23
|
|
24
|
-
int HKDF(uint8_t *out_key, size_t out_len,
|
25
|
-
const
|
26
|
-
const uint8_t *
|
27
|
-
|
28
|
-
|
24
|
+
int HKDF(uint8_t *out_key, size_t out_len, const EVP_MD *digest,
|
25
|
+
const uint8_t *secret, size_t secret_len, const uint8_t *salt,
|
26
|
+
size_t salt_len, const uint8_t *info, size_t info_len) {
|
27
|
+
/* https://tools.ietf.org/html/rfc5869#section-2 */
|
28
|
+
uint8_t prk[EVP_MAX_MD_SIZE];
|
29
|
+
size_t prk_len;
|
30
|
+
|
31
|
+
if (!HKDF_extract(prk, &prk_len, digest, secret, secret_len, salt,
|
32
|
+
salt_len) ||
|
33
|
+
!HKDF_expand(out_key, out_len, digest, prk, prk_len, info, info_len)) {
|
34
|
+
return 0;
|
35
|
+
}
|
36
|
+
|
37
|
+
return 1;
|
38
|
+
}
|
39
|
+
|
40
|
+
int HKDF_extract(uint8_t *out_key, size_t *out_len, const EVP_MD *digest,
|
41
|
+
const uint8_t *secret, size_t secret_len, const uint8_t *salt,
|
42
|
+
size_t salt_len) {
|
29
43
|
/* https://tools.ietf.org/html/rfc5869#section-2.2 */
|
44
|
+
|
45
|
+
/* If salt is not given, HashLength zeros are used. However, HMAC does that
|
46
|
+
* internally already so we can ignore it.*/
|
47
|
+
unsigned len;
|
48
|
+
if (HMAC(digest, salt, salt_len, secret, secret_len, out_key, &len) == NULL) {
|
49
|
+
OPENSSL_PUT_ERROR(HKDF, ERR_R_HMAC_LIB);
|
50
|
+
return 0;
|
51
|
+
}
|
52
|
+
*out_len = len;
|
53
|
+
assert(*out_len == EVP_MD_size(digest));
|
54
|
+
return 1;
|
55
|
+
}
|
56
|
+
|
57
|
+
int HKDF_expand(uint8_t *out_key, size_t out_len, const EVP_MD *digest,
|
58
|
+
const uint8_t *prk, size_t prk_len, const uint8_t *info,
|
59
|
+
size_t info_len) {
|
60
|
+
/* https://tools.ietf.org/html/rfc5869#section-2.3 */
|
30
61
|
const size_t digest_len = EVP_MD_size(digest);
|
31
|
-
uint8_t
|
62
|
+
uint8_t previous[EVP_MAX_MD_SIZE];
|
32
63
|
size_t n, done = 0;
|
33
|
-
unsigned i
|
64
|
+
unsigned i;
|
34
65
|
int ret = 0;
|
35
66
|
HMAC_CTX hmac;
|
36
67
|
|
37
|
-
/* If salt is not given, HashLength zeros are used. However, HMAC does that
|
38
|
-
* internally already so we can ignore it.*/
|
39
|
-
|
40
68
|
/* Expand key material to desired length. */
|
41
69
|
n = (out_len + digest_len - 1) / digest_len;
|
42
70
|
if (out_len + digest_len < out_len || n > 255) {
|
@@ -45,13 +73,6 @@ int HKDF(uint8_t *out_key, size_t out_len,
|
|
45
73
|
}
|
46
74
|
|
47
75
|
HMAC_CTX_init(&hmac);
|
48
|
-
|
49
|
-
/* Extract input keying material into pseudorandom key |prk|. */
|
50
|
-
if (HMAC(digest, salt, salt_len, secret, secret_len, prk, &prk_len) == NULL) {
|
51
|
-
goto out;
|
52
|
-
}
|
53
|
-
assert(prk_len == digest_len);
|
54
|
-
|
55
76
|
if (!HMAC_Init_ex(&hmac, prk, prk_len, digest, NULL)) {
|
56
77
|
goto out;
|
57
78
|
}
|
@@ -59,6 +59,7 @@
|
|
59
59
|
#include <assert.h>
|
60
60
|
#include <string.h>
|
61
61
|
|
62
|
+
#include <openssl/digest.h>
|
62
63
|
#include <openssl/mem.h>
|
63
64
|
|
64
65
|
|
@@ -114,9 +115,8 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
|
|
114
115
|
* exist callers which intend the latter, but the former is an awkward edge
|
115
116
|
* case. Fix to API to avoid this. */
|
116
117
|
if (md != ctx->md || key != NULL) {
|
117
|
-
|
118
|
-
uint8_t
|
119
|
-
uint8_t key_block[HMAC_MAX_MD_CBLOCK];
|
118
|
+
uint8_t pad[EVP_MAX_MD_BLOCK_SIZE];
|
119
|
+
uint8_t key_block[EVP_MAX_MD_BLOCK_SIZE];
|
120
120
|
unsigned key_block_len;
|
121
121
|
|
122
122
|
size_t block_size = EVP_MD_block_size(md);
|
@@ -134,11 +134,11 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
|
|
134
134
|
key_block_len = (unsigned)key_len;
|
135
135
|
}
|
136
136
|
/* Keys are then padded with zeros. */
|
137
|
-
if (key_block_len !=
|
137
|
+
if (key_block_len != EVP_MAX_MD_BLOCK_SIZE) {
|
138
138
|
memset(&key_block[key_block_len], 0, sizeof(key_block) - key_block_len);
|
139
139
|
}
|
140
140
|
|
141
|
-
for (i = 0; i <
|
141
|
+
for (size_t i = 0; i < EVP_MAX_MD_BLOCK_SIZE; i++) {
|
142
142
|
pad[i] = 0x36 ^ key_block[i];
|
143
143
|
}
|
144
144
|
if (!EVP_DigestInit_ex(&ctx->i_ctx, md, impl) ||
|
@@ -146,7 +146,7 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
|
|
146
146
|
return 0;
|
147
147
|
}
|
148
148
|
|
149
|
-
for (i = 0; i <
|
149
|
+
for (size_t i = 0; i < EVP_MAX_MD_BLOCK_SIZE; i++) {
|
150
150
|
pad[i] = 0x5c ^ key_block[i];
|
151
151
|
}
|
152
152
|
if (!EVP_DigestInit_ex(&ctx->o_ctx, md, impl) ||
|
@@ -121,78 +121,51 @@
|
|
121
121
|
#include <stdalign.h>
|
122
122
|
#endif
|
123
123
|
|
124
|
-
#if defined(OPENSSL_NO_THREADS)
|
125
|
-
|
126
|
-
#pragma warning(push, 3)
|
127
|
-
#include <windows.h>
|
128
|
-
#pragma warning(pop)
|
129
|
-
#else
|
124
|
+
#if !defined(OPENSSL_NO_THREADS) && \
|
125
|
+
(!defined(OPENSSL_WINDOWS) || defined(__MINGW32__))
|
130
126
|
#include <pthread.h>
|
127
|
+
#define OPENSSL_PTHREADS
|
131
128
|
#endif
|
132
129
|
|
133
|
-
#if defined(
|
134
|
-
|
135
|
-
#
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
* *definitely*--uninitialized values sometimes has false positives. Usually
|
140
|
-
* the false positives can and should be worked around by simplifying the
|
141
|
-
* control flow. When that is not practical, annotate the function containing
|
142
|
-
* the code that triggers the warning with
|
143
|
-
* OPENSSL_SUPPRESS_POTENTIALLY_UNINITIALIZED_WARNINGS after its parameters:
|
144
|
-
*
|
145
|
-
* void f() OPENSSL_SUPPRESS_POTENTIALLY_UNINITIALIZED_WARNINGS {
|
146
|
-
* ...
|
147
|
-
* }
|
148
|
-
*
|
149
|
-
* Note that MSVC's control flow analysis seems to operate on a whole-function
|
150
|
-
* basis, so the annotation must be placed on the entire function, not just a
|
151
|
-
* block within the function. */
|
152
|
-
#if defined(_MSC_VER)
|
153
|
-
#define OPENSSL_SUPPRESS_POTENTIALLY_UNINITIALIZED_WARNINGS \
|
154
|
-
__pragma(warning(suppress:4701))
|
155
|
-
#else
|
156
|
-
#define OPENSSL_SUPPRESS_POTENTIALLY_UNINITIALIZED_WARNINGS
|
130
|
+
#if !defined(OPENSSL_NO_THREADS) && !defined(OPENSSL_PTHREADS) && \
|
131
|
+
defined(OPENSSL_WINDOWS)
|
132
|
+
#define OPENSSL_WINDOWS_THREADS
|
133
|
+
OPENSSL_MSVC_PRAGMA(warning(push, 3))
|
134
|
+
#include <windows.h>
|
135
|
+
OPENSSL_MSVC_PRAGMA(warning(pop))
|
157
136
|
#endif
|
158
137
|
|
159
|
-
|
160
|
-
|
161
|
-
* where we want to allow the dead code to continue to exist. In these
|
162
|
-
* situations, annotate the function containing the unreachable code with
|
163
|
-
* OPENSSL_SUPPRESS_UNREACHABLE_CODE_WARNINGS after its parameters:
|
164
|
-
*
|
165
|
-
* void f() OPENSSL_SUPPRESS_UNREACHABLE_CODE_WARNINGS {
|
166
|
-
* ...
|
167
|
-
* }
|
168
|
-
*
|
169
|
-
* Note that MSVC's reachability analysis seems to operate on a whole-function
|
170
|
-
* basis, so the annotation must be placed on the entire function, not just a
|
171
|
-
* block within the function. */
|
172
|
-
#if defined(_MSC_VER)
|
173
|
-
#define OPENSSL_SUPPRESS_UNREACHABLE_CODE_WARNINGS \
|
174
|
-
__pragma(warning(suppress:4702))
|
175
|
-
#else
|
176
|
-
#define OPENSSL_SUPPRESS_UNREACHABLE_CODE_WARNINGS
|
138
|
+
#if defined(__cplusplus)
|
139
|
+
extern "C" {
|
177
140
|
#endif
|
178
141
|
|
179
142
|
|
180
143
|
#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || defined(OPENSSL_ARM) || \
|
181
|
-
defined(OPENSSL_AARCH64)
|
182
|
-
/* OPENSSL_cpuid_setup initializes
|
144
|
+
defined(OPENSSL_AARCH64) || defined(OPENSSL_PPC64LE)
|
145
|
+
/* OPENSSL_cpuid_setup initializes the platform-specific feature cache. */
|
183
146
|
void OPENSSL_cpuid_setup(void);
|
184
147
|
#endif
|
185
148
|
|
186
|
-
#if !defined(inline)
|
187
|
-
#define inline __inline
|
188
|
-
#endif
|
189
|
-
|
190
149
|
|
191
150
|
#if !defined(_MSC_VER) && defined(OPENSSL_64_BIT)
|
192
151
|
typedef __int128_t int128_t;
|
193
152
|
typedef __uint128_t uint128_t;
|
194
153
|
#endif
|
195
154
|
|
155
|
+
#define OPENSSL_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
|
156
|
+
|
157
|
+
/* buffers_alias returns one if |a| and |b| alias and zero otherwise. */
|
158
|
+
static inline int buffers_alias(const uint8_t *a, size_t a_len,
|
159
|
+
const uint8_t *b, size_t b_len) {
|
160
|
+
/* Cast |a| and |b| to integers. In C, pointer comparisons between unrelated
|
161
|
+
* objects are undefined whereas pointer to integer conversions are merely
|
162
|
+
* implementation-defined. We assume the implementation defined it in a sane
|
163
|
+
* way. */
|
164
|
+
uintptr_t a_u = (uintptr_t)a;
|
165
|
+
uintptr_t b_u = (uintptr_t)b;
|
166
|
+
return a_u + a_len > b_u && b_u + b_len > a_u;
|
167
|
+
}
|
168
|
+
|
196
169
|
|
197
170
|
/* Constant-time utility functions.
|
198
171
|
*
|
@@ -339,12 +312,14 @@ static inline int constant_time_select_int(unsigned int mask, int a, int b) {
|
|
339
312
|
#if defined(OPENSSL_NO_THREADS)
|
340
313
|
typedef uint32_t CRYPTO_once_t;
|
341
314
|
#define CRYPTO_ONCE_INIT 0
|
342
|
-
#elif defined(
|
343
|
-
typedef
|
344
|
-
#define CRYPTO_ONCE_INIT
|
345
|
-
#
|
315
|
+
#elif defined(OPENSSL_WINDOWS_THREADS)
|
316
|
+
typedef INIT_ONCE CRYPTO_once_t;
|
317
|
+
#define CRYPTO_ONCE_INIT INIT_ONCE_STATIC_INIT
|
318
|
+
#elif defined(OPENSSL_PTHREADS)
|
346
319
|
typedef pthread_once_t CRYPTO_once_t;
|
347
320
|
#define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT
|
321
|
+
#else
|
322
|
+
#error "Unknown threading library"
|
348
323
|
#endif
|
349
324
|
|
350
325
|
/* CRYPTO_once calls |init| exactly once per process. This is thread-safe: if
|
@@ -387,27 +362,26 @@ OPENSSL_EXPORT int CRYPTO_refcount_dec_and_test_zero(CRYPTO_refcount_t *count);
|
|
387
362
|
* |CRYPTO_STATIC_MUTEX_INIT|.
|
388
363
|
*
|
389
364
|
* |CRYPTO_MUTEX| can appear in public structures and so is defined in
|
390
|
-
* thread.h.
|
391
|
-
*
|
392
|
-
* The global lock is a different type because there's no static initialiser
|
393
|
-
* value on Windows for locks, so global locks have to be coupled with a
|
394
|
-
* |CRYPTO_once_t| to ensure that the lock is setup before use. This is done
|
395
|
-
* automatically by |CRYPTO_STATIC_MUTEX_lock_*|. */
|
365
|
+
* thread.h as a structure large enough to fit the real type. The global lock is
|
366
|
+
* a different type so it may be initialized with platform initializer macros.*/
|
396
367
|
|
397
368
|
#if defined(OPENSSL_NO_THREADS)
|
398
|
-
struct CRYPTO_STATIC_MUTEX {};
|
399
|
-
#define CRYPTO_STATIC_MUTEX_INIT {}
|
400
|
-
#elif defined(OPENSSL_WINDOWS)
|
401
369
|
struct CRYPTO_STATIC_MUTEX {
|
402
|
-
|
403
|
-
CRITICAL_SECTION lock;
|
370
|
+
char padding; /* Empty structs have different sizes in C and C++. */
|
404
371
|
};
|
405
|
-
#define CRYPTO_STATIC_MUTEX_INIT {
|
406
|
-
#
|
372
|
+
#define CRYPTO_STATIC_MUTEX_INIT { 0 }
|
373
|
+
#elif defined(OPENSSL_WINDOWS_THREADS)
|
374
|
+
struct CRYPTO_STATIC_MUTEX {
|
375
|
+
SRWLOCK lock;
|
376
|
+
};
|
377
|
+
#define CRYPTO_STATIC_MUTEX_INIT { SRWLOCK_INIT }
|
378
|
+
#elif defined(OPENSSL_PTHREADS)
|
407
379
|
struct CRYPTO_STATIC_MUTEX {
|
408
380
|
pthread_rwlock_t lock;
|
409
381
|
};
|
410
382
|
#define CRYPTO_STATIC_MUTEX_INIT { PTHREAD_RWLOCK_INITIALIZER }
|
383
|
+
#else
|
384
|
+
#error "Unknown threading library"
|
411
385
|
#endif
|
412
386
|
|
413
387
|
/* CRYPTO_MUTEX_init initialises |lock|. If |lock| is a static variable, use a
|
@@ -415,16 +389,18 @@ struct CRYPTO_STATIC_MUTEX {
|
|
415
389
|
OPENSSL_EXPORT void CRYPTO_MUTEX_init(CRYPTO_MUTEX *lock);
|
416
390
|
|
417
391
|
/* CRYPTO_MUTEX_lock_read locks |lock| such that other threads may also have a
|
418
|
-
* read lock, but none may have a write lock.
|
419
|
-
* actually fully exclusive.) */
|
392
|
+
* read lock, but none may have a write lock. */
|
420
393
|
OPENSSL_EXPORT void CRYPTO_MUTEX_lock_read(CRYPTO_MUTEX *lock);
|
421
394
|
|
422
395
|
/* CRYPTO_MUTEX_lock_write locks |lock| such that no other thread has any type
|
423
396
|
* of lock on it. */
|
424
397
|
OPENSSL_EXPORT void CRYPTO_MUTEX_lock_write(CRYPTO_MUTEX *lock);
|
425
398
|
|
426
|
-
/*
|
427
|
-
OPENSSL_EXPORT void
|
399
|
+
/* CRYPTO_MUTEX_unlock_read unlocks |lock| for reading. */
|
400
|
+
OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_read(CRYPTO_MUTEX *lock);
|
401
|
+
|
402
|
+
/* CRYPTO_MUTEX_unlock_write unlocks |lock| for writing. */
|
403
|
+
OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_write(CRYPTO_MUTEX *lock);
|
428
404
|
|
429
405
|
/* CRYPTO_MUTEX_cleanup releases all resources held by |lock|. */
|
430
406
|
OPENSSL_EXPORT void CRYPTO_MUTEX_cleanup(CRYPTO_MUTEX *lock);
|
@@ -443,8 +419,12 @@ OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_lock_read(
|
|
443
419
|
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_lock_write(
|
444
420
|
struct CRYPTO_STATIC_MUTEX *lock);
|
445
421
|
|
446
|
-
/*
|
447
|
-
OPENSSL_EXPORT void
|
422
|
+
/* CRYPTO_STATIC_MUTEX_unlock_read unlocks |lock| for reading. */
|
423
|
+
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_unlock_read(
|
424
|
+
struct CRYPTO_STATIC_MUTEX *lock);
|
425
|
+
|
426
|
+
/* CRYPTO_STATIC_MUTEX_unlock_write unlocks |lock| for writing. */
|
427
|
+
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_unlock_write(
|
448
428
|
struct CRYPTO_STATIC_MUTEX *lock);
|
449
429
|
|
450
430
|
|
@@ -100,15 +100,13 @@ _LHASH *lh_new(lhash_hash_func hash, lhash_cmp_func comp) {
|
|
100
100
|
}
|
101
101
|
|
102
102
|
void lh_free(_LHASH *lh) {
|
103
|
-
size_t i;
|
104
|
-
LHASH_ITEM *n, *next;
|
105
|
-
|
106
103
|
if (lh == NULL) {
|
107
104
|
return;
|
108
105
|
}
|
109
106
|
|
110
|
-
for (i = 0; i < lh->num_buckets; i++) {
|
111
|
-
|
107
|
+
for (size_t i = 0; i < lh->num_buckets; i++) {
|
108
|
+
LHASH_ITEM *next;
|
109
|
+
for (LHASH_ITEM *n = lh->buckets[i]; n != NULL; n = next) {
|
112
110
|
next = n->next;
|
113
111
|
OPENSSL_free(n);
|
114
112
|
}
|
@@ -277,9 +275,6 @@ void *lh_delete(_LHASH *lh, const void *data) {
|
|
277
275
|
|
278
276
|
static void lh_doall_internal(_LHASH *lh, void (*no_arg_func)(void *),
|
279
277
|
void (*arg_func)(void *, void *), void *arg) {
|
280
|
-
size_t i;
|
281
|
-
LHASH_ITEM *cur, *next;
|
282
|
-
|
283
278
|
if (lh == NULL) {
|
284
279
|
return;
|
285
280
|
}
|
@@ -289,8 +284,9 @@ static void lh_doall_internal(_LHASH *lh, void (*no_arg_func)(void *),
|
|
289
284
|
lh->callback_depth++;
|
290
285
|
}
|
291
286
|
|
292
|
-
for (i = 0; i < lh->num_buckets; i++) {
|
293
|
-
|
287
|
+
for (size_t i = 0; i < lh->num_buckets; i++) {
|
288
|
+
LHASH_ITEM *next;
|
289
|
+
for (LHASH_ITEM *cur = lh->buckets[i]; cur != NULL; cur = next) {
|
294
290
|
next = cur->next;
|
295
291
|
if (arg_func) {
|
296
292
|
arg_func(cur->data, arg);
|
@@ -60,6 +60,15 @@
|
|
60
60
|
#include <string.h>
|
61
61
|
|
62
62
|
|
63
|
+
uint8_t *MD4(const uint8_t *data, size_t len, uint8_t *out) {
|
64
|
+
MD4_CTX ctx;
|
65
|
+
MD4_Init(&ctx);
|
66
|
+
MD4_Update(&ctx, data, len);
|
67
|
+
MD4_Final(out, &ctx);
|
68
|
+
|
69
|
+
return out;
|
70
|
+
}
|
71
|
+
|
63
72
|
/* Implemented from RFC1186 The MD4 Message-Digest Algorithm. */
|
64
73
|
|
65
74
|
int MD4_Init(MD4_CTX *md4) {
|
@@ -66,17 +66,23 @@
|
|
66
66
|
#include <string.h>
|
67
67
|
|
68
68
|
#if defined(OPENSSL_WINDOWS)
|
69
|
-
|
69
|
+
OPENSSL_MSVC_PRAGMA(warning(push, 3))
|
70
70
|
#include <windows.h>
|
71
|
-
|
71
|
+
|
72
|
+
/* Work around a clang-cl bug: SecureZeroMemory() below uses __stosb() but
|
73
|
+
* windows.h only declares that intrinsic and then uses `#pragma intrinsic` for
|
74
|
+
* it. clang-cl doesn't implement `#pragma intrinsic` yet; it instead defines
|
75
|
+
* the function as an always-inline symbol in its intrin.h.
|
76
|
+
* TODO(thakis): Remove this once http://llvm.org/PR19898 is fixed.
|
77
|
+
*/
|
78
|
+
#include <intrin.h>
|
79
|
+
OPENSSL_MSVC_PRAGMA(warning(pop))
|
72
80
|
#else
|
73
81
|
#include <strings.h>
|
74
82
|
#endif
|
75
83
|
|
76
84
|
|
77
85
|
void *OPENSSL_realloc_clean(void *ptr, size_t old_size, size_t new_size) {
|
78
|
-
void *ret = NULL;
|
79
|
-
|
80
86
|
if (ptr == NULL) {
|
81
87
|
return OPENSSL_malloc(new_size);
|
82
88
|
}
|
@@ -91,7 +97,7 @@ void *OPENSSL_realloc_clean(void *ptr, size_t old_size, size_t new_size) {
|
|
91
97
|
return NULL;
|
92
98
|
}
|
93
99
|
|
94
|
-
ret = OPENSSL_malloc(new_size);
|
100
|
+
void *ret = OPENSSL_malloc(new_size);
|
95
101
|
if (ret == NULL) {
|
96
102
|
return NULL;
|
97
103
|
}
|
@@ -118,12 +124,11 @@ void OPENSSL_cleanse(void *ptr, size_t len) {
|
|
118
124
|
}
|
119
125
|
|
120
126
|
int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len) {
|
121
|
-
size_t i;
|
122
127
|
const uint8_t *a = in_a;
|
123
128
|
const uint8_t *b = in_b;
|
124
129
|
uint8_t x = 0;
|
125
130
|
|
126
|
-
for (i = 0; i < len; i++) {
|
131
|
+
for (size_t i = 0; i < len; i++) {
|
127
132
|
x |= a[i] ^ b[i];
|
128
133
|
}
|
129
134
|
|
@@ -136,10 +141,9 @@ uint32_t OPENSSL_hash32(const void *ptr, size_t len) {
|
|
136
141
|
static const uint32_t kOffsetBasis = 2166136261u;
|
137
142
|
|
138
143
|
const uint8_t *in = ptr;
|
139
|
-
size_t i;
|
140
144
|
uint32_t h = kOffsetBasis;
|
141
145
|
|
142
|
-
for (i = 0; i < len; i++) {
|
146
|
+
for (size_t i = 0; i < len; i++) {
|
143
147
|
h ^= in[i];
|
144
148
|
h *= kPrime;
|
145
149
|
}
|
@@ -147,12 +151,8 @@ uint32_t OPENSSL_hash32(const void *ptr, size_t len) {
|
|
147
151
|
return h;
|
148
152
|
}
|
149
153
|
|
150
|
-
char *OPENSSL_strdup(const char *s) { return strdup(s); }
|
151
|
-
|
152
154
|
size_t OPENSSL_strnlen(const char *s, size_t len) {
|
153
|
-
size_t i;
|
154
|
-
|
155
|
-
for (i = 0; i < len; i++) {
|
155
|
+
for (size_t i = 0; i < len; i++) {
|
156
156
|
if (s[i] == 0) {
|
157
157
|
return i;
|
158
158
|
}
|
@@ -163,6 +163,8 @@ size_t OPENSSL_strnlen(const char *s, size_t len) {
|
|
163
163
|
|
164
164
|
#if defined(OPENSSL_WINDOWS)
|
165
165
|
|
166
|
+
char *OPENSSL_strdup(const char *s) { return _strdup(s); }
|
167
|
+
|
166
168
|
int OPENSSL_strcasecmp(const char *a, const char *b) {
|
167
169
|
return _stricmp(a, b);
|
168
170
|
}
|
@@ -173,6 +175,8 @@ int OPENSSL_strncasecmp(const char *a, const char *b, size_t n) {
|
|
173
175
|
|
174
176
|
#else
|
175
177
|
|
178
|
+
char *OPENSSL_strdup(const char *s) { return strdup(s); }
|
179
|
+
|
176
180
|
int OPENSSL_strcasecmp(const char *a, const char *b) {
|
177
181
|
return strcasecmp(a, b);
|
178
182
|
}
|
@@ -185,12 +189,8 @@ int OPENSSL_strncasecmp(const char *a, const char *b, size_t n) {
|
|
185
189
|
|
186
190
|
int BIO_snprintf(char *buf, size_t n, const char *format, ...) {
|
187
191
|
va_list args;
|
188
|
-
int ret;
|
189
|
-
|
190
192
|
va_start(args, format);
|
191
|
-
|
192
|
-
ret = BIO_vsnprintf(buf, n, format, args);
|
193
|
-
|
193
|
+
int ret = BIO_vsnprintf(buf, n, format, args);
|
194
194
|
va_end(args);
|
195
195
|
return ret;
|
196
196
|
}
|