grpc 1.9.1 → 1.10.0.pre1
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 +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -36,8 +36,7 @@
|
|
36
36
|
#include <grpc/support/alloc.h>
|
37
37
|
#include <grpc/support/log.h>
|
38
38
|
#include <grpc/support/sync.h>
|
39
|
-
#include <grpc/support/
|
40
|
-
#include <grpc/support/useful.h>
|
39
|
+
#include <grpc/support/thd_id.h>
|
41
40
|
|
42
41
|
extern "C" {
|
43
42
|
#include <openssl/bio.h>
|
@@ -96,8 +95,7 @@ struct tsi_ssl_server_handshaker_factory {
|
|
96
95
|
typedef struct {
|
97
96
|
tsi_handshaker base;
|
98
97
|
SSL* ssl;
|
99
|
-
BIO*
|
100
|
-
BIO* from_ssl;
|
98
|
+
BIO* network_io;
|
101
99
|
tsi_result result;
|
102
100
|
tsi_ssl_handshaker_factory* factory_ref;
|
103
101
|
} tsi_ssl_handshaker;
|
@@ -105,8 +103,7 @@ typedef struct {
|
|
105
103
|
typedef struct {
|
106
104
|
tsi_frame_protector base;
|
107
105
|
SSL* ssl;
|
108
|
-
BIO*
|
109
|
-
BIO* from_ssl;
|
106
|
+
BIO* network_io;
|
110
107
|
unsigned char* buffer;
|
111
108
|
size_t buffer_size;
|
112
109
|
size_t buffer_offset;
|
@@ -129,7 +126,7 @@ static void openssl_locking_cb(int mode, int type, const char* file, int line) {
|
|
129
126
|
}
|
130
127
|
|
131
128
|
static unsigned long openssl_thread_id_cb(void) {
|
132
|
-
return
|
129
|
+
return static_cast<unsigned long>(gpr_thd_currentid());
|
133
130
|
}
|
134
131
|
|
135
132
|
static void init_openssl(void) {
|
@@ -140,7 +137,8 @@ static void init_openssl(void) {
|
|
140
137
|
OpenSSL_add_all_algorithms();
|
141
138
|
num_locks = CRYPTO_num_locks();
|
142
139
|
GPR_ASSERT(num_locks > 0);
|
143
|
-
openssl_mutexes =
|
140
|
+
openssl_mutexes = static_cast<gpr_mu*>(
|
141
|
+
gpr_malloc(static_cast<size_t>(num_locks) * sizeof(gpr_mu)));
|
144
142
|
for (i = 0; i < CRYPTO_num_locks(); i++) {
|
145
143
|
gpr_mu_init(&openssl_mutexes[i]);
|
146
144
|
}
|
@@ -257,7 +255,7 @@ static tsi_result ssl_get_x509_common_name(X509* cert, unsigned char** utf8,
|
|
257
255
|
gpr_log(GPR_ERROR, "Could not extract utf8 from asn1 string.");
|
258
256
|
return TSI_OUT_OF_RESOURCES;
|
259
257
|
}
|
260
|
-
*utf8_size = (
|
258
|
+
*utf8_size = static_cast<size_t>(utf8_returned_size);
|
261
259
|
return TSI_OK;
|
262
260
|
}
|
263
261
|
|
@@ -278,8 +276,8 @@ static tsi_result peer_property_from_x509_common_name(
|
|
278
276
|
}
|
279
277
|
result = tsi_construct_string_peer_property(
|
280
278
|
TSI_X509_SUBJECT_COMMON_NAME_PEER_PROPERTY,
|
281
|
-
common_name == nullptr ? "" :
|
282
|
-
property);
|
279
|
+
common_name == nullptr ? "" : reinterpret_cast<const char*>(common_name),
|
280
|
+
common_name_size, property);
|
283
281
|
OPENSSL_free(common_name);
|
284
282
|
return result;
|
285
283
|
}
|
@@ -298,7 +296,8 @@ static tsi_result add_pem_certificate(X509* cert, tsi_peer_property* property) {
|
|
298
296
|
return TSI_INTERNAL_ERROR;
|
299
297
|
}
|
300
298
|
tsi_result result = tsi_construct_string_peer_property(
|
301
|
-
TSI_X509_PEM_CERT_PROPERTY, (const char*)contents,
|
299
|
+
TSI_X509_PEM_CERT_PROPERTY, (const char*)contents,
|
300
|
+
static_cast<size_t>(len), property);
|
302
301
|
BIO_free(bio);
|
303
302
|
return result;
|
304
303
|
}
|
@@ -327,8 +326,9 @@ static tsi_result add_subject_alt_names_properties_to_peer(
|
|
327
326
|
break;
|
328
327
|
}
|
329
328
|
result = tsi_construct_string_peer_property(
|
330
|
-
TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY,
|
331
|
-
(
|
329
|
+
TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY,
|
330
|
+
reinterpret_cast<const char*>(name), static_cast<size_t>(name_size),
|
331
|
+
&peer->properties[peer->property_count++]);
|
332
332
|
OPENSSL_free(name);
|
333
333
|
} else if (subject_alt_name->type == GEN_IPADD) {
|
334
334
|
char ntop_buf[INET6_ADDRSTRLEN];
|
@@ -364,17 +364,18 @@ static tsi_result add_subject_alt_names_properties_to_peer(
|
|
364
364
|
static tsi_result peer_from_x509(X509* cert, int include_certificate_type,
|
365
365
|
tsi_peer* peer) {
|
366
366
|
/* TODO(jboeuf): Maybe add more properties. */
|
367
|
-
GENERAL_NAMES* subject_alt_names =
|
368
|
-
cert, NID_subject_alt_name, nullptr, nullptr);
|
369
|
-
int subject_alt_name_count =
|
370
|
-
|
371
|
-
|
367
|
+
GENERAL_NAMES* subject_alt_names = static_cast<GENERAL_NAMES*>(
|
368
|
+
X509_get_ext_d2i(cert, NID_subject_alt_name, nullptr, nullptr));
|
369
|
+
int subject_alt_name_count =
|
370
|
+
(subject_alt_names != nullptr)
|
371
|
+
? static_cast<int>(sk_GENERAL_NAME_num(subject_alt_names))
|
372
|
+
: 0;
|
372
373
|
size_t property_count;
|
373
374
|
tsi_result result;
|
374
375
|
GPR_ASSERT(subject_alt_name_count >= 0);
|
375
|
-
property_count = (include_certificate_type ? (
|
376
|
+
property_count = (include_certificate_type ? static_cast<size_t>(1) : 0) +
|
376
377
|
2 /* common name, certificate */ +
|
377
|
-
(
|
378
|
+
static_cast<size_t>(subject_alt_name_count);
|
378
379
|
result = tsi_construct_peer(property_count, peer);
|
379
380
|
if (result != TSI_OK) return result;
|
380
381
|
do {
|
@@ -394,7 +395,7 @@ static tsi_result peer_from_x509(X509* cert, int include_certificate_type,
|
|
394
395
|
|
395
396
|
if (subject_alt_name_count != 0) {
|
396
397
|
result = add_subject_alt_names_properties_to_peer(
|
397
|
-
peer, subject_alt_names, (
|
398
|
+
peer, subject_alt_names, static_cast<size_t>(subject_alt_name_count));
|
398
399
|
if (result != TSI_OK) break;
|
399
400
|
}
|
400
401
|
} while (0);
|
@@ -411,7 +412,7 @@ static void log_ssl_error_stack(void) {
|
|
411
412
|
unsigned long err;
|
412
413
|
while ((err = ERR_get_error()) != 0) {
|
413
414
|
char details[256];
|
414
|
-
ERR_error_string_n((
|
415
|
+
ERR_error_string_n(static_cast<uint32_t>(err), details, sizeof(details));
|
415
416
|
gpr_log(GPR_ERROR, "%s", details);
|
416
417
|
}
|
417
418
|
}
|
@@ -421,8 +422,8 @@ static tsi_result do_ssl_read(SSL* ssl, unsigned char* unprotected_bytes,
|
|
421
422
|
size_t* unprotected_bytes_size) {
|
422
423
|
int read_from_ssl;
|
423
424
|
GPR_ASSERT(*unprotected_bytes_size <= INT_MAX);
|
424
|
-
read_from_ssl =
|
425
|
-
|
425
|
+
read_from_ssl = SSL_read(ssl, unprotected_bytes,
|
426
|
+
static_cast<int>(*unprotected_bytes_size));
|
426
427
|
if (read_from_ssl <= 0) {
|
427
428
|
read_from_ssl = SSL_get_error(ssl, read_from_ssl);
|
428
429
|
switch (read_from_ssl) {
|
@@ -445,7 +446,7 @@ static tsi_result do_ssl_read(SSL* ssl, unsigned char* unprotected_bytes,
|
|
445
446
|
return TSI_PROTOCOL_FAILURE;
|
446
447
|
}
|
447
448
|
}
|
448
|
-
*unprotected_bytes_size = (
|
449
|
+
*unprotected_bytes_size = static_cast<size_t>(read_from_ssl);
|
449
450
|
return TSI_OK;
|
450
451
|
}
|
451
452
|
|
@@ -454,8 +455,8 @@ static tsi_result do_ssl_write(SSL* ssl, unsigned char* unprotected_bytes,
|
|
454
455
|
size_t unprotected_bytes_size) {
|
455
456
|
int ssl_write_result;
|
456
457
|
GPR_ASSERT(unprotected_bytes_size <= INT_MAX);
|
457
|
-
ssl_write_result =
|
458
|
-
|
458
|
+
ssl_write_result = SSL_write(ssl, unprotected_bytes,
|
459
|
+
static_cast<int>(unprotected_bytes_size));
|
459
460
|
if (ssl_write_result < 0) {
|
460
461
|
ssl_write_result = SSL_get_error(ssl, ssl_write_result);
|
461
462
|
if (ssl_write_result == SSL_ERROR_WANT_READ) {
|
@@ -479,7 +480,8 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context,
|
|
479
480
|
X509* certificate = nullptr;
|
480
481
|
BIO* pem;
|
481
482
|
GPR_ASSERT(pem_cert_chain_size <= INT_MAX);
|
482
|
-
pem = BIO_new_mem_buf((void*)pem_cert_chain,
|
483
|
+
pem = BIO_new_mem_buf((void*)pem_cert_chain,
|
484
|
+
static_cast<int>(pem_cert_chain_size));
|
483
485
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
484
486
|
|
485
487
|
do {
|
@@ -522,7 +524,7 @@ static tsi_result ssl_ctx_use_private_key(SSL_CTX* context, const char* pem_key,
|
|
522
524
|
EVP_PKEY* private_key = nullptr;
|
523
525
|
BIO* pem;
|
524
526
|
GPR_ASSERT(pem_key_size <= INT_MAX);
|
525
|
-
pem = BIO_new_mem_buf((void*)pem_key, (
|
527
|
+
pem = BIO_new_mem_buf((void*)pem_key, static_cast<int>(pem_key_size));
|
526
528
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
527
529
|
do {
|
528
530
|
private_key = PEM_read_bio_PrivateKey(pem, nullptr, nullptr, (void*)"");
|
@@ -554,7 +556,7 @@ static tsi_result ssl_ctx_load_verification_certs(SSL_CTX* context,
|
|
554
556
|
BIO* pem;
|
555
557
|
X509_STORE* root_store;
|
556
558
|
GPR_ASSERT(pem_roots_size <= INT_MAX);
|
557
|
-
pem = BIO_new_mem_buf((void*)pem_roots, (
|
559
|
+
pem = BIO_new_mem_buf((void*)pem_roots, static_cast<int>(pem_roots_size));
|
558
560
|
root_store = SSL_CTX_get_cert_store(context);
|
559
561
|
if (root_store == nullptr) return TSI_INVALID_ARGUMENT;
|
560
562
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
@@ -658,7 +660,7 @@ static tsi_result extract_x509_subject_names_from_pem_cert(const char* pem_cert,
|
|
658
660
|
tsi_result result = TSI_OK;
|
659
661
|
X509* cert = nullptr;
|
660
662
|
BIO* pem;
|
661
|
-
pem = BIO_new_mem_buf((void*)pem_cert, (
|
663
|
+
pem = BIO_new_mem_buf((void*)pem_cert, static_cast<int>(strlen(pem_cert)));
|
662
664
|
if (pem == nullptr) return TSI_OUT_OF_RESOURCES;
|
663
665
|
|
664
666
|
cert = PEM_read_bio_X509(pem, nullptr, nullptr, (void*)"");
|
@@ -686,23 +688,25 @@ static tsi_result build_alpn_protocol_name_list(
|
|
686
688
|
size_t length =
|
687
689
|
alpn_protocols[i] == nullptr ? 0 : strlen(alpn_protocols[i]);
|
688
690
|
if (length == 0 || length > 255) {
|
689
|
-
gpr_log(GPR_ERROR, "Invalid protocol name length: %d.",
|
691
|
+
gpr_log(GPR_ERROR, "Invalid protocol name length: %d.",
|
692
|
+
static_cast<int>(length));
|
690
693
|
return TSI_INVALID_ARGUMENT;
|
691
694
|
}
|
692
695
|
*protocol_name_list_length += length + 1;
|
693
696
|
}
|
694
|
-
*protocol_name_list =
|
697
|
+
*protocol_name_list =
|
698
|
+
static_cast<unsigned char*>(gpr_malloc(*protocol_name_list_length));
|
695
699
|
if (*protocol_name_list == nullptr) return TSI_OUT_OF_RESOURCES;
|
696
700
|
current = *protocol_name_list;
|
697
701
|
for (i = 0; i < num_alpn_protocols; i++) {
|
698
702
|
size_t length = strlen(alpn_protocols[i]);
|
699
|
-
*(current++) = (
|
703
|
+
*(current++) = static_cast<uint8_t>(length); /* max checked above. */
|
700
704
|
memcpy(current, alpn_protocols[i], length);
|
701
705
|
current += length;
|
702
706
|
}
|
703
707
|
/* Safety check. */
|
704
708
|
if ((current < *protocol_name_list) ||
|
705
|
-
(
|
709
|
+
(static_cast<uintptr_t>(current - *protocol_name_list) !=
|
706
710
|
*protocol_name_list_length)) {
|
707
711
|
return TSI_INTERNAL_ERROR;
|
708
712
|
}
|
@@ -724,24 +728,25 @@ static tsi_result ssl_protector_protect(tsi_frame_protector* self,
|
|
724
728
|
size_t* unprotected_bytes_size,
|
725
729
|
unsigned char* protected_output_frames,
|
726
730
|
size_t* protected_output_frames_size) {
|
727
|
-
tsi_ssl_frame_protector* impl =
|
731
|
+
tsi_ssl_frame_protector* impl =
|
732
|
+
reinterpret_cast<tsi_ssl_frame_protector*>(self);
|
728
733
|
int read_from_ssl;
|
729
734
|
size_t available;
|
730
735
|
tsi_result result = TSI_OK;
|
731
736
|
|
732
737
|
/* First see if we have some pending data in the SSL BIO. */
|
733
|
-
int pending_in_ssl = (
|
738
|
+
int pending_in_ssl = static_cast<int>(BIO_pending(impl->network_io));
|
734
739
|
if (pending_in_ssl > 0) {
|
735
740
|
*unprotected_bytes_size = 0;
|
736
741
|
GPR_ASSERT(*protected_output_frames_size <= INT_MAX);
|
737
|
-
read_from_ssl = BIO_read(impl->
|
738
|
-
(
|
742
|
+
read_from_ssl = BIO_read(impl->network_io, protected_output_frames,
|
743
|
+
static_cast<int>(*protected_output_frames_size));
|
739
744
|
if (read_from_ssl < 0) {
|
740
745
|
gpr_log(GPR_ERROR,
|
741
746
|
"Could not read from BIO even though some data is pending");
|
742
747
|
return TSI_INTERNAL_ERROR;
|
743
748
|
}
|
744
|
-
*protected_output_frames_size = (
|
749
|
+
*protected_output_frames_size = static_cast<size_t>(read_from_ssl);
|
745
750
|
return TSI_OK;
|
746
751
|
}
|
747
752
|
|
@@ -762,13 +767,13 @@ static tsi_result ssl_protector_protect(tsi_frame_protector* self,
|
|
762
767
|
if (result != TSI_OK) return result;
|
763
768
|
|
764
769
|
GPR_ASSERT(*protected_output_frames_size <= INT_MAX);
|
765
|
-
read_from_ssl = BIO_read(impl->
|
766
|
-
(
|
770
|
+
read_from_ssl = BIO_read(impl->network_io, protected_output_frames,
|
771
|
+
static_cast<int>(*protected_output_frames_size));
|
767
772
|
if (read_from_ssl < 0) {
|
768
773
|
gpr_log(GPR_ERROR, "Could not read from BIO after SSL_write.");
|
769
774
|
return TSI_INTERNAL_ERROR;
|
770
775
|
}
|
771
|
-
*protected_output_frames_size = (
|
776
|
+
*protected_output_frames_size = static_cast<size_t>(read_from_ssl);
|
772
777
|
*unprotected_bytes_size = available;
|
773
778
|
impl->buffer_offset = 0;
|
774
779
|
return TSI_OK;
|
@@ -778,7 +783,8 @@ static tsi_result ssl_protector_protect_flush(
|
|
778
783
|
tsi_frame_protector* self, unsigned char* protected_output_frames,
|
779
784
|
size_t* protected_output_frames_size, size_t* still_pending_size) {
|
780
785
|
tsi_result result = TSI_OK;
|
781
|
-
tsi_ssl_frame_protector* impl =
|
786
|
+
tsi_ssl_frame_protector* impl =
|
787
|
+
reinterpret_cast<tsi_ssl_frame_protector*>(self);
|
782
788
|
int read_from_ssl = 0;
|
783
789
|
int pending;
|
784
790
|
|
@@ -788,22 +794,22 @@ static tsi_result ssl_protector_protect_flush(
|
|
788
794
|
impl->buffer_offset = 0;
|
789
795
|
}
|
790
796
|
|
791
|
-
pending = (
|
797
|
+
pending = static_cast<int>(BIO_pending(impl->network_io));
|
792
798
|
GPR_ASSERT(pending >= 0);
|
793
|
-
*still_pending_size = (
|
799
|
+
*still_pending_size = static_cast<size_t>(pending);
|
794
800
|
if (*still_pending_size == 0) return TSI_OK;
|
795
801
|
|
796
802
|
GPR_ASSERT(*protected_output_frames_size <= INT_MAX);
|
797
|
-
read_from_ssl = BIO_read(impl->
|
798
|
-
(
|
803
|
+
read_from_ssl = BIO_read(impl->network_io, protected_output_frames,
|
804
|
+
static_cast<int>(*protected_output_frames_size));
|
799
805
|
if (read_from_ssl <= 0) {
|
800
806
|
gpr_log(GPR_ERROR, "Could not read from BIO after SSL_write.");
|
801
807
|
return TSI_INTERNAL_ERROR;
|
802
808
|
}
|
803
|
-
*protected_output_frames_size = (
|
804
|
-
pending = (
|
809
|
+
*protected_output_frames_size = static_cast<size_t>(read_from_ssl);
|
810
|
+
pending = static_cast<int>(BIO_pending(impl->network_io));
|
805
811
|
GPR_ASSERT(pending >= 0);
|
806
|
-
*still_pending_size = (
|
812
|
+
*still_pending_size = static_cast<size_t>(pending);
|
807
813
|
return TSI_OK;
|
808
814
|
}
|
809
815
|
|
@@ -815,7 +821,8 @@ static tsi_result ssl_protector_unprotect(
|
|
815
821
|
int written_into_ssl = 0;
|
816
822
|
size_t output_bytes_size = *unprotected_bytes_size;
|
817
823
|
size_t output_bytes_offset = 0;
|
818
|
-
tsi_ssl_frame_protector* impl =
|
824
|
+
tsi_ssl_frame_protector* impl =
|
825
|
+
reinterpret_cast<tsi_ssl_frame_protector*>(self);
|
819
826
|
|
820
827
|
/* First, try to read remaining data from ssl. */
|
821
828
|
result = do_ssl_read(impl->ssl, unprotected_bytes, unprotected_bytes_size);
|
@@ -831,14 +838,14 @@ static tsi_result ssl_protector_unprotect(
|
|
831
838
|
|
832
839
|
/* Then, try to write some data to ssl. */
|
833
840
|
GPR_ASSERT(*protected_frames_bytes_size <= INT_MAX);
|
834
|
-
written_into_ssl = BIO_write(impl->
|
835
|
-
(
|
841
|
+
written_into_ssl = BIO_write(impl->network_io, protected_frames_bytes,
|
842
|
+
static_cast<int>(*protected_frames_bytes_size));
|
836
843
|
if (written_into_ssl < 0) {
|
837
844
|
gpr_log(GPR_ERROR, "Sending protected frame to ssl failed with %d",
|
838
845
|
written_into_ssl);
|
839
846
|
return TSI_INTERNAL_ERROR;
|
840
847
|
}
|
841
|
-
*protected_frames_bytes_size = (
|
848
|
+
*protected_frames_bytes_size = static_cast<size_t>(written_into_ssl);
|
842
849
|
|
843
850
|
/* Now try to read some data again. */
|
844
851
|
result = do_ssl_read(impl->ssl, unprotected_bytes, unprotected_bytes_size);
|
@@ -850,9 +857,11 @@ static tsi_result ssl_protector_unprotect(
|
|
850
857
|
}
|
851
858
|
|
852
859
|
static void ssl_protector_destroy(tsi_frame_protector* self) {
|
853
|
-
tsi_ssl_frame_protector* impl =
|
860
|
+
tsi_ssl_frame_protector* impl =
|
861
|
+
reinterpret_cast<tsi_ssl_frame_protector*>(self);
|
854
862
|
if (impl->buffer != nullptr) gpr_free(impl->buffer);
|
855
863
|
if (impl->ssl != nullptr) SSL_free(impl->ssl);
|
864
|
+
if (impl->network_io != nullptr) BIO_free(impl->network_io);
|
856
865
|
gpr_free(self);
|
857
866
|
}
|
858
867
|
|
@@ -909,29 +918,30 @@ static void tsi_ssl_handshaker_factory_init(
|
|
909
918
|
static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(tsi_handshaker* self,
|
910
919
|
unsigned char* bytes,
|
911
920
|
size_t* bytes_size) {
|
912
|
-
tsi_ssl_handshaker* impl = (
|
921
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
913
922
|
int bytes_read_from_ssl = 0;
|
914
923
|
if (bytes == nullptr || bytes_size == nullptr || *bytes_size == 0 ||
|
915
924
|
*bytes_size > INT_MAX) {
|
916
925
|
return TSI_INVALID_ARGUMENT;
|
917
926
|
}
|
918
927
|
GPR_ASSERT(*bytes_size <= INT_MAX);
|
919
|
-
bytes_read_from_ssl =
|
928
|
+
bytes_read_from_ssl =
|
929
|
+
BIO_read(impl->network_io, bytes, static_cast<int>(*bytes_size));
|
920
930
|
if (bytes_read_from_ssl < 0) {
|
921
931
|
*bytes_size = 0;
|
922
|
-
if (!BIO_should_retry(impl->
|
932
|
+
if (!BIO_should_retry(impl->network_io)) {
|
923
933
|
impl->result = TSI_INTERNAL_ERROR;
|
924
934
|
return impl->result;
|
925
935
|
} else {
|
926
936
|
return TSI_OK;
|
927
937
|
}
|
928
938
|
}
|
929
|
-
*bytes_size = (
|
930
|
-
return BIO_pending(impl->
|
939
|
+
*bytes_size = static_cast<size_t>(bytes_read_from_ssl);
|
940
|
+
return BIO_pending(impl->network_io) == 0 ? TSI_OK : TSI_INCOMPLETE_DATA;
|
931
941
|
}
|
932
942
|
|
933
943
|
static tsi_result ssl_handshaker_get_result(tsi_handshaker* self) {
|
934
|
-
tsi_ssl_handshaker* impl = (
|
944
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
935
945
|
if ((impl->result == TSI_HANDSHAKE_IN_PROGRESS) &&
|
936
946
|
SSL_is_init_finished(impl->ssl)) {
|
937
947
|
impl->result = TSI_OK;
|
@@ -941,20 +951,20 @@ static tsi_result ssl_handshaker_get_result(tsi_handshaker* self) {
|
|
941
951
|
|
942
952
|
static tsi_result ssl_handshaker_process_bytes_from_peer(
|
943
953
|
tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size) {
|
944
|
-
tsi_ssl_handshaker* impl = (
|
954
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
945
955
|
int bytes_written_into_ssl_size = 0;
|
946
956
|
if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
|
947
957
|
return TSI_INVALID_ARGUMENT;
|
948
958
|
}
|
949
959
|
GPR_ASSERT(*bytes_size <= INT_MAX);
|
950
960
|
bytes_written_into_ssl_size =
|
951
|
-
BIO_write(impl->
|
961
|
+
BIO_write(impl->network_io, bytes, static_cast<int>(*bytes_size));
|
952
962
|
if (bytes_written_into_ssl_size < 0) {
|
953
963
|
gpr_log(GPR_ERROR, "Could not write to memory BIO.");
|
954
964
|
impl->result = TSI_INTERNAL_ERROR;
|
955
965
|
return impl->result;
|
956
966
|
}
|
957
|
-
*bytes_size = (
|
967
|
+
*bytes_size = static_cast<size_t>(bytes_written_into_ssl_size);
|
958
968
|
|
959
969
|
if (!tsi_handshaker_is_in_progress(self)) {
|
960
970
|
impl->result = TSI_OK;
|
@@ -965,7 +975,7 @@ static tsi_result ssl_handshaker_process_bytes_from_peer(
|
|
965
975
|
ssl_result = SSL_get_error(impl->ssl, ssl_result);
|
966
976
|
switch (ssl_result) {
|
967
977
|
case SSL_ERROR_WANT_READ:
|
968
|
-
if (BIO_pending(impl->
|
978
|
+
if (BIO_pending(impl->network_io) == 0) {
|
969
979
|
/* We need more data. */
|
970
980
|
return TSI_INCOMPLETE_DATA;
|
971
981
|
} else {
|
@@ -990,7 +1000,7 @@ static tsi_result ssl_handshaker_extract_peer(tsi_handshaker* self,
|
|
990
1000
|
tsi_result result = TSI_OK;
|
991
1001
|
const unsigned char* alpn_selected = nullptr;
|
992
1002
|
unsigned int alpn_selected_len;
|
993
|
-
tsi_ssl_handshaker* impl = (
|
1003
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
994
1004
|
X509* peer_cert = SSL_get_peer_certificate(impl->ssl);
|
995
1005
|
if (peer_cert != nullptr) {
|
996
1006
|
result = peer_from_x509(peer_cert, 1, peer);
|
@@ -1007,14 +1017,15 @@ static tsi_result ssl_handshaker_extract_peer(tsi_handshaker* self,
|
|
1007
1017
|
}
|
1008
1018
|
if (alpn_selected != nullptr) {
|
1009
1019
|
size_t i;
|
1010
|
-
tsi_peer_property* new_properties =
|
1011
|
-
sizeof(*new_properties) * (peer->property_count + 1));
|
1020
|
+
tsi_peer_property* new_properties = static_cast<tsi_peer_property*>(
|
1021
|
+
gpr_zalloc(sizeof(*new_properties) * (peer->property_count + 1)));
|
1012
1022
|
for (i = 0; i < peer->property_count; i++) {
|
1013
1023
|
new_properties[i] = peer->properties[i];
|
1014
1024
|
}
|
1015
1025
|
result = tsi_construct_string_peer_property(
|
1016
|
-
TSI_SSL_ALPN_SELECTED_PROTOCOL,
|
1017
|
-
alpn_selected_len,
|
1026
|
+
TSI_SSL_ALPN_SELECTED_PROTOCOL,
|
1027
|
+
reinterpret_cast<const char*>(alpn_selected), alpn_selected_len,
|
1028
|
+
&new_properties[peer->property_count]);
|
1018
1029
|
if (result != TSI_OK) {
|
1019
1030
|
gpr_free(new_properties);
|
1020
1031
|
return result;
|
@@ -1031,9 +1042,10 @@ static tsi_result ssl_handshaker_create_frame_protector(
|
|
1031
1042
|
tsi_frame_protector** protector) {
|
1032
1043
|
size_t actual_max_output_protected_frame_size =
|
1033
1044
|
TSI_SSL_MAX_PROTECTED_FRAME_SIZE_UPPER_BOUND;
|
1034
|
-
tsi_ssl_handshaker* impl = (
|
1045
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1035
1046
|
tsi_ssl_frame_protector* protector_impl =
|
1036
|
-
|
1047
|
+
static_cast<tsi_ssl_frame_protector*>(
|
1048
|
+
gpr_zalloc(sizeof(*protector_impl)));
|
1037
1049
|
|
1038
1050
|
if (max_output_protected_frame_size != nullptr) {
|
1039
1051
|
if (*max_output_protected_frame_size >
|
@@ -1050,7 +1062,7 @@ static tsi_result ssl_handshaker_create_frame_protector(
|
|
1050
1062
|
protector_impl->buffer_size =
|
1051
1063
|
actual_max_output_protected_frame_size - TSI_SSL_MAX_PROTECTION_OVERHEAD;
|
1052
1064
|
protector_impl->buffer =
|
1053
|
-
|
1065
|
+
static_cast<unsigned char*>(gpr_malloc(protector_impl->buffer_size));
|
1054
1066
|
if (protector_impl->buffer == nullptr) {
|
1055
1067
|
gpr_log(GPR_ERROR,
|
1056
1068
|
"Could not allocated buffer for tsi_ssl_frame_protector.");
|
@@ -1058,12 +1070,13 @@ static tsi_result ssl_handshaker_create_frame_protector(
|
|
1058
1070
|
return TSI_INTERNAL_ERROR;
|
1059
1071
|
}
|
1060
1072
|
|
1061
|
-
/* Transfer ownership of ssl to the frame protector. It is OK
|
1062
|
-
* cannot call anything else but destroy on the handshaker
|
1073
|
+
/* Transfer ownership of ssl and network_io to the frame protector. It is OK
|
1074
|
+
* as the caller cannot call anything else but destroy on the handshaker
|
1075
|
+
* after this call. */
|
1063
1076
|
protector_impl->ssl = impl->ssl;
|
1064
1077
|
impl->ssl = nullptr;
|
1065
|
-
protector_impl->
|
1066
|
-
|
1078
|
+
protector_impl->network_io = impl->network_io;
|
1079
|
+
impl->network_io = nullptr;
|
1067
1080
|
|
1068
1081
|
protector_impl->base.vtable = &frame_protector_vtable;
|
1069
1082
|
*protector = &protector_impl->base;
|
@@ -1071,8 +1084,9 @@ static tsi_result ssl_handshaker_create_frame_protector(
|
|
1071
1084
|
}
|
1072
1085
|
|
1073
1086
|
static void ssl_handshaker_destroy(tsi_handshaker* self) {
|
1074
|
-
tsi_ssl_handshaker* impl = (
|
1075
|
-
SSL_free(impl->ssl);
|
1087
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1088
|
+
SSL_free(impl->ssl);
|
1089
|
+
BIO_free(impl->network_io);
|
1076
1090
|
tsi_ssl_handshaker_factory_unref(impl->factory_ref);
|
1077
1091
|
gpr_free(impl);
|
1078
1092
|
}
|
@@ -1094,8 +1108,8 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
|
|
1094
1108
|
tsi_ssl_handshaker_factory* factory,
|
1095
1109
|
tsi_handshaker** handshaker) {
|
1096
1110
|
SSL* ssl = SSL_new(ctx);
|
1097
|
-
BIO*
|
1098
|
-
BIO*
|
1111
|
+
BIO* network_io = nullptr;
|
1112
|
+
BIO* ssl_io = nullptr;
|
1099
1113
|
tsi_ssl_handshaker* impl = nullptr;
|
1100
1114
|
*handshaker = nullptr;
|
1101
1115
|
if (ctx == nullptr) {
|
@@ -1107,16 +1121,12 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
|
|
1107
1121
|
}
|
1108
1122
|
SSL_set_info_callback(ssl, ssl_info_callback);
|
1109
1123
|
|
1110
|
-
|
1111
|
-
|
1112
|
-
if (into_ssl == nullptr || from_ssl == nullptr) {
|
1113
|
-
gpr_log(GPR_ERROR, "BIO_new failed.");
|
1124
|
+
if (!BIO_new_bio_pair(&network_io, 0, &ssl_io, 0)) {
|
1125
|
+
gpr_log(GPR_ERROR, "BIO_new_bio_pair failed.");
|
1114
1126
|
SSL_free(ssl);
|
1115
|
-
if (into_ssl != nullptr) BIO_free(into_ssl);
|
1116
|
-
if (from_ssl != nullptr) BIO_free(into_ssl);
|
1117
1127
|
return TSI_OUT_OF_RESOURCES;
|
1118
1128
|
}
|
1119
|
-
SSL_set_bio(ssl,
|
1129
|
+
SSL_set_bio(ssl, ssl_io, ssl_io);
|
1120
1130
|
if (is_client) {
|
1121
1131
|
int ssl_result;
|
1122
1132
|
SSL_set_connect_state(ssl);
|
@@ -1125,6 +1135,7 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
|
|
1125
1135
|
gpr_log(GPR_ERROR, "Invalid server name indication %s.",
|
1126
1136
|
server_name_indication);
|
1127
1137
|
SSL_free(ssl);
|
1138
|
+
BIO_free(network_io);
|
1128
1139
|
return TSI_INTERNAL_ERROR;
|
1129
1140
|
}
|
1130
1141
|
}
|
@@ -1135,16 +1146,16 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
|
|
1135
1146
|
"Unexpected error received from first SSL_do_handshake call: %s",
|
1136
1147
|
ssl_error_string(ssl_result));
|
1137
1148
|
SSL_free(ssl);
|
1149
|
+
BIO_free(network_io);
|
1138
1150
|
return TSI_INTERNAL_ERROR;
|
1139
1151
|
}
|
1140
1152
|
} else {
|
1141
1153
|
SSL_set_accept_state(ssl);
|
1142
1154
|
}
|
1143
1155
|
|
1144
|
-
impl = (
|
1156
|
+
impl = static_cast<tsi_ssl_handshaker*>(gpr_zalloc(sizeof(*impl)));
|
1145
1157
|
impl->ssl = ssl;
|
1146
|
-
impl->
|
1147
|
-
impl->from_ssl = from_ssl;
|
1158
|
+
impl->network_io = network_io;
|
1148
1159
|
impl->result = TSI_HANDSHAKE_IN_PROGRESS;
|
1149
1160
|
impl->base.vtable = &handshaker_vtable;
|
1150
1161
|
impl->factory_ref = tsi_ssl_handshaker_factory_ref(factory);
|
@@ -1160,11 +1171,13 @@ static int select_protocol_list(const unsigned char** out,
|
|
1160
1171
|
const unsigned char* server_list,
|
1161
1172
|
size_t server_list_len) {
|
1162
1173
|
const unsigned char* client_current = client_list;
|
1163
|
-
while (
|
1174
|
+
while (static_cast<unsigned int>(client_current - client_list) <
|
1175
|
+
client_list_len) {
|
1164
1176
|
unsigned char client_current_len = *(client_current++);
|
1165
1177
|
const unsigned char* server_current = server_list;
|
1166
1178
|
while ((server_current >= server_list) &&
|
1167
|
-
|
1179
|
+
static_cast<uintptr_t>(server_current - server_list) <
|
1180
|
+
server_list_len) {
|
1168
1181
|
unsigned char server_current_len = *(server_current++);
|
1169
1182
|
if ((client_current_len == server_current_len) &&
|
1170
1183
|
!memcmp(client_current, server_current, server_current_len)) {
|
@@ -1198,7 +1211,7 @@ static void tsi_ssl_client_handshaker_factory_destroy(
|
|
1198
1211
|
tsi_ssl_handshaker_factory* factory) {
|
1199
1212
|
if (factory == nullptr) return;
|
1200
1213
|
tsi_ssl_client_handshaker_factory* self =
|
1201
|
-
(
|
1214
|
+
reinterpret_cast<tsi_ssl_client_handshaker_factory*>(factory);
|
1202
1215
|
if (self->ssl_context != nullptr) SSL_CTX_free(self->ssl_context);
|
1203
1216
|
if (self->alpn_protocol_list != nullptr) gpr_free(self->alpn_protocol_list);
|
1204
1217
|
gpr_free(self);
|
@@ -1210,7 +1223,7 @@ static int client_handshaker_factory_npn_callback(SSL* ssl, unsigned char** out,
|
|
1210
1223
|
unsigned int inlen,
|
1211
1224
|
void* arg) {
|
1212
1225
|
tsi_ssl_client_handshaker_factory* factory =
|
1213
|
-
(
|
1226
|
+
static_cast<tsi_ssl_client_handshaker_factory*>(arg);
|
1214
1227
|
return select_protocol_list((const unsigned char**)out, outlen,
|
1215
1228
|
factory->alpn_protocol_list,
|
1216
1229
|
factory->alpn_protocol_list_length, in, inlen);
|
@@ -1237,7 +1250,7 @@ static void tsi_ssl_server_handshaker_factory_destroy(
|
|
1237
1250
|
tsi_ssl_handshaker_factory* factory) {
|
1238
1251
|
if (factory == nullptr) return;
|
1239
1252
|
tsi_ssl_server_handshaker_factory* self =
|
1240
|
-
(
|
1253
|
+
reinterpret_cast<tsi_ssl_server_handshaker_factory*>(factory);
|
1241
1254
|
size_t i;
|
1242
1255
|
for (i = 0; i < self->ssl_context_count; i++) {
|
1243
1256
|
if (self->ssl_contexts[i] != nullptr) {
|
@@ -1304,7 +1317,7 @@ static int does_entry_match_name(const char* entry, size_t entry_length,
|
|
1304
1317
|
static int ssl_server_handshaker_factory_servername_callback(SSL* ssl, int* ap,
|
1305
1318
|
void* arg) {
|
1306
1319
|
tsi_ssl_server_handshaker_factory* impl =
|
1307
|
-
(
|
1320
|
+
static_cast<tsi_ssl_server_handshaker_factory*>(arg);
|
1308
1321
|
size_t i = 0;
|
1309
1322
|
const char* servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name);
|
1310
1323
|
if (servername == nullptr || strlen(servername) == 0) {
|
@@ -1327,7 +1340,7 @@ static int server_handshaker_factory_alpn_callback(
|
|
1327
1340
|
SSL* ssl, const unsigned char** out, unsigned char* outlen,
|
1328
1341
|
const unsigned char* in, unsigned int inlen, void* arg) {
|
1329
1342
|
tsi_ssl_server_handshaker_factory* factory =
|
1330
|
-
(
|
1343
|
+
static_cast<tsi_ssl_server_handshaker_factory*>(arg);
|
1331
1344
|
return select_protocol_list(out, outlen, in, inlen,
|
1332
1345
|
factory->alpn_protocol_list,
|
1333
1346
|
factory->alpn_protocol_list_length);
|
@@ -1337,10 +1350,10 @@ static int server_handshaker_factory_alpn_callback(
|
|
1337
1350
|
static int server_handshaker_factory_npn_advertised_callback(
|
1338
1351
|
SSL* ssl, const unsigned char** out, unsigned int* outlen, void* arg) {
|
1339
1352
|
tsi_ssl_server_handshaker_factory* factory =
|
1340
|
-
(
|
1353
|
+
static_cast<tsi_ssl_server_handshaker_factory*>(arg);
|
1341
1354
|
*out = factory->alpn_protocol_list;
|
1342
1355
|
GPR_ASSERT(factory->alpn_protocol_list_length <= UINT_MAX);
|
1343
|
-
*outlen =
|
1356
|
+
*outlen = static_cast<unsigned int>(factory->alpn_protocol_list_length);
|
1344
1357
|
return SSL_TLSEXT_ERR_OK;
|
1345
1358
|
}
|
1346
1359
|
|
@@ -1370,7 +1383,8 @@ tsi_result tsi_create_ssl_client_handshaker_factory(
|
|
1370
1383
|
return TSI_INVALID_ARGUMENT;
|
1371
1384
|
}
|
1372
1385
|
|
1373
|
-
impl =
|
1386
|
+
impl = static_cast<tsi_ssl_client_handshaker_factory*>(
|
1387
|
+
gpr_zalloc(sizeof(*impl)));
|
1374
1388
|
tsi_ssl_handshaker_factory_init(&impl->base);
|
1375
1389
|
impl->base.vtable = &client_handshaker_factory_vtable;
|
1376
1390
|
|
@@ -1400,7 +1414,7 @@ tsi_result tsi_create_ssl_client_handshaker_factory(
|
|
1400
1414
|
GPR_ASSERT(impl->alpn_protocol_list_length < UINT_MAX);
|
1401
1415
|
if (SSL_CTX_set_alpn_protos(
|
1402
1416
|
ssl_context, impl->alpn_protocol_list,
|
1403
|
-
|
1417
|
+
static_cast<unsigned int>(impl->alpn_protocol_list_length))) {
|
1404
1418
|
gpr_log(GPR_ERROR, "Could not set alpn protocol list to context.");
|
1405
1419
|
result = TSI_INVALID_ARGUMENT;
|
1406
1420
|
break;
|
@@ -1455,14 +1469,15 @@ tsi_result tsi_create_ssl_server_handshaker_factory_ex(
|
|
1455
1469
|
return TSI_INVALID_ARGUMENT;
|
1456
1470
|
}
|
1457
1471
|
|
1458
|
-
impl =
|
1472
|
+
impl = static_cast<tsi_ssl_server_handshaker_factory*>(
|
1473
|
+
gpr_zalloc(sizeof(*impl)));
|
1459
1474
|
tsi_ssl_handshaker_factory_init(&impl->base);
|
1460
1475
|
impl->base.vtable = &server_handshaker_factory_vtable;
|
1461
1476
|
|
1462
1477
|
impl->ssl_contexts =
|
1463
|
-
(
|
1478
|
+
static_cast<SSL_CTX**>(gpr_zalloc(num_key_cert_pairs * sizeof(SSL_CTX*)));
|
1464
1479
|
impl->ssl_context_x509_subject_names =
|
1465
|
-
(
|
1480
|
+
static_cast<tsi_peer*>(gpr_zalloc(num_key_cert_pairs * sizeof(tsi_peer)));
|
1466
1481
|
if (impl->ssl_contexts == nullptr ||
|
1467
1482
|
impl->ssl_context_x509_subject_names == nullptr) {
|
1468
1483
|
tsi_ssl_handshaker_factory_unref(&impl->base);
|