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
@@ -84,8 +84,8 @@ void CBB_cleanup(CBB *cbb) {
|
|
84
84
|
cbb->base = NULL;
|
85
85
|
}
|
86
86
|
|
87
|
-
static int
|
88
|
-
|
87
|
+
static int cbb_buffer_reserve(struct cbb_buffer_st *base, uint8_t **out,
|
88
|
+
size_t len) {
|
89
89
|
size_t newlen;
|
90
90
|
|
91
91
|
if (base == NULL) {
|
@@ -121,7 +121,17 @@ static int cbb_buffer_add(struct cbb_buffer_st *base, uint8_t **out,
|
|
121
121
|
if (out) {
|
122
122
|
*out = base->buf + base->len;
|
123
123
|
}
|
124
|
-
|
124
|
+
|
125
|
+
return 1;
|
126
|
+
}
|
127
|
+
|
128
|
+
static int cbb_buffer_add(struct cbb_buffer_st *base, uint8_t **out,
|
129
|
+
size_t len) {
|
130
|
+
if (!cbb_buffer_reserve(base, out, len)) {
|
131
|
+
return 0;
|
132
|
+
}
|
133
|
+
/* This will not overflow or |cbb_buffer_reserve| would have failed. */
|
134
|
+
base->len += len;
|
125
135
|
return 1;
|
126
136
|
}
|
127
137
|
|
@@ -251,6 +261,11 @@ int CBB_flush(CBB *cbb) {
|
|
251
261
|
return 1;
|
252
262
|
}
|
253
263
|
|
264
|
+
const uint8_t *CBB_data(const CBB *cbb) {
|
265
|
+
assert(cbb->child == NULL);
|
266
|
+
return cbb->base->buf + cbb->offset + cbb->pending_len_len;
|
267
|
+
}
|
268
|
+
|
254
269
|
size_t CBB_len(const CBB *cbb) {
|
255
270
|
assert(cbb->child == NULL);
|
256
271
|
assert(cbb->offset + cbb->pending_len_len <= cbb->base->len);
|
@@ -339,6 +354,25 @@ int CBB_add_space(CBB *cbb, uint8_t **out_data, size_t len) {
|
|
339
354
|
return 1;
|
340
355
|
}
|
341
356
|
|
357
|
+
int CBB_reserve(CBB *cbb, uint8_t **out_data, size_t len) {
|
358
|
+
if (!CBB_flush(cbb) ||
|
359
|
+
!cbb_buffer_reserve(cbb->base, out_data, len)) {
|
360
|
+
return 0;
|
361
|
+
}
|
362
|
+
return 1;
|
363
|
+
}
|
364
|
+
|
365
|
+
int CBB_did_write(CBB *cbb, size_t len) {
|
366
|
+
size_t newlen = cbb->base->len + len;
|
367
|
+
if (cbb->child != NULL ||
|
368
|
+
newlen < cbb->base->len ||
|
369
|
+
newlen > cbb->base->cap) {
|
370
|
+
return 0;
|
371
|
+
}
|
372
|
+
cbb->base->len = newlen;
|
373
|
+
return 1;
|
374
|
+
}
|
375
|
+
|
342
376
|
int CBB_add_u8(CBB *cbb, uint8_t value) {
|
343
377
|
if (!CBB_flush(cbb)) {
|
344
378
|
return 0;
|
@@ -22,22 +22,51 @@ extern "C" {
|
|
22
22
|
#endif
|
23
23
|
|
24
24
|
|
25
|
-
/* CBS_asn1_ber_to_der reads
|
26
|
-
* indefinite-length elements then it
|
27
|
-
* and sets |*out| and |*out_length| to describe a malloced buffer
|
28
|
-
* the DER data. Additionally, |*in| will be advanced over the
|
25
|
+
/* CBS_asn1_ber_to_der reads a BER element from |in|. If it finds
|
26
|
+
* indefinite-length elements or constructed strings then it converts the BER
|
27
|
+
* data to DER and sets |*out| and |*out_length| to describe a malloced buffer
|
28
|
+
* containing the DER data. Additionally, |*in| will be advanced over the BER
|
29
|
+
* element.
|
29
30
|
*
|
30
|
-
* If it doesn't find any indefinite-length elements
|
31
|
-
* NULL and |*in| is unmodified.
|
31
|
+
* If it doesn't find any indefinite-length elements or constructed strings then
|
32
|
+
* it sets |*out| to NULL and |*in| is unmodified.
|
32
33
|
*
|
33
|
-
*
|
34
|
-
* not
|
35
|
-
*
|
36
|
-
*
|
34
|
+
* This function should successfully process any valid BER input, however it
|
35
|
+
* will not convert all of BER's deviations from DER. BER is ambiguous between
|
36
|
+
* implicitly-tagged SEQUENCEs of strings and implicitly-tagged constructed
|
37
|
+
* strings. Implicitly-tagged strings must be parsed with
|
38
|
+
* |CBS_get_ber_implicitly_tagged_string| instead of |CBS_get_asn1|. The caller
|
39
|
+
* must also account for BER variations in the contents of a primitive.
|
37
40
|
*
|
38
41
|
* It returns one on success and zero otherwise. */
|
39
42
|
OPENSSL_EXPORT int CBS_asn1_ber_to_der(CBS *in, uint8_t **out, size_t *out_len);
|
40
43
|
|
44
|
+
/* CBS_get_asn1_implicit_string parses a BER string of primitive type
|
45
|
+
* |inner_tag| implicitly-tagged with |outer_tag|. It sets |out| to the
|
46
|
+
* contents. If concatenation was needed, it sets |*out_storage| to a buffer
|
47
|
+
* which the caller must release with |OPENSSL_free|. Otherwise, it sets
|
48
|
+
* |*out_storage| to NULL.
|
49
|
+
*
|
50
|
+
* This function does not parse all of BER. It requires the string be
|
51
|
+
* definite-length. Constructed strings are allowed, but all children of the
|
52
|
+
* outermost element must be primitive. The caller should use
|
53
|
+
* |CBS_asn1_ber_to_der| before running this function.
|
54
|
+
*
|
55
|
+
* It returns one on success and zero otherwise. */
|
56
|
+
OPENSSL_EXPORT int CBS_get_asn1_implicit_string(CBS *in, CBS *out,
|
57
|
+
uint8_t **out_storage,
|
58
|
+
unsigned outer_tag,
|
59
|
+
unsigned inner_tag);
|
60
|
+
|
61
|
+
/* CBB_finish_i2d calls |CBB_finish| on |cbb| which must have been initialized
|
62
|
+
* with |CBB_init|. If |outp| is not NULL then the result is written to |*outp|
|
63
|
+
* and |*outp| is advanced just past the output. It returns the number of bytes
|
64
|
+
* in the result, whether written or not, or a negative value on error. On
|
65
|
+
* error, it calls |CBB_cleanup| on |cbb|.
|
66
|
+
*
|
67
|
+
* This function may be used to help implement legacy i2d ASN.1 functions. */
|
68
|
+
int CBB_finish_i2d(CBB *cbb, uint8_t **outp);
|
69
|
+
|
41
70
|
|
42
71
|
#if defined(__cplusplus)
|
43
72
|
} /* extern C */
|
@@ -25,6 +25,9 @@
|
|
25
25
|
|
26
26
|
#include <openssl/chacha.h>
|
27
27
|
|
28
|
+
#include "../internal.h"
|
29
|
+
|
30
|
+
|
28
31
|
#if defined(ASM_GEN) || \
|
29
32
|
!defined(OPENSSL_WINDOWS) && \
|
30
33
|
(defined(OPENSSL_X86_64) || defined(OPENSSL_X86)) && defined(__SSE2__)
|
@@ -80,8 +83,8 @@ typedef unsigned vec __attribute__((vector_size(16)));
|
|
80
83
|
#define VBPI 3
|
81
84
|
#endif
|
82
85
|
#define ONE (vec) _mm_set_epi32(0, 0, 0, 1)
|
83
|
-
#define LOAD(m) (vec) _mm_loadu_si128((__m128i *)(m))
|
84
|
-
#define LOAD_ALIGNED(m) (vec) _mm_load_si128((__m128i *)(m))
|
86
|
+
#define LOAD(m) (vec) _mm_loadu_si128((const __m128i *)(m))
|
87
|
+
#define LOAD_ALIGNED(m) (vec) _mm_load_si128((const __m128i *)(m))
|
85
88
|
#define STORE(m, r) _mm_storeu_si128((__m128i *)(m), (__m128i)(r))
|
86
89
|
#define ROTV1(x) (vec) _mm_shuffle_epi32((__m128i)x, _MM_SHUFFLE(0, 3, 2, 1))
|
87
90
|
#define ROTV2(x) (vec) _mm_shuffle_epi32((__m128i)x, _MM_SHUFFLE(1, 0, 3, 2))
|
@@ -157,26 +160,28 @@ void CRYPTO_chacha_20(
|
|
157
160
|
const uint8_t nonce[12],
|
158
161
|
uint32_t counter)
|
159
162
|
{
|
160
|
-
unsigned iters, i
|
163
|
+
unsigned iters, i;
|
164
|
+
unsigned *op = (unsigned *)out;
|
165
|
+
const unsigned *ip = (const unsigned *)in;
|
166
|
+
const unsigned *kp = (const unsigned *)key;
|
161
167
|
#if defined(__ARM_NEON__)
|
162
168
|
uint32_t np[3];
|
163
|
-
uint8_t alignment_buffer[16]
|
169
|
+
alignas(16) uint8_t alignment_buffer[16];
|
164
170
|
#endif
|
165
171
|
vec s0, s1, s2, s3;
|
166
|
-
|
172
|
+
alignas(16) unsigned chacha_const[] =
|
167
173
|
{0x61707865,0x3320646E,0x79622D32,0x6B206574};
|
168
|
-
kp = (unsigned *)key;
|
169
174
|
#if defined(__ARM_NEON__)
|
170
175
|
memcpy(np, nonce, 12);
|
171
176
|
#endif
|
172
177
|
s0 = LOAD_ALIGNED(chacha_const);
|
173
|
-
s1 = LOAD(&((vec*)kp)[0]);
|
174
|
-
s2 = LOAD(&((vec*)kp)[1]);
|
178
|
+
s1 = LOAD(&((const vec*)kp)[0]);
|
179
|
+
s2 = LOAD(&((const vec*)kp)[1]);
|
175
180
|
s3 = (vec){
|
176
181
|
counter,
|
177
|
-
((uint32_t*)nonce)[0],
|
178
|
-
((uint32_t*)nonce)[1],
|
179
|
-
((uint32_t*)nonce)[2]
|
182
|
+
((const uint32_t*)nonce)[0],
|
183
|
+
((const uint32_t*)nonce)[1],
|
184
|
+
((const uint32_t*)nonce)[2]
|
180
185
|
};
|
181
186
|
|
182
187
|
for (iters = 0; iters < inlen/(BPI*64); iters++)
|
@@ -286,7 +291,7 @@ void CRYPTO_chacha_20(
|
|
286
291
|
inlen = inlen % 64;
|
287
292
|
if (inlen)
|
288
293
|
{
|
289
|
-
|
294
|
+
alignas(16) vec buf[4];
|
290
295
|
vec v0,v1,v2,v3;
|
291
296
|
v0 = s0; v1 = s1; v2 = s2; v3 = s3;
|
292
297
|
for (i = CHACHA_RNDS/2; i; i--)
|
@@ -316,7 +321,7 @@ void CRYPTO_chacha_20(
|
|
316
321
|
buf[0] = REVV_BE(v0 + s0);
|
317
322
|
|
318
323
|
for (i=inlen & ~15; i<inlen; i++)
|
319
|
-
((char *)op)[i] = ((char *)ip)[i] ^ ((char *)buf)[i];
|
324
|
+
((char *)op)[i] = ((const char *)ip)[i] ^ ((const char *)buf)[i];
|
320
325
|
}
|
321
326
|
}
|
322
327
|
|
@@ -384,7 +384,7 @@ static int aes_ecb_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
|
|
384
384
|
|
385
385
|
static int aes_ctr_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
|
386
386
|
size_t len) {
|
387
|
-
unsigned
|
387
|
+
unsigned num = (unsigned)ctx->num;
|
388
388
|
EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data;
|
389
389
|
|
390
390
|
if (dat->stream.ctr) {
|
@@ -394,7 +394,7 @@ static int aes_ctr_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
|
|
394
394
|
CRYPTO_ctr128_encrypt(in, out, len, &dat->ks, ctx->iv, ctx->buf, &num,
|
395
395
|
dat->block);
|
396
396
|
}
|
397
|
-
ctx->num = (
|
397
|
+
ctx->num = (int)num;
|
398
398
|
return 1;
|
399
399
|
}
|
400
400
|
|
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <openssl/poly1305.h>
|
24
24
|
|
25
25
|
#include "internal.h"
|
26
|
+
#include "../internal.h"
|
26
27
|
|
27
28
|
|
28
29
|
#define POLY1305_TAG_LEN 16
|
@@ -79,12 +80,6 @@ static void poly1305_update_length(poly1305_state *poly1305, size_t data_len) {
|
|
79
80
|
CRYPTO_poly1305_update(poly1305, length_bytes, sizeof(length_bytes));
|
80
81
|
}
|
81
82
|
|
82
|
-
#if defined(__arm__)
|
83
|
-
#define ALIGNED __attribute__((aligned(16)))
|
84
|
-
#else
|
85
|
-
#define ALIGNED
|
86
|
-
#endif
|
87
|
-
|
88
83
|
typedef void (*aead_poly1305_update)(poly1305_state *ctx, const uint8_t *ad,
|
89
84
|
size_t ad_len, const uint8_t *ciphertext,
|
90
85
|
size_t ciphertext_len);
|
@@ -98,7 +93,7 @@ static void aead_poly1305(aead_poly1305_update update,
|
|
98
93
|
const uint8_t nonce[12], const uint8_t *ad,
|
99
94
|
size_t ad_len, const uint8_t *ciphertext,
|
100
95
|
size_t ciphertext_len) {
|
101
|
-
uint8_t poly1305_key[32]
|
96
|
+
alignas(16) uint8_t poly1305_key[32];
|
102
97
|
memset(poly1305_key, 0, sizeof(poly1305_key));
|
103
98
|
CRYPTO_chacha_20(poly1305_key, poly1305_key, sizeof(poly1305_key),
|
104
99
|
c20_ctx->key, nonce, 0);
|
@@ -139,7 +134,7 @@ static int seal_impl(aead_poly1305_update poly1305_update,
|
|
139
134
|
|
140
135
|
CRYPTO_chacha_20(out, in, in_len, c20_ctx->key, nonce, 1);
|
141
136
|
|
142
|
-
uint8_t tag[POLY1305_TAG_LEN]
|
137
|
+
alignas(16) uint8_t tag[POLY1305_TAG_LEN];
|
143
138
|
aead_poly1305(poly1305_update, tag, c20_ctx, nonce, ad, ad_len, out, in_len);
|
144
139
|
|
145
140
|
memcpy(out + in_len, tag, c20_ctx->tag_len);
|
@@ -173,7 +168,7 @@ static int open_impl(aead_poly1305_update poly1305_update,
|
|
173
168
|
}
|
174
169
|
|
175
170
|
plaintext_len = in_len - c20_ctx->tag_len;
|
176
|
-
uint8_t tag[POLY1305_TAG_LEN]
|
171
|
+
alignas(16) uint8_t tag[POLY1305_TAG_LEN];
|
177
172
|
aead_poly1305(poly1305_update, tag, c20_ctx, nonce, ad, ad_len, in,
|
178
173
|
plaintext_len);
|
179
174
|
if (CRYPTO_memcmp(tag, in + plaintext_len, c20_ctx->tag_len) != 0) {
|
@@ -146,7 +146,6 @@ void EVP_tls_cbc_copy_mac(uint8_t *out, unsigned md_size,
|
|
146
146
|
* the MAC's position can only vary by 255 bytes. */
|
147
147
|
unsigned scan_start = 0;
|
148
148
|
unsigned i, j;
|
149
|
-
unsigned div_spoiler;
|
150
149
|
unsigned rotate_offset;
|
151
150
|
|
152
151
|
assert(orig_len >= in_len);
|
@@ -161,16 +160,46 @@ void EVP_tls_cbc_copy_mac(uint8_t *out, unsigned md_size,
|
|
161
160
|
if (orig_len > md_size + 255 + 1) {
|
162
161
|
scan_start = orig_len - (md_size + 255 + 1);
|
163
162
|
}
|
164
|
-
|
165
|
-
|
166
|
-
*
|
163
|
+
|
164
|
+
/* Ideally the next statement would be:
|
165
|
+
*
|
166
|
+
* rotate_offset = (mac_start - scan_start) % md_size;
|
167
167
|
*
|
168
|
-
*
|
169
|
-
*
|
170
|
-
*
|
171
|
-
|
172
|
-
|
173
|
-
|
168
|
+
* However, division is not a constant-time operation (at least on Intel
|
169
|
+
* chips). Thus we enumerate the possible values of md_size and handle each
|
170
|
+
* separately. The value of |md_size| is public information (it's determined
|
171
|
+
* by the cipher suite in the ServerHello) so our timing can vary based on
|
172
|
+
* its value. */
|
173
|
+
|
174
|
+
rotate_offset = mac_start - scan_start;
|
175
|
+
/* rotate_offset can be, at most, 255 (bytes of padding) + 1 (padding length)
|
176
|
+
* + md_size = 256 + 48 (since SHA-384 is the largest hash) = 304. */
|
177
|
+
assert(rotate_offset <= 304);
|
178
|
+
|
179
|
+
if (md_size == 16) {
|
180
|
+
rotate_offset &= 15;
|
181
|
+
} else if (md_size == 20) {
|
182
|
+
/* 1/20 is approximated as 25/512 and then Barrett reduction is used.
|
183
|
+
* Analytically, this is correct for 0 <= rotate_offset <= 853. */
|
184
|
+
unsigned q = (rotate_offset * 25) >> 9;
|
185
|
+
rotate_offset -= q * 20;
|
186
|
+
rotate_offset -=
|
187
|
+
constant_time_select(constant_time_ge(rotate_offset, 20), 20, 0);
|
188
|
+
} else if (md_size == 32) {
|
189
|
+
rotate_offset &= 31;
|
190
|
+
} else if (md_size == 48) {
|
191
|
+
/* 1/48 is approximated as 10/512 and then Barrett reduction is used.
|
192
|
+
* Analytically, this is correct for 0 <= rotate_offset <= 768. */
|
193
|
+
unsigned q = (rotate_offset * 10) >> 9;
|
194
|
+
rotate_offset -= q * 48;
|
195
|
+
rotate_offset -=
|
196
|
+
constant_time_select(constant_time_ge(rotate_offset, 48), 48, 0);
|
197
|
+
} else {
|
198
|
+
/* This should be impossible therefore this path doesn't run in constant
|
199
|
+
* time. */
|
200
|
+
assert(0);
|
201
|
+
rotate_offset = rotate_offset % md_size;
|
202
|
+
}
|
174
203
|
|
175
204
|
memset(rotated_mac, 0, md_size);
|
176
205
|
for (i = scan_start, j = 0; i < orig_len; i++) {
|
@@ -776,3 +776,12 @@ int CONF_parse_list(const char *list, char sep, int remove_whitespace,
|
|
776
776
|
lstart = p + 1;
|
777
777
|
}
|
778
778
|
}
|
779
|
+
|
780
|
+
int CONF_modules_load_file(CONF_MUST_BE_NULL *filename, const char *appname,
|
781
|
+
unsigned long flags) {
|
782
|
+
return 1;
|
783
|
+
}
|
784
|
+
|
785
|
+
void CONF_modules_free(void) {}
|
786
|
+
|
787
|
+
void OPENSSL_config(CONF_MUST_BE_NULL *config_name) {}
|
@@ -17,8 +17,7 @@
|
|
17
17
|
* public domain but this file has the ISC license just to keep licencing
|
18
18
|
* simple.
|
19
19
|
*
|
20
|
-
* The field functions are shared by Ed25519 and X25519
|
21
|
-
* disabled when |OPENSSL_SMALL| is defined. */
|
20
|
+
* The field functions are shared by Ed25519 and X25519 where possible. */
|
22
21
|
|
23
22
|
#include <openssl/curve25519.h>
|
24
23
|
|
@@ -29,6 +28,8 @@
|
|
29
28
|
#include <openssl/rand.h>
|
30
29
|
#include <openssl/sha.h>
|
31
30
|
|
31
|
+
#include "internal.h"
|
32
|
+
|
32
33
|
|
33
34
|
/* fe means field element. Here the field is \Z/(2^255-19). An element t,
|
34
35
|
* entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77
|
@@ -226,21 +227,6 @@ static void fe_1(fe h) {
|
|
226
227
|
h[0] = 1;
|
227
228
|
}
|
228
229
|
|
229
|
-
/* Replace (f,g) with (g,f) if b == 1;
|
230
|
-
* replace (f,g) with (f,g) if b == 0.
|
231
|
-
*
|
232
|
-
* Preconditions: b in {0,1}. */
|
233
|
-
static void fe_cswap(fe f, fe g, unsigned int b) {
|
234
|
-
b = 0-b;
|
235
|
-
unsigned i;
|
236
|
-
for (i = 0; i < 10; i++) {
|
237
|
-
int32_t x = f[i] ^ g[i];
|
238
|
-
x &= b;
|
239
|
-
f[i] ^= x;
|
240
|
-
g[i] ^= x;
|
241
|
-
}
|
242
|
-
}
|
243
|
-
|
244
230
|
/* h = f + g
|
245
231
|
* Can overlap h with f or g.
|
246
232
|
*
|
@@ -721,73 +707,6 @@ static void fe_invert(fe out, const fe z) {
|
|
721
707
|
fe_mul(out, t1, t0);
|
722
708
|
}
|
723
709
|
|
724
|
-
/* h = f * 121666
|
725
|
-
* Can overlap h with f.
|
726
|
-
*
|
727
|
-
* Preconditions:
|
728
|
-
* |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
|
729
|
-
*
|
730
|
-
* Postconditions:
|
731
|
-
* |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. */
|
732
|
-
static void fe_mul121666(fe h, fe f) {
|
733
|
-
int32_t f0 = f[0];
|
734
|
-
int32_t f1 = f[1];
|
735
|
-
int32_t f2 = f[2];
|
736
|
-
int32_t f3 = f[3];
|
737
|
-
int32_t f4 = f[4];
|
738
|
-
int32_t f5 = f[5];
|
739
|
-
int32_t f6 = f[6];
|
740
|
-
int32_t f7 = f[7];
|
741
|
-
int32_t f8 = f[8];
|
742
|
-
int32_t f9 = f[9];
|
743
|
-
int64_t h0 = f0 * (int64_t) 121666;
|
744
|
-
int64_t h1 = f1 * (int64_t) 121666;
|
745
|
-
int64_t h2 = f2 * (int64_t) 121666;
|
746
|
-
int64_t h3 = f3 * (int64_t) 121666;
|
747
|
-
int64_t h4 = f4 * (int64_t) 121666;
|
748
|
-
int64_t h5 = f5 * (int64_t) 121666;
|
749
|
-
int64_t h6 = f6 * (int64_t) 121666;
|
750
|
-
int64_t h7 = f7 * (int64_t) 121666;
|
751
|
-
int64_t h8 = f8 * (int64_t) 121666;
|
752
|
-
int64_t h9 = f9 * (int64_t) 121666;
|
753
|
-
int64_t carry0;
|
754
|
-
int64_t carry1;
|
755
|
-
int64_t carry2;
|
756
|
-
int64_t carry3;
|
757
|
-
int64_t carry4;
|
758
|
-
int64_t carry5;
|
759
|
-
int64_t carry6;
|
760
|
-
int64_t carry7;
|
761
|
-
int64_t carry8;
|
762
|
-
int64_t carry9;
|
763
|
-
|
764
|
-
carry9 = (h9 + (int64_t) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
|
765
|
-
carry1 = (h1 + (int64_t) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
|
766
|
-
carry3 = (h3 + (int64_t) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
|
767
|
-
carry5 = (h5 + (int64_t) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
|
768
|
-
carry7 = (h7 + (int64_t) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
|
769
|
-
|
770
|
-
carry0 = (h0 + (int64_t) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
|
771
|
-
carry2 = (h2 + (int64_t) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
|
772
|
-
carry4 = (h4 + (int64_t) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
|
773
|
-
carry6 = (h6 + (int64_t) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
|
774
|
-
carry8 = (h8 + (int64_t) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
|
775
|
-
|
776
|
-
h[0] = h0;
|
777
|
-
h[1] = h1;
|
778
|
-
h[2] = h2;
|
779
|
-
h[3] = h3;
|
780
|
-
h[4] = h4;
|
781
|
-
h[5] = h5;
|
782
|
-
h[6] = h6;
|
783
|
-
h[7] = h7;
|
784
|
-
h[8] = h8;
|
785
|
-
h[9] = h9;
|
786
|
-
}
|
787
|
-
|
788
|
-
/* Ed25519 support is disabled when built with |OPENSSL_SMALL|. */
|
789
|
-
#if !defined(OPENSSL_SMALL)
|
790
|
-
|
791
710
|
/* h = -f
|
792
711
|
*
|
793
712
|
* Preconditions:
|
@@ -1130,7 +1049,7 @@ static const fe d = {-10913610, 13857413, -15372611, 6949391, 114729,
|
|
1130
1049
|
static const fe sqrtm1 = {-32595792, -7943725, 9377950, 3500415, 12389472,
|
1131
1050
|
-272473, -25146209, -2005654, 326686, 11406482};
|
1132
1051
|
|
1133
|
-
static int
|
1052
|
+
static int ge_frombytes_vartime(ge_p3 *h, const uint8_t *s) {
|
1134
1053
|
fe u;
|
1135
1054
|
fe v;
|
1136
1055
|
fe v3;
|
@@ -1165,7 +1084,7 @@ static int ge_frombytes_negate_vartime(ge_p3 *h, const uint8_t *s) {
|
|
1165
1084
|
fe_mul(h->X, h->X, sqrtm1);
|
1166
1085
|
}
|
1167
1086
|
|
1168
|
-
if (fe_isnegative(h->X)
|
1087
|
+
if (fe_isnegative(h->X) != (s[31] >> 7)) {
|
1169
1088
|
fe_neg(h->X, h->X);
|
1170
1089
|
}
|
1171
1090
|
|
@@ -1329,20 +1248,17 @@ static void cmov(ge_precomp *t, ge_precomp *u, uint8_t b) {
|
|
1329
1248
|
fe_cmov(t->xy2d, u->xy2d, b);
|
1330
1249
|
}
|
1331
1250
|
|
1332
|
-
#if
|
1251
|
+
#if defined(OPENSSL_SMALL)
|
1333
1252
|
|
1334
|
-
/*
|
1335
|
-
*
|
1336
|
-
* want to keep the size down. This block of code replaces the standard
|
1337
|
-
* base-point table with a much smaller one. The standard table is 30,720 bytes
|
1338
|
-
* while this one is just 960.
|
1253
|
+
/* This block of code replaces the standard base-point table with a much smaller
|
1254
|
+
* one. The standard table is 30,720 bytes while this one is just 960.
|
1339
1255
|
*
|
1340
1256
|
* This table contains 15 pairs of group elements, (x, y), where each field
|
1341
1257
|
* element is serialised with |fe_tobytes|. If |i| is the index of the group
|
1342
1258
|
* element then consider i+1 as a four-bit number: (i₀, i₁, i₂, i₃) (where i₀
|
1343
1259
|
* is the most significant bit). The value of the group element is then:
|
1344
1260
|
* (i₀×2^192 + i₁×2^128 + i₂×2^64 + i₃)G, where G is the generator. */
|
1345
|
-
static const uint8_t
|
1261
|
+
static const uint8_t k25519SmallPrecomp[15 * 2 * 32] = {
|
1346
1262
|
0x1a, 0xd5, 0x25, 0x8f, 0x60, 0x2d, 0x56, 0xc9, 0xb2, 0xa7, 0x25, 0x95,
|
1347
1263
|
0x60, 0xc7, 0x2c, 0x69, 0x5c, 0xdc, 0xd6, 0xfd, 0x31, 0xe2, 0xa4, 0xc0,
|
1348
1264
|
0xfe, 0x53, 0x6e, 0xcd, 0xd3, 0x36, 0x69, 0x21, 0x58, 0x66, 0x66, 0x66,
|
@@ -1426,12 +1342,13 @@ static const uint8_t kSmallPrecomp[15 * 2 * 32] = {
|
|
1426
1342
|
};
|
1427
1343
|
|
1428
1344
|
static void ge_scalarmult_base(ge_p3 *h, const uint8_t a[32]) {
|
1429
|
-
/*
|
1345
|
+
/* k25519SmallPrecomp is first expanded into matching |ge_precomp|
|
1346
|
+
* elements. */
|
1430
1347
|
ge_precomp multiples[15];
|
1431
1348
|
|
1432
1349
|
unsigned i;
|
1433
1350
|
for (i = 0; i < 15; i++) {
|
1434
|
-
const uint8_t *bytes = &
|
1351
|
+
const uint8_t *bytes = &k25519SmallPrecomp[i*(2 * 32)];
|
1435
1352
|
fe x, y;
|
1436
1353
|
fe_frombytes(x, bytes);
|
1437
1354
|
fe_frombytes(y, bytes + 32);
|
@@ -1443,7 +1360,7 @@ static void ge_scalarmult_base(ge_p3 *h, const uint8_t a[32]) {
|
|
1443
1360
|
fe_mul(out->xy2d, out->xy2d, d2);
|
1444
1361
|
}
|
1445
1362
|
|
1446
|
-
/* See the comment above |
|
1363
|
+
/* See the comment above |k25519SmallPrecomp| about the structure of the
|
1447
1364
|
* precomputed elements. This loop does 64 additions and 64 doublings to
|
1448
1365
|
* calculate the result. */
|
1449
1366
|
ge_p3_0(h);
|
@@ -1477,8 +1394,8 @@ static void ge_scalarmult_base(ge_p3 *h, const uint8_t a[32]) {
|
|
1477
1394
|
|
1478
1395
|
#else
|
1479
1396
|
|
1480
|
-
/*
|
1481
|
-
static ge_precomp
|
1397
|
+
/* k25519Precomp[i][j] = (j+1)*256^i*B */
|
1398
|
+
static ge_precomp k25519Precomp[32][8] = {
|
1482
1399
|
{
|
1483
1400
|
{
|
1484
1401
|
{25967493, -14356035, 29566456, 3660896, -12694345, 4014787,
|
@@ -3605,14 +3522,14 @@ static void table_select(ge_precomp *t, int pos, signed char b) {
|
|
3605
3522
|
uint8_t babs = b - (((-bnegative) & b) << 1);
|
3606
3523
|
|
3607
3524
|
ge_precomp_0(t);
|
3608
|
-
cmov(t, &
|
3609
|
-
cmov(t, &
|
3610
|
-
cmov(t, &
|
3611
|
-
cmov(t, &
|
3612
|
-
cmov(t, &
|
3613
|
-
cmov(t, &
|
3614
|
-
cmov(t, &
|
3615
|
-
cmov(t, &
|
3525
|
+
cmov(t, &k25519Precomp[pos][0], equal(babs, 1));
|
3526
|
+
cmov(t, &k25519Precomp[pos][1], equal(babs, 2));
|
3527
|
+
cmov(t, &k25519Precomp[pos][2], equal(babs, 3));
|
3528
|
+
cmov(t, &k25519Precomp[pos][3], equal(babs, 4));
|
3529
|
+
cmov(t, &k25519Precomp[pos][4], equal(babs, 5));
|
3530
|
+
cmov(t, &k25519Precomp[pos][5], equal(babs, 6));
|
3531
|
+
cmov(t, &k25519Precomp[pos][6], equal(babs, 7));
|
3532
|
+
cmov(t, &k25519Precomp[pos][7], equal(babs, 8));
|
3616
3533
|
fe_copy(minust.yplusx, t->yminusx);
|
3617
3534
|
fe_copy(minust.yminusx, t->yplusx);
|
3618
3535
|
fe_neg(minust.xy2d, t->xy2d);
|
@@ -4738,10 +4655,13 @@ int ED25519_verify(const uint8_t *message, size_t message_len,
|
|
4738
4655
|
const uint8_t signature[64], const uint8_t public_key[32]) {
|
4739
4656
|
ge_p3 A;
|
4740
4657
|
if ((signature[63] & 224) != 0 ||
|
4741
|
-
|
4658
|
+
ge_frombytes_vartime(&A, public_key) != 0) {
|
4742
4659
|
return 0;
|
4743
4660
|
}
|
4744
4661
|
|
4662
|
+
fe_neg(A.X, A.X);
|
4663
|
+
fe_neg(A.T, A.T);
|
4664
|
+
|
4745
4665
|
uint8_t pkcopy[32];
|
4746
4666
|
memcpy(pkcopy, public_key, 32);
|
4747
4667
|
uint8_t rcopy[32];
|
@@ -4768,7 +4688,94 @@ int ED25519_verify(const uint8_t *message, size_t message_len,
|
|
4768
4688
|
return CRYPTO_memcmp(rcheck, rcopy, sizeof(rcheck)) == 0;
|
4769
4689
|
}
|
4770
4690
|
|
4771
|
-
|
4691
|
+
|
4692
|
+
#if defined(BORINGSSL_X25519_X86_64)
|
4693
|
+
|
4694
|
+
static void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32],
|
4695
|
+
const uint8_t point[32]) {
|
4696
|
+
x25519_x86_64(out, scalar, point);
|
4697
|
+
}
|
4698
|
+
|
4699
|
+
#else
|
4700
|
+
|
4701
|
+
/* Replace (f,g) with (g,f) if b == 1;
|
4702
|
+
* replace (f,g) with (f,g) if b == 0.
|
4703
|
+
*
|
4704
|
+
* Preconditions: b in {0,1}. */
|
4705
|
+
static void fe_cswap(fe f, fe g, unsigned int b) {
|
4706
|
+
b = 0-b;
|
4707
|
+
unsigned i;
|
4708
|
+
for (i = 0; i < 10; i++) {
|
4709
|
+
int32_t x = f[i] ^ g[i];
|
4710
|
+
x &= b;
|
4711
|
+
f[i] ^= x;
|
4712
|
+
g[i] ^= x;
|
4713
|
+
}
|
4714
|
+
}
|
4715
|
+
|
4716
|
+
/* h = f * 121666
|
4717
|
+
* Can overlap h with f.
|
4718
|
+
*
|
4719
|
+
* Preconditions:
|
4720
|
+
* |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
|
4721
|
+
*
|
4722
|
+
* Postconditions:
|
4723
|
+
* |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. */
|
4724
|
+
static void fe_mul121666(fe h, fe f) {
|
4725
|
+
int32_t f0 = f[0];
|
4726
|
+
int32_t f1 = f[1];
|
4727
|
+
int32_t f2 = f[2];
|
4728
|
+
int32_t f3 = f[3];
|
4729
|
+
int32_t f4 = f[4];
|
4730
|
+
int32_t f5 = f[5];
|
4731
|
+
int32_t f6 = f[6];
|
4732
|
+
int32_t f7 = f[7];
|
4733
|
+
int32_t f8 = f[8];
|
4734
|
+
int32_t f9 = f[9];
|
4735
|
+
int64_t h0 = f0 * (int64_t) 121666;
|
4736
|
+
int64_t h1 = f1 * (int64_t) 121666;
|
4737
|
+
int64_t h2 = f2 * (int64_t) 121666;
|
4738
|
+
int64_t h3 = f3 * (int64_t) 121666;
|
4739
|
+
int64_t h4 = f4 * (int64_t) 121666;
|
4740
|
+
int64_t h5 = f5 * (int64_t) 121666;
|
4741
|
+
int64_t h6 = f6 * (int64_t) 121666;
|
4742
|
+
int64_t h7 = f7 * (int64_t) 121666;
|
4743
|
+
int64_t h8 = f8 * (int64_t) 121666;
|
4744
|
+
int64_t h9 = f9 * (int64_t) 121666;
|
4745
|
+
int64_t carry0;
|
4746
|
+
int64_t carry1;
|
4747
|
+
int64_t carry2;
|
4748
|
+
int64_t carry3;
|
4749
|
+
int64_t carry4;
|
4750
|
+
int64_t carry5;
|
4751
|
+
int64_t carry6;
|
4752
|
+
int64_t carry7;
|
4753
|
+
int64_t carry8;
|
4754
|
+
int64_t carry9;
|
4755
|
+
|
4756
|
+
carry9 = (h9 + (int64_t) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
|
4757
|
+
carry1 = (h1 + (int64_t) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
|
4758
|
+
carry3 = (h3 + (int64_t) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
|
4759
|
+
carry5 = (h5 + (int64_t) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
|
4760
|
+
carry7 = (h7 + (int64_t) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
|
4761
|
+
|
4762
|
+
carry0 = (h0 + (int64_t) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
|
4763
|
+
carry2 = (h2 + (int64_t) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
|
4764
|
+
carry4 = (h4 + (int64_t) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
|
4765
|
+
carry6 = (h6 + (int64_t) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
|
4766
|
+
carry8 = (h8 + (int64_t) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
|
4767
|
+
|
4768
|
+
h[0] = h0;
|
4769
|
+
h[1] = h1;
|
4770
|
+
h[2] = h2;
|
4771
|
+
h[3] = h3;
|
4772
|
+
h[4] = h4;
|
4773
|
+
h[5] = h5;
|
4774
|
+
h[6] = h6;
|
4775
|
+
h[7] = h7;
|
4776
|
+
h[8] = h8;
|
4777
|
+
h[9] = h9;
|
4778
|
+
}
|
4772
4779
|
|
4773
4780
|
static void x25519_scalar_mult_generic(uint8_t out[32],
|
4774
4781
|
const uint8_t scalar[32],
|
@@ -4821,15 +4828,9 @@ static void x25519_scalar_mult_generic(uint8_t out[32],
|
|
4821
4828
|
fe_tobytes(out, x2);
|
4822
4829
|
}
|
4823
4830
|
|
4824
|
-
#if defined(OPENSSL_ARM)
|
4825
|
-
/* x25519_NEON is defined in asm/x25519-arm.S. */
|
4826
|
-
void x25519_NEON(uint8_t out[32], const uint8_t scalar[32],
|
4827
|
-
const uint8_t point[32]);
|
4828
|
-
#endif
|
4829
|
-
|
4830
4831
|
static void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32],
|
4831
4832
|
const uint8_t point[32]) {
|
4832
|
-
#if defined(
|
4833
|
+
#if defined(BORINGSSL_X25519_NEON)
|
4833
4834
|
if (CRYPTO_is_NEON_capable()) {
|
4834
4835
|
x25519_NEON(out, scalar, point);
|
4835
4836
|
return;
|
@@ -4839,6 +4840,9 @@ static void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32],
|
|
4839
4840
|
x25519_scalar_mult_generic(out, scalar, point);
|
4840
4841
|
}
|
4841
4842
|
|
4843
|
+
#endif /* BORINGSSL_X25519_X86_64 */
|
4844
|
+
|
4845
|
+
|
4842
4846
|
void X25519_keypair(uint8_t out_public_value[32], uint8_t out_private_key[32]) {
|
4843
4847
|
RAND_bytes(out_private_key, 32);
|
4844
4848
|
X25519_public_from_private(out_public_value, out_private_key);
|
@@ -4852,10 +4856,11 @@ int X25519(uint8_t out_shared_key[32], const uint8_t private_key[32],
|
|
4852
4856
|
return CRYPTO_memcmp(kZeros, out_shared_key, 32) != 0;
|
4853
4857
|
}
|
4854
4858
|
|
4855
|
-
#if defined(
|
4859
|
+
#if defined(BORINGSSL_X25519_X86_64)
|
4856
4860
|
|
4857
|
-
/* When |
|
4858
|
-
* Montgomery ladder because
|
4861
|
+
/* When |BORINGSSL_X25519_X86_64| is set, base point multiplication is done with
|
4862
|
+
* the Montgomery ladder because it's faster. Otherwise it's done using the
|
4863
|
+
* Ed25519 tables. */
|
4859
4864
|
|
4860
4865
|
void X25519_public_from_private(uint8_t out_public_value[32],
|
4861
4866
|
const uint8_t private_key[32]) {
|
@@ -4867,7 +4872,7 @@ void X25519_public_from_private(uint8_t out_public_value[32],
|
|
4867
4872
|
|
4868
4873
|
void X25519_public_from_private(uint8_t out_public_value[32],
|
4869
4874
|
const uint8_t private_key[32]) {
|
4870
|
-
#if defined(
|
4875
|
+
#if defined(BORINGSSL_X25519_NEON)
|
4871
4876
|
if (CRYPTO_is_NEON_capable()) {
|
4872
4877
|
static const uint8_t kMongomeryBasePoint[32] = {9};
|
4873
4878
|
x25519_NEON(out_public_value, private_key, kMongomeryBasePoint);
|
@@ -4894,4 +4899,4 @@ void X25519_public_from_private(uint8_t out_public_value[32],
|
|
4894
4899
|
fe_tobytes(out_public_value, zplusy);
|
4895
4900
|
}
|
4896
4901
|
|
4897
|
-
#endif
|
4902
|
+
#endif /* BORINGSSL_X25519_X86_64 */
|