grpc 1.53.0.pre2 → 1.54.0
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 +80 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/grpc_types.h +11 -2
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -15
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +13 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +142 -0
- data/src/core/ext/gcp/metadata_query.h +82 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +42 -23
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +5 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +9 -6
- data/src/core/lib/transport/metadata_batch.h +58 -16
- data/src/core/lib/transport/parsed_metadata.h +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +107 -72
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -186,8 +186,8 @@ ssl_open_record_t dtls1_open_app_data(SSL *ssl, Span<uint8_t> *out,
|
|
186
186
|
return ssl_open_record_success;
|
187
187
|
}
|
188
188
|
|
189
|
-
int dtls1_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
190
|
-
|
189
|
+
int dtls1_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
190
|
+
size_t *out_bytes_written, Span<const uint8_t> in) {
|
191
191
|
assert(!SSL_in_init(ssl));
|
192
192
|
*out_needs_handshake = false;
|
193
193
|
|
@@ -196,47 +196,46 @@ int dtls1_write_app_data(SSL *ssl, bool *out_needs_handshake, const uint8_t *in,
|
|
196
196
|
return -1;
|
197
197
|
}
|
198
198
|
|
199
|
-
|
199
|
+
// DTLS does not split the input across records.
|
200
|
+
if (in.size() > SSL3_RT_MAX_PLAIN_LENGTH) {
|
200
201
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DTLS_MESSAGE_TOO_BIG);
|
201
202
|
return -1;
|
202
203
|
}
|
203
204
|
|
204
|
-
if (
|
205
|
-
|
206
|
-
return
|
207
|
-
}
|
208
|
-
|
209
|
-
if (len == 0) {
|
210
|
-
return 0;
|
205
|
+
if (in.empty()) {
|
206
|
+
*out_bytes_written = 0;
|
207
|
+
return 1;
|
211
208
|
}
|
212
209
|
|
213
|
-
int ret = dtls1_write_record(ssl, SSL3_RT_APPLICATION_DATA, in,
|
210
|
+
int ret = dtls1_write_record(ssl, SSL3_RT_APPLICATION_DATA, in,
|
214
211
|
dtls1_use_current_epoch);
|
215
212
|
if (ret <= 0) {
|
216
213
|
return ret;
|
217
214
|
}
|
218
|
-
|
215
|
+
*out_bytes_written = in.size();
|
216
|
+
return 1;
|
219
217
|
}
|
220
218
|
|
221
|
-
int dtls1_write_record(SSL *ssl, int type, const uint8_t
|
219
|
+
int dtls1_write_record(SSL *ssl, int type, Span<const uint8_t> in,
|
222
220
|
enum dtls1_use_epoch_t use_epoch) {
|
223
221
|
SSLBuffer *buf = &ssl->s3->write_buffer;
|
224
|
-
assert(
|
222
|
+
assert(in.size() <= SSL3_RT_MAX_PLAIN_LENGTH);
|
225
223
|
// There should never be a pending write buffer in DTLS. One can't write half
|
226
224
|
// a datagram, so the write buffer is always dropped in
|
227
225
|
// |ssl_write_buffer_flush|.
|
228
226
|
assert(buf->empty());
|
229
227
|
|
230
|
-
if (
|
228
|
+
if (in.size() > SSL3_RT_MAX_PLAIN_LENGTH) {
|
231
229
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
232
230
|
return -1;
|
233
231
|
}
|
234
232
|
|
235
233
|
size_t ciphertext_len;
|
236
234
|
if (!buf->EnsureCap(ssl_seal_align_prefix_len(ssl),
|
237
|
-
|
235
|
+
in.size() + SSL_max_seal_overhead(ssl)) ||
|
238
236
|
!dtls_seal_record(ssl, buf->remaining().data(), &ciphertext_len,
|
239
|
-
buf->remaining().size(), type, in,
|
237
|
+
buf->remaining().size(), type, in.data(), in.size(),
|
238
|
+
use_epoch)) {
|
240
239
|
buf->Clear();
|
241
240
|
return -1;
|
242
241
|
}
|
@@ -250,7 +249,7 @@ int dtls1_write_record(SSL *ssl, int type, const uint8_t *in, size_t len,
|
|
250
249
|
}
|
251
250
|
|
252
251
|
int dtls1_dispatch_alert(SSL *ssl) {
|
253
|
-
int ret = dtls1_write_record(ssl, SSL3_RT_ALERT,
|
252
|
+
int ret = dtls1_write_record(ssl, SSL3_RT_ALERT, ssl->s3->send_alert,
|
254
253
|
dtls1_use_current_epoch);
|
255
254
|
if (ret <= 0) {
|
256
255
|
return ret;
|
@@ -90,11 +90,11 @@ static bool dtls1_set_read_state(SSL *ssl, ssl_encryption_level_t level,
|
|
90
90
|
|
91
91
|
ssl->d1->r_epoch++;
|
92
92
|
OPENSSL_memset(&ssl->d1->bitmap, 0, sizeof(ssl->d1->bitmap));
|
93
|
-
|
93
|
+
ssl->s3->read_sequence = 0;
|
94
94
|
|
95
95
|
ssl->s3->aead_read_ctx = std::move(aead_ctx);
|
96
96
|
ssl->s3->read_level = level;
|
97
|
-
ssl->d1->has_change_cipher_spec =
|
97
|
+
ssl->d1->has_change_cipher_spec = false;
|
98
98
|
return true;
|
99
99
|
}
|
100
100
|
|
@@ -103,9 +103,8 @@ static bool dtls1_set_write_state(SSL *ssl, ssl_encryption_level_t level,
|
|
103
103
|
Span<const uint8_t> secret_for_quic) {
|
104
104
|
assert(secret_for_quic.empty()); // QUIC does not use DTLS.
|
105
105
|
ssl->d1->w_epoch++;
|
106
|
-
|
107
|
-
|
108
|
-
OPENSSL_memset(ssl->s3->write_sequence, 0, sizeof(ssl->s3->write_sequence));
|
106
|
+
ssl->d1->last_write_sequence = ssl->s3->write_sequence;
|
107
|
+
ssl->s3->write_sequence = 0;
|
109
108
|
|
110
109
|
ssl->d1->last_aead_write_ctx = std::move(ssl->s3->aead_write_ctx);
|
111
110
|
ssl->s3->aead_write_ctx = std::move(aead_ctx);
|
@@ -123,52 +123,37 @@
|
|
123
123
|
|
124
124
|
BSSL_NAMESPACE_BEGIN
|
125
125
|
|
126
|
-
// to_u64_be treats |in| as a 8-byte big-endian integer and returns the value as
|
127
|
-
// a |uint64_t|.
|
128
|
-
static uint64_t to_u64_be(const uint8_t in[8]) {
|
129
|
-
uint64_t ret = 0;
|
130
|
-
unsigned i;
|
131
|
-
for (i = 0; i < 8; i++) {
|
132
|
-
ret <<= 8;
|
133
|
-
ret |= in[i];
|
134
|
-
}
|
135
|
-
return ret;
|
136
|
-
}
|
137
|
-
|
138
126
|
// dtls1_bitmap_should_discard returns one if |seq_num| has been seen in
|
139
127
|
// |bitmap| or is stale. Otherwise it returns zero.
|
140
128
|
static bool dtls1_bitmap_should_discard(DTLS1_BITMAP *bitmap,
|
141
|
-
|
129
|
+
uint64_t seq_num) {
|
142
130
|
const unsigned kWindowSize = sizeof(bitmap->map) * 8;
|
143
131
|
|
144
|
-
|
145
|
-
if (seq_num_u > bitmap->max_seq_num) {
|
132
|
+
if (seq_num > bitmap->max_seq_num) {
|
146
133
|
return false;
|
147
134
|
}
|
148
|
-
uint64_t idx = bitmap->max_seq_num -
|
135
|
+
uint64_t idx = bitmap->max_seq_num - seq_num;
|
149
136
|
return idx >= kWindowSize || (bitmap->map & (((uint64_t)1) << idx));
|
150
137
|
}
|
151
138
|
|
152
139
|
// dtls1_bitmap_record updates |bitmap| to record receipt of sequence number
|
153
140
|
// |seq_num|. It slides the window forward if needed. It is an error to call
|
154
141
|
// this function on a stale sequence number.
|
155
|
-
static void dtls1_bitmap_record(DTLS1_BITMAP *bitmap,
|
156
|
-
const uint8_t seq_num[8]) {
|
142
|
+
static void dtls1_bitmap_record(DTLS1_BITMAP *bitmap, uint64_t seq_num) {
|
157
143
|
const unsigned kWindowSize = sizeof(bitmap->map) * 8;
|
158
144
|
|
159
|
-
uint64_t seq_num_u = to_u64_be(seq_num);
|
160
145
|
// Shift the window if necessary.
|
161
|
-
if (
|
162
|
-
uint64_t shift =
|
146
|
+
if (seq_num > bitmap->max_seq_num) {
|
147
|
+
uint64_t shift = seq_num - bitmap->max_seq_num;
|
163
148
|
if (shift >= kWindowSize) {
|
164
149
|
bitmap->map = 0;
|
165
150
|
} else {
|
166
151
|
bitmap->map <<= shift;
|
167
152
|
}
|
168
|
-
bitmap->max_seq_num =
|
153
|
+
bitmap->max_seq_num = seq_num;
|
169
154
|
}
|
170
155
|
|
171
|
-
uint64_t idx = bitmap->max_seq_num -
|
156
|
+
uint64_t idx = bitmap->max_seq_num - seq_num;
|
172
157
|
if (idx < kWindowSize) {
|
173
158
|
bitmap->map |= ((uint64_t)1) << idx;
|
174
159
|
}
|
@@ -192,11 +177,11 @@ enum ssl_open_record_t dtls_open_record(SSL *ssl, uint8_t *out_type,
|
|
192
177
|
// Decode the record.
|
193
178
|
uint8_t type;
|
194
179
|
uint16_t version;
|
195
|
-
uint8_t
|
180
|
+
uint8_t sequence_bytes[8];
|
196
181
|
CBS body;
|
197
182
|
if (!CBS_get_u8(&cbs, &type) ||
|
198
183
|
!CBS_get_u16(&cbs, &version) ||
|
199
|
-
!CBS_copy_bytes(&cbs,
|
184
|
+
!CBS_copy_bytes(&cbs, sequence_bytes, sizeof(sequence_bytes)) ||
|
200
185
|
!CBS_get_u16_length_prefixed(&cbs, &body) ||
|
201
186
|
CBS_len(&body) > SSL3_RT_MAX_ENCRYPTED_LENGTH) {
|
202
187
|
// The record header was incomplete or malformed. Drop the entire packet.
|
@@ -222,7 +207,8 @@ enum ssl_open_record_t dtls_open_record(SSL *ssl, uint8_t *out_type,
|
|
222
207
|
Span<const uint8_t> header = in.subspan(0, DTLS1_RT_HEADER_LENGTH);
|
223
208
|
ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_HEADER, header);
|
224
209
|
|
225
|
-
|
210
|
+
uint64_t sequence = CRYPTO_load_u64_be(sequence_bytes);
|
211
|
+
uint16_t epoch = static_cast<uint16_t>(sequence >> 48);
|
226
212
|
if (epoch != ssl->d1->r_epoch ||
|
227
213
|
dtls1_bitmap_should_discard(&ssl->d1->bitmap, sequence)) {
|
228
214
|
// Drop this record. It's from the wrong epoch or is a replay. Note that if
|
@@ -304,12 +290,12 @@ bool dtls_seal_record(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out,
|
|
304
290
|
// Determine the parameters for the current epoch.
|
305
291
|
uint16_t epoch = ssl->d1->w_epoch;
|
306
292
|
SSLAEADContext *aead = ssl->s3->aead_write_ctx.get();
|
307
|
-
|
293
|
+
uint64_t *seq = &ssl->s3->write_sequence;
|
308
294
|
if (use_epoch == dtls1_use_previous_epoch) {
|
309
295
|
assert(ssl->d1->w_epoch >= 1);
|
310
296
|
epoch = ssl->d1->w_epoch - 1;
|
311
297
|
aead = ssl->d1->last_aead_write_ctx.get();
|
312
|
-
seq = ssl->d1->last_write_sequence;
|
298
|
+
seq = &ssl->d1->last_write_sequence;
|
313
299
|
}
|
314
300
|
|
315
301
|
if (max_out < DTLS1_RT_HEADER_LENGTH) {
|
@@ -323,9 +309,15 @@ bool dtls_seal_record(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out,
|
|
323
309
|
out[1] = record_version >> 8;
|
324
310
|
out[2] = record_version & 0xff;
|
325
311
|
|
326
|
-
|
327
|
-
|
328
|
-
|
312
|
+
// Ensure the sequence number update does not overflow.
|
313
|
+
const uint64_t kMaxSequenceNumber = (uint64_t{1} << 48) - 1;
|
314
|
+
if (*seq + 1 > kMaxSequenceNumber) {
|
315
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
|
316
|
+
return false;
|
317
|
+
}
|
318
|
+
|
319
|
+
uint64_t seq_with_epoch = (uint64_t{epoch} << 48) | *seq;
|
320
|
+
CRYPTO_store_u64_be(&out[3], seq_with_epoch);
|
329
321
|
|
330
322
|
size_t ciphertext_len;
|
331
323
|
if (!aead->CiphertextLen(&ciphertext_len, in_len, 0)) {
|
@@ -339,12 +331,12 @@ bool dtls_seal_record(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out,
|
|
339
331
|
size_t len_copy;
|
340
332
|
if (!aead->Seal(out + DTLS1_RT_HEADER_LENGTH, &len_copy,
|
341
333
|
max_out - DTLS1_RT_HEADER_LENGTH, type, record_version,
|
342
|
-
|
343
|
-
!ssl_record_sequence_update(&seq[2], 6)) {
|
334
|
+
seq_with_epoch, header, in, in_len)) {
|
344
335
|
return false;
|
345
336
|
}
|
346
337
|
assert(ciphertext_len == len_copy);
|
347
338
|
|
339
|
+
(*seq)++;
|
348
340
|
*out_len = DTLS1_RT_HEADER_LENGTH + ciphertext_len;
|
349
341
|
ssl_do_msg_callback(ssl, 1 /* write */, SSL3_RT_HEADER, header);
|
350
342
|
return true;
|
@@ -203,6 +203,12 @@ bool ssl_decode_client_hello_inner(
|
|
203
203
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
204
204
|
return false;
|
205
205
|
}
|
206
|
+
// The ECH extension itself is not in the AAD and may not be referenced.
|
207
|
+
if (want == TLSEXT_TYPE_encrypted_client_hello) {
|
208
|
+
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
209
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_OUTER_EXTENSION);
|
210
|
+
return false;
|
211
|
+
}
|
206
212
|
// Seek to |want| in |outer_extensions|. |ext_list| is required to match
|
207
213
|
// ClientHelloOuter in order.
|
208
214
|
uint16_t found;
|
@@ -210,7 +216,7 @@ bool ssl_decode_client_hello_inner(
|
|
210
216
|
do {
|
211
217
|
if (CBS_len(&outer_extensions) == 0) {
|
212
218
|
*out_alert = SSL_AD_ILLEGAL_PARAMETER;
|
213
|
-
OPENSSL_PUT_ERROR(SSL,
|
219
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_OUTER_EXTENSION);
|
214
220
|
return false;
|
215
221
|
}
|
216
222
|
if (!CBS_get_u16(&outer_extensions, &found) ||
|
@@ -252,8 +258,8 @@ bool ssl_decode_client_hello_inner(
|
|
252
258
|
return true;
|
253
259
|
}
|
254
260
|
|
255
|
-
bool ssl_client_hello_decrypt(
|
256
|
-
bool *out_is_decrypt_error,
|
261
|
+
bool ssl_client_hello_decrypt(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
262
|
+
bool *out_is_decrypt_error, Array<uint8_t> *out,
|
257
263
|
const SSL_CLIENT_HELLO *client_hello_outer,
|
258
264
|
Span<const uint8_t> payload) {
|
259
265
|
*out_is_decrypt_error = false;
|
@@ -264,6 +270,7 @@ bool ssl_client_hello_decrypt(EVP_HPKE_CTX *hpke_ctx, Array<uint8_t> *out,
|
|
264
270
|
Array<uint8_t> aad;
|
265
271
|
if (!aad.CopyFrom(MakeConstSpan(client_hello_outer->client_hello,
|
266
272
|
client_hello_outer->client_hello_len))) {
|
273
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
267
274
|
return false;
|
268
275
|
}
|
269
276
|
|
@@ -278,35 +285,47 @@ bool ssl_client_hello_decrypt(EVP_HPKE_CTX *hpke_ctx, Array<uint8_t> *out,
|
|
278
285
|
payload.data() - client_hello_outer->client_hello, payload.size());
|
279
286
|
OPENSSL_memset(payload_aad.data(), 0, payload_aad.size());
|
280
287
|
|
288
|
+
// Decrypt the EncodedClientHelloInner.
|
289
|
+
Array<uint8_t> encoded;
|
281
290
|
#if defined(BORINGSSL_UNSAFE_FUZZER_MODE)
|
282
291
|
// In fuzzer mode, disable encryption to improve coverage. We reserve a short
|
283
292
|
// input to signal decryption failure, so the fuzzer can explore fallback to
|
284
293
|
// ClientHelloOuter.
|
285
294
|
const uint8_t kBadPayload[] = {0xff};
|
286
295
|
if (payload == kBadPayload) {
|
296
|
+
*out_alert = SSL_AD_DECRYPT_ERROR;
|
287
297
|
*out_is_decrypt_error = true;
|
288
298
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECRYPTION_FAILED);
|
289
299
|
return false;
|
290
300
|
}
|
291
|
-
if (!
|
301
|
+
if (!encoded.CopyFrom(payload)) {
|
302
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
292
303
|
return false;
|
293
304
|
}
|
294
305
|
#else
|
295
|
-
|
296
|
-
|
297
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
306
|
+
if (!encoded.Init(payload.size())) {
|
307
|
+
*out_alert = SSL_AD_INTERNAL_ERROR;
|
298
308
|
return false;
|
299
309
|
}
|
300
310
|
size_t len;
|
301
|
-
if (!EVP_HPKE_CTX_open(
|
302
|
-
|
303
|
-
aad.size())) {
|
311
|
+
if (!EVP_HPKE_CTX_open(hs->ech_hpke_ctx.get(), encoded.data(), &len,
|
312
|
+
encoded.size(), payload.data(), payload.size(),
|
313
|
+
aad.data(), aad.size())) {
|
314
|
+
*out_alert = SSL_AD_DECRYPT_ERROR;
|
304
315
|
*out_is_decrypt_error = true;
|
305
316
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECRYPTION_FAILED);
|
306
317
|
return false;
|
307
318
|
}
|
308
|
-
|
319
|
+
encoded.Shrink(len);
|
309
320
|
#endif
|
321
|
+
|
322
|
+
if (!ssl_decode_client_hello_inner(hs->ssl, out_alert, out, encoded,
|
323
|
+
client_hello_outer)) {
|
324
|
+
return false;
|
325
|
+
}
|
326
|
+
|
327
|
+
ssl_do_msg_callback(hs->ssl, /*is_write=*/0, SSL3_RT_CLIENT_HELLO_INNER,
|
328
|
+
*out);
|
310
329
|
return true;
|
311
330
|
}
|
312
331
|
|
@@ -315,8 +334,7 @@ static bool is_hex_component(Span<const uint8_t> in) {
|
|
315
334
|
return false;
|
316
335
|
}
|
317
336
|
for (uint8_t b : in.subspan(2)) {
|
318
|
-
if (!(
|
319
|
-
!('A' <= b && b <= 'F')) {
|
337
|
+
if (!OPENSSL_isxdigit(b)) {
|
320
338
|
return false;
|
321
339
|
}
|
322
340
|
}
|
@@ -368,8 +386,7 @@ bool ssl_is_valid_ech_public_name(Span<const uint8_t> public_name) {
|
|
368
386
|
return false;
|
369
387
|
}
|
370
388
|
for (uint8_t c : component) {
|
371
|
-
if (!(
|
372
|
-
!('0' <= c && c <= '9') && c != '-') {
|
389
|
+
if (!OPENSSL_isalnum(c) && c != '-') {
|
373
390
|
return false;
|
374
391
|
}
|
375
392
|
}
|
@@ -554,7 +571,6 @@ bool ECHServerConfig::SetupContext(EVP_HPKE_CTX *ctx, uint16_t kdf_id,
|
|
554
571
|
sizeof(kInfoLabel) /* includes trailing NUL */) ||
|
555
572
|
!CBB_add_bytes(info_cbb.get(), ech_config_.raw.data(),
|
556
573
|
ech_config_.raw.size())) {
|
557
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
558
574
|
return false;
|
559
575
|
}
|
560
576
|
|
@@ -651,7 +667,6 @@ bool ssl_select_ech_config(SSL_HANDSHAKE *hs, Span<uint8_t> out_enc,
|
|
651
667
|
!CBB_add_bytes(info.get(), kInfoLabel, sizeof(kInfoLabel)) ||
|
652
668
|
!CBB_add_bytes(info.get(), ech_config.raw.data(),
|
653
669
|
ech_config.raw.size())) {
|
654
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
655
670
|
return false;
|
656
671
|
}
|
657
672
|
|
@@ -789,6 +804,8 @@ bool ssl_encrypt_client_hello(SSL_HANDSHAKE *hs, Span<const uint8_t> enc) {
|
|
789
804
|
binder_len);
|
790
805
|
}
|
791
806
|
|
807
|
+
ssl_do_msg_callback(ssl, /*is_write=*/1, SSL3_RT_CLIENT_HELLO_INNER,
|
808
|
+
hello_inner);
|
792
809
|
if (!hs->inner_transcript.Update(hello_inner)) {
|
793
810
|
return false;
|
794
811
|
}
|
@@ -1017,7 +1034,6 @@ int SSL_ECH_KEYS_add(SSL_ECH_KEYS *configs, int is_retry_config,
|
|
1017
1034
|
return 0;
|
1018
1035
|
}
|
1019
1036
|
if (!configs->configs.Push(std::move(parsed_config))) {
|
1020
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
1021
1037
|
return 0;
|
1022
1038
|
}
|
1023
1039
|
return 1;
|
@@ -1040,14 +1056,12 @@ int SSL_ECH_KEYS_marshal_retry_configs(const SSL_ECH_KEYS *keys, uint8_t **out,
|
|
1040
1056
|
CBB child;
|
1041
1057
|
if (!CBB_init(cbb.get(), 128) ||
|
1042
1058
|
!CBB_add_u16_length_prefixed(cbb.get(), &child)) {
|
1043
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
1044
1059
|
return false;
|
1045
1060
|
}
|
1046
1061
|
for (const auto &config : keys->configs) {
|
1047
1062
|
if (config->is_retry_config() &&
|
1048
1063
|
!CBB_add_bytes(&child, config->ech_config().raw.data(),
|
1049
1064
|
config->ech_config().raw.size())) {
|
1050
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
1051
1065
|
return false;
|
1052
1066
|
}
|
1053
1067
|
}
|
@@ -205,7 +205,14 @@ static bool tls1_check_duplicate_extensions(const CBS *cbs) {
|
|
205
205
|
}
|
206
206
|
|
207
207
|
static bool is_post_quantum_group(uint16_t id) {
|
208
|
-
|
208
|
+
switch (id) {
|
209
|
+
case SSL_CURVE_CECPQ2:
|
210
|
+
case SSL_CURVE_X25519KYBER768:
|
211
|
+
case SSL_CURVE_P256KYBER768:
|
212
|
+
return true;
|
213
|
+
default:
|
214
|
+
return false;
|
215
|
+
}
|
209
216
|
}
|
210
217
|
|
211
218
|
bool ssl_client_hello_init(const SSL *ssl, SSL_CLIENT_HELLO *out,
|
@@ -240,8 +247,7 @@ bool ssl_parse_client_hello_with_trailing_data(const SSL *ssl, CBS *cbs,
|
|
240
247
|
// Skip past DTLS cookie
|
241
248
|
if (SSL_is_dtls(out->ssl)) {
|
242
249
|
CBS cookie;
|
243
|
-
if (!CBS_get_u8_length_prefixed(cbs, &cookie)
|
244
|
-
CBS_len(&cookie) > DTLS1_COOKIE_LENGTH) {
|
250
|
+
if (!CBS_get_u8_length_prefixed(cbs, &cookie)) {
|
245
251
|
return false;
|
246
252
|
}
|
247
253
|
}
|
@@ -341,8 +347,8 @@ bool tls1_get_shared_group(SSL_HANDSHAKE *hs, uint16_t *out_group_id) {
|
|
341
347
|
for (uint16_t pref_group : pref) {
|
342
348
|
for (uint16_t supp_group : supp) {
|
343
349
|
if (pref_group == supp_group &&
|
344
|
-
//
|
345
|
-
// TLS 1.2 and below.
|
350
|
+
// Post-quantum key agreements don't fit in the u8-length-prefixed
|
351
|
+
// ECPoint field in TLS 1.2 and below.
|
346
352
|
(ssl_protocol_version(ssl) >= TLS1_3_VERSION ||
|
347
353
|
!is_post_quantum_group(pref_group))) {
|
348
354
|
*out_group_id = pref_group;
|
@@ -1249,10 +1255,12 @@ static bool ext_npn_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1249
1255
|
}
|
1250
1256
|
}
|
1251
1257
|
|
1258
|
+
// |orig_len| fits in |unsigned| because TLS extensions use 16-bit lengths.
|
1252
1259
|
uint8_t *selected;
|
1253
1260
|
uint8_t selected_len;
|
1254
1261
|
if (ssl->ctx->next_proto_select_cb(
|
1255
|
-
ssl, &selected, &selected_len, orig_contents,
|
1262
|
+
ssl, &selected, &selected_len, orig_contents,
|
1263
|
+
static_cast<unsigned>(orig_len),
|
1256
1264
|
ssl->ctx->next_proto_select_cb_arg) != SSL_TLSEXT_ERR_OK ||
|
1257
1265
|
!ssl->s3->next_proto_negotiated.CopyFrom(
|
1258
1266
|
MakeConstSpan(selected, selected_len))) {
|
@@ -1565,11 +1573,14 @@ bool ssl_negotiate_alpn(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
|
1565
1573
|
return false;
|
1566
1574
|
}
|
1567
1575
|
|
1576
|
+
// |protocol_name_list| fits in |unsigned| because TLS extensions use 16-bit
|
1577
|
+
// lengths.
|
1568
1578
|
const uint8_t *selected;
|
1569
1579
|
uint8_t selected_len;
|
1570
1580
|
int ret = ssl->ctx->alpn_select_cb(
|
1571
1581
|
ssl, &selected, &selected_len, CBS_data(&protocol_name_list),
|
1572
|
-
CBS_len(&protocol_name_list),
|
1582
|
+
static_cast<unsigned>(CBS_len(&protocol_name_list)),
|
1583
|
+
ssl->ctx->alpn_select_cb_arg);
|
1573
1584
|
// ALPN is required when QUIC is used.
|
1574
1585
|
if (ssl->quic_method &&
|
1575
1586
|
(ret == SSL_TLSEXT_ERR_NOACK || ret == SSL_TLSEXT_ERR_ALERT_WARNING)) {
|
@@ -2296,11 +2307,13 @@ bool ssl_setup_key_shares(SSL_HANDSHAKE *hs, uint16_t override_group_id) {
|
|
2296
2307
|
|
2297
2308
|
group_id = groups[0];
|
2298
2309
|
|
2299
|
-
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2310
|
+
// We'll try to include one post-quantum and one classical initial key
|
2311
|
+
// share.
|
2312
|
+
for (size_t i = 1; i < groups.size() && second_group_id == 0; i++) {
|
2313
|
+
if (is_post_quantum_group(group_id) != is_post_quantum_group(groups[i])) {
|
2314
|
+
second_group_id = groups[i];
|
2315
|
+
assert(second_group_id != group_id);
|
2316
|
+
}
|
2304
2317
|
}
|
2305
2318
|
}
|
2306
2319
|
|
@@ -2309,7 +2322,7 @@ bool ssl_setup_key_shares(SSL_HANDSHAKE *hs, uint16_t override_group_id) {
|
|
2309
2322
|
if (!hs->key_shares[0] || //
|
2310
2323
|
!CBB_add_u16(cbb.get(), group_id) ||
|
2311
2324
|
!CBB_add_u16_length_prefixed(cbb.get(), &key_exchange) ||
|
2312
|
-
!hs->key_shares[0]->
|
2325
|
+
!hs->key_shares[0]->Generate(&key_exchange)) {
|
2313
2326
|
return false;
|
2314
2327
|
}
|
2315
2328
|
|
@@ -2318,7 +2331,7 @@ bool ssl_setup_key_shares(SSL_HANDSHAKE *hs, uint16_t override_group_id) {
|
|
2318
2331
|
if (!hs->key_shares[1] || //
|
2319
2332
|
!CBB_add_u16(cbb.get(), second_group_id) ||
|
2320
2333
|
!CBB_add_u16_length_prefixed(cbb.get(), &key_exchange) ||
|
2321
|
-
!hs->key_shares[1]->
|
2334
|
+
!hs->key_shares[1]->Generate(&key_exchange)) {
|
2322
2335
|
return false;
|
2323
2336
|
}
|
2324
2337
|
}
|
@@ -2350,10 +2363,10 @@ static bool ext_key_share_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out,
|
|
2350
2363
|
bool ssl_ext_key_share_parse_serverhello(SSL_HANDSHAKE *hs,
|
2351
2364
|
Array<uint8_t> *out_secret,
|
2352
2365
|
uint8_t *out_alert, CBS *contents) {
|
2353
|
-
CBS
|
2366
|
+
CBS ciphertext;
|
2354
2367
|
uint16_t group_id;
|
2355
2368
|
if (!CBS_get_u16(contents, &group_id) ||
|
2356
|
-
!CBS_get_u16_length_prefixed(contents, &
|
2369
|
+
!CBS_get_u16_length_prefixed(contents, &ciphertext) ||
|
2357
2370
|
CBS_len(contents) != 0) {
|
2358
2371
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
|
2359
2372
|
*out_alert = SSL_AD_DECODE_ERROR;
|
@@ -2370,7 +2383,7 @@ bool ssl_ext_key_share_parse_serverhello(SSL_HANDSHAKE *hs,
|
|
2370
2383
|
key_share = hs->key_shares[1].get();
|
2371
2384
|
}
|
2372
2385
|
|
2373
|
-
if (!key_share->
|
2386
|
+
if (!key_share->Decap(out_secret, out_alert, ciphertext)) {
|
2374
2387
|
*out_alert = SSL_AD_INTERNAL_ERROR;
|
2375
2388
|
return false;
|
2376
2389
|
}
|
@@ -2435,13 +2448,13 @@ bool ssl_ext_key_share_parse_clienthello(SSL_HANDSHAKE *hs, bool *out_found,
|
|
2435
2448
|
}
|
2436
2449
|
|
2437
2450
|
bool ssl_ext_key_share_add_serverhello(SSL_HANDSHAKE *hs, CBB *out) {
|
2438
|
-
CBB
|
2451
|
+
CBB entry, ciphertext;
|
2439
2452
|
if (!CBB_add_u16(out, TLSEXT_TYPE_key_share) ||
|
2440
|
-
!CBB_add_u16_length_prefixed(out, &
|
2441
|
-
!CBB_add_u16(&
|
2442
|
-
!CBB_add_u16_length_prefixed(&
|
2443
|
-
!CBB_add_bytes(&
|
2444
|
-
hs->
|
2453
|
+
!CBB_add_u16_length_prefixed(out, &entry) ||
|
2454
|
+
!CBB_add_u16(&entry, hs->new_session->group_id) ||
|
2455
|
+
!CBB_add_u16_length_prefixed(&entry, &ciphertext) ||
|
2456
|
+
!CBB_add_bytes(&ciphertext, hs->key_share_ciphertext.data(),
|
2457
|
+
hs->key_share_ciphertext.size()) ||
|
2445
2458
|
!CBB_flush(out)) {
|
2446
2459
|
return false;
|
2447
2460
|
}
|
@@ -2581,7 +2594,7 @@ static bool parse_u16_array(const CBS *cbs, Array<uint16_t> *out) {
|
|
2581
2594
|
|
2582
2595
|
assert(CBS_len(©) == 0);
|
2583
2596
|
*out = std::move(ret);
|
2584
|
-
return
|
2597
|
+
return true;
|
2585
2598
|
}
|
2586
2599
|
|
2587
2600
|
static bool ext_supported_groups_parse_clienthello(SSL_HANDSHAKE *hs,
|
@@ -3931,7 +3944,6 @@ static enum ssl_ticket_aead_result_t ssl_decrypt_ticket_with_method(
|
|
3931
3944
|
Span<const uint8_t> ticket) {
|
3932
3945
|
Array<uint8_t> plaintext;
|
3933
3946
|
if (!plaintext.Init(ticket.size())) {
|
3934
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
3935
3947
|
return ssl_ticket_aead_error;
|
3936
3948
|
}
|
3937
3949
|
|
@@ -3976,6 +3988,16 @@ enum ssl_ticket_aead_result_t ssl_process_ticket(
|
|
3976
3988
|
: ssl_ticket_aead_error;
|
3977
3989
|
} else if (is_psk && hints && !hs->hints_requested && hints->ignore_psk) {
|
3978
3990
|
result = ssl_ticket_aead_ignore_ticket;
|
3991
|
+
} else if (!is_psk && hints && !hs->hints_requested &&
|
3992
|
+
!hints->decrypted_ticket.empty()) {
|
3993
|
+
if (plaintext.CopyFrom(hints->decrypted_ticket)) {
|
3994
|
+
result = ssl_ticket_aead_success;
|
3995
|
+
*out_renew_ticket = hints->renew_ticket;
|
3996
|
+
} else {
|
3997
|
+
result = ssl_ticket_aead_error;
|
3998
|
+
}
|
3999
|
+
} else if (!is_psk && hints && !hs->hints_requested && hints->ignore_ticket) {
|
4000
|
+
result = ssl_ticket_aead_ignore_ticket;
|
3979
4001
|
} else if (ssl->session_ctx->ticket_aead_method != NULL) {
|
3980
4002
|
result = ssl_decrypt_ticket_with_method(hs, &plaintext, out_renew_ticket,
|
3981
4003
|
ticket);
|
@@ -3994,12 +4016,24 @@ enum ssl_ticket_aead_result_t ssl_process_ticket(
|
|
3994
4016
|
}
|
3995
4017
|
}
|
3996
4018
|
|
3997
|
-
if (
|
4019
|
+
if (hints && hs->hints_requested) {
|
3998
4020
|
if (result == ssl_ticket_aead_ignore_ticket) {
|
3999
|
-
|
4000
|
-
|
4001
|
-
|
4002
|
-
|
4021
|
+
if (is_psk) {
|
4022
|
+
hints->ignore_psk = true;
|
4023
|
+
} else {
|
4024
|
+
hints->ignore_ticket = true;
|
4025
|
+
}
|
4026
|
+
} else if (result == ssl_ticket_aead_success) {
|
4027
|
+
if (is_psk) {
|
4028
|
+
if (!hints->decrypted_psk.CopyFrom(plaintext)) {
|
4029
|
+
return ssl_ticket_aead_error;
|
4030
|
+
}
|
4031
|
+
} else {
|
4032
|
+
if (!hints->decrypted_ticket.CopyFrom(plaintext)) {
|
4033
|
+
return ssl_ticket_aead_error;
|
4034
|
+
}
|
4035
|
+
hints->renew_ticket = *out_renew_ticket;
|
4036
|
+
}
|
4003
4037
|
}
|
4004
4038
|
}
|
4005
4039
|
|
@@ -4076,10 +4110,7 @@ bool tls1_choose_signature_algorithm(SSL_HANDSHAKE *hs, uint16_t *out) {
|
|
4076
4110
|
Span<const uint16_t> peer_sigalgs = tls1_get_peer_verify_algorithms(hs);
|
4077
4111
|
|
4078
4112
|
for (uint16_t sigalg : sigalgs) {
|
4079
|
-
|
4080
|
-
// negotiated.
|
4081
|
-
if (sigalg == SSL_SIGN_RSA_PKCS1_MD5_SHA1 ||
|
4082
|
-
!ssl_private_key_supports_signature_algorithm(hs, sigalg)) {
|
4113
|
+
if (!ssl_private_key_supports_signature_algorithm(hs, sigalg)) {
|
4083
4114
|
continue;
|
4084
4115
|
}
|
4085
4116
|
|