grpc 1.53.2 → 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 +78 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- 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/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 +2 -16
- 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 +11 -3
- 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/bin_encoder.cc +8 -12
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
- 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_encoder.cc +222 -118
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -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/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.h +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -32
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +0 -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/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 +19 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- 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/validate_metadata.cc +42 -43
- data/src/core/lib/surface/validate_metadata.h +0 -9
- 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 +5 -2
- data/src/core/lib/transport/metadata_batch.h +17 -113
- data/src/core/lib/transport/parsed_metadata.h +6 -16
- 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 +103 -70
- 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/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
- 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
@@ -195,7 +195,6 @@ template <typename T, typename... Args>
|
|
195
195
|
T *New(Args &&... args) {
|
196
196
|
void *t = OPENSSL_malloc(sizeof(T));
|
197
197
|
if (t == nullptr) {
|
198
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
199
198
|
return nullptr;
|
200
199
|
}
|
201
200
|
return new (t) T(std::forward<Args>(args)...);
|
@@ -216,7 +215,7 @@ void Delete(T *t) {
|
|
216
215
|
// may be C structs which require a |BORINGSSL_MAKE_DELETER| registration.
|
217
216
|
namespace internal {
|
218
217
|
template <typename T>
|
219
|
-
struct DeleterImpl<T,
|
218
|
+
struct DeleterImpl<T, std::enable_if_t<T::kAllowUniquePtr>> {
|
220
219
|
static void Free(T *t) { Delete(t); }
|
221
220
|
};
|
222
221
|
} // namespace internal
|
@@ -245,14 +244,6 @@ UniquePtr<T> MakeUnique(Args &&... args) {
|
|
245
244
|
{ abort(); }
|
246
245
|
#endif
|
247
246
|
|
248
|
-
// CONSTEXPR_ARRAY works around a VS 2015 bug where ranged for loops don't work
|
249
|
-
// on constexpr arrays.
|
250
|
-
#if defined(_MSC_VER) && !defined(__clang__) && _MSC_VER < 1910
|
251
|
-
#define CONSTEXPR_ARRAY const
|
252
|
-
#else
|
253
|
-
#define CONSTEXPR_ARRAY constexpr
|
254
|
-
#endif
|
255
|
-
|
256
247
|
// Array<T> is an owning array of elements of |T|.
|
257
248
|
template <typename T>
|
258
249
|
class Array {
|
@@ -323,7 +314,6 @@ class Array {
|
|
323
314
|
}
|
324
315
|
data_ = reinterpret_cast<T *>(OPENSSL_malloc(new_size * sizeof(T)));
|
325
316
|
if (data_ == nullptr) {
|
326
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
327
317
|
return false;
|
328
318
|
}
|
329
319
|
size_ = new_size;
|
@@ -668,10 +658,15 @@ bool ssl_cipher_requires_server_key_exchange(const SSL_CIPHER *cipher);
|
|
668
658
|
size_t ssl_cipher_get_record_split_len(const SSL_CIPHER *cipher);
|
669
659
|
|
670
660
|
// ssl_choose_tls13_cipher returns an |SSL_CIPHER| corresponding with the best
|
671
|
-
// available from |cipher_suites| compatible with |version
|
672
|
-
// returns NULL if there isn't a compatible cipher.
|
661
|
+
// available from |cipher_suites| compatible with |version|, |group_id|, and
|
662
|
+
// |only_fips|. It returns NULL if there isn't a compatible cipher.
|
673
663
|
const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
|
674
|
-
uint16_t group_id);
|
664
|
+
uint16_t group_id, bool only_fips);
|
665
|
+
|
666
|
+
// ssl_tls13_cipher_meets_policy returns true if |cipher_id| is acceptable given
|
667
|
+
// |only_fips|. (For now there's only a single policy and so the policy argument
|
668
|
+
// is just a bool.)
|
669
|
+
bool ssl_tls13_cipher_meets_policy(uint16_t cipher_id, bool only_fips);
|
675
670
|
|
676
671
|
|
677
672
|
// Transcript layer.
|
@@ -832,15 +827,14 @@ class SSLAEADContext {
|
|
832
827
|
// to the plaintext in |in| and returns true. Otherwise, it returns
|
833
828
|
// false. The output will always be |ExplicitNonceLen| bytes ahead of |in|.
|
834
829
|
bool Open(Span<uint8_t> *out, uint8_t type, uint16_t record_version,
|
835
|
-
|
836
|
-
Span<uint8_t> in);
|
830
|
+
uint64_t seqnum, Span<const uint8_t> header, Span<uint8_t> in);
|
837
831
|
|
838
832
|
// Seal encrypts and authenticates |in_len| bytes from |in| and writes the
|
839
833
|
// result to |out|. It returns true on success and false on error.
|
840
834
|
//
|
841
835
|
// If |in| and |out| alias then |out| + |ExplicitNonceLen| must be == |in|.
|
842
836
|
bool Seal(uint8_t *out, size_t *out_len, size_t max_out, uint8_t type,
|
843
|
-
uint16_t record_version,
|
837
|
+
uint16_t record_version, uint64_t seqnum,
|
844
838
|
Span<const uint8_t> header, const uint8_t *in, size_t in_len);
|
845
839
|
|
846
840
|
// SealScatter encrypts and authenticates |in_len| bytes from |in| and splits
|
@@ -859,10 +853,9 @@ class SSLAEADContext {
|
|
859
853
|
// If |in| and |out| alias then |out| must be == |in|. Other arguments may not
|
860
854
|
// alias anything.
|
861
855
|
bool SealScatter(uint8_t *out_prefix, uint8_t *out, uint8_t *out_suffix,
|
862
|
-
uint8_t type, uint16_t record_version,
|
863
|
-
const uint8_t
|
864
|
-
const uint8_t *
|
865
|
-
size_t extra_in_len);
|
856
|
+
uint8_t type, uint16_t record_version, uint64_t seqnum,
|
857
|
+
Span<const uint8_t> header, const uint8_t *in, size_t in_len,
|
858
|
+
const uint8_t *extra_in, size_t extra_in_len);
|
866
859
|
|
867
860
|
bool GetIV(const uint8_t **out_iv, size_t *out_iv_len) const;
|
868
861
|
|
@@ -871,8 +864,7 @@ class SSLAEADContext {
|
|
871
864
|
// necessary.
|
872
865
|
Span<const uint8_t> GetAdditionalData(uint8_t storage[13], uint8_t type,
|
873
866
|
uint16_t record_version,
|
874
|
-
|
875
|
-
size_t plaintext_len,
|
867
|
+
uint64_t seqnum, size_t plaintext_len,
|
876
868
|
Span<const uint8_t> header);
|
877
869
|
|
878
870
|
const SSL_CIPHER *cipher_;
|
@@ -919,10 +911,6 @@ struct DTLS1_BITMAP {
|
|
919
911
|
|
920
912
|
// Record layer.
|
921
913
|
|
922
|
-
// ssl_record_sequence_update increments the sequence number in |seq|. It
|
923
|
-
// returns true on success and false on wraparound.
|
924
|
-
bool ssl_record_sequence_update(uint8_t *seq, size_t seq_len);
|
925
|
-
|
926
914
|
// ssl_record_prefix_len returns the length of the prefix before the ciphertext
|
927
915
|
// of a record for |ssl|.
|
928
916
|
//
|
@@ -1063,7 +1051,15 @@ bool ssl_public_key_verify(SSL *ssl, Span<const uint8_t> signature,
|
|
1063
1051
|
|
1064
1052
|
// Key shares.
|
1065
1053
|
|
1066
|
-
// SSLKeyShare abstracts over
|
1054
|
+
// SSLKeyShare abstracts over KEM-like constructions, for use with TLS 1.2 ECDHE
|
1055
|
+
// cipher suites and the TLS 1.3 key_share extension.
|
1056
|
+
//
|
1057
|
+
// TODO(davidben): This class is named SSLKeyShare after the TLS 1.3 key_share
|
1058
|
+
// extension, but it really implements a KEM abstraction. Additionally, we use
|
1059
|
+
// the same type for Encap, which is a one-off, stateless operation, as Generate
|
1060
|
+
// and Decap. Slightly tidier would be for Generate to return a new SSLKEMKey
|
1061
|
+
// (or we introduce EVP_KEM and EVP_KEM_KEY), with a Decap method, and for Encap
|
1062
|
+
// to be static function.
|
1067
1063
|
class SSLKeyShare {
|
1068
1064
|
public:
|
1069
1065
|
virtual ~SSLKeyShare() {}
|
@@ -1074,40 +1070,29 @@ class SSLKeyShare {
|
|
1074
1070
|
// nullptr on error.
|
1075
1071
|
static UniquePtr<SSLKeyShare> Create(uint16_t group_id);
|
1076
1072
|
|
1077
|
-
// Create deserializes an SSLKeyShare instance previously serialized by
|
1078
|
-
// |Serialize|.
|
1079
|
-
static UniquePtr<SSLKeyShare> Create(CBS *in);
|
1080
|
-
|
1081
|
-
// Serializes writes the group ID and private key, in a format that can be
|
1082
|
-
// read by |Create|.
|
1083
|
-
bool Serialize(CBB *out);
|
1084
|
-
|
1085
1073
|
// GroupID returns the group ID.
|
1086
1074
|
virtual uint16_t GroupID() const PURE_VIRTUAL;
|
1087
1075
|
|
1088
|
-
//
|
1089
|
-
//
|
1090
|
-
virtual bool
|
1091
|
-
|
1092
|
-
//
|
1093
|
-
// On success, it returns true, writes the
|
1094
|
-
// and sets |*out_secret| to the shared secret. On failure,
|
1095
|
-
// and sets |*out_alert| to an alert to send to the peer.
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
//
|
1103
|
-
|
1104
|
-
|
1105
|
-
// send to the peer.
|
1106
|
-
virtual bool Finish(Array<uint8_t> *out_secret, uint8_t *out_alert,
|
1107
|
-
Span<const uint8_t> peer_key) PURE_VIRTUAL;
|
1076
|
+
// Generate generates a keypair and writes the public key to |out_public_key|.
|
1077
|
+
// It returns true on success and false on error.
|
1078
|
+
virtual bool Generate(CBB *out_public_key) PURE_VIRTUAL;
|
1079
|
+
|
1080
|
+
// Encap generates an ephemeral, symmetric secret and encapsulates it with
|
1081
|
+
// |peer_key|. On success, it returns true, writes the encapsulated secret to
|
1082
|
+
// |out_ciphertext|, and sets |*out_secret| to the shared secret. On failure,
|
1083
|
+
// it returns false and sets |*out_alert| to an alert to send to the peer.
|
1084
|
+
virtual bool Encap(CBB *out_ciphertext, Array<uint8_t> *out_secret,
|
1085
|
+
uint8_t *out_alert,
|
1086
|
+
Span<const uint8_t> peer_key) PURE_VIRTUAL;
|
1087
|
+
|
1088
|
+
// Decap decapsulates the symmetric secret in |ciphertext|. On success, it
|
1089
|
+
// returns true and sets |*out_secret| to the shared secret. On failure, it
|
1090
|
+
// returns false and sets |*out_alert| to an alert to send to the peer.
|
1091
|
+
virtual bool Decap(Array<uint8_t> *out_secret, uint8_t *out_alert,
|
1092
|
+
Span<const uint8_t> ciphertext) PURE_VIRTUAL;
|
1108
1093
|
|
1109
1094
|
// SerializePrivateKey writes the private key to |out|, returning true if
|
1110
|
-
// successful and false otherwise. It should be called after |
|
1095
|
+
// successful and false otherwise. It should be called after |Generate|.
|
1111
1096
|
virtual bool SerializePrivateKey(CBB *out) { return false; }
|
1112
1097
|
|
1113
1098
|
// DeserializePrivateKey initializes the state of the key exchange from |in|,
|
@@ -1118,7 +1103,7 @@ class SSLKeyShare {
|
|
1118
1103
|
struct NamedGroup {
|
1119
1104
|
int nid;
|
1120
1105
|
uint16_t group_id;
|
1121
|
-
const char name[
|
1106
|
+
const char name[12], alias[12];
|
1122
1107
|
};
|
1123
1108
|
|
1124
1109
|
// NamedGroups returns all supported groups.
|
@@ -1184,12 +1169,10 @@ struct DTLS_OUTGOING_MESSAGE {
|
|
1184
1169
|
DTLS_OUTGOING_MESSAGE() {}
|
1185
1170
|
DTLS_OUTGOING_MESSAGE(const DTLS_OUTGOING_MESSAGE &) = delete;
|
1186
1171
|
DTLS_OUTGOING_MESSAGE &operator=(const DTLS_OUTGOING_MESSAGE &) = delete;
|
1187
|
-
~DTLS_OUTGOING_MESSAGE() { Clear(); }
|
1188
1172
|
|
1189
1173
|
void Clear();
|
1190
1174
|
|
1191
|
-
uint8_t
|
1192
|
-
uint32_t len = 0;
|
1175
|
+
Array<uint8_t> data;
|
1193
1176
|
uint16_t epoch = 0;
|
1194
1177
|
bool is_ccs = false;
|
1195
1178
|
};
|
@@ -1325,7 +1308,8 @@ enum ssl_key_usage_t {
|
|
1325
1308
|
// ssl_cert_check_key_usage parses the DER-encoded, X.509 certificate in |in|
|
1326
1309
|
// and returns true if doesn't specify a key usage or, if it does, if it
|
1327
1310
|
// includes |bit|. Otherwise it pushes to the error queue and returns false.
|
1328
|
-
bool ssl_cert_check_key_usage(const CBS *in,
|
1311
|
+
OPENSSL_EXPORT bool ssl_cert_check_key_usage(const CBS *in,
|
1312
|
+
enum ssl_key_usage_t bit);
|
1329
1313
|
|
1330
1314
|
// ssl_cert_parse_pubkey extracts the public key from the DER-encoded, X.509
|
1331
1315
|
// certificate in |in|. It returns an allocated |EVP_PKEY| or else returns
|
@@ -1498,17 +1482,19 @@ enum ssl_client_hello_type_t {
|
|
1498
1482
|
// ClientHelloOuter |client_hello_outer|. If successful, it writes the recovered
|
1499
1483
|
// ClientHelloInner to |out_client_hello_inner|. It returns true on success and
|
1500
1484
|
// false on failure.
|
1485
|
+
//
|
1486
|
+
// This function is exported for fuzzing.
|
1501
1487
|
OPENSSL_EXPORT bool ssl_decode_client_hello_inner(
|
1502
1488
|
SSL *ssl, uint8_t *out_alert, Array<uint8_t> *out_client_hello_inner,
|
1503
1489
|
Span<const uint8_t> encoded_client_hello_inner,
|
1504
1490
|
const SSL_CLIENT_HELLO *client_hello_outer);
|
1505
1491
|
|
1506
|
-
// ssl_client_hello_decrypt attempts to decrypt the |payload
|
1507
|
-
// result to |*out|. |payload| must point into |client_hello_outer|.
|
1508
|
-
// true on success and false on error. On error, it sets
|
1509
|
-
// to whether the failure was due to a bad ciphertext.
|
1510
|
-
bool ssl_client_hello_decrypt(
|
1511
|
-
bool *out_is_decrypt_error,
|
1492
|
+
// ssl_client_hello_decrypt attempts to decrypt and decode the |payload|. It
|
1493
|
+
// writes the result to |*out|. |payload| must point into |client_hello_outer|.
|
1494
|
+
// It returns true on success and false on error. On error, it sets
|
1495
|
+
// |*out_is_decrypt_error| to whether the failure was due to a bad ciphertext.
|
1496
|
+
bool ssl_client_hello_decrypt(SSL_HANDSHAKE *hs, uint8_t *out_alert,
|
1497
|
+
bool *out_is_decrypt_error, Array<uint8_t> *out,
|
1512
1498
|
const SSL_CLIENT_HELLO *client_hello_outer,
|
1513
1499
|
Span<const uint8_t> payload);
|
1514
1500
|
|
@@ -1698,10 +1684,11 @@ enum handback_t {
|
|
1698
1684
|
struct SSL_HANDSHAKE_HINTS {
|
1699
1685
|
static constexpr bool kAllowUniquePtr = true;
|
1700
1686
|
|
1701
|
-
Array<uint8_t>
|
1687
|
+
Array<uint8_t> server_random_tls12;
|
1688
|
+
Array<uint8_t> server_random_tls13;
|
1702
1689
|
|
1703
1690
|
uint16_t key_share_group_id = 0;
|
1704
|
-
Array<uint8_t>
|
1691
|
+
Array<uint8_t> key_share_ciphertext;
|
1705
1692
|
Array<uint8_t> key_share_secret;
|
1706
1693
|
|
1707
1694
|
uint16_t signature_algorithm = 0;
|
@@ -1715,6 +1702,14 @@ struct SSL_HANDSHAKE_HINTS {
|
|
1715
1702
|
uint16_t cert_compression_alg_id = 0;
|
1716
1703
|
Array<uint8_t> cert_compression_input;
|
1717
1704
|
Array<uint8_t> cert_compression_output;
|
1705
|
+
|
1706
|
+
uint16_t ecdhe_group_id = 0;
|
1707
|
+
Array<uint8_t> ecdhe_public_key;
|
1708
|
+
Array<uint8_t> ecdhe_private_key;
|
1709
|
+
|
1710
|
+
Array<uint8_t> decrypted_ticket;
|
1711
|
+
bool renew_ticket = false;
|
1712
|
+
bool ignore_ticket = false;
|
1718
1713
|
};
|
1719
1714
|
|
1720
1715
|
struct SSL_HANDSHAKE {
|
@@ -1829,9 +1824,15 @@ struct SSL_HANDSHAKE {
|
|
1829
1824
|
// ClientHelloInner.
|
1830
1825
|
uint8_t inner_client_random[SSL3_RANDOM_SIZE] = {0};
|
1831
1826
|
|
1832
|
-
// cookie is the value of the cookie
|
1827
|
+
// cookie is the value of the cookie in HelloRetryRequest, or empty if none
|
1828
|
+
// was received.
|
1833
1829
|
Array<uint8_t> cookie;
|
1834
1830
|
|
1831
|
+
// dtls_cookie is the value of the cookie in DTLS HelloVerifyRequest. If
|
1832
|
+
// empty, either none was received or HelloVerifyRequest contained an empty
|
1833
|
+
// cookie.
|
1834
|
+
Array<uint8_t> dtls_cookie;
|
1835
|
+
|
1835
1836
|
// ech_client_outer contains the outer ECH extension to send in the
|
1836
1837
|
// ClientHello, excluding the header and type byte.
|
1837
1838
|
Array<uint8_t> ech_client_outer;
|
@@ -1847,9 +1848,9 @@ struct SSL_HANDSHAKE {
|
|
1847
1848
|
// key_share_bytes is the key_share extension that the client should send.
|
1848
1849
|
Array<uint8_t> key_share_bytes;
|
1849
1850
|
|
1850
|
-
//
|
1851
|
-
// TLS 1.3.
|
1852
|
-
Array<uint8_t>
|
1851
|
+
// key_share_ciphertext, for servers, is encapsulated shared secret to be sent
|
1852
|
+
// to the client in the TLS 1.3 key_share extension.
|
1853
|
+
Array<uint8_t> key_share_ciphertext;
|
1853
1854
|
|
1854
1855
|
// peer_sigalgs are the signature algorithms that the peer supports. These are
|
1855
1856
|
// taken from the contents of the signature algorithms extension for a server
|
@@ -2062,6 +2063,11 @@ struct SSL_HANDSHAKE {
|
|
2062
2063
|
uint8_t grease_seed[ssl_grease_last_index + 1] = {0};
|
2063
2064
|
};
|
2064
2065
|
|
2066
|
+
// kMaxTickets is the maximum number of tickets to send immediately after the
|
2067
|
+
// handshake. We use a one-byte ticket nonce, and there is no point in sending
|
2068
|
+
// so many tickets.
|
2069
|
+
constexpr size_t kMaxTickets = 16;
|
2070
|
+
|
2065
2071
|
UniquePtr<SSL_HANDSHAKE> ssl_handshake_new(SSL *ssl);
|
2066
2072
|
|
2067
2073
|
// ssl_check_message_type checks if |msg| has type |type|. If so it returns
|
@@ -2447,8 +2453,13 @@ struct SSL_PROTOCOL_METHOD {
|
|
2447
2453
|
ssl_open_record_t (*open_app_data)(SSL *ssl, Span<uint8_t> *out,
|
2448
2454
|
size_t *out_consumed, uint8_t *out_alert,
|
2449
2455
|
Span<uint8_t> in);
|
2450
|
-
|
2451
|
-
|
2456
|
+
// write_app_data encrypts and writes |in| as application data. On success, it
|
2457
|
+
// returns one and sets |*out_bytes_written| to the number of bytes of |in|
|
2458
|
+
// written. Otherwise, it returns <= 0 and sets |*out_needs_handshake| to
|
2459
|
+
// whether the operation failed because the caller needs to drive the
|
2460
|
+
// handshake.
|
2461
|
+
int (*write_app_data)(SSL *ssl, bool *out_needs_handshake,
|
2462
|
+
size_t *out_bytes_written, Span<const uint8_t> in);
|
2452
2463
|
int (*dispatch_alert)(SSL *ssl);
|
2453
2464
|
// init_message begins a new handshake message of type |type|. |cbb| is the
|
2454
2465
|
// root CBB to be passed into |finish_message|. |*body| is set to a child CBB
|
@@ -2622,8 +2633,8 @@ struct SSL3_STATE {
|
|
2622
2633
|
SSL3_STATE();
|
2623
2634
|
~SSL3_STATE();
|
2624
2635
|
|
2625
|
-
|
2626
|
-
|
2636
|
+
uint64_t read_sequence = 0;
|
2637
|
+
uint64_t write_sequence = 0;
|
2627
2638
|
|
2628
2639
|
uint8_t server_random[SSL3_RANDOM_SIZE] = {0};
|
2629
2640
|
uint8_t client_random[SSL3_RANDOM_SIZE] = {0};
|
@@ -2637,12 +2648,23 @@ struct SSL3_STATE {
|
|
2637
2648
|
// |read_buffer|.
|
2638
2649
|
Span<uint8_t> pending_app_data;
|
2639
2650
|
|
2640
|
-
//
|
2641
|
-
|
2642
|
-
|
2643
|
-
|
2644
|
-
|
2645
|
-
|
2651
|
+
// unreported_bytes_written is the number of bytes successfully written to the
|
2652
|
+
// transport, but not yet reported to the caller. The next |SSL_write| will
|
2653
|
+
// skip this many bytes from the input. This is used if
|
2654
|
+
// |SSL_MODE_ENABLE_PARTIAL_WRITE| is disabled, in which case |SSL_write| only
|
2655
|
+
// reports bytes written when the full caller input is written.
|
2656
|
+
size_t unreported_bytes_written = 0;
|
2657
|
+
|
2658
|
+
// pending_write, if |has_pending_write| is true, is the caller-supplied data
|
2659
|
+
// corresponding to the current pending write. This is used to check the
|
2660
|
+
// caller retried with a compatible buffer.
|
2661
|
+
Span<const uint8_t> pending_write;
|
2662
|
+
|
2663
|
+
// pending_write_type, if |has_pending_write| is true, is the record type
|
2664
|
+
// for the current pending write.
|
2665
|
+
//
|
2666
|
+
// TODO(davidben): Remove this when alerts are moved out of this write path.
|
2667
|
+
uint8_t pending_write_type = 0;
|
2646
2668
|
|
2647
2669
|
// read_shutdown is the shutdown state for the read half of the connection.
|
2648
2670
|
enum ssl_shutdown_t read_shutdown = ssl_shutdown_none;
|
@@ -2722,9 +2744,6 @@ struct SSL3_STATE {
|
|
2722
2744
|
// outstanding.
|
2723
2745
|
bool key_update_pending : 1;
|
2724
2746
|
|
2725
|
-
// wpend_pending is true if we have a pending write outstanding.
|
2726
|
-
bool wpend_pending : 1;
|
2727
|
-
|
2728
2747
|
// early_data_accepted is true if early data was accepted by the server.
|
2729
2748
|
bool early_data_accepted : 1;
|
2730
2749
|
|
@@ -2739,6 +2758,11 @@ struct SSL3_STATE {
|
|
2739
2758
|
// HelloRetryRequest message.
|
2740
2759
|
bool used_hello_retry_request : 1;
|
2741
2760
|
|
2761
|
+
// was_key_usage_invalid is whether the handshake succeeded despite using a
|
2762
|
+
// TLS mode which was incompatible with the leaf certificate's keyUsage
|
2763
|
+
// extension.
|
2764
|
+
bool was_key_usage_invalid : 1;
|
2765
|
+
|
2742
2766
|
// hs_buf is the buffer of handshake data to process.
|
2743
2767
|
UniquePtr<BUF_MEM> hs_buf;
|
2744
2768
|
|
@@ -2828,8 +2852,6 @@ struct SSL3_STATE {
|
|
2828
2852
|
};
|
2829
2853
|
|
2830
2854
|
// lengths of messages
|
2831
|
-
#define DTLS1_COOKIE_LENGTH 256
|
2832
|
-
|
2833
2855
|
#define DTLS1_RT_HEADER_LENGTH 13
|
2834
2856
|
|
2835
2857
|
#define DTLS1_HM_HEADER_LENGTH 12
|
@@ -2895,9 +2917,6 @@ struct DTLS1_STATE {
|
|
2895
2917
|
// peer sent the final flight.
|
2896
2918
|
bool flight_has_reply : 1;
|
2897
2919
|
|
2898
|
-
uint8_t cookie[DTLS1_COOKIE_LENGTH] = {0};
|
2899
|
-
size_t cookie_len = 0;
|
2900
|
-
|
2901
2920
|
// The current data and handshake epoch. This is initially undefined, and
|
2902
2921
|
// starts at zero once the initial handshake is completed.
|
2903
2922
|
uint16_t r_epoch = 0;
|
@@ -2910,7 +2929,7 @@ struct DTLS1_STATE {
|
|
2910
2929
|
uint16_t handshake_read_seq = 0;
|
2911
2930
|
|
2912
2931
|
// save last sequence number for retransmissions
|
2913
|
-
|
2932
|
+
uint64_t last_write_sequence = 0;
|
2914
2933
|
UniquePtr<SSLAEADContext> last_aead_write_ctx;
|
2915
2934
|
|
2916
2935
|
// incoming_messages is a ring buffer of incoming handshake messages that have
|
@@ -3088,6 +3107,10 @@ struct SSL_CONFIG {
|
|
3088
3107
|
|
3089
3108
|
// permute_extensions is whether to permute extensions when sending messages.
|
3090
3109
|
bool permute_extensions : 1;
|
3110
|
+
|
3111
|
+
// only_fips_cipher_suites_in_tls13 constrains the selection of cipher suites
|
3112
|
+
// in TLS 1.3 such that only FIPS approved ones will be selected.
|
3113
|
+
bool only_fips_cipher_suites_in_tls13 : 1;
|
3091
3114
|
};
|
3092
3115
|
|
3093
3116
|
// From RFC 8446, used in determining PSK modes.
|
@@ -3205,8 +3228,8 @@ ssl_open_record_t tls_open_app_data(SSL *ssl, Span<uint8_t> *out,
|
|
3205
3228
|
ssl_open_record_t tls_open_change_cipher_spec(SSL *ssl, size_t *out_consumed,
|
3206
3229
|
uint8_t *out_alert,
|
3207
3230
|
Span<uint8_t> in);
|
3208
|
-
int tls_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
3209
|
-
|
3231
|
+
int tls_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
3232
|
+
size_t *out_bytes_written, Span<const uint8_t> in);
|
3210
3233
|
|
3211
3234
|
bool tls_new(SSL *ssl);
|
3212
3235
|
void tls_free(SSL *ssl);
|
@@ -3239,11 +3262,11 @@ ssl_open_record_t dtls1_open_change_cipher_spec(SSL *ssl, size_t *out_consumed,
|
|
3239
3262
|
Span<uint8_t> in);
|
3240
3263
|
|
3241
3264
|
int dtls1_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
3242
|
-
|
3265
|
+
size_t *out_bytes_written, Span<const uint8_t> in);
|
3243
3266
|
|
3244
3267
|
// dtls1_write_record sends a record. It returns one on success and <= 0 on
|
3245
3268
|
// error.
|
3246
|
-
int dtls1_write_record(SSL *ssl, int type, const uint8_t
|
3269
|
+
int dtls1_write_record(SSL *ssl, int type, Span<const uint8_t> in,
|
3247
3270
|
enum dtls1_use_epoch_t use_epoch);
|
3248
3271
|
|
3249
3272
|
int dtls1_retransmit_outgoing_messages(SSL *ssl);
|
@@ -3422,6 +3445,11 @@ struct ssl_ctx_st {
|
|
3422
3445
|
// and is further constrainted by |SSL_OP_NO_*|.
|
3423
3446
|
uint16_t conf_min_version = 0;
|
3424
3447
|
|
3448
|
+
// num_tickets is the number of tickets to send immediately after the TLS 1.3
|
3449
|
+
// handshake. TLS 1.3 recommends single-use tickets so, by default, issue two
|
3450
|
+
/// in case the client makes several connections before getting a renewal.
|
3451
|
+
uint8_t num_tickets = 2;
|
3452
|
+
|
3425
3453
|
// quic_method is the method table corresponding to the QUIC hooks.
|
3426
3454
|
const SSL_QUIC_METHOD *quic_method = nullptr;
|
3427
3455
|
|
@@ -3511,7 +3539,7 @@ struct ssl_ctx_st {
|
|
3511
3539
|
bssl::UniquePtr<bssl::CERT> cert;
|
3512
3540
|
|
3513
3541
|
// callback that allows applications to peek at protocol messages
|
3514
|
-
void (*msg_callback)(int
|
3542
|
+
void (*msg_callback)(int is_write, int version, int content_type,
|
3515
3543
|
const void *buf, size_t len, SSL *ssl,
|
3516
3544
|
void *arg) = nullptr;
|
3517
3545
|
void *msg_callback_arg = nullptr;
|
@@ -3690,6 +3718,10 @@ struct ssl_ctx_st {
|
|
3690
3718
|
// If enable_early_data is true, early data can be sent and accepted.
|
3691
3719
|
bool enable_early_data : 1;
|
3692
3720
|
|
3721
|
+
// only_fips_cipher_suites_in_tls13 constrains the selection of cipher suites
|
3722
|
+
// in TLS 1.3 such that only FIPS approved ones will be selected.
|
3723
|
+
bool only_fips_cipher_suites_in_tls13 : 1;
|
3724
|
+
|
3693
3725
|
private:
|
3694
3726
|
~ssl_ctx_st();
|
3695
3727
|
friend OPENSSL_EXPORT void SSL_CTX_free(SSL_CTX *);
|
@@ -439,7 +439,6 @@ static ssl_open_record_t read_v2_client_hello(SSL *ssl, size_t *out_consumed,
|
|
439
439
|
// No session id.
|
440
440
|
!CBB_add_u8(&hello_body, 0) ||
|
441
441
|
!CBB_add_u16_length_prefixed(&hello_body, &cipher_suites)) {
|
442
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
443
442
|
return ssl_open_record_error;
|
444
443
|
}
|
445
444
|
|
@@ -664,41 +663,53 @@ void tls_next_message(SSL *ssl) {
|
|
664
663
|
// the client.
|
665
664
|
class CipherScorer {
|
666
665
|
public:
|
667
|
-
CipherScorer(
|
668
|
-
: aes_is_fine_(EVP_has_aes_hardware()),
|
669
|
-
security_128_is_fine_(group_id != SSL_CURVE_CECPQ2) {}
|
666
|
+
CipherScorer() : aes_is_fine_(EVP_has_aes_hardware()) {}
|
670
667
|
|
671
|
-
typedef std::tuple<bool, bool
|
668
|
+
typedef std::tuple<bool, bool> Score;
|
672
669
|
|
673
670
|
// MinScore returns a |Score| that will compare less than the score of all
|
674
671
|
// cipher suites.
|
675
672
|
Score MinScore() const {
|
676
|
-
return Score(false, false
|
673
|
+
return Score(false, false);
|
677
674
|
}
|
678
675
|
|
679
676
|
Score Evaluate(const SSL_CIPHER *a) const {
|
680
677
|
return Score(
|
681
678
|
// Something is always preferable to nothing.
|
682
679
|
true,
|
683
|
-
// Either 128-bit is fine, or 256-bit is preferred.
|
684
|
-
security_128_is_fine_ || a->algorithm_enc != SSL_AES128GCM,
|
685
680
|
// Either AES is fine, or else ChaCha20 is preferred.
|
686
681
|
aes_is_fine_ || a->algorithm_enc == SSL_CHACHA20POLY1305);
|
687
682
|
}
|
688
683
|
|
689
684
|
private:
|
690
685
|
const bool aes_is_fine_;
|
691
|
-
const bool security_128_is_fine_;
|
692
686
|
};
|
693
687
|
|
688
|
+
bool ssl_tls13_cipher_meets_policy(uint16_t cipher_id, bool only_fips) {
|
689
|
+
if (!only_fips) {
|
690
|
+
return true;
|
691
|
+
}
|
692
|
+
|
693
|
+
switch (cipher_id) {
|
694
|
+
case TLS1_3_CK_AES_128_GCM_SHA256 & 0xffff:
|
695
|
+
case TLS1_3_CK_AES_256_GCM_SHA384 & 0xffff:
|
696
|
+
return true;
|
697
|
+
case TLS1_3_CK_CHACHA20_POLY1305_SHA256 & 0xffff:
|
698
|
+
return false;
|
699
|
+
default:
|
700
|
+
assert(false);
|
701
|
+
return false;
|
702
|
+
}
|
703
|
+
}
|
704
|
+
|
694
705
|
const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
|
695
|
-
uint16_t group_id) {
|
706
|
+
uint16_t group_id, bool only_fips) {
|
696
707
|
if (CBS_len(&cipher_suites) % 2 != 0) {
|
697
708
|
return nullptr;
|
698
709
|
}
|
699
710
|
|
700
711
|
const SSL_CIPHER *best = nullptr;
|
701
|
-
CipherScorer scorer
|
712
|
+
CipherScorer scorer;
|
702
713
|
CipherScorer::Score best_score = scorer.MinScore();
|
703
714
|
|
704
715
|
while (CBS_len(&cipher_suites) > 0) {
|
@@ -715,6 +726,11 @@ const SSL_CIPHER *ssl_choose_tls13_cipher(CBS cipher_suites, uint16_t version,
|
|
715
726
|
continue;
|
716
727
|
}
|
717
728
|
|
729
|
+
if (!ssl_tls13_cipher_meets_policy(SSL_CIPHER_get_protocol_id(candidate),
|
730
|
+
only_fips)) {
|
731
|
+
continue;
|
732
|
+
}
|
733
|
+
|
718
734
|
const CipherScorer::Score candidate_score = scorer.Evaluate(candidate);
|
719
735
|
// |candidate_score| must be larger to displace the current choice. That way
|
720
736
|
// the client's order controls between ciphers with an equal score.
|
@@ -175,11 +175,11 @@ SSL3_STATE::SSL3_STATE()
|
|
175
175
|
send_connection_binding(false),
|
176
176
|
channel_id_valid(false),
|
177
177
|
key_update_pending(false),
|
178
|
-
wpend_pending(false),
|
179
178
|
early_data_accepted(false),
|
180
179
|
alert_dispatch(false),
|
181
180
|
renegotiate_pending(false),
|
182
|
-
used_hello_retry_request(false)
|
181
|
+
used_hello_retry_request(false),
|
182
|
+
was_key_usage_invalid(false) {}
|
183
183
|
|
184
184
|
SSL3_STATE::~SSL3_STATE() {}
|
185
185
|
|