grpc 1.9.1 → 1.10.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -125,14 +125,14 @@ extern "C" {
|
|
125
125
|
#endif
|
126
126
|
|
127
127
|
|
128
|
-
|
129
|
-
|
128
|
+
// These are kept to support clients that negotiates higher protocol versions
|
129
|
+
// using SSLv2 client hello records.
|
130
130
|
#define SSL2_MT_CLIENT_HELLO 1
|
131
131
|
#define SSL2_VERSION 0x0002
|
132
132
|
|
133
|
-
|
133
|
+
// Signalling cipher suite value from RFC 5746.
|
134
134
|
#define SSL3_CK_SCSV 0x030000FF
|
135
|
-
|
135
|
+
// Fallback signalling cipher suite value from RFC 7507.
|
136
136
|
#define SSL3_CK_FALLBACK_SCSV 0x03005600
|
137
137
|
|
138
138
|
#define SSL3_CK_RSA_NULL_MD5 0x03000001
|
@@ -208,11 +208,11 @@ extern "C" {
|
|
208
208
|
#define SSL3_HM_HEADER_LENGTH 4
|
209
209
|
|
210
210
|
#ifndef SSL3_ALIGN_PAYLOAD
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
211
|
+
// Some will argue that this increases memory footprint, but it's not actually
|
212
|
+
// true. Point is that malloc has to return at least 64-bit aligned pointers,
|
213
|
+
// meaning that allocating 5 bytes wastes 3 bytes in either case. Suggested
|
214
|
+
// pre-gaping simply moves these wasted bytes from the end of allocated region
|
215
|
+
// to its front, but makes data payload aligned, which improves performance.
|
216
216
|
#define SSL3_ALIGN_PAYLOAD 8
|
217
217
|
#else
|
218
218
|
#if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0
|
@@ -221,33 +221,33 @@ extern "C" {
|
|
221
221
|
#endif
|
222
222
|
#endif
|
223
223
|
|
224
|
-
|
225
|
-
|
226
|
-
|
224
|
+
// This is the maximum MAC (digest) size used by the SSL library. Currently
|
225
|
+
// maximum of 20 is used by SHA1, but we reserve for future extension for
|
226
|
+
// 512-bit hashes.
|
227
227
|
|
228
228
|
#define SSL3_RT_MAX_MD_SIZE 64
|
229
229
|
|
230
|
-
|
230
|
+
// Maximum block size used in all ciphersuites. Currently 16 for AES.
|
231
231
|
|
232
232
|
#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16
|
233
233
|
|
234
|
-
|
234
|
+
// Maximum plaintext length: defined by SSL/TLS standards
|
235
235
|
#define SSL3_RT_MAX_PLAIN_LENGTH 16384
|
236
|
-
|
236
|
+
// Maximum compression overhead: defined by SSL/TLS standards
|
237
237
|
#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024
|
238
238
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
239
|
+
// The standards give a maximum encryption overhead of 1024 bytes. In practice
|
240
|
+
// the value is lower than this. The overhead is the maximum number of padding
|
241
|
+
// bytes (256) plus the mac size.
|
242
|
+
//
|
243
|
+
// TODO(davidben): This derivation doesn't take AEADs into account, or TLS 1.1
|
244
|
+
// explicit nonces. It happens to work because |SSL3_RT_MAX_MD_SIZE| is larger
|
245
|
+
// than necessary and no true AEAD has variable overhead in TLS 1.2.
|
246
246
|
#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE)
|
247
247
|
|
248
|
-
|
249
|
-
|
250
|
-
|
248
|
+
// SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD is the maximum overhead in encrypting a
|
249
|
+
// record. This does not include the record header. Some ciphers use explicit
|
250
|
+
// nonces, so it includes both the AEAD overhead as well as the nonce.
|
251
251
|
#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \
|
252
252
|
(EVP_AEAD_MAX_OVERHEAD + EVP_AEAD_MAX_NONCE_LENGTH)
|
253
253
|
|
@@ -255,9 +255,9 @@ OPENSSL_COMPILE_ASSERT(
|
|
255
255
|
SSL3_RT_MAX_ENCRYPTED_OVERHEAD >= SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD,
|
256
256
|
max_overheads_are_consistent);
|
257
257
|
|
258
|
-
|
259
|
-
|
260
|
-
|
258
|
+
// SSL3_RT_MAX_COMPRESSED_LENGTH is an alias for
|
259
|
+
// |SSL3_RT_MAX_PLAIN_LENGTH|. Compression is gone, so don't include the
|
260
|
+
// compression overhead.
|
261
261
|
#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH
|
262
262
|
|
263
263
|
#define SSL3_RT_MAX_ENCRYPTED_LENGTH \
|
@@ -273,100 +273,27 @@ OPENSSL_COMPILE_ASSERT(
|
|
273
273
|
#define SSL3_RT_HANDSHAKE 22
|
274
274
|
#define SSL3_RT_APPLICATION_DATA 23
|
275
275
|
|
276
|
-
|
276
|
+
// Pseudo content type for SSL/TLS header info
|
277
277
|
#define SSL3_RT_HEADER 0x100
|
278
278
|
|
279
279
|
#define SSL3_AL_WARNING 1
|
280
280
|
#define SSL3_AL_FATAL 2
|
281
281
|
|
282
282
|
#define SSL3_AD_CLOSE_NOTIFY 0
|
283
|
-
#define SSL3_AD_UNEXPECTED_MESSAGE 10
|
284
|
-
#define SSL3_AD_BAD_RECORD_MAC 20
|
285
|
-
#define SSL3_AD_DECOMPRESSION_FAILURE 30
|
286
|
-
#define SSL3_AD_HANDSHAKE_FAILURE 40
|
283
|
+
#define SSL3_AD_UNEXPECTED_MESSAGE 10 // fatal
|
284
|
+
#define SSL3_AD_BAD_RECORD_MAC 20 // fatal
|
285
|
+
#define SSL3_AD_DECOMPRESSION_FAILURE 30 // fatal
|
286
|
+
#define SSL3_AD_HANDSHAKE_FAILURE 40 // fatal
|
287
287
|
#define SSL3_AD_NO_CERTIFICATE 41
|
288
288
|
#define SSL3_AD_BAD_CERTIFICATE 42
|
289
289
|
#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43
|
290
290
|
#define SSL3_AD_CERTIFICATE_REVOKED 44
|
291
291
|
#define SSL3_AD_CERTIFICATE_EXPIRED 45
|
292
292
|
#define SSL3_AD_CERTIFICATE_UNKNOWN 46
|
293
|
-
#define SSL3_AD_ILLEGAL_PARAMETER 47
|
294
|
-
#define SSL3_AD_INAPPROPRIATE_FALLBACK 86
|
293
|
+
#define SSL3_AD_ILLEGAL_PARAMETER 47 // fatal
|
294
|
+
#define SSL3_AD_INAPPROPRIATE_FALLBACK 86 // fatal
|
295
295
|
|
296
296
|
#define SSL3_CT_RSA_SIGN 1
|
297
|
-
#define SSL3_CT_DSS_SIGN 2
|
298
|
-
#define SSL3_CT_RSA_FIXED_DH 3
|
299
|
-
#define SSL3_CT_DSS_FIXED_DH 4
|
300
|
-
#define SSL3_CT_RSA_EPHEMERAL_DH 5
|
301
|
-
#define SSL3_CT_DSS_EPHEMERAL_DH 6
|
302
|
-
#define SSL3_CT_FORTEZZA_DMS 20
|
303
|
-
|
304
|
-
/* SSLv3 */
|
305
|
-
/* client */
|
306
|
-
/* extra state */
|
307
|
-
#define SSL3_ST_CW_FLUSH (0x100 | SSL_ST_CONNECT)
|
308
|
-
#define SSL3_ST_FALSE_START (0x101 | SSL_ST_CONNECT)
|
309
|
-
#define SSL3_ST_VERIFY_SERVER_CERT (0x102 | SSL_ST_CONNECT)
|
310
|
-
#define SSL3_ST_FINISH_CLIENT_HANDSHAKE (0x103 | SSL_ST_CONNECT)
|
311
|
-
/* write to server */
|
312
|
-
#define SSL3_ST_CW_CLNT_HELLO_A (0x110 | SSL_ST_CONNECT)
|
313
|
-
/* read from server */
|
314
|
-
#define SSL3_ST_CR_SRVR_HELLO_A (0x120 | SSL_ST_CONNECT)
|
315
|
-
#define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A (0x126 | SSL_ST_CONNECT)
|
316
|
-
#define SSL3_ST_CR_CERT_A (0x130 | SSL_ST_CONNECT)
|
317
|
-
#define SSL3_ST_CR_KEY_EXCH_A (0x140 | SSL_ST_CONNECT)
|
318
|
-
#define SSL3_ST_CR_KEY_EXCH_B (0x141 | SSL_ST_CONNECT)
|
319
|
-
#define SSL3_ST_CR_CERT_REQ_A (0x150 | SSL_ST_CONNECT)
|
320
|
-
#define SSL3_ST_CR_SRVR_DONE_A (0x160 | SSL_ST_CONNECT)
|
321
|
-
/* write to server */
|
322
|
-
#define SSL3_ST_CW_CERT_A (0x170 | SSL_ST_CONNECT)
|
323
|
-
#define SSL3_ST_CW_KEY_EXCH_A (0x180 | SSL_ST_CONNECT)
|
324
|
-
#define SSL3_ST_CW_CERT_VRFY_A (0x190 | SSL_ST_CONNECT)
|
325
|
-
#define SSL3_ST_CW_CERT_VRFY_B (0x191 | SSL_ST_CONNECT)
|
326
|
-
#define SSL3_ST_CW_CHANGE (0x1A0 | SSL_ST_CONNECT)
|
327
|
-
#define SSL3_ST_CW_NEXT_PROTO_A (0x200 | SSL_ST_CONNECT)
|
328
|
-
#define SSL3_ST_CW_CHANNEL_ID_A (0x220 | SSL_ST_CONNECT)
|
329
|
-
#define SSL3_ST_CW_FINISHED_A (0x1B0 | SSL_ST_CONNECT)
|
330
|
-
/* read from server */
|
331
|
-
#define SSL3_ST_CR_CHANGE (0x1C0 | SSL_ST_CONNECT)
|
332
|
-
#define SSL3_ST_CR_FINISHED_A (0x1D0 | SSL_ST_CONNECT)
|
333
|
-
#define SSL3_ST_CR_SESSION_TICKET_A (0x1E0 | SSL_ST_CONNECT)
|
334
|
-
#define SSL3_ST_CR_CERT_STATUS_A (0x1F0 | SSL_ST_CONNECT)
|
335
|
-
|
336
|
-
/* SSL3_ST_CR_SRVR_HELLO_B is a legacy alias for |SSL3_ST_CR_SRVR_HELLO_A| used
|
337
|
-
* by some consumers which check |SSL_state|. */
|
338
|
-
#define SSL3_ST_CR_SRVR_HELLO_B SSL3_ST_CR_SRVR_HELLO_A
|
339
|
-
|
340
|
-
/* server */
|
341
|
-
/* extra state */
|
342
|
-
#define SSL3_ST_SW_FLUSH (0x100 | SSL_ST_ACCEPT)
|
343
|
-
/* read from client */
|
344
|
-
#define SSL3_ST_SR_CLNT_HELLO_A (0x110 | SSL_ST_ACCEPT)
|
345
|
-
#define SSL3_ST_SR_CLNT_HELLO_B (0x111 | SSL_ST_ACCEPT)
|
346
|
-
#define SSL3_ST_SR_CLNT_HELLO_C (0x112 | SSL_ST_ACCEPT)
|
347
|
-
#define SSL3_ST_SR_CLNT_HELLO_D (0x113 | SSL_ST_ACCEPT)
|
348
|
-
/* write to client */
|
349
|
-
#define SSL3_ST_SW_SRVR_HELLO_A (0x130 | SSL_ST_ACCEPT)
|
350
|
-
#define SSL3_ST_SW_CERT_A (0x140 | SSL_ST_ACCEPT)
|
351
|
-
#define SSL3_ST_SW_KEY_EXCH_A (0x150 | SSL_ST_ACCEPT)
|
352
|
-
#define SSL3_ST_SW_KEY_EXCH_B (0x151 | SSL_ST_ACCEPT)
|
353
|
-
#define SSL3_ST_SW_CERT_REQ_A (0x160 | SSL_ST_ACCEPT)
|
354
|
-
#define SSL3_ST_SW_SRVR_DONE_A (0x170 | SSL_ST_ACCEPT)
|
355
|
-
/* read from client */
|
356
|
-
#define SSL3_ST_SR_CERT_A (0x180 | SSL_ST_ACCEPT)
|
357
|
-
#define SSL3_ST_SR_KEY_EXCH_A (0x190 | SSL_ST_ACCEPT)
|
358
|
-
#define SSL3_ST_SR_KEY_EXCH_B (0x191 | SSL_ST_ACCEPT)
|
359
|
-
#define SSL3_ST_SR_CERT_VRFY_A (0x1A0 | SSL_ST_ACCEPT)
|
360
|
-
#define SSL3_ST_SR_CHANGE (0x1B0 | SSL_ST_ACCEPT)
|
361
|
-
#define SSL3_ST_SR_NEXT_PROTO_A (0x210 | SSL_ST_ACCEPT)
|
362
|
-
#define SSL3_ST_SR_CHANNEL_ID_A (0x230 | SSL_ST_ACCEPT)
|
363
|
-
#define SSL3_ST_SR_FINISHED_A (0x1C0 | SSL_ST_ACCEPT)
|
364
|
-
|
365
|
-
/* write to client */
|
366
|
-
#define SSL3_ST_SW_CHANGE (0x1D0 | SSL_ST_ACCEPT)
|
367
|
-
#define SSL3_ST_SW_FINISHED_A (0x1E0 | SSL_ST_ACCEPT)
|
368
|
-
#define SSL3_ST_SW_SESSION_TICKET_A (0x1F0 | SSL_ST_ACCEPT)
|
369
|
-
#define SSL3_ST_SW_CERT_STATUS_A (0x200 | SSL_ST_ACCEPT)
|
370
297
|
|
371
298
|
#define SSL3_MT_HELLO_REQUEST 0
|
372
299
|
#define SSL3_MT_CLIENT_HELLO 1
|
@@ -388,27 +315,17 @@ OPENSSL_COMPILE_ASSERT(
|
|
388
315
|
#define SSL3_MT_CHANNEL_ID 203
|
389
316
|
#define DTLS1_MT_HELLO_VERIFY_REQUEST 3
|
390
317
|
|
391
|
-
|
392
|
-
|
318
|
+
// The following are legacy aliases for consumers which use
|
319
|
+
// |SSL_CTX_set_msg_callback|.
|
393
320
|
#define SSL3_MT_SERVER_DONE SSL3_MT_SERVER_HELLO_DONE
|
394
321
|
#define SSL3_MT_NEWSESSION_TICKET SSL3_MT_NEW_SESSION_TICKET
|
395
322
|
|
396
323
|
|
397
324
|
#define SSL3_MT_CCS 1
|
398
325
|
|
399
|
-
/* These are used when changing over to a new cipher */
|
400
|
-
#define SSL3_CC_READ 0x01
|
401
|
-
#define SSL3_CC_WRITE 0x02
|
402
|
-
#define SSL3_CC_CLIENT 0x10
|
403
|
-
#define SSL3_CC_SERVER 0x20
|
404
|
-
#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE)
|
405
|
-
#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ)
|
406
|
-
#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ)
|
407
|
-
#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE)
|
408
|
-
|
409
326
|
|
410
327
|
#ifdef __cplusplus
|
411
|
-
}
|
328
|
+
} // extern C
|
412
329
|
#endif
|
413
330
|
|
414
|
-
#endif
|
331
|
+
#endif // OPENSSL_HEADER_SSL3_H
|
@@ -66,45 +66,45 @@ extern "C" {
|
|
66
66
|
#endif
|
67
67
|
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
69
|
+
// A stack, in OpenSSL, is an array of pointers. They are the most commonly
|
70
|
+
// used collection object.
|
71
|
+
//
|
72
|
+
// This file defines macros for type safe use of the stack functions. A stack
|
73
|
+
// of a specific type of object has type |STACK_OF(type)|. This can be defined
|
74
|
+
// (once) with |DEFINE_STACK_OF(type)| and declared where needed with
|
75
|
+
// |DECLARE_STACK_OF(type)|. For example:
|
76
|
+
//
|
77
|
+
// typedef struct foo_st {
|
78
|
+
// int bar;
|
79
|
+
// } FOO;
|
80
|
+
//
|
81
|
+
// DEFINE_STACK_OF(FOO);
|
82
|
+
//
|
83
|
+
// Although note that the stack will contain /pointers/ to |FOO|.
|
84
|
+
//
|
85
|
+
// A macro will be defined for each of the sk_* functions below. For
|
86
|
+
// STACK_OF(FOO), the macros would be sk_FOO_new, sk_FOO_pop etc.
|
87
|
+
|
88
|
+
|
89
|
+
// stack_cmp_func is a comparison function that returns a value < 0, 0 or > 0
|
90
|
+
// if |*a| is less than, equal to or greater than |*b|, respectively. Note the
|
91
|
+
// extra indirection - the function is given a pointer to a pointer to the
|
92
|
+
// element. This differs from the usual qsort/bsearch comparison function.
|
93
93
|
typedef int (*stack_cmp_func)(const void **a, const void **b);
|
94
94
|
|
95
|
-
|
96
|
-
|
95
|
+
// stack_st contains an array of pointers. It is not designed to be used
|
96
|
+
// directly, rather the wrapper macros should be used.
|
97
97
|
typedef struct stack_st {
|
98
|
-
|
98
|
+
// num contains the number of valid pointers in |data|.
|
99
99
|
size_t num;
|
100
100
|
void **data;
|
101
|
-
|
102
|
-
|
101
|
+
// sorted is non-zero if the values pointed to by |data| are in ascending
|
102
|
+
// order, based on |comp|.
|
103
103
|
int sorted;
|
104
|
-
|
105
|
-
|
104
|
+
// num_alloc contains the number of pointers allocated in the buffer pointed
|
105
|
+
// to by |data|, which may be larger than |num|.
|
106
106
|
size_t num_alloc;
|
107
|
-
|
107
|
+
// comp is an optional comparison function.
|
108
108
|
stack_cmp_func comp;
|
109
109
|
} _STACK;
|
110
110
|
|
@@ -113,182 +113,373 @@ typedef struct stack_st {
|
|
113
113
|
|
114
114
|
#define DECLARE_STACK_OF(type) STACK_OF(type);
|
115
115
|
|
116
|
-
|
117
|
-
|
118
|
-
* types of stacks:
|
119
|
-
*
|
120
|
-
* STACK_OF:ACCESS_DESCRIPTION
|
121
|
-
* STACK_OF:ASN1_ADB_TABLE
|
122
|
-
* STACK_OF:ASN1_GENERALSTRING
|
123
|
-
* STACK_OF:ASN1_INTEGER
|
124
|
-
* STACK_OF:ASN1_OBJECT
|
125
|
-
* STACK_OF:ASN1_STRING_TABLE
|
126
|
-
* STACK_OF:ASN1_TYPE
|
127
|
-
* STACK_OF:ASN1_VALUE
|
128
|
-
* STACK_OF:BIO
|
129
|
-
* STACK_OF:BY_DIR_ENTRY
|
130
|
-
* STACK_OF:BY_DIR_HASH
|
131
|
-
* STACK_OF:CONF_VALUE
|
132
|
-
* STACK_OF:CRYPTO_BUFFER
|
133
|
-
* STACK_OF:CRYPTO_EX_DATA_FUNCS
|
134
|
-
* STACK_OF:DIST_POINT
|
135
|
-
* STACK_OF:GENERAL_NAME
|
136
|
-
* STACK_OF:GENERAL_NAMES
|
137
|
-
* STACK_OF:GENERAL_SUBTREE
|
138
|
-
* STACK_OF:POLICYINFO
|
139
|
-
* STACK_OF:POLICYQUALINFO
|
140
|
-
* STACK_OF:POLICY_MAPPING
|
141
|
-
* STACK_OF:RSA_additional_prime
|
142
|
-
* STACK_OF:SSL_COMP
|
143
|
-
* STACK_OF:SSL_CUSTOM_EXTENSION
|
144
|
-
* STACK_OF:STACK_OF_X509_NAME_ENTRY
|
145
|
-
* STACK_OF:SXNETID
|
146
|
-
* STACK_OF:X509
|
147
|
-
* STACK_OF:X509V3_EXT_METHOD
|
148
|
-
* STACK_OF:X509_ALGOR
|
149
|
-
* STACK_OF:X509_ATTRIBUTE
|
150
|
-
* STACK_OF:X509_CRL
|
151
|
-
* STACK_OF:X509_EXTENSION
|
152
|
-
* STACK_OF:X509_INFO
|
153
|
-
* STACK_OF:X509_LOOKUP
|
154
|
-
* STACK_OF:X509_NAME
|
155
|
-
* STACK_OF:X509_NAME_ENTRY
|
156
|
-
* STACK_OF:X509_OBJECT
|
157
|
-
* STACK_OF:X509_POLICY_DATA
|
158
|
-
* STACK_OF:X509_POLICY_NODE
|
159
|
-
* STACK_OF:X509_PURPOSE
|
160
|
-
* STACK_OF:X509_REVOKED
|
161
|
-
* STACK_OF:X509_TRUST
|
162
|
-
* STACK_OF:X509_VERIFY_PARAM
|
163
|
-
* STACK_OF:void
|
164
|
-
*
|
165
|
-
* Some stacks contain only const structures, so the stack should return const
|
166
|
-
* pointers to retain type-checking.
|
167
|
-
*
|
168
|
-
* CONST_STACK_OF:SRTP_PROTECTION_PROFILE
|
169
|
-
* CONST_STACK_OF:SSL_CIPHER */
|
170
|
-
|
171
|
-
|
172
|
-
/* Some stacks are special because, although we would like STACK_OF(char *),
|
173
|
-
* that would actually be a stack of pointers to char*, but we just want to
|
174
|
-
* point to the string directly. In this case we call them "special" and use
|
175
|
-
* |DEFINE_SPECIAL_STACK_OF(type)| */
|
176
|
-
#define DEFINE_SPECIAL_STACK_OF(type, inner) \
|
177
|
-
STACK_OF(type) { _STACK special_stack; }; \
|
178
|
-
OPENSSL_COMPILE_ASSERT(sizeof(type) == sizeof(void *), \
|
179
|
-
special_stack_of_non_pointer_##type);
|
180
|
-
|
181
|
-
typedef char *OPENSSL_STRING;
|
182
|
-
|
183
|
-
DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char)
|
116
|
+
// These are the raw stack functions, you shouldn't be using them. Rather you
|
117
|
+
// should be using the type stack macros implemented above.
|
184
118
|
|
185
|
-
|
186
|
-
|
187
|
-
* types of stacks:
|
188
|
-
*
|
189
|
-
* SPECIAL_STACK_OF:OPENSSL_STRING */
|
190
|
-
|
191
|
-
#define IN_STACK_H
|
192
|
-
#include <openssl/stack_macros.h>
|
193
|
-
#undef IN_STACK_H
|
194
|
-
|
195
|
-
|
196
|
-
/* These are the raw stack functions, you shouldn't be using them. Rather you
|
197
|
-
* should be using the type stack macros implemented above. */
|
198
|
-
|
199
|
-
/* sk_new creates a new, empty stack with the given comparison function, which
|
200
|
-
* may be zero. It returns the new stack or NULL on allocation failure. */
|
119
|
+
// sk_new creates a new, empty stack with the given comparison function, which
|
120
|
+
// may be zero. It returns the new stack or NULL on allocation failure.
|
201
121
|
OPENSSL_EXPORT _STACK *sk_new(stack_cmp_func comp);
|
202
122
|
|
203
|
-
|
204
|
-
|
123
|
+
// sk_new_null creates a new, empty stack. It returns the new stack or NULL on
|
124
|
+
// allocation failure.
|
205
125
|
OPENSSL_EXPORT _STACK *sk_new_null(void);
|
206
126
|
|
207
|
-
|
127
|
+
// sk_num returns the number of elements in |s|.
|
208
128
|
OPENSSL_EXPORT size_t sk_num(const _STACK *sk);
|
209
129
|
|
210
|
-
|
211
|
-
|
130
|
+
// sk_zero resets |sk| to the empty state but does nothing to free the
|
131
|
+
// individual elements themselves.
|
212
132
|
OPENSSL_EXPORT void sk_zero(_STACK *sk);
|
213
133
|
|
214
|
-
|
215
|
-
|
134
|
+
// sk_value returns the |i|th pointer in |sk|, or NULL if |i| is out of
|
135
|
+
// range.
|
216
136
|
OPENSSL_EXPORT void *sk_value(const _STACK *sk, size_t i);
|
217
137
|
|
218
|
-
|
219
|
-
|
138
|
+
// sk_set sets the |i|th pointer in |sk| to |p| and returns |p|. If |i| is out
|
139
|
+
// of range, it returns NULL.
|
220
140
|
OPENSSL_EXPORT void *sk_set(_STACK *sk, size_t i, void *p);
|
221
141
|
|
222
|
-
|
223
|
-
|
142
|
+
// sk_free frees the given stack and array of pointers, but does nothing to
|
143
|
+
// free the individual elements. Also see |sk_pop_free|.
|
224
144
|
OPENSSL_EXPORT void sk_free(_STACK *sk);
|
225
145
|
|
226
|
-
|
227
|
-
|
146
|
+
// sk_pop_free calls |free_func| on each element in the stack and then frees
|
147
|
+
// the stack itself.
|
228
148
|
OPENSSL_EXPORT void sk_pop_free(_STACK *sk, void (*free_func)(void *));
|
229
149
|
|
230
|
-
|
231
|
-
|
232
|
-
|
150
|
+
// sk_insert inserts |p| into the stack at index |where|, moving existing
|
151
|
+
// elements if needed. It returns the length of the new stack, or zero on
|
152
|
+
// error.
|
233
153
|
OPENSSL_EXPORT size_t sk_insert(_STACK *sk, void *p, size_t where);
|
234
154
|
|
235
|
-
|
236
|
-
|
237
|
-
|
155
|
+
// sk_delete removes the pointer at index |where|, moving other elements down
|
156
|
+
// if needed. It returns the removed pointer, or NULL if |where| is out of
|
157
|
+
// range.
|
238
158
|
OPENSSL_EXPORT void *sk_delete(_STACK *sk, size_t where);
|
239
159
|
|
240
|
-
|
241
|
-
|
242
|
-
|
160
|
+
// sk_delete_ptr removes, at most, one instance of |p| from the stack based on
|
161
|
+
// pointer equality. If an instance of |p| is found then |p| is returned,
|
162
|
+
// otherwise it returns NULL.
|
243
163
|
OPENSSL_EXPORT void *sk_delete_ptr(_STACK *sk, void *p);
|
244
164
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
165
|
+
// sk_find returns the first value in the stack equal to |p|. If a comparison
|
166
|
+
// function has been set on the stack, then equality is defined by it and the
|
167
|
+
// stack will be sorted if need be so that a binary search can be used.
|
168
|
+
// Otherwise pointer equality is used. If a matching element is found, its
|
169
|
+
// index is written to |*out_index| (if |out_index| is not NULL) and one is
|
170
|
+
// returned. Otherwise zero is returned.
|
251
171
|
OPENSSL_EXPORT int sk_find(_STACK *sk, size_t *out_index, void *p);
|
252
172
|
|
253
|
-
|
254
|
-
|
173
|
+
// sk_shift removes and returns the first element in the stack, or returns NULL
|
174
|
+
// if the stack is empty.
|
255
175
|
OPENSSL_EXPORT void *sk_shift(_STACK *sk);
|
256
176
|
|
257
|
-
|
258
|
-
|
177
|
+
// sk_push appends |p| to the stack and returns the length of the new stack, or
|
178
|
+
// 0 on allocation failure.
|
259
179
|
OPENSSL_EXPORT size_t sk_push(_STACK *sk, void *p);
|
260
180
|
|
261
|
-
|
262
|
-
|
181
|
+
// sk_pop returns and removes the last element on the stack, or NULL if the
|
182
|
+
// stack is empty.
|
263
183
|
OPENSSL_EXPORT void *sk_pop(_STACK *sk);
|
264
184
|
|
265
|
-
|
266
|
-
|
185
|
+
// sk_dup performs a shallow copy of a stack and returns the new stack, or NULL
|
186
|
+
// on error.
|
267
187
|
OPENSSL_EXPORT _STACK *sk_dup(const _STACK *sk);
|
268
188
|
|
269
|
-
|
270
|
-
|
271
|
-
|
189
|
+
// sk_sort sorts the elements of |sk| into ascending order based on the
|
190
|
+
// comparison function. The stack maintains a |sorted| flag and sorting an
|
191
|
+
// already sorted stack is a no-op.
|
272
192
|
OPENSSL_EXPORT void sk_sort(_STACK *sk);
|
273
193
|
|
274
|
-
|
275
|
-
|
194
|
+
// sk_is_sorted returns one if |sk| is known to be sorted and zero
|
195
|
+
// otherwise.
|
276
196
|
OPENSSL_EXPORT int sk_is_sorted(const _STACK *sk);
|
277
197
|
|
278
|
-
|
279
|
-
|
198
|
+
// sk_set_cmp_func sets the comparison function to be used by |sk| and returns
|
199
|
+
// the previous one.
|
280
200
|
OPENSSL_EXPORT stack_cmp_func sk_set_cmp_func(_STACK *sk, stack_cmp_func comp);
|
281
201
|
|
282
|
-
|
283
|
-
|
284
|
-
|
202
|
+
// sk_deep_copy performs a copy of |sk| and of each of the non-NULL elements in
|
203
|
+
// |sk| by using |copy_func|. If an error occurs, |free_func| is used to free
|
204
|
+
// any copies already made and NULL is returned.
|
285
205
|
OPENSSL_EXPORT _STACK *sk_deep_copy(const _STACK *sk,
|
286
206
|
void *(*copy_func)(void *),
|
287
207
|
void (*free_func)(void *));
|
288
208
|
|
289
209
|
|
210
|
+
// Defining stack types.
|
211
|
+
//
|
212
|
+
// This set of macros is used to emit the typed functions that act on a
|
213
|
+
// |STACK_OF(T)|.
|
214
|
+
|
215
|
+
#if !defined(BORINGSSL_NO_CXX)
|
216
|
+
extern "C++" {
|
217
|
+
namespace bssl {
|
218
|
+
namespace internal {
|
219
|
+
template <typename T>
|
220
|
+
struct StackTraits {};
|
221
|
+
}
|
222
|
+
}
|
223
|
+
}
|
224
|
+
|
225
|
+
#define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const) \
|
226
|
+
extern "C++" { \
|
227
|
+
namespace bssl { \
|
228
|
+
namespace internal { \
|
229
|
+
template <> \
|
230
|
+
struct StackTraits<STACK_OF(name)> { \
|
231
|
+
static constexpr bool kIsStack = true; \
|
232
|
+
using Type = type; \
|
233
|
+
static constexpr bool kIsConst = is_const; \
|
234
|
+
}; \
|
235
|
+
} \
|
236
|
+
} \
|
237
|
+
}
|
238
|
+
|
239
|
+
#else
|
240
|
+
#define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const)
|
241
|
+
#endif
|
242
|
+
|
243
|
+
// Stack functions must be tagged unused to support file-local stack types.
|
244
|
+
// Clang's -Wunused-function only allows unused static inline functions if they
|
245
|
+
// are defined in a header.
|
246
|
+
|
247
|
+
#define BORINGSSL_DEFINE_STACK_OF_IMPL(name, ptrtype, constptrtype) \
|
248
|
+
DECLARE_STACK_OF(name); \
|
249
|
+
\
|
250
|
+
typedef int (*stack_##name##_cmp_func)(constptrtype *a, constptrtype *b); \
|
251
|
+
\
|
252
|
+
static inline OPENSSL_UNUSED STACK_OF(name) * \
|
253
|
+
sk_##name##_new(stack_##name##_cmp_func comp) { \
|
254
|
+
return (STACK_OF(name) *)sk_new((stack_cmp_func)comp); \
|
255
|
+
} \
|
256
|
+
\
|
257
|
+
static inline OPENSSL_UNUSED STACK_OF(name) *sk_##name##_new_null(void) { \
|
258
|
+
return (STACK_OF(name) *)sk_new_null(); \
|
259
|
+
} \
|
260
|
+
\
|
261
|
+
static inline OPENSSL_UNUSED size_t sk_##name##_num( \
|
262
|
+
const STACK_OF(name) *sk) { \
|
263
|
+
return sk_num((const _STACK *)sk); \
|
264
|
+
} \
|
265
|
+
\
|
266
|
+
static inline OPENSSL_UNUSED void sk_##name##_zero(STACK_OF(name) *sk) { \
|
267
|
+
sk_zero((_STACK *)sk); \
|
268
|
+
} \
|
269
|
+
\
|
270
|
+
static inline OPENSSL_UNUSED ptrtype sk_##name##_value( \
|
271
|
+
const STACK_OF(name) *sk, size_t i) { \
|
272
|
+
return (ptrtype)sk_value((const _STACK *)sk, i); \
|
273
|
+
} \
|
274
|
+
\
|
275
|
+
static inline OPENSSL_UNUSED ptrtype sk_##name##_set(STACK_OF(name) *sk, \
|
276
|
+
size_t i, ptrtype p) { \
|
277
|
+
return (ptrtype)sk_set((_STACK *)sk, i, (void *)p); \
|
278
|
+
} \
|
279
|
+
\
|
280
|
+
static inline OPENSSL_UNUSED void sk_##name##_free(STACK_OF(name) *sk) { \
|
281
|
+
sk_free((_STACK *)sk); \
|
282
|
+
} \
|
283
|
+
\
|
284
|
+
static inline OPENSSL_UNUSED void sk_##name##_pop_free( \
|
285
|
+
STACK_OF(name) *sk, void (*free_func)(ptrtype p)) { \
|
286
|
+
sk_pop_free((_STACK *)sk, (void (*)(void *))free_func); \
|
287
|
+
} \
|
288
|
+
\
|
289
|
+
static inline OPENSSL_UNUSED size_t sk_##name##_insert( \
|
290
|
+
STACK_OF(name) *sk, ptrtype p, size_t where) { \
|
291
|
+
return sk_insert((_STACK *)sk, (void *)p, where); \
|
292
|
+
} \
|
293
|
+
\
|
294
|
+
static inline OPENSSL_UNUSED ptrtype sk_##name##_delete(STACK_OF(name) *sk, \
|
295
|
+
size_t where) { \
|
296
|
+
return (ptrtype)sk_delete((_STACK *)sk, where); \
|
297
|
+
} \
|
298
|
+
\
|
299
|
+
static inline OPENSSL_UNUSED ptrtype sk_##name##_delete_ptr( \
|
300
|
+
STACK_OF(name) *sk, ptrtype p) { \
|
301
|
+
return (ptrtype)sk_delete_ptr((_STACK *)sk, (void *)p); \
|
302
|
+
} \
|
303
|
+
\
|
304
|
+
static inline OPENSSL_UNUSED int sk_##name##_find( \
|
305
|
+
STACK_OF(name) *sk, size_t *out_index, ptrtype p) { \
|
306
|
+
return sk_find((_STACK *)sk, out_index, (void *)p); \
|
307
|
+
} \
|
308
|
+
\
|
309
|
+
static inline OPENSSL_UNUSED ptrtype sk_##name##_shift(STACK_OF(name) *sk) { \
|
310
|
+
return (ptrtype)sk_shift((_STACK *)sk); \
|
311
|
+
} \
|
312
|
+
\
|
313
|
+
static inline OPENSSL_UNUSED size_t sk_##name##_push(STACK_OF(name) *sk, \
|
314
|
+
ptrtype p) { \
|
315
|
+
return sk_push((_STACK *)sk, (void *)p); \
|
316
|
+
} \
|
317
|
+
\
|
318
|
+
static inline OPENSSL_UNUSED ptrtype sk_##name##_pop(STACK_OF(name) *sk) { \
|
319
|
+
return (ptrtype)sk_pop((_STACK *)sk); \
|
320
|
+
} \
|
321
|
+
\
|
322
|
+
static inline OPENSSL_UNUSED STACK_OF(name) * \
|
323
|
+
sk_##name##_dup(const STACK_OF(name) *sk) { \
|
324
|
+
return (STACK_OF(name) *)sk_dup((const _STACK *)sk); \
|
325
|
+
} \
|
326
|
+
\
|
327
|
+
static inline OPENSSL_UNUSED void sk_##name##_sort(STACK_OF(name) *sk) { \
|
328
|
+
sk_sort((_STACK *)sk); \
|
329
|
+
} \
|
330
|
+
\
|
331
|
+
static inline OPENSSL_UNUSED int sk_##name##_is_sorted( \
|
332
|
+
const STACK_OF(name) *sk) { \
|
333
|
+
return sk_is_sorted((const _STACK *)sk); \
|
334
|
+
} \
|
335
|
+
\
|
336
|
+
static inline OPENSSL_UNUSED stack_##name##_cmp_func \
|
337
|
+
sk_##name##_set_cmp_func(STACK_OF(name) *sk, \
|
338
|
+
stack_##name##_cmp_func comp) { \
|
339
|
+
return (stack_##name##_cmp_func)sk_set_cmp_func((_STACK *)sk, \
|
340
|
+
(stack_cmp_func)comp); \
|
341
|
+
} \
|
342
|
+
\
|
343
|
+
static inline OPENSSL_UNUSED STACK_OF(name) * \
|
344
|
+
sk_##name##_deep_copy(const STACK_OF(name) *sk, \
|
345
|
+
ptrtype(*copy_func)(ptrtype), \
|
346
|
+
void (*free_func)(ptrtype)) { \
|
347
|
+
return (STACK_OF(name) *)sk_deep_copy((_STACK *)sk, \
|
348
|
+
(void *(*)(void *))copy_func, \
|
349
|
+
(void (*)(void *))free_func); \
|
350
|
+
}
|
351
|
+
|
352
|
+
// DEFINE_STACK_OF defines |STACK_OF(type)| to be a stack whose elements are
|
353
|
+
// |type| *.
|
354
|
+
#define DEFINE_STACK_OF(type) \
|
355
|
+
BORINGSSL_DEFINE_STACK_OF_IMPL(type, type *, const type *) \
|
356
|
+
BORINGSSL_DEFINE_STACK_TRAITS(type, type, false)
|
357
|
+
|
358
|
+
// DEFINE_CONST_STACK_OF defines |STACK_OF(type)| to be a stack whose elements
|
359
|
+
// are const |type| *.
|
360
|
+
#define DEFINE_CONST_STACK_OF(type) \
|
361
|
+
BORINGSSL_DEFINE_STACK_OF_IMPL(type, const type *, const type *) \
|
362
|
+
BORINGSSL_DEFINE_STACK_TRAITS(type, const type, true)
|
363
|
+
|
364
|
+
// DEFINE_SPECIAL_STACK_OF defines |STACK_OF(type)| to be a stack whose elements
|
365
|
+
// are |type|, where |type| must be a typedef for a pointer.
|
366
|
+
#define DEFINE_SPECIAL_STACK_OF(type) \
|
367
|
+
OPENSSL_COMPILE_ASSERT(sizeof(type) == sizeof(void *), \
|
368
|
+
special_stack_of_non_pointer_##type); \
|
369
|
+
BORINGSSL_DEFINE_STACK_OF_IMPL(type, type, const type)
|
370
|
+
|
371
|
+
|
372
|
+
typedef char *OPENSSL_STRING;
|
373
|
+
|
374
|
+
DEFINE_STACK_OF(void)
|
375
|
+
DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING)
|
376
|
+
|
377
|
+
|
290
378
|
#if defined(__cplusplus)
|
291
|
-
}
|
379
|
+
} // extern C
|
380
|
+
#endif
|
381
|
+
|
382
|
+
#if !defined(BORINGSSL_NO_CXX)
|
383
|
+
extern "C++" {
|
384
|
+
|
385
|
+
#include <type_traits>
|
386
|
+
|
387
|
+
namespace bssl {
|
388
|
+
|
389
|
+
namespace internal {
|
390
|
+
|
391
|
+
// Stacks defined with |DEFINE_CONST_STACK_OF| are freed with |sk_free|.
|
392
|
+
template <typename Stack>
|
393
|
+
struct DeleterImpl<
|
394
|
+
Stack, typename std::enable_if<StackTraits<Stack>::kIsConst>::type> {
|
395
|
+
static void Free(Stack *sk) { sk_free(reinterpret_cast<_STACK *>(sk)); }
|
396
|
+
};
|
397
|
+
|
398
|
+
// Stacks defined with |DEFINE_STACK_OF| are freed with |sk_pop_free| and the
|
399
|
+
// corresponding type's deleter.
|
400
|
+
template <typename Stack>
|
401
|
+
struct DeleterImpl<
|
402
|
+
Stack, typename std::enable_if<!StackTraits<Stack>::kIsConst>::type> {
|
403
|
+
static void Free(Stack *sk) {
|
404
|
+
sk_pop_free(
|
405
|
+
reinterpret_cast<_STACK *>(sk),
|
406
|
+
reinterpret_cast<void (*)(void *)>(
|
407
|
+
DeleterImpl<typename StackTraits<Stack>::Type>::Free));
|
408
|
+
}
|
409
|
+
};
|
410
|
+
|
411
|
+
template <typename Stack>
|
412
|
+
class StackIteratorImpl {
|
413
|
+
public:
|
414
|
+
using Type = typename StackTraits<Stack>::Type;
|
415
|
+
// Iterators must be default-constructable.
|
416
|
+
StackIteratorImpl() : sk_(nullptr), idx_(0) {}
|
417
|
+
StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
|
418
|
+
|
419
|
+
bool operator==(StackIteratorImpl other) const {
|
420
|
+
return sk_ == other.sk_ && idx_ == other.idx_;
|
421
|
+
}
|
422
|
+
bool operator!=(StackIteratorImpl other) const {
|
423
|
+
return !(*this == other);
|
424
|
+
}
|
425
|
+
|
426
|
+
Type *operator*() const {
|
427
|
+
return reinterpret_cast<Type *>(
|
428
|
+
sk_value(reinterpret_cast<const _STACK *>(sk_), idx_));
|
429
|
+
}
|
430
|
+
|
431
|
+
StackIteratorImpl &operator++(/* prefix */) {
|
432
|
+
idx_++;
|
433
|
+
return *this;
|
434
|
+
}
|
435
|
+
|
436
|
+
StackIteratorImpl operator++(int /* postfix */) {
|
437
|
+
StackIteratorImpl copy(*this);
|
438
|
+
++(*this);
|
439
|
+
return copy;
|
440
|
+
}
|
441
|
+
|
442
|
+
private:
|
443
|
+
const Stack *sk_;
|
444
|
+
size_t idx_;
|
445
|
+
};
|
446
|
+
|
447
|
+
template <typename Stack>
|
448
|
+
using StackIterator = typename std::enable_if<StackTraits<Stack>::kIsStack,
|
449
|
+
StackIteratorImpl<Stack>>::type;
|
450
|
+
|
451
|
+
} // namespace internal
|
452
|
+
|
453
|
+
// PushToStack pushes |elem| to |sk|. It returns true on success and false on
|
454
|
+
// allocation failure.
|
455
|
+
template <typename Stack>
|
456
|
+
static inline
|
457
|
+
typename std::enable_if<!internal::StackTraits<Stack>::kIsConst, bool>::type
|
458
|
+
PushToStack(Stack *sk,
|
459
|
+
UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
|
460
|
+
if (!sk_push(reinterpret_cast<_STACK *>(sk), elem.get())) {
|
461
|
+
return false;
|
462
|
+
}
|
463
|
+
// sk_push takes ownership on success.
|
464
|
+
elem.release();
|
465
|
+
return true;
|
466
|
+
}
|
467
|
+
|
468
|
+
} // namespace bssl
|
469
|
+
|
470
|
+
// Define begin() and end() for stack types so C++ range for loops work.
|
471
|
+
template <typename Stack>
|
472
|
+
static inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
|
473
|
+
return bssl::internal::StackIterator<Stack>(sk, 0);
|
474
|
+
}
|
475
|
+
|
476
|
+
template <typename Stack>
|
477
|
+
static inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
|
478
|
+
return bssl::internal::StackIterator<Stack>(
|
479
|
+
sk, sk_num(reinterpret_cast<const _STACK *>(sk)));
|
480
|
+
}
|
481
|
+
|
482
|
+
} // extern C++
|
292
483
|
#endif
|
293
484
|
|
294
|
-
#endif
|
485
|
+
#endif // OPENSSL_HEADER_STACK_H
|