grpc 1.69.0 → 1.70.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +251 -249
- data/include/grpc/support/atm.h +0 -13
- data/src/core/call/request_buffer.cc +224 -0
- data/src/core/call/request_buffer.h +192 -0
- data/src/core/client_channel/client_channel.cc +2 -3
- data/src/core/client_channel/client_channel_args.h +21 -0
- data/src/core/client_channel/client_channel_filter.h +1 -3
- data/src/core/client_channel/retry_interceptor.cc +406 -0
- data/src/core/client_channel/retry_interceptor.h +157 -0
- data/src/core/client_channel/retry_service_config.h +13 -0
- data/src/core/client_channel/retry_throttle.cc +33 -18
- data/src/core/client_channel/retry_throttle.h +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +596 -94
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +189 -13
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -3
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +40 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +3 -1
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +66 -36
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +19 -17
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +116 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +67 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +12 -8
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +228 -21
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +65 -17
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +6 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +7 -106
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +7 -28
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +85 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +25 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +152 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +40 -10
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +135 -4
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +41 -9
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +3 -2
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +60 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +13 -2
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +102 -24
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +28 -19
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +251 -18
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +41 -16
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +2 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +11 -10
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +418 -413
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +161 -153
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +267 -261
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +29 -19
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +58 -65
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +73 -63
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +49 -48
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +117 -100
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +905 -897
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +460 -457
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +95 -95
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +202 -191
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +148 -135
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +23 -22
- data/src/core/filter/filter_args.h +112 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +1 -1
- data/src/core/lib/channel/promise_based_filter.h +5 -79
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +14 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +1 -0
- data/src/core/lib/experiments/experiments.cc +90 -39
- data/src/core/lib/experiments/experiments.h +43 -24
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -1
- data/src/core/lib/promise/activity.cc +2 -0
- data/src/core/lib/promise/activity.h +29 -8
- data/src/core/lib/promise/map.h +42 -0
- data/src/core/lib/promise/party.cc +36 -1
- data/src/core/lib/promise/party.h +13 -5
- data/src/core/lib/promise/sleep.h +1 -0
- data/src/core/lib/promise/status_flag.h +10 -0
- data/src/core/lib/resource_quota/arena.h +8 -0
- data/src/core/lib/resource_quota/connection_quota.h +4 -0
- data/src/core/lib/surface/call_utils.h +2 -0
- data/src/core/lib/surface/client_call.cc +43 -35
- data/src/core/lib/surface/client_call.h +5 -0
- data/src/core/lib/surface/event_string.cc +7 -1
- data/src/core/lib/surface/init_internally.h +13 -2
- data/src/core/lib/surface/server_call.cc +100 -85
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/call_filters.cc +10 -4
- data/src/core/lib/transport/call_filters.h +8 -0
- data/src/core/lib/transport/call_spine.cc +36 -71
- data/src/core/lib/transport/call_spine.h +131 -7
- data/src/core/lib/transport/call_state.h +132 -39
- data/src/core/lib/transport/interception_chain.cc +8 -0
- data/src/core/lib/transport/interception_chain.h +9 -0
- data/src/core/load_balancing/endpoint_list.cc +10 -0
- data/src/core/load_balancing/endpoint_list.h +13 -6
- data/src/core/load_balancing/lb_policy.h +0 -8
- data/src/core/load_balancing/pick_first/pick_first.cc +89 -56
- data/src/core/load_balancing/ring_hash/ring_hash.cc +158 -70
- data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -14
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +12 -15
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +4 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +139 -135
- data/src/core/resolver/xds/xds_dependency_manager.h +24 -18
- data/src/core/resolver/xds/xds_resolver.cc +28 -47
- data/src/core/server/server.cc +290 -24
- data/src/core/server/server.h +199 -61
- data/src/core/server/xds_server_config_fetcher.cc +78 -142
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/util/backoff.cc +15 -4
- data/src/core/util/http_client/httpcli.cc +66 -18
- data/src/core/util/http_client/httpcli.h +14 -4
- data/src/core/util/matchers.h +5 -10
- data/src/core/util/ref_counted.h +1 -0
- data/src/core/util/ref_counted_ptr.h +1 -1
- data/src/core/util/useful.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +54 -23
- data/src/core/xds/grpc/xds_metadata.h +8 -0
- data/src/core/xds/xds_client/xds_api.cc +0 -223
- data/src/core/xds/xds_client/xds_api.h +1 -133
- data/src/core/xds/xds_client/xds_client.cc +599 -466
- data/src/core/xds/xds_client/xds_client.h +107 -26
- data/src/core/xds/xds_client/xds_resource_type_impl.h +10 -5
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bitstr.c → a_bitstr.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_d2i_fp.c → a_d2i_fp.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_dup.c → a_dup.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_i2d_fp.c → a_i2d_fp.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_int.c → a_int.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_mbstr.c → a_mbstr.cc} +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_object.c → a_object.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strnid.c → a_strnid.cc} +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_type.c → a_type.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_lib.c → asn1_lib.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn_pack.c → asn_pack.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{posix_time.c → posix_time.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_dec.c → tasn_dec.cc} +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_enc.c → tasn_enc.cc} +9 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_fre.c → tasn_fre.cc} +14 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_new.c → tasn_new.cc} +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_utl.c → tasn_utl.cc} +13 -10
- data/third_party/boringssl-with-bazel/src/crypto/base64/{base64.c → base64.cc} +9 -12
- data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio.c → bio.cc} +32 -58
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio_mem.c → bio_mem.cc} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/{connect.c → connect.cc} +24 -16
- data/third_party/boringssl-with-bazel/src/crypto/bio/{file.c → file.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/{pair.c → pair.cc} +22 -20
- data/third_party/boringssl-with-bazel/src/crypto/bio/{printf.c → printf.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/{socket_helper.c → socket_helper.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/blake2/{blake2.c → blake2.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{bn_asn1.c → bn_asn1.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{convert.c → convert.cc} +21 -21
- data/third_party/boringssl-with-bazel/src/crypto/buf/{buf.c → buf.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{asn1_compat.c → asn1_compat.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{ber.c → ber.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbb.c → cbb.cc} +33 -49
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbs.c → cbs.cc} +20 -27
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{unicode.c → unicode.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/{chacha.c → chacha.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesctrhmac.c → e_aesctrhmac.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesgcmsiv.c → e_aesgcmsiv.cc} +23 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_chacha20poly1305.c → e_chacha20poly1305.cc} +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_des.c → e_des.cc} +61 -49
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_null.c → e_null.cc} +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc2.c → e_rc2.cc} +23 -19
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc4.c → e_rc4.cc} +10 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_tls.c → e_tls.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/{conf.c → conf.cc} +17 -14
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_apple.c → cpu_aarch64_apple.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_fuchsia.c → cpu_aarch64_fuchsia.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_linux.c → cpu_aarch64_linux.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_openbsd.c → cpu_aarch64_openbsd.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_sysreg.c → cpu_aarch64_sysreg.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_win.c → cpu_aarch64_win.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_freebsd.c → cpu_arm_freebsd.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_linux.c → cpu_arm_linux.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_intel.c → cpu_intel.cc} +47 -32
- data/third_party/boringssl-with-bazel/src/crypto/{crypto.c → crypto.cc} +6 -11
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519.c → curve25519.cc} +28 -31
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519_64_adx.c → curve25519_64_adx.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{spake25519.c → spake25519.cc} +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{dh_asn1.c → dh_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/{digest_extra.c → digest_extra.cc} +113 -31
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa.c → dsa.cc} +153 -154
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa_asn1.c → dsa_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_asn1.c → ec_asn1.cc} +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_derive.c → ec_derive.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{hash_to_curve.c → hash_to_curve.cc} +66 -64
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/{ecdsa_asn1.c → ecdsa_asn1.cc} +15 -25
- data/third_party/boringssl-with-bazel/src/crypto/engine/{engine.c → engine.cc} +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/err/{err.c → err.cc} +24 -27
- data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp.c → evp.cc} +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_ctx.c → evp_ctx.cc} +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh.c → p_dh.cc} +23 -14
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh_asn1.c → p_dh_asn1.cc} +38 -21
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dsa_asn1.c → p_dsa_asn1.cc} +19 -24
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec.c → p_ec.cc} +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec_asn1.c → p_ec_asn1.cc} +20 -20
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519.c → p_ed25519.cc} +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519_asn1.c → p_ed25519_asn1.cc} +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_hkdf.c → p_hkdf.cc} +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa.c → p_rsa.cc} +38 -37
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa_asn1.c → p_rsa_asn1.cc} +16 -18
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519.c → p_x25519.cc} +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519_asn1.c → p_x25519_asn1.cc} +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/evp/{pbkdf.c → pbkdf.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/{print.c → print.cc} +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/{scrypt.c → scrypt.cc} +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/{ex_data.c → ex_data.cc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c.inc → aes_nohw.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c.inc → key_wrap.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{bcm.c → bcm.cc} +96 -101
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +165 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c.inc → add.cc.inc} +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c.inc → x86_64-gcc.cc.inc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c.inc → bn.cc.inc} +12 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c.inc → ctx.cc.inc} +5 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c.inc → div.cc.inc} +29 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c.inc → div_extra.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c.inc → exponentiation.cc.inc} +22 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c.inc → gcd.cc.inc} +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c.inc → gcd_extra.cc.inc} +33 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c.inc → montgomery.cc.inc} +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c.inc → mul.cc.inc} +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c.inc → prime.cc.inc} +31 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c.inc → shift.cc.inc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c.inc → aead.cc.inc} +18 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c.inc → cipher.cc.inc} +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c.inc → e_aes.cc.inc} +46 -54
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c.inc → cmac.cc.inc} +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +14 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c.inc → dh.cc.inc} +15 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c.inc → digest.cc.inc} +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c.inc → digests.cc.inc} +29 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c.inc → digestsign.cc.inc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c.inc → ec.cc.inc} +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c.inc → ec_key.cc.inc} +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c.inc → felem.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c.inc → oct.cc.inc} +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c.inc → p224-64.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c.inc → p256-nistz.cc.inc} +15 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c.inc → p256.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c.inc → scalar.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c.inc → simple_mul.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c.inc → util.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c.inc → wnaf.cc.inc} +24 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c.inc → ecdh.cc.inc} +14 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c.inc → ecdsa.cc.inc} +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{fips_shared_support.c → fips_shared_support.cc} +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c.inc → hkdf.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c.inc → hmac.cc.inc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c.inc → gcm.cc.inc} +69 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c.inc → gcm_nohw.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +53 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c.inc → polyval.cc.inc} +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c.inc → ctrdrbg.cc.inc} +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c.inc → rand.cc.inc} +20 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c.inc → blinding.cc.inc} +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c.inc → padding.cc.inc} +21 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c.inc → rsa.cc.inc} +77 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c.inc → rsa_impl.cc.inc} +50 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c.inc → fips.cc.inc} +14 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c.inc → self_check.cc.inc} +56 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c.inc → service_indicator.cc.inc} +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c.inc → sha1.cc.inc} +26 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c.inc → sha256.cc.inc} +37 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c.inc → sha512.cc.inc} +48 -76
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/hpke/{hpke.c → hpke.cc} +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/hrss/{hrss.c → hrss.cc} +53 -110
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +191 -248
- data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/keccak/{keccak.c → keccak.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/{kyber.c → kyber.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/lhash/{lhash.c → lhash.cc} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md4/md4.c.inc → md4/md4.cc} +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5 → md5}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5/md5.c.inc → md5/md5.cc} +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/{mem.c → mem.cc} +34 -22
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/{mldsa.c → mldsa.cc} +646 -543
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/obj/{obj.c → obj.cc} +27 -30
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_info.c → pem_info.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_lib.c → pem_lib.cc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_oth.c → pem_oth.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7.c → pkcs7.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7_x509.c → pkcs7_x509.cc} +26 -25
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{p5_pbev2.c → p5_pbev2.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8.c → pkcs8.cc} +159 -158
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8_x509.c → pkcs8_x509.cc} +90 -97
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305.c → poly1305.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_arm.c → poly1305_arm.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_vec.c → poly1305_vec.cc} +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/{pool.c → pool.cc} +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{deterministic.c → deterministic.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fork_detect.c → fork_detect.cc} +11 -12
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{forkunsafe.c → forkunsafe.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{getentropy.c → getentropy.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{ios.c → ios.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{passive.c → passive.cc} +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{rand_extra.c → rand_extra.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{trusty.c → trusty.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{urandom.c → urandom.cc} +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{windows.c → windows.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{refcount.c → refcount.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_asn1.c → rsa_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_crypt.c → rsa_crypt.cc} +81 -78
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_extra.cc +17 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/{siphash.c → siphash.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/address.h +123 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.cc +169 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/internal.h +63 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.cc +161 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.h +70 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/params.h +83 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +307 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.cc +173 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.h +85 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.cc +171 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.h +50 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/{stack.c → stack.cc} +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/{thread_none.c → thread_none.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{thread_pthread.c → thread_pthread.cc} +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/{thread_win.c → thread_win.cc} +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{pmbtoken.c → pmbtoken.cc} +146 -158
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{trust_token.c → trust_token.cc} +19 -21
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{voprf.c → voprf.cc} +165 -169
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_digest.c → a_digest.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_sign.c → a_sign.cc} +37 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_verify.c → a_verify.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{algorithm.c → algorithm.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{asn1_gen.c → asn1_gen.cc} +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{by_dir.c → by_dir.cc} +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{policy.c → policy.cc} +188 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/{rsa_pss.c → rsa_pss.cc} +48 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akey.c → v3_akey.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_alt.c → v3_alt.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bcons.c → v3_bcons.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bitst.c → v3_bitst.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_conf.c → v3_conf.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_cpols.c → v3_cpols.cc} +47 -41
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_crld.c → v3_crld.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_enum.c → v3_enum.cc} +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_extku.c → v3_extku.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_genn.c → v3_genn.cc} +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ia5.c → v3_ia5.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_info.c → v3_info.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_int.c → v3_int.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_lib.c → v3_lib.cc} +9 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ncons.c → v3_ncons.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ocsp.c → v3_ocsp.cc} +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pcons.c → v3_pcons.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pmaps.c → v3_pmaps.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_prn.c → v3_prn.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_purp.c → v3_purp.cc} +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_skey.c → v3_skey.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_utl.c → v3_utl.cc} +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_att.c → x509_att.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_lu.c → x509_lu.cc} +6 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_v3.c → x509_v3.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vfy.c → x509_vfy.cc} +216 -212
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vpm.c → x509_vpm.cc} +55 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509spki.c → x509spki.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_all.c → x_all.cc} +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_crl.c → x_crl.cc} +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_name.c → x_name.cc} +39 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_pubkey.c → x_pubkey.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509.c → x_x509.cc} +48 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509a.c → x_x509a.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/gen/crypto/{err_data.c → err_data.cc} +359 -358
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +237 -275
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +13 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +17 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +8 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +2 -40
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +133 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +160 -116
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -6
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +667 -322
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +116 -119
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +163 -21
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +4 -12
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +94 -49
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +296 -198
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +23 -14
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +363 -343
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +48 -58
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +44 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -159
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +65 -58
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +910 -356
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +29 -41
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +13 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +90 -183
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +38 -64
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +103 -44
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +210 -220
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +70 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +20 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +146 -169
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +15 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +79 -95
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +91 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +30 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +51 -56
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +22 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +43 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +63 -59
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +204 -121
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +86 -59
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +51 -62
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +37 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
- metadata +339 -339
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -426
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -87
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -32
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -408
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -124
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -38
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -108
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -33
- data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
- data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -48
- data/src/core/util/atm.cc +0 -34
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
- data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
- data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
- data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
- data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
- data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
- data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
- data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
- data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
- data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
- data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
- data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -129
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bool.c → a_bool.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_gentm.c → a_gentm.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_octet.c → a_octet.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strex.c → a_strex.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_time.c → a_time.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_utctm.c → a_utctm.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_par.c → asn1_par.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_int.c → f_int.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_string.c → f_string.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_typ.c → tasn_typ.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{errno.c → errno.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{fd.c → fd.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{hexdump.c → hexdump.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{socket.c → socket.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{cipher_extra.c → cipher_extra.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{derive_key.c → derive_key.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{tls_cbc.c → tls_cbc.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/des/{des.c → des.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{params.c → params.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/{ecdh_extra.c → ecdh_extra.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_asn1.c → evp_asn1.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/evp/{sign.c → sign.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c.inc → aes.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c.inc → mode_wrappers.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c.inc → bytes.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c.inc → cmp.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c.inc → generic.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c.inc → jacobi.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c.inc → montgomery_inv.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c.inc → random.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c.inc → rsaz_exp.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c.inc → sqrt.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c.inc → e_aesccm.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c.inc → check.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c.inc → ec_montgomery.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c.inc → simple.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c.inc → cbc.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c.inc → cfb.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c.inc → ctr.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c.inc → ofb.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c.inc → kdf.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/obj/{obj_xref.c → obj_xref.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_all.c → pem_all.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pk8.c → pem_pk8.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pkey.c → pem_pkey.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_x509.c → pem_x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_xaux.c → pem_xaux.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/rc4/{rc4.c → rc4.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_print.c → rsa_print.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/{thread.c → thread.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{by_file.c → by_file.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{i2d_pr.c → i2d_pr.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{name_print.c → name_print.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_crl.c → t_crl.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_req.c → t_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509.c → t_x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509a.c → t_x509a.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akeya.c → v3_akeya.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509.c → x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_cmp.c → x509_cmp.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_d2.c → x509_d2.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_def.c → x509_def.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_ext.c → x509_ext.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_obj.c → x509_obj.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_req.c → x509_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_set.c → x509_set.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_trs.c → x509_trs.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_txt.c → x509_txt.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509cset.c → x509cset.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509name.c → x509name.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509rset.c → x509rset.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_algor.c → x_algor.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_attrib.c → x_attrib.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_exten.c → x_exten.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_req.c → x_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_sig.c → x_sig.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_spki.c → x_spki.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_val.c → x_val.cc} +0 -0
@@ -144,7 +144,7 @@
|
|
144
144
|
|
145
145
|
BSSL_NAMESPACE_BEGIN
|
146
146
|
|
147
|
-
SSLTranscript::SSLTranscript() {}
|
147
|
+
SSLTranscript::SSLTranscript(bool is_dtls) : is_dtls_(is_dtls) {}
|
148
148
|
|
149
149
|
SSLTranscript::~SSLTranscript() {}
|
150
150
|
|
@@ -159,25 +159,81 @@ bool SSLTranscript::Init() {
|
|
159
159
|
}
|
160
160
|
|
161
161
|
bool SSLTranscript::InitHash(uint16_t version, const SSL_CIPHER *cipher) {
|
162
|
+
version_ = version;
|
162
163
|
const EVP_MD *md = ssl_get_handshake_digest(version, cipher);
|
163
164
|
if (Digest() == md) {
|
164
165
|
// No need to re-hash the buffer.
|
165
166
|
return true;
|
166
167
|
}
|
167
|
-
|
168
|
-
|
168
|
+
if (!HashBuffer(hash_.get(), md)) {
|
169
|
+
return false;
|
170
|
+
}
|
171
|
+
if (is_dtls_ && version_ >= TLS1_3_VERSION) {
|
172
|
+
// In DTLS 1.3, prior to the call to InitHash, the message (if present) in
|
173
|
+
// the buffer has the DTLS 1.2 header. After the call to InitHash, the TLS
|
174
|
+
// 1.3 header is written by SSLTranscript::Update. If the buffer isn't freed
|
175
|
+
// here, it would have a mix of different header formats and using it would
|
176
|
+
// yield wrong results. However, there's no need for the buffer once the
|
177
|
+
// version and the digest for the cipher suite are known, so the buffer is
|
178
|
+
// freed here to avoid potential misuse of the SSLTranscript object.
|
179
|
+
FreeBuffer();
|
180
|
+
}
|
181
|
+
return true;
|
169
182
|
}
|
170
183
|
|
171
|
-
|
172
|
-
|
173
|
-
|
184
|
+
bool SSLTranscript::HashBuffer(EVP_MD_CTX *ctx, const EVP_MD *digest) const {
|
185
|
+
if (!EVP_DigestInit_ex(ctx, digest, nullptr)) {
|
186
|
+
return false;
|
187
|
+
}
|
188
|
+
if (!is_dtls_ || version_ < TLS1_3_VERSION) {
|
189
|
+
return EVP_DigestUpdate(ctx, buffer_->data, buffer_->length);
|
190
|
+
}
|
191
|
+
|
192
|
+
// If the version is DTLS 1.3 and we still have a buffer, then there should be
|
193
|
+
// at most a single DTLSHandshake message in the buffer, for the ClientHello.
|
194
|
+
// On the server side, the version (DTLS 1.3) and cipher suite are chosen in
|
195
|
+
// response to the first ClientHello, and InitHash is called before that
|
196
|
+
// ClientHello is added to the SSLTranscript, so the buffer is empty if this
|
197
|
+
// SSLTranscript is on the server.
|
198
|
+
if (buffer_->length == 0) {
|
199
|
+
return true;
|
200
|
+
}
|
174
201
|
|
175
|
-
|
176
|
-
|
202
|
+
// On the client side, we can receive either a ServerHello or
|
203
|
+
// HelloRetryRequest in response to the ClientHello. Regardless of which
|
204
|
+
// message we receive, the client code calls InitHash before updating the
|
205
|
+
// transcript with that message, so the ClientHello is the only message in the
|
206
|
+
// buffer. In DTLS 1.3, we need to skip the message_seq, fragment_offset, and
|
207
|
+
// fragment_length fields from the DTLSHandshake message in the buffer. The
|
208
|
+
// structure of a DTLSHandshake message is as follows (RFC 9147, section 5.2):
|
209
|
+
//
|
210
|
+
// struct {
|
211
|
+
// HandshakeType msg_type; /* handshake type */
|
212
|
+
// uint24 length; /* bytes in message */
|
213
|
+
// uint16 message_seq; /* DTLS-required field */
|
214
|
+
// uint24 fragment_offset; /* DTLS-required field */
|
215
|
+
// uint24 fragment_length; /* DTLS-required field */
|
216
|
+
// select (msg_type) {
|
217
|
+
// /* omitted for brevity */
|
218
|
+
// } body;
|
219
|
+
// } DTLSHandshake;
|
220
|
+
CBS buf, header;
|
221
|
+
CBS_init(&buf, reinterpret_cast<uint8_t *>(buffer_->data), buffer_->length);
|
222
|
+
if (!CBS_get_bytes(&buf, &header, 4) || //
|
223
|
+
!CBS_skip(&buf, 8) || //
|
224
|
+
!EVP_DigestUpdate(ctx, CBS_data(&header), CBS_len(&header)) || //
|
225
|
+
!EVP_DigestUpdate(ctx, CBS_data(&buf), CBS_len(&buf))) {
|
226
|
+
return false;
|
227
|
+
}
|
228
|
+
return true;
|
177
229
|
}
|
178
230
|
|
231
|
+
void SSLTranscript::FreeBuffer() { buffer_.reset(); }
|
232
|
+
|
233
|
+
size_t SSLTranscript::DigestLen() const { return EVP_MD_size(Digest()); }
|
234
|
+
|
179
235
|
const EVP_MD *SSLTranscript::Digest() const {
|
180
|
-
return
|
236
|
+
return EVP_MD_CTX_get0_md(hash_.get());
|
181
237
|
}
|
182
238
|
|
183
239
|
bool SSLTranscript::UpdateForHelloRetryRequest() {
|
@@ -193,8 +249,8 @@ bool SSLTranscript::UpdateForHelloRetryRequest() {
|
|
193
249
|
const uint8_t header[4] = {SSL3_MT_MESSAGE_HASH, 0, 0,
|
194
250
|
static_cast<uint8_t>(hash_len)};
|
195
251
|
if (!EVP_DigestInit_ex(hash_.get(), Digest(), nullptr) ||
|
196
|
-
!
|
197
|
-
!
|
252
|
+
!AddToBufferOrHash(header) ||
|
253
|
+
!AddToBufferOrHash(MakeConstSpan(old_hash, hash_len))) {
|
198
254
|
return false;
|
199
255
|
}
|
200
256
|
return true;
|
@@ -209,8 +265,7 @@ bool SSLTranscript::CopyToHashContext(EVP_MD_CTX *ctx,
|
|
209
265
|
}
|
210
266
|
|
211
267
|
if (buffer_) {
|
212
|
-
return
|
213
|
-
EVP_DigestUpdate(ctx, buffer_->data, buffer_->length);
|
268
|
+
return HashBuffer(ctx, digest);
|
214
269
|
}
|
215
270
|
|
216
271
|
OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
|
@@ -218,9 +273,30 @@ bool SSLTranscript::CopyToHashContext(EVP_MD_CTX *ctx,
|
|
218
273
|
}
|
219
274
|
|
220
275
|
bool SSLTranscript::Update(Span<const uint8_t> in) {
|
276
|
+
if (!is_dtls_ || version_ < TLS1_3_VERSION) {
|
277
|
+
return AddToBufferOrHash(in);
|
278
|
+
}
|
279
|
+
if (in.size() < DTLS1_HM_HEADER_LENGTH) {
|
280
|
+
return false;
|
281
|
+
}
|
282
|
+
// The message passed into Update is the whole Handshake or DTLSHandshake
|
283
|
+
// message, including the msg_type and length. In DTLS, the DTLSHandshake
|
284
|
+
// message also has message_seq, fragment_offset, and fragment_length
|
285
|
+
// fields. In DTLS 1.3, those fields are omitted so that the same
|
286
|
+
// transcript format as TLS 1.3 is used. This means we write the 1-byte
|
287
|
+
// msg_type, 3-byte length, then skip 2+3+3 bytes for the DTLS-specific
|
288
|
+
// fields that get omitted.
|
289
|
+
if (!AddToBufferOrHash(in.subspan(0, 4)) ||
|
290
|
+
!AddToBufferOrHash(in.subspan(12))) {
|
291
|
+
return false;
|
292
|
+
}
|
293
|
+
return true;
|
294
|
+
}
|
295
|
+
|
296
|
+
bool SSLTranscript::AddToBufferOrHash(Span<const uint8_t> in) {
|
221
297
|
// Depending on the state of the handshake, either the handshake buffer may be
|
222
298
|
// active, the rolling hash, or both.
|
223
|
-
if (buffer_ &&
|
299
|
+
if (buffer_ && //
|
224
300
|
!BUF_MEM_append(buffer_.get(), in.data(), in.size())) {
|
225
301
|
return false;
|
226
302
|
}
|
@@ -259,8 +335,7 @@ bool SSLTranscript::GetFinishedMAC(uint8_t *out, size_t *out_len,
|
|
259
335
|
}
|
260
336
|
|
261
337
|
static const size_t kFinishedLen = 12;
|
262
|
-
if (!tls1_prf(Digest(), MakeSpan(out, kFinishedLen),
|
263
|
-
MakeConstSpan(session->secret, session->secret_length), label,
|
338
|
+
if (!tls1_prf(Digest(), MakeSpan(out, kFinishedLen), session->secret, label,
|
264
339
|
MakeConstSpan(digest, digest_len), {})) {
|
265
340
|
return false;
|
266
341
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Copyright
|
1
|
+
/* Copyright 2017 The BoringSSL Authors
|
2
2
|
*
|
3
3
|
* Permission to use, copy, modify, and/or distribute this software for any
|
4
4
|
* purpose with or without fee is hereby granted, provided that the above
|
@@ -22,8 +22,8 @@
|
|
22
22
|
#include <openssl/err.h>
|
23
23
|
#include <openssl/span.h>
|
24
24
|
|
25
|
-
#include "internal.h"
|
26
25
|
#include "../crypto/internal.h"
|
26
|
+
#include "internal.h"
|
27
27
|
|
28
28
|
|
29
29
|
BSSL_NAMESPACE_BEGIN
|
@@ -46,7 +46,7 @@ bool ssl_protocol_version_from_wire(uint16_t *out, uint16_t version) {
|
|
46
46
|
*out = TLS1_2_VERSION;
|
47
47
|
return true;
|
48
48
|
|
49
|
-
case
|
49
|
+
case DTLS1_3_VERSION:
|
50
50
|
*out = TLS1_3_VERSION;
|
51
51
|
return true;
|
52
52
|
|
@@ -66,7 +66,7 @@ static const uint16_t kTLSVersions[] = {
|
|
66
66
|
};
|
67
67
|
|
68
68
|
static const uint16_t kDTLSVersions[] = {
|
69
|
-
|
69
|
+
DTLS1_3_VERSION,
|
70
70
|
DTLS1_2_VERSION,
|
71
71
|
DTLS1_VERSION,
|
72
72
|
};
|
@@ -90,7 +90,7 @@ bool ssl_method_supports_version(const SSL_PROTOCOL_METHOD *method,
|
|
90
90
|
// The following functions map between API versions and wire versions. The
|
91
91
|
// public API works on wire versions.
|
92
92
|
|
93
|
-
static const char*
|
93
|
+
static const char *kUnknownVersion = "unknown";
|
94
94
|
|
95
95
|
struct VersionInfo {
|
96
96
|
uint16_t version;
|
@@ -104,7 +104,7 @@ static const VersionInfo kVersionNames[] = {
|
|
104
104
|
{TLS1_VERSION, "TLSv1"},
|
105
105
|
{DTLS1_VERSION, "DTLSv1"},
|
106
106
|
{DTLS1_2_VERSION, "DTLSv1.2"},
|
107
|
-
{
|
107
|
+
{DTLS1_3_VERSION, "DTLSv1.3"},
|
108
108
|
};
|
109
109
|
|
110
110
|
static const char *ssl_version_to_string(uint16_t version) {
|
@@ -116,9 +116,7 @@ static const char *ssl_version_to_string(uint16_t version) {
|
|
116
116
|
return kUnknownVersion;
|
117
117
|
}
|
118
118
|
|
119
|
-
static uint16_t wire_version_to_api(uint16_t version) {
|
120
|
-
return version;
|
121
|
-
}
|
119
|
+
static uint16_t wire_version_to_api(uint16_t version) { return version; }
|
122
120
|
|
123
121
|
// api_version_to_wire maps |version| to some representative wire version.
|
124
122
|
static bool api_version_to_wire(uint16_t *out, uint16_t version) {
|
@@ -158,6 +156,8 @@ static bool set_min_version(const SSL_PROTOCOL_METHOD *method, uint16_t *out,
|
|
158
156
|
static bool set_max_version(const SSL_PROTOCOL_METHOD *method, uint16_t *out,
|
159
157
|
uint16_t version) {
|
160
158
|
// Zero is interpreted as the default maximum version.
|
159
|
+
// TODO(crbug.com/42290594): Enable DTLS 1.3 by default, after it's
|
160
|
+
// successfully shipped in WebRTC.
|
161
161
|
if (version == 0) {
|
162
162
|
*out = method->is_dtls ? DTLS1_2_VERSION : TLS1_3_VERSION;
|
163
163
|
return true;
|
@@ -198,7 +198,7 @@ bool ssl_get_version_range(const SSL_HANDSHAKE *hs, uint16_t *out_min_version,
|
|
198
198
|
}
|
199
199
|
|
200
200
|
// QUIC requires TLS 1.3.
|
201
|
-
if (hs->ssl
|
201
|
+
if (SSL_is_quic(hs->ssl) && min_version < TLS1_3_VERSION) {
|
202
202
|
min_version = TLS1_3_VERSION;
|
203
203
|
}
|
204
204
|
|
@@ -234,7 +234,7 @@ bool ssl_get_version_range(const SSL_HANDSHAKE *hs, uint16_t *out_min_version,
|
|
234
234
|
// If there is a disabled version after the first enabled one, all versions
|
235
235
|
// after it are implicitly disabled.
|
236
236
|
if (any_enabled) {
|
237
|
-
max_version = kProtocolVersions[i-1].version;
|
237
|
+
max_version = kProtocolVersions[i - 1].version;
|
238
238
|
break;
|
239
239
|
}
|
240
240
|
}
|
@@ -250,18 +250,32 @@ bool ssl_get_version_range(const SSL_HANDSHAKE *hs, uint16_t *out_min_version,
|
|
250
250
|
}
|
251
251
|
|
252
252
|
static uint16_t ssl_version(const SSL *ssl) {
|
253
|
-
// In early data, we report the predicted version.
|
253
|
+
// In early data, we report the predicted version. Note it is possible that we
|
254
|
+
// have a predicted version and a *different* true version. This means 0-RTT
|
255
|
+
// has been rejected, but until the reject has reported to the application and
|
256
|
+
// applied with |SSL_reset_early_data_reject|, we continue reporting a
|
257
|
+
// self-consistent connection.
|
254
258
|
if (SSL_in_early_data(ssl) && !ssl->server) {
|
255
259
|
return ssl->s3->hs->early_session->ssl_version;
|
256
260
|
}
|
257
|
-
|
261
|
+
if (ssl->s3->version != 0) {
|
262
|
+
return ssl->s3->version;
|
263
|
+
}
|
264
|
+
// The TLS versions has not yet been negotiated. Historically, we would return
|
265
|
+
// (D)TLS 1.2, so preserve that behavior.
|
266
|
+
return SSL_is_dtls(ssl) ? DTLS1_2_VERSION : TLS1_2_VERSION;
|
267
|
+
}
|
268
|
+
|
269
|
+
bool ssl_has_final_version(const SSL *ssl) {
|
270
|
+
return ssl->s3->version != 0 &&
|
271
|
+
(ssl->s3->hs == nullptr || !ssl->s3->hs->is_early_version);
|
258
272
|
}
|
259
273
|
|
260
274
|
uint16_t ssl_protocol_version(const SSL *ssl) {
|
261
|
-
assert(ssl->s3->
|
275
|
+
assert(ssl->s3->version != 0);
|
262
276
|
uint16_t version;
|
263
|
-
if (!ssl_protocol_version_from_wire(&version, ssl->version)) {
|
264
|
-
// |ssl->version| will always be set to a valid version.
|
277
|
+
if (!ssl_protocol_version_from_wire(&version, ssl->s3->version)) {
|
278
|
+
// |ssl->s3->version| will always be set to a valid version.
|
265
279
|
assert(0);
|
266
280
|
return 0;
|
267
281
|
}
|
@@ -149,8 +149,8 @@
|
|
149
149
|
#include <openssl/stack.h>
|
150
150
|
#include <openssl/x509.h>
|
151
151
|
|
152
|
-
#include "internal.h"
|
153
152
|
#include "../crypto/internal.h"
|
153
|
+
#include "internal.h"
|
154
154
|
|
155
155
|
|
156
156
|
BSSL_NAMESPACE_BEGIN
|
@@ -198,11 +198,11 @@ static void ssl_crypto_x509_cert_flush_cached_chain(CERT *cert) {
|
|
198
198
|
// which case no change to |cert->chain| is made. It preverses the existing
|
199
199
|
// leaf from |cert->chain|, if any.
|
200
200
|
static bool ssl_cert_set1_chain(CERT *cert, STACK_OF(X509) *chain) {
|
201
|
-
cert->
|
201
|
+
cert->legacy_credential->ClearIntermediateCerts();
|
202
202
|
for (X509 *x509 : chain) {
|
203
203
|
UniquePtr<CRYPTO_BUFFER> buffer = x509_to_buffer(x509);
|
204
204
|
if (!buffer ||
|
205
|
-
!cert->
|
205
|
+
!cert->legacy_credential->AppendIntermediateCert(std::move(buffer))) {
|
206
206
|
return false;
|
207
207
|
}
|
208
208
|
}
|
@@ -342,20 +342,21 @@ static bool ssl_crypto_x509_session_verify_cert_chain(SSL_SESSION *session,
|
|
342
342
|
size_t name_len;
|
343
343
|
SSL_get0_ech_name_override(ssl, &name, &name_len);
|
344
344
|
UniquePtr<X509_STORE_CTX> ctx(X509_STORE_CTX_new());
|
345
|
-
if (!ctx ||
|
346
|
-
!X509_STORE_CTX_init(ctx.get(), verify_store, leaf, cert_chain) ||
|
347
|
-
!X509_STORE_CTX_set_ex_data(
|
348
|
-
|
345
|
+
if (!ctx || //
|
346
|
+
!X509_STORE_CTX_init(ctx.get(), verify_store, leaf, cert_chain) || //
|
347
|
+
!X509_STORE_CTX_set_ex_data(
|
348
|
+
ctx.get(), SSL_get_ex_data_X509_STORE_CTX_idx(), ssl) || //
|
349
349
|
// We need to inherit the verify parameters. These can be determined by
|
350
350
|
// the context: if its a server it will verify SSL client certificates or
|
351
351
|
// vice versa.
|
352
|
-
!X509_STORE_CTX_set_default(
|
353
|
-
|
352
|
+
!X509_STORE_CTX_set_default(
|
353
|
+
ctx.get(),
|
354
|
+
ssl->server ? "ssl_client" : "ssl_server") || //
|
354
355
|
// Anything non-default in "param" should overwrite anything in the ctx.
|
355
356
|
!X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(ctx.get()),
|
356
|
-
hs->config->param) ||
|
357
|
+
hs->config->param) || //
|
357
358
|
// ClientHelloOuter connections use a different name.
|
358
|
-
(name_len != 0 &&
|
359
|
+
(name_len != 0 && //
|
359
360
|
!X509_VERIFY_PARAM_set1_host(X509_STORE_CTX_get0_param(ctx.get()), name,
|
360
361
|
name_len))) {
|
361
362
|
OPENSSL_PUT_ERROR(SSL, ERR_R_X509_LIB);
|
@@ -412,10 +413,10 @@ static void ssl_crypto_x509_ssl_config_free(SSL_CONFIG *cfg) {
|
|
412
413
|
}
|
413
414
|
|
414
415
|
static bool ssl_crypto_x509_ssl_auto_chain_if_needed(SSL_HANDSHAKE *hs) {
|
415
|
-
// Only build a chain if the feature isn't disabled, the
|
416
|
+
// Only build a chain if the feature isn't disabled, the legacy credential
|
416
417
|
// exists but has no intermediates configured.
|
417
418
|
SSL *ssl = hs->ssl;
|
418
|
-
SSL_CREDENTIAL *cred = hs->config->cert->
|
419
|
+
SSL_CREDENTIAL *cred = hs->config->cert->legacy_credential.get();
|
419
420
|
if ((ssl->mode & SSL_MODE_NO_AUTO_CHAIN) || !cred->IsComplete() ||
|
420
421
|
sk_CRYPTO_BUFFER_num(cred->chain.get()) != 1) {
|
421
422
|
return true;
|
@@ -467,24 +468,24 @@ static void ssl_crypto_x509_ssl_ctx_free(SSL_CTX *ctx) {
|
|
467
468
|
}
|
468
469
|
|
469
470
|
const SSL_X509_METHOD ssl_crypto_x509_method = {
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
471
|
+
ssl_crypto_x509_check_client_CA_list,
|
472
|
+
ssl_crypto_x509_cert_clear,
|
473
|
+
ssl_crypto_x509_cert_free,
|
474
|
+
ssl_crypto_x509_cert_dup,
|
475
|
+
ssl_crypto_x509_cert_flush_cached_chain,
|
476
|
+
ssl_crypto_x509_cert_flush_cached_leaf,
|
477
|
+
ssl_crypto_x509_session_cache_objects,
|
478
|
+
ssl_crypto_x509_session_dup,
|
479
|
+
ssl_crypto_x509_session_clear,
|
480
|
+
ssl_crypto_x509_session_verify_cert_chain,
|
481
|
+
ssl_crypto_x509_hs_flush_cached_ca_names,
|
482
|
+
ssl_crypto_x509_ssl_new,
|
483
|
+
ssl_crypto_x509_ssl_config_free,
|
484
|
+
ssl_crypto_x509_ssl_flush_cached_client_CA,
|
485
|
+
ssl_crypto_x509_ssl_auto_chain_if_needed,
|
486
|
+
ssl_crypto_x509_ssl_ctx_new,
|
487
|
+
ssl_crypto_x509_ssl_ctx_free,
|
488
|
+
ssl_crypto_x509_ssl_ctx_flush_cached_client_CA,
|
488
489
|
};
|
489
490
|
|
490
491
|
BSSL_NAMESPACE_END
|
@@ -636,10 +637,8 @@ void SSL_set_verify_depth(SSL *ssl, int depth) {
|
|
636
637
|
X509_VERIFY_PARAM_set_depth(ssl->config->param, depth);
|
637
638
|
}
|
638
639
|
|
639
|
-
void SSL_CTX_set_cert_verify_callback(
|
640
|
-
|
641
|
-
void *arg),
|
642
|
-
void *arg) {
|
640
|
+
void SSL_CTX_set_cert_verify_callback(
|
641
|
+
SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *store_ctx, void *arg), void *arg) {
|
643
642
|
check_ssl_ctx_x509_method(ctx);
|
644
643
|
ctx->app_verify_callback = cb;
|
645
644
|
ctx->app_verify_arg = arg;
|
@@ -720,9 +719,8 @@ int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x) {
|
|
720
719
|
static int ssl_cert_cache_leaf_cert(CERT *cert) {
|
721
720
|
assert(cert->x509_method);
|
722
721
|
|
723
|
-
const SSL_CREDENTIAL *cred = cert->
|
724
|
-
if (cert->x509_leaf != NULL ||
|
725
|
-
cred->chain == NULL) {
|
722
|
+
const SSL_CREDENTIAL *cred = cert->legacy_credential.get();
|
723
|
+
if (cert->x509_leaf != NULL || cred->chain == NULL) {
|
726
724
|
return 1;
|
727
725
|
}
|
728
726
|
|
@@ -736,7 +734,7 @@ static int ssl_cert_cache_leaf_cert(CERT *cert) {
|
|
736
734
|
}
|
737
735
|
|
738
736
|
static X509 *ssl_cert_get0_leaf(CERT *cert) {
|
739
|
-
if (cert->x509_leaf == NULL &&
|
737
|
+
if (cert->x509_leaf == NULL && //
|
740
738
|
!ssl_cert_cache_leaf_cert(cert)) {
|
741
739
|
return NULL;
|
742
740
|
}
|
@@ -755,7 +753,7 @@ X509 *SSL_get_certificate(const SSL *ssl) {
|
|
755
753
|
|
756
754
|
X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx) {
|
757
755
|
check_ssl_ctx_x509_method(ctx);
|
758
|
-
MutexWriteLock lock(const_cast<CRYPTO_MUTEX*>(&ctx->lock));
|
756
|
+
MutexWriteLock lock(const_cast<CRYPTO_MUTEX *>(&ctx->lock));
|
759
757
|
return ssl_cert_get0_leaf(ctx->cert.get());
|
760
758
|
}
|
761
759
|
|
@@ -764,7 +762,7 @@ static int ssl_cert_add1_chain_cert(CERT *cert, X509 *x509) {
|
|
764
762
|
|
765
763
|
UniquePtr<CRYPTO_BUFFER> buffer = x509_to_buffer(x509);
|
766
764
|
if (!buffer ||
|
767
|
-
!cert->
|
765
|
+
!cert->legacy_credential->AppendIntermediateCert(std::move(buffer))) {
|
768
766
|
return 0;
|
769
767
|
}
|
770
768
|
|
@@ -867,9 +865,8 @@ int SSL_clear_chain_certs(SSL *ssl) {
|
|
867
865
|
static int ssl_cert_cache_chain_certs(CERT *cert) {
|
868
866
|
assert(cert->x509_method);
|
869
867
|
|
870
|
-
const SSL_CREDENTIAL *cred = cert->
|
871
|
-
if (cert->x509_chain != nullptr ||
|
872
|
-
cred->chain == nullptr ||
|
868
|
+
const SSL_CREDENTIAL *cred = cert->legacy_credential.get();
|
869
|
+
if (cert->x509_chain != nullptr || cred->chain == nullptr ||
|
873
870
|
sk_CRYPTO_BUFFER_num(cred->chain.get()) < 2) {
|
874
871
|
return 1;
|
875
872
|
}
|
@@ -882,7 +879,7 @@ static int ssl_cert_cache_chain_certs(CERT *cert) {
|
|
882
879
|
for (size_t i = 1; i < sk_CRYPTO_BUFFER_num(cred->chain.get()); i++) {
|
883
880
|
CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(cred->chain.get(), i);
|
884
881
|
UniquePtr<X509> x509(X509_parse_from_buffer(buffer));
|
885
|
-
if (!x509 ||
|
882
|
+
if (!x509 || //
|
886
883
|
!PushToStack(chain.get(), std::move(x509))) {
|
887
884
|
return 0;
|
888
885
|
}
|
@@ -894,7 +891,7 @@ static int ssl_cert_cache_chain_certs(CERT *cert) {
|
|
894
891
|
|
895
892
|
int SSL_CTX_get0_chain_certs(const SSL_CTX *ctx, STACK_OF(X509) **out_chain) {
|
896
893
|
check_ssl_ctx_x509_method(ctx);
|
897
|
-
MutexWriteLock lock(const_cast<CRYPTO_MUTEX*>(&ctx->lock));
|
894
|
+
MutexWriteLock lock(const_cast<CRYPTO_MUTEX *>(&ctx->lock));
|
898
895
|
if (!ssl_cert_cache_chain_certs(ctx->cert.get())) {
|
899
896
|
*out_chain = NULL;
|
900
897
|
return 0;
|
@@ -995,8 +992,7 @@ static void set_client_CA_list(UniquePtr<STACK_OF(CRYPTO_BUFFER)> *ca_list,
|
|
995
992
|
|
996
993
|
UniquePtr<CRYPTO_BUFFER> buffer(CRYPTO_BUFFER_new(outp, len, pool));
|
997
994
|
OPENSSL_free(outp);
|
998
|
-
if (!buffer ||
|
999
|
-
!PushToStack(buffers.get(), std::move(buffer))) {
|
995
|
+
if (!buffer || !PushToStack(buffers.get(), std::move(buffer))) {
|
1000
996
|
return;
|
1001
997
|
}
|
1002
998
|
}
|
@@ -1021,9 +1017,8 @@ void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list) {
|
|
1021
1017
|
sk_X509_NAME_pop_free(name_list, X509_NAME_free);
|
1022
1018
|
}
|
1023
1019
|
|
1024
|
-
static STACK_OF(X509_NAME) *
|
1025
|
-
|
1026
|
-
STACK_OF(X509_NAME) **cached) {
|
1020
|
+
static STACK_OF(X509_NAME) *buffer_names_to_x509(
|
1021
|
+
const STACK_OF(CRYPTO_BUFFER) *names, STACK_OF(X509_NAME) **cached) {
|
1027
1022
|
if (names == NULL) {
|
1028
1023
|
return NULL;
|
1029
1024
|
}
|
@@ -1155,7 +1150,7 @@ static int do_client_cert_cb(SSL *ssl, void *arg) {
|
|
1155
1150
|
// Should only be called during handshake, but check to be sure.
|
1156
1151
|
BSSL_CHECK(ssl->config);
|
1157
1152
|
|
1158
|
-
if (ssl->config->cert->
|
1153
|
+
if (ssl->config->cert->legacy_credential->IsComplete() ||
|
1159
1154
|
ssl->ctx->client_cert_cb == nullptr) {
|
1160
1155
|
return 1;
|
1161
1156
|
}
|
@@ -1170,7 +1165,7 @@ static int do_client_cert_cb(SSL *ssl, void *arg) {
|
|
1170
1165
|
UniquePtr<EVP_PKEY> free_pkey(pkey);
|
1171
1166
|
|
1172
1167
|
if (ret != 0) {
|
1173
|
-
if (!SSL_use_certificate(ssl, x509) ||
|
1168
|
+
if (!SSL_use_certificate(ssl, x509) || //
|
1174
1169
|
!SSL_use_PrivateKey(ssl, pkey)) {
|
1175
1170
|
return 0;
|
1176
1171
|
}
|
@@ -1179,9 +1174,9 @@ static int do_client_cert_cb(SSL *ssl, void *arg) {
|
|
1179
1174
|
return 1;
|
1180
1175
|
}
|
1181
1176
|
|
1182
|
-
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
|
1183
|
-
|
1184
|
-
|
1177
|
+
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
|
1178
|
+
int (*cb)(SSL *ssl, X509 **out_x509,
|
1179
|
+
EVP_PKEY **out_pkey)) {
|
1185
1180
|
check_ssl_ctx_x509_method(ctx);
|
1186
1181
|
// Emulate the old client certificate callback with the new one.
|
1187
1182
|
SSL_CTX_set_cert_cb(ctx, do_client_cert_cb, NULL);
|
@@ -169,7 +169,7 @@ static bool get_key_block_lengths(const SSL *ssl, size_t *out_mac_secret_len,
|
|
169
169
|
const SSL_CIPHER *cipher) {
|
170
170
|
const EVP_AEAD *aead = NULL;
|
171
171
|
if (!ssl_cipher_get_evp_aead(&aead, out_mac_secret_len, out_iv_len, cipher,
|
172
|
-
ssl_protocol_version(ssl)
|
172
|
+
ssl_protocol_version(ssl))) {
|
173
173
|
OPENSSL_PUT_ERROR(SSL, SSL_R_CIPHER_OR_HASH_UNAVAILABLE);
|
174
174
|
return false;
|
175
175
|
}
|
@@ -191,14 +191,13 @@ static bool get_key_block_lengths(const SSL *ssl, size_t *out_mac_secret_len,
|
|
191
191
|
|
192
192
|
static bool generate_key_block(const SSL *ssl, Span<uint8_t> out,
|
193
193
|
const SSL_SESSION *session) {
|
194
|
-
auto secret = MakeConstSpan(session->secret, session->secret_length);
|
195
194
|
static const char kLabel[] = "key expansion";
|
196
195
|
auto label = MakeConstSpan(kLabel, sizeof(kLabel) - 1);
|
197
196
|
|
198
197
|
const EVP_MD *digest = ssl_session_get_digest(session);
|
199
198
|
// Note this function assumes that |session|'s key material corresponds to
|
200
199
|
// |ssl->s3->client_random| and |ssl->s3->server_random|.
|
201
|
-
return tls1_prf(digest, out, secret, label, ssl->s3->server_random,
|
200
|
+
return tls1_prf(digest, out, session->secret, label, ssl->s3->server_random,
|
202
201
|
ssl->s3->client_random);
|
203
202
|
}
|
204
203
|
|
@@ -215,7 +214,7 @@ bool tls1_configure_aead(SSL *ssl, evp_aead_direction_t direction,
|
|
215
214
|
// Ensure that |key_block_cache| is set up.
|
216
215
|
const size_t key_block_size = 2 * (mac_secret_len + key_len + iv_len);
|
217
216
|
if (key_block_cache->empty()) {
|
218
|
-
if (!key_block_cache->
|
217
|
+
if (!key_block_cache->InitForOverwrite(key_block_size) ||
|
219
218
|
!generate_key_block(ssl, MakeSpan(*key_block_cache), session)) {
|
220
219
|
return false;
|
221
220
|
}
|
@@ -243,9 +242,8 @@ bool tls1_configure_aead(SSL *ssl, evp_aead_direction_t direction,
|
|
243
242
|
iv = iv_override;
|
244
243
|
}
|
245
244
|
|
246
|
-
UniquePtr<SSLAEADContext> aead_ctx =
|
247
|
-
|
248
|
-
session->cipher, key, mac_secret, iv);
|
245
|
+
UniquePtr<SSLAEADContext> aead_ctx = SSLAEADContext::Create(
|
246
|
+
direction, ssl->s3->version, session->cipher, key, mac_secret, iv);
|
249
247
|
if (!aead_ctx) {
|
250
248
|
return false;
|
251
249
|
}
|
@@ -253,12 +251,12 @@ bool tls1_configure_aead(SSL *ssl, evp_aead_direction_t direction,
|
|
253
251
|
if (direction == evp_aead_open) {
|
254
252
|
return ssl->method->set_read_state(ssl, ssl_encryption_application,
|
255
253
|
std::move(aead_ctx),
|
256
|
-
/*
|
254
|
+
/*traffic_secret=*/{});
|
257
255
|
}
|
258
256
|
|
259
257
|
return ssl->method->set_write_state(ssl, ssl_encryption_application,
|
260
258
|
std::move(aead_ctx),
|
261
|
-
/*
|
259
|
+
/*traffic_secret=*/{});
|
262
260
|
}
|
263
261
|
|
264
262
|
bool tls1_change_cipher_state(SSL_HANDSHAKE *hs,
|
@@ -267,33 +265,33 @@ bool tls1_change_cipher_state(SSL_HANDSHAKE *hs,
|
|
267
265
|
ssl_handshake_session(hs), {});
|
268
266
|
}
|
269
267
|
|
270
|
-
|
271
|
-
|
268
|
+
bool tls1_generate_master_secret(SSL_HANDSHAKE *hs, Span<uint8_t> out,
|
269
|
+
Span<const uint8_t> premaster) {
|
272
270
|
static const char kMasterSecretLabel[] = "master secret";
|
273
271
|
static const char kExtendedMasterSecretLabel[] = "extended master secret";
|
272
|
+
BSSL_CHECK(out.size() == SSL3_MASTER_SECRET_SIZE);
|
274
273
|
|
275
274
|
const SSL *ssl = hs->ssl;
|
276
|
-
auto out_span = MakeSpan(out, SSL3_MASTER_SECRET_SIZE);
|
277
275
|
if (hs->extended_master_secret) {
|
278
276
|
auto label = MakeConstSpan(kExtendedMasterSecretLabel,
|
279
277
|
sizeof(kExtendedMasterSecretLabel) - 1);
|
280
278
|
uint8_t digests[EVP_MAX_MD_SIZE];
|
281
279
|
size_t digests_len;
|
282
280
|
if (!hs->transcript.GetHash(digests, &digests_len) ||
|
283
|
-
!tls1_prf(hs->transcript.Digest(),
|
281
|
+
!tls1_prf(hs->transcript.Digest(), out, premaster, label,
|
284
282
|
MakeConstSpan(digests, digests_len), {})) {
|
285
|
-
return
|
283
|
+
return false;
|
286
284
|
}
|
287
285
|
} else {
|
288
286
|
auto label =
|
289
287
|
MakeConstSpan(kMasterSecretLabel, sizeof(kMasterSecretLabel) - 1);
|
290
|
-
if (!tls1_prf(hs->transcript.Digest(),
|
288
|
+
if (!tls1_prf(hs->transcript.Digest(), out, premaster, label,
|
291
289
|
ssl->s3->client_random, ssl->s3->server_random)) {
|
292
|
-
return
|
290
|
+
return false;
|
293
291
|
}
|
294
292
|
}
|
295
293
|
|
296
|
-
return
|
294
|
+
return true;
|
297
295
|
}
|
298
296
|
|
299
297
|
BSSL_NAMESPACE_END
|
@@ -334,8 +332,8 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len,
|
|
334
332
|
const uint8_t *context, size_t context_len,
|
335
333
|
int use_context) {
|
336
334
|
// In TLS 1.3, the exporter may be used whenever the secret has been derived.
|
337
|
-
if (ssl->s3->
|
338
|
-
if (ssl->s3->
|
335
|
+
if (ssl->s3->version != 0 && ssl_protocol_version(ssl) >= TLS1_3_VERSION) {
|
336
|
+
if (ssl->s3->exporter_secret.empty()) {
|
339
337
|
OPENSSL_PUT_ERROR(SSL, SSL_R_HANDSHAKE_NOT_COMPLETE);
|
340
338
|
return 0;
|
341
339
|
}
|
@@ -344,8 +342,7 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len,
|
|
344
342
|
context_len = 0;
|
345
343
|
}
|
346
344
|
return tls13_export_keying_material(
|
347
|
-
ssl, MakeSpan(out, out_len),
|
348
|
-
MakeConstSpan(ssl->s3->exporter_secret, ssl->s3->exporter_secret_len),
|
345
|
+
ssl, MakeSpan(out, out_len), ssl->s3->exporter_secret,
|
349
346
|
MakeConstSpan(label, label_len), MakeConstSpan(context, context_len));
|
350
347
|
}
|
351
348
|
|
@@ -365,7 +362,7 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len,
|
|
365
362
|
seed_len += 2 + context_len;
|
366
363
|
}
|
367
364
|
Array<uint8_t> seed;
|
368
|
-
if (!seed.
|
365
|
+
if (!seed.InitForOverwrite(seed_len)) {
|
369
366
|
return 0;
|
370
367
|
}
|
371
368
|
|
@@ -375,12 +372,12 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len,
|
|
375
372
|
if (use_context) {
|
376
373
|
seed[2 * SSL3_RANDOM_SIZE] = static_cast<uint8_t>(context_len >> 8);
|
377
374
|
seed[2 * SSL3_RANDOM_SIZE + 1] = static_cast<uint8_t>(context_len);
|
378
|
-
OPENSSL_memcpy(seed.data() + 2 * SSL3_RANDOM_SIZE + 2, context,
|
375
|
+
OPENSSL_memcpy(seed.data() + 2 * SSL3_RANDOM_SIZE + 2, context,
|
376
|
+
context_len);
|
379
377
|
}
|
380
378
|
|
381
379
|
const SSL_SESSION *session = SSL_get_session(ssl);
|
382
380
|
const EVP_MD *digest = ssl_session_get_digest(session);
|
383
|
-
return tls1_prf(digest, MakeSpan(out, out_len),
|
384
|
-
MakeConstSpan(session->secret, session->secret_length),
|
381
|
+
return tls1_prf(digest, MakeSpan(out, out_len), session->secret,
|
385
382
|
MakeConstSpan(label, label_len), seed, {});
|
386
383
|
}
|