grpc 1.4.5 → 1.6.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +1235 -1100
- data/etc/roots.pem +0 -412
- data/include/grpc/byte_buffer.h +10 -25
- data/include/grpc/byte_buffer_reader.h +10 -25
- data/include/grpc/census.h +10 -25
- data/include/grpc/compression.h +10 -25
- data/include/grpc/grpc.h +15 -26
- data/include/grpc/grpc_cronet.h +10 -25
- data/include/grpc/grpc_posix.h +10 -25
- data/include/grpc/grpc_security.h +10 -25
- data/include/grpc/grpc_security_constants.h +10 -25
- data/include/grpc/impl/codegen/atm.h +11 -25
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +10 -25
- data/include/grpc/impl/codegen/atm_gcc_sync.h +10 -25
- data/include/grpc/impl/codegen/atm_windows.h +10 -25
- data/include/grpc/impl/codegen/byte_buffer_reader.h +11 -26
- data/include/grpc/impl/codegen/compression_types.h +12 -27
- data/include/grpc/impl/codegen/connectivity_state.h +10 -25
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +10 -25
- data/include/grpc/impl/codegen/gpr_slice.h +10 -25
- data/include/grpc/impl/codegen/gpr_types.h +10 -25
- data/include/grpc/impl/codegen/grpc_types.h +42 -43
- data/include/grpc/impl/codegen/port_platform.h +10 -25
- data/include/grpc/impl/codegen/propagation_bits.h +10 -25
- data/include/grpc/impl/codegen/slice.h +13 -28
- data/include/grpc/impl/codegen/status.h +10 -25
- data/include/grpc/impl/codegen/sync.h +10 -25
- data/include/grpc/impl/codegen/sync_generic.h +10 -25
- data/include/grpc/impl/codegen/sync_posix.h +10 -25
- data/include/grpc/impl/codegen/sync_windows.h +10 -25
- data/include/grpc/load_reporting.h +10 -25
- data/include/grpc/slice.h +10 -25
- data/include/grpc/slice_buffer.h +10 -25
- data/include/grpc/status.h +10 -25
- data/include/grpc/support/alloc.h +10 -25
- data/include/grpc/support/atm.h +10 -25
- data/include/grpc/support/atm_gcc_atomic.h +10 -25
- data/include/grpc/support/atm_gcc_sync.h +10 -25
- data/include/grpc/support/atm_windows.h +10 -25
- data/include/grpc/support/avl.h +46 -49
- data/include/grpc/support/cmdline.h +10 -25
- data/include/grpc/support/cpu.h +10 -25
- data/include/grpc/support/histogram.h +10 -25
- data/include/grpc/support/host_port.h +10 -25
- data/include/grpc/support/log.h +10 -25
- data/include/grpc/support/log_windows.h +10 -25
- data/include/grpc/support/port_platform.h +10 -25
- data/include/grpc/support/string_util.h +10 -25
- data/include/grpc/support/subprocess.h +10 -25
- data/include/grpc/support/sync.h +10 -25
- data/include/grpc/support/sync_generic.h +10 -25
- data/include/grpc/support/sync_posix.h +10 -25
- data/include/grpc/support/sync_windows.h +10 -25
- data/include/grpc/support/thd.h +10 -25
- data/include/grpc/support/time.h +10 -25
- data/include/grpc/support/tls.h +10 -25
- data/include/grpc/support/tls_gcc.h +10 -25
- data/include/grpc/support/tls_msvc.h +10 -25
- data/include/grpc/support/tls_pthread.h +10 -25
- data/include/grpc/support/useful.h +10 -25
- data/include/grpc/support/workaround_list.h +11 -26
- data/src/boringssl/err_data.c +277 -259
- data/src/core/ext/census/aggregation.h +10 -25
- data/src/core/ext/census/base_resources.c +10 -25
- data/src/core/ext/census/base_resources.h +10 -25
- data/src/core/ext/census/census_interface.h +10 -25
- data/src/core/ext/census/census_rpc_stats.h +10 -25
- data/src/core/ext/census/context.c +10 -25
- data/src/core/ext/census/gen/census.pb.c +10 -25
- data/src/core/ext/census/gen/census.pb.h +10 -25
- data/src/core/ext/census/gen/trace_context.pb.c +10 -25
- data/src/core/ext/census/gen/trace_context.pb.h +10 -25
- data/src/core/ext/census/grpc_context.c +10 -25
- data/src/core/ext/census/grpc_filter.c +11 -26
- data/src/core/ext/census/grpc_filter.h +10 -25
- data/src/core/ext/census/grpc_plugin.c +10 -25
- data/src/core/ext/census/initialize.c +10 -25
- data/src/core/ext/census/intrusive_hash_map.c +10 -25
- data/src/core/ext/census/intrusive_hash_map.h +10 -25
- data/src/core/ext/census/intrusive_hash_map_internal.h +10 -25
- data/src/core/ext/census/mlog.c +10 -25
- data/src/core/ext/census/mlog.h +10 -25
- data/src/core/ext/census/operation.c +10 -25
- data/src/core/ext/census/placeholders.c +10 -25
- data/src/core/ext/census/resource.c +10 -25
- data/src/core/ext/census/resource.h +10 -25
- data/src/core/ext/census/rpc_metric_id.h +10 -25
- data/src/core/ext/census/trace_context.c +10 -25
- data/src/core/ext/census/trace_context.h +10 -25
- data/src/core/ext/census/trace_label.h +10 -25
- data/src/core/ext/census/trace_propagation.h +10 -25
- data/src/core/ext/census/trace_status.h +10 -25
- data/src/core/ext/census/trace_string.h +10 -25
- data/src/core/ext/census/tracing.c +10 -26
- data/src/core/ext/census/tracing.h +10 -25
- data/src/core/ext/filters/client_channel/channel_connectivity.c +20 -33
- data/src/core/ext/filters/client_channel/client_channel.c +617 -520
- data/src/core/ext/filters/client_channel/client_channel.h +15 -28
- data/src/core/ext/filters/client_channel/client_channel_factory.c +13 -31
- data/src/core/ext/filters/client_channel/client_channel_factory.h +10 -25
- data/src/core/ext/filters/client_channel/client_channel_plugin.c +16 -29
- data/src/core/ext/filters/client_channel/connector.c +10 -25
- data/src/core/ext/filters/client_channel/connector.h +10 -25
- data/src/core/ext/filters/client_channel/http_connect_handshaker.c +15 -30
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -25
- data/src/core/ext/filters/client_channel/http_proxy.c +112 -38
- data/src/core/ext/filters/client_channel/http_proxy.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy.c +32 -36
- data/src/core/ext/filters/client_channel/lb_policy.h +24 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c +14 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c +464 -279
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +15 -28
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c +40 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c +65 -49
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +31 -31
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c +47 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +11 -26
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +13 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +27 -21
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +373 -136
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +504 -279
- data/src/core/ext/filters/client_channel/lb_policy_factory.c +12 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +12 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.c +10 -25
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -25
- data/src/core/ext/filters/client_channel/parse_address.c +10 -25
- data/src/core/ext/filters/client_channel/parse_address.h +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper.c +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper.h +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.c +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +10 -25
- data/src/core/ext/filters/client_channel/resolver.c +33 -38
- data/src/core/ext/filters/client_channel/resolver.h +19 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c +153 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +14 -27
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c +33 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c +326 -116
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +35 -36
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c +19 -34
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c +254 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +60 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c +16 -28
- data/src/core/ext/filters/client_channel/resolver_factory.c +10 -25
- data/src/core/ext/filters/client_channel/resolver_factory.h +10 -25
- data/src/core/ext/filters/client_channel/resolver_registry.c +10 -25
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -25
- data/src/core/ext/filters/client_channel/retry_throttle.c +23 -34
- data/src/core/ext/filters/client_channel/retry_throttle.h +10 -25
- data/src/core/ext/filters/client_channel/subchannel.c +33 -55
- data/src/core/ext/filters/client_channel/subchannel.h +16 -26
- data/src/core/ext/filters/client_channel/subchannel_index.c +55 -92
- data/src/core/ext/filters/client_channel/subchannel_index.h +26 -29
- data/src/core/ext/filters/client_channel/uri_parser.c +10 -25
- data/src/core/ext/filters/client_channel/uri_parser.h +10 -25
- data/src/core/ext/filters/deadline/deadline_filter.c +30 -45
- data/src/core/ext/filters/deadline/deadline_filter.h +10 -25
- data/src/core/ext/filters/http/client/http_client_filter.c +255 -294
- data/src/core/ext/filters/http/client/http_client_filter.h +10 -25
- data/src/core/ext/filters/http/http_filters_plugin.c +11 -26
- data/src/core/ext/filters/http/message_compress/message_compress_filter.c +133 -105
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +10 -25
- data/src/core/ext/filters/http/server/http_server_filter.c +17 -32
- data/src/core/ext/filters/http/server/http_server_filter.h +10 -25
- data/src/core/ext/filters/load_reporting/load_reporting.c +11 -30
- data/src/core/ext/filters/load_reporting/load_reporting.h +10 -25
- data/src/core/ext/filters/load_reporting/load_reporting_filter.c +11 -26
- data/src/core/ext/filters/load_reporting/load_reporting_filter.h +10 -25
- data/src/core/ext/filters/max_age/max_age_filter.c +28 -43
- data/src/core/ext/filters/max_age/max_age_filter.h +10 -25
- data/src/core/ext/filters/message_size/message_size_filter.c +24 -37
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -25
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c +16 -31
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +10 -25
- data/src/core/ext/filters/workarounds/workaround_utils.c +12 -26
- data/src/core/ext/filters/workarounds/workaround_utils.h +11 -26
- data/src/core/ext/transport/chttp2/alpn/alpn.c +10 -25
- data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +13 -28
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +10 -25
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +13 -30
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +12 -29
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +13 -30
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +11 -26
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -25
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +10 -25
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +10 -25
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +11 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +10 -25
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +15 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +421 -443
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -25
- data/src/core/ext/transport/chttp2/transport/flow_control.c +500 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_data.c +20 -28
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +11 -26
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +11 -26
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +16 -29
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +17 -33
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +18 -31
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +15 -30
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -25
- data/src/core/ext/transport/chttp2/transport/http2_settings.c +10 -25
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -25
- data/src/core/ext/transport/chttp2/transport/huffsyms.c +10 -25
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +10 -25
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +10 -25
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +10 -25
- data/src/core/ext/transport/chttp2/transport/internal.h +191 -179
- data/src/core/ext/transport/chttp2/transport/parsing.c +33 -102
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +26 -28
- data/src/core/ext/transport/chttp2/transport/stream_map.c +10 -25
- data/src/core/ext/transport/chttp2/transport/stream_map.h +10 -25
- data/src/core/ext/transport/chttp2/transport/varint.c +14 -25
- data/src/core/ext/transport/chttp2/transport/varint.h +10 -25
- data/src/core/ext/transport/chttp2/transport/writing.c +164 -106
- data/src/core/ext/transport/inproc/inproc_plugin.c +29 -0
- data/src/core/ext/transport/inproc/inproc_transport.c +1303 -0
- data/src/core/ext/transport/inproc/inproc_transport.h +41 -0
- data/src/core/lib/channel/channel_args.c +52 -27
- data/src/core/lib/channel/channel_args.h +18 -27
- data/src/core/lib/channel/channel_stack.c +11 -26
- data/src/core/lib/channel/channel_stack.h +12 -27
- data/src/core/lib/channel/channel_stack_builder.c +11 -26
- data/src/core/lib/channel/channel_stack_builder.h +10 -25
- data/src/core/lib/channel/connected_channel.c +10 -25
- data/src/core/lib/channel/connected_channel.h +10 -25
- data/src/core/lib/channel/context.h +10 -25
- data/src/core/lib/channel/handshaker.c +14 -29
- data/src/core/lib/channel/handshaker.h +10 -25
- data/src/core/lib/channel/handshaker_factory.c +10 -25
- data/src/core/lib/channel/handshaker_factory.h +10 -25
- data/src/core/lib/channel/handshaker_registry.c +10 -25
- data/src/core/lib/channel/handshaker_registry.h +10 -25
- data/src/core/lib/compression/algorithm_metadata.h +10 -25
- data/src/core/lib/compression/compression.c +10 -25
- data/src/core/lib/compression/message_compress.c +10 -25
- data/src/core/lib/compression/message_compress.h +10 -25
- data/src/core/lib/compression/stream_compression.c +191 -0
- data/src/core/lib/compression/stream_compression.h +90 -0
- data/src/core/lib/debug/trace.c +28 -29
- data/src/core/lib/debug/trace.h +16 -30
- data/src/core/lib/http/format_request.c +10 -25
- data/src/core/lib/http/format_request.h +10 -25
- data/src/core/lib/http/httpcli.c +19 -35
- data/src/core/lib/http/httpcli.h +10 -25
- data/src/core/lib/http/httpcli_security_connector.c +17 -30
- data/src/core/lib/http/parser.c +11 -26
- data/src/core/lib/http/parser.h +10 -25
- data/src/core/lib/iomgr/closure.c +62 -25
- data/src/core/lib/iomgr/closure.h +81 -26
- data/src/core/lib/iomgr/combiner.c +103 -200
- data/src/core/lib/iomgr/combiner.h +14 -32
- data/src/core/lib/iomgr/endpoint.c +10 -29
- data/src/core/lib/iomgr/endpoint.h +10 -29
- data/src/core/lib/iomgr/endpoint_pair.h +10 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.c +10 -25
- data/src/core/lib/iomgr/endpoint_pair_uv.c +10 -25
- data/src/core/lib/iomgr/endpoint_pair_windows.c +10 -25
- data/src/core/lib/iomgr/error.c +45 -46
- data/src/core/lib/iomgr/error.h +21 -34
- data/src/core/lib/iomgr/error_internal.h +10 -25
- data/src/core/lib/iomgr/ev_epoll1_linux.c +279 -179
- data/src/core/lib/iomgr/ev_epoll1_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c +75 -264
- data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c +44 -199
- data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epollex_linux.c +184 -247
- data/src/core/lib/iomgr/ev_epollex_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epollsig_linux.c +116 -323
- data/src/core/lib/iomgr/ev_epollsig_linux.h +10 -25
- data/src/core/lib/iomgr/ev_poll_posix.c +328 -184
- data/src/core/lib/iomgr/ev_poll_posix.h +10 -25
- data/src/core/lib/iomgr/ev_posix.c +25 -56
- data/src/core/lib/iomgr/ev_posix.h +15 -44
- data/src/core/lib/iomgr/ev_windows.c +11 -26
- data/src/core/lib/iomgr/exec_ctx.c +36 -45
- data/src/core/lib/iomgr/exec_ctx.h +10 -25
- data/src/core/lib/iomgr/executor.c +152 -127
- data/src/core/lib/iomgr/executor.h +18 -26
- data/src/core/lib/iomgr/gethostname.h +26 -0
- data/src/core/lib/iomgr/gethostname_fallback.c +27 -0
- data/src/core/lib/iomgr/gethostname_host_name_max.c +37 -0
- data/src/core/lib/iomgr/gethostname_sysconf.c +37 -0
- data/src/core/lib/iomgr/iocp_windows.c +10 -25
- data/src/core/lib/iomgr/iocp_windows.h +10 -25
- data/src/core/lib/iomgr/iomgr.c +17 -28
- data/src/core/lib/iomgr/iomgr.h +12 -27
- data/src/core/lib/iomgr/iomgr_internal.h +10 -25
- data/src/core/lib/iomgr/iomgr_posix.c +11 -26
- data/src/core/lib/iomgr/iomgr_posix.h +10 -25
- data/src/core/lib/iomgr/iomgr_uv.c +19 -26
- data/src/core/lib/iomgr/iomgr_uv.h +37 -0
- data/src/core/lib/iomgr/iomgr_windows.c +10 -25
- data/src/core/lib/iomgr/is_epollexclusive_available.c +10 -25
- data/src/core/lib/iomgr/is_epollexclusive_available.h +10 -25
- data/src/core/lib/iomgr/load_file.c +10 -25
- data/src/core/lib/iomgr/load_file.h +10 -25
- data/src/core/lib/iomgr/lockfree_event.c +22 -35
- data/src/core/lib/iomgr/lockfree_event.h +13 -27
- data/src/core/lib/iomgr/nameser.h +104 -0
- data/src/core/lib/iomgr/network_status_tracker.c +10 -25
- data/src/core/lib/iomgr/network_status_tracker.h +10 -25
- data/src/core/lib/iomgr/polling_entity.c +10 -25
- data/src/core/lib/iomgr/polling_entity.h +14 -34
- data/src/core/lib/iomgr/pollset.h +14 -25
- data/src/core/lib/iomgr/pollset_set.h +10 -25
- data/src/core/lib/iomgr/pollset_set_uv.c +10 -25
- data/src/core/lib/iomgr/pollset_set_windows.c +10 -25
- data/src/core/lib/iomgr/pollset_set_windows.h +10 -25
- data/src/core/lib/iomgr/pollset_uv.c +25 -26
- data/src/core/lib/iomgr/pollset_uv.h +10 -25
- data/src/core/lib/iomgr/pollset_windows.c +17 -27
- data/src/core/lib/iomgr/pollset_windows.h +10 -25
- data/src/core/lib/iomgr/port.h +24 -25
- data/src/core/lib/iomgr/resolve_address.h +10 -25
- data/src/core/lib/iomgr/resolve_address_posix.c +13 -28
- data/src/core/lib/iomgr/resolve_address_uv.c +31 -35
- data/src/core/lib/iomgr/resolve_address_windows.c +13 -28
- data/src/core/lib/iomgr/resource_quota.c +52 -67
- data/src/core/lib/iomgr/resource_quota.h +10 -25
- data/src/core/lib/iomgr/sockaddr.h +10 -25
- data/src/core/lib/iomgr/sockaddr_posix.h +10 -25
- data/src/core/lib/iomgr/sockaddr_utils.c +15 -25
- data/src/core/lib/iomgr/sockaddr_utils.h +12 -25
- data/src/core/lib/iomgr/sockaddr_windows.h +10 -25
- data/src/core/lib/iomgr/socket_factory_posix.c +13 -31
- data/src/core/lib/iomgr/socket_factory_posix.h +10 -25
- data/src/core/lib/iomgr/socket_mutator.c +14 -31
- data/src/core/lib/iomgr/socket_mutator.h +10 -25
- data/src/core/lib/iomgr/socket_utils.h +10 -25
- data/src/core/lib/iomgr/socket_utils_common_posix.c +10 -25
- data/src/core/lib/iomgr/socket_utils_linux.c +10 -25
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -25
- data/src/core/lib/iomgr/socket_utils_posix.h +10 -25
- data/src/core/lib/iomgr/socket_utils_uv.c +10 -25
- data/src/core/lib/iomgr/socket_utils_windows.c +10 -25
- data/src/core/lib/iomgr/socket_windows.c +12 -27
- data/src/core/lib/iomgr/socket_windows.h +10 -25
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +10 -25
- data/src/core/lib/iomgr/tcp_client.h +10 -25
- data/src/core/lib/iomgr/tcp_client_posix.c +21 -34
- data/src/core/lib/iomgr/tcp_client_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_client_uv.c +18 -27
- data/src/core/lib/iomgr/tcp_client_windows.c +14 -29
- data/src/core/lib/iomgr/tcp_posix.c +36 -55
- data/src/core/lib/iomgr/tcp_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_server.h +10 -25
- data/src/core/lib/iomgr/tcp_server_posix.c +16 -31
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.c +11 -26
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c +10 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c +10 -25
- data/src/core/lib/iomgr/tcp_server_uv.c +103 -64
- data/src/core/lib/iomgr/tcp_server_windows.c +14 -29
- data/src/core/lib/iomgr/tcp_uv.c +41 -45
- data/src/core/lib/iomgr/tcp_uv.h +10 -25
- data/src/core/lib/iomgr/tcp_windows.c +39 -53
- data/src/core/lib/iomgr/tcp_windows.h +10 -25
- data/src/core/lib/iomgr/time_averaged_stats.c +10 -25
- data/src/core/lib/iomgr/time_averaged_stats.h +10 -25
- data/src/core/lib/iomgr/timer.h +18 -27
- data/src/core/lib/iomgr/timer_generic.c +91 -87
- data/src/core/lib/iomgr/timer_generic.h +10 -25
- data/src/core/lib/iomgr/timer_heap.c +10 -25
- data/src/core/lib/iomgr/timer_heap.h +10 -25
- data/src/core/lib/iomgr/timer_manager.c +178 -100
- data/src/core/lib/iomgr/timer_manager.h +10 -25
- data/src/core/lib/iomgr/timer_uv.c +23 -33
- data/src/core/lib/iomgr/timer_uv.h +10 -25
- data/src/core/lib/iomgr/udp_server.c +17 -32
- data/src/core/lib/iomgr/udp_server.h +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix.c +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix.h +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_cv.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_cv.h +13 -28
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +10 -25
- data/src/core/lib/iomgr/wakeup_fd_posix.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_posix.h +10 -25
- data/src/core/lib/json/json.c +10 -25
- data/src/core/lib/json/json.h +10 -25
- data/src/core/lib/json/json_common.h +10 -25
- data/src/core/lib/json/json_reader.c +11 -25
- data/src/core/lib/json/json_reader.h +10 -25
- data/src/core/lib/json/json_string.c +10 -25
- data/src/core/lib/json/json_writer.c +10 -25
- data/src/core/lib/json/json_writer.h +10 -25
- data/src/core/lib/profiling/basic_timers.c +10 -25
- data/src/core/lib/profiling/stap_timers.c +10 -25
- data/src/core/lib/profiling/timers.h +10 -25
- data/src/core/lib/security/context/security_context.c +32 -40
- data/src/core/lib/security/context/security_context.h +15 -26
- data/src/core/lib/security/credentials/composite/composite_credentials.c +76 -81
- data/src/core/lib/security/credentials/composite/composite_credentials.h +10 -25
- data/src/core/lib/security/credentials/credentials.c +29 -49
- data/src/core/lib/security/credentials/credentials.h +48 -61
- data/src/core/lib/security/credentials/credentials_metadata.c +34 -78
- data/src/core/lib/security/credentials/fake/fake_credentials.c +33 -56
- data/src/core/lib/security/credentials/fake/fake_credentials.h +12 -27
- data/src/core/lib/security/credentials/google_default/credentials_generic.c +10 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +12 -27
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -25
- data/src/core/lib/security/credentials/iam/iam_credentials.c +40 -40
- data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -26
- data/src/core/lib/security/credentials/jwt/json_token.c +10 -25
- data/src/core/lib/security/credentials/jwt/json_token.h +10 -25
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +45 -48
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -26
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +53 -33
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +10 -25
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +155 -87
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +118 -82
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -32
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -25
- data/src/core/lib/security/transport/auth_filters.h +10 -25
- data/src/core/lib/security/transport/client_auth_filter.c +217 -112
- data/src/core/lib/security/transport/lb_targets_info.c +16 -32
- data/src/core/lib/security/transport/lb_targets_info.h +10 -25
- data/src/core/lib/security/transport/secure_endpoint.c +29 -43
- data/src/core/lib/security/transport/secure_endpoint.h +10 -25
- data/src/core/lib/security/transport/security_connector.c +80 -61
- data/src/core/lib/security/transport/security_connector.h +35 -35
- data/src/core/lib/security/transport/security_handshaker.c +18 -33
- data/src/core/lib/security/transport/security_handshaker.h +10 -25
- data/src/core/lib/security/transport/server_auth_filter.c +62 -116
- data/src/core/lib/security/transport/tsi_error.c +10 -25
- data/src/core/lib/security/transport/tsi_error.h +10 -25
- data/src/core/lib/security/util/json_util.c +10 -25
- data/src/core/lib/security/util/json_util.h +10 -25
- data/src/core/lib/slice/b64.c +10 -25
- data/src/core/lib/slice/b64.h +10 -25
- data/src/core/lib/slice/percent_encoding.c +10 -25
- data/src/core/lib/slice/percent_encoding.h +10 -25
- data/src/core/lib/slice/slice.c +10 -25
- data/src/core/lib/slice/slice_buffer.c +10 -25
- data/src/core/lib/slice/slice_hash_table.c +48 -26
- data/src/core/lib/slice/slice_hash_table.h +26 -28
- data/src/core/lib/slice/slice_intern.c +10 -25
- data/src/core/lib/slice/slice_internal.h +10 -25
- data/src/core/lib/slice/slice_string_helpers.c +10 -25
- data/src/core/lib/slice/slice_string_helpers.h +10 -25
- data/src/core/lib/support/alloc.c +10 -25
- data/src/core/lib/support/arena.c +12 -27
- data/src/core/lib/support/arena.h +10 -25
- data/src/core/lib/support/atm.c +17 -32
- data/src/core/lib/support/atomic.h +10 -25
- data/src/core/lib/support/atomic_with_atm.h +10 -25
- data/src/core/lib/support/atomic_with_std.h +10 -25
- data/src/core/lib/support/avl.c +101 -101
- data/src/core/lib/support/backoff.c +10 -25
- data/src/core/lib/support/backoff.h +10 -25
- data/src/core/lib/support/block_annotate.h +10 -25
- data/src/core/lib/support/cmdline.c +10 -25
- data/src/core/lib/support/cpu_iphone.c +10 -25
- data/src/core/lib/support/cpu_linux.c +10 -25
- data/src/core/lib/support/cpu_posix.c +10 -25
- data/src/core/lib/support/cpu_windows.c +10 -25
- data/src/core/lib/support/env.h +16 -25
- data/src/core/lib/support/env_linux.c +30 -37
- data/src/core/lib/support/env_posix.c +15 -25
- data/src/core/lib/support/env_windows.c +15 -25
- data/src/core/lib/support/histogram.c +10 -25
- data/src/core/lib/support/host_port.c +10 -25
- data/src/core/lib/support/log.c +20 -29
- data/src/core/lib/support/log_android.c +10 -25
- data/src/core/lib/support/log_linux.c +13 -26
- data/src/core/lib/support/log_posix.c +10 -25
- data/src/core/lib/support/log_windows.c +10 -25
- data/src/core/lib/support/memory.h +10 -25
- data/src/core/lib/support/mpscq.c +11 -49
- data/src/core/lib/support/mpscq.h +11 -50
- data/src/core/lib/support/murmur_hash.c +12 -25
- data/src/core/lib/support/murmur_hash.h +10 -25
- data/src/core/lib/support/spinlock.h +10 -25
- data/src/core/lib/support/stack_lockfree.c +10 -25
- data/src/core/lib/support/stack_lockfree.h +10 -25
- data/src/core/lib/support/string.c +10 -25
- data/src/core/lib/support/string.h +10 -25
- data/src/core/lib/support/string_posix.c +10 -25
- data/src/core/lib/support/string_util_windows.c +10 -25
- data/src/core/lib/support/string_windows.c +10 -25
- data/src/core/lib/support/string_windows.h +10 -25
- data/src/core/lib/support/subprocess_posix.c +10 -25
- data/src/core/lib/support/subprocess_windows.c +10 -25
- data/src/core/lib/support/sync.c +10 -25
- data/src/core/lib/support/sync_posix.c +10 -25
- data/src/core/lib/support/sync_windows.c +10 -25
- data/src/core/lib/support/thd.c +10 -25
- data/src/core/lib/support/thd_internal.h +10 -25
- data/src/core/lib/support/thd_posix.c +10 -25
- data/src/core/lib/support/thd_windows.c +10 -25
- data/src/core/lib/support/time.c +10 -25
- data/src/core/lib/support/time_posix.c +10 -25
- data/src/core/lib/support/time_precise.c +18 -33
- data/src/core/lib/support/time_precise.h +10 -25
- data/src/core/lib/support/time_windows.c +10 -25
- data/src/core/lib/support/tls_pthread.c +10 -25
- data/src/core/lib/support/tmpfile.h +10 -25
- data/src/core/lib/support/tmpfile_msys.c +10 -25
- data/src/core/lib/support/tmpfile_posix.c +10 -25
- data/src/core/lib/support/tmpfile_windows.c +10 -25
- data/src/core/lib/support/wrap_memcpy.c +10 -25
- data/src/core/lib/surface/alarm.c +78 -35
- data/src/core/lib/surface/alarm_internal.h +40 -0
- data/src/core/lib/surface/api_trace.c +11 -26
- data/src/core/lib/surface/api_trace.h +10 -25
- data/src/core/lib/surface/byte_buffer.c +10 -25
- data/src/core/lib/surface/byte_buffer_reader.c +10 -25
- data/src/core/lib/surface/call.c +64 -84
- data/src/core/lib/surface/call.h +11 -26
- data/src/core/lib/surface/call_details.c +10 -25
- data/src/core/lib/surface/call_log_batch.c +10 -25
- data/src/core/lib/surface/call_test_only.h +10 -25
- data/src/core/lib/surface/channel.c +11 -26
- data/src/core/lib/surface/channel.h +11 -26
- data/src/core/lib/surface/channel_init.c +10 -25
- data/src/core/lib/surface/channel_init.h +10 -25
- data/src/core/lib/surface/channel_ping.c +12 -27
- data/src/core/lib/surface/channel_stack_type.c +10 -25
- data/src/core/lib/surface/channel_stack_type.h +10 -25
- data/src/core/lib/surface/completion_queue.c +442 -331
- data/src/core/lib/surface/completion_queue.h +16 -33
- data/src/core/lib/surface/completion_queue_factory.c +10 -25
- data/src/core/lib/surface/completion_queue_factory.h +10 -25
- data/src/core/lib/surface/event_string.c +10 -25
- data/src/core/lib/surface/event_string.h +10 -25
- data/src/core/lib/surface/init.c +38 -47
- data/src/core/lib/surface/init.h +10 -25
- data/src/core/lib/surface/init_secure.c +20 -27
- data/src/core/lib/surface/lame_client.cc +14 -29
- data/src/core/lib/surface/lame_client.h +10 -25
- data/src/core/lib/surface/metadata_array.c +10 -25
- data/src/core/lib/surface/server.c +128 -81
- data/src/core/lib/surface/server.h +10 -25
- data/src/core/lib/surface/validate_metadata.c +10 -25
- data/src/core/lib/surface/validate_metadata.h +10 -25
- data/src/core/lib/surface/version.c +11 -26
- data/src/core/lib/transport/bdp_estimator.c +19 -29
- data/src/core/lib/transport/bdp_estimator.h +16 -29
- data/src/core/lib/transport/byte_stream.c +127 -36
- data/src/core/lib/transport/byte_stream.h +88 -46
- data/src/core/lib/transport/connectivity_state.c +17 -31
- data/src/core/lib/transport/connectivity_state.h +10 -25
- data/src/core/lib/transport/error_utils.c +10 -25
- data/src/core/lib/transport/error_utils.h +10 -25
- data/src/core/lib/transport/http2_errors.h +10 -25
- data/src/core/lib/transport/metadata.c +87 -85
- data/src/core/lib/transport/metadata.h +15 -28
- data/src/core/lib/transport/metadata_batch.c +10 -25
- data/src/core/lib/transport/metadata_batch.h +10 -25
- data/src/core/lib/transport/pid_controller.c +10 -25
- data/src/core/lib/transport/pid_controller.h +10 -25
- data/src/core/lib/transport/service_config.c +11 -26
- data/src/core/lib/transport/service_config.h +10 -25
- data/src/core/lib/transport/static_metadata.c +12 -26
- data/src/core/lib/transport/static_metadata.h +10 -25
- data/src/core/lib/transport/status_conversion.c +10 -25
- data/src/core/lib/transport/status_conversion.h +10 -25
- data/src/core/lib/transport/timeout_encoding.c +10 -25
- data/src/core/lib/transport/timeout_encoding.h +10 -25
- data/src/core/lib/transport/transport.c +60 -53
- data/src/core/lib/transport/transport.h +36 -34
- data/src/core/lib/transport/transport_impl.h +10 -25
- data/src/core/lib/transport/transport_op_string.c +10 -28
- data/src/core/plugin_registry/grpc_plugin_registry.c +22 -25
- data/src/core/tsi/fake_transport_security.c +199 -94
- data/src/core/tsi/fake_transport_security.h +11 -26
- data/src/core/tsi/gts_transport_security.c +40 -0
- data/src/core/tsi/gts_transport_security.h +37 -0
- data/src/core/tsi/ssl_transport_security.c +13 -32
- data/src/core/tsi/ssl_transport_security.h +10 -25
- data/src/core/tsi/ssl_types.h +10 -25
- data/src/core/tsi/transport_security.c +48 -78
- data/src/core/tsi/transport_security.h +18 -27
- data/src/core/tsi/transport_security_adapter.c +17 -29
- data/src/core/tsi/transport_security_adapter.h +10 -25
- data/src/core/tsi/transport_security_grpc.c +64 -0
- data/src/core/tsi/transport_security_grpc.h +80 -0
- data/src/core/tsi/transport_security_interface.h +21 -27
- data/src/ruby/bin/apis/google/protobuf/empty.rb +10 -25
- data/src/ruby/bin/apis/pubsub_demo.rb +10 -25
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +10 -25
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +10 -25
- data/src/ruby/bin/math_client.rb +10 -25
- data/src/ruby/bin/math_server.rb +10 -25
- data/src/ruby/bin/math_services_pb.rb +10 -25
- data/src/ruby/bin/noproto_client.rb +10 -25
- data/src/ruby/bin/noproto_server.rb +10 -25
- data/src/ruby/ext/grpc/extconf.rb +10 -25
- data/src/ruby/ext/grpc/rb_byte_buffer.c +10 -25
- data/src/ruby/ext/grpc/rb_byte_buffer.h +10 -25
- data/src/ruby/ext/grpc/rb_call.c +44 -25
- data/src/ruby/ext/grpc/rb_call.h +10 -25
- data/src/ruby/ext/grpc/rb_call_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_call_credentials.h +10 -25
- data/src/ruby/ext/grpc/rb_channel.c +10 -25
- data/src/ruby/ext/grpc/rb_channel.h +10 -25
- data/src/ruby/ext/grpc/rb_channel_args.c +10 -25
- data/src/ruby/ext/grpc/rb_channel_args.h +10 -25
- data/src/ruby/ext/grpc/rb_channel_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_channel_credentials.h +10 -25
- data/src/ruby/ext/grpc/rb_completion_queue.c +10 -25
- data/src/ruby/ext/grpc/rb_completion_queue.h +10 -25
- data/src/ruby/ext/grpc/rb_compression_options.c +10 -25
- data/src/ruby/ext/grpc/rb_compression_options.h +10 -25
- data/src/ruby/ext/grpc/rb_event_thread.c +10 -25
- data/src/ruby/ext/grpc/rb_event_thread.h +10 -25
- data/src/ruby/ext/grpc/rb_grpc.c +10 -25
- data/src/ruby/ext/grpc/rb_grpc.h +10 -25
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -25
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +16 -31
- data/src/ruby/ext/grpc/rb_loader.c +10 -25
- data/src/ruby/ext/grpc/rb_loader.h +10 -25
- data/src/ruby/ext/grpc/rb_server.c +10 -25
- data/src/ruby/ext/grpc/rb_server.h +10 -25
- data/src/ruby/ext/grpc/rb_server_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_server_credentials.h +10 -25
- data/src/ruby/lib/grpc.rb +10 -25
- data/src/ruby/lib/grpc/core/time_consts.rb +10 -25
- data/src/ruby/lib/grpc/errors.rb +16 -30
- data/src/ruby/lib/grpc/generic/active_call.rb +25 -27
- data/src/ruby/lib/grpc/generic/bidi_call.rb +17 -27
- data/src/ruby/lib/grpc/generic/client_stub.rb +10 -25
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +10 -25
- data/src/ruby/lib/grpc/generic/rpc_server.rb +10 -25
- data/src/ruby/lib/grpc/generic/service.rb +10 -25
- data/src/ruby/lib/grpc/grpc.rb +10 -25
- data/src/ruby/lib/grpc/logconfig.rb +10 -25
- data/src/ruby/lib/grpc/notifier.rb +10 -25
- data/src/ruby/lib/grpc/version.rb +11 -26
- data/src/ruby/pb/generate_proto_ruby.sh +10 -25
- data/src/ruby/pb/grpc/health/checker.rb +10 -25
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +10 -25
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +10 -25
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +10 -25
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +10 -25
- data/src/ruby/pb/test/client.rb +10 -25
- data/src/ruby/pb/test/server.rb +10 -25
- data/src/ruby/spec/call_credentials_spec.rb +10 -25
- data/src/ruby/spec/call_spec.rb +43 -25
- data/src/ruby/spec/channel_connection_spec.rb +10 -25
- data/src/ruby/spec/channel_credentials_spec.rb +11 -26
- data/src/ruby/spec/channel_spec.rb +10 -25
- data/src/ruby/spec/client_auth_spec.rb +10 -25
- data/src/ruby/spec/client_server_spec.rb +66 -25
- data/src/ruby/spec/compression_options_spec.rb +10 -25
- data/src/ruby/spec/error_sanity_spec.rb +10 -25
- data/src/ruby/spec/generic/active_call_spec.rb +10 -25
- data/src/ruby/spec/generic/client_stub_spec.rb +146 -35
- data/src/ruby/spec/generic/rpc_desc_spec.rb +10 -25
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +10 -25
- data/src/ruby/spec/generic/rpc_server_spec.rb +124 -34
- data/src/ruby/spec/generic/service_spec.rb +10 -25
- data/src/ruby/spec/pb/duplicate/codegen_spec.rb +10 -25
- data/src/ruby/spec/pb/health/checker_spec.rb +10 -25
- data/src/ruby/spec/server_credentials_spec.rb +10 -25
- data/src/ruby/spec/server_spec.rb +10 -25
- data/src/ruby/spec/spec_helper.rb +10 -25
- data/src/ruby/spec/time_consts_spec.rb +10 -25
- data/third_party/boringssl/crypto/aes/key_wrap.c +138 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +6 -3
- data/third_party/boringssl/crypto/asn1/a_enum.c +4 -1
- data/third_party/boringssl/crypto/asn1/a_gentm.c +20 -15
- data/third_party/boringssl/crypto/asn1/a_int.c +7 -4
- data/third_party/boringssl/crypto/asn1/a_object.c +5 -2
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -1
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -2
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -2
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +3 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +6 -3
- data/third_party/boringssl/crypto/asn1/tasn_new.c +12 -7
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +22 -8
- data/third_party/boringssl/crypto/{time_support.c → asn1/time_support.c} +1 -1
- data/third_party/boringssl/crypto/asn1/x_long.c +5 -2
- data/third_party/boringssl/crypto/base64/base64.c +7 -5
- data/third_party/boringssl/crypto/bio/bio.c +24 -10
- data/third_party/boringssl/crypto/bio/bio_mem.c +12 -10
- data/third_party/boringssl/crypto/bio/connect.c +7 -18
- data/third_party/boringssl/crypto/bio/fd.c +3 -6
- data/third_party/boringssl/crypto/bio/file.c +6 -6
- data/third_party/boringssl/crypto/bio/hexdump.c +4 -2
- data/third_party/boringssl/crypto/bio/pair.c +30 -344
- data/third_party/boringssl/crypto/bio/socket.c +6 -7
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -3
- data/third_party/boringssl/crypto/bn/add.c +1 -1
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +11 -10
- data/third_party/boringssl/crypto/bn/bn.c +6 -20
- data/third_party/boringssl/crypto/bn/cmp.c +14 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -2
- data/third_party/boringssl/crypto/bn/ctx.c +3 -1
- data/third_party/boringssl/crypto/bn/div.c +108 -51
- data/third_party/boringssl/crypto/bn/exponentiation.c +15 -33
- data/third_party/boringssl/crypto/bn/gcd.c +29 -22
- data/third_party/boringssl/crypto/bn/generic.c +71 -67
- data/third_party/boringssl/crypto/bn/internal.h +19 -6
- data/third_party/boringssl/crypto/bn/kronecker.c +1 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +9 -10
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +47 -0
- data/third_party/boringssl/crypto/bn/mul.c +11 -9
- data/third_party/boringssl/crypto/bn/random.c +6 -3
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -65
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +0 -3
- data/third_party/boringssl/crypto/bn/shift.c +9 -1
- data/third_party/boringssl/crypto/bn/sqrt.c +3 -1
- data/third_party/boringssl/crypto/buf/buf.c +6 -4
- data/third_party/boringssl/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl/crypto/bytestring/ber.c +2 -1
- data/third_party/boringssl/crypto/bytestring/cbb.c +9 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +54 -2
- data/third_party/boringssl/crypto/chacha/chacha.c +1 -1
- data/third_party/boringssl/crypto/cipher/aead.c +3 -3
- data/third_party/boringssl/crypto/cipher/cipher.c +18 -13
- data/third_party/boringssl/crypto/cipher/e_aes.c +335 -281
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +113 -137
- data/third_party/boringssl/crypto/cipher/e_null.c +2 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +54 -49
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +4 -3
- data/third_party/boringssl/crypto/cipher/e_tls.c +5 -5
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +41 -112
- data/third_party/boringssl/crypto/cmac/cmac.c +6 -4
- data/third_party/boringssl/crypto/conf/conf.c +6 -3
- data/third_party/boringssl/crypto/cpu-arm-linux.c +2 -2
- data/third_party/boringssl/crypto/curve25519/curve25519.c +28 -34
- data/third_party/boringssl/crypto/curve25519/spake25519.c +7 -6
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +2 -1
- data/third_party/boringssl/crypto/des/des.c +1 -1
- data/third_party/boringssl/crypto/des/internal.h +58 -46
- data/third_party/boringssl/crypto/dh/dh.c +4 -8
- data/third_party/boringssl/crypto/digest/digest.c +5 -2
- data/third_party/boringssl/crypto/digest/digests.c +70 -33
- data/third_party/boringssl/crypto/digest/md32_common.h +39 -27
- data/third_party/boringssl/crypto/dsa/dsa.c +11 -19
- data/third_party/boringssl/crypto/ec/ec.c +1 -1
- data/third_party/boringssl/crypto/ec/ec_asn1.c +3 -2
- data/third_party/boringssl/crypto/ec/ec_key.c +1 -1
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +6 -11
- data/third_party/boringssl/crypto/ec/oct.c +2 -14
- data/third_party/boringssl/crypto/ec/p224-64.c +78 -122
- data/third_party/boringssl/crypto/ec/p256-64.c +93 -133
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +48 -61
- data/third_party/boringssl/crypto/ec/p256-x86_64.h +113 -0
- data/third_party/boringssl/crypto/ec/simple.c +2 -1
- data/third_party/boringssl/crypto/ec/wnaf.c +52 -43
- data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -2
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +17 -16
- data/third_party/boringssl/crypto/engine/engine.c +3 -1
- data/third_party/boringssl/crypto/err/err.c +5 -5
- data/third_party/boringssl/crypto/evp/evp.c +1 -1
- data/third_party/boringssl/crypto/evp/evp_asn1.c +1 -1
- data/third_party/boringssl/crypto/evp/evp_ctx.c +23 -29
- data/third_party/boringssl/crypto/evp/p_ec.c +2 -1
- data/third_party/boringssl/crypto/evp/p_rsa.c +9 -3
- data/third_party/boringssl/crypto/evp/pbkdf.c +3 -1
- data/third_party/boringssl/crypto/hkdf/hkdf.c +3 -1
- data/third_party/boringssl/crypto/hmac/hmac.c +4 -2
- data/third_party/boringssl/crypto/internal.h +81 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +7 -13
- data/third_party/boringssl/crypto/md4/md4.c +20 -18
- data/third_party/boringssl/crypto/md5/md5.c +31 -21
- data/third_party/boringssl/crypto/mem.c +4 -10
- data/third_party/boringssl/crypto/modes/cbc.c +2 -6
- data/third_party/boringssl/crypto/modes/cfb.c +2 -2
- data/third_party/boringssl/crypto/modes/ctr.c +1 -1
- data/third_party/boringssl/crypto/modes/gcm.c +117 -334
- data/third_party/boringssl/crypto/modes/internal.h +107 -84
- data/third_party/boringssl/crypto/modes/ofb.c +3 -3
- data/third_party/boringssl/crypto/modes/polyval.c +94 -0
- data/third_party/boringssl/crypto/obj/obj.c +13 -8
- data/third_party/boringssl/crypto/obj/obj_dat.h +6109 -5187
- data/third_party/boringssl/crypto/obj/obj_xref.c +55 -57
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -3
- data/third_party/boringssl/crypto/pkcs8/internal.h +27 -8
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +137 -352
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +371 -364
- data/third_party/boringssl/crypto/poly1305/poly1305.c +12 -18
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +2 -2
- data/third_party/boringssl/crypto/{newhope/reduce.c → pool/internal.h} +24 -21
- data/third_party/boringssl/crypto/pool/pool.c +200 -0
- data/third_party/boringssl/crypto/rand/deterministic.c +6 -5
- data/third_party/boringssl/crypto/rand/fuchsia.c +43 -0
- data/third_party/boringssl/crypto/rand/rand.c +7 -7
- data/third_party/boringssl/crypto/rand/urandom.c +136 -22
- data/third_party/boringssl/crypto/rand/windows.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +2 -1
- data/third_party/boringssl/crypto/rsa/padding.c +11 -11
- data/third_party/boringssl/crypto/rsa/rsa.c +4 -4
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +7 -1
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +41 -80
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +346 -0
- data/third_party/boringssl/crypto/sha/sha1.c +60 -42
- data/third_party/boringssl/crypto/sha/sha256.c +4 -2
- data/third_party/boringssl/crypto/sha/sha512.c +9 -7
- data/third_party/boringssl/crypto/stack/stack.c +10 -7
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +2 -2
- data/third_party/boringssl/crypto/x509/a_verify.c +1 -1
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +1 -1
- data/third_party/boringssl/crypto/x509/t_x509.c +78 -38
- data/third_party/boringssl/crypto/x509/x509_cmp.c +8 -5
- data/third_party/boringssl/crypto/x509/x509_lu.c +6 -1
- data/third_party/boringssl/crypto/x509/x509_obj.c +4 -1
- data/third_party/boringssl/crypto/x509/x509_vfy.c +42 -8
- data/third_party/boringssl/crypto/x509/x509_vpm.c +8 -6
- data/third_party/boringssl/crypto/x509/x509name.c +4 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +4 -2
- data/third_party/boringssl/crypto/x509/x_name.c +23 -13
- data/third_party/boringssl/crypto/x509/x_pkey.c +4 -1
- data/third_party/boringssl/crypto/x509/x_x509.c +42 -3
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +1 -1
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +4 -1
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +4 -1
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +6 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +13 -21
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +19 -33
- data/third_party/boringssl/include/openssl/aead.h +9 -20
- data/third_party/boringssl/include/openssl/aes.h +21 -9
- data/third_party/boringssl/include/openssl/asn1.h +9 -1
- data/third_party/boringssl/include/openssl/base.h +33 -6
- data/third_party/boringssl/include/openssl/bio.h +10 -103
- data/third_party/boringssl/include/openssl/bn.h +58 -42
- data/third_party/boringssl/include/openssl/bytestring.h +17 -0
- data/third_party/boringssl/include/openssl/cipher.h +4 -3
- data/third_party/boringssl/include/openssl/conf.h +4 -1
- data/third_party/boringssl/include/openssl/curve25519.h +13 -0
- data/third_party/boringssl/include/openssl/digest.h +5 -3
- data/third_party/boringssl/include/openssl/dsa.h +5 -5
- data/third_party/boringssl/include/openssl/ec.h +2 -2
- data/third_party/boringssl/include/openssl/ecdh.h +3 -4
- data/third_party/boringssl/include/openssl/ecdsa.h +10 -10
- data/third_party/boringssl/include/openssl/err.h +5 -5
- data/third_party/boringssl/include/openssl/evp.h +11 -7
- data/third_party/boringssl/include/openssl/lhash.h +2 -3
- data/third_party/boringssl/include/openssl/lhash_macros.h +56 -14
- data/third_party/boringssl/include/openssl/nid.h +2949 -2916
- data/third_party/boringssl/include/openssl/obj.h +1 -1
- data/third_party/boringssl/include/openssl/pkcs8.h +21 -42
- data/third_party/boringssl/include/openssl/pool.h +87 -0
- data/third_party/boringssl/include/openssl/rand.h +1 -1
- data/third_party/boringssl/include/openssl/rsa.h +4 -2
- data/third_party/boringssl/include/openssl/sha.h +0 -4
- data/third_party/boringssl/include/openssl/ssl.h +327 -662
- data/third_party/boringssl/include/openssl/ssl3.h +1 -21
- data/third_party/boringssl/include/openssl/stack.h +1 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +85 -0
- data/third_party/boringssl/include/openssl/tls1.h +23 -52
- data/third_party/boringssl/include/openssl/type_check.h +4 -0
- data/third_party/boringssl/include/openssl/x509.h +10 -59
- data/third_party/boringssl/include/openssl/x509_vfy.h +7 -1
- data/third_party/boringssl/include/openssl/x509v3.h +4 -4
- data/third_party/boringssl/ssl/bio_ssl.c +175 -0
- data/third_party/boringssl/ssl/custom_extensions.c +24 -21
- data/third_party/boringssl/ssl/d1_both.c +259 -289
- data/third_party/boringssl/ssl/d1_lib.c +8 -20
- data/third_party/boringssl/ssl/d1_pkt.c +6 -15
- data/third_party/boringssl/ssl/dtls_method.c +22 -8
- data/third_party/boringssl/ssl/dtls_record.c +27 -2
- data/third_party/boringssl/ssl/handshake_client.c +460 -579
- data/third_party/boringssl/ssl/handshake_server.c +662 -644
- data/third_party/boringssl/ssl/internal.h +1009 -375
- data/third_party/boringssl/ssl/s3_both.c +312 -162
- data/third_party/boringssl/ssl/s3_lib.c +12 -128
- data/third_party/boringssl/ssl/s3_pkt.c +22 -30
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +28 -22
- data/third_party/boringssl/ssl/ssl_asn1.c +210 -114
- data/third_party/boringssl/ssl/ssl_buffer.c +2 -1
- data/third_party/boringssl/ssl/ssl_cert.c +417 -219
- data/third_party/boringssl/ssl/ssl_cipher.c +191 -393
- data/third_party/boringssl/ssl/ssl_ecdh.c +19 -164
- data/third_party/boringssl/ssl/ssl_file.c +0 -11
- data/third_party/boringssl/ssl/ssl_lib.c +325 -652
- data/third_party/boringssl/ssl/{ssl_rsa.c → ssl_privkey.c} +21 -131
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +76 -0
- data/third_party/boringssl/ssl/ssl_session.c +206 -95
- data/third_party/boringssl/ssl/ssl_stat.c +18 -84
- data/third_party/boringssl/ssl/{s3_enc.c → ssl_transcript.c} +150 -157
- data/third_party/boringssl/ssl/ssl_x509.c +815 -0
- data/third_party/boringssl/ssl/t1_enc.c +188 -174
- data/third_party/boringssl/ssl/t1_lib.c +1064 -764
- data/third_party/boringssl/ssl/tls13_both.c +290 -96
- data/third_party/boringssl/ssl/tls13_client.c +344 -314
- data/third_party/boringssl/ssl/tls13_enc.c +239 -200
- data/third_party/boringssl/ssl/tls13_server.c +374 -366
- data/third_party/boringssl/ssl/tls_method.c +40 -5
- data/third_party/boringssl/ssl/tls_record.c +166 -71
- metadata +39 -25
- data/src/core/lib/iomgr/workqueue.h +0 -87
- data/src/core/lib/iomgr/workqueue_uv.c +0 -65
- data/src/core/lib/iomgr/workqueue_uv.h +0 -37
- data/src/core/lib/iomgr/workqueue_windows.c +0 -63
- data/src/core/lib/iomgr/workqueue_windows.h +0 -37
- data/third_party/boringssl/crypto/bio/buffer.c +0 -496
- data/third_party/boringssl/crypto/newhope/error_correction.c +0 -131
- data/third_party/boringssl/crypto/newhope/internal.h +0 -71
- data/third_party/boringssl/crypto/newhope/newhope.c +0 -174
- data/third_party/boringssl/crypto/newhope/ntt.c +0 -148
- data/third_party/boringssl/crypto/newhope/poly.c +0 -183
- data/third_party/boringssl/crypto/newhope/precomp.c +0 -306
- data/third_party/boringssl/crypto/obj/obj_xref.h +0 -96
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +0 -151
- data/third_party/boringssl/include/openssl/newhope.h +0 -158
- data/third_party/boringssl/include/openssl/time_support.h +0 -91
@@ -65,42 +65,35 @@
|
|
65
65
|
#include <openssl/mem.h>
|
66
66
|
#include <openssl/type_check.h>
|
67
67
|
#include <openssl/x509.h>
|
68
|
+
#include <openssl/x509v3.h>
|
68
69
|
|
69
70
|
#include "internal.h"
|
70
71
|
|
71
72
|
|
72
|
-
|
73
|
-
static int ssl_set_pkey(CERT *c, EVP_PKEY *pkey);
|
74
|
-
|
75
|
-
static int is_key_type_supported(int key_type) {
|
73
|
+
int ssl_is_key_type_supported(int key_type) {
|
76
74
|
return key_type == EVP_PKEY_RSA || key_type == EVP_PKEY_EC;
|
77
75
|
}
|
78
76
|
|
79
|
-
int
|
80
|
-
if (
|
81
|
-
OPENSSL_PUT_ERROR(SSL,
|
77
|
+
static int ssl_set_pkey(CERT *cert, EVP_PKEY *pkey) {
|
78
|
+
if (!ssl_is_key_type_supported(pkey->type)) {
|
79
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE);
|
82
80
|
return 0;
|
83
81
|
}
|
84
|
-
return ssl_set_cert(ssl->cert, x);
|
85
|
-
}
|
86
82
|
|
87
|
-
|
88
|
-
|
89
|
-
|
83
|
+
if (cert->chain != NULL &&
|
84
|
+
sk_CRYPTO_BUFFER_value(cert->chain, 0) != NULL &&
|
85
|
+
/* Sanity-check that the private key and the certificate match, unless
|
86
|
+
* the key is opaque (in case of, say, a smartcard). */
|
87
|
+
!EVP_PKEY_is_opaque(pkey) &&
|
88
|
+
!ssl_cert_check_private_key(cert, pkey)) {
|
90
89
|
return 0;
|
91
90
|
}
|
92
91
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_ASN1_LIB);
|
97
|
-
X509_free(x509);
|
98
|
-
return 0;
|
99
|
-
}
|
92
|
+
EVP_PKEY_free(cert->privatekey);
|
93
|
+
EVP_PKEY_up_ref(pkey);
|
94
|
+
cert->privatekey = pkey;
|
100
95
|
|
101
|
-
|
102
|
-
X509_free(x509);
|
103
|
-
return ret;
|
96
|
+
return 1;
|
104
97
|
}
|
105
98
|
|
106
99
|
int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa) {
|
@@ -127,52 +120,13 @@ int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa) {
|
|
127
120
|
return ret;
|
128
121
|
}
|
129
122
|
|
130
|
-
static int ssl_set_pkey(CERT *c, EVP_PKEY *pkey) {
|
131
|
-
if (!is_key_type_supported(pkey->type)) {
|
132
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE);
|
133
|
-
return 0;
|
134
|
-
}
|
135
|
-
|
136
|
-
if (c->x509 != NULL) {
|
137
|
-
/* Sanity-check that the private key and the certificate match, unless the
|
138
|
-
* key is opaque (in case of, say, a smartcard). */
|
139
|
-
if (!EVP_PKEY_is_opaque(pkey) &&
|
140
|
-
!X509_check_private_key(c->x509, pkey)) {
|
141
|
-
X509_free(c->x509);
|
142
|
-
c->x509 = NULL;
|
143
|
-
return 0;
|
144
|
-
}
|
145
|
-
}
|
146
|
-
|
147
|
-
EVP_PKEY_free(c->privatekey);
|
148
|
-
EVP_PKEY_up_ref(pkey);
|
149
|
-
c->privatekey = pkey;
|
150
|
-
|
151
|
-
return 1;
|
152
|
-
}
|
153
|
-
|
154
|
-
int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const uint8_t *der, size_t der_len) {
|
155
|
-
RSA *rsa = RSA_private_key_from_bytes(der, der_len);
|
156
|
-
if (rsa == NULL) {
|
157
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_ASN1_LIB);
|
158
|
-
return 0;
|
159
|
-
}
|
160
|
-
|
161
|
-
int ret = SSL_use_RSAPrivateKey(ssl, rsa);
|
162
|
-
RSA_free(rsa);
|
163
|
-
return ret;
|
164
|
-
}
|
165
|
-
|
166
123
|
int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey) {
|
167
|
-
int ret;
|
168
|
-
|
169
124
|
if (pkey == NULL) {
|
170
125
|
OPENSSL_PUT_ERROR(SSL, ERR_R_PASSED_NULL_PARAMETER);
|
171
126
|
return 0;
|
172
127
|
}
|
173
128
|
|
174
|
-
|
175
|
-
return ret;
|
129
|
+
return ssl_set_pkey(ssl->cert, pkey);
|
176
130
|
}
|
177
131
|
|
178
132
|
int SSL_use_PrivateKey_ASN1(int type, SSL *ssl, const uint8_t *der,
|
@@ -195,72 +149,6 @@ int SSL_use_PrivateKey_ASN1(int type, SSL *ssl, const uint8_t *der,
|
|
195
149
|
return ret;
|
196
150
|
}
|
197
151
|
|
198
|
-
int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x) {
|
199
|
-
if (x == NULL) {
|
200
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_PASSED_NULL_PARAMETER);
|
201
|
-
return 0;
|
202
|
-
}
|
203
|
-
|
204
|
-
return ssl_set_cert(ctx->cert, x);
|
205
|
-
}
|
206
|
-
|
207
|
-
static int ssl_set_cert(CERT *c, X509 *x) {
|
208
|
-
EVP_PKEY *pkey = X509_get_pubkey(x);
|
209
|
-
if (pkey == NULL) {
|
210
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_X509_LIB);
|
211
|
-
return 0;
|
212
|
-
}
|
213
|
-
|
214
|
-
if (!is_key_type_supported(pkey->type)) {
|
215
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE);
|
216
|
-
EVP_PKEY_free(pkey);
|
217
|
-
return 0;
|
218
|
-
}
|
219
|
-
|
220
|
-
if (c->privatekey != NULL) {
|
221
|
-
/* Sanity-check that the private key and the certificate match, unless the
|
222
|
-
* key is opaque (in case of, say, a smartcard). */
|
223
|
-
if (!EVP_PKEY_is_opaque(c->privatekey) &&
|
224
|
-
!X509_check_private_key(x, c->privatekey)) {
|
225
|
-
/* don't fail for a cert/key mismatch, just free current private key
|
226
|
-
* (when switching to a different cert & key, first this function should
|
227
|
-
* be used, then ssl_set_pkey */
|
228
|
-
EVP_PKEY_free(c->privatekey);
|
229
|
-
c->privatekey = NULL;
|
230
|
-
/* clear error queue */
|
231
|
-
ERR_clear_error();
|
232
|
-
}
|
233
|
-
}
|
234
|
-
|
235
|
-
EVP_PKEY_free(pkey);
|
236
|
-
|
237
|
-
X509_free(c->x509);
|
238
|
-
X509_up_ref(x);
|
239
|
-
c->x509 = x;
|
240
|
-
|
241
|
-
return 1;
|
242
|
-
}
|
243
|
-
|
244
|
-
int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, size_t der_len,
|
245
|
-
const uint8_t *der) {
|
246
|
-
if (der_len > LONG_MAX) {
|
247
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
|
248
|
-
return 0;
|
249
|
-
}
|
250
|
-
|
251
|
-
const uint8_t *p = der;
|
252
|
-
X509 *x509 = d2i_X509(NULL, &p, (long)der_len);
|
253
|
-
if (x509 == NULL || p != der + der_len) {
|
254
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_ASN1_LIB);
|
255
|
-
X509_free(x509);
|
256
|
-
return 0;
|
257
|
-
}
|
258
|
-
|
259
|
-
int ret = SSL_CTX_use_certificate(ctx, x509);
|
260
|
-
X509_free(x509);
|
261
|
-
return ret;
|
262
|
-
}
|
263
|
-
|
264
152
|
int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa) {
|
265
153
|
int ret;
|
266
154
|
EVP_PKEY *pkey;
|
@@ -338,6 +226,8 @@ void SSL_CTX_set_private_key_method(SSL_CTX *ctx,
|
|
338
226
|
|
339
227
|
static int set_signing_algorithm_prefs(CERT *cert, const uint16_t *prefs,
|
340
228
|
size_t num_prefs) {
|
229
|
+
OPENSSL_free(cert->sigalgs);
|
230
|
+
|
341
231
|
cert->num_sigalgs = 0;
|
342
232
|
cert->sigalgs = BUF_memdup(prefs, num_prefs * sizeof(prefs[0]));
|
343
233
|
if (cert->sigalgs == NULL) {
|
@@ -360,13 +250,13 @@ int SSL_set_signing_algorithm_prefs(SSL *ssl, const uint16_t *prefs,
|
|
360
250
|
return set_signing_algorithm_prefs(ssl->cert, prefs, num_prefs);
|
361
251
|
}
|
362
252
|
|
363
|
-
OPENSSL_COMPILE_ASSERT(sizeof(int) >= 2 * sizeof(uint16_t),
|
364
|
-
digest_list_conversion_cannot_overflow);
|
365
|
-
|
366
253
|
int SSL_set_private_key_digest_prefs(SSL *ssl, const int *digest_nids,
|
367
254
|
size_t num_digests) {
|
368
255
|
OPENSSL_free(ssl->cert->sigalgs);
|
369
256
|
|
257
|
+
OPENSSL_COMPILE_ASSERT(sizeof(int) >= 2 * sizeof(uint16_t),
|
258
|
+
digest_list_conversion_cannot_overflow);
|
259
|
+
|
370
260
|
ssl->cert->num_sigalgs = 0;
|
371
261
|
ssl->cert->sigalgs = OPENSSL_malloc(sizeof(uint16_t) * 2 * num_digests);
|
372
262
|
if (ssl->cert->sigalgs == NULL) {
|
@@ -0,0 +1,76 @@
|
|
1
|
+
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
2
|
+
* All rights reserved.
|
3
|
+
*
|
4
|
+
* This package is an SSL implementation written
|
5
|
+
* by Eric Young (eay@cryptsoft.com).
|
6
|
+
* The implementation was written so as to conform with Netscapes SSL.
|
7
|
+
*
|
8
|
+
* This library is free for commercial and non-commercial use as long as
|
9
|
+
* the following conditions are aheared to. The following conditions
|
10
|
+
* apply to all code found in this distribution, be it the RC4, RSA,
|
11
|
+
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
12
|
+
* included with this distribution is covered by the same copyright terms
|
13
|
+
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
14
|
+
*
|
15
|
+
* Copyright remains Eric Young's, and as such any Copyright notices in
|
16
|
+
* the code are not to be removed.
|
17
|
+
* If this package is used in a product, Eric Young should be given attribution
|
18
|
+
* as the author of the parts of the library used.
|
19
|
+
* This can be in the form of a textual message at program startup or
|
20
|
+
* in documentation (online or textual) provided with the package.
|
21
|
+
*
|
22
|
+
* Redistribution and use in source and binary forms, with or without
|
23
|
+
* modification, are permitted provided that the following conditions
|
24
|
+
* are met:
|
25
|
+
* 1. Redistributions of source code must retain the copyright
|
26
|
+
* notice, this list of conditions and the following disclaimer.
|
27
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
28
|
+
* notice, this list of conditions and the following disclaimer in the
|
29
|
+
* documentation and/or other materials provided with the distribution.
|
30
|
+
* 3. All advertising materials mentioning features or use of this software
|
31
|
+
* must display the following acknowledgement:
|
32
|
+
* "This product includes cryptographic software written by
|
33
|
+
* Eric Young (eay@cryptsoft.com)"
|
34
|
+
* The word 'cryptographic' can be left out if the rouines from the library
|
35
|
+
* being used are not cryptographic related :-).
|
36
|
+
* 4. If you include any Windows specific code (or a derivative thereof) from
|
37
|
+
* the apps directory (application code) you must include an acknowledgement:
|
38
|
+
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
39
|
+
*
|
40
|
+
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
41
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
42
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
43
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
44
|
+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
45
|
+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
46
|
+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
47
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
48
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
49
|
+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
50
|
+
* SUCH DAMAGE.
|
51
|
+
*
|
52
|
+
* The licence and distribution terms for any publically available version or
|
53
|
+
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
54
|
+
* copied and put under another distribution licence
|
55
|
+
* [including the GNU Public Licence.] */
|
56
|
+
|
57
|
+
#include <openssl/ssl.h>
|
58
|
+
|
59
|
+
#include <openssl/err.h>
|
60
|
+
#include <openssl/rsa.h>
|
61
|
+
|
62
|
+
|
63
|
+
/* This function has been converted to C++ to check if all of libssl's
|
64
|
+
* consumers' toolchains are capable of handling C++11. Once all problems in
|
65
|
+
* consumer toolchains are found and fixed, we will convert the rest of
|
66
|
+
* libssl. */
|
67
|
+
|
68
|
+
int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const uint8_t *der, size_t der_len) {
|
69
|
+
bssl::UniquePtr<RSA> rsa(RSA_private_key_from_bytes(der, der_len));
|
70
|
+
if (!rsa) {
|
71
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_ASN1_LIB);
|
72
|
+
return 0;
|
73
|
+
}
|
74
|
+
|
75
|
+
return SSL_use_RSAPrivateKey(ssl, rsa.get());
|
76
|
+
}
|
@@ -160,35 +160,42 @@ static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *session);
|
|
160
160
|
static void SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *session);
|
161
161
|
static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *session, int lock);
|
162
162
|
|
163
|
-
SSL_SESSION *
|
163
|
+
SSL_SESSION *ssl_session_new(const SSL_X509_METHOD *x509_method) {
|
164
164
|
SSL_SESSION *session = OPENSSL_malloc(sizeof(SSL_SESSION));
|
165
165
|
if (session == NULL) {
|
166
166
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
167
167
|
return 0;
|
168
168
|
}
|
169
|
-
|
169
|
+
OPENSSL_memset(session, 0, sizeof(SSL_SESSION));
|
170
170
|
|
171
|
+
session->x509_method = x509_method;
|
171
172
|
session->verify_result = X509_V_ERR_INVALID_CALL;
|
172
173
|
session->references = 1;
|
173
174
|
session->timeout = SSL_DEFAULT_SESSION_TIMEOUT;
|
175
|
+
session->auth_timeout = SSL_DEFAULT_SESSION_TIMEOUT;
|
174
176
|
session->time = (long)time(NULL);
|
175
177
|
CRYPTO_new_ex_data(&session->ex_data);
|
176
178
|
return session;
|
177
179
|
}
|
178
180
|
|
181
|
+
SSL_SESSION *SSL_SESSION_new(const SSL_CTX *ctx) {
|
182
|
+
return ssl_session_new(ctx->x509_method);
|
183
|
+
}
|
184
|
+
|
179
185
|
SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *session, int dup_flags) {
|
180
|
-
SSL_SESSION *new_session =
|
186
|
+
SSL_SESSION *new_session = ssl_session_new(session->x509_method);
|
181
187
|
if (new_session == NULL) {
|
182
188
|
goto err;
|
183
189
|
}
|
184
190
|
|
191
|
+
new_session->is_server = session->is_server;
|
185
192
|
new_session->ssl_version = session->ssl_version;
|
186
193
|
new_session->sid_ctx_length = session->sid_ctx_length;
|
187
|
-
|
194
|
+
OPENSSL_memcpy(new_session->sid_ctx, session->sid_ctx, session->sid_ctx_length);
|
188
195
|
|
189
196
|
/* Copy the key material. */
|
190
197
|
new_session->master_key_length = session->master_key_length;
|
191
|
-
|
198
|
+
OPENSSL_memcpy(new_session->master_key, session->master_key,
|
192
199
|
session->master_key_length);
|
193
200
|
new_session->cipher = session->cipher;
|
194
201
|
|
@@ -199,16 +206,24 @@ SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *session, int dup_flags) {
|
|
199
206
|
goto err;
|
200
207
|
}
|
201
208
|
}
|
202
|
-
if (session->
|
203
|
-
|
204
|
-
new_session->
|
205
|
-
}
|
206
|
-
if (session->cert_chain != NULL) {
|
207
|
-
new_session->cert_chain = X509_chain_up_ref(session->cert_chain);
|
208
|
-
if (new_session->cert_chain == NULL) {
|
209
|
+
if (session->certs != NULL) {
|
210
|
+
new_session->certs = sk_CRYPTO_BUFFER_new_null();
|
211
|
+
if (new_session->certs == NULL) {
|
209
212
|
goto err;
|
210
213
|
}
|
214
|
+
for (size_t i = 0; i < sk_CRYPTO_BUFFER_num(session->certs); i++) {
|
215
|
+
CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(session->certs, i);
|
216
|
+
if (!sk_CRYPTO_BUFFER_push(new_session->certs, buffer)) {
|
217
|
+
goto err;
|
218
|
+
}
|
219
|
+
CRYPTO_BUFFER_up_ref(buffer);
|
220
|
+
}
|
211
221
|
}
|
222
|
+
|
223
|
+
if (!session->x509_method->session_dup(new_session, session)) {
|
224
|
+
goto err;
|
225
|
+
}
|
226
|
+
|
212
227
|
new_session->verify_result = session->verify_result;
|
213
228
|
|
214
229
|
new_session->ocsp_response_length = session->ocsp_response_length;
|
@@ -231,36 +246,49 @@ SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *session, int dup_flags) {
|
|
231
246
|
}
|
232
247
|
}
|
233
248
|
|
234
|
-
|
249
|
+
OPENSSL_memcpy(new_session->peer_sha256, session->peer_sha256,
|
250
|
+
SHA256_DIGEST_LENGTH);
|
235
251
|
new_session->peer_sha256_valid = session->peer_sha256_valid;
|
236
252
|
|
253
|
+
if (session->tlsext_hostname != NULL) {
|
254
|
+
new_session->tlsext_hostname = BUF_strdup(session->tlsext_hostname);
|
255
|
+
if (new_session->tlsext_hostname == NULL) {
|
256
|
+
goto err;
|
257
|
+
}
|
258
|
+
}
|
259
|
+
|
260
|
+
new_session->peer_signature_algorithm = session->peer_signature_algorithm;
|
261
|
+
|
237
262
|
new_session->timeout = session->timeout;
|
263
|
+
new_session->auth_timeout = session->auth_timeout;
|
238
264
|
new_session->time = session->time;
|
239
265
|
|
240
266
|
/* Copy non-authentication connection properties. */
|
241
267
|
if (dup_flags & SSL_SESSION_INCLUDE_NONAUTH) {
|
242
268
|
new_session->session_id_length = session->session_id_length;
|
243
|
-
|
244
|
-
|
269
|
+
OPENSSL_memcpy(new_session->session_id, session->session_id,
|
270
|
+
session->session_id_length);
|
245
271
|
|
246
|
-
new_session->
|
272
|
+
new_session->group_id = session->group_id;
|
247
273
|
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
goto err;
|
252
|
-
}
|
253
|
-
}
|
254
|
-
|
255
|
-
memcpy(new_session->original_handshake_hash,
|
256
|
-
session->original_handshake_hash,
|
257
|
-
session->original_handshake_hash_len);
|
274
|
+
OPENSSL_memcpy(new_session->original_handshake_hash,
|
275
|
+
session->original_handshake_hash,
|
276
|
+
session->original_handshake_hash_len);
|
258
277
|
new_session->original_handshake_hash_len =
|
259
278
|
session->original_handshake_hash_len;
|
260
279
|
new_session->tlsext_tick_lifetime_hint = session->tlsext_tick_lifetime_hint;
|
261
|
-
new_session->ticket_flags = session->ticket_flags;
|
262
280
|
new_session->ticket_age_add = session->ticket_age_add;
|
281
|
+
new_session->ticket_max_early_data = session->ticket_max_early_data;
|
263
282
|
new_session->extended_master_secret = session->extended_master_secret;
|
283
|
+
|
284
|
+
if (session->early_alpn != NULL) {
|
285
|
+
new_session->early_alpn =
|
286
|
+
BUF_memdup(session->early_alpn, session->early_alpn_len);
|
287
|
+
if (new_session->early_alpn == NULL) {
|
288
|
+
goto err;
|
289
|
+
}
|
290
|
+
}
|
291
|
+
new_session->early_alpn_len = session->early_alpn_len;
|
264
292
|
}
|
265
293
|
|
266
294
|
/* Copy the ticket. */
|
@@ -286,6 +314,52 @@ err:
|
|
286
314
|
return 0;
|
287
315
|
}
|
288
316
|
|
317
|
+
void ssl_session_rebase_time(SSL *ssl, SSL_SESSION *session) {
|
318
|
+
struct timeval now;
|
319
|
+
ssl_get_current_time(ssl, &now);
|
320
|
+
|
321
|
+
/* To avoid overflows and underflows, if we've gone back in time or any value
|
322
|
+
* is negative, update the time, but mark the session expired. */
|
323
|
+
if (session->time > now.tv_sec ||
|
324
|
+
session->time < 0 ||
|
325
|
+
now.tv_sec < 0) {
|
326
|
+
session->time = now.tv_sec;
|
327
|
+
session->timeout = 0;
|
328
|
+
session->auth_timeout = 0;
|
329
|
+
return;
|
330
|
+
}
|
331
|
+
|
332
|
+
/* Adjust the session time and timeouts. If the session has already expired,
|
333
|
+
* clamp the timeouts at zero. */
|
334
|
+
long delta = now.tv_sec - session->time;
|
335
|
+
session->time = now.tv_sec;
|
336
|
+
if (session->timeout < delta) {
|
337
|
+
session->timeout = 0;
|
338
|
+
} else {
|
339
|
+
session->timeout -= delta;
|
340
|
+
}
|
341
|
+
if (session->auth_timeout < delta) {
|
342
|
+
session->auth_timeout = 0;
|
343
|
+
} else {
|
344
|
+
session->auth_timeout -= delta;
|
345
|
+
}
|
346
|
+
}
|
347
|
+
|
348
|
+
void ssl_session_renew_timeout(SSL *ssl, SSL_SESSION *session, long timeout) {
|
349
|
+
/* Rebase the timestamp relative to the current time so |timeout| is measured
|
350
|
+
* correctly. */
|
351
|
+
ssl_session_rebase_time(ssl, session);
|
352
|
+
|
353
|
+
if (session->timeout > timeout) {
|
354
|
+
return;
|
355
|
+
}
|
356
|
+
|
357
|
+
session->timeout = timeout;
|
358
|
+
if (session->timeout > session->auth_timeout) {
|
359
|
+
session->timeout = session->auth_timeout;
|
360
|
+
}
|
361
|
+
}
|
362
|
+
|
289
363
|
int SSL_SESSION_up_ref(SSL_SESSION *session) {
|
290
364
|
CRYPTO_refcount_inc(&session->references);
|
291
365
|
return 1;
|
@@ -301,13 +375,14 @@ void SSL_SESSION_free(SSL_SESSION *session) {
|
|
301
375
|
|
302
376
|
OPENSSL_cleanse(session->master_key, sizeof(session->master_key));
|
303
377
|
OPENSSL_cleanse(session->session_id, sizeof(session->session_id));
|
304
|
-
|
305
|
-
|
378
|
+
sk_CRYPTO_BUFFER_pop_free(session->certs, CRYPTO_BUFFER_free);
|
379
|
+
session->x509_method->session_clear(session);
|
306
380
|
OPENSSL_free(session->tlsext_hostname);
|
307
381
|
OPENSSL_free(session->tlsext_tick);
|
308
382
|
OPENSSL_free(session->tlsext_signed_cert_timestamp_list);
|
309
383
|
OPENSSL_free(session->ocsp_response);
|
310
384
|
OPENSSL_free(session->psk_identity);
|
385
|
+
OPENSSL_free(session->early_alpn);
|
311
386
|
OPENSSL_cleanse(session, sizeof(*session));
|
312
387
|
OPENSSL_free(session);
|
313
388
|
}
|
@@ -333,7 +408,7 @@ long SSL_SESSION_get_time(const SSL_SESSION *session) {
|
|
333
408
|
}
|
334
409
|
|
335
410
|
X509 *SSL_SESSION_get0_peer(const SSL_SESSION *session) {
|
336
|
-
return session->
|
411
|
+
return session->x509_peer;
|
337
412
|
}
|
338
413
|
|
339
414
|
size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, uint8_t *out,
|
@@ -345,7 +420,7 @@ size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, uint8_t *out,
|
|
345
420
|
if (max_out > (size_t)session->master_key_length) {
|
346
421
|
max_out = (size_t)session->master_key_length;
|
347
422
|
}
|
348
|
-
|
423
|
+
OPENSSL_memcpy(out, session->master_key, max_out);
|
349
424
|
return max_out;
|
350
425
|
}
|
351
426
|
|
@@ -364,18 +439,20 @@ long SSL_SESSION_set_timeout(SSL_SESSION *session, long timeout) {
|
|
364
439
|
}
|
365
440
|
|
366
441
|
session->timeout = timeout;
|
442
|
+
session->auth_timeout = timeout;
|
367
443
|
return 1;
|
368
444
|
}
|
369
445
|
|
370
446
|
int SSL_SESSION_set1_id_context(SSL_SESSION *session, const uint8_t *sid_ctx,
|
371
|
-
|
372
|
-
if (sid_ctx_len >
|
447
|
+
size_t sid_ctx_len) {
|
448
|
+
if (sid_ctx_len > sizeof(session->sid_ctx)) {
|
373
449
|
OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
|
374
450
|
return 0;
|
375
451
|
}
|
376
452
|
|
377
|
-
session->
|
378
|
-
|
453
|
+
assert(sizeof(session->sid_ctx) < 256);
|
454
|
+
session->sid_ctx_length = (uint8_t)sid_ctx_len;
|
455
|
+
OPENSSL_memcpy(session->sid_ctx, sid_ctx, sid_ctx_len);
|
379
456
|
|
380
457
|
return 1;
|
381
458
|
}
|
@@ -391,8 +468,8 @@ SSL_SESSION *SSL_get_session(const SSL *ssl) {
|
|
391
468
|
if (!SSL_in_init(ssl)) {
|
392
469
|
return ssl->s3->established_session;
|
393
470
|
}
|
394
|
-
if (ssl->s3->new_session != NULL) {
|
395
|
-
return ssl->s3->new_session;
|
471
|
+
if (ssl->s3->hs->new_session != NULL) {
|
472
|
+
return ssl->s3->hs->new_session;
|
396
473
|
}
|
397
474
|
return ssl->session;
|
398
475
|
}
|
@@ -425,31 +502,51 @@ void *SSL_SESSION_get_ex_data(const SSL_SESSION *session, int idx) {
|
|
425
502
|
return CRYPTO_get_ex_data(&session->ex_data, idx);
|
426
503
|
}
|
427
504
|
|
428
|
-
|
505
|
+
const EVP_MD *SSL_SESSION_get_digest(const SSL_SESSION *session,
|
506
|
+
const SSL *ssl) {
|
507
|
+
uint16_t version;
|
508
|
+
if (!ssl->method->version_from_wire(&version, session->ssl_version)) {
|
509
|
+
return NULL;
|
510
|
+
}
|
511
|
+
|
512
|
+
return ssl_get_handshake_digest(session->cipher->algorithm_prf, version);
|
513
|
+
}
|
514
|
+
|
515
|
+
int ssl_get_new_session(SSL_HANDSHAKE *hs, int is_server) {
|
516
|
+
SSL *const ssl = hs->ssl;
|
429
517
|
if (ssl->mode & SSL_MODE_NO_SESSION_CREATION) {
|
430
518
|
OPENSSL_PUT_ERROR(SSL, SSL_R_SESSION_MAY_NOT_BE_CREATED);
|
431
519
|
return 0;
|
432
520
|
}
|
433
521
|
|
434
|
-
SSL_SESSION *session =
|
522
|
+
SSL_SESSION *session = ssl_session_new(ssl->ctx->x509_method);
|
435
523
|
if (session == NULL) {
|
436
524
|
return 0;
|
437
525
|
}
|
438
526
|
|
527
|
+
session->is_server = is_server;
|
528
|
+
session->ssl_version = ssl->version;
|
529
|
+
|
439
530
|
/* Fill in the time from the |SSL_CTX|'s clock. */
|
440
531
|
struct timeval now;
|
441
532
|
ssl_get_current_time(ssl, &now);
|
442
533
|
session->time = now.tv_sec;
|
443
534
|
|
444
|
-
|
445
|
-
if (
|
535
|
+
uint16_t version = ssl3_protocol_version(ssl);
|
536
|
+
if (version >= TLS1_3_VERSION) {
|
537
|
+
/* TLS 1.3 uses tickets as authenticators, so we are willing to use them for
|
538
|
+
* longer. */
|
539
|
+
session->timeout = ssl->initial_ctx->session_psk_dhe_timeout;
|
540
|
+
session->auth_timeout = SSL_DEFAULT_SESSION_AUTH_TIMEOUT;
|
541
|
+
} else {
|
542
|
+
/* TLS 1.2 resumption does not incorporate new key material, so we use a
|
543
|
+
* much shorter timeout. */
|
446
544
|
session->timeout = ssl->initial_ctx->session_timeout;
|
545
|
+
session->auth_timeout = ssl->initial_ctx->session_timeout;
|
447
546
|
}
|
448
547
|
|
449
|
-
session->ssl_version = ssl->version;
|
450
|
-
|
451
548
|
if (is_server) {
|
452
|
-
if (
|
549
|
+
if (hs->ticket_expected || version >= TLS1_3_VERSION) {
|
453
550
|
/* Don't set session IDs for sessions resumed with tickets. This will keep
|
454
551
|
* them out of the session cache. */
|
455
552
|
session->session_id_length = 0;
|
@@ -459,31 +556,24 @@ int ssl_get_new_session(SSL *ssl, int is_server) {
|
|
459
556
|
goto err;
|
460
557
|
}
|
461
558
|
}
|
462
|
-
|
463
|
-
if (ssl->tlsext_hostname != NULL) {
|
464
|
-
session->tlsext_hostname = BUF_strdup(ssl->tlsext_hostname);
|
465
|
-
if (session->tlsext_hostname == NULL) {
|
466
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
467
|
-
goto err;
|
468
|
-
}
|
469
|
-
}
|
470
559
|
} else {
|
471
560
|
session->session_id_length = 0;
|
472
561
|
}
|
473
562
|
|
474
|
-
if (ssl->sid_ctx_length > sizeof(session->sid_ctx)) {
|
563
|
+
if (ssl->cert->sid_ctx_length > sizeof(session->sid_ctx)) {
|
475
564
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
476
565
|
goto err;
|
477
566
|
}
|
478
|
-
|
479
|
-
|
567
|
+
OPENSSL_memcpy(session->sid_ctx, ssl->cert->sid_ctx,
|
568
|
+
ssl->cert->sid_ctx_length);
|
569
|
+
session->sid_ctx_length = ssl->cert->sid_ctx_length;
|
480
570
|
|
481
571
|
/* The session is marked not resumable until it is completely filled in. */
|
482
572
|
session->not_resumable = 1;
|
483
573
|
session->verify_result = X509_V_ERR_INVALID_CALL;
|
484
574
|
|
485
|
-
SSL_SESSION_free(
|
486
|
-
|
575
|
+
SSL_SESSION_free(hs->new_session);
|
576
|
+
hs->new_session = session;
|
487
577
|
ssl_set_session(ssl, NULL);
|
488
578
|
return 1;
|
489
579
|
|
@@ -538,7 +628,7 @@ int ssl_encrypt_ticket(SSL *ssl, CBB *out, const SSL_SESSION *session) {
|
|
538
628
|
NULL)) {
|
539
629
|
goto err;
|
540
630
|
}
|
541
|
-
|
631
|
+
OPENSSL_memcpy(key_name, tctx->tlsext_tick_key_name, 16);
|
542
632
|
}
|
543
633
|
|
544
634
|
uint8_t *ptr;
|
@@ -550,7 +640,7 @@ int ssl_encrypt_ticket(SSL *ssl, CBB *out, const SSL_SESSION *session) {
|
|
550
640
|
|
551
641
|
size_t total = 0;
|
552
642
|
#if defined(BORINGSSL_UNSAFE_FUZZER_MODE)
|
553
|
-
|
643
|
+
OPENSSL_memcpy(ptr, session_buf, session_len);
|
554
644
|
total = session_len;
|
555
645
|
#else
|
556
646
|
int len;
|
@@ -589,8 +679,9 @@ int ssl_session_is_context_valid(const SSL *ssl, const SSL_SESSION *session) {
|
|
589
679
|
return 0;
|
590
680
|
}
|
591
681
|
|
592
|
-
return session->sid_ctx_length == ssl->sid_ctx_length &&
|
593
|
-
|
682
|
+
return session->sid_ctx_length == ssl->cert->sid_ctx_length &&
|
683
|
+
OPENSSL_memcmp(session->sid_ctx, ssl->cert->sid_ctx,
|
684
|
+
ssl->cert->sid_ctx_length) == 0;
|
594
685
|
}
|
595
686
|
|
596
687
|
int ssl_session_is_time_valid(const SSL *ssl, const SSL_SESSION *session) {
|
@@ -600,7 +691,36 @@ int ssl_session_is_time_valid(const SSL *ssl, const SSL_SESSION *session) {
|
|
600
691
|
|
601
692
|
struct timeval now;
|
602
693
|
ssl_get_current_time(ssl, &now);
|
603
|
-
|
694
|
+
|
695
|
+
/* Reject tickets from the future to avoid underflow. */
|
696
|
+
if ((long)now.tv_sec < session->time) {
|
697
|
+
return 0;
|
698
|
+
}
|
699
|
+
|
700
|
+
return session->timeout > (long)now.tv_sec - session->time;
|
701
|
+
}
|
702
|
+
|
703
|
+
int ssl_session_is_resumable(const SSL_HANDSHAKE *hs,
|
704
|
+
const SSL_SESSION *session) {
|
705
|
+
const SSL *const ssl = hs->ssl;
|
706
|
+
return ssl_session_is_context_valid(ssl, session) &&
|
707
|
+
/* The session must have been created by the same type of end point as
|
708
|
+
* we're now using it with. */
|
709
|
+
ssl->server == session->is_server &&
|
710
|
+
/* The session must not be expired. */
|
711
|
+
ssl_session_is_time_valid(ssl, session) &&
|
712
|
+
/* Only resume if the session's version matches the negotiated
|
713
|
+
* version. */
|
714
|
+
ssl->version == session->ssl_version &&
|
715
|
+
/* Only resume if the session's cipher matches the negotiated one. */
|
716
|
+
hs->new_cipher == session->cipher &&
|
717
|
+
/* If the session contains a client certificate (either the full
|
718
|
+
* certificate or just the hash) then require that the form of the
|
719
|
+
* certificate matches the current configuration. */
|
720
|
+
((sk_CRYPTO_BUFFER_num(session->certs) == 0 &&
|
721
|
+
!session->peer_sha256_valid) ||
|
722
|
+
session->peer_sha256_valid ==
|
723
|
+
ssl->retain_only_sha256_of_client_certs);
|
604
724
|
}
|
605
725
|
|
606
726
|
/* ssl_lookup_session looks up |session_id| in the session cache and sets
|
@@ -622,7 +742,7 @@ static enum ssl_session_result_t ssl_lookup_session(
|
|
622
742
|
SSL_SESSION data;
|
623
743
|
data.ssl_version = ssl->version;
|
624
744
|
data.session_id_length = session_id_len;
|
625
|
-
|
745
|
+
OPENSSL_memcpy(data.session_id, session_id, session_id_len);
|
626
746
|
|
627
747
|
CRYPTO_MUTEX_lock_read(&ssl->initial_ctx->lock);
|
628
748
|
session = lh_SSL_SESSION_retrieve(ssl->initial_ctx->sessions, &data);
|
@@ -663,15 +783,8 @@ static enum ssl_session_result_t ssl_lookup_session(
|
|
663
783
|
}
|
664
784
|
}
|
665
785
|
|
666
|
-
if (session
|
667
|
-
|
668
|
-
}
|
669
|
-
|
670
|
-
if (!ssl_session_is_context_valid(ssl, session)) {
|
671
|
-
/* The client did not offer a suitable ticket or session ID. */
|
672
|
-
SSL_SESSION_free(session);
|
673
|
-
session = NULL;
|
674
|
-
} else if (!ssl_session_is_time_valid(ssl, session)) {
|
786
|
+
if (session != NULL &&
|
787
|
+
!ssl_session_is_time_valid(ssl, session)) {
|
675
788
|
/* The session was from the cache, so remove it. */
|
676
789
|
SSL_CTX_remove_session(ssl->initial_ctx, session);
|
677
790
|
SSL_SESSION_free(session);
|
@@ -683,8 +796,8 @@ static enum ssl_session_result_t ssl_lookup_session(
|
|
683
796
|
}
|
684
797
|
|
685
798
|
enum ssl_session_result_t ssl_get_prev_session(
|
686
|
-
SSL *ssl, SSL_SESSION **out_session, int *
|
687
|
-
const
|
799
|
+
SSL *ssl, SSL_SESSION **out_session, int *out_tickets_supported,
|
800
|
+
int *out_renew_ticket, const SSL_CLIENT_HELLO *client_hello) {
|
688
801
|
/* This is used only by servers. */
|
689
802
|
assert(ssl->server);
|
690
803
|
SSL_SESSION *session = NULL;
|
@@ -696,28 +809,26 @@ enum ssl_session_result_t ssl_get_prev_session(
|
|
696
809
|
const int tickets_supported =
|
697
810
|
!(SSL_get_options(ssl) & SSL_OP_NO_TICKET) &&
|
698
811
|
ssl->version > SSL3_VERSION &&
|
699
|
-
SSL_early_callback_ctx_extension_get(
|
700
|
-
|
812
|
+
SSL_early_callback_ctx_extension_get(
|
813
|
+
client_hello, TLSEXT_TYPE_session_ticket, &ticket, &ticket_len);
|
701
814
|
if (tickets_supported && ticket_len > 0) {
|
702
815
|
if (!tls_process_ticket(ssl, &session, &renew_ticket, ticket, ticket_len,
|
703
|
-
|
816
|
+
client_hello->session_id,
|
817
|
+
client_hello->session_id_len)) {
|
704
818
|
return ssl_session_error;
|
705
819
|
}
|
706
820
|
} else {
|
707
821
|
/* The client didn't send a ticket, so the session ID is a real ID. */
|
708
822
|
enum ssl_session_result_t lookup_ret = ssl_lookup_session(
|
709
|
-
ssl, &session,
|
823
|
+
ssl, &session, client_hello->session_id, client_hello->session_id_len);
|
710
824
|
if (lookup_ret != ssl_session_success) {
|
711
825
|
return lookup_ret;
|
712
826
|
}
|
713
827
|
}
|
714
828
|
|
715
829
|
*out_session = session;
|
716
|
-
|
717
|
-
|
718
|
-
} else {
|
719
|
-
*out_send_ticket = tickets_supported;
|
720
|
-
}
|
830
|
+
*out_tickets_supported = tickets_supported;
|
831
|
+
*out_renew_ticket = renew_ticket;
|
721
832
|
return ssl_session_success;
|
722
833
|
}
|
723
834
|
|
@@ -800,7 +911,9 @@ static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *session, int lock) {
|
|
800
911
|
|
801
912
|
int SSL_set_session(SSL *ssl, SSL_SESSION *session) {
|
802
913
|
/* SSL_set_session may only be called before the handshake has started. */
|
803
|
-
if (ssl->
|
914
|
+
if (ssl->s3->initial_handshake_complete ||
|
915
|
+
ssl->s3->hs == NULL ||
|
916
|
+
ssl->s3->hs->state != SSL_ST_INIT) {
|
804
917
|
abort();
|
805
918
|
}
|
806
919
|
|
@@ -825,6 +938,11 @@ long SSL_CTX_set_timeout(SSL_CTX *ctx, long timeout) {
|
|
825
938
|
return 0;
|
826
939
|
}
|
827
940
|
|
941
|
+
/* Historically, zero was treated as |SSL_DEFAULT_SESSION_TIMEOUT|. */
|
942
|
+
if (timeout == 0) {
|
943
|
+
timeout = SSL_DEFAULT_SESSION_TIMEOUT;
|
944
|
+
}
|
945
|
+
|
828
946
|
long old_timeout = ctx->session_timeout;
|
829
947
|
ctx->session_timeout = timeout;
|
830
948
|
return old_timeout;
|
@@ -838,6 +956,10 @@ long SSL_CTX_get_timeout(const SSL_CTX *ctx) {
|
|
838
956
|
return ctx->session_timeout;
|
839
957
|
}
|
840
958
|
|
959
|
+
void SSL_CTX_set_session_psk_dhe_timeout(SSL_CTX *ctx, long timeout) {
|
960
|
+
ctx->session_psk_dhe_timeout = timeout;
|
961
|
+
}
|
962
|
+
|
841
963
|
typedef struct timeout_param_st {
|
842
964
|
SSL_CTX *ctx;
|
843
965
|
long time;
|
@@ -964,17 +1086,6 @@ void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type,
|
|
964
1086
|
return ctx->info_callback;
|
965
1087
|
}
|
966
1088
|
|
967
|
-
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*cb)(SSL *ssl,
|
968
|
-
X509 **out_x509,
|
969
|
-
EVP_PKEY **out_pkey)) {
|
970
|
-
ctx->client_cert_cb = cb;
|
971
|
-
}
|
972
|
-
|
973
|
-
int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **out_x509,
|
974
|
-
EVP_PKEY **out_pkey) {
|
975
|
-
return ctx->client_cert_cb;
|
976
|
-
}
|
977
|
-
|
978
1089
|
void SSL_CTX_set_channel_id_cb(SSL_CTX *ctx,
|
979
1090
|
void (*cb)(SSL *ssl, EVP_PKEY **pkey)) {
|
980
1091
|
ctx->channel_id_cb = cb;
|