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
@@ -192,25 +192,36 @@ void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param)
|
|
192
192
|
OPENSSL_free(param);
|
193
193
|
}
|
194
194
|
|
195
|
-
|
195
|
+
/*-
|
196
196
|
* This function determines how parameters are "inherited" from one structure
|
197
|
-
* to another. There are several different ways this can happen.
|
198
|
-
*
|
199
|
-
*
|
200
|
-
*
|
201
|
-
*
|
202
|
-
*
|
203
|
-
*
|
204
|
-
*
|
205
|
-
*
|
206
|
-
*
|
207
|
-
*
|
208
|
-
*
|
209
|
-
*
|
210
|
-
*
|
211
|
-
*
|
212
|
-
*
|
213
|
-
*
|
197
|
+
* to another. There are several different ways this can happen.
|
198
|
+
*
|
199
|
+
* 1. If a child structure needs to have its values initialized from a parent
|
200
|
+
* they are simply copied across. For example SSL_CTX copied to SSL.
|
201
|
+
* 2. If the structure should take on values only if they are currently unset.
|
202
|
+
* For example the values in an SSL structure will take appropriate value
|
203
|
+
* for SSL servers or clients but only if the application has not set new
|
204
|
+
* ones.
|
205
|
+
*
|
206
|
+
* The "inh_flags" field determines how this function behaves.
|
207
|
+
*
|
208
|
+
* Normally any values which are set in the default are not copied from the
|
209
|
+
* destination and verify flags are ORed together.
|
210
|
+
*
|
211
|
+
* If X509_VP_FLAG_DEFAULT is set then anything set in the source is copied
|
212
|
+
* to the destination. Effectively the values in "to" become default values
|
213
|
+
* which will be used only if nothing new is set in "from".
|
214
|
+
*
|
215
|
+
* If X509_VP_FLAG_OVERWRITE is set then all value are copied across whether
|
216
|
+
* they are set or not. Flags is still Ored though.
|
217
|
+
*
|
218
|
+
* If X509_VP_FLAG_RESET_FLAGS is set then the flags value is copied instead
|
219
|
+
* of ORed.
|
220
|
+
*
|
221
|
+
* If X509_VP_FLAG_LOCKED is set then no values are copied.
|
222
|
+
*
|
223
|
+
* If X509_VP_FLAG_ONCE is set then the current inh_flags setting is zeroed
|
224
|
+
* after the next call.
|
214
225
|
*/
|
215
226
|
|
216
227
|
/* Macro to test if a field should be copied from src to dest */
|
@@ -129,9 +129,10 @@ int X509_CRL_sort(X509_CRL *c)
|
|
129
129
|
return 1;
|
130
130
|
}
|
131
131
|
|
132
|
-
|
132
|
+
int X509_CRL_up_ref(X509_CRL *crl)
|
133
133
|
{
|
134
134
|
CRYPTO_refcount_inc(&crl->references);
|
135
|
+
return 1;
|
135
136
|
}
|
136
137
|
|
137
138
|
int X509_REVOKED_set_revocationDate(X509_REVOKED *x, ASN1_TIME *tm)
|
@@ -460,14 +460,14 @@ static int def_crl_lookup(X509_CRL *crl,
|
|
460
460
|
|
461
461
|
CRYPTO_STATIC_MUTEX_lock_read(&g_crl_sort_lock);
|
462
462
|
const int is_sorted = sk_X509_REVOKED_is_sorted(crl->crl->revoked);
|
463
|
-
|
463
|
+
CRYPTO_STATIC_MUTEX_unlock_read(&g_crl_sort_lock);
|
464
464
|
|
465
465
|
if (!is_sorted) {
|
466
466
|
CRYPTO_STATIC_MUTEX_lock_write(&g_crl_sort_lock);
|
467
467
|
if (!sk_X509_REVOKED_is_sorted(crl->crl->revoked)) {
|
468
468
|
sk_X509_REVOKED_sort(crl->crl->revoked);
|
469
469
|
}
|
470
|
-
|
470
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&g_crl_sort_lock);
|
471
471
|
}
|
472
472
|
|
473
473
|
if (!sk_X509_REVOKED_find(crl->crl->revoked, &idx, &rtmp))
|
@@ -71,6 +71,13 @@
|
|
71
71
|
typedef STACK_OF(X509_NAME_ENTRY) STACK_OF_X509_NAME_ENTRY;
|
72
72
|
DECLARE_STACK_OF(STACK_OF_X509_NAME_ENTRY)
|
73
73
|
|
74
|
+
/*
|
75
|
+
* Maximum length of X509_NAME: much larger than anything we should
|
76
|
+
* ever see in practice.
|
77
|
+
*/
|
78
|
+
|
79
|
+
#define X509_NAME_MAX (1024 * 1024)
|
80
|
+
|
74
81
|
static int x509_name_ex_d2i(ASN1_VALUE **val,
|
75
82
|
const unsigned char **in, long len,
|
76
83
|
const ASN1_ITEM *it,
|
@@ -87,10 +94,6 @@ static int asn1_string_canon(ASN1_STRING *out, ASN1_STRING *in);
|
|
87
94
|
static int i2d_name_canon(STACK_OF(STACK_OF_X509_NAME_ENTRY) * intname,
|
88
95
|
unsigned char **in);
|
89
96
|
|
90
|
-
static int x509_name_ex_print(BIO *out, ASN1_VALUE **pval,
|
91
|
-
int indent,
|
92
|
-
const char *fname, const ASN1_PCTX *pctx);
|
93
|
-
|
94
97
|
ASN1_SEQUENCE(X509_NAME_ENTRY) = {
|
95
98
|
ASN1_SIMPLE(X509_NAME_ENTRY, object, ASN1_OBJECT),
|
96
99
|
ASN1_SIMPLE(X509_NAME_ENTRY, value, ASN1_PRINTABLE)
|
@@ -126,7 +129,7 @@ static const ASN1_EXTERN_FUNCS x509_name_ff = {
|
|
126
129
|
0, /* Default clear behaviour is OK */
|
127
130
|
x509_name_ex_d2i,
|
128
131
|
x509_name_ex_i2d,
|
129
|
-
|
132
|
+
NULL,
|
130
133
|
};
|
131
134
|
|
132
135
|
IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff)
|
@@ -208,6 +211,10 @@ static int x509_name_ex_d2i(ASN1_VALUE **val,
|
|
208
211
|
int ret;
|
209
212
|
STACK_OF(X509_NAME_ENTRY) *entries;
|
210
213
|
X509_NAME_ENTRY *entry;
|
214
|
+
/* Bound the size of an X509_NAME we are willing to parse. */
|
215
|
+
if (len > X509_NAME_MAX) {
|
216
|
+
len = X509_NAME_MAX;
|
217
|
+
}
|
211
218
|
q = p;
|
212
219
|
|
213
220
|
/* Get internal representation of Name */
|
@@ -323,16 +330,6 @@ static int x509_name_encode(X509_NAME *a)
|
|
323
330
|
return -1;
|
324
331
|
}
|
325
332
|
|
326
|
-
static int x509_name_ex_print(BIO *out, ASN1_VALUE **pval,
|
327
|
-
int indent,
|
328
|
-
const char *fname, const ASN1_PCTX *pctx)
|
329
|
-
{
|
330
|
-
if (X509_NAME_print_ex(out, (X509_NAME *)*pval,
|
331
|
-
indent, pctx->nm_flags) <= 0)
|
332
|
-
return 0;
|
333
|
-
return 2;
|
334
|
-
}
|
335
|
-
|
336
333
|
/*
|
337
334
|
* This function generates the canonical encoding of the Name structure. In
|
338
335
|
* it all strings are converted to UTF8, leading, trailing and multiple
|
@@ -453,10 +450,10 @@ static int asn1_string_canon(ASN1_STRING *out, ASN1_STRING *in)
|
|
453
450
|
len--;
|
454
451
|
}
|
455
452
|
|
456
|
-
to = from + len
|
453
|
+
to = from + len;
|
457
454
|
|
458
455
|
/* Ignore trailing spaces */
|
459
|
-
while ((len > 0) && !(
|
456
|
+
while ((len > 0) && !(to[-1] & 0x80) && isspace(to[-1])) {
|
460
457
|
to--;
|
461
458
|
len--;
|
462
459
|
}
|
@@ -54,6 +54,8 @@
|
|
54
54
|
* copied and put under another distribution licence
|
55
55
|
* [including the GNU Public Licence.] */
|
56
56
|
|
57
|
+
#include <openssl/x509.h>
|
58
|
+
|
57
59
|
#include <limits.h>
|
58
60
|
|
59
61
|
#include <openssl/asn1.h>
|
@@ -64,7 +66,6 @@
|
|
64
66
|
#include <openssl/mem.h>
|
65
67
|
#include <openssl/obj.h>
|
66
68
|
#include <openssl/thread.h>
|
67
|
-
#include <openssl/x509.h>
|
68
69
|
|
69
70
|
#include "../internal.h"
|
70
71
|
|
@@ -139,10 +140,11 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
|
|
139
140
|
|
140
141
|
CRYPTO_STATIC_MUTEX_lock_read(&g_pubkey_lock);
|
141
142
|
if (key->pkey != NULL) {
|
142
|
-
|
143
|
-
|
143
|
+
CRYPTO_STATIC_MUTEX_unlock_read(&g_pubkey_lock);
|
144
|
+
EVP_PKEY_up_ref(key->pkey);
|
145
|
+
return key->pkey;
|
144
146
|
}
|
145
|
-
|
147
|
+
CRYPTO_STATIC_MUTEX_unlock_read(&g_pubkey_lock);
|
146
148
|
|
147
149
|
/* Re-encode the |X509_PUBKEY| to DER and parse it. */
|
148
150
|
int spki_len = i2d_X509_PUBKEY(key, &spki);
|
@@ -160,16 +162,17 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
|
|
160
162
|
/* Check to see if another thread set key->pkey first */
|
161
163
|
CRYPTO_STATIC_MUTEX_lock_write(&g_pubkey_lock);
|
162
164
|
if (key->pkey) {
|
163
|
-
|
165
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&g_pubkey_lock);
|
164
166
|
EVP_PKEY_free(ret);
|
165
167
|
ret = key->pkey;
|
166
168
|
} else {
|
167
169
|
key->pkey = ret;
|
168
|
-
|
170
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&g_pubkey_lock);
|
169
171
|
}
|
170
172
|
|
171
173
|
OPENSSL_free(spki);
|
172
|
-
|
174
|
+
EVP_PKEY_up_ref(ret);
|
175
|
+
return ret;
|
173
176
|
|
174
177
|
error:
|
175
178
|
OPENSSL_free(spki);
|
@@ -55,6 +55,7 @@
|
|
55
55
|
* copied and put under another distribution licence
|
56
56
|
* [including the GNU Public Licence.] */
|
57
57
|
|
58
|
+
#include <assert.h>
|
58
59
|
#include <stdio.h>
|
59
60
|
|
60
61
|
#include <openssl/asn1t.h>
|
@@ -95,7 +96,6 @@ static int x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
95
96
|
switch (operation) {
|
96
97
|
|
97
98
|
case ASN1_OP_NEW_POST:
|
98
|
-
ret->valid = 0;
|
99
99
|
ret->name = NULL;
|
100
100
|
ret->ex_flags = 0;
|
101
101
|
ret->ex_pathlen = -1;
|
@@ -142,10 +142,10 @@ IMPLEMENT_ASN1_FUNCTIONS(X509)
|
|
142
142
|
|
143
143
|
IMPLEMENT_ASN1_DUP_FUNCTION(X509)
|
144
144
|
|
145
|
-
|
145
|
+
int X509_up_ref(X509 *x)
|
146
146
|
{
|
147
147
|
CRYPTO_refcount_inc(&x->references);
|
148
|
-
return
|
148
|
+
return 1;
|
149
149
|
}
|
150
150
|
|
151
151
|
int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused * unused,
|
@@ -204,12 +204,73 @@ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length)
|
|
204
204
|
return NULL;
|
205
205
|
}
|
206
206
|
|
207
|
+
/*
|
208
|
+
* Serialize trusted certificate to *pp or just return the required buffer
|
209
|
+
* length if pp == NULL. We ultimately want to avoid modifying *pp in the
|
210
|
+
* error path, but that depends on similar hygiene in lower-level functions.
|
211
|
+
* Here we avoid compounding the problem.
|
212
|
+
*/
|
213
|
+
static int i2d_x509_aux_internal(X509 *a, unsigned char **pp)
|
214
|
+
{
|
215
|
+
int length, tmplen;
|
216
|
+
unsigned char *start = pp != NULL ? *pp : NULL;
|
217
|
+
|
218
|
+
assert(pp == NULL || *pp != NULL);
|
219
|
+
|
220
|
+
/*
|
221
|
+
* This might perturb *pp on error, but fixing that belongs in i2d_X509()
|
222
|
+
* not here. It should be that if a == NULL length is zero, but we check
|
223
|
+
* both just in case.
|
224
|
+
*/
|
225
|
+
length = i2d_X509(a, pp);
|
226
|
+
if (length <= 0 || a == NULL) {
|
227
|
+
return length;
|
228
|
+
}
|
229
|
+
|
230
|
+
tmplen = i2d_X509_CERT_AUX(a->aux, pp);
|
231
|
+
if (tmplen < 0) {
|
232
|
+
if (start != NULL)
|
233
|
+
*pp = start;
|
234
|
+
return tmplen;
|
235
|
+
}
|
236
|
+
length += tmplen;
|
237
|
+
|
238
|
+
return length;
|
239
|
+
}
|
240
|
+
|
241
|
+
/*
|
242
|
+
* Serialize trusted certificate to *pp, or just return the required buffer
|
243
|
+
* length if pp == NULL.
|
244
|
+
*
|
245
|
+
* When pp is not NULL, but *pp == NULL, we allocate the buffer, but since
|
246
|
+
* we're writing two ASN.1 objects back to back, we can't have i2d_X509() do
|
247
|
+
* the allocation, nor can we allow i2d_X509_CERT_AUX() to increment the
|
248
|
+
* allocated buffer.
|
249
|
+
*/
|
207
250
|
int i2d_X509_AUX(X509 *a, unsigned char **pp)
|
208
251
|
{
|
209
252
|
int length;
|
210
|
-
|
211
|
-
|
212
|
-
|
253
|
+
unsigned char *tmp;
|
254
|
+
|
255
|
+
/* Buffer provided by caller */
|
256
|
+
if (pp == NULL || *pp != NULL)
|
257
|
+
return i2d_x509_aux_internal(a, pp);
|
258
|
+
|
259
|
+
/* Obtain the combined length */
|
260
|
+
if ((length = i2d_x509_aux_internal(a, NULL)) <= 0)
|
261
|
+
return length;
|
262
|
+
|
263
|
+
/* Allocate requisite combined storage */
|
264
|
+
*pp = tmp = OPENSSL_malloc(length);
|
265
|
+
if (tmp == NULL)
|
266
|
+
return -1; /* Push error onto error stack? */
|
267
|
+
|
268
|
+
/* Encode, but keep *pp at the originally malloced pointer */
|
269
|
+
length = i2d_x509_aux_internal(a, &tmp);
|
270
|
+
if (length <= 0) {
|
271
|
+
OPENSSL_free(*pp);
|
272
|
+
*pp = NULL;
|
273
|
+
}
|
213
274
|
return length;
|
214
275
|
}
|
215
276
|
|
@@ -241,7 +241,7 @@ const X509_POLICY_CACHE *policy_cache_set(X509 *x)
|
|
241
241
|
|
242
242
|
CRYPTO_STATIC_MUTEX_lock_read(&g_x509_policy_cache_lock);
|
243
243
|
cache = x->policy_cache;
|
244
|
-
|
244
|
+
CRYPTO_STATIC_MUTEX_unlock_read(&g_x509_policy_cache_lock);
|
245
245
|
|
246
246
|
if (cache != NULL)
|
247
247
|
return cache;
|
@@ -250,7 +250,7 @@ const X509_POLICY_CACHE *policy_cache_set(X509 *x)
|
|
250
250
|
if (x->policy_cache == NULL)
|
251
251
|
policy_cache_new(x);
|
252
252
|
cache = x->policy_cache;
|
253
|
-
|
253
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&g_x509_policy_cache_lock);
|
254
254
|
|
255
255
|
return cache;
|
256
256
|
}
|
@@ -255,7 +255,8 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs,
|
|
255
255
|
level++;
|
256
256
|
x = sk_X509_value(certs, i);
|
257
257
|
cache = policy_cache_set(x);
|
258
|
-
|
258
|
+
X509_up_ref(x);
|
259
|
+
level->cert = x;
|
259
260
|
|
260
261
|
if (!cache->anyPolicy)
|
261
262
|
level->flags |= X509_V_FLAG_INHIBIT_ANY;
|
@@ -138,10 +138,12 @@ static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid,
|
|
138
138
|
nval = NCONF_get_section(conf, value + 1);
|
139
139
|
else
|
140
140
|
nval = X509V3_parse_list(value);
|
141
|
-
if (sk_CONF_VALUE_num(nval) <= 0) {
|
141
|
+
if (nval == NULL || sk_CONF_VALUE_num(nval) <= 0) {
|
142
142
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_EXTENSION_STRING);
|
143
143
|
ERR_add_error_data(4, "name=", OBJ_nid2sn(ext_nid), ",section=",
|
144
144
|
value);
|
145
|
+
if (*value != '@')
|
146
|
+
sk_CONF_VALUE_pop_free(nval, X509V3_conf_free);
|
145
147
|
return NULL;
|
146
148
|
}
|
147
149
|
ext_struc = method->v2i(method, ctx, nval);
|
@@ -263,10 +265,9 @@ static int v3_check_generic(char **value)
|
|
263
265
|
static X509_EXTENSION *v3_generic_extension(const char *ext, char *value,
|
264
266
|
int crit, int gen_type,
|
265
267
|
X509V3_CTX *ctx)
|
266
|
-
OPENSSL_SUPPRESS_POTENTIALLY_UNINITIALIZED_WARNINGS
|
267
268
|
{
|
268
269
|
unsigned char *ext_der = NULL;
|
269
|
-
long ext_len;
|
270
|
+
long ext_len = 0;
|
270
271
|
ASN1_OBJECT *obj = NULL;
|
271
272
|
ASN1_OCTET_STRING *oct = NULL;
|
272
273
|
X509_EXTENSION *extension = NULL;
|
@@ -190,6 +190,11 @@ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
|
|
190
190
|
goto err;
|
191
191
|
}
|
192
192
|
pol = POLICYINFO_new();
|
193
|
+
if (pol == NULL) {
|
194
|
+
OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
|
195
|
+
ASN1_OBJECT_free(pobj);
|
196
|
+
goto err;
|
197
|
+
}
|
193
198
|
pol->policyid = pobj;
|
194
199
|
}
|
195
200
|
if (!sk_POLICYINFO_push(pols, pol)) {
|
@@ -207,9 +207,6 @@ static int unknown_ext_print(BIO *out, X509_EXTENSION *ext,
|
|
207
207
|
return 1;
|
208
208
|
|
209
209
|
case X509V3_EXT_PARSE_UNKNOWN:
|
210
|
-
return ASN1_parse_dump(out,
|
211
|
-
ext->value->data, ext->value->length, indent,
|
212
|
-
-1);
|
213
210
|
case X509V3_EXT_DUMP_UNKNOWN:
|
214
211
|
return BIO_hexdump(out, ext->value->data, ext->value->length, indent);
|
215
212
|
|
@@ -431,7 +431,7 @@ static void x509v3_cache_extensions(X509 *x)
|
|
431
431
|
CRYPTO_STATIC_MUTEX_lock_write(&g_x509_cache_extensions_lock);
|
432
432
|
|
433
433
|
if (x->ex_flags & EXFLAG_SET) {
|
434
|
-
|
434
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&g_x509_cache_extensions_lock);
|
435
435
|
return;
|
436
436
|
}
|
437
437
|
|
@@ -564,7 +564,7 @@ static void x509v3_cache_extensions(X509 *x)
|
|
564
564
|
}
|
565
565
|
x->ex_flags |= EXFLAG_SET;
|
566
566
|
|
567
|
-
|
567
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&g_x509_cache_extensions_lock);
|
568
568
|
}
|
569
569
|
|
570
570
|
/*
|
@@ -852,7 +852,8 @@ static const unsigned char *valid_star(const unsigned char *p, size_t len,
|
|
852
852
|
state = LABEL_START;
|
853
853
|
++dots;
|
854
854
|
} else if (p[i] == '-') {
|
855
|
-
|
855
|
+
/* no domain/subdomain starts with '-' */
|
856
|
+
if ((state & LABEL_START) != 0)
|
856
857
|
return NULL;
|
857
858
|
state |= LABEL_HYPHEN;
|
858
859
|
} else
|
@@ -82,10 +82,8 @@ extern "C" {
|
|
82
82
|
* permits implicit context to be authenticated but may be empty if not needed.
|
83
83
|
*
|
84
84
|
* The "seal" and "open" operations may work in-place if the |out| and |in|
|
85
|
-
* arguments are equal.
|
86
|
-
*
|
87
|
-
* the input data otherwise the input may be overwritten before it has been
|
88
|
-
* read. This situation will cause an error.
|
85
|
+
* arguments are equal. Otherwise, if |out| and |in| alias, input data may be
|
86
|
+
* overwritten before it is read. This situation will cause an error.
|
89
87
|
*
|
90
88
|
* The "seal" and "open" operations return one on success and zero on error. */
|
91
89
|
|
@@ -135,49 +133,6 @@ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_ctr_hmac_sha256(void);
|
|
135
133
|
OPENSSL_EXPORT int EVP_has_aes_hardware(void);
|
136
134
|
|
137
135
|
|
138
|
-
/* TLS-specific AEAD algorithms.
|
139
|
-
*
|
140
|
-
* These AEAD primitives do not meet the definition of generic AEADs. They are
|
141
|
-
* all specific to TLS and should not be used outside of that context. They must
|
142
|
-
* be initialized with |EVP_AEAD_CTX_init_with_direction|, are stateful, and may
|
143
|
-
* not be used concurrently. Any nonces are used as IVs, so they must be
|
144
|
-
* unpredictable. They only accept an |ad| parameter of length 11 (the standard
|
145
|
-
* TLS one with length omitted). */
|
146
|
-
|
147
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_rc4_md5_tls(void);
|
148
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_rc4_sha1_tls(void);
|
149
|
-
|
150
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls(void);
|
151
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls_implicit_iv(void);
|
152
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha256_tls(void);
|
153
|
-
|
154
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls(void);
|
155
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls_implicit_iv(void);
|
156
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha256_tls(void);
|
157
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha384_tls(void);
|
158
|
-
|
159
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls(void);
|
160
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls_implicit_iv(void);
|
161
|
-
|
162
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_tls(void);
|
163
|
-
|
164
|
-
|
165
|
-
/* SSLv3-specific AEAD algorithms.
|
166
|
-
*
|
167
|
-
* These AEAD primitives do not meet the definition of generic AEADs. They are
|
168
|
-
* all specific to SSLv3 and should not be used outside of that context. They
|
169
|
-
* must be initialized with |EVP_AEAD_CTX_init_with_direction|, are stateful,
|
170
|
-
* and may not be used concurrently. They only accept an |ad| parameter of
|
171
|
-
* length 9 (the standard TLS one with length and version omitted). */
|
172
|
-
|
173
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_rc4_md5_ssl3(void);
|
174
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_rc4_sha1_ssl3(void);
|
175
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_ssl3(void);
|
176
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_ssl3(void);
|
177
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_ssl3(void);
|
178
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_ssl3(void);
|
179
|
-
|
180
|
-
|
181
136
|
/* Utility functions. */
|
182
137
|
|
183
138
|
/* EVP_AEAD_key_length returns the length, in bytes, of the keys used by
|
@@ -226,12 +181,6 @@ typedef struct evp_aead_ctx_st {
|
|
226
181
|
* be used. */
|
227
182
|
#define EVP_AEAD_DEFAULT_TAG_LENGTH 0
|
228
183
|
|
229
|
-
/* evp_aead_direction_t denotes the direction of an AEAD operation. */
|
230
|
-
enum evp_aead_direction_t {
|
231
|
-
evp_aead_open,
|
232
|
-
evp_aead_seal,
|
233
|
-
};
|
234
|
-
|
235
184
|
/* EVP_AEAD_CTX_zero sets an uninitialized |ctx| to the zero state. It must be
|
236
185
|
* initialized with |EVP_AEAD_CTX_init| before use. It is safe, but not
|
237
186
|
* necessary, to call |EVP_AEAD_CTX_cleanup| in this state. This may be used for
|
@@ -251,13 +200,6 @@ OPENSSL_EXPORT int EVP_AEAD_CTX_init(EVP_AEAD_CTX *ctx, const EVP_AEAD *aead,
|
|
251
200
|
const uint8_t *key, size_t key_len,
|
252
201
|
size_t tag_len, ENGINE *impl);
|
253
202
|
|
254
|
-
/* EVP_AEAD_CTX_init_with_direction calls |EVP_AEAD_CTX_init| for normal
|
255
|
-
* AEADs. For TLS-specific and SSL3-specific AEADs, it initializes |ctx| for a
|
256
|
-
* given direction. */
|
257
|
-
OPENSSL_EXPORT int EVP_AEAD_CTX_init_with_direction(
|
258
|
-
EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len,
|
259
|
-
size_t tag_len, enum evp_aead_direction_t dir);
|
260
|
-
|
261
203
|
/* EVP_AEAD_CTX_cleanup frees any data allocated by |ctx|. It is a no-op to
|
262
204
|
* call |EVP_AEAD_CTX_cleanup| on a |EVP_AEAD_CTX| that has been |memset| to
|
263
205
|
* all zeros. */
|
@@ -282,7 +224,7 @@ OPENSSL_EXPORT void EVP_AEAD_CTX_cleanup(EVP_AEAD_CTX *ctx);
|
|
282
224
|
* insufficient, zero will be returned. (In this case, |*out_len| is set to
|
283
225
|
* zero.)
|
284
226
|
*
|
285
|
-
* If |in| and |out| alias then |out| must be
|
227
|
+
* If |in| and |out| alias then |out| must be == |in|. */
|
286
228
|
OPENSSL_EXPORT int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
287
229
|
size_t *out_len, size_t max_out_len,
|
288
230
|
const uint8_t *nonce, size_t nonce_len,
|
@@ -307,20 +249,70 @@ OPENSSL_EXPORT int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
307
249
|
* insufficient, zero will be returned. (In this case, |*out_len| is set to
|
308
250
|
* zero.)
|
309
251
|
*
|
310
|
-
* If |in| and |out| alias then |out| must be
|
252
|
+
* If |in| and |out| alias then |out| must be == |in|. */
|
311
253
|
OPENSSL_EXPORT int EVP_AEAD_CTX_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
312
254
|
size_t *out_len, size_t max_out_len,
|
313
255
|
const uint8_t *nonce, size_t nonce_len,
|
314
256
|
const uint8_t *in, size_t in_len,
|
315
257
|
const uint8_t *ad, size_t ad_len);
|
316
258
|
|
259
|
+
/* EVP_AEAD_CTX_aead returns the underlying AEAD for |ctx|, or NULL if one has
|
260
|
+
* not been set. */
|
261
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_AEAD_CTX_aead(const EVP_AEAD_CTX *ctx);
|
262
|
+
|
263
|
+
|
264
|
+
/* TLS-specific AEAD algorithms.
|
265
|
+
*
|
266
|
+
* These AEAD primitives do not meet the definition of generic AEADs. They are
|
267
|
+
* all specific to TLS and should not be used outside of that context. They must
|
268
|
+
* be initialized with |EVP_AEAD_CTX_init_with_direction|, are stateful, and may
|
269
|
+
* not be used concurrently. Any nonces are used as IVs, so they must be
|
270
|
+
* unpredictable. They only accept an |ad| parameter of length 11 (the standard
|
271
|
+
* TLS one with length omitted). */
|
272
|
+
|
273
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls(void);
|
274
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls_implicit_iv(void);
|
275
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha256_tls(void);
|
276
|
+
|
277
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls(void);
|
278
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls_implicit_iv(void);
|
279
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha256_tls(void);
|
280
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha384_tls(void);
|
281
|
+
|
282
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls(void);
|
283
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls_implicit_iv(void);
|
284
|
+
|
285
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_tls(void);
|
286
|
+
|
287
|
+
|
288
|
+
/* SSLv3-specific AEAD algorithms.
|
289
|
+
*
|
290
|
+
* These AEAD primitives do not meet the definition of generic AEADs. They are
|
291
|
+
* all specific to SSLv3 and should not be used outside of that context. They
|
292
|
+
* must be initialized with |EVP_AEAD_CTX_init_with_direction|, are stateful,
|
293
|
+
* and may not be used concurrently. They only accept an |ad| parameter of
|
294
|
+
* length 9 (the standard TLS one with length and version omitted). */
|
295
|
+
|
296
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_ssl3(void);
|
297
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_ssl3(void);
|
298
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_ssl3(void);
|
299
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_ssl3(void);
|
300
|
+
|
317
301
|
|
318
302
|
/* Obscure functions. */
|
319
303
|
|
320
|
-
/*
|
321
|
-
|
322
|
-
|
323
|
-
|
304
|
+
/* evp_aead_direction_t denotes the direction of an AEAD operation. */
|
305
|
+
enum evp_aead_direction_t {
|
306
|
+
evp_aead_open,
|
307
|
+
evp_aead_seal,
|
308
|
+
};
|
309
|
+
|
310
|
+
/* EVP_AEAD_CTX_init_with_direction calls |EVP_AEAD_CTX_init| for normal
|
311
|
+
* AEADs. For TLS-specific and SSL3-specific AEADs, it initializes |ctx| for a
|
312
|
+
* given direction. */
|
313
|
+
OPENSSL_EXPORT int EVP_AEAD_CTX_init_with_direction(
|
314
|
+
EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len,
|
315
|
+
size_t tag_len, enum evp_aead_direction_t dir);
|
324
316
|
|
325
317
|
/* EVP_AEAD_CTX_get_iv sets |*out_len| to the length of the IV for |ctx| and
|
326
318
|
* sets |*out_iv| to point to that many bytes of the current IV. This is only
|
@@ -331,16 +323,23 @@ OPENSSL_EXPORT int EVP_AEAD_CTX_get_iv(const EVP_AEAD_CTX *ctx,
|
|
331
323
|
const uint8_t **out_iv, size_t *out_len);
|
332
324
|
|
333
325
|
|
334
|
-
|
326
|
+
#if defined(__cplusplus)
|
327
|
+
} /* extern C */
|
328
|
+
|
329
|
+
#if !defined(BORINGSSL_NO_CXX)
|
330
|
+
extern "C++" {
|
331
|
+
|
332
|
+
namespace bssl {
|
335
333
|
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_chacha20_poly1305_rfc7539(void);
|
334
|
+
using ScopedEVP_AEAD_CTX =
|
335
|
+
internal::StackAllocated<EVP_AEAD_CTX, void, EVP_AEAD_CTX_zero,
|
336
|
+
EVP_AEAD_CTX_cleanup>;
|
340
337
|
|
338
|
+
} // namespace bssl
|
339
|
+
|
340
|
+
} // extern C++
|
341
|
+
#endif
|
341
342
|
|
342
|
-
#if defined(__cplusplus)
|
343
|
-
} /* extern C */
|
344
343
|
#endif
|
345
344
|
|
346
345
|
#endif /* OPENSSL_HEADER_AEAD_H */
|