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.
Files changed (640) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +251 -249
  3. data/include/grpc/support/atm.h +0 -13
  4. data/src/core/call/request_buffer.cc +224 -0
  5. data/src/core/call/request_buffer.h +192 -0
  6. data/src/core/client_channel/client_channel.cc +2 -3
  7. data/src/core/client_channel/client_channel_args.h +21 -0
  8. data/src/core/client_channel/client_channel_filter.h +1 -3
  9. data/src/core/client_channel/retry_interceptor.cc +406 -0
  10. data/src/core/client_channel/retry_interceptor.h +157 -0
  11. data/src/core/client_channel/retry_service_config.h +13 -0
  12. data/src/core/client_channel/retry_throttle.cc +33 -18
  13. data/src/core/client_channel/retry_throttle.h +3 -3
  14. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +596 -94
  15. data/src/core/ext/transport/chttp2/server/chttp2_server.h +189 -13
  16. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1 -0
  17. data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -3
  18. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +40 -1
  19. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +3 -1
  20. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +66 -36
  21. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +19 -17
  22. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +116 -0
  23. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +31 -5
  24. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +2 -0
  25. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +67 -6
  26. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +12 -8
  27. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  28. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  29. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  30. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +228 -21
  31. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +65 -17
  32. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +6 -0
  33. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +7 -106
  34. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +7 -28
  35. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -2
  36. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +85 -0
  37. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +25 -3
  38. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
  39. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +152 -0
  40. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +40 -10
  41. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +2 -0
  42. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +135 -4
  43. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +41 -9
  44. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +2 -0
  45. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +0 -2
  46. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +0 -1
  47. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +0 -1
  48. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +16 -0
  49. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +3 -2
  50. 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
  51. 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
  52. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +0 -1
  53. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +0 -1
  54. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +102 -24
  55. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +28 -19
  56. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +251 -18
  57. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +41 -16
  58. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +2 -0
  59. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +2 -1
  60. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +11 -10
  61. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +418 -413
  62. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +161 -153
  63. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -0
  64. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +267 -261
  65. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
  66. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
  67. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +29 -19
  68. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +15 -0
  69. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +58 -65
  70. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +0 -5
  71. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +73 -63
  72. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +49 -48
  73. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +117 -100
  74. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  75. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +905 -897
  76. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  77. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +15 -18
  78. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +460 -457
  79. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +16 -19
  80. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +95 -95
  81. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +202 -191
  82. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +148 -135
  83. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
  84. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +23 -22
  85. data/src/core/filter/filter_args.h +112 -0
  86. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +1 -1
  87. data/src/core/lib/channel/promise_based_filter.h +5 -79
  88. data/src/core/lib/debug/trace_flags.cc +2 -0
  89. data/src/core/lib/debug/trace_flags.h +1 -0
  90. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +14 -0
  91. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -2
  92. data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -2
  93. data/src/core/lib/event_engine/windows/windows_engine.cc +1 -0
  94. data/src/core/lib/experiments/experiments.cc +90 -39
  95. data/src/core/lib/experiments/experiments.h +43 -24
  96. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -1
  97. data/src/core/lib/promise/activity.cc +2 -0
  98. data/src/core/lib/promise/activity.h +29 -8
  99. data/src/core/lib/promise/map.h +42 -0
  100. data/src/core/lib/promise/party.cc +36 -1
  101. data/src/core/lib/promise/party.h +13 -5
  102. data/src/core/lib/promise/sleep.h +1 -0
  103. data/src/core/lib/promise/status_flag.h +10 -0
  104. data/src/core/lib/resource_quota/arena.h +8 -0
  105. data/src/core/lib/resource_quota/connection_quota.h +4 -0
  106. data/src/core/lib/surface/call_utils.h +2 -0
  107. data/src/core/lib/surface/client_call.cc +43 -35
  108. data/src/core/lib/surface/client_call.h +5 -0
  109. data/src/core/lib/surface/event_string.cc +7 -1
  110. data/src/core/lib/surface/init_internally.h +13 -2
  111. data/src/core/lib/surface/server_call.cc +100 -85
  112. data/src/core/lib/surface/version.cc +2 -2
  113. data/src/core/lib/transport/call_filters.cc +10 -4
  114. data/src/core/lib/transport/call_filters.h +8 -0
  115. data/src/core/lib/transport/call_spine.cc +36 -71
  116. data/src/core/lib/transport/call_spine.h +131 -7
  117. data/src/core/lib/transport/call_state.h +132 -39
  118. data/src/core/lib/transport/interception_chain.cc +8 -0
  119. data/src/core/lib/transport/interception_chain.h +9 -0
  120. data/src/core/load_balancing/endpoint_list.cc +10 -0
  121. data/src/core/load_balancing/endpoint_list.h +13 -6
  122. data/src/core/load_balancing/lb_policy.h +0 -8
  123. data/src/core/load_balancing/pick_first/pick_first.cc +89 -56
  124. data/src/core/load_balancing/ring_hash/ring_hash.cc +158 -70
  125. data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
  126. data/src/core/load_balancing/round_robin/round_robin.cc +9 -14
  127. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +12 -15
  128. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +4 -4
  129. data/src/core/resolver/xds/xds_dependency_manager.cc +139 -135
  130. data/src/core/resolver/xds/xds_dependency_manager.h +24 -18
  131. data/src/core/resolver/xds/xds_resolver.cc +28 -47
  132. data/src/core/server/server.cc +290 -24
  133. data/src/core/server/server.h +199 -61
  134. data/src/core/server/xds_server_config_fetcher.cc +78 -142
  135. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  136. data/src/core/util/backoff.cc +15 -4
  137. data/src/core/util/http_client/httpcli.cc +66 -18
  138. data/src/core/util/http_client/httpcli.h +14 -4
  139. data/src/core/util/matchers.h +5 -10
  140. data/src/core/util/ref_counted.h +1 -0
  141. data/src/core/util/ref_counted_ptr.h +1 -1
  142. data/src/core/util/useful.h +9 -11
  143. data/src/core/xds/grpc/xds_endpoint_parser.cc +54 -23
  144. data/src/core/xds/grpc/xds_metadata.h +8 -0
  145. data/src/core/xds/xds_client/xds_api.cc +0 -223
  146. data/src/core/xds/xds_client/xds_api.h +1 -133
  147. data/src/core/xds/xds_client/xds_client.cc +599 -466
  148. data/src/core/xds/xds_client/xds_client.h +107 -26
  149. data/src/core/xds/xds_client/xds_resource_type_impl.h +10 -5
  150. data/src/ruby/ext/grpc/extconf.rb +1 -0
  151. data/src/ruby/lib/grpc/version.rb +1 -1
  152. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bitstr.c → a_bitstr.cc} +3 -2
  153. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_d2i_fp.c → a_d2i_fp.cc} +1 -1
  154. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_dup.c → a_dup.cc} +1 -1
  155. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_i2d_fp.c → a_i2d_fp.cc} +1 -1
  156. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_int.c → a_int.cc} +2 -1
  157. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_mbstr.c → a_mbstr.cc} +9 -7
  158. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_object.c → a_object.cc} +1 -1
  159. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strnid.c → a_strnid.cc} +7 -4
  160. data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_type.c → a_type.cc} +4 -4
  161. data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_lib.c → asn1_lib.cc} +4 -4
  162. data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn_pack.c → asn_pack.cc} +2 -2
  163. data/third_party/boringssl-with-bazel/src/crypto/asn1/{posix_time.c → posix_time.cc} +2 -2
  164. data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_dec.c → tasn_dec.cc} +4 -3
  165. data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_enc.c → tasn_enc.cc} +9 -6
  166. data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_fre.c → tasn_fre.cc} +14 -20
  167. data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_new.c → tasn_new.cc} +7 -6
  168. data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_utl.c → tasn_utl.cc} +13 -10
  169. data/third_party/boringssl-with-bazel/src/crypto/base64/{base64.c → base64.cc} +9 -12
  170. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +7 -1
  171. data/third_party/boringssl-with-bazel/src/crypto/bio/{bio.c → bio.cc} +32 -58
  172. data/third_party/boringssl-with-bazel/src/crypto/bio/{bio_mem.c → bio_mem.cc} +8 -7
  173. data/third_party/boringssl-with-bazel/src/crypto/bio/{connect.c → connect.cc} +24 -16
  174. data/third_party/boringssl-with-bazel/src/crypto/bio/{file.c → file.cc} +3 -3
  175. data/third_party/boringssl-with-bazel/src/crypto/bio/{pair.c → pair.cc} +22 -20
  176. data/third_party/boringssl-with-bazel/src/crypto/bio/{printf.c → printf.cc} +2 -2
  177. data/third_party/boringssl-with-bazel/src/crypto/bio/{socket_helper.c → socket_helper.cc} +1 -1
  178. data/third_party/boringssl-with-bazel/src/crypto/blake2/{blake2.c → blake2.cc} +2 -2
  179. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{bn_asn1.c → bn_asn1.cc} +1 -1
  180. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{convert.c → convert.cc} +21 -21
  181. data/third_party/boringssl-with-bazel/src/crypto/buf/{buf.c → buf.cc} +6 -3
  182. data/third_party/boringssl-with-bazel/src/crypto/bytestring/{asn1_compat.c → asn1_compat.cc} +1 -1
  183. data/third_party/boringssl-with-bazel/src/crypto/bytestring/{ber.c → ber.cc} +1 -1
  184. data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbb.c → cbb.cc} +33 -49
  185. data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbs.c → cbs.cc} +20 -27
  186. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +1 -1
  187. data/third_party/boringssl-with-bazel/src/crypto/bytestring/{unicode.c → unicode.cc} +1 -1
  188. data/third_party/boringssl-with-bazel/src/crypto/chacha/{chacha.c → chacha.cc} +1 -1
  189. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +1 -1
  190. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesctrhmac.c → e_aesctrhmac.cc} +1 -1
  191. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesgcmsiv.c → e_aesgcmsiv.cc} +23 -26
  192. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_chacha20poly1305.c → e_chacha20poly1305.cc} +1 -8
  193. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_des.c → e_des.cc} +61 -49
  194. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_null.c → e_null.cc} +12 -9
  195. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc2.c → e_rc2.cc} +23 -19
  196. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc4.c → e_rc4.cc} +10 -8
  197. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_tls.c → e_tls.cc} +2 -1
  198. data/third_party/boringssl-with-bazel/src/crypto/conf/{conf.c → conf.cc} +17 -14
  199. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +1 -1
  200. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_apple.c → cpu_aarch64_apple.cc} +2 -2
  201. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_fuchsia.c → cpu_aarch64_fuchsia.cc} +2 -2
  202. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_linux.c → cpu_aarch64_linux.cc} +2 -2
  203. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_openbsd.c → cpu_aarch64_openbsd.cc} +4 -4
  204. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_sysreg.c → cpu_aarch64_sysreg.cc} +3 -2
  205. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_win.c → cpu_aarch64_win.cc} +2 -2
  206. data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_freebsd.c → cpu_arm_freebsd.cc} +3 -3
  207. data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_linux.c → cpu_arm_linux.cc} +5 -5
  208. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +1 -1
  209. data/third_party/boringssl-with-bazel/src/crypto/{cpu_intel.c → cpu_intel.cc} +47 -32
  210. data/third_party/boringssl-with-bazel/src/crypto/{crypto.c → crypto.cc} +6 -11
  211. data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519.c → curve25519.cc} +28 -31
  212. data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519_64_adx.c → curve25519_64_adx.cc} +1 -1
  213. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +1 -1
  214. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  215. data/third_party/boringssl-with-bazel/src/crypto/curve25519/{spake25519.c → spake25519.cc} +20 -16
  216. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{dh_asn1.c → dh_asn1.cc} +2 -2
  217. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/{digest_extra.c → digest_extra.cc} +113 -31
  218. data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa.c → dsa.cc} +153 -154
  219. data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa_asn1.c → dsa_asn1.cc} +2 -2
  220. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +1 -3
  221. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_asn1.c → ec_asn1.cc} +35 -0
  222. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_derive.c → ec_derive.cc} +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{hash_to_curve.c → hash_to_curve.cc} +66 -64
  224. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/{ecdsa_asn1.c → ecdsa_asn1.cc} +15 -25
  226. data/third_party/boringssl-with-bazel/src/crypto/engine/{engine.c → engine.cc} +12 -8
  227. data/third_party/boringssl-with-bazel/src/crypto/err/{err.c → err.cc} +24 -27
  228. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +1 -1
  229. data/third_party/boringssl-with-bazel/src/crypto/evp/{evp.c → evp.cc} +8 -9
  230. data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_ctx.c → evp_ctx.cc} +7 -8
  231. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh.c → p_dh.cc} +23 -14
  232. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh_asn1.c → p_dh_asn1.cc} +38 -21
  233. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dsa_asn1.c → p_dsa_asn1.cc} +19 -24
  234. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec.c → p_ec.cc} +20 -23
  235. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec_asn1.c → p_ec_asn1.cc} +20 -20
  236. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519.c → p_ed25519.cc} +22 -19
  237. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519_asn1.c → p_ed25519_asn1.cc} +14 -13
  238. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_hkdf.c → p_hkdf.cc} +18 -14
  239. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa.c → p_rsa.cc} +38 -37
  240. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa_asn1.c → p_rsa_asn1.cc} +16 -18
  241. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519.c → p_x25519.cc} +22 -19
  242. data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519_asn1.c → p_x25519_asn1.cc} +18 -17
  243. data/third_party/boringssl-with-bazel/src/crypto/evp/{pbkdf.c → pbkdf.cc} +2 -2
  244. data/third_party/boringssl-with-bazel/src/crypto/evp/{print.c → print.cc} +4 -5
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/{scrypt.c → scrypt.cc} +7 -5
  246. data/third_party/boringssl-with-bazel/src/crypto/{ex_data.c → ex_data.cc} +3 -4
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c.inc → aes_nohw.cc.inc} +1 -1
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +1 -5
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c.inc → key_wrap.cc.inc} +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{bcm.c → bcm.cc} +96 -101
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +165 -12
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c.inc → add.cc.inc} +1 -0
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c.inc → x86_64-gcc.cc.inc} +4 -4
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c.inc → bn.cc.inc} +12 -24
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c.inc → ctx.cc.inc} +5 -7
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c.inc → div.cc.inc} +29 -38
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c.inc → div_extra.cc.inc} +1 -1
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c.inc → exponentiation.cc.inc} +22 -22
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c.inc → gcd.cc.inc} +3 -6
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c.inc → gcd_extra.cc.inc} +33 -25
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c.inc → montgomery.cc.inc} +10 -17
  262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c.inc → mul.cc.inc} +11 -15
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c.inc → prime.cc.inc} +31 -34
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c.inc → shift.cc.inc} +3 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c.inc → aead.cc.inc} +18 -10
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c.inc → cipher.cc.inc} +6 -9
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c.inc → e_aes.cc.inc} +46 -54
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c.inc → cmac.cc.inc} +6 -6
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +14 -10
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c.inc → dh.cc.inc} +15 -19
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +1 -3
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c.inc → digest.cc.inc} +17 -13
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c.inc → digests.cc.inc} +29 -113
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c.inc → digestsign.cc.inc} +3 -3
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +1 -1
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c.inc → ec.cc.inc} +10 -15
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c.inc → ec_key.cc.inc} +12 -14
  278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c.inc → felem.cc.inc} +1 -1
  279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c.inc → oct.cc.inc} +5 -6
  280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c.inc → p224-64.cc.inc} +1 -1
  281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +1 -1
  282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c.inc → p256-nistz.cc.inc} +15 -13
  283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c.inc → p256.cc.inc} +1 -1
  284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c.inc → scalar.cc.inc} +1 -1
  286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c.inc → simple_mul.cc.inc} +1 -1
  287. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c.inc → util.cc.inc} +1 -1
  288. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c.inc → wnaf.cc.inc} +24 -15
  289. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c.inc → ecdh.cc.inc} +14 -5
  290. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c.inc → ecdsa.cc.inc} +6 -7
  291. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +1 -1
  292. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{fips_shared_support.c → fips_shared_support.cc} +2 -3
  293. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c.inc → hkdf.cc.inc} +1 -1
  294. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c.inc → hmac.cc.inc} +3 -2
  295. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c.inc → gcm.cc.inc} +69 -21
  296. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c.inc → gcm_nohw.cc.inc} +1 -1
  297. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +53 -33
  298. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c.inc → polyval.cc.inc} +2 -3
  299. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c.inc → ctrdrbg.cc.inc} +5 -4
  300. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c.inc → rand.cc.inc} +20 -18
  302. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c.inc → blinding.cc.inc} +5 -4
  303. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c.inc → padding.cc.inc} +21 -21
  304. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c.inc → rsa.cc.inc} +77 -73
  305. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c.inc → rsa_impl.cc.inc} +50 -53
  306. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c.inc → fips.cc.inc} +14 -6
  307. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c.inc → self_check.cc.inc} +56 -52
  308. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c.inc → service_indicator.cc.inc} +10 -11
  309. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +2 -4
  310. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c.inc → sha1.cc.inc} +26 -33
  311. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c.inc → sha256.cc.inc} +37 -55
  312. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c.inc → sha512.cc.inc} +48 -76
  313. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +1 -1
  314. data/third_party/boringssl-with-bazel/src/crypto/hpke/{hpke.c → hpke.cc} +7 -4
  315. data/third_party/boringssl-with-bazel/src/crypto/hrss/{hrss.c → hrss.cc} +53 -110
  316. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +1 -1
  317. data/third_party/boringssl-with-bazel/src/crypto/internal.h +191 -248
  318. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +1 -1
  319. data/third_party/boringssl-with-bazel/src/crypto/keccak/{keccak.c → keccak.cc} +1 -1
  320. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  321. data/third_party/boringssl-with-bazel/src/crypto/kyber/{kyber.c → kyber.cc} +1 -1
  322. data/third_party/boringssl-with-bazel/src/crypto/lhash/{lhash.c → lhash.cc} +8 -7
  323. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md4/md4.c.inc → md4/md4.cc} +8 -12
  324. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5 → md5}/internal.h +1 -1
  325. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5/md5.c.inc → md5/md5.cc} +4 -3
  326. data/third_party/boringssl-with-bazel/src/crypto/{mem.c → mem.cc} +34 -22
  327. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +4 -1
  328. data/third_party/boringssl-with-bazel/src/crypto/mldsa/{mldsa.c → mldsa.cc} +646 -543
  329. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +1 -1
  330. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +8 -8
  331. data/third_party/boringssl-with-bazel/src/crypto/obj/{obj.c → obj.cc} +27 -30
  332. data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_info.c → pem_info.cc} +2 -2
  333. data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_lib.c → pem_lib.cc} +3 -4
  334. data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_oth.c → pem_oth.cc} +1 -1
  335. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +1 -1
  336. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7.c → pkcs7.cc} +5 -5
  337. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7_x509.c → pkcs7_x509.cc} +26 -25
  338. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +2 -2
  339. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{p5_pbev2.c → p5_pbev2.cc} +2 -2
  340. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8.c → pkcs8.cc} +159 -158
  341. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8_x509.c → pkcs8_x509.cc} +90 -97
  342. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +1 -1
  343. data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305.c → poly1305.cc} +3 -3
  344. data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_arm.c → poly1305_arm.cc} +4 -2
  345. data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_vec.c → poly1305_vec.cc} +14 -11
  346. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -1
  347. data/third_party/boringssl-with-bazel/src/crypto/pool/{pool.c → pool.cc} +12 -11
  348. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{deterministic.c → deterministic.cc} +2 -2
  349. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fork_detect.c → fork_detect.cc} +11 -12
  350. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{forkunsafe.c → forkunsafe.cc} +2 -2
  351. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{getentropy.c → getentropy.cc} +1 -1
  352. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +1 -1
  353. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{ios.c → ios.cc} +1 -1
  354. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{passive.c → passive.cc} +22 -18
  355. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{rand_extra.c → rand_extra.cc} +1 -1
  356. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +1 -1
  357. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{trusty.c → trusty.cc} +1 -1
  358. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{urandom.c → urandom.cc} +7 -7
  359. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{windows.c → windows.cc} +1 -1
  360. data/third_party/boringssl-with-bazel/src/crypto/{refcount.c → refcount.cc} +1 -1
  361. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_asn1.c → rsa_asn1.cc} +2 -2
  362. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_crypt.c → rsa_crypt.cc} +81 -78
  363. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_extra.cc +17 -0
  364. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  365. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  366. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  367. data/third_party/boringssl-with-bazel/src/crypto/siphash/{siphash.c → siphash.cc} +1 -1
  368. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/address.h +123 -0
  369. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.cc +169 -0
  370. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.h +58 -0
  371. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/internal.h +63 -0
  372. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.cc +161 -0
  373. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.h +70 -0
  374. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/params.h +83 -0
  375. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +307 -0
  376. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.cc +173 -0
  377. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.h +85 -0
  378. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.cc +171 -0
  379. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.h +50 -0
  380. data/third_party/boringssl-with-bazel/src/crypto/stack/{stack.c → stack.cc} +10 -6
  381. data/third_party/boringssl-with-bazel/src/crypto/{thread_none.c → thread_none.cc} +1 -1
  382. data/third_party/boringssl-with-bazel/src/crypto/{thread_pthread.c → thread_pthread.cc} +9 -8
  383. data/third_party/boringssl-with-bazel/src/crypto/{thread_win.c → thread_win.cc} +21 -17
  384. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +1 -1
  385. data/third_party/boringssl-with-bazel/src/crypto/trust_token/{pmbtoken.c → pmbtoken.cc} +146 -158
  386. data/third_party/boringssl-with-bazel/src/crypto/trust_token/{trust_token.c → trust_token.cc} +19 -21
  387. data/third_party/boringssl-with-bazel/src/crypto/trust_token/{voprf.c → voprf.cc} +165 -169
  388. data/third_party/boringssl-with-bazel/src/crypto/x509/{a_digest.c → a_digest.cc} +1 -1
  389. data/third_party/boringssl-with-bazel/src/crypto/x509/{a_sign.c → a_sign.cc} +37 -34
  390. data/third_party/boringssl-with-bazel/src/crypto/x509/{a_verify.c → a_verify.cc} +1 -1
  391. data/third_party/boringssl-with-bazel/src/crypto/x509/{algorithm.c → algorithm.cc} +1 -1
  392. data/third_party/boringssl-with-bazel/src/crypto/x509/{asn1_gen.c → asn1_gen.cc} +5 -6
  393. data/third_party/boringssl-with-bazel/src/crypto/x509/{by_dir.c → by_dir.cc} +7 -6
  394. data/third_party/boringssl-with-bazel/src/crypto/x509/{policy.c → policy.cc} +188 -178
  395. data/third_party/boringssl-with-bazel/src/crypto/x509/{rsa_pss.c → rsa_pss.cc} +48 -44
  396. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akey.c → v3_akey.cc} +4 -2
  397. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_alt.c → v3_alt.cc} +5 -5
  398. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bcons.c → v3_bcons.cc} +3 -1
  399. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bitst.c → v3_bitst.cc} +6 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_conf.c → v3_conf.cc} +5 -5
  401. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_cpols.c → v3_cpols.cc} +47 -41
  402. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_crld.c → v3_crld.cc} +3 -2
  403. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_enum.c → v3_enum.cc} +5 -2
  404. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_extku.c → v3_extku.cc} +3 -1
  405. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_genn.c → v3_genn.cc} +7 -7
  406. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ia5.c → v3_ia5.cc} +3 -2
  407. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_info.c → v3_info.cc} +4 -2
  408. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_int.c → v3_int.cc} +3 -1
  409. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_lib.c → v3_lib.cc} +9 -6
  410. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ncons.c → v3_ncons.cc} +3 -3
  411. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ocsp.c → v3_ocsp.cc} +4 -1
  412. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pcons.c → v3_pcons.cc} +3 -3
  413. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pmaps.c → v3_pmaps.cc} +3 -3
  414. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_prn.c → v3_prn.cc} +2 -1
  415. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_purp.c → v3_purp.cc} +16 -8
  416. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_skey.c → v3_skey.cc} +6 -3
  417. data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_utl.c → v3_utl.cc} +15 -10
  418. data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_att.c → x509_att.cc} +3 -2
  419. data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_lu.c → x509_lu.cc} +6 -5
  420. data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_v3.c → x509_v3.cc} +2 -2
  421. data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vfy.c → x509_vfy.cc} +216 -212
  422. data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vpm.c → x509_vpm.cc} +55 -13
  423. data/third_party/boringssl-with-bazel/src/crypto/x509/{x509spki.c → x509spki.cc} +3 -3
  424. data/third_party/boringssl-with-bazel/src/crypto/x509/{x_all.c → x_all.cc} +10 -6
  425. data/third_party/boringssl-with-bazel/src/crypto/x509/{x_crl.c → x_crl.cc} +6 -6
  426. data/third_party/boringssl-with-bazel/src/crypto/x509/{x_name.c → x_name.cc} +39 -32
  427. data/third_party/boringssl-with-bazel/src/crypto/x509/{x_pubkey.c → x_pubkey.cc} +4 -2
  428. data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509.c → x_x509.cc} +48 -44
  429. data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509a.c → x_x509a.cc} +4 -2
  430. data/third_party/boringssl-with-bazel/src/gen/crypto/{err_data.c → err_data.cc} +359 -358
  431. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -1
  432. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +1 -1
  433. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +1 -1
  434. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +237 -275
  435. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +12 -5
  436. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  437. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
  438. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +1 -1
  439. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -1
  440. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  441. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
  442. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +1 -1
  443. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +13 -2
  444. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
  445. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
  446. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -0
  447. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -1
  448. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  449. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +1 -1
  450. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
  451. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +17 -1
  452. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
  453. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
  454. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
  455. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
  456. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  457. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
  458. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +1 -1
  459. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +8 -8
  461. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
  462. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
  463. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +1 -1
  464. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -1
  465. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +1 -1
  466. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +1 -1
  467. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +1 -1
  468. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
  469. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +2 -2
  470. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
  471. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
  472. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
  473. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +1 -1
  474. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +10 -5
  475. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +1 -1
  476. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +2 -40
  477. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
  478. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +133 -0
  479. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +6 -1
  480. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +1 -1
  481. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +160 -116
  482. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -0
  483. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +1 -1
  484. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +2 -2
  485. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +1 -1
  486. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
  487. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -1
  488. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -1
  489. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +2 -2
  490. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -6
  491. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +667 -322
  492. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +116 -119
  493. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +163 -21
  494. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +4 -12
  495. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +94 -49
  496. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +296 -198
  497. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +23 -14
  498. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +363 -343
  499. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +48 -58
  500. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +44 -36
  501. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -159
  502. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +65 -58
  503. data/third_party/boringssl-with-bazel/src/ssl/internal.h +910 -356
  504. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +29 -41
  505. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +13 -11
  506. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +2 -2
  507. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +90 -183
  508. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +38 -64
  509. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -1
  510. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +103 -44
  511. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +210 -220
  512. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +70 -12
  513. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +20 -17
  514. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +146 -169
  515. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +15 -16
  516. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +79 -95
  517. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -9
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +91 -16
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +30 -16
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +51 -56
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +22 -25
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +43 -27
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +63 -59
  524. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +204 -121
  525. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +86 -59
  526. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +51 -62
  527. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +37 -25
  528. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  529. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  530. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  531. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  532. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  533. metadata +339 -339
  534. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -426
  535. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -87
  536. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -32
  537. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -408
  538. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -124
  539. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -38
  540. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -108
  541. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -33
  542. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
  543. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -48
  544. data/src/core/util/atm.cc +0 -34
  545. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
  546. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
  547. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  548. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  549. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  550. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  551. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  552. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  553. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  554. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  555. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  556. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  557. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  558. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  559. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  560. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  561. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -129
  562. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
  563. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bool.c → a_bool.cc} +0 -0
  564. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_gentm.c → a_gentm.cc} +0 -0
  565. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_octet.c → a_octet.cc} +0 -0
  566. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strex.c → a_strex.cc} +0 -0
  567. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_time.c → a_time.cc} +0 -0
  568. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_utctm.c → a_utctm.cc} +0 -0
  569. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_par.c → asn1_par.cc} +0 -0
  570. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_int.c → f_int.cc} +0 -0
  571. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_string.c → f_string.cc} +0 -0
  572. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_typ.c → tasn_typ.cc} +0 -0
  573. /data/third_party/boringssl-with-bazel/src/crypto/bio/{errno.c → errno.cc} +0 -0
  574. /data/third_party/boringssl-with-bazel/src/crypto/bio/{fd.c → fd.cc} +0 -0
  575. /data/third_party/boringssl-with-bazel/src/crypto/bio/{hexdump.c → hexdump.cc} +0 -0
  576. /data/third_party/boringssl-with-bazel/src/crypto/bio/{socket.c → socket.cc} +0 -0
  577. /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{cipher_extra.c → cipher_extra.cc} +0 -0
  578. /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{derive_key.c → derive_key.cc} +0 -0
  579. /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{tls_cbc.c → tls_cbc.cc} +0 -0
  580. /data/third_party/boringssl-with-bazel/src/crypto/des/{des.c → des.cc} +0 -0
  581. /data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{params.c → params.cc} +0 -0
  582. /data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/{ecdh_extra.c → ecdh_extra.cc} +0 -0
  583. /data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_asn1.c → evp_asn1.cc} +0 -0
  584. /data/third_party/boringssl-with-bazel/src/crypto/evp/{sign.c → sign.cc} +0 -0
  585. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c.inc → aes.cc.inc} +0 -0
  586. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c.inc → mode_wrappers.cc.inc} +0 -0
  587. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c.inc → bytes.cc.inc} +0 -0
  588. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c.inc → cmp.cc.inc} +0 -0
  589. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c.inc → generic.cc.inc} +0 -0
  590. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c.inc → jacobi.cc.inc} +0 -0
  591. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c.inc → montgomery_inv.cc.inc} +0 -0
  592. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c.inc → random.cc.inc} +0 -0
  593. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c.inc → rsaz_exp.cc.inc} +0 -0
  594. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c.inc → sqrt.cc.inc} +0 -0
  595. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c.inc → e_aesccm.cc.inc} +0 -0
  596. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c.inc → check.cc.inc} +0 -0
  597. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c.inc → ec_montgomery.cc.inc} +0 -0
  598. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c.inc → simple.cc.inc} +0 -0
  599. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c.inc → cbc.cc.inc} +0 -0
  600. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c.inc → cfb.cc.inc} +0 -0
  601. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c.inc → ctr.cc.inc} +0 -0
  602. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c.inc → ofb.cc.inc} +0 -0
  603. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c.inc → kdf.cc.inc} +0 -0
  604. /data/third_party/boringssl-with-bazel/src/crypto/obj/{obj_xref.c → obj_xref.cc} +0 -0
  605. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_all.c → pem_all.cc} +0 -0
  606. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pk8.c → pem_pk8.cc} +0 -0
  607. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pkey.c → pem_pkey.cc} +0 -0
  608. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_x509.c → pem_x509.cc} +0 -0
  609. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_xaux.c → pem_xaux.cc} +0 -0
  610. /data/third_party/boringssl-with-bazel/src/crypto/rc4/{rc4.c → rc4.cc} +0 -0
  611. /data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_print.c → rsa_print.cc} +0 -0
  612. /data/third_party/boringssl-with-bazel/src/crypto/{thread.c → thread.cc} +0 -0
  613. /data/third_party/boringssl-with-bazel/src/crypto/x509/{by_file.c → by_file.cc} +0 -0
  614. /data/third_party/boringssl-with-bazel/src/crypto/x509/{i2d_pr.c → i2d_pr.cc} +0 -0
  615. /data/third_party/boringssl-with-bazel/src/crypto/x509/{name_print.c → name_print.cc} +0 -0
  616. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_crl.c → t_crl.cc} +0 -0
  617. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_req.c → t_req.cc} +0 -0
  618. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509.c → t_x509.cc} +0 -0
  619. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509a.c → t_x509a.cc} +0 -0
  620. /data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akeya.c → v3_akeya.cc} +0 -0
  621. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509.c → x509.cc} +0 -0
  622. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_cmp.c → x509_cmp.cc} +0 -0
  623. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_d2.c → x509_d2.cc} +0 -0
  624. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_def.c → x509_def.cc} +0 -0
  625. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_ext.c → x509_ext.cc} +0 -0
  626. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_obj.c → x509_obj.cc} +0 -0
  627. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_req.c → x509_req.cc} +0 -0
  628. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_set.c → x509_set.cc} +0 -0
  629. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_trs.c → x509_trs.cc} +0 -0
  630. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_txt.c → x509_txt.cc} +0 -0
  631. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509cset.c → x509cset.cc} +0 -0
  632. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509name.c → x509name.cc} +0 -0
  633. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509rset.c → x509rset.cc} +0 -0
  634. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_algor.c → x_algor.cc} +0 -0
  635. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_attrib.c → x_attrib.cc} +0 -0
  636. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_exten.c → x_exten.cc} +0 -0
  637. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_req.c → x_req.cc} +0 -0
  638. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_sig.c → x_sig.cc} +0 -0
  639. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_spki.c → x_spki.cc} +0 -0
  640. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_val.c → x_val.cc} +0 -0
@@ -154,8 +154,8 @@
154
154
  #include <openssl/mem.h>
155
155
  #include <openssl/rand.h>
156
156
 
157
- #include "internal.h"
158
157
  #include "../crypto/internal.h"
158
+ #include "internal.h"
159
159
 
160
160
  #if defined(OPENSSL_WINDOWS)
161
161
  #include <sys/timeb.h>
@@ -213,7 +213,7 @@ void ssl_reset_error_state(SSL *ssl) {
213
213
  ERR_clear_system_error();
214
214
  }
215
215
 
216
- void ssl_set_read_error(SSL* ssl) {
216
+ void ssl_set_read_error(SSL *ssl) {
217
217
  ssl->s3->read_shutdown = ssl_shutdown_error;
218
218
  ssl->s3->read_error.reset(ERR_save_state());
219
219
  }
@@ -287,7 +287,7 @@ static uint8_t hex_char_consttime(uint8_t b) {
287
287
 
288
288
  static bool cbb_add_hex_consttime(CBB *cbb, Span<const uint8_t> in) {
289
289
  uint8_t *out;
290
- if (!CBB_add_space(cbb, &out, in.size() * 2)) {
290
+ if (!CBB_add_space(cbb, &out, in.size() * 2)) {
291
291
  return false;
292
292
  }
293
293
 
@@ -364,14 +364,7 @@ void ssl_do_msg_callback(const SSL *ssl, int is_write, int content_type,
364
364
  const_cast<SSL *>(ssl), ssl->msg_callback_arg);
365
365
  }
366
366
 
367
- void ssl_get_current_time(const SSL *ssl, struct OPENSSL_timeval *out_clock) {
368
- // TODO(martinkr): Change callers to |ssl_ctx_get_current_time| and drop the
369
- // |ssl| arg from |current_time_cb| if possible.
370
- ssl_ctx_get_current_time(ssl->ctx.get(), out_clock);
371
- }
372
-
373
- void ssl_ctx_get_current_time(const SSL_CTX *ctx,
374
- struct OPENSSL_timeval *out_clock) {
367
+ OPENSSL_timeval ssl_ctx_get_current_time(const SSL_CTX *ctx) {
375
368
  if (ctx->current_time_cb != NULL) {
376
369
  // TODO(davidben): Update current_time_cb to use OPENSSL_timeval. See
377
370
  // https://crbug.com/boringssl/155.
@@ -379,54 +372,47 @@ void ssl_ctx_get_current_time(const SSL_CTX *ctx,
379
372
  ctx->current_time_cb(nullptr /* ssl */, &clock);
380
373
  if (clock.tv_sec < 0) {
381
374
  assert(0);
382
- out_clock->tv_sec = 0;
383
- out_clock->tv_usec = 0;
375
+ return {0, 0};
384
376
  } else {
385
- out_clock->tv_sec = (uint64_t)clock.tv_sec;
386
- out_clock->tv_usec = (uint32_t)clock.tv_usec;
377
+ return {static_cast<uint64_t>(clock.tv_sec),
378
+ static_cast<uint32_t>(clock.tv_usec)};
387
379
  }
388
- return;
389
380
  }
390
381
 
391
382
  #if defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
392
- out_clock->tv_sec = 1234;
393
- out_clock->tv_usec = 1234;
383
+ return {1234, 1234};
394
384
  #elif defined(OPENSSL_WINDOWS)
395
385
  struct _timeb time;
396
386
  _ftime(&time);
397
387
  if (time.time < 0) {
398
388
  assert(0);
399
- out_clock->tv_sec = 0;
400
- out_clock->tv_usec = 0;
389
+ return {0, 0};
401
390
  } else {
402
- out_clock->tv_sec = time.time;
403
- out_clock->tv_usec = time.millitm * 1000;
391
+ return {static_cast<uint64_t>(time.time),
392
+ static_cast<uint32_t>(time.millitm * 1000)};
404
393
  }
405
394
  #else
406
395
  struct timeval clock;
407
396
  gettimeofday(&clock, NULL);
408
397
  if (clock.tv_sec < 0) {
409
398
  assert(0);
410
- out_clock->tv_sec = 0;
411
- out_clock->tv_usec = 0;
399
+ return {0, 0};
412
400
  } else {
413
- out_clock->tv_sec = (uint64_t)clock.tv_sec;
414
- out_clock->tv_usec = (uint32_t)clock.tv_usec;
401
+ return {static_cast<uint64_t>(clock.tv_sec),
402
+ static_cast<uint32_t>(clock.tv_usec)};
415
403
  }
416
404
  #endif
417
405
  }
418
406
 
419
- void SSL_CTX_set_handoff_mode(SSL_CTX *ctx, bool on) {
420
- ctx->handoff = on;
421
- }
407
+ void SSL_CTX_set_handoff_mode(SSL_CTX *ctx, bool on) { ctx->handoff = on; }
422
408
 
423
409
  static bool ssl_can_renegotiate(const SSL *ssl) {
424
410
  if (ssl->server || SSL_is_dtls(ssl)) {
425
411
  return false;
426
412
  }
427
413
 
428
- if (ssl->s3->have_version &&
429
- ssl_protocol_version(ssl) >= TLS1_3_VERSION) {
414
+ if (ssl->s3->version != 0 //
415
+ && ssl_protocol_version(ssl) >= TLS1_3_VERSION) {
430
416
  return false;
431
417
  }
432
418
 
@@ -452,9 +438,9 @@ static bool ssl_can_renegotiate(const SSL *ssl) {
452
438
  }
453
439
 
454
440
  static void ssl_maybe_shed_handshake_config(SSL *ssl) {
455
- if (ssl->s3->hs != nullptr ||
456
- ssl->config == nullptr ||
457
- !ssl->config->shed_handshake_config ||
441
+ if (ssl->s3->hs != nullptr || //
442
+ ssl->config == nullptr || //
443
+ !ssl->config->shed_handshake_config || //
458
444
  ssl_can_renegotiate(ssl)) {
459
445
  return;
460
446
  }
@@ -472,8 +458,10 @@ void SSL_set_handoff_mode(SSL *ssl, bool on) {
472
458
  bool SSL_get_traffic_secrets(const SSL *ssl,
473
459
  Span<const uint8_t> *out_read_traffic_secret,
474
460
  Span<const uint8_t> *out_write_traffic_secret) {
475
- if (SSL_version(ssl) < TLS1_3_VERSION) {
476
- OPENSSL_PUT_ERROR(SSL, SSL_R_WRONG_SSL_VERSION);
461
+ // This API is not well-defined for DTLS 1.3 (see https://crbug.com/42290608)
462
+ // or QUIC, where multiple epochs may be alive at once.
463
+ if (SSL_is_dtls(ssl) || SSL_is_quic(ssl)) {
464
+ OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
477
465
  return false;
478
466
  }
479
467
 
@@ -482,11 +470,13 @@ bool SSL_get_traffic_secrets(const SSL *ssl,
482
470
  return false;
483
471
  }
484
472
 
485
- *out_read_traffic_secret = Span<const uint8_t>(
486
- ssl->s3->read_traffic_secret, ssl->s3->read_traffic_secret_len);
487
- *out_write_traffic_secret = Span<const uint8_t>(
488
- ssl->s3->write_traffic_secret, ssl->s3->write_traffic_secret_len);
473
+ if (SSL_version(ssl) < TLS1_3_VERSION) {
474
+ OPENSSL_PUT_ERROR(SSL, SSL_R_WRONG_SSL_VERSION);
475
+ return false;
476
+ }
489
477
 
478
+ *out_read_traffic_secret = ssl->s3->read_traffic_secret;
479
+ *out_write_traffic_secret = ssl->s3->write_traffic_secret;
490
480
  return true;
491
481
  }
492
482
 
@@ -512,16 +502,11 @@ int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) {
512
502
  }
513
503
 
514
504
  static uint32_t ssl_session_hash(const SSL_SESSION *sess) {
515
- return ssl_hash_session_id(
516
- MakeConstSpan(sess->session_id, sess->session_id_length));
505
+ return ssl_hash_session_id(sess->session_id);
517
506
  }
518
507
 
519
508
  static int ssl_session_cmp(const SSL_SESSION *a, const SSL_SESSION *b) {
520
- if (a->session_id_length != b->session_id_length) {
521
- return 1;
522
- }
523
-
524
- return OPENSSL_memcmp(a->session_id, b->session_id, a->session_id_length);
509
+ return MakeConstSpan(a->session_id) == b->session_id ? 0 : 1;
525
510
  }
526
511
 
527
512
  ssl_ctx_st::ssl_ctx_st(const SSL_METHOD *ssl_method)
@@ -572,10 +557,12 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *method) {
572
557
  ret->cert = MakeUnique<CERT>(method->x509_method);
573
558
  ret->sessions = lh_SSL_SESSION_new(ssl_session_hash, ssl_session_cmp);
574
559
  ret->client_CA.reset(sk_CRYPTO_BUFFER_new_null());
560
+ ret->CA_names.reset(sk_CRYPTO_BUFFER_new_null());
575
561
  if (ret->cert == nullptr || //
576
562
  !ret->cert->is_valid() || //
577
563
  ret->sessions == nullptr || //
578
564
  ret->client_CA == nullptr || //
565
+ ret->CA_names == nullptr || //
579
566
  !ret->x509_method->ssl_ctx_new(ret.get())) {
580
567
  return nullptr;
581
568
  }
@@ -720,9 +707,7 @@ SSL_CONFIG::~SSL_CONFIG() {
720
707
  }
721
708
  }
722
709
 
723
- void SSL_free(SSL *ssl) {
724
- Delete(ssl);
725
- }
710
+ void SSL_free(SSL *ssl) { Delete(ssl); }
726
711
 
727
712
  void SSL_set_connect_state(SSL *ssl) {
728
713
  ssl->server = false;
@@ -734,13 +719,9 @@ void SSL_set_accept_state(SSL *ssl) {
734
719
  ssl->do_handshake = ssl_server_handshake;
735
720
  }
736
721
 
737
- void SSL_set0_rbio(SSL *ssl, BIO *rbio) {
738
- ssl->rbio.reset(rbio);
739
- }
722
+ void SSL_set0_rbio(SSL *ssl, BIO *rbio) { ssl->rbio.reset(rbio); }
740
723
 
741
- void SSL_set0_wbio(SSL *ssl, BIO *wbio) {
742
- ssl->wbio.reset(wbio);
743
- }
724
+ void SSL_set0_wbio(SSL *ssl, BIO *wbio) { ssl->wbio.reset(wbio); }
744
725
 
745
726
  void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio) {
746
727
  // For historical reasons, this function has many different cases in ownership
@@ -803,8 +784,8 @@ size_t SSL_quic_max_handshake_flight_len(const SSL *ssl,
803
784
  } else {
804
785
  // Clients may receive both Certificate message and a CertificateRequest
805
786
  // message.
806
- if (2*ssl->max_cert_list > kDefaultLimit) {
807
- return 2*ssl->max_cert_list;
787
+ if (2 * ssl->max_cert_list > kDefaultLimit) {
788
+ return 2 * ssl->max_cert_list;
808
789
  }
809
790
  }
810
791
  return kDefaultLimit;
@@ -819,21 +800,23 @@ size_t SSL_quic_max_handshake_flight_len(const SSL *ssl,
819
800
  }
820
801
 
821
802
  enum ssl_encryption_level_t SSL_quic_read_level(const SSL *ssl) {
822
- return ssl->s3->read_level;
803
+ assert(SSL_is_quic(ssl));
804
+ return ssl->s3->quic_read_level;
823
805
  }
824
806
 
825
807
  enum ssl_encryption_level_t SSL_quic_write_level(const SSL *ssl) {
826
- return ssl->s3->write_level;
808
+ assert(SSL_is_quic(ssl));
809
+ return ssl->s3->quic_write_level;
827
810
  }
828
811
 
829
812
  int SSL_provide_quic_data(SSL *ssl, enum ssl_encryption_level_t level,
830
813
  const uint8_t *data, size_t len) {
831
- if (ssl->quic_method == nullptr) {
814
+ if (!SSL_is_quic(ssl)) {
832
815
  OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
833
816
  return 0;
834
817
  }
835
818
 
836
- if (level != ssl->s3->read_level) {
819
+ if (level != ssl->s3->quic_read_level) {
837
820
  OPENSSL_PUT_ERROR(SSL, SSL_R_WRONG_ENCRYPTION_LEVEL_RECEIVED);
838
821
  return 0;
839
822
  }
@@ -937,7 +920,7 @@ static int ssl_do_post_handshake(SSL *ssl, const SSLMessage &msg) {
937
920
  int SSL_process_quic_post_handshake(SSL *ssl) {
938
921
  ssl_reset_error_state(ssl);
939
922
 
940
- if (SSL_in_init(ssl)) {
923
+ if (!SSL_is_quic(ssl) || SSL_in_init(ssl)) {
941
924
  OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
942
925
  return 0;
943
926
  }
@@ -980,6 +963,15 @@ static int ssl_read_impl(SSL *ssl) {
980
963
  return -1;
981
964
  }
982
965
 
966
+ // If a read triggered a DTLS ACK or retransmit, resolve that before reading
967
+ // more.
968
+ if (SSL_is_dtls(ssl)) {
969
+ int ret = ssl->method->flush(ssl);
970
+ if (ret <= 0) {
971
+ return ret;
972
+ }
973
+ }
974
+
983
975
  // Complete the current handshake, if any. False Start will cause
984
976
  // |SSL_do_handshake| to return mid-handshake, so this may require multiple
985
977
  // iterations.
@@ -1047,7 +1039,7 @@ int SSL_read(SSL *ssl, void *buf, int num) {
1047
1039
  }
1048
1040
 
1049
1041
  int SSL_peek(SSL *ssl, void *buf, int num) {
1050
- if (ssl->quic_method != nullptr) {
1042
+ if (SSL_is_quic(ssl)) {
1051
1043
  OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1052
1044
  return -1;
1053
1045
  }
@@ -1068,7 +1060,7 @@ int SSL_peek(SSL *ssl, void *buf, int num) {
1068
1060
  int SSL_write(SSL *ssl, const void *buf, int num) {
1069
1061
  ssl_reset_error_state(ssl);
1070
1062
 
1071
- if (ssl->quic_method != nullptr) {
1063
+ if (SSL_is_quic(ssl)) {
1072
1064
  OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1073
1065
  return -1;
1074
1066
  }
@@ -1114,7 +1106,7 @@ int SSL_key_update(SSL *ssl, int request_type) {
1114
1106
  return 0;
1115
1107
  }
1116
1108
 
1117
- if (ssl->ctx->quic_method != nullptr) {
1109
+ if (SSL_is_quic(ssl)) {
1118
1110
  OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1119
1111
  return 0;
1120
1112
  }
@@ -1129,12 +1121,7 @@ int SSL_key_update(SSL *ssl, int request_type) {
1129
1121
  return 0;
1130
1122
  }
1131
1123
 
1132
- if (!ssl->s3->key_update_pending &&
1133
- !tls13_add_key_update(ssl, request_type)) {
1134
- return 0;
1135
- }
1136
-
1137
- return 1;
1124
+ return tls13_add_key_update(ssl, request_type);
1138
1125
  }
1139
1126
 
1140
1127
  int SSL_shutdown(SSL *ssl) {
@@ -1255,7 +1242,7 @@ int SSL_early_data_accepted(const SSL *ssl) {
1255
1242
 
1256
1243
  void SSL_reset_early_data_reject(SSL *ssl) {
1257
1244
  SSL_HANDSHAKE *hs = ssl->s3->hs.get();
1258
- if (hs == NULL ||
1245
+ if (hs == NULL || //
1259
1246
  hs->wait != ssl_hs_early_data_rejected) {
1260
1247
  abort();
1261
1248
  }
@@ -1360,7 +1347,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
1360
1347
  return ssl->s3->rwstate;
1361
1348
 
1362
1349
  case SSL_ERROR_WANT_READ: {
1363
- if (ssl->quic_method) {
1350
+ if (SSL_is_quic(ssl)) {
1364
1351
  return SSL_ERROR_WANT_READ;
1365
1352
  }
1366
1353
  BIO *bio = SSL_get_rbio(ssl);
@@ -1515,36 +1502,31 @@ int SSL_get_tls_unique(const SSL *ssl, uint8_t *out, size_t *out_len,
1515
1502
  // The tls-unique value is the first Finished message in the handshake, which
1516
1503
  // is the client's in a full handshake and the server's for a resumption. See
1517
1504
  // https://tools.ietf.org/html/rfc5929#section-3.1.
1518
- const uint8_t *finished = ssl->s3->previous_client_finished;
1519
- size_t finished_len = ssl->s3->previous_client_finished_len;
1505
+ Span<const uint8_t> finished = ssl->s3->previous_client_finished;
1520
1506
  if (ssl->session != NULL) {
1521
1507
  // tls-unique is broken for resumed sessions unless EMS is used.
1522
1508
  if (!ssl->session->extended_master_secret) {
1523
1509
  return 0;
1524
1510
  }
1525
1511
  finished = ssl->s3->previous_server_finished;
1526
- finished_len = ssl->s3->previous_server_finished_len;
1527
1512
  }
1528
1513
 
1529
- *out_len = finished_len;
1530
- if (finished_len > max_out) {
1514
+ *out_len = finished.size();
1515
+ if (finished.size() > max_out) {
1531
1516
  *out_len = max_out;
1532
1517
  }
1533
1518
 
1534
- OPENSSL_memcpy(out, finished, *out_len);
1519
+ OPENSSL_memcpy(out, finished.data(), *out_len);
1535
1520
  return 1;
1536
1521
  }
1537
1522
 
1538
1523
  static int set_session_id_context(CERT *cert, const uint8_t *sid_ctx,
1539
- size_t sid_ctx_len) {
1540
- if (sid_ctx_len > sizeof(cert->sid_ctx)) {
1524
+ size_t sid_ctx_len) {
1525
+ if (!cert->sid_ctx.TryCopyFrom(MakeConstSpan(sid_ctx, sid_ctx_len))) {
1541
1526
  OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
1542
1527
  return 0;
1543
1528
  }
1544
1529
 
1545
- static_assert(sizeof(cert->sid_ctx) < 256, "sid_ctx too large");
1546
- cert->sid_ctx_length = (uint8_t)sid_ctx_len;
1547
- OPENSSL_memcpy(cert->sid_ctx, sid_ctx, sid_ctx_len);
1548
1530
  return 1;
1549
1531
  }
1550
1532
 
@@ -1567,8 +1549,8 @@ const uint8_t *SSL_get0_session_id_context(const SSL *ssl, size_t *out_len) {
1567
1549
  *out_len = 0;
1568
1550
  return NULL;
1569
1551
  }
1570
- *out_len = ssl->config->cert->sid_ctx_length;
1571
- return ssl->config->cert->sid_ctx;
1552
+ *out_len = ssl->config->cert->sid_ctx.size();
1553
+ return ssl->config->cert->sid_ctx.data();
1572
1554
  }
1573
1555
 
1574
1556
  int SSL_get_fd(const SSL *ssl) { return SSL_get_rfd(ssl); }
@@ -1643,13 +1625,12 @@ int SSL_set_rfd(SSL *ssl, int fd) {
1643
1625
  }
1644
1626
  #endif // !OPENSSL_NO_SOCK
1645
1627
 
1646
- static size_t copy_finished(void *out, size_t out_len, const uint8_t *in,
1647
- size_t in_len) {
1648
- if (out_len > in_len) {
1649
- out_len = in_len;
1628
+ static size_t copy_finished(void *out, size_t out_len, Span<const uint8_t> in) {
1629
+ if (out_len > in.size()) {
1630
+ out_len = in.size();
1650
1631
  }
1651
- OPENSSL_memcpy(out, in, out_len);
1652
- return in_len;
1632
+ OPENSSL_memcpy(out, in.data(), out_len);
1633
+ return in.size();
1653
1634
  }
1654
1635
 
1655
1636
  size_t SSL_get_finished(const SSL *ssl, void *buf, size_t count) {
@@ -1659,12 +1640,10 @@ size_t SSL_get_finished(const SSL *ssl, void *buf, size_t count) {
1659
1640
  }
1660
1641
 
1661
1642
  if (ssl->server) {
1662
- return copy_finished(buf, count, ssl->s3->previous_server_finished,
1663
- ssl->s3->previous_server_finished_len);
1643
+ return copy_finished(buf, count, ssl->s3->previous_server_finished);
1664
1644
  }
1665
1645
 
1666
- return copy_finished(buf, count, ssl->s3->previous_client_finished,
1667
- ssl->s3->previous_client_finished_len);
1646
+ return copy_finished(buf, count, ssl->s3->previous_client_finished);
1668
1647
  }
1669
1648
 
1670
1649
  size_t SSL_get_peer_finished(const SSL *ssl, void *buf, size_t count) {
@@ -1674,12 +1653,10 @@ size_t SSL_get_peer_finished(const SSL *ssl, void *buf, size_t count) {
1674
1653
  }
1675
1654
 
1676
1655
  if (ssl->server) {
1677
- return copy_finished(buf, count, ssl->s3->previous_client_finished,
1678
- ssl->s3->previous_client_finished_len);
1656
+ return copy_finished(buf, count, ssl->s3->previous_client_finished);
1679
1657
  }
1680
1658
 
1681
- return copy_finished(buf, count, ssl->s3->previous_server_finished,
1682
- ssl->s3->previous_server_finished_len);
1659
+ return copy_finished(buf, count, ssl->s3->previous_server_finished);
1683
1660
  }
1684
1661
 
1685
1662
  int SSL_get_verify_mode(const SSL *ssl) {
@@ -1693,7 +1670,7 @@ int SSL_get_verify_mode(const SSL *ssl) {
1693
1670
  int SSL_get_extms_support(const SSL *ssl) {
1694
1671
  // TLS 1.3 does not require extended master secret and always reports as
1695
1672
  // supporting it.
1696
- if (!ssl->s3->have_version) {
1673
+ if (ssl->s3->version == 0) {
1697
1674
  return 0;
1698
1675
  }
1699
1676
  if (ssl_protocol_version(ssl) >= TLS1_3_VERSION) {
@@ -1748,7 +1725,7 @@ static bool has_cert_and_key(const SSL_CREDENTIAL *cred) {
1748
1725
  int SSL_CTX_check_private_key(const SSL_CTX *ctx) {
1749
1726
  // There is no need to actually check consistency because inconsistent values
1750
1727
  // can never be configured.
1751
- return has_cert_and_key(ctx->cert->default_credential.get());
1728
+ return has_cert_and_key(ctx->cert->legacy_credential.get());
1752
1729
  }
1753
1730
 
1754
1731
  int SSL_check_private_key(const SSL *ssl) {
@@ -1758,7 +1735,7 @@ int SSL_check_private_key(const SSL *ssl) {
1758
1735
 
1759
1736
  // There is no need to actually check consistency because inconsistent values
1760
1737
  // can never be configured.
1761
- return has_cert_and_key(ssl->config->cert->default_credential.get());
1738
+ return has_cert_and_key(ssl->config->cert->legacy_credential.get());
1762
1739
  }
1763
1740
 
1764
1741
  long SSL_get_default_timeout(const SSL *ssl) {
@@ -1824,9 +1801,7 @@ void SSL_CTX_set_max_cert_list(SSL_CTX *ctx, size_t max_cert_list) {
1824
1801
  ctx->max_cert_list = (uint32_t)max_cert_list;
1825
1802
  }
1826
1803
 
1827
- size_t SSL_get_max_cert_list(const SSL *ssl) {
1828
- return ssl->max_cert_list;
1829
- }
1804
+ size_t SSL_get_max_cert_list(const SSL *ssl) { return ssl->max_cert_list; }
1830
1805
 
1831
1806
  void SSL_set_max_cert_list(SSL *ssl, size_t max_cert_list) {
1832
1807
  if (max_cert_list > kMaxHandshakeSize) {
@@ -1868,7 +1843,7 @@ int SSL_set_mtu(SSL *ssl, unsigned mtu) {
1868
1843
  }
1869
1844
 
1870
1845
  int SSL_get_secure_renegotiation_support(const SSL *ssl) {
1871
- if (!ssl->s3->have_version) {
1846
+ if (ssl->s3->version == 0) {
1872
1847
  return 0;
1873
1848
  }
1874
1849
  return ssl_protocol_version(ssl) >= TLS1_3_VERSION ||
@@ -1949,9 +1924,9 @@ int SSL_CTX_set_tlsext_ticket_keys(SSL_CTX *ctx, const void *in, size_t len) {
1949
1924
  }
1950
1925
 
1951
1926
  int SSL_CTX_set_tlsext_ticket_key_cb(
1952
- SSL_CTX *ctx, int (*callback)(SSL *ssl, uint8_t *key_name, uint8_t *iv,
1953
- EVP_CIPHER_CTX *ctx, HMAC_CTX *hmac_ctx,
1954
- int encrypt)) {
1927
+ SSL_CTX *ctx,
1928
+ int (*callback)(SSL *ssl, uint8_t *key_name, uint8_t *iv,
1929
+ EVP_CIPHER_CTX *ctx, HMAC_CTX *hmac_ctx, int encrypt)) {
1955
1930
  ctx->ticket_key_cb = callback;
1956
1931
  return 1;
1957
1932
  }
@@ -1985,7 +1960,7 @@ int SSL_set1_group_ids(SSL *ssl, const uint16_t *group_ids,
1985
1960
  static bool ssl_nids_to_group_ids(Array<uint16_t> *out_group_ids,
1986
1961
  Span<const int> nids) {
1987
1962
  Array<uint16_t> group_ids;
1988
- if (!group_ids.Init(nids.size())) {
1963
+ if (!group_ids.InitForOverwrite(nids.size())) {
1989
1964
  return false;
1990
1965
  }
1991
1966
 
@@ -2027,7 +2002,7 @@ static bool ssl_str_to_group_ids(Array<uint16_t> *out_group_ids,
2027
2002
  } while (col);
2028
2003
 
2029
2004
  Array<uint16_t> group_ids;
2030
- if (!group_ids.Init(count)) {
2005
+ if (!group_ids.InitForOverwrite(count)) {
2031
2006
  return false;
2032
2007
  }
2033
2008
 
@@ -2078,13 +2053,9 @@ int SSL_get_negotiated_group(const SSL *ssl) {
2078
2053
  return ssl_group_id_to_nid(group_id);
2079
2054
  }
2080
2055
 
2081
- int SSL_CTX_set_tmp_dh(SSL_CTX *ctx, const DH *dh) {
2082
- return 1;
2083
- }
2056
+ int SSL_CTX_set_tmp_dh(SSL_CTX *ctx, const DH *dh) { return 1; }
2084
2057
 
2085
- int SSL_set_tmp_dh(SSL *ssl, const DH *dh) {
2086
- return 1;
2087
- }
2058
+ int SSL_set_tmp_dh(SSL *ssl, const DH *dh) { return 1; }
2088
2059
 
2089
2060
  STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx) {
2090
2061
  return ctx->cipher_list->ciphers.get();
@@ -2107,7 +2078,7 @@ STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *ssl) {
2107
2078
  }
2108
2079
 
2109
2080
  return ssl->config->cipher_list ? ssl->config->cipher_list->ciphers.get()
2110
- : ssl->ctx->cipher_list->ciphers.get();
2081
+ : ssl->ctx->cipher_list->ciphers.get();
2111
2082
  }
2112
2083
 
2113
2084
  const char *SSL_get_cipher_list(const SSL *ssl, int n) {
@@ -2343,10 +2314,12 @@ void SSL_CTX_set_next_protos_advertised_cb(
2343
2314
  ctx->next_protos_advertised_cb_arg = arg;
2344
2315
  }
2345
2316
 
2346
- void SSL_CTX_set_next_proto_select_cb(
2347
- SSL_CTX *ctx, int (*cb)(SSL *ssl, uint8_t **out, uint8_t *out_len,
2348
- const uint8_t *in, unsigned in_len, void *arg),
2349
- void *arg) {
2317
+ void SSL_CTX_set_next_proto_select_cb(SSL_CTX *ctx,
2318
+ int (*cb)(SSL *ssl, uint8_t **out,
2319
+ uint8_t *out_len,
2320
+ const uint8_t *in,
2321
+ unsigned in_len, void *arg),
2322
+ void *arg) {
2350
2323
  ctx->next_proto_select_cb = cb;
2351
2324
  ctx->next_proto_select_cb_arg = arg;
2352
2325
  }
@@ -2480,9 +2453,8 @@ int SSL_enable_tls_channel_id(SSL *ssl) {
2480
2453
 
2481
2454
  static int is_p256_key(EVP_PKEY *private_key) {
2482
2455
  const EC_KEY *ec_key = EVP_PKEY_get0_EC_KEY(private_key);
2483
- return ec_key != NULL &&
2484
- EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key)) ==
2485
- NID_X9_62_prime256v1;
2456
+ return ec_key != NULL && EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key)) ==
2457
+ NID_X9_62_prime256v1;
2486
2458
  }
2487
2459
 
2488
2460
  int SSL_CTX_set1_tls_channel_id(SSL_CTX *ctx, EVP_PKEY *private_key) {
@@ -2536,7 +2508,7 @@ size_t SSL_get0_peer_verify_algorithms(const SSL *ssl,
2536
2508
  }
2537
2509
 
2538
2510
  size_t SSL_get0_peer_delegation_algorithms(const SSL *ssl,
2539
- const uint16_t **out_sigalgs){
2511
+ const uint16_t **out_sigalgs) {
2540
2512
  Span<const uint16_t> sigalgs;
2541
2513
  if (ssl->s3->hs != nullptr) {
2542
2514
  sigalgs = ssl->s3->hs->peer_delegated_credential_sigalgs;
@@ -2550,11 +2522,11 @@ EVP_PKEY *SSL_get_privatekey(const SSL *ssl) {
2550
2522
  assert(ssl->config);
2551
2523
  return nullptr;
2552
2524
  }
2553
- return ssl->config->cert->default_credential->privkey.get();
2525
+ return ssl->config->cert->legacy_credential->privkey.get();
2554
2526
  }
2555
2527
 
2556
2528
  EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx) {
2557
- return ctx->cert->default_credential->privkey.get();
2529
+ return ctx->cert->legacy_credential->privkey.get();
2558
2530
  }
2559
2531
 
2560
2532
  const SSL_CIPHER *SSL_get_current_cipher(const SSL *ssl) {
@@ -2658,7 +2630,7 @@ int SSL_state(const SSL *ssl) {
2658
2630
  return SSL_in_init(ssl) ? SSL_ST_INIT : SSL_ST_OK;
2659
2631
  }
2660
2632
 
2661
- void SSL_set_state(SSL *ssl, int state) { }
2633
+ void SSL_set_state(SSL *ssl, int state) {}
2662
2634
 
2663
2635
  char *SSL_get_shared_ciphers(const SSL *ssl, char *buf, int len) {
2664
2636
  if (len <= 0) {
@@ -2707,7 +2679,7 @@ int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
2707
2679
  CRYPTO_EX_dup *dup_unused,
2708
2680
  CRYPTO_EX_free *free_func) {
2709
2681
  return CRYPTO_get_ex_new_index_ex(&g_ex_data_class_ssl_ctx, argl, argp,
2710
- free_func);
2682
+ free_func);
2711
2683
  }
2712
2684
 
2713
2685
  int SSL_CTX_set_ex_data(SSL_CTX *ctx, int idx, void *data) {
@@ -2814,9 +2786,10 @@ void SSL_CTX_set_psk_client_callback(
2814
2786
  ctx->psk_client_callback = cb;
2815
2787
  }
2816
2788
 
2817
- void SSL_set_psk_server_callback(
2818
- SSL *ssl, unsigned (*cb)(SSL *ssl, const char *identity, uint8_t *psk,
2819
- unsigned max_psk_len)) {
2789
+ void SSL_set_psk_server_callback(SSL *ssl,
2790
+ unsigned (*cb)(SSL *ssl, const char *identity,
2791
+ uint8_t *psk,
2792
+ unsigned max_psk_len)) {
2820
2793
  if (!ssl->config) {
2821
2794
  return;
2822
2795
  }
@@ -2824,8 +2797,8 @@ void SSL_set_psk_server_callback(
2824
2797
  }
2825
2798
 
2826
2799
  void SSL_CTX_set_psk_server_callback(
2827
- SSL_CTX *ctx, unsigned (*cb)(SSL *ssl, const char *identity,
2828
- uint8_t *psk, unsigned max_psk_len)) {
2800
+ SSL_CTX *ctx, unsigned (*cb)(SSL *ssl, const char *identity, uint8_t *psk,
2801
+ unsigned max_psk_len)) {
2829
2802
  ctx->psk_server_callback = cb;
2830
2803
  }
2831
2804
 
@@ -2878,9 +2851,7 @@ int SSL_can_release_private_key(const SSL *ssl) {
2878
2851
  return !ssl->s3->hs || ssl->s3->hs->can_release_private_key;
2879
2852
  }
2880
2853
 
2881
- int SSL_is_init_finished(const SSL *ssl) {
2882
- return !SSL_in_init(ssl);
2883
- }
2854
+ int SSL_is_init_finished(const SSL *ssl) { return !SSL_in_init(ssl); }
2884
2855
 
2885
2856
  int SSL_in_init(const SSL *ssl) {
2886
2857
  // This returns false once all the handshake state has been finalized, to
@@ -2897,14 +2868,14 @@ int SSL_in_false_start(const SSL *ssl) {
2897
2868
  return ssl->s3->hs->in_false_start;
2898
2869
  }
2899
2870
 
2900
- int SSL_cutthrough_complete(const SSL *ssl) {
2901
- return SSL_in_false_start(ssl);
2902
- }
2871
+ int SSL_cutthrough_complete(const SSL *ssl) { return SSL_in_false_start(ssl); }
2903
2872
 
2904
2873
  int SSL_is_server(const SSL *ssl) { return ssl->server; }
2905
2874
 
2906
2875
  int SSL_is_dtls(const SSL *ssl) { return ssl->method->is_dtls; }
2907
2876
 
2877
+ int SSL_is_quic(const SSL *ssl) { return ssl->quic_method != nullptr; }
2878
+
2908
2879
  void SSL_CTX_set_select_certificate_cb(
2909
2880
  SSL_CTX *ctx,
2910
2881
  enum ssl_select_cert_result_t (*cb)(const SSL_CLIENT_HELLO *)) {
@@ -2942,6 +2913,13 @@ void SSL_set_renegotiate_mode(SSL *ssl, enum ssl_renegotiate_mode_t mode) {
2942
2913
 
2943
2914
  int SSL_get_ivs(const SSL *ssl, const uint8_t **out_read_iv,
2944
2915
  const uint8_t **out_write_iv, size_t *out_iv_len) {
2916
+ // No cipher suites maintain stateful internal IVs in DTLS. It would not be
2917
+ // compatible with reordering.
2918
+ if (SSL_is_dtls(ssl)) {
2919
+ OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
2920
+ return 0;
2921
+ }
2922
+
2945
2923
  size_t write_iv_len;
2946
2924
  if (!ssl->s3->aead_read_ctx->GetIV(out_read_iv, out_iv_len) ||
2947
2925
  !ssl->s3->aead_write_ctx->GetIV(out_write_iv, &write_iv_len) ||
@@ -2954,30 +2932,30 @@ int SSL_get_ivs(const SSL *ssl, const uint8_t **out_read_iv,
2954
2932
 
2955
2933
  uint64_t SSL_get_read_sequence(const SSL *ssl) {
2956
2934
  if (SSL_is_dtls(ssl)) {
2957
- // TODO(crbug.com/42290608): The API for read sequences in DTLS 1.3 needs to
2958
- // reworked. In DTLS 1.3, the read epoch is updated once new keys are
2959
- // derived (before we receive a message encrypted with those keys), which
2960
- // results in the read epoch being ahead of the highest record received.
2961
- // Additionally, when we process a KeyUpdate, we will install new read keys
2962
- // for the new epoch, but we may receive messages from the old epoch for
2963
- // some time if the ACK gets lost or there is reordering.
2964
-
2965
- // max_seq_num already includes the epoch. However, the current epoch may
2966
- // be one ahead of the highest record received, immediately after a key
2967
- // change.
2968
- assert(ssl->d1->r_epoch >= ssl->d1->bitmap.max_seq_num >> 48);
2969
- return ssl->d1->bitmap.max_seq_num;
2935
+ // TODO(crbug.com/42290608): This API needs to reworked.
2936
+ //
2937
+ // In DTLS 1.2, right at an epoch transition, |read_epoch| may not have
2938
+ // received any records. We will then return that sequence 0 is the highest
2939
+ // received, but it's really -1, which is not representable. This is mostly
2940
+ // moot because, after the handshake, we will never be in the state.
2941
+ //
2942
+ // In DTLS 1.3, epochs do not transition until the first record comes in.
2943
+ // This avoids the DTLS 1.2 problem but introduces a different problem:
2944
+ // during a KeyUpdate (which may occur in the steady state), both epochs are
2945
+ // live. We'll likely need a new API for DTLS offload.
2946
+ const DTLSReadEpoch *read_epoch = &ssl->d1->read_epoch;
2947
+ return DTLSRecordNumber(read_epoch->epoch, read_epoch->bitmap.max_seq_num())
2948
+ .combined();
2970
2949
  }
2971
2950
  return ssl->s3->read_sequence;
2972
2951
  }
2973
2952
 
2974
2953
  uint64_t SSL_get_write_sequence(const SSL *ssl) {
2975
- uint64_t ret = ssl->s3->write_sequence;
2976
2954
  if (SSL_is_dtls(ssl)) {
2977
- assert((ret >> 48) == 0);
2978
- ret |= uint64_t{ssl->d1->w_epoch} << 48;
2955
+ return ssl->d1->write_epoch.next_record.combined();
2979
2956
  }
2980
- return ret;
2957
+
2958
+ return ssl->s3->write_sequence;
2981
2959
  }
2982
2960
 
2983
2961
  uint16_t SSL_get_peer_signature_algorithm(const SSL *ssl) {
@@ -3179,8 +3157,8 @@ void SSL_CTX_set_ticket_aead_method(SSL_CTX *ctx,
3179
3157
 
3180
3158
  SSL_SESSION *SSL_process_tls13_new_session_ticket(SSL *ssl, const uint8_t *buf,
3181
3159
  size_t buf_len) {
3182
- if (SSL_in_init(ssl) ||
3183
- ssl_protocol_version(ssl) != TLS1_3_VERSION ||
3160
+ if (SSL_in_init(ssl) || //
3161
+ ssl_protocol_version(ssl) != TLS1_3_VERSION || //
3184
3162
  ssl->server) {
3185
3163
  // Only TLS 1.3 clients are supported.
3186
3164
  OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
@@ -3190,8 +3168,8 @@ SSL_SESSION *SSL_process_tls13_new_session_ticket(SSL *ssl, const uint8_t *buf,
3190
3168
  CBS cbs, body;
3191
3169
  CBS_init(&cbs, buf, buf_len);
3192
3170
  uint8_t type;
3193
- if (!CBS_get_u8(&cbs, &type) ||
3194
- !CBS_get_u24_length_prefixed(&cbs, &body) ||
3171
+ if (!CBS_get_u8(&cbs, &type) || //
3172
+ !CBS_get_u24_length_prefixed(&cbs, &body) || //
3195
3173
  CBS_len(&cbs) != 0) {
3196
3174
  OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR);
3197
3175
  return nullptr;
@@ -3226,8 +3204,8 @@ int SSL_get_tlsext_status_type(const SSL *ssl) {
3226
3204
  if (ssl->server) {
3227
3205
  SSL_HANDSHAKE *hs = ssl->s3->hs.get();
3228
3206
  return hs != nullptr && hs->ocsp_stapling_requested
3229
- ? TLSEXT_STATUSTYPE_ocsp
3230
- : TLSEXT_STATUSTYPE_nothing;
3207
+ ? TLSEXT_STATUSTYPE_ocsp
3208
+ : TLSEXT_STATUSTYPE_nothing;
3231
3209
  }
3232
3210
 
3233
3211
  return ssl->config != nullptr && ssl->config->ocsp_stapling_enabled
@@ -3411,12 +3389,11 @@ static int Configure(SSL_CTX *ctx) {
3411
3389
  }
3412
3390
 
3413
3391
  static int Configure(SSL *ssl) {
3414
- ssl->config->tls13_cipher_policy =
3415
- ssl_compliance_policy_cnsa_202407;
3392
+ ssl->config->tls13_cipher_policy = ssl_compliance_policy_cnsa_202407;
3416
3393
  return 1;
3417
3394
  }
3418
3395
 
3419
- }
3396
+ } // namespace cnsa202407
3420
3397
 
3421
3398
  int SSL_CTX_set_compliance_policy(SSL_CTX *ctx,
3422
3399
  enum ssl_compliance_policy_t policy) {