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
@@ -1,75 +1,18 @@
|
|
1
|
-
/* Copyright (
|
2
|
-
* All rights reserved.
|
1
|
+
/* Copyright (c) 2016, Google Inc.
|
3
2
|
*
|
4
|
-
*
|
5
|
-
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
12
|
-
*
|
13
|
-
*
|
14
|
-
*
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
* in documentation (online or textual) provided with the package.
|
21
|
-
*
|
22
|
-
* Redistribution and use in source and binary forms, with or without
|
23
|
-
* modification, are permitted provided that the following conditions
|
24
|
-
* are met:
|
25
|
-
* 1. Redistributions of source code must retain the copyright
|
26
|
-
* notice, this list of conditions and the following disclaimer.
|
27
|
-
* 2. Redistributions in binary form must reproduce the above copyright
|
28
|
-
* notice, this list of conditions and the following disclaimer in the
|
29
|
-
* documentation and/or other materials provided with the distribution.
|
30
|
-
* 3. All advertising materials mentioning features or use of this software
|
31
|
-
* must display the following acknowledgement:
|
32
|
-
* "This product includes cryptographic software written by
|
33
|
-
* Eric Young (eay@cryptsoft.com)"
|
34
|
-
* The word 'cryptographic' can be left out if the rouines from the library
|
35
|
-
* being used are not cryptographic related :-).
|
36
|
-
* 4. If you include any Windows specific code (or a derivative thereof) from
|
37
|
-
* the apps directory (application code) you must include an acknowledgement:
|
38
|
-
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
39
|
-
*
|
40
|
-
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
41
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
42
|
-
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
43
|
-
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
44
|
-
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
45
|
-
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
46
|
-
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
47
|
-
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
48
|
-
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
49
|
-
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
50
|
-
* SUCH DAMAGE.
|
51
|
-
*
|
52
|
-
* The licence and distribution terms for any publically available version or
|
53
|
-
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
54
|
-
* copied and put under another distribution licence
|
55
|
-
* [including the GNU Public Licence.]
|
56
|
-
*/
|
57
|
-
|
58
|
-
#ifndef HEADER_ASN1_MAC_H
|
59
|
-
#define HEADER_ASN1_MAC_H
|
60
|
-
|
61
|
-
#include <openssl/asn1.h>
|
62
|
-
|
63
|
-
#ifdef __cplusplus
|
64
|
-
extern "C" {
|
65
|
-
#endif
|
66
|
-
|
67
|
-
|
68
|
-
OPENSSL_EXPORT int asn1_GetSequence(ASN1_const_CTX *c, long *length);
|
69
|
-
|
70
|
-
|
71
|
-
#ifdef __cplusplus
|
72
|
-
}
|
73
|
-
#endif
|
74
|
-
|
75
|
-
#endif
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
6
|
+
*
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
14
|
+
|
15
|
+
/* This header is provided in order to make compiling against code that expects
|
16
|
+
OpenSSL easier. */
|
17
|
+
|
18
|
+
#include "asn1.h"
|
@@ -631,6 +631,7 @@ typedef struct ASN1_EXTERN_FUNCS_st {
|
|
631
631
|
ASN1_ex_free_func *asn1_ex_clear;
|
632
632
|
ASN1_ex_d2i *asn1_ex_d2i;
|
633
633
|
ASN1_ex_i2d *asn1_ex_i2d;
|
634
|
+
/* asn1_ex_print is unused. */
|
634
635
|
ASN1_ex_print_func *asn1_ex_print;
|
635
636
|
} ASN1_EXTERN_FUNCS;
|
636
637
|
|
@@ -835,17 +836,6 @@ typedef struct ASN1_STREAM_ARG_st {
|
|
835
836
|
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
836
837
|
}
|
837
838
|
|
838
|
-
#define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
|
839
|
-
IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
|
840
|
-
|
841
|
-
#define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
|
842
|
-
int fname##_print_ctx(BIO *out, stname *x, int indent, \
|
843
|
-
const ASN1_PCTX *pctx) \
|
844
|
-
{ \
|
845
|
-
return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \
|
846
|
-
ASN1_ITEM_rptr(itname), pctx); \
|
847
|
-
}
|
848
|
-
|
849
839
|
#define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
|
850
840
|
IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
|
851
841
|
|
@@ -60,7 +60,11 @@
|
|
60
60
|
#include <stdint.h>
|
61
61
|
#include <sys/types.h>
|
62
62
|
|
63
|
-
#include <openssl/
|
63
|
+
#include <openssl/opensslconf.h>
|
64
|
+
|
65
|
+
#if defined(BORINGSSL_PREFIX)
|
66
|
+
#include <boringssl_prefix_symbols.h>
|
67
|
+
#endif
|
64
68
|
|
65
69
|
#if defined(__cplusplus)
|
66
70
|
extern "C" {
|
@@ -79,8 +83,9 @@ extern "C" {
|
|
79
83
|
#elif defined(__arm) || defined(__arm__) || defined(_M_ARM)
|
80
84
|
#define OPENSSL_32_BIT
|
81
85
|
#define OPENSSL_ARM
|
82
|
-
#elif defined(__PPC64__) || defined(__powerpc64__)
|
86
|
+
#elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN)
|
83
87
|
#define OPENSSL_64_BIT
|
88
|
+
#define OPENSSL_PPC64LE
|
84
89
|
#elif defined(__mips__) && !defined(__LP64__)
|
85
90
|
#define OPENSSL_32_BIT
|
86
91
|
#define OPENSSL_MIPS
|
@@ -90,6 +95,8 @@ extern "C" {
|
|
90
95
|
#elif defined(__pnacl__)
|
91
96
|
#define OPENSSL_32_BIT
|
92
97
|
#define OPENSSL_PNACL
|
98
|
+
#elif defined(__myriad2__)
|
99
|
+
#define OPENSSL_32_BIT
|
93
100
|
#else
|
94
101
|
#error "Unknown target CPU"
|
95
102
|
#endif
|
@@ -109,9 +116,20 @@ extern "C" {
|
|
109
116
|
|
110
117
|
#define OPENSSL_IS_BORINGSSL
|
111
118
|
#define BORINGSSL_201512
|
119
|
+
#define BORINGSSL_201603
|
112
120
|
#define OPENSSL_VERSION_NUMBER 0x10002000
|
113
121
|
#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
|
114
122
|
|
123
|
+
/* BORINGSSL_API_VERSION is a positive integer that increments as BoringSSL
|
124
|
+
* changes over time. The value itself is not meaningful. It will be incremented
|
125
|
+
* whenever is convenient to coordinate an API change with consumers. This will
|
126
|
+
* not denote any special point in development.
|
127
|
+
*
|
128
|
+
* A consumer may use this symbol in the preprocessor to temporarily build
|
129
|
+
* against multiple revisions of BoringSSL at the same time. It is not
|
130
|
+
* recommended to do so for longer than is necessary. */
|
131
|
+
#define BORINGSSL_API_VERSION 2
|
132
|
+
|
115
133
|
#if defined(BORINGSSL_SHARED_LIBRARY)
|
116
134
|
|
117
135
|
#if defined(OPENSSL_WINDOWS)
|
@@ -141,11 +159,18 @@ extern "C" {
|
|
141
159
|
|
142
160
|
#if defined(__GNUC__)
|
143
161
|
#define OPENSSL_PRINTF_FORMAT_FUNC(string_index, first_to_check) \
|
144
|
-
__attribute__((
|
162
|
+
__attribute__((__format__(__printf__, string_index, first_to_check)))
|
145
163
|
#else
|
146
164
|
#define OPENSSL_PRINTF_FORMAT_FUNC(string_index, first_to_check)
|
147
165
|
#endif
|
148
166
|
|
167
|
+
/* OPENSSL_MSVC_PRAGMA emits a pragma on MSVC and nothing on other compilers. */
|
168
|
+
#if defined(_MSC_VER)
|
169
|
+
#define OPENSSL_MSVC_PRAGMA(arg) __pragma(arg)
|
170
|
+
#else
|
171
|
+
#define OPENSSL_MSVC_PRAGMA(arg)
|
172
|
+
#endif
|
173
|
+
|
149
174
|
|
150
175
|
/* CRYPTO_THREADID is a dummy value. */
|
151
176
|
typedef int CRYPTO_THREADID;
|
@@ -171,9 +196,12 @@ typedef struct asn1_string_st ASN1_UNIVERSALSTRING;
|
|
171
196
|
typedef struct asn1_string_st ASN1_UTCTIME;
|
172
197
|
typedef struct asn1_string_st ASN1_UTF8STRING;
|
173
198
|
typedef struct asn1_string_st ASN1_VISIBLESTRING;
|
199
|
+
typedef struct asn1_type_st ASN1_TYPE;
|
174
200
|
|
175
201
|
typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
|
202
|
+
typedef struct BASIC_CONSTRAINTS_st BASIC_CONSTRAINTS;
|
176
203
|
typedef struct DIST_POINT_st DIST_POINT;
|
204
|
+
typedef struct DSA_SIG_st DSA_SIG;
|
177
205
|
typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
|
178
206
|
typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
|
179
207
|
typedef struct Netscape_certificate_sequence NETSCAPE_CERT_SEQUENCE;
|
@@ -182,10 +210,12 @@ typedef struct Netscape_spki_st NETSCAPE_SPKI;
|
|
182
210
|
typedef struct PBE2PARAM_st PBE2PARAM;
|
183
211
|
typedef struct PBEPARAM_st PBEPARAM;
|
184
212
|
typedef struct PBKDF2PARAM_st PBKDF2PARAM;
|
213
|
+
typedef struct RIPEMD160state_st RIPEMD160_CTX;
|
185
214
|
typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
|
186
215
|
typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
|
187
216
|
typedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
|
188
217
|
typedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
|
218
|
+
typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM;
|
189
219
|
typedef struct X509_algor_st X509_ALGOR;
|
190
220
|
typedef struct X509_crl_info_st X509_CRL_INFO;
|
191
221
|
typedef struct X509_crl_st X509_CRL;
|
@@ -213,7 +243,9 @@ typedef struct conf_st CONF;
|
|
213
243
|
typedef struct conf_value_st CONF_VALUE;
|
214
244
|
typedef struct dh_st DH;
|
215
245
|
typedef struct dsa_st DSA;
|
246
|
+
typedef struct ec_group_st EC_GROUP;
|
216
247
|
typedef struct ec_key_st EC_KEY;
|
248
|
+
typedef struct ec_point_st EC_POINT;
|
217
249
|
typedef struct ecdsa_method_st ECDSA_METHOD;
|
218
250
|
typedef struct ecdsa_sig_st ECDSA_SIG;
|
219
251
|
typedef struct engine_st ENGINE;
|
@@ -230,6 +262,7 @@ typedef struct evp_pkey_st EVP_PKEY;
|
|
230
262
|
typedef struct hmac_ctx_st HMAC_CTX;
|
231
263
|
typedef struct md4_state_st MD4_CTX;
|
232
264
|
typedef struct md5_state_st MD5_CTX;
|
265
|
+
typedef struct newhope_poly_st NEWHOPE_POLY;
|
233
266
|
typedef struct pkcs12_st PKCS12;
|
234
267
|
typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
|
235
268
|
typedef struct private_key_st X509_PKEY;
|
@@ -240,6 +273,7 @@ typedef struct rsa_st RSA;
|
|
240
273
|
typedef struct sha256_state_st SHA256_CTX;
|
241
274
|
typedef struct sha512_state_st SHA512_CTX;
|
242
275
|
typedef struct sha_state_st SHA_CTX;
|
276
|
+
typedef struct spake2_ctx_st SPAKE2_CTX;
|
243
277
|
typedef struct srtp_protection_profile_st SRTP_PROTECTION_PROFILE;
|
244
278
|
typedef struct ssl_cipher_st SSL_CIPHER;
|
245
279
|
typedef struct ssl_ctx_st SSL_CTX;
|
@@ -254,6 +288,7 @@ typedef struct x509_cert_aux_st X509_CERT_AUX;
|
|
254
288
|
typedef struct x509_cert_pair_st X509_CERT_PAIR;
|
255
289
|
typedef struct x509_cinf_st X509_CINF;
|
256
290
|
typedef struct x509_crl_method_st X509_CRL_METHOD;
|
291
|
+
typedef struct x509_lookup_st X509_LOOKUP;
|
257
292
|
typedef struct x509_revoked_st X509_REVOKED;
|
258
293
|
typedef struct x509_st X509;
|
259
294
|
typedef struct x509_store_ctx_st X509_STORE_CTX;
|
@@ -265,6 +300,113 @@ typedef void *OPENSSL_BLOCK;
|
|
265
300
|
|
266
301
|
#if defined(__cplusplus)
|
267
302
|
} /* extern C */
|
303
|
+
|
304
|
+
// MSVC doesn't set __cplusplus to 201103 to indicate C++11 support (see
|
305
|
+
// https://connect.microsoft.com/VisualStudio/feedback/details/763051/a-value-of-predefined-macro-cplusplus-is-still-199711l)
|
306
|
+
// so MSVC is just assumed to support C++11.
|
307
|
+
#if !defined(BORINGSSL_NO_CXX) && __cplusplus < 201103L && !defined(_MSC_VER)
|
308
|
+
#define BORINGSSL_NO_CXX
|
309
|
+
#endif
|
310
|
+
|
311
|
+
#if !defined(BORINGSSL_NO_CXX)
|
312
|
+
extern "C++" {
|
313
|
+
|
314
|
+
#include <memory>
|
315
|
+
|
316
|
+
// STLPort, used by some Android consumers, not have std::unique_ptr.
|
317
|
+
#if defined(_STLPORT_VERSION)
|
318
|
+
#define BORINGSSL_NO_CXX
|
319
|
+
#endif
|
320
|
+
|
321
|
+
} // extern C++
|
322
|
+
#endif // !BORINGSSL_NO_CXX
|
323
|
+
|
324
|
+
#if defined(BORINGSSL_NO_CXX)
|
325
|
+
|
326
|
+
#define BORINGSSL_MAKE_DELETER(type, deleter)
|
327
|
+
#define BORINGSSL_MAKE_STACK_DELETER(type, deleter)
|
328
|
+
|
329
|
+
#else
|
330
|
+
|
331
|
+
extern "C++" {
|
332
|
+
|
333
|
+
#include <memory>
|
334
|
+
|
335
|
+
namespace bssl {
|
336
|
+
|
337
|
+
namespace internal {
|
338
|
+
|
339
|
+
template <typename T>
|
340
|
+
struct DeleterImpl {};
|
341
|
+
|
342
|
+
template <typename T>
|
343
|
+
struct Deleter {
|
344
|
+
void operator()(T *ptr) {
|
345
|
+
// Rather than specialize Deleter for each type, we specialize
|
346
|
+
// DeleterImpl. This allows bssl::UniquePtr<T> to be used while only
|
347
|
+
// including base.h as long as the destructor is not emitted. This matches
|
348
|
+
// std::unique_ptr's behavior on forward-declared types.
|
349
|
+
//
|
350
|
+
// DeleterImpl itself is specialized in the corresponding module's header
|
351
|
+
// and must be included to release an object. If not included, the compiler
|
352
|
+
// will error that DeleterImpl<T> does not have a method Free.
|
353
|
+
DeleterImpl<T>::Free(ptr);
|
354
|
+
}
|
355
|
+
};
|
356
|
+
|
357
|
+
template <typename T, typename CleanupRet, void (*init)(T *),
|
358
|
+
CleanupRet (*cleanup)(T *)>
|
359
|
+
class StackAllocated {
|
360
|
+
public:
|
361
|
+
StackAllocated() { init(&ctx_); }
|
362
|
+
~StackAllocated() { cleanup(&ctx_); }
|
363
|
+
|
364
|
+
T *get() { return &ctx_; }
|
365
|
+
const T *get() const { return &ctx_; }
|
366
|
+
|
367
|
+
void Reset() {
|
368
|
+
cleanup(&ctx_);
|
369
|
+
init(&ctx_);
|
370
|
+
}
|
371
|
+
|
372
|
+
private:
|
373
|
+
T ctx_;
|
374
|
+
};
|
375
|
+
|
376
|
+
} // namespace internal
|
377
|
+
|
378
|
+
#define BORINGSSL_MAKE_DELETER(type, deleter) \
|
379
|
+
namespace internal { \
|
380
|
+
template <> \
|
381
|
+
struct DeleterImpl<type> { \
|
382
|
+
static void Free(type *ptr) { deleter(ptr); } \
|
383
|
+
}; \
|
384
|
+
}
|
385
|
+
|
386
|
+
// This makes a unique_ptr to STACK_OF(type) that owns all elements on the
|
387
|
+
// stack, i.e. it uses sk_pop_free() to clean up.
|
388
|
+
#define BORINGSSL_MAKE_STACK_DELETER(type, deleter) \
|
389
|
+
namespace internal { \
|
390
|
+
template <> \
|
391
|
+
struct DeleterImpl<STACK_OF(type)> { \
|
392
|
+
static void Free(STACK_OF(type) *ptr) { \
|
393
|
+
sk_##type##_pop_free(ptr, deleter); \
|
394
|
+
} \
|
395
|
+
}; \
|
396
|
+
}
|
397
|
+
|
398
|
+
// Holds ownership of heap-allocated BoringSSL structures. Sample usage:
|
399
|
+
// bssl::UniquePtr<BIO> rsa(RSA_new());
|
400
|
+
// bssl::UniquePtr<BIO> bio(BIO_new(BIO_s_mem()));
|
401
|
+
template <typename T>
|
402
|
+
using UniquePtr = std::unique_ptr<T, internal::Deleter<T>>;
|
403
|
+
|
404
|
+
} // namespace bssl
|
405
|
+
|
406
|
+
} /* extern C++ */
|
407
|
+
|
408
|
+
#endif // !BORINGSSL_NO_CXX
|
409
|
+
|
268
410
|
#endif
|
269
411
|
|
270
412
|
#endif /* OPENSSL_HEADER_BASE_H */
|
@@ -87,15 +87,16 @@ OPENSSL_EXPORT int EVP_EncodedLength(size_t *out_len, size_t len);
|
|
87
87
|
|
88
88
|
/* Decoding */
|
89
89
|
|
90
|
-
/* EVP_DecodedLength sets |*out_len| to the maximum number of bytes
|
91
|
-
*
|
92
|
-
*
|
90
|
+
/* EVP_DecodedLength sets |*out_len| to the maximum number of bytes that will
|
91
|
+
* be needed to call |EVP_DecodeBase64| on an input of length |len|. It returns
|
92
|
+
* one on success or zero if |len| is not a valid length for a base64-encoded
|
93
|
+
* string. */
|
93
94
|
OPENSSL_EXPORT int EVP_DecodedLength(size_t *out_len, size_t len);
|
94
95
|
|
95
96
|
/* EVP_DecodeBase64 decodes |in_len| bytes from base64 and writes
|
96
97
|
* |*out_len| bytes to |out|. |max_out| is the size of the output
|
97
98
|
* buffer. If it is not enough for the maximum output size, the
|
98
|
-
* operation fails. */
|
99
|
+
* operation fails. It returns one on success or zero on error. */
|
99
100
|
OPENSSL_EXPORT int EVP_DecodeBase64(uint8_t *out, size_t *out_len,
|
100
101
|
size_t max_out, const uint8_t *in,
|
101
102
|
size_t in_len);
|
@@ -105,9 +106,7 @@ OPENSSL_EXPORT int EVP_DecodeBase64(uint8_t *out, size_t *out_len,
|
|
105
106
|
*
|
106
107
|
* OpenSSL provides a streaming base64 implementation, however its behavior is
|
107
108
|
* very specific to PEM. It is also very lenient of invalid input. Use of any of
|
108
|
-
* these functions is thus deprecated.
|
109
|
-
*
|
110
|
-
* TODO(davidben): Import upstream's rewrite that rejects the invalid input. */
|
109
|
+
* these functions is thus deprecated. */
|
111
110
|
|
112
111
|
/* EVP_EncodeInit initialises |*ctx|, which is typically stack
|
113
112
|
* allocated, for an encoding operation.
|
@@ -159,21 +158,25 @@ OPENSSL_EXPORT int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, uint8_t *out,
|
|
159
158
|
*
|
160
159
|
* WARNING: EVP_DecodeBlock's return value does not take padding into
|
161
160
|
* account. It also strips leading whitespace and trailing
|
162
|
-
* whitespace. */
|
161
|
+
* whitespace and minuses. */
|
163
162
|
OPENSSL_EXPORT int EVP_DecodeBlock(uint8_t *dst, const uint8_t *src,
|
164
163
|
size_t src_len);
|
165
164
|
|
166
165
|
|
167
166
|
struct evp_encode_ctx_st {
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
167
|
+
/* data_used indicates the number of bytes of |data| that are valid. When
|
168
|
+
* encoding, |data| will be filled and encoded as a lump. When decoding, only
|
169
|
+
* the first four bytes of |data| will be used. */
|
170
|
+
unsigned data_used;
|
171
|
+
uint8_t data[48];
|
172
|
+
|
173
|
+
/* eof_seen indicates that the end of the base64 data has been seen when
|
174
|
+
* decoding. Only whitespace can follow. */
|
175
|
+
char eof_seen;
|
176
|
+
|
177
|
+
/* error_encountered indicates that invalid base64 data was found. This will
|
178
|
+
* cause all future calls to fail. */
|
179
|
+
char error_encountered;
|
177
180
|
};
|
178
181
|
|
179
182
|
|
@@ -61,6 +61,7 @@
|
|
61
61
|
|
62
62
|
#include <stdio.h> /* For FILE */
|
63
63
|
|
64
|
+
#include <openssl/buffer.h>
|
64
65
|
#include <openssl/err.h> /* for ERR_print_errors_fp */
|
65
66
|
#include <openssl/ex_data.h>
|
66
67
|
#include <openssl/stack.h>
|
@@ -95,8 +96,8 @@ OPENSSL_EXPORT int BIO_free(BIO *bio);
|
|
95
96
|
* TODO(fork): remove. */
|
96
97
|
OPENSSL_EXPORT void BIO_vfree(BIO *bio);
|
97
98
|
|
98
|
-
/* BIO_up_ref increments the reference count of |bio| and returns
|
99
|
-
OPENSSL_EXPORT
|
99
|
+
/* BIO_up_ref increments the reference count of |bio| and returns one. */
|
100
|
+
OPENSSL_EXPORT int BIO_up_ref(BIO *bio);
|
100
101
|
|
101
102
|
|
102
103
|
/* Basic I/O. */
|
@@ -151,6 +152,11 @@ OPENSSL_EXPORT long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
|
|
151
152
|
* otherwise. */
|
152
153
|
OPENSSL_EXPORT int BIO_reset(BIO *bio);
|
153
154
|
|
155
|
+
/* BIO_eof returns non-zero when |bio| has reached end-of-file. The precise
|
156
|
+
* meaning of which depends on the concrete type of |bio|. Note that in the
|
157
|
+
* case of BIO_pair this always returns non-zero. */
|
158
|
+
OPENSSL_EXPORT int BIO_eof(BIO *bio);
|
159
|
+
|
154
160
|
/* BIO_set_flags ORs |flags| with |bio->flags|. */
|
155
161
|
OPENSSL_EXPORT void BIO_set_flags(BIO *bio, int flags);
|
156
162
|
|
@@ -361,19 +367,17 @@ OPENSSL_EXPORT int BIO_read_asn1(BIO *bio, uint8_t **out, size_t *out_len,
|
|
361
367
|
*
|
362
368
|
* Memory BIOs support |BIO_gets| and |BIO_puts|.
|
363
369
|
*
|
364
|
-
* |BIO_eof| is true if no data is in the BIO.
|
365
|
-
*
|
366
370
|
* |BIO_ctrl_pending| returns the number of bytes currently stored. */
|
367
371
|
|
368
372
|
/* BIO_s_mem returns a |BIO_METHOD| that uses a in-memory buffer. */
|
369
373
|
OPENSSL_EXPORT const BIO_METHOD *BIO_s_mem(void);
|
370
374
|
|
371
|
-
/* BIO_new_mem_buf creates BIO that reads
|
375
|
+
/* BIO_new_mem_buf creates read-only BIO that reads from |len| bytes at |buf|.
|
372
376
|
* It does not take ownership of |buf|. It returns the BIO or NULL on error.
|
373
377
|
*
|
374
378
|
* If |len| is negative, then |buf| is treated as a NUL-terminated string, but
|
375
379
|
* don't depend on this in new code. */
|
376
|
-
OPENSSL_EXPORT BIO *BIO_new_mem_buf(void *buf, int len);
|
380
|
+
OPENSSL_EXPORT BIO *BIO_new_mem_buf(const void *buf, int len);
|
377
381
|
|
378
382
|
/* BIO_mem_contents sets |*out_contents| to point to the current contents of
|
379
383
|
* |bio| and |*out_len| to contain the length of that data. It returns one on
|
@@ -419,12 +423,7 @@ OPENSSL_EXPORT int BIO_set_mem_eof_return(BIO *bio, int eof_value);
|
|
419
423
|
* underlying file descriptor when the BIO is freed.
|
420
424
|
*
|
421
425
|
* |BIO_reset| attempts to seek the file pointer to the start of file using
|
422
|
-
* |lseek|.
|
423
|
-
*
|
424
|
-
* |BIO_seek| sets the file pointer to position |off| from start of file using
|
425
|
-
* |lseek|.
|
426
|
-
*
|
427
|
-
* |BIO_tell| returns the current file position. */
|
426
|
+
* |lseek|. */
|
428
427
|
|
429
428
|
/* BIO_s_fd returns a |BIO_METHOD| for file descriptor fds. */
|
430
429
|
OPENSSL_EXPORT const BIO_METHOD *BIO_s_fd(void);
|
@@ -435,12 +434,18 @@ OPENSSL_EXPORT BIO *BIO_new_fd(int fd, int close_flag);
|
|
435
434
|
|
436
435
|
/* BIO_set_fd sets the file descriptor of |bio| to |fd|. If |close_flag| is
|
437
436
|
* non-zero then |fd| will be closed when |bio| is. It returns one on success
|
438
|
-
* or zero on error.
|
437
|
+
* or zero on error.
|
438
|
+
*
|
439
|
+
* This function may also be used with socket BIOs (see |BIO_s_socket| and
|
440
|
+
* |BIO_new_socket|). */
|
439
441
|
OPENSSL_EXPORT int BIO_set_fd(BIO *bio, int fd, int close_flag);
|
440
442
|
|
441
443
|
/* BIO_get_fd returns the file descriptor currently in use by |bio| or -1 if
|
442
444
|
* |bio| does not wrap a file descriptor. If there is a file descriptor and
|
443
|
-
* |out_fd| is not NULL, it also sets |*out_fd| to the file descriptor.
|
445
|
+
* |out_fd| is not NULL, it also sets |*out_fd| to the file descriptor.
|
446
|
+
*
|
447
|
+
* This function may also be used with socket BIOs (see |BIO_s_socket| and
|
448
|
+
* |BIO_new_socket|). */
|
444
449
|
OPENSSL_EXPORT int BIO_get_fd(BIO *bio, int *out_fd);
|
445
450
|
|
446
451
|
|
@@ -453,11 +458,6 @@ OPENSSL_EXPORT int BIO_get_fd(BIO *bio, int *out_fd);
|
|
453
458
|
* |BIO_reset| attempts to seek the file pointer to the start of file using
|
454
459
|
* |fseek|.
|
455
460
|
*
|
456
|
-
* |BIO_seek| sets the file pointer to the given position from the start of
|
457
|
-
* file using |fseek|.
|
458
|
-
*
|
459
|
-
* |BIO_eof| calls |feof|.
|
460
|
-
*
|
461
461
|
* Setting the close flag causes |fclose| to be called on the stream when the
|
462
462
|
* BIO is freed. */
|
463
463
|
|
@@ -520,7 +520,17 @@ OPENSSL_EXPORT int BIO_set_read_buffer_size(BIO *bio, int buffer_size);
|
|
520
520
|
OPENSSL_EXPORT int BIO_set_write_buffer_size(BIO *bio, int buffer_size);
|
521
521
|
|
522
522
|
|
523
|
-
/* Socket BIOs.
|
523
|
+
/* Socket BIOs.
|
524
|
+
*
|
525
|
+
* Socket BIOs behave like file descriptor BIOs but, on Windows systems, wrap
|
526
|
+
* the system's |recv| and |send| functions instead of |read| and |write|. On
|
527
|
+
* Windows, file descriptors are provided by C runtime and are not
|
528
|
+
* interchangeable with sockets.
|
529
|
+
*
|
530
|
+
* Socket BIOs may be used with |BIO_set_fd| and |BIO_get_fd|.
|
531
|
+
*
|
532
|
+
* TODO(davidben): Add separate APIs and fix the internals to use |SOCKET|s
|
533
|
+
* around rather than rely on int casts. */
|
524
534
|
|
525
535
|
OPENSSL_EXPORT const BIO_METHOD *BIO_s_socket(void);
|
526
536
|
|
@@ -557,10 +567,18 @@ OPENSSL_EXPORT int BIO_set_conn_hostname(BIO *bio,
|
|
557
567
|
* will connect to. It returns one on success and zero otherwise. */
|
558
568
|
OPENSSL_EXPORT int BIO_set_conn_port(BIO *bio, const char *port_str);
|
559
569
|
|
570
|
+
/* BIO_set_conn_int_port sets |*port| as the port that |bio| will connect to.
|
571
|
+
* It returns one on success and zero otherwise. */
|
572
|
+
OPENSSL_EXPORT int BIO_set_conn_int_port(BIO *bio, const int *port);
|
573
|
+
|
560
574
|
/* BIO_set_nbio sets whether |bio| will use non-blocking I/O operations. It
|
561
575
|
* returns one on success and zero otherwise. */
|
562
576
|
OPENSSL_EXPORT int BIO_set_nbio(BIO *bio, int on);
|
563
577
|
|
578
|
+
/* BIO_do_connect connects |bio| if it has not been connected yet. It returns
|
579
|
+
* one on success and <= 0 otherwise. */
|
580
|
+
OPENSSL_EXPORT int BIO_do_connect(BIO *bio);
|
581
|
+
|
564
582
|
|
565
583
|
/* Datagram BIOs.
|
566
584
|
*
|
@@ -574,8 +592,12 @@ OPENSSL_EXPORT int BIO_set_nbio(BIO *bio, int on);
|
|
574
592
|
#define BIO_CTRL_DGRAM_MTU_EXCEEDED 43 /* check whether the MTU was exceed in
|
575
593
|
the previous write operation. */
|
576
594
|
|
577
|
-
|
578
|
-
|
595
|
+
/* BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT sets a read deadline to drive
|
596
|
+
* retransmits. The |parg| argument to |BIO_ctrl| will be a pointer to a
|
597
|
+
* |timeval| struct. If the structure is all zeros, it clears the read
|
598
|
+
* deadline. Otherwise, |BIO_read| must fail with a temporary error
|
599
|
+
* (e.g. |EAGAIN|) after the deadline. */
|
600
|
+
#define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45
|
579
601
|
|
580
602
|
#define BIO_CTRL_DGRAM_GET_PEER 46
|
581
603
|
|
@@ -701,6 +723,8 @@ OPENSSL_EXPORT int BIO_zero_copy_get_write_buf_done(BIO* bio,
|
|
701
723
|
#define BIO_CTRL_INFO 3 /* opt - extra tit-bits */
|
702
724
|
#define BIO_CTRL_SET 4 /* man - set the 'IO' type */
|
703
725
|
#define BIO_CTRL_GET 5 /* man - get the 'IO' type */
|
726
|
+
#define BIO_CTRL_PUSH 6
|
727
|
+
#define BIO_CTRL_POP 7
|
704
728
|
#define BIO_CTRL_GET_CLOSE 8 /* man - set the 'close' on free */
|
705
729
|
#define BIO_CTRL_SET_CLOSE 9 /* man - set the 'close' on free */
|
706
730
|
#define BIO_CTRL_PENDING 10 /* opt - is their more data buffered */
|
@@ -711,18 +735,8 @@ OPENSSL_EXPORT int BIO_zero_copy_get_write_buf_done(BIO* bio,
|
|
711
735
|
#define BIO_CTRL_GET_CALLBACK 15 /* opt - set callback function */
|
712
736
|
#define BIO_CTRL_SET_FILENAME 30 /* BIO_s_file special */
|
713
737
|
|
714
|
-
/*
|
715
|
-
#define BIO_CTRL_DUP
|
716
|
-
#define BIO_CTRL_PUSH 101
|
717
|
-
#define BIO_CTRL_POP 102
|
718
|
-
|
719
|
-
|
720
|
-
/* Android compatibility section.
|
721
|
-
*
|
722
|
-
* A previous version of BoringSSL used in Android renamed ERR_print_errors_fp
|
723
|
-
* to BIO_print_errors_fp. It has subsequently been renamed back to
|
724
|
-
* ERR_print_errors_fp. */
|
725
|
-
#define BIO_print_errors_fp ERR_print_errors_fp
|
738
|
+
/* BIO_CTRL_DUP is never used, but exists to allow code to compile more easily. */
|
739
|
+
#define BIO_CTRL_DUP 12
|
726
740
|
|
727
741
|
|
728
742
|
/* Deprecated functions. */
|
@@ -878,6 +892,17 @@ struct bio_st {
|
|
878
892
|
|
879
893
|
#if defined(__cplusplus)
|
880
894
|
} /* extern C */
|
895
|
+
|
896
|
+
extern "C++" {
|
897
|
+
|
898
|
+
namespace bssl {
|
899
|
+
|
900
|
+
BORINGSSL_MAKE_DELETER(BIO, BIO_free)
|
901
|
+
|
902
|
+
} // namespace bssl
|
903
|
+
|
904
|
+
} /* extern C++ */
|
905
|
+
|
881
906
|
#endif
|
882
907
|
|
883
908
|
#define BIO_R_BAD_FOPEN_MODE 100
|