grpc 0.13.1 → 0.14.1.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 +2098 -828
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -20
- data/include/grpc/census.h +4 -4
- data/include/grpc/compression.h +6 -5
- data/include/grpc/grpc.h +31 -20
- data/include/grpc/grpc_security.h +17 -31
- data/include/grpc/grpc_security_constants.h +114 -0
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +1 -1
- data/include/grpc/impl/codegen/atm.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_sync.h +1 -1
- data/include/grpc/impl/codegen/atm_win32.h +1 -1
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/{src/core/client_config/lb_policies/round_robin.h → include/grpc/impl/codegen/byte_buffer_reader.h} +19 -8
- data/include/grpc/impl/codegen/grpc_types.h +20 -3
- data/include/grpc/impl/codegen/log.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +102 -17
- data/include/grpc/impl/codegen/propagation_bits.h +3 -3
- data/include/grpc/impl/codegen/slice.h +3 -3
- data/include/grpc/impl/codegen/slice_buffer.h +3 -3
- data/include/grpc/impl/codegen/status.h +1 -1
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/include/grpc/impl/codegen/sync_posix.h +1 -1
- data/include/grpc/impl/codegen/sync_win32.h +1 -1
- data/include/grpc/impl/codegen/time.h +3 -3
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/alloc.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +4 -4
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_win32.h +1 -1
- data/include/grpc/support/avl.h +1 -1
- data/include/grpc/support/cmdline.h +1 -1
- data/include/grpc/support/cpu.h +1 -1
- data/include/grpc/support/histogram.h +1 -1
- data/include/grpc/support/host_port.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/log_win32.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/slice.h +1 -1
- data/include/grpc/support/slice_buffer.h +1 -1
- data/include/grpc/support/string_util.h +3 -1
- data/include/grpc/support/subprocess.h +2 -2
- data/include/grpc/support/sync.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_win32.h +1 -1
- data/include/grpc/support/thd.h +1 -1
- data/include/grpc/support/time.h +1 -1
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +45 -1
- data/include/grpc/support/tls_msvc.h +3 -3
- data/include/grpc/support/tls_pthread.h +1 -1
- data/include/grpc/support/useful.h +1 -1
- data/src/boringssl/err_data.c +258 -252
- data/src/core/{census → ext/census}/aggregation.h +3 -3
- data/src/core/{statistics → ext/census}/census_interface.h +3 -3
- data/src/core/{statistics → ext/census}/census_rpc_stats.h +4 -4
- data/src/core/{census → ext/census}/context.c +2 -2
- data/src/core/{census → ext/census}/grpc_context.c +2 -2
- data/src/core/{census → ext/census}/grpc_filter.c +30 -16
- data/src/core/{census → ext/census}/grpc_filter.h +4 -4
- data/src/core/ext/census/grpc_plugin.c +82 -0
- data/src/core/{census → ext/census}/initialize.c +1 -1
- data/src/core/{census → ext/census}/mlog.c +2 -2
- data/src/core/{census → ext/census}/mlog.h +4 -4
- data/src/core/{census → ext/census}/operation.c +0 -0
- data/src/core/{census → ext/census}/placeholders.c +0 -0
- data/src/core/{census → ext/census}/rpc_metric_id.h +3 -3
- data/src/core/{census → ext/census}/tracing.c +0 -0
- data/src/core/{surface → ext/client_config}/channel_connectivity.c +8 -21
- data/src/core/{channel → ext/client_config}/client_channel.c +80 -35
- data/src/core/{channel → ext/client_config}/client_channel.h +5 -5
- data/src/core/{client_config/subchannel_factory.c → ext/client_config/client_channel_factory.c} +14 -6
- data/src/core/ext/client_config/client_channel_factory.h +85 -0
- data/src/core/{client_config → ext/client_config}/client_config.c +4 -2
- data/src/core/{client_config → ext/client_config}/client_config.h +4 -4
- data/src/core/ext/client_config/client_config_plugin.c +95 -0
- data/src/core/{client_config → ext/client_config}/connector.c +2 -2
- data/src/core/{client_config → ext/client_config}/connector.h +7 -10
- data/src/core/{client_config → ext/client_config}/default_initial_connect_string.c +1 -1
- data/src/core/{client_config → ext/client_config}/initial_connect_string.c +1 -1
- data/src/core/{client_config → ext/client_config}/initial_connect_string.h +4 -4
- data/src/core/{client_config → ext/client_config}/lb_policy.c +12 -3
- data/src/core/{client_config → ext/client_config}/lb_policy.h +19 -6
- data/src/core/{client_config → ext/client_config}/lb_policy_factory.c +4 -3
- data/src/core/{client_config → ext/client_config}/lb_policy_factory.h +14 -9
- data/src/core/{client_config → ext/client_config}/lb_policy_registry.c +4 -9
- data/src/core/{client_config → ext/client_config}/lb_policy_registry.h +7 -6
- data/src/core/ext/client_config/parse_address.c +137 -0
- data/src/core/ext/client_config/parse_address.h +56 -0
- data/src/core/{client_config → ext/client_config}/resolver.c +1 -1
- data/src/core/{client_config → ext/client_config}/resolver.h +6 -6
- data/src/core/{client_config → ext/client_config}/resolver_factory.c +1 -1
- data/src/core/{client_config → ext/client_config}/resolver_factory.h +7 -7
- data/src/core/{client_config → ext/client_config}/resolver_registry.c +25 -11
- data/src/core/{client_config → ext/client_config}/resolver_registry.h +9 -5
- data/src/core/{client_config → ext/client_config}/subchannel.c +90 -126
- data/src/core/{client_config → ext/client_config}/subchannel.h +15 -15
- data/src/core/{channel → ext/client_config}/subchannel_call_holder.c +9 -8
- data/src/core/{channel → ext/client_config}/subchannel_call_holder.h +7 -7
- data/src/core/{client_config → ext/client_config}/subchannel_index.c +3 -2
- data/src/core/{client_config → ext/client_config}/subchannel_index.h +5 -5
- data/src/core/{client_config → ext/client_config}/uri_parser.c +69 -1
- data/src/core/{client_config → ext/client_config}/uri_parser.h +15 -3
- data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.c +18 -9
- data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.h +5 -5
- data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.c +1 -1
- data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.h +0 -0
- data/src/core/{client_config/lb_policies → ext/lb_policy/pick_first}/pick_first.c +95 -32
- data/src/core/{client_config/lb_policies → ext/lb_policy/round_robin}/round_robin.c +98 -34
- data/src/core/{client_config/resolvers → ext/resolver/dns/native}/dns_resolver.c +83 -39
- data/src/core/{client_config/resolvers → ext/resolver/sockaddr}/sockaddr_resolver.c +66 -169
- data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.h +3 -3
- data/src/core/{surface → ext/transport/chttp2/client/insecure}/channel_create.c +65 -59
- data/src/core/{surface → ext/transport/chttp2/client/secure}/secure_channel_create.c +77 -69
- data/src/core/{surface → ext/transport/chttp2/server/insecure}/server_chttp2.c +8 -11
- data/src/core/{security → ext/transport/chttp2/server/secure}/server_secure_chttp2.c +14 -17
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.c +28 -74
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.h +5 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +46 -0
- data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.c +551 -310
- data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.c +30 -14
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.h +10 -7
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.c +9 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.c +6 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.c +11 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.c +21 -12
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.c +42 -25
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.h +7 -7
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.c +21 -11
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/http2_errors.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.c +105 -0
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/huffsyms.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/internal.h +81 -37
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/parsing.c +54 -21
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_lists.c +10 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.c +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/writing.c +30 -20
- data/src/core/{channel → lib/channel}/channel_args.c +3 -15
- data/src/core/{channel → lib/channel}/channel_args.h +11 -15
- data/src/core/{channel → lib/channel}/channel_stack.c +5 -3
- data/src/core/{channel → lib/channel}/channel_stack.h +13 -8
- data/src/core/lib/channel/channel_stack_builder.c +277 -0
- data/src/core/lib/channel/channel_stack_builder.h +161 -0
- data/src/core/{channel → lib/channel}/compress_filter.c +51 -16
- data/src/core/{channel → lib/channel}/compress_filter.h +6 -4
- data/src/core/{channel → lib/channel}/connected_channel.c +34 -24
- data/src/core/lib/channel/connected_channel.h +42 -0
- data/src/core/{channel → lib/channel}/context.h +3 -3
- data/src/core/{channel → lib/channel}/http_client_filter.c +24 -13
- data/src/core/{channel → lib/channel}/http_client_filter.h +4 -4
- data/src/core/{channel → lib/channel}/http_server_filter.c +39 -19
- data/src/core/{channel → lib/channel}/http_server_filter.h +4 -4
- data/src/core/{compression → lib/compression}/algorithm_metadata.h +4 -4
- data/src/core/{compression → lib/compression}/compression_algorithm.c +46 -9
- data/src/core/{compression → lib/compression}/message_compress.c +1 -1
- data/src/core/{compression → lib/compression}/message_compress.h +3 -3
- data/src/core/{debug → lib/debug}/trace.c +2 -2
- data/src/core/{debug → lib/debug}/trace.h +3 -3
- data/src/core/{httpcli → lib/http}/format_request.c +8 -8
- data/src/core/{httpcli → lib/http}/format_request.h +4 -4
- data/src/core/{httpcli → lib/http}/httpcli.c +24 -19
- data/src/core/{httpcli → lib/http}/httpcli.h +14 -33
- data/src/core/{httpcli → lib/http}/httpcli_security_connector.c +5 -5
- data/src/core/lib/http/parser.c +341 -0
- data/src/core/lib/http/parser.h +119 -0
- data/src/core/{iomgr → lib/iomgr}/closure.c +8 -2
- data/src/core/{iomgr → lib/iomgr}/closure.h +7 -4
- data/src/core/{iomgr → lib/iomgr}/endpoint.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/endpoint.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair_posix.c +8 -7
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair_windows.c +4 -4
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +1936 -0
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.h +41 -0
- data/src/core/lib/iomgr/ev_posix.c +164 -0
- data/src/core/lib/iomgr/ev_posix.h +158 -0
- data/src/core/{iomgr → lib/iomgr}/exec_ctx.c +78 -3
- data/src/core/{iomgr → lib/iomgr}/exec_ctx.h +25 -10
- data/src/core/{iomgr → lib/iomgr}/executor.c +3 -3
- data/src/core/{iomgr → lib/iomgr}/executor.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/iocp_windows.c +6 -6
- data/src/core/{iomgr → lib/iomgr}/iocp_windows.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/iomgr.c +13 -10
- data/src/core/{iomgr → lib/iomgr}/iomgr.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/iomgr_internal.h +5 -9
- data/src/core/{iomgr → lib/iomgr}/iomgr_posix.c +6 -6
- data/src/core/{iomgr → lib/iomgr}/iomgr_posix.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/iomgr_windows.c +7 -4
- data/src/core/{iomgr → lib/iomgr}/pollset.h +11 -11
- data/src/core/{iomgr → lib/iomgr}/pollset_set.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/pollset_set_windows.c +2 -2
- data/src/core/lib/iomgr/pollset_set_windows.h +39 -0
- data/src/core/{iomgr → lib/iomgr}/pollset_windows.c +7 -7
- data/src/core/{iomgr → lib/iomgr}/pollset_windows.h +8 -5
- data/src/core/{iomgr → lib/iomgr}/resolve_address.h +10 -9
- data/src/core/{iomgr → lib/iomgr}/resolve_address_posix.c +22 -22
- data/src/core/{iomgr → lib/iomgr}/resolve_address_windows.c +20 -12
- data/src/core/{iomgr → lib/iomgr}/sockaddr.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/sockaddr_posix.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.c +9 -16
- data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/sockaddr_win32.h +6 -4
- data/src/core/{iomgr → lib/iomgr}/socket_utils_common_posix.c +29 -7
- data/src/core/{iomgr → lib/iomgr}/socket_utils_linux.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.h +14 -4
- data/src/core/{iomgr → lib/iomgr}/socket_windows.c +7 -5
- data/src/core/{iomgr → lib/iomgr}/socket_windows.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_client.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_client_posix.c +33 -18
- data/src/core/{iomgr → lib/iomgr}/tcp_client_windows.c +30 -20
- data/src/core/{iomgr → lib/iomgr}/tcp_posix.c +9 -10
- data/src/core/{iomgr → lib/iomgr}/tcp_posix.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_server.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_server_posix.c +24 -37
- data/src/core/{iomgr → lib/iomgr}/tcp_server_windows.c +8 -36
- data/src/core/{iomgr → lib/iomgr}/tcp_windows.c +27 -17
- data/src/core/{iomgr → lib/iomgr}/tcp_windows.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/timer.c +31 -4
- data/src/core/{iomgr → lib/iomgr}/timer.h +6 -7
- data/src/core/{iomgr → lib/iomgr}/timer_heap.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/timer_heap.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/udp_server.c +13 -37
- data/src/core/{iomgr → lib/iomgr}/udp_server.h +11 -10
- data/src/core/lib/iomgr/unix_sockets_posix.c +89 -0
- data/src/core/{client_config/resolvers/sockaddr_resolver.h → lib/iomgr/unix_sockets_posix.h} +15 -11
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +59 -0
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_eventfd.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_nospecial.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.c +8 -3
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/workqueue.h +10 -10
- data/src/core/{iomgr → lib/iomgr}/workqueue_posix.c +5 -6
- data/src/core/{iomgr → lib/iomgr}/workqueue_posix.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/workqueue_windows.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/workqueue_windows.h +3 -3
- data/src/core/{json → lib/json}/json.c +1 -1
- data/src/core/{json → lib/json}/json.h +4 -4
- data/src/core/{json → lib/json}/json_common.h +3 -3
- data/src/core/{json → lib/json}/json_reader.c +16 -4
- data/src/core/{json → lib/json}/json_reader.h +4 -4
- data/src/core/{json → lib/json}/json_string.c +4 -4
- data/src/core/{json → lib/json}/json_writer.c +1 -1
- data/src/core/{json → lib/json}/json_writer.h +4 -4
- data/src/core/{profiling → lib/profiling}/basic_timers.c +3 -2
- data/src/core/{profiling → lib/profiling}/stap_timers.c +2 -2
- data/src/core/{profiling → lib/profiling}/timers.h +3 -3
- data/src/core/{security → lib/security}/auth_filters.h +4 -4
- data/src/core/{security → lib/security}/b64.c +2 -2
- data/src/core/{security → lib/security}/b64.h +4 -4
- data/src/core/{security → lib/security}/client_auth_filter.c +16 -16
- data/src/core/{security → lib/security}/credentials.c +42 -26
- data/src/core/{security → lib/security}/credentials.h +11 -10
- data/src/core/{security → lib/security}/credentials_metadata.c +1 -1
- data/src/core/{security → lib/security}/credentials_posix.c +3 -3
- data/src/core/{security → lib/security}/credentials_win32.c +3 -3
- data/src/core/{security → lib/security}/google_default_credentials.c +10 -9
- data/src/core/{security → lib/security}/handshake.c +4 -4
- data/src/core/{security → lib/security}/handshake.h +6 -6
- data/src/core/{security → lib/security}/json_token.c +4 -4
- data/src/core/{security → lib/security}/json_token.h +4 -4
- data/src/core/{security → lib/security}/jwt_verifier.c +14 -14
- data/src/core/{security → lib/security}/jwt_verifier.h +5 -5
- data/src/core/{security → lib/security}/secure_endpoint.c +9 -8
- data/src/core/{security → lib/security}/secure_endpoint.h +4 -4
- data/src/core/{security → lib/security}/security_connector.c +53 -21
- data/src/core/{security → lib/security}/security_connector.h +8 -8
- data/src/core/{security → lib/security}/security_context.c +5 -5
- data/src/core/{security → lib/security}/security_context.h +5 -5
- data/src/core/{security → lib/security}/server_auth_filter.c +9 -9
- data/src/core/{support → lib/support}/alloc.c +5 -3
- data/src/core/{support → lib/support}/avl.c +1 -1
- data/src/core/lib/support/backoff.c +76 -0
- data/src/core/lib/support/backoff.h +68 -0
- data/src/core/{support → lib/support}/block_annotate.h +3 -3
- data/src/core/{support → lib/support}/cmdline.c +1 -1
- data/src/core/{support → lib/support}/cpu_iphone.c +0 -0
- data/src/core/{support → lib/support}/cpu_linux.c +2 -2
- data/src/core/{support → lib/support}/cpu_posix.c +2 -2
- data/src/core/{support → lib/support}/cpu_windows.c +0 -0
- data/src/core/{support → lib/support}/env.h +3 -3
- data/src/core/{support → lib/support}/env_linux.c +3 -3
- data/src/core/{support → lib/support}/env_posix.c +2 -2
- data/src/core/{support → lib/support}/env_win32.c +27 -21
- data/src/core/{support → lib/support}/histogram.c +1 -1
- data/src/core/{support → lib/support}/host_port.c +1 -1
- data/src/core/{support → lib/support}/load_file.c +4 -4
- data/src/core/{support → lib/support}/load_file.h +4 -4
- data/src/core/{support → lib/support}/log.c +33 -0
- data/src/core/{support → lib/support}/log_android.c +2 -2
- data/src/core/{support → lib/support}/log_linux.c +6 -5
- data/src/core/{support → lib/support}/log_posix.c +3 -3
- data/src/core/{support → lib/support}/log_win32.c +8 -22
- data/src/core/{support → lib/support}/murmur_hash.c +1 -1
- data/src/core/{support → lib/support}/murmur_hash.h +3 -3
- data/src/core/{support → lib/support}/slice.c +0 -0
- data/src/core/{support → lib/support}/slice_buffer.c +0 -0
- data/src/core/{support → lib/support}/stack_lockfree.c +7 -7
- data/src/core/{support → lib/support}/stack_lockfree.h +3 -3
- data/src/core/{support → lib/support}/string.c +1 -1
- data/src/core/{support → lib/support}/string.h +4 -4
- data/src/core/{support → lib/support}/string_posix.c +1 -1
- data/src/core/{support/string_win32.c → lib/support/string_util_win32.c} +23 -38
- data/src/core/lib/support/string_win32.c +83 -0
- data/src/core/{support → lib/support}/string_win32.h +3 -3
- data/src/core/{support → lib/support}/subprocess_posix.c +3 -3
- data/src/core/{support → lib/support}/subprocess_windows.c +3 -3
- data/src/core/{support → lib/support}/sync.c +2 -2
- data/src/core/{support → lib/support}/sync_posix.c +3 -3
- data/src/core/{support → lib/support}/sync_win32.c +1 -1
- data/src/core/{support → lib/support}/thd.c +0 -0
- data/src/core/{support → lib/support}/thd_internal.h +3 -3
- data/src/core/{support → lib/support}/thd_posix.c +4 -3
- data/src/core/{support → lib/support}/thd_win32.c +1 -1
- data/src/core/{support → lib/support}/time.c +2 -2
- data/src/core/{support → lib/support}/time_posix.c +12 -6
- data/src/core/{support → lib/support}/time_precise.c +0 -0
- data/src/core/{support → lib/support}/time_precise.h +3 -3
- data/src/core/{support → lib/support}/time_win32.c +7 -7
- data/src/core/{support → lib/support}/tls_pthread.c +0 -0
- data/src/core/{support → lib/support}/tmpfile.h +4 -4
- data/src/core/lib/support/tmpfile_msys.c +73 -0
- data/src/core/{support → lib/support}/tmpfile_posix.c +5 -5
- data/src/core/{support → lib/support}/tmpfile_win32.c +5 -5
- data/src/core/{support → lib/support}/wrap_memcpy.c +0 -0
- data/src/core/{surface → lib/surface}/alarm.c +3 -3
- data/src/core/{surface → lib/surface}/api_trace.c +1 -1
- data/src/core/{surface → lib/surface}/api_trace.h +4 -4
- data/src/core/{surface → lib/surface}/byte_buffer.c +3 -3
- data/src/core/{surface → lib/surface}/byte_buffer_reader.c +3 -3
- data/src/core/{surface → lib/surface}/call.c +145 -73
- data/src/core/{surface → lib/surface}/call.h +14 -7
- data/src/core/{surface → lib/surface}/call_details.c +1 -1
- data/src/core/{surface → lib/surface}/call_log_batch.c +2 -2
- data/src/core/{surface → lib/surface}/call_test_only.h +3 -3
- data/src/core/{surface → lib/surface}/channel.c +33 -34
- data/src/core/{surface → lib/surface}/channel.h +9 -9
- data/src/core/lib/surface/channel_init.c +140 -0
- data/src/core/lib/surface/channel_init.h +87 -0
- data/src/core/{surface → lib/surface}/channel_ping.c +4 -4
- data/src/core/lib/surface/channel_stack_type.c +54 -0
- data/src/core/{httpcli/parser.h → lib/surface/channel_stack_type.h} +22 -28
- data/src/core/{surface → lib/surface}/completion_queue.c +15 -11
- data/src/core/{surface → lib/surface}/completion_queue.h +4 -4
- data/src/core/{surface → lib/surface}/event_string.c +2 -2
- data/src/core/{surface → lib/surface}/event_string.h +3 -3
- data/src/core/lib/surface/init.c +217 -0
- data/src/core/{surface → lib/surface}/init.h +4 -3
- data/src/core/lib/surface/init_secure.c +89 -0
- data/src/core/{surface → lib/surface}/lame_client.c +31 -19
- data/src/core/{iomgr/pollset_set_windows.h → lib/surface/lame_client.h} +7 -5
- data/src/core/{surface → lib/surface}/metadata_array.c +1 -1
- data/src/core/{surface → lib/surface}/server.c +208 -183
- data/src/core/{surface → lib/surface}/server.h +6 -11
- data/src/core/{surface → lib/surface}/surface_trace.h +5 -5
- data/src/core/{surface → lib/surface}/validate_metadata.c +1 -1
- data/src/core/{surface → lib/surface}/version.c +2 -2
- data/src/core/{transport → lib/transport}/byte_stream.c +1 -1
- data/src/core/{transport → lib/transport}/byte_stream.h +4 -4
- data/src/core/{transport → lib/transport}/connectivity_state.c +2 -2
- data/src/core/{transport → lib/transport}/connectivity_state.h +4 -4
- data/src/core/{transport → lib/transport}/metadata.c +71 -19
- data/src/core/{transport → lib/transport}/metadata.h +11 -4
- data/src/core/{transport → lib/transport}/metadata_batch.c +2 -2
- data/src/core/{transport → lib/transport}/metadata_batch.h +4 -4
- data/src/core/{transport → lib/transport}/static_metadata.c +100 -32
- data/src/core/{transport → lib/transport}/static_metadata.h +58 -58
- data/src/core/{transport → lib/transport}/transport.c +25 -5
- data/src/core/{transport → lib/transport}/transport.h +41 -16
- data/src/core/{transport → lib/transport}/transport_impl.h +8 -5
- data/src/core/{transport → lib/transport}/transport_op_string.c +2 -2
- data/src/core/{tsi → lib/tsi}/fake_transport_security.c +18 -14
- data/src/core/{tsi → lib/tsi}/fake_transport_security.h +4 -4
- data/src/core/{tsi → lib/tsi}/ssl_transport_security.c +173 -63
- data/src/core/{tsi → lib/tsi}/ssl_transport_security.h +24 -6
- data/src/core/{tsi → lib/tsi}/ssl_types.h +3 -3
- data/src/core/{tsi → lib/tsi}/transport_security.c +12 -28
- data/src/core/{tsi → lib/tsi}/transport_security.h +4 -4
- data/src/core/{tsi → lib/tsi}/transport_security_interface.h +12 -3
- data/src/core/plugin_registry/grpc_plugin_registry.c +66 -0
- data/src/ruby/ext/grpc/extconf.rb +14 -20
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
- data/src/ruby/ext/grpc/rb_call.c +37 -4
- data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
- data/src/ruby/ext/grpc/rb_channel.c +2 -3
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
- data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
- data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
- data/src/ruby/ext/grpc/rb_server.c +2 -3
- data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
- data/src/ruby/ext/grpc/rb_signal.c +70 -0
- data/src/ruby/ext/grpc/rb_signal.h +39 -0
- data/src/ruby/lib/grpc.rb +21 -13
- data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
- data/src/ruby/lib/grpc/errors.rb +2 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
- data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
- data/src/ruby/lib/grpc/generic/service.rb +5 -15
- data/src/ruby/lib/grpc/grpc.rb +3 -3
- data/src/ruby/{bin/interop/interop_server.rb → lib/grpc/signals.rb} +39 -20
- data/src/ruby/lib/grpc/version.rb +2 -2
- data/src/ruby/pb/generate_proto_ruby.sh +9 -2
- data/src/ruby/pb/grpc/health/checker.rb +1 -1
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
- data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
- data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
- data/src/ruby/pb/test/client.rb +12 -23
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
- data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
- data/src/ruby/spec/generic/service_spec.rb +0 -69
- data/src/ruby/{bin/interop/interop_client.rb → spec/pb/duplicate/codegen_spec.rb} +41 -21
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +184 -176
- data/third_party/boringssl/crypto/asn1/a_bool.c +42 -44
- data/third_party/boringssl/crypto/asn1/a_bytes.c +236 -245
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +173 -192
- data/third_party/boringssl/crypto/asn1/a_dup.c +43 -35
- data/third_party/boringssl/crypto/asn1/a_enum.c +107 -109
- data/third_party/boringssl/crypto/asn1/a_gentm.c +180 -181
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +73 -80
- data/third_party/boringssl/crypto/asn1/a_int.c +357 -353
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +272 -253
- data/third_party/boringssl/crypto/asn1/a_object.c +293 -309
- data/third_party/boringssl/crypto/asn1/a_octet.c +13 -6
- data/third_party/boringssl/crypto/asn1/a_print.c +54 -52
- data/third_party/boringssl/crypto/asn1/a_strnid.c +179 -157
- data/third_party/boringssl/crypto/asn1/a_time.c +125 -129
- data/third_party/boringssl/crypto/asn1/a_type.c +79 -86
- data/third_party/boringssl/crypto/asn1/a_utctm.c +246 -255
- data/third_party/boringssl/crypto/asn1/a_utf8.c +159 -135
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +361 -368
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +11 -11
- data/third_party/boringssl/crypto/asn1/asn1_par.c +309 -351
- data/third_party/boringssl/crypto/asn1/asn_pack.c +30 -29
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +375 -394
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +146 -149
- data/third_party/boringssl/crypto/asn1/f_enum.c +128 -134
- data/third_party/boringssl/crypto/asn1/f_int.c +131 -139
- data/third_party/boringssl/crypto/asn1/f_string.c +125 -133
- data/third_party/boringssl/crypto/asn1/t_bitst.c +30 -29
- data/third_party/boringssl/crypto/asn1/t_pkey.c +45 -47
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1099 -1216
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +556 -592
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +175 -193
- data/third_party/boringssl/crypto/asn1/tasn_new.c +271 -288
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +462 -508
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +28 -21
- data/third_party/boringssl/crypto/asn1/x_bignum.c +62 -52
- data/third_party/boringssl/crypto/asn1/x_long.c +101 -86
- data/third_party/boringssl/crypto/bio/buffer.c +3 -3
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +8 -68
- data/third_party/boringssl/crypto/bn/bn.c +1 -1
- data/third_party/boringssl/crypto/bn/bn_asn1.c +9 -22
- data/third_party/boringssl/crypto/bn/convert.c +9 -4
- data/third_party/boringssl/crypto/bn/div.c +0 -20
- data/third_party/boringssl/crypto/bn/exponentiation.c +22 -13
- data/third_party/boringssl/crypto/bn/generic.c +6 -242
- data/third_party/boringssl/crypto/bn/internal.h +9 -70
- data/third_party/boringssl/crypto/bn/montgomery.c +1 -2
- data/third_party/boringssl/crypto/bn/mul.c +6 -26
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +21 -28
- data/third_party/boringssl/crypto/bytestring/asn1_compat.c +51 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +128 -87
- data/third_party/boringssl/crypto/bytestring/cbb.c +37 -3
- data/third_party/boringssl/crypto/bytestring/internal.h +39 -10
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +18 -13
- data/third_party/boringssl/crypto/cipher/e_aes.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +4 -9
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +39 -10
- data/third_party/boringssl/crypto/conf/conf.c +9 -0
- data/third_party/boringssl/crypto/cpu-intel.c +1 -1
- data/third_party/boringssl/crypto/crypto.c +2 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +125 -120
- data/third_party/boringssl/crypto/curve25519/internal.h +45 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +225 -0
- data/third_party/boringssl/crypto/dh/check.c +32 -10
- data/third_party/boringssl/crypto/dh/dh.c +1 -1
- data/third_party/boringssl/crypto/digest/md32_common.h +0 -60
- data/third_party/boringssl/crypto/dsa/dsa.c +47 -21
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +249 -64
- data/third_party/boringssl/crypto/ec/ec.c +45 -31
- data/third_party/boringssl/crypto/ec/ec_asn1.c +315 -382
- data/third_party/boringssl/crypto/ec/ec_key.c +1 -4
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -9
- data/third_party/boringssl/crypto/ec/internal.h +1 -19
- data/third_party/boringssl/crypto/ec/oct.c +12 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +4 -65
- data/third_party/boringssl/crypto/ec/p256-64.c +9 -71
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +1 -6
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +3 -13
- data/third_party/boringssl/crypto/ec/simple.c +0 -76
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +1 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +10 -24
- data/third_party/boringssl/crypto/evp/evp.c +4 -3
- data/third_party/boringssl/crypto/evp/evp_asn1.c +101 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +22 -51
- data/third_party/boringssl/crypto/evp/internal.h +28 -27
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +78 -249
- data/third_party/boringssl/crypto/evp/p_ec.c +19 -66
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +74 -231
- data/third_party/boringssl/crypto/evp/p_rsa.c +90 -13
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +49 -48
- data/third_party/boringssl/crypto/internal.h +16 -1
- data/third_party/boringssl/crypto/mem.c +2 -2
- data/third_party/boringssl/crypto/modes/ctr.c +2 -1
- data/third_party/boringssl/crypto/modes/gcm.c +5 -3
- data/third_party/boringssl/crypto/obj/obj_dat.h +6 -3
- data/third_party/boringssl/crypto/pem/pem_all.c +83 -102
- data/third_party/boringssl/crypto/pem/pem_info.c +286 -309
- data/third_party/boringssl/crypto/pem/pem_lib.c +690 -710
- data/third_party/boringssl/crypto/pem/pem_oth.c +15 -16
- data/third_party/boringssl/crypto/pem/pem_pk8.c +132 -119
- data/third_party/boringssl/crypto/pem/pem_pkey.c +144 -220
- data/third_party/boringssl/crypto/pem/pem_x509.c +3 -3
- data/third_party/boringssl/crypto/pem/pem_xaux.c +5 -4
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +54 -60
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +3 -1
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +48 -50
- data/third_party/boringssl/crypto/rand/rand.c +2 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +8 -48
- data/third_party/boringssl/crypto/rsa/internal.h +1 -9
- data/third_party/boringssl/crypto/rsa/padding.c +73 -77
- data/third_party/boringssl/crypto/rsa/rsa.c +1 -1
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +27 -46
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +23 -34
- data/third_party/boringssl/crypto/test/scoped_types.h +3 -0
- data/third_party/boringssl/crypto/thread_win.c +15 -13
- data/third_party/boringssl/crypto/time_support.c +0 -6
- data/third_party/boringssl/crypto/x509/a_digest.c +26 -27
- data/third_party/boringssl/crypto/x509/a_sign.c +63 -64
- data/third_party/boringssl/crypto/x509/a_strex.c +482 -413
- data/third_party/boringssl/crypto/x509/a_verify.c +45 -51
- data/third_party/boringssl/crypto/x509/asn1_gen.c +715 -769
- data/third_party/boringssl/crypto/x509/by_dir.c +355 -393
- data/third_party/boringssl/crypto/x509/by_file.c +186 -206
- data/third_party/boringssl/crypto/x509/charmap.h +11 -11
- data/third_party/boringssl/crypto/x509/i2d_pr.c +21 -22
- data/third_party/boringssl/crypto/x509/t_crl.c +50 -51
- data/third_party/boringssl/crypto/x509/t_x509.c +414 -406
- data/third_party/boringssl/crypto/x509/t_x509a.c +44 -42
- data/third_party/boringssl/crypto/x509/vpm_int.h +13 -13
- data/third_party/boringssl/crypto/x509/x509_att.c +241 -219
- data/third_party/boringssl/crypto/x509/x509_cmp.c +343 -359
- data/third_party/boringssl/crypto/x509/x509_d2.c +36 -35
- data/third_party/boringssl/crypto/x509/x509_def.c +23 -13
- data/third_party/boringssl/crypto/x509/x509_ext.c +75 -75
- data/third_party/boringssl/crypto/x509/x509_lu.c +574 -612
- data/third_party/boringssl/crypto/x509/x509_obj.c +104 -115
- data/third_party/boringssl/crypto/x509/x509_r2x.c +40 -40
- data/third_party/boringssl/crypto/x509/x509_req.c +181 -174
- data/third_party/boringssl/crypto/x509/x509_set.c +71 -76
- data/third_party/boringssl/crypto/x509/x509_trs.c +193 -171
- data/third_party/boringssl/crypto/x509/x509_txt.c +135 -138
- data/third_party/boringssl/crypto/x509/x509_v3.c +174 -167
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2079 -2130
- data/third_party/boringssl/crypto/x509/x509_vpm.c +486 -522
- data/third_party/boringssl/crypto/x509/x509cset.c +96 -99
- data/third_party/boringssl/crypto/x509/x509name.c +280 -275
- data/third_party/boringssl/crypto/x509/x509rset.c +15 -14
- data/third_party/boringssl/crypto/x509/x509spki.c +62 -60
- data/third_party/boringssl/crypto/x509/x509type.c +58 -60
- data/third_party/boringssl/crypto/x509/x_algor.c +70 -73
- data/third_party/boringssl/crypto/x509/x_all.c +282 -328
- data/third_party/boringssl/crypto/x509/x_attrib.c +36 -42
- data/third_party/boringssl/crypto/x509/x_crl.c +397 -418
- data/third_party/boringssl/crypto/x509/x_exten.c +5 -5
- data/third_party/boringssl/crypto/x509/x_info.c +30 -27
- data/third_party/boringssl/crypto/x509/x_name.c +387 -388
- data/third_party/boringssl/crypto/x509/x_pkey.c +32 -29
- data/third_party/boringssl/crypto/x509/x_pubkey.c +261 -280
- data/third_party/boringssl/crypto/x509/x_req.c +30 -33
- data/third_party/boringssl/crypto/x509/x_sig.c +2 -2
- data/third_party/boringssl/crypto/x509/x_spki.c +9 -7
- data/third_party/boringssl/crypto/x509/x_val.c +2 -2
- data/third_party/boringssl/crypto/x509/x_x509.c +120 -119
- data/third_party/boringssl/crypto/x509/x_x509a.c +99 -91
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +57 -51
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +199 -214
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +57 -64
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +95 -90
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +86 -87
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +61 -64
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +108 -117
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +676 -724
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +128 -136
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +7 -6
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +499 -507
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +54 -47
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +67 -67
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +330 -328
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +354 -338
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +441 -496
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +35 -33
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +66 -63
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +157 -159
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +45 -43
- data/third_party/boringssl/crypto/x509v3/v3_info.c +124 -112
- data/third_party/boringssl/crypto/x509v3/v3_int.c +30 -26
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +231 -204
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +353 -381
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +252 -270
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +9 -8
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +58 -61
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +35 -34
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +72 -74
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +146 -121
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +651 -582
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +76 -72
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +139 -131
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1072 -1068
- data/third_party/boringssl/include/openssl/asn1.h +40 -38
- data/third_party/boringssl/include/openssl/base.h +10 -1
- data/third_party/boringssl/include/openssl/bio.h +10 -11
- data/third_party/boringssl/include/openssl/bn.h +12 -9
- data/third_party/boringssl/include/openssl/buf.h +1 -1
- data/third_party/boringssl/include/openssl/bytestring.h +29 -0
- data/third_party/boringssl/include/openssl/conf.h +25 -0
- data/third_party/boringssl/include/openssl/crypto.h +6 -1
- data/third_party/boringssl/include/openssl/curve25519.h +6 -3
- data/third_party/boringssl/include/openssl/dh.h +7 -3
- data/third_party/boringssl/include/openssl/dsa.h +108 -51
- data/third_party/boringssl/include/openssl/ec.h +46 -21
- data/third_party/boringssl/include/openssl/ec_key.h +78 -42
- data/third_party/boringssl/include/openssl/ecdsa.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -2
- data/third_party/boringssl/include/openssl/evp.h +120 -37
- data/third_party/boringssl/include/openssl/mem.h +4 -13
- data/third_party/boringssl/include/openssl/obj_mac.h +4 -0
- data/third_party/boringssl/include/openssl/pem.h +0 -9
- data/third_party/boringssl/include/openssl/pkcs8.h +6 -2
- data/third_party/boringssl/include/openssl/rand.h +3 -0
- data/third_party/boringssl/include/openssl/rsa.h +42 -42
- data/third_party/boringssl/include/openssl/ssl.h +115 -41
- data/third_party/boringssl/include/openssl/stack.h +0 -3
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -256
- data/third_party/boringssl/include/openssl/tls1.h +1 -1
- data/third_party/boringssl/include/openssl/x509.h +0 -2
- data/third_party/boringssl/include/openssl/x509_vfy.h +5 -0
- data/third_party/boringssl/ssl/d1_both.c +102 -101
- data/third_party/boringssl/ssl/d1_clnt.c +145 -150
- data/third_party/boringssl/ssl/d1_lib.c +63 -62
- data/third_party/boringssl/ssl/d1_pkt.c +73 -71
- data/third_party/boringssl/ssl/d1_srvr.c +116 -125
- data/third_party/boringssl/ssl/dtls_record.c +3 -3
- data/third_party/boringssl/ssl/internal.h +210 -208
- data/third_party/boringssl/ssl/pqueue/pqueue.c +2 -2
- data/third_party/boringssl/ssl/s3_both.c +116 -130
- data/third_party/boringssl/ssl/s3_clnt.c +589 -740
- data/third_party/boringssl/ssl/s3_enc.c +52 -151
- data/third_party/boringssl/ssl/s3_lib.c +70 -76
- data/third_party/boringssl/ssl/s3_pkt.c +105 -144
- data/third_party/boringssl/ssl/s3_srvr.c +542 -806
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +1 -1
- data/third_party/boringssl/ssl/ssl_cert.c +2 -2
- data/third_party/boringssl/ssl/ssl_cipher.c +7 -3
- data/third_party/boringssl/ssl/ssl_ecdh.c +374 -0
- data/third_party/boringssl/ssl/ssl_lib.c +260 -221
- data/third_party/boringssl/ssl/ssl_session.c +17 -17
- data/third_party/boringssl/ssl/t1_enc.c +128 -273
- data/third_party/boringssl/ssl/t1_lib.c +134 -258
- data/third_party/boringssl/ssl/test/test_config.h +2 -0
- data/third_party/boringssl/ssl/tls_record.c +52 -15
- metadata +385 -359
- data/src/core/channel/client_uchannel.c +0 -243
- data/src/core/channel/client_uchannel.h +0 -60
- data/src/core/channel/connected_channel.h +0 -51
- data/src/core/client_config/lb_policies/pick_first.h +0 -43
- data/src/core/client_config/resolvers/dns_resolver.h +0 -42
- data/src/core/client_config/subchannel_factory.h +0 -66
- data/src/core/httpcli/parser.c +0 -211
- data/src/core/iomgr/fd_posix.c +0 -451
- data/src/core/iomgr/fd_posix.h +0 -192
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +0 -324
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +0 -234
- data/src/core/iomgr/pollset_posix.c +0 -633
- data/src/core/iomgr/pollset_posix.h +0 -153
- data/src/core/iomgr/pollset_set_posix.c +0 -202
- data/src/core/iomgr/pollset_set_posix.h +0 -45
- data/src/core/surface/init.c +0 -174
- data/src/core/surface/init_secure.c +0 -42
- data/src/core/surface/server_create.c +0 -48
- data/src/core/transport/chttp2/huffsyms.c +0 -297
- data/src/ruby/bin/grpc_ruby_interop_client +0 -33
- data/src/ruby/bin/grpc_ruby_interop_server +0 -33
- data/third_party/boringssl/crypto/dsa/internal.h +0 -78
@@ -125,13 +125,15 @@
|
|
125
125
|
|
126
126
|
#include <openssl/base.h>
|
127
127
|
|
128
|
-
#if defined(OPENSSL_X86_64) && defined(_MSC_VER)
|
128
|
+
#if defined(OPENSSL_X86_64) && defined(_MSC_VER)
|
129
129
|
#pragma warning(push, 3)
|
130
130
|
#include <intrin.h>
|
131
131
|
#pragma warning(pop)
|
132
132
|
#pragma intrinsic(__umulh, _umul128)
|
133
133
|
#endif
|
134
134
|
|
135
|
+
#include "../internal.h"
|
136
|
+
|
135
137
|
#if defined(__cplusplus)
|
136
138
|
extern "C" {
|
137
139
|
#endif
|
@@ -144,7 +146,7 @@ BIGNUM *bn_expand(BIGNUM *bn, size_t bits);
|
|
144
146
|
|
145
147
|
#if !defined(_MSC_VER)
|
146
148
|
/* MSVC doesn't support two-word integers on 64-bit. */
|
147
|
-
#define BN_ULLONG
|
149
|
+
#define BN_ULLONG uint128_t
|
148
150
|
#endif
|
149
151
|
|
150
152
|
#define BN_BITS2 64
|
@@ -179,14 +181,6 @@ BIGNUM *bn_expand(BIGNUM *bn, size_t bits);
|
|
179
181
|
#endif
|
180
182
|
|
181
183
|
|
182
|
-
/* Pentium pro 16,16,16,32,64 */
|
183
|
-
/* Alpha 16,16,16,16.64 */
|
184
|
-
#define BN_MULL_SIZE_NORMAL (16) /* 32 */
|
185
|
-
#define BN_MUL_RECURSIVE_SIZE_NORMAL (16) /* 32 less than */
|
186
|
-
#define BN_SQR_RECURSIVE_SIZE_NORMAL (16) /* 32 */
|
187
|
-
#define BN_MUL_LOW_RECURSIVE_SIZE_NORMAL (32) /* 32 */
|
188
|
-
#define BN_MONT_CTX_SET_SIZE_WORD (64) /* 32 */
|
189
|
-
|
190
184
|
#define STATIC_BIGNUM(x) \
|
191
185
|
{ \
|
192
186
|
(BN_ULONG *)x, sizeof(x) / sizeof(BN_ULONG), \
|
@@ -223,67 +217,12 @@ int bn_cmp_part_words(const BN_ULONG *a, const BN_ULONG *b, int cl, int dl);
|
|
223
217
|
int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
224
218
|
const BN_ULONG *np, const BN_ULONG *n0, int num);
|
225
219
|
|
226
|
-
#if
|
227
|
-
|
228
|
-
#
|
229
|
-
#define HBITS(a) (((a) >> BN_BITS4) & BN_MASK2l)
|
230
|
-
#define L2HBITS(a) (((a) << BN_BITS4) & BN_MASK2)
|
231
|
-
|
232
|
-
#define LLBITS(a) ((a) & BN_MASKl)
|
233
|
-
#define LHBITS(a) (((a) >> BN_BITS2) & BN_MASKl)
|
234
|
-
#define LL2HBITS(a) ((BN_ULLONG)((a) & BN_MASKl) << BN_BITS2)
|
235
|
-
|
236
|
-
#define mul64(l, h, bl, bh) \
|
237
|
-
{ \
|
238
|
-
BN_ULONG m, m1, lt, ht; \
|
239
|
-
\
|
240
|
-
lt = l; \
|
241
|
-
ht = h; \
|
242
|
-
m = (bh) * (lt); \
|
243
|
-
lt = (bl) * (lt); \
|
244
|
-
m1 = (bl) * (ht); \
|
245
|
-
ht = (bh) * (ht); \
|
246
|
-
m = (m + m1) & BN_MASK2; \
|
247
|
-
if (m < m1) \
|
248
|
-
ht += L2HBITS((BN_ULONG)1); \
|
249
|
-
ht += HBITS(m); \
|
250
|
-
m1 = L2HBITS(m); \
|
251
|
-
lt = (lt + m1) & BN_MASK2; \
|
252
|
-
if (lt < m1) \
|
253
|
-
ht++; \
|
254
|
-
(l) = lt; \
|
255
|
-
(h) = ht; \
|
256
|
-
}
|
257
|
-
|
258
|
-
#endif /* !defined(BN_ULLONG) */
|
220
|
+
#if defined(OPENSSL_X86_64) && defined(_MSC_VER)
|
221
|
+
#define BN_UMULT_LOHI(low, high, a, b) ((low) = _umul128((a), (b), &(high)))
|
222
|
+
#endif
|
259
223
|
|
260
|
-
#if !defined(
|
261
|
-
#
|
262
|
-
# define BN_UMULT_HIGH(a,b) ({ \
|
263
|
-
register BN_ULONG ret,discard; \
|
264
|
-
__asm__ ("mulq %3" \
|
265
|
-
: "=a"(discard),"=d"(ret) \
|
266
|
-
: "a"(a), "g"(b) \
|
267
|
-
: "cc"); \
|
268
|
-
ret; })
|
269
|
-
# define BN_UMULT_LOHI(low,high,a,b) \
|
270
|
-
__asm__ ("mulq %3" \
|
271
|
-
: "=a"(low),"=d"(high) \
|
272
|
-
: "a"(a),"g"(b) \
|
273
|
-
: "cc");
|
274
|
-
# elif defined(_MSC_VER) && _MSC_VER >= 1400
|
275
|
-
# define BN_UMULT_HIGH(a, b) __umulh((a), (b))
|
276
|
-
# define BN_UMULT_LOHI(low, high, a, b) ((low) = _umul128((a), (b), &(high)))
|
277
|
-
# endif
|
278
|
-
#elif !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64)
|
279
|
-
# if defined(__GNUC__) && __GNUC__>=2
|
280
|
-
# define BN_UMULT_HIGH(a,b) ({ \
|
281
|
-
register BN_ULONG ret; \
|
282
|
-
__asm__ ("umulh %0,%1,%2" \
|
283
|
-
: "=r"(ret) \
|
284
|
-
: "r"(a), "r"(b)); \
|
285
|
-
ret; })
|
286
|
-
# endif
|
224
|
+
#if !defined(BN_ULLONG) && !defined(BN_UMULT_LOHI)
|
225
|
+
#error "Either BN_ULLONG or BN_UMULT_LOHI must be defined on every platform."
|
287
226
|
#endif
|
288
227
|
|
289
228
|
|
@@ -417,11 +417,10 @@ static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r,
|
|
417
417
|
|
418
418
|
static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, const BN_MONT_CTX *mont)
|
419
419
|
{
|
420
|
-
BIGNUM *n;
|
421
420
|
BN_ULONG *ap,*np,*rp,n0,v,carry;
|
422
421
|
int nl,max,i;
|
423
422
|
|
424
|
-
|
423
|
+
const BIGNUM *n = &mont->N;
|
425
424
|
nl=n->top;
|
426
425
|
if (nl == 0) { ret->top=0; return(1); }
|
427
426
|
|
@@ -62,6 +62,10 @@
|
|
62
62
|
#include "internal.h"
|
63
63
|
|
64
64
|
|
65
|
+
#define BN_MUL_RECURSIVE_SIZE_NORMAL 16
|
66
|
+
#define BN_SQR_RECURSIVE_SIZE_NORMAL BN_MUL_RECURSIVE_SIZE_NORMAL
|
67
|
+
|
68
|
+
|
65
69
|
void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb) {
|
66
70
|
BN_ULONG *rr;
|
67
71
|
|
@@ -107,31 +111,6 @@ void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb) {
|
|
107
111
|
}
|
108
112
|
}
|
109
113
|
|
110
|
-
void bn_mul_low_normal(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n) {
|
111
|
-
bn_mul_words(r, a, n, b[0]);
|
112
|
-
|
113
|
-
for (;;) {
|
114
|
-
if (--n <= 0) {
|
115
|
-
return;
|
116
|
-
}
|
117
|
-
bn_mul_add_words(&(r[1]), a, n, b[1]);
|
118
|
-
if (--n <= 0) {
|
119
|
-
return;
|
120
|
-
}
|
121
|
-
bn_mul_add_words(&(r[2]), a, n, b[2]);
|
122
|
-
if (--n <= 0) {
|
123
|
-
return;
|
124
|
-
}
|
125
|
-
bn_mul_add_words(&(r[3]), a, n, b[3]);
|
126
|
-
if (--n <= 0) {
|
127
|
-
return;
|
128
|
-
}
|
129
|
-
bn_mul_add_words(&(r[4]), a, n, b[4]);
|
130
|
-
r += 4;
|
131
|
-
b += 4;
|
132
|
-
}
|
133
|
-
}
|
134
|
-
|
135
114
|
#if !defined(OPENSSL_X86) || defined(OPENSSL_NO_ASM)
|
136
115
|
/* Here follows specialised variants of bn_add_words() and bn_sub_words(). They
|
137
116
|
* have the property performing operations on arrays of different sizes. The
|
@@ -618,7 +597,8 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx) {
|
|
618
597
|
}
|
619
598
|
}
|
620
599
|
|
621
|
-
|
600
|
+
static const int kMulNormalSize = 16;
|
601
|
+
if (al >= kMulNormalSize && bl >= kMulNormalSize) {
|
622
602
|
if (i >= -1 && i <= 1) {
|
623
603
|
/* Find out the power of two lower or equal
|
624
604
|
to the longest of the two numbers */
|
@@ -48,6 +48,9 @@
|
|
48
48
|
|
49
49
|
#include <openssl/mem.h>
|
50
50
|
|
51
|
+
#include "../internal.h"
|
52
|
+
|
53
|
+
|
51
54
|
/*
|
52
55
|
* See crypto/bn/asm/rsaz-avx2.pl for further details.
|
53
56
|
*/
|
@@ -58,42 +61,30 @@ void rsaz_1024_scatter5_avx2(void *tbl,const void *val,int i);
|
|
58
61
|
void rsaz_1024_gather5_avx2(void *val,const void *tbl,int i);
|
59
62
|
void rsaz_1024_red2norm_avx2(void *norm,const void *red);
|
60
63
|
|
61
|
-
|
62
|
-
# define ALIGN64 __attribute__((aligned(64)))
|
63
|
-
#elif defined(_MSC_VER)
|
64
|
-
# define ALIGN64 __declspec(align(64))
|
65
|
-
#elif defined(__SUNPRO_C)
|
66
|
-
# define ALIGN64
|
67
|
-
# pragma align 64(one,two80)
|
68
|
-
#else
|
69
|
-
# define ALIGN64 /* not fatal, might hurt performance a little */
|
70
|
-
#endif
|
71
|
-
|
72
|
-
ALIGN64 static const BN_ULONG one[40] =
|
64
|
+
alignas(64) static const BN_ULONG one[40] =
|
73
65
|
{1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
74
|
-
|
66
|
+
alignas(64) static const BN_ULONG two80[40] =
|
75
67
|
{0,0,1<<22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
76
68
|
|
77
69
|
void RSAZ_1024_mod_exp_avx2(BN_ULONG result_norm[16],
|
78
70
|
const BN_ULONG base_norm[16], const BN_ULONG exponent[16],
|
79
71
|
const BN_ULONG m_norm[16], const BN_ULONG RR[16], BN_ULONG k0)
|
80
72
|
{
|
81
|
-
|
82
|
-
unsigned char *p_str = storage + (64-((size_t)storage%64));
|
73
|
+
alignas(64) uint8_t storage[(320 * 3) + (32 * 9 * 16)]; /* 5.5KB */
|
83
74
|
unsigned char *a_inv, *m, *result,
|
84
|
-
*table_s =
|
75
|
+
*table_s = storage + (320 * 3),
|
85
76
|
*R2 = table_s; /* borrow */
|
86
77
|
int index;
|
87
78
|
int wvalue;
|
88
79
|
|
89
|
-
if ((((
|
90
|
-
result =
|
91
|
-
a_inv =
|
92
|
-
m =
|
80
|
+
if (((((uintptr_t)storage & 4095) + 320) >> 12) != 0) {
|
81
|
+
result = storage;
|
82
|
+
a_inv = storage + 320;
|
83
|
+
m = storage + (320 * 2); /* should not cross page */
|
93
84
|
} else {
|
94
|
-
m =
|
95
|
-
result =
|
96
|
-
a_inv =
|
85
|
+
m = storage; /* should not cross page */
|
86
|
+
result = storage + 320;
|
87
|
+
a_inv = storage + (320 * 2);
|
97
88
|
}
|
98
89
|
|
99
90
|
rsaz_1024_norm2red_avx2(m, m_norm);
|
@@ -224,8 +215,9 @@ void RSAZ_1024_mod_exp_avx2(BN_ULONG result_norm[16],
|
|
224
215
|
rsaz_1024_scatter5_avx2(table_s,result,31);
|
225
216
|
#endif
|
226
217
|
|
218
|
+
const uint8_t *p_str = (const uint8_t *)exponent;
|
219
|
+
|
227
220
|
/* load first window */
|
228
|
-
p_str = (unsigned char*)exponent;
|
229
221
|
wvalue = p_str[127] >> 3;
|
230
222
|
rsaz_1024_gather5_avx2(result,table_s,wvalue);
|
231
223
|
|
@@ -235,7 +227,7 @@ void RSAZ_1024_mod_exp_avx2(BN_ULONG result_norm[16],
|
|
235
227
|
|
236
228
|
rsaz_1024_sqr_avx2(result, result, m, k0, 5);
|
237
229
|
|
238
|
-
wvalue = *((unsigned short*)&p_str[index/8]);
|
230
|
+
wvalue = *((const unsigned short*)&p_str[index / 8]);
|
239
231
|
wvalue = (wvalue>> (index%8)) & 31;
|
240
232
|
index-=5;
|
241
233
|
|
@@ -274,11 +266,10 @@ void RSAZ_512_mod_exp(BN_ULONG result[8],
|
|
274
266
|
const BN_ULONG base[8], const BN_ULONG exponent[8],
|
275
267
|
const BN_ULONG m[8], BN_ULONG k0, const BN_ULONG RR[8])
|
276
268
|
{
|
277
|
-
|
278
|
-
unsigned char *table = storage
|
269
|
+
alignas(64) uint8_t storage[(16*8*8) + (64 * 2)]; /* 1.2KB */
|
270
|
+
unsigned char *table = storage;
|
279
271
|
BN_ULONG *a_inv = (BN_ULONG *)(table+16*8*8),
|
280
272
|
*temp = (BN_ULONG *)(table+16*8*8+8*8);
|
281
|
-
unsigned char *p_str = (unsigned char*)exponent;
|
282
273
|
int index;
|
283
274
|
unsigned int wvalue;
|
284
275
|
|
@@ -300,6 +291,8 @@ void RSAZ_512_mod_exp(BN_ULONG result[8],
|
|
300
291
|
for (index=3; index<16; index++)
|
301
292
|
rsaz_512_mul_scatter4(temp, a_inv, m, k0, table, index);
|
302
293
|
|
294
|
+
const uint8_t *p_str = (const uint8_t *)exponent;
|
295
|
+
|
303
296
|
/* load first window */
|
304
297
|
wvalue = p_str[63];
|
305
298
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
/* Copyright (c) 2016, Google Inc.
|
2
|
+
*
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
6
|
+
*
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
14
|
+
|
15
|
+
|
16
|
+
#include <openssl/bytestring.h>
|
17
|
+
|
18
|
+
#include <assert.h>
|
19
|
+
#include <limits.h>
|
20
|
+
#include <string.h>
|
21
|
+
|
22
|
+
#include <openssl/mem.h>
|
23
|
+
|
24
|
+
#include "internal.h"
|
25
|
+
|
26
|
+
|
27
|
+
int CBB_finish_i2d(CBB *cbb, uint8_t **outp) {
|
28
|
+
assert(cbb->base->can_resize);
|
29
|
+
|
30
|
+
uint8_t *der;
|
31
|
+
size_t der_len;
|
32
|
+
if (!CBB_finish(cbb, &der, &der_len)) {
|
33
|
+
CBB_cleanup(cbb);
|
34
|
+
return -1;
|
35
|
+
}
|
36
|
+
if (der_len > INT_MAX) {
|
37
|
+
OPENSSL_free(der);
|
38
|
+
return -1;
|
39
|
+
}
|
40
|
+
if (outp != NULL) {
|
41
|
+
if (*outp == NULL) {
|
42
|
+
*outp = der;
|
43
|
+
der = NULL;
|
44
|
+
} else {
|
45
|
+
memcpy(*outp, der, der_len);
|
46
|
+
*outp += der_len;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
OPENSSL_free(der);
|
50
|
+
return (int)der_len;
|
51
|
+
}
|
@@ -14,6 +14,7 @@
|
|
14
14
|
|
15
15
|
#include <openssl/bytestring.h>
|
16
16
|
|
17
|
+
#include <assert.h>
|
17
18
|
#include <string.h>
|
18
19
|
|
19
20
|
#include "internal.h"
|
@@ -24,11 +25,36 @@
|
|
24
25
|
* input could otherwise cause the stack to overflow. */
|
25
26
|
static const unsigned kMaxDepth = 2048;
|
26
27
|
|
28
|
+
/* is_string_type returns one if |tag| is a string type and zero otherwise. It
|
29
|
+
* ignores the constructed bit. */
|
30
|
+
static int is_string_type(unsigned tag) {
|
31
|
+
if ((tag & 0xc0) != 0) {
|
32
|
+
return 0;
|
33
|
+
}
|
34
|
+
switch (tag & 0x1f) {
|
35
|
+
case CBS_ASN1_BITSTRING:
|
36
|
+
case CBS_ASN1_OCTETSTRING:
|
37
|
+
case CBS_ASN1_NUMERICSTRING:
|
38
|
+
case CBS_ASN1_PRINTABLESTRING:
|
39
|
+
case CBS_ASN1_T16STRING:
|
40
|
+
case CBS_ASN1_VIDEOTEXSTRING:
|
41
|
+
case CBS_ASN1_IA5STRING:
|
42
|
+
case CBS_ASN1_GRAPHICSTRING:
|
43
|
+
case CBS_ASN1_VISIBLESTRING:
|
44
|
+
case CBS_ASN1_GENERALSTRING:
|
45
|
+
case CBS_ASN1_UNIVERSALSTRING:
|
46
|
+
case CBS_ASN1_BMPSTRING:
|
47
|
+
return 1;
|
48
|
+
default:
|
49
|
+
return 0;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
27
53
|
/* cbs_find_ber walks an ASN.1 structure in |orig_in| and sets |*ber_found|
|
28
|
-
* depending on whether an indefinite length element
|
29
|
-
* |
|
30
|
-
* and zero on error. */
|
31
|
-
static int cbs_find_ber(CBS *orig_in, char *ber_found, unsigned depth) {
|
54
|
+
* depending on whether an indefinite length element or constructed string was
|
55
|
+
* found. The value of |orig_in| is not changed. It returns one on success (i.e.
|
56
|
+
* |*ber_found| was set) and zero on error. */
|
57
|
+
static int cbs_find_ber(const CBS *orig_in, char *ber_found, unsigned depth) {
|
32
58
|
CBS in;
|
33
59
|
|
34
60
|
if (depth > kMaxDepth) {
|
@@ -49,10 +75,16 @@ static int cbs_find_ber(CBS *orig_in, char *ber_found, unsigned depth) {
|
|
49
75
|
if (CBS_len(&contents) == header_len &&
|
50
76
|
header_len > 0 &&
|
51
77
|
CBS_data(&contents)[header_len-1] == 0x80) {
|
78
|
+
/* Found an indefinite-length element. */
|
52
79
|
*ber_found = 1;
|
53
80
|
return 1;
|
54
81
|
}
|
55
82
|
if (tag & CBS_ASN1_CONSTRUCTED) {
|
83
|
+
if (is_string_type(tag)) {
|
84
|
+
/* Constructed strings are only legal in BER and require conversion. */
|
85
|
+
*ber_found = 1;
|
86
|
+
return 1;
|
87
|
+
}
|
56
88
|
if (!CBS_skip(&contents, header_len) ||
|
57
89
|
!cbs_find_ber(&contents, ber_found, depth + 1)) {
|
58
90
|
return 0;
|
@@ -63,16 +95,6 @@ static int cbs_find_ber(CBS *orig_in, char *ber_found, unsigned depth) {
|
|
63
95
|
return 1;
|
64
96
|
}
|
65
97
|
|
66
|
-
/* is_primitive_type returns true if |tag| likely a primitive type. Normally
|
67
|
-
* one can just test the "constructed" bit in the tag but, in BER, even
|
68
|
-
* primitive tags can have the constructed bit if they have indefinite
|
69
|
-
* length. */
|
70
|
-
static char is_primitive_type(unsigned tag) {
|
71
|
-
return (tag & 0xc0) == 0 &&
|
72
|
-
(tag & 0x1f) != (CBS_ASN1_SEQUENCE & 0x1f) &&
|
73
|
-
(tag & 0x1f) != (CBS_ASN1_SET & 0x1f);
|
74
|
-
}
|
75
|
-
|
76
98
|
/* is_eoc returns true if |header_len| and |contents|, as returned by
|
77
99
|
* |CBS_get_any_ber_asn1_element|, indicate an "end of contents" (EOC) value. */
|
78
100
|
static char is_eoc(size_t header_len, CBS *contents) {
|
@@ -81,92 +103,65 @@ static char is_eoc(size_t header_len, CBS *contents) {
|
|
81
103
|
}
|
82
104
|
|
83
105
|
/* cbs_convert_ber reads BER data from |in| and writes DER data to |out|. If
|
84
|
-
* |
|
85
|
-
*
|
86
|
-
*
|
87
|
-
*
|
88
|
-
*
|
89
|
-
|
106
|
+
* |string_tag| is non-zero, then all elements must match |string_tag| up to the
|
107
|
+
* constructed bit and primitive element bodies are written to |out| without
|
108
|
+
* element headers. This is used when concatenating the fragments of a
|
109
|
+
* constructed string. If |looking_for_eoc| is set then any EOC elements found
|
110
|
+
* will cause the function to return after consuming it. It returns one on
|
111
|
+
* success and zero on error. */
|
112
|
+
static int cbs_convert_ber(CBS *in, CBB *out, unsigned string_tag,
|
90
113
|
char looking_for_eoc, unsigned depth) {
|
114
|
+
assert(!(string_tag & CBS_ASN1_CONSTRUCTED));
|
115
|
+
|
91
116
|
if (depth > kMaxDepth) {
|
92
117
|
return 0;
|
93
118
|
}
|
94
119
|
|
95
120
|
while (CBS_len(in) > 0) {
|
96
121
|
CBS contents;
|
97
|
-
unsigned tag;
|
122
|
+
unsigned tag, child_string_tag = string_tag;
|
98
123
|
size_t header_len;
|
99
124
|
CBB *out_contents, out_contents_storage;
|
100
125
|
|
101
126
|
if (!CBS_get_any_ber_asn1_element(in, &contents, &tag, &header_len)) {
|
102
127
|
return 0;
|
103
128
|
}
|
104
|
-
out_contents = out;
|
105
129
|
|
106
|
-
if (
|
107
|
-
|
108
|
-
|
109
|
-
}
|
130
|
+
if (is_eoc(header_len, &contents)) {
|
131
|
+
return looking_for_eoc;
|
132
|
+
}
|
110
133
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
*
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
size_t inner_header_len;
|
130
|
-
|
131
|
-
CBS_init(&in_copy, CBS_data(in), CBS_len(in));
|
132
|
-
if (!CBS_get_any_ber_asn1_element(&in_copy, &inner_contents,
|
133
|
-
&inner_tag, &inner_header_len)) {
|
134
|
-
return 0;
|
135
|
-
}
|
136
|
-
if (CBS_len(&inner_contents) > inner_header_len &&
|
137
|
-
is_primitive_type(inner_tag)) {
|
138
|
-
squash_child_headers = 1;
|
139
|
-
}
|
140
|
-
}
|
141
|
-
|
142
|
-
if (!squash_header) {
|
143
|
-
unsigned out_tag = tag;
|
144
|
-
if (squash_child_headers) {
|
145
|
-
out_tag &= ~CBS_ASN1_CONSTRUCTED;
|
146
|
-
}
|
147
|
-
if (!CBB_add_asn1(out, &out_contents_storage, out_tag)) {
|
148
|
-
return 0;
|
149
|
-
}
|
150
|
-
out_contents = &out_contents_storage;
|
151
|
-
}
|
152
|
-
|
153
|
-
if (!cbs_convert_ber(in, out_contents,
|
154
|
-
squash_child_headers,
|
155
|
-
1 /* looking for eoc */, depth + 1)) {
|
156
|
-
return 0;
|
157
|
-
}
|
158
|
-
if (out_contents != out && !CBB_flush(out)) {
|
159
|
-
return 0;
|
160
|
-
}
|
161
|
-
continue;
|
134
|
+
if (string_tag != 0) {
|
135
|
+
/* This is part of a constructed string. All elements must match
|
136
|
+
* |string_tag| up to the constructed bit and get appended to |out|
|
137
|
+
* without a child element. */
|
138
|
+
if ((tag & ~CBS_ASN1_CONSTRUCTED) != string_tag) {
|
139
|
+
return 0;
|
140
|
+
}
|
141
|
+
out_contents = out;
|
142
|
+
} else {
|
143
|
+
unsigned out_tag = tag;
|
144
|
+
if ((tag & CBS_ASN1_CONSTRUCTED) && is_string_type(tag)) {
|
145
|
+
/* If a constructed string, clear the constructed bit and inform
|
146
|
+
* children to concatenate bodies. */
|
147
|
+
out_tag &= ~CBS_ASN1_CONSTRUCTED;
|
148
|
+
child_string_tag = out_tag;
|
149
|
+
}
|
150
|
+
if (!CBB_add_asn1(out, &out_contents_storage, out_tag)) {
|
151
|
+
return 0;
|
162
152
|
}
|
153
|
+
out_contents = &out_contents_storage;
|
163
154
|
}
|
164
155
|
|
165
|
-
if (
|
166
|
-
|
156
|
+
if (CBS_len(&contents) == header_len && header_len > 0 &&
|
157
|
+
CBS_data(&contents)[header_len - 1] == 0x80) {
|
158
|
+
/* This is an indefinite length element. */
|
159
|
+
if (!cbs_convert_ber(in, out_contents, child_string_tag,
|
160
|
+
1 /* looking for eoc */, depth + 1) ||
|
161
|
+
!CBB_flush(out)) {
|
167
162
|
return 0;
|
168
163
|
}
|
169
|
-
|
164
|
+
continue;
|
170
165
|
}
|
171
166
|
|
172
167
|
if (!CBS_skip(&contents, header_len)) {
|
@@ -174,18 +169,20 @@ static int cbs_convert_ber(CBS *in, CBB *out, char squash_header,
|
|
174
169
|
}
|
175
170
|
|
176
171
|
if (tag & CBS_ASN1_CONSTRUCTED) {
|
177
|
-
|
172
|
+
/* Recurse into children. */
|
173
|
+
if (!cbs_convert_ber(&contents, out_contents, child_string_tag,
|
178
174
|
0 /* not looking for eoc */, depth + 1)) {
|
179
175
|
return 0;
|
180
176
|
}
|
181
177
|
} else {
|
178
|
+
/* Copy primitive contents as-is. */
|
182
179
|
if (!CBB_add_bytes(out_contents, CBS_data(&contents),
|
183
180
|
CBS_len(&contents))) {
|
184
181
|
return 0;
|
185
182
|
}
|
186
183
|
}
|
187
184
|
|
188
|
-
if (
|
185
|
+
if (!CBB_flush(out)) {
|
189
186
|
return 0;
|
190
187
|
}
|
191
188
|
}
|
@@ -209,13 +206,57 @@ int CBS_asn1_ber_to_der(CBS *in, uint8_t **out, size_t *out_len) {
|
|
209
206
|
return 1;
|
210
207
|
}
|
211
208
|
|
212
|
-
if (!CBB_init(&cbb, CBS_len(in))
|
213
|
-
|
214
|
-
|
215
|
-
if (!cbs_convert_ber(in, &cbb, 0, 0, 0)) {
|
209
|
+
if (!CBB_init(&cbb, CBS_len(in)) ||
|
210
|
+
!cbs_convert_ber(in, &cbb, 0, 0, 0) ||
|
211
|
+
!CBB_finish(&cbb, out, out_len)) {
|
216
212
|
CBB_cleanup(&cbb);
|
217
213
|
return 0;
|
218
214
|
}
|
219
215
|
|
220
|
-
return
|
216
|
+
return 1;
|
217
|
+
}
|
218
|
+
|
219
|
+
int CBS_get_asn1_implicit_string(CBS *in, CBS *out, uint8_t **out_storage,
|
220
|
+
unsigned outer_tag, unsigned inner_tag) {
|
221
|
+
assert(!(outer_tag & CBS_ASN1_CONSTRUCTED));
|
222
|
+
assert(!(inner_tag & CBS_ASN1_CONSTRUCTED));
|
223
|
+
assert(is_string_type(inner_tag));
|
224
|
+
|
225
|
+
if (CBS_peek_asn1_tag(in, outer_tag)) {
|
226
|
+
/* Normal implicitly-tagged string. */
|
227
|
+
*out_storage = NULL;
|
228
|
+
return CBS_get_asn1(in, out, outer_tag);
|
229
|
+
}
|
230
|
+
|
231
|
+
/* Otherwise, try to parse an implicitly-tagged constructed string.
|
232
|
+
* |CBS_asn1_ber_to_der| is assumed to have run, so only allow one level deep
|
233
|
+
* of nesting. */
|
234
|
+
CBB result;
|
235
|
+
CBS child;
|
236
|
+
if (!CBB_init(&result, CBS_len(in)) ||
|
237
|
+
!CBS_get_asn1(in, &child, outer_tag | CBS_ASN1_CONSTRUCTED)) {
|
238
|
+
goto err;
|
239
|
+
}
|
240
|
+
|
241
|
+
while (CBS_len(&child) > 0) {
|
242
|
+
CBS chunk;
|
243
|
+
if (!CBS_get_asn1(&child, &chunk, inner_tag) ||
|
244
|
+
!CBB_add_bytes(&result, CBS_data(&chunk), CBS_len(&chunk))) {
|
245
|
+
goto err;
|
246
|
+
}
|
247
|
+
}
|
248
|
+
|
249
|
+
uint8_t *data;
|
250
|
+
size_t len;
|
251
|
+
if (!CBB_finish(&result, &data, &len)) {
|
252
|
+
goto err;
|
253
|
+
}
|
254
|
+
|
255
|
+
CBS_init(out, data, len);
|
256
|
+
*out_storage = data;
|
257
|
+
return 1;
|
258
|
+
|
259
|
+
err:
|
260
|
+
CBB_cleanup(&result);
|
261
|
+
return 0;
|
221
262
|
}
|