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
@@ -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
- return EVP_DigestInit_ex(hash_.get(), md, nullptr) &&
168
- EVP_DigestUpdate(hash_.get(), buffer_->data, buffer_->length);
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
- void SSLTranscript::FreeBuffer() {
172
- buffer_.reset();
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
- size_t SSLTranscript::DigestLen() const {
176
- return EVP_MD_size(Digest());
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 EVP_MD_CTX_md(hash_.get());
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
- !Update(header) ||
197
- !Update(MakeConstSpan(old_hash, hash_len))) {
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 EVP_DigestInit_ex(ctx, digest, nullptr) &&
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 (c) 2017, Google Inc.
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 DTLS1_3_EXPERIMENTAL_VERSION:
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
- DTLS1_3_EXPERIMENTAL_VERSION,
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* kUnknownVersion = "unknown";
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
- {DTLS1_3_EXPERIMENTAL_VERSION, "DTLSv1.3"},
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->quic_method && min_version < TLS1_3_VERSION) {
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
- return ssl->version;
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->have_version);
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->default_credential->ClearIntermediateCerts();
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->default_credential->AppendIntermediateCert(std::move(buffer))) {
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(ctx.get(),
348
- SSL_get_ex_data_X509_STORE_CTX_idx(), ssl) ||
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(ctx.get(),
353
- ssl->server ? "ssl_client" : "ssl_server") ||
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 default credential
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->default_credential.get();
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
- ssl_crypto_x509_check_client_CA_list,
471
- ssl_crypto_x509_cert_clear,
472
- ssl_crypto_x509_cert_free,
473
- ssl_crypto_x509_cert_dup,
474
- ssl_crypto_x509_cert_flush_cached_chain,
475
- ssl_crypto_x509_cert_flush_cached_leaf,
476
- ssl_crypto_x509_session_cache_objects,
477
- ssl_crypto_x509_session_dup,
478
- ssl_crypto_x509_session_clear,
479
- ssl_crypto_x509_session_verify_cert_chain,
480
- ssl_crypto_x509_hs_flush_cached_ca_names,
481
- ssl_crypto_x509_ssl_new,
482
- ssl_crypto_x509_ssl_config_free,
483
- ssl_crypto_x509_ssl_flush_cached_client_CA,
484
- ssl_crypto_x509_ssl_auto_chain_if_needed,
485
- ssl_crypto_x509_ssl_ctx_new,
486
- ssl_crypto_x509_ssl_ctx_free,
487
- ssl_crypto_x509_ssl_ctx_flush_cached_client_CA,
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(SSL_CTX *ctx,
640
- int (*cb)(X509_STORE_CTX *store_ctx,
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->default_credential.get();
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->default_credential->AppendIntermediateCert(std::move(buffer))) {
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->default_credential.get();
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
- buffer_names_to_x509(const STACK_OF(CRYPTO_BUFFER) *names,
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->default_credential->IsComplete() ||
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, int (*cb)(SSL *ssl,
1183
- X509 **out_x509,
1184
- EVP_PKEY **out_pkey)) {
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), SSL_is_dtls(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->Init(key_block_size) ||
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
- SSLAEADContext::Create(direction, ssl->version, SSL_is_dtls(ssl),
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
- /*secret_for_quic=*/{});
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
- /*secret_for_quic=*/{});
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
- int tls1_generate_master_secret(SSL_HANDSHAKE *hs, uint8_t *out,
271
- Span<const uint8_t> premaster) {
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(), out_span, premaster, label,
281
+ !tls1_prf(hs->transcript.Digest(), out, premaster, label,
284
282
  MakeConstSpan(digests, digests_len), {})) {
285
- return 0;
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(), out_span, premaster, label,
288
+ if (!tls1_prf(hs->transcript.Digest(), out, premaster, label,
291
289
  ssl->s3->client_random, ssl->s3->server_random)) {
292
- return 0;
290
+ return false;
293
291
  }
294
292
  }
295
293
 
296
- return SSL3_MASTER_SECRET_SIZE;
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->have_version && ssl_protocol_version(ssl) >= TLS1_3_VERSION) {
338
- if (ssl->s3->exporter_secret_len == 0) {
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.Init(seed_len)) {
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, context_len);
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
  }