grpc 1.84.0 → 1.85.0.pre1

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 (1004) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/include/grpc/event_engine/memory_allocator.h +1 -0
  4. data/include/grpc/grpc.h +3 -0
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +4 -0
  7. data/src/core/call/call_filters.h +10 -10
  8. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  10. data/src/core/call/filter_fusion.h +15 -15
  11. data/src/core/call/interception_chain.h +3 -3
  12. data/src/core/call/metadata_batch.cc +1 -0
  13. data/src/core/call/metadata_batch.h +45 -33
  14. data/src/core/call/parsed_metadata.h +3 -3
  15. data/src/core/call/request_buffer.cc +6 -6
  16. data/src/core/call/request_buffer.h +1 -1
  17. data/src/core/channelz/channel_trace.cc +5 -5
  18. data/src/core/channelz/channel_trace.h +1 -1
  19. data/src/core/channelz/channelz.cc +9 -9
  20. data/src/core/channelz/channelz.h +12 -12
  21. data/src/core/channelz/channelz_registry.cc +10 -10
  22. data/src/core/channelz/ztrace_collector.h +5 -5
  23. data/src/core/client_channel/client_channel.cc +4 -4
  24. data/src/core/client_channel/client_channel_filter.cc +14 -14
  25. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  26. data/src/core/client_channel/subchannel.cc +24 -23
  27. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  28. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  29. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  30. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  31. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  32. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  33. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  34. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  39. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  40. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  41. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  42. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  43. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  45. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  48. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  49. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  50. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  55. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  56. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  61. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  63. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  65. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  68. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  70. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  72. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  73. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  74. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  76. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  85. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  87. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  97. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  98. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  99. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  100. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  101. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  102. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  103. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  104. data/src/core/handshaker/handshaker.cc +4 -4
  105. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  106. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  107. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  108. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  109. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  110. data/src/core/lib/channel/channel_args.cc +20 -0
  111. data/src/core/lib/channel/channel_args.h +17 -17
  112. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  113. data/src/core/lib/channel/promise_based_filter.h +66 -27
  114. data/src/core/lib/debug/trace_flags.cc +2 -0
  115. data/src/core/lib/debug/trace_flags.h +1 -0
  116. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  117. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  118. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  119. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  120. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  121. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  122. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  123. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  124. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  126. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  127. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  128. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  129. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  136. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  137. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  139. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  140. data/src/core/lib/experiments/experiments.cc +48 -0
  141. data/src/core/lib/experiments/experiments.h +24 -0
  142. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  143. data/src/core/lib/iomgr/buffer_list.h +1 -1
  144. data/src/core/lib/iomgr/combiner.cc +0 -1
  145. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  146. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  147. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  148. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  149. data/src/core/lib/promise/activity.cc +1 -1
  150. data/src/core/lib/promise/activity.h +1 -1
  151. data/src/core/lib/promise/arena_promise.h +7 -7
  152. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  153. data/src/core/lib/promise/detail/promise_like.h +4 -4
  154. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  155. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  156. data/src/core/lib/promise/observable.h +3 -3
  157. data/src/core/lib/promise/party.cc +1 -1
  158. data/src/core/lib/promise/try_seq.h +2 -2
  159. data/src/core/lib/resource_quota/arena.h +3 -3
  160. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  161. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  162. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  163. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  164. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  165. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  168. data/src/core/lib/security/authorization/matchers.h +1 -1
  169. data/src/core/lib/surface/call.cc +8 -7
  170. data/src/core/lib/surface/call.h +3 -3
  171. data/src/core/lib/surface/call_utils.h +4 -0
  172. data/src/core/lib/surface/channel.cc +1 -1
  173. data/src/core/lib/surface/channel.h +1 -1
  174. data/src/core/lib/surface/channel_init.cc +1 -1
  175. data/src/core/lib/surface/init.cc +7 -7
  176. data/src/core/lib/surface/lame_client.cc +1 -1
  177. data/src/core/lib/surface/legacy_channel.cc +2 -2
  178. data/src/core/lib/surface/version.cc +1 -1
  179. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  180. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  181. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  182. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  183. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  184. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  185. data/src/core/load_balancing/health_check_client.cc +7 -7
  186. data/src/core/load_balancing/lb_policy.cc +1 -1
  187. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  188. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  189. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  190. data/src/core/load_balancing/rls/rls.cc +23 -17
  191. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  192. data/src/core/load_balancing/xds/cds.cc +6 -5
  193. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  194. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  195. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  196. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  197. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  198. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  199. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  200. data/src/core/server/server.cc +30 -30
  201. data/src/core/server/server.h +4 -3
  202. data/src/core/server/server_config_selector_filter.cc +3 -3
  203. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  204. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  205. data/src/core/telemetry/instrument.cc +30 -16
  206. data/src/core/telemetry/instrument.h +3 -3
  207. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  210. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  211. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  212. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  213. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  214. data/src/core/tsi/ssl_transport_security.cc +46 -13
  215. data/src/core/tsi/ssl_transport_security.h +7 -0
  216. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  217. data/src/core/util/event_log.cc +3 -3
  218. data/src/core/util/http_client/httpcli.cc +5 -5
  219. data/src/core/util/http_client/httpcli.h +1 -1
  220. data/src/core/util/json/json_object_loader.cc +7 -0
  221. data/src/core/util/json/json_object_loader.h +17 -2
  222. data/src/core/util/latent_see.cc +123 -36
  223. data/src/core/util/latent_see.h +14 -1
  224. data/src/core/util/mpscq.cc +1 -1
  225. data/src/core/util/notification.h +4 -4
  226. data/src/core/util/sync.h +20 -6
  227. data/src/core/util/table.h +20 -22
  228. data/src/core/util/work_serializer.cc +2 -2
  229. data/src/core/xds/grpc/blackboard.cc +4 -3
  230. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  231. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  233. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  234. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  235. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  236. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  237. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  238. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  239. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  240. data/src/core/xds/grpc/xds_matcher.h +2 -2
  241. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  242. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  243. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  244. data/src/core/xds/xds_client/xds_client.cc +19 -16
  245. data/src/core/xds/xds_client/xds_transport.h +49 -3
  246. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  248. data/src/ruby/lib/grpc/version.rb +1 -1
  249. data/src/ruby/pb/README.md +1 -1
  250. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  251. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  252. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  253. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  254. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  255. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  256. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  257. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  258. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  259. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  260. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  261. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  262. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  265. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  268. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  269. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  270. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  273. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  274. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  275. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  276. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  277. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  278. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  280. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  281. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  282. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  283. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  284. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  285. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  286. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  287. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  288. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  289. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  290. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  291. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  292. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  294. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  295. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  296. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  297. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  300. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  301. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  305. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  306. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  308. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  309. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  310. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  313. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  314. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  316. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  317. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  326. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  327. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  328. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  330. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  331. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  335. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  336. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  337. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  338. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  341. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  342. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  343. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  344. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  345. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  346. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  347. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  348. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  349. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  350. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  351. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  352. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  353. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  354. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  356. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  357. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  358. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  360. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  361. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  362. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  364. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  365. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  366. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  367. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  368. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  370. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  372. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  373. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  374. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  375. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  376. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  377. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  378. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  379. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  380. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  381. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  382. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  383. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  384. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  385. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  386. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  387. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  388. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  389. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  390. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  391. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  393. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  395. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  396. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  397. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  398. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  399. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  401. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  402. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  403. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  404. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  405. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  407. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  408. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  409. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  410. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  411. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  412. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  413. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  414. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  415. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  416. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  417. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  418. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  420. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  423. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  427. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  428. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  429. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  433. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  434. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  435. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  436. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  437. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  438. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  439. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  440. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  441. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  442. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  443. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  444. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  445. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  446. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  447. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  448. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  449. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  450. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  451. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  453. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  454. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  455. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  456. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  457. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  458. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  459. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  465. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  466. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  467. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  468. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  469. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  470. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  471. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  472. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  473. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  474. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  475. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  476. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  477. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  478. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  492. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  494. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  497. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  498. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  504. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  505. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  506. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  508. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  509. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  510. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  511. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  512. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  513. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  514. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  515. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  516. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  518. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  519. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  520. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  521. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  522. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  523. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  524. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  525. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  531. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  532. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  533. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  534. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  543. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  544. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  545. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  546. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  547. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  548. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  549. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  555. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  558. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  559. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  560. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  564. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  565. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  566. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  567. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  568. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  569. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  571. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  572. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  574. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  575. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  576. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  577. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  579. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  580. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  581. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  582. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  586. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  587. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  597. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  598. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  599. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  600. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  601. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  602. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  709. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  710. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  711. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  712. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  713. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  714. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  715. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  716. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  717. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  718. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  719. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  720. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  721. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  722. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  723. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  724. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  725. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  728. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  729. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  730. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  736. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  739. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  743. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  747. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  748. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  749. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  750. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  751. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  752. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  753. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  754. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  755. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  756. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  757. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  758. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  759. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  760. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  761. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  765. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  768. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  769. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  770. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  772. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  773. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  774. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  775. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  776. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  777. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  781. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  784. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  785. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  786. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  788. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  789. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  790. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  791. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  792. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  796. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  819. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  837. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  849. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  850. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  853. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  854. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  855. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  856. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  858. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  859. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  860. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  861. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  862. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  863. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  864. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  865. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  866. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  867. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  868. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  869. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  870. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  871. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  872. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  873. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  874. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  875. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  876. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  877. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  878. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  879. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  880. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  881. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  883. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  884. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  885. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  886. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  887. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  888. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  889. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  890. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  891. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  892. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  893. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  894. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  895. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  897. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  898. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  899. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  900. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  901. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  902. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  904. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  906. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  907. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  908. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  909. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  913. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  914. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  915. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  916. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  917. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  918. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  919. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  920. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  921. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  923. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  924. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  925. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  926. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  927. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  928. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  929. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  930. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  931. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  932. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  933. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  934. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  935. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  936. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  937. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  938. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  939. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  940. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  941. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  942. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  943. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  944. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  945. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  946. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  947. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  948. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  949. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  950. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  951. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  952. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  953. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  955. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  956. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  957. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  958. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  959. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  960. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  961. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  962. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  963. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  964. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  965. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  966. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  967. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  968. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  969. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  970. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  971. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  974. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  979. metadata +77 -52
  980. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  982. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  984. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  985. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  986. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  987. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  989. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  990. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  996. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1000. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1001. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1002. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1003. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1004. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
@@ -22,6 +22,7 @@
22
22
  #include <openssl/err.h>
23
23
  #include <openssl/mem.h>
24
24
  #include <openssl/nid.h>
25
+ #include <openssl/span.h>
25
26
 
26
27
  #include "../../internal.h"
27
28
  #include "../aes/internal.h"
@@ -31,6 +32,8 @@
31
32
  #include "internal.h"
32
33
 
33
34
 
35
+ using namespace bssl;
36
+
34
37
  #define AES_GCM_NONCE_LENGTH 12
35
38
 
36
39
  typedef struct {
@@ -79,23 +82,25 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
79
82
  if (hwaes_capable()) {
80
83
  ret = aes_hw_set_decrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
81
84
  dat->block = aes_hw_decrypt;
82
- dat->stream.cbc = NULL;
85
+ dat->stream.cbc = nullptr;
83
86
  if (mode == EVP_CIPH_CBC_MODE) {
84
87
  dat->stream.cbc = aes_hw_cbc_encrypt;
85
88
  }
89
+ #if defined(BSAES)
86
90
  } else if (bsaes_capable() && mode == EVP_CIPH_CBC_MODE) {
87
91
  assert(vpaes_capable());
88
92
  ret = vpaes_set_decrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
89
93
  if (ret == 0) {
90
94
  vpaes_decrypt_key_to_bsaes(&dat->ks.ks, &dat->ks.ks);
91
95
  }
92
- // If |dat->stream.cbc| is provided, |dat->block| is never used.
93
- dat->block = NULL;
96
+ // If `dat->stream.cbc` is provided, `dat->block` is never used.
97
+ dat->block = nullptr;
94
98
  dat->stream.cbc = bsaes_cbc_encrypt;
99
+ #endif
95
100
  } else if (vpaes_capable()) {
96
101
  ret = vpaes_set_decrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
97
102
  dat->block = vpaes_decrypt;
98
- dat->stream.cbc = NULL;
103
+ dat->stream.cbc = nullptr;
99
104
  #if defined(VPAES_CBC)
100
105
  if (mode == EVP_CIPH_CBC_MODE) {
101
106
  dat->stream.cbc = vpaes_cbc_encrypt;
@@ -104,7 +109,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
104
109
  } else {
105
110
  ret = aes_nohw_set_decrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
106
111
  dat->block = aes_nohw_decrypt;
107
- dat->stream.cbc = NULL;
112
+ dat->stream.cbc = nullptr;
108
113
  if (mode == EVP_CIPH_CBC_MODE) {
109
114
  dat->stream.cbc = aes_nohw_cbc_encrypt;
110
115
  }
@@ -112,7 +117,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
112
117
  } else if (hwaes_capable()) {
113
118
  ret = aes_hw_set_encrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
114
119
  dat->block = aes_hw_encrypt;
115
- dat->stream.cbc = NULL;
120
+ dat->stream.cbc = nullptr;
116
121
  if (mode == EVP_CIPH_CBC_MODE) {
117
122
  dat->stream.cbc = aes_hw_cbc_encrypt;
118
123
  } else if (mode == EVP_CIPH_CTR_MODE) {
@@ -121,7 +126,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
121
126
  } else if (vpaes_capable()) {
122
127
  ret = vpaes_set_encrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
123
128
  dat->block = vpaes_encrypt;
124
- dat->stream.cbc = NULL;
129
+ dat->stream.cbc = nullptr;
125
130
  #if defined(VPAES_CBC)
126
131
  if (mode == EVP_CIPH_CBC_MODE) {
127
132
  dat->stream.cbc = vpaes_cbc_encrypt;
@@ -138,7 +143,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
138
143
  } else {
139
144
  ret = aes_nohw_set_encrypt_key(key, ctx->key_len * 8, &dat->ks.ks);
140
145
  dat->block = aes_nohw_encrypt;
141
- dat->stream.cbc = NULL;
146
+ dat->stream.cbc = nullptr;
142
147
  if (mode == EVP_CIPH_CBC_MODE) {
143
148
  dat->stream.cbc = aes_nohw_cbc_encrypt;
144
149
  } else if (mode == EVP_CIPH_CTR_MODE) {
@@ -154,8 +159,8 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
154
159
  return 1;
155
160
  }
156
161
 
157
- static int aes_cbc_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
158
- size_t len) {
162
+ static int aes_cbc_cipher_update(EVP_CIPHER_CTX *ctx, uint8_t *out,
163
+ const uint8_t *in, size_t len) {
159
164
  EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data;
160
165
 
161
166
  if (dat->stream.cbc) {
@@ -169,8 +174,8 @@ static int aes_cbc_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
169
174
  return 1;
170
175
  }
171
176
 
172
- static int aes_ecb_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
173
- size_t len) {
177
+ static int aes_ecb_cipher_update(EVP_CIPHER_CTX *ctx, uint8_t *out,
178
+ const uint8_t *in, size_t len) {
174
179
  size_t bl = ctx->cipher->block_size;
175
180
  EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data;
176
181
 
@@ -186,16 +191,16 @@ static int aes_ecb_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
186
191
  return 1;
187
192
  }
188
193
 
189
- static int aes_ctr_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
190
- size_t len) {
194
+ static int aes_ctr_cipher_update(EVP_CIPHER_CTX *ctx, uint8_t *out,
195
+ const uint8_t *in, size_t len) {
191
196
  EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data;
192
197
  CRYPTO_ctr128_encrypt_ctr32(in, out, len, &dat->ks.ks, ctx->iv, ctx->buf,
193
198
  &ctx->num, dat->stream.ctr);
194
199
  return 1;
195
200
  }
196
201
 
197
- static int aes_ofb_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
198
- size_t len) {
202
+ static int aes_ofb_cipher_update(EVP_CIPHER_CTX *ctx, uint8_t *out,
203
+ const uint8_t *in, size_t len) {
199
204
  EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data;
200
205
 
201
206
  CRYPTO_ofb128_encrypt(in, out, len, &dat->ks.ks, ctx->iv, &ctx->num,
@@ -216,7 +221,7 @@ static int aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
216
221
  OPENSSL_memset(&gctx->gcm, 0, sizeof(gctx->gcm));
217
222
  CRYPTO_gcm128_init_aes_key(&gctx->key, key, ctx->key_len);
218
223
  // Use the IV if specified. Otherwise, use the saved IV, if any.
219
- if (iv == NULL && gctx->iv_set) {
224
+ if (iv == nullptr && gctx->iv_set) {
220
225
  iv = gctx->iv;
221
226
  }
222
227
  if (iv) {
@@ -262,16 +267,32 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) {
262
267
  if (arg <= 0) {
263
268
  return 0;
264
269
  }
270
+ if (arg == gctx->ivlen) {
271
+ // Some applications set the IV and then do a no-op length change,
272
+ // expecting the IV to remain set.
273
+ return 1;
274
+ }
275
+
276
+ // Clear any existing IV or partial IV that may have previously been set.
277
+ gctx->iv_set = 0;
278
+ gctx->iv_gen = 0;
265
279
 
266
- // Allocate memory for IV if needed
267
- if (arg > EVP_MAX_IV_LENGTH && arg > gctx->ivlen) {
280
+ if (arg <= EVP_MAX_IV_LENGTH) {
281
+ // IVs less than EVP_MAX_IV_LENGTH are stored in the built-in buffer.
268
282
  if (gctx->iv != c->iv) {
269
283
  OPENSSL_free(gctx->iv);
284
+ gctx->iv = c->iv;
270
285
  }
271
- gctx->iv = reinterpret_cast<uint8_t *>(OPENSSL_malloc(arg));
272
- if (!gctx->iv) {
286
+ } else if (arg > gctx->ivlen) {
287
+ // The existing buffer isn't large enough.
288
+ uint8_t *new_iv = static_cast<uint8_t *>(OPENSSL_malloc(arg));
289
+ if (new_iv == nullptr) {
273
290
  return 0;
274
291
  }
292
+ if (gctx->iv != c->iv) {
293
+ OPENSSL_free(gctx->iv);
294
+ }
295
+ gctx->iv = new_iv;
275
296
  }
276
297
  gctx->ivlen = arg;
277
298
  return 1;
@@ -302,14 +323,14 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) {
302
323
  gctx->iv_gen = 1;
303
324
  return 1;
304
325
  }
305
- // Fixed field must be at least 4 bytes and invocation field
306
- // at least 8.
326
+ // The fixed field must be at least 4 bytes and the invocation field at
327
+ // least 8.
307
328
  if (arg < 4 || (gctx->ivlen - arg) < 8) {
308
329
  return 0;
309
330
  }
310
331
  OPENSSL_memcpy(gctx->iv, ptr, arg);
311
332
  if (c->encrypt) {
312
- // |BCM_rand_bytes| calls within the fipsmodule should be wrapped with
333
+ // `BCM_rand_bytes` calls within the fipsmodule should be wrapped with
313
334
  // state lock functions to avoid updating the service indicator with the
314
335
  // DRBG functions.
315
336
  FIPS_service_indicator_lock_state();
@@ -320,7 +341,7 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) {
320
341
  return 1;
321
342
 
322
343
  case EVP_CTRL_GCM_IV_GEN: {
323
- if (gctx->iv_gen == 0 || gctx->key_set == 0) {
344
+ if (gctx->iv_gen == 0 || gctx->key_set == 0 || gctx->ivlen < 8) {
324
345
  return 0;
325
346
  }
326
347
  CRYPTO_gcm128_init_ctx(&gctx->key, &gctx->gcm, gctx->iv, gctx->ivlen);
@@ -328,8 +349,6 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) {
328
349
  arg = gctx->ivlen;
329
350
  }
330
351
  OPENSSL_memcpy(ptr, gctx->iv + gctx->ivlen - arg, arg);
331
- // Invocation field will be at least 8 bytes in size, so no need to check
332
- // wrap around or increment more than last 8 bytes.
333
352
  uint8_t *ctr = gctx->iv + gctx->ivlen - 8;
334
353
  CRYPTO_store_u64_be(ctr, CRYPTO_load_u64_be(ctr) + 1);
335
354
  gctx->iv_set = 1;
@@ -337,7 +356,8 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) {
337
356
  }
338
357
 
339
358
  case EVP_CTRL_GCM_SET_IV_INV:
340
- if (gctx->iv_gen == 0 || gctx->key_set == 0 || c->encrypt) {
359
+ if (gctx->iv_gen == 0 || gctx->key_set == 0 || c->encrypt || arg < 0 ||
360
+ arg > gctx->ivlen) {
341
361
  return 0;
342
362
  }
343
363
  OPENSSL_memcpy(gctx->iv + gctx->ivlen - arg, ptr, arg);
@@ -366,56 +386,55 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) {
366
386
  }
367
387
  }
368
388
 
369
- static int aes_gcm_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
370
- size_t len) {
389
+ static int aes_gcm_cipher_update(EVP_CIPHER_CTX *ctx, uint8_t *out,
390
+ const uint8_t *in, size_t len) {
371
391
  EVP_AES_GCM_CTX *gctx = reinterpret_cast<EVP_AES_GCM_CTX *>(ctx->cipher_data);
372
392
 
373
393
  // If not set up, return error
374
- if (!gctx->key_set) {
375
- return -1;
394
+ if (!gctx->key_set || !gctx->iv_set) {
395
+ return 0;
376
396
  }
377
- if (!gctx->iv_set) {
378
- return -1;
397
+
398
+ if (ctx->encrypt) {
399
+ return CRYPTO_gcm128_encrypt(&gctx->key, &gctx->gcm, in, out, len);
400
+ } else {
401
+ return CRYPTO_gcm128_decrypt(&gctx->key, &gctx->gcm, in, out, len);
379
402
  }
403
+ }
404
+
405
+ static int aes_gcm_cipher_final(EVP_CIPHER_CTX *ctx) {
406
+ EVP_AES_GCM_CTX *gctx = reinterpret_cast<EVP_AES_GCM_CTX *>(ctx->cipher_data);
380
407
 
381
- if (len > INT_MAX) {
382
- // This function signature can only express up to |INT_MAX| bytes encrypted.
383
- //
384
- // TODO(https://crbug.com/boringssl/494): Make the internal |EVP_CIPHER|
385
- // calling convention |size_t|-clean.
386
- return -1;
408
+ // If not set up, return error
409
+ if (!gctx->key_set || !gctx->iv_set) {
410
+ return 0;
387
411
  }
388
412
 
389
- if (in) {
390
- if (out == NULL) {
391
- if (!CRYPTO_gcm128_aad(&gctx->key, &gctx->gcm, in, len)) {
392
- return -1;
393
- }
394
- } else if (ctx->encrypt) {
395
- if (!CRYPTO_gcm128_encrypt(&gctx->key, &gctx->gcm, in, out, len)) {
396
- return -1;
397
- }
398
- } else {
399
- if (!CRYPTO_gcm128_decrypt(&gctx->key, &gctx->gcm, in, out, len)) {
400
- return -1;
401
- }
402
- }
403
- return (int)len;
404
- } else {
405
- if (!ctx->encrypt) {
406
- if (gctx->taglen < 0 || !CRYPTO_gcm128_finish(&gctx->key, &gctx->gcm,
407
- ctx->buf, gctx->taglen)) {
408
- return -1;
409
- }
410
- gctx->iv_set = 0;
413
+ if (!ctx->encrypt) {
414
+ if (gctx->taglen < 0 ||
415
+ !CRYPTO_gcm128_finish(&gctx->key, &gctx->gcm, ctx->buf, gctx->taglen)) {
411
416
  return 0;
412
417
  }
413
- CRYPTO_gcm128_tag(&gctx->key, &gctx->gcm, ctx->buf, 16);
414
- gctx->taglen = 16;
415
- // Don't reuse the IV
416
418
  gctx->iv_set = 0;
419
+ return 1;
420
+ }
421
+ CRYPTO_gcm128_tag(&gctx->key, &gctx->gcm, ctx->buf, 16);
422
+ gctx->taglen = 16;
423
+ // Don't reuse the IV
424
+ gctx->iv_set = 0;
425
+ return 1;
426
+ }
427
+
428
+ static int aes_gcm_update_aad(EVP_CIPHER_CTX *ctx, const uint8_t *in,
429
+ size_t len) {
430
+ EVP_AES_GCM_CTX *gctx = reinterpret_cast<EVP_AES_GCM_CTX *>(ctx->cipher_data);
431
+
432
+ // If not set up, return error
433
+ if (!gctx->key_set || !gctx->iv_set) {
417
434
  return 0;
418
435
  }
436
+
437
+ return CRYPTO_gcm128_aad(&gctx->key, &gctx->gcm, in, len);
419
438
  }
420
439
 
421
440
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_cbc) {
@@ -428,7 +447,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_cbc) {
428
447
  out->ctx_size = sizeof(EVP_AES_KEY);
429
448
  out->flags = EVP_CIPH_CBC_MODE;
430
449
  out->init = aes_init_key;
431
- out->cipher = aes_cbc_cipher;
450
+ out->cipher_update = aes_cbc_cipher_update;
432
451
  }
433
452
 
434
453
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_ctr) {
@@ -441,7 +460,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_ctr) {
441
460
  out->ctx_size = sizeof(EVP_AES_KEY);
442
461
  out->flags = EVP_CIPH_CTR_MODE;
443
462
  out->init = aes_init_key;
444
- out->cipher = aes_ctr_cipher;
463
+ out->cipher_update = aes_ctr_cipher_update;
445
464
  }
446
465
 
447
466
  DEFINE_LOCAL_DATA(EVP_CIPHER, aes_128_ecb_generic) {
@@ -453,7 +472,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_128_ecb_generic) {
453
472
  out->ctx_size = sizeof(EVP_AES_KEY);
454
473
  out->flags = EVP_CIPH_ECB_MODE;
455
474
  out->init = aes_init_key;
456
- out->cipher = aes_ecb_cipher;
475
+ out->cipher_update = aes_ecb_cipher_update;
457
476
  }
458
477
 
459
478
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_ofb) {
@@ -466,7 +485,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_ofb) {
466
485
  out->ctx_size = sizeof(EVP_AES_KEY);
467
486
  out->flags = EVP_CIPH_OFB_MODE;
468
487
  out->init = aes_init_key;
469
- out->cipher = aes_ofb_cipher;
488
+ out->cipher_update = aes_ofb_cipher_update;
470
489
  }
471
490
 
472
491
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_gcm) {
@@ -481,7 +500,9 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_128_gcm) {
481
500
  EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT |
482
501
  EVP_CIPH_CTRL_INIT | EVP_CIPH_FLAG_AEAD_CIPHER;
483
502
  out->init = aes_gcm_init_key;
484
- out->cipher = aes_gcm_cipher;
503
+ out->cipher_update = aes_gcm_cipher_update;
504
+ out->cipher_final = aes_gcm_cipher_final;
505
+ out->update_aad = aes_gcm_update_aad;
485
506
  out->cleanup = aes_gcm_cleanup;
486
507
  out->ctrl = aes_gcm_ctrl;
487
508
  }
@@ -496,7 +517,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_cbc) {
496
517
  out->ctx_size = sizeof(EVP_AES_KEY);
497
518
  out->flags = EVP_CIPH_CBC_MODE;
498
519
  out->init = aes_init_key;
499
- out->cipher = aes_cbc_cipher;
520
+ out->cipher_update = aes_cbc_cipher_update;
500
521
  }
501
522
 
502
523
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_ctr) {
@@ -509,7 +530,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_ctr) {
509
530
  out->ctx_size = sizeof(EVP_AES_KEY);
510
531
  out->flags = EVP_CIPH_CTR_MODE;
511
532
  out->init = aes_init_key;
512
- out->cipher = aes_ctr_cipher;
533
+ out->cipher_update = aes_ctr_cipher_update;
513
534
  }
514
535
 
515
536
  DEFINE_LOCAL_DATA(EVP_CIPHER, aes_192_ecb_generic) {
@@ -521,7 +542,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_192_ecb_generic) {
521
542
  out->ctx_size = sizeof(EVP_AES_KEY);
522
543
  out->flags = EVP_CIPH_ECB_MODE;
523
544
  out->init = aes_init_key;
524
- out->cipher = aes_ecb_cipher;
545
+ out->cipher_update = aes_ecb_cipher_update;
525
546
  }
526
547
 
527
548
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_ofb) {
@@ -534,7 +555,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_ofb) {
534
555
  out->ctx_size = sizeof(EVP_AES_KEY);
535
556
  out->flags = EVP_CIPH_OFB_MODE;
536
557
  out->init = aes_init_key;
537
- out->cipher = aes_ofb_cipher;
558
+ out->cipher_update = aes_ofb_cipher_update;
538
559
  }
539
560
 
540
561
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_gcm) {
@@ -549,7 +570,9 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_192_gcm) {
549
570
  EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT |
550
571
  EVP_CIPH_CTRL_INIT | EVP_CIPH_FLAG_AEAD_CIPHER;
551
572
  out->init = aes_gcm_init_key;
552
- out->cipher = aes_gcm_cipher;
573
+ out->cipher_update = aes_gcm_cipher_update;
574
+ out->cipher_final = aes_gcm_cipher_final;
575
+ out->update_aad = aes_gcm_update_aad;
553
576
  out->cleanup = aes_gcm_cleanup;
554
577
  out->ctrl = aes_gcm_ctrl;
555
578
  }
@@ -564,7 +587,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_cbc) {
564
587
  out->ctx_size = sizeof(EVP_AES_KEY);
565
588
  out->flags = EVP_CIPH_CBC_MODE;
566
589
  out->init = aes_init_key;
567
- out->cipher = aes_cbc_cipher;
590
+ out->cipher_update = aes_cbc_cipher_update;
568
591
  }
569
592
 
570
593
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_ctr) {
@@ -577,7 +600,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_ctr) {
577
600
  out->ctx_size = sizeof(EVP_AES_KEY);
578
601
  out->flags = EVP_CIPH_CTR_MODE;
579
602
  out->init = aes_init_key;
580
- out->cipher = aes_ctr_cipher;
603
+ out->cipher_update = aes_ctr_cipher_update;
581
604
  }
582
605
 
583
606
  DEFINE_LOCAL_DATA(EVP_CIPHER, aes_256_ecb_generic) {
@@ -589,7 +612,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_256_ecb_generic) {
589
612
  out->ctx_size = sizeof(EVP_AES_KEY);
590
613
  out->flags = EVP_CIPH_ECB_MODE;
591
614
  out->init = aes_init_key;
592
- out->cipher = aes_ecb_cipher;
615
+ out->cipher_update = aes_ecb_cipher_update;
593
616
  }
594
617
 
595
618
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_ofb) {
@@ -602,7 +625,7 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_ofb) {
602
625
  out->ctx_size = sizeof(EVP_AES_KEY);
603
626
  out->flags = EVP_CIPH_OFB_MODE;
604
627
  out->init = aes_init_key;
605
- out->cipher = aes_ofb_cipher;
628
+ out->cipher_update = aes_ofb_cipher_update;
606
629
  }
607
630
 
608
631
  DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_gcm) {
@@ -617,15 +640,17 @@ DEFINE_METHOD_FUNCTION(EVP_CIPHER, EVP_aes_256_gcm) {
617
640
  EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT |
618
641
  EVP_CIPH_CTRL_INIT | EVP_CIPH_FLAG_AEAD_CIPHER;
619
642
  out->init = aes_gcm_init_key;
620
- out->cipher = aes_gcm_cipher;
643
+ out->cipher_update = aes_gcm_cipher_update;
644
+ out->cipher_final = aes_gcm_cipher_final;
645
+ out->update_aad = aes_gcm_update_aad;
621
646
  out->cleanup = aes_gcm_cleanup;
622
647
  out->ctrl = aes_gcm_ctrl;
623
648
  }
624
649
 
625
650
  #if defined(HWAES_ECB)
626
651
 
627
- static int aes_hw_ecb_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out,
628
- const uint8_t *in, size_t len) {
652
+ static int aes_hw_ecb_cipher_update(EVP_CIPHER_CTX *ctx, uint8_t *out,
653
+ const uint8_t *in, size_t len) {
629
654
  size_t bl = ctx->cipher->block_size;
630
655
 
631
656
  if (len < bl) {
@@ -648,7 +673,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_hw_128_ecb) {
648
673
  out->ctx_size = sizeof(EVP_AES_KEY);
649
674
  out->flags = EVP_CIPH_ECB_MODE;
650
675
  out->init = aes_init_key;
651
- out->cipher = aes_hw_ecb_cipher;
676
+ out->cipher_update = aes_hw_ecb_cipher_update;
652
677
  }
653
678
 
654
679
  DEFINE_LOCAL_DATA(EVP_CIPHER, aes_hw_192_ecb) {
@@ -660,7 +685,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_hw_192_ecb) {
660
685
  out->ctx_size = sizeof(EVP_AES_KEY);
661
686
  out->flags = EVP_CIPH_ECB_MODE;
662
687
  out->init = aes_init_key;
663
- out->cipher = aes_hw_ecb_cipher;
688
+ out->cipher_update = aes_hw_ecb_cipher_update;
664
689
  }
665
690
 
666
691
  DEFINE_LOCAL_DATA(EVP_CIPHER, aes_hw_256_ecb) {
@@ -672,22 +697,22 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_hw_256_ecb) {
672
697
  out->ctx_size = sizeof(EVP_AES_KEY);
673
698
  out->flags = EVP_CIPH_ECB_MODE;
674
699
  out->init = aes_init_key;
675
- out->cipher = aes_hw_ecb_cipher;
700
+ out->cipher_update = aes_hw_ecb_cipher_update;
676
701
  }
677
702
 
678
- #define EVP_ECB_CIPHER_FUNCTION(keybits) \
679
- const EVP_CIPHER *EVP_aes_##keybits##_ecb(void) { \
680
- if (hwaes_capable()) { \
681
- return aes_hw_##keybits##_ecb(); \
682
- } \
683
- return aes_##keybits##_ecb_generic(); \
703
+ #define EVP_ECB_CIPHER_FUNCTION(keybits) \
704
+ const EVP_CIPHER *EVP_aes_##keybits##_ecb() { \
705
+ if (hwaes_capable()) { \
706
+ return aes_hw_##keybits##_ecb(); \
707
+ } \
708
+ return aes_##keybits##_ecb_generic(); \
684
709
  }
685
710
 
686
711
  #else
687
712
 
688
- #define EVP_ECB_CIPHER_FUNCTION(keybits) \
689
- const EVP_CIPHER *EVP_aes_##keybits##_ecb(void) { \
690
- return aes_##keybits##_ecb_generic(); \
713
+ #define EVP_ECB_CIPHER_FUNCTION(keybits) \
714
+ const EVP_CIPHER *EVP_aes_##keybits##_ecb() { \
715
+ return aes_##keybits##_ecb_generic(); \
691
716
  }
692
717
 
693
718
  #endif // HWAES_ECB
@@ -728,7 +753,7 @@ static int aead_aes_gcm_init_impl(struct aead_aes_gcm_ctx *gcm_ctx,
728
753
  return 1;
729
754
  }
730
755
 
731
- static_assert(sizeof(((EVP_AEAD_CTX *)NULL)->state) >=
756
+ static_assert(sizeof(((EVP_AEAD_CTX *)nullptr)->state) >=
732
757
  sizeof(struct aead_aes_gcm_ctx),
733
758
  "AEAD state is too small");
734
759
  static_assert(alignof(union evp_aead_ctx_st_state) >=
@@ -751,91 +776,89 @@ static int aead_aes_gcm_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
751
776
 
752
777
  static void aead_aes_gcm_cleanup(EVP_AEAD_CTX *ctx) {}
753
778
 
754
- static int aead_aes_gcm_seal_scatter_impl(
755
- const struct aead_aes_gcm_ctx *gcm_ctx, uint8_t *out, uint8_t *out_tag,
756
- size_t *out_tag_len, size_t max_out_tag_len, const uint8_t *nonce,
757
- size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *extra_in,
758
- size_t extra_in_len, const uint8_t *ad, size_t ad_len, size_t tag_len) {
759
- if (extra_in_len + tag_len < tag_len) {
760
- OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
761
- return 0;
762
- }
763
- if (max_out_tag_len < extra_in_len + tag_len) {
779
+ static int aead_aes_gcm_sealv_impl(const struct aead_aes_gcm_ctx *gcm_ctx,
780
+ Span<const CRYPTO_IOVEC> iovecs,
781
+ Span<uint8_t> out_tag, size_t *out_tag_len,
782
+ Span<const uint8_t> nonce,
783
+ Span<const CRYPTO_IVEC> aadvecs,
784
+ size_t tag_len) {
785
+ if (out_tag.size() < tag_len) {
764
786
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
765
787
  return 0;
766
788
  }
767
- if (nonce_len == 0) {
789
+
790
+ if (nonce.size() == 0) {
768
791
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_NONCE_SIZE);
769
792
  return 0;
770
793
  }
771
794
 
772
795
  const GCM128_KEY *key = &gcm_ctx->key;
773
796
  GCM128_CONTEXT gcm;
774
- CRYPTO_gcm128_init_ctx(key, &gcm, nonce, nonce_len);
775
-
776
- if (ad_len > 0 && !CRYPTO_gcm128_aad(key, &gcm, ad, ad_len)) {
777
- return 0;
778
- }
797
+ CRYPTO_gcm128_init_ctx(key, &gcm, nonce.data(), nonce.size());
779
798
 
780
- if (!CRYPTO_gcm128_encrypt(key, &gcm, in, out, in_len)) {
781
- return 0;
799
+ for (const CRYPTO_IVEC &aadvec : aadvecs) {
800
+ if (!CRYPTO_gcm128_aad(key, &gcm, aadvec.in, aadvec.len)) {
801
+ return 0;
802
+ }
782
803
  }
783
804
 
784
- if (extra_in_len > 0 &&
785
- !CRYPTO_gcm128_encrypt(key, &gcm, extra_in, out_tag, extra_in_len)) {
786
- return 0;
805
+ for (const CRYPTO_IOVEC &iovec : iovecs) {
806
+ if (!CRYPTO_gcm128_encrypt(key, &gcm, iovec.in, iovec.out, iovec.len)) {
807
+ return 0;
808
+ }
787
809
  }
788
810
 
789
- CRYPTO_gcm128_tag(key, &gcm, out_tag + extra_in_len, tag_len);
790
- *out_tag_len = tag_len + extra_in_len;
811
+ CRYPTO_gcm128_tag(key, &gcm, out_tag.data(), tag_len);
812
+ *out_tag_len = tag_len;
791
813
 
792
814
  return 1;
793
815
  }
794
816
 
795
- static int aead_aes_gcm_seal_scatter(
796
- const EVP_AEAD_CTX *ctx, uint8_t *out, uint8_t *out_tag,
797
- size_t *out_tag_len, size_t max_out_tag_len, const uint8_t *nonce,
798
- size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *extra_in,
799
- size_t extra_in_len, const uint8_t *ad, size_t ad_len) {
817
+ static int aead_aes_gcm_sealv(const EVP_AEAD_CTX *ctx,
818
+ Span<const CRYPTO_IOVEC> iovecs,
819
+ Span<uint8_t> out_tag, size_t *out_tag_len,
820
+ Span<const uint8_t> nonce,
821
+ Span<const CRYPTO_IVEC> aadvecs) {
800
822
  const struct aead_aes_gcm_ctx *gcm_ctx =
801
823
  (const struct aead_aes_gcm_ctx *)&ctx->state;
802
- return aead_aes_gcm_seal_scatter_impl(
803
- gcm_ctx, out, out_tag, out_tag_len, max_out_tag_len, nonce, nonce_len, in,
804
- in_len, extra_in, extra_in_len, ad, ad_len, ctx->tag_len);
824
+ return aead_aes_gcm_sealv_impl(gcm_ctx, iovecs, out_tag, out_tag_len, nonce,
825
+ aadvecs, ctx->tag_len);
805
826
  }
806
827
 
807
- static int aead_aes_gcm_open_gather_impl(const struct aead_aes_gcm_ctx *gcm_ctx,
808
- uint8_t *out, const uint8_t *nonce,
809
- size_t nonce_len, const uint8_t *in,
810
- size_t in_len, const uint8_t *in_tag,
811
- size_t in_tag_len, const uint8_t *ad,
812
- size_t ad_len, size_t tag_len) {
828
+ static int aead_aes_gcm_openv_detached_impl(
829
+ const struct aead_aes_gcm_ctx *gcm_ctx, Span<const CRYPTO_IOVEC> iovecs,
830
+ Span<const uint8_t> nonce, Span<const uint8_t> in_tag,
831
+ Span<const CRYPTO_IVEC> aadvecs, size_t tag_len) {
813
832
  uint8_t tag[EVP_AEAD_AES_GCM_TAG_LEN];
814
833
 
815
- if (nonce_len == 0) {
834
+ if (nonce.size() == 0) {
816
835
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_NONCE_SIZE);
817
836
  return 0;
818
837
  }
819
838
 
820
- if (in_tag_len != tag_len) {
839
+ if (in_tag.size() != tag_len) {
821
840
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
822
841
  return 0;
823
842
  }
824
843
 
825
844
  const GCM128_KEY *key = &gcm_ctx->key;
826
845
  GCM128_CONTEXT gcm;
827
- CRYPTO_gcm128_init_ctx(key, &gcm, nonce, nonce_len);
846
+ CRYPTO_gcm128_init_ctx(key, &gcm, nonce.data(), nonce.size());
828
847
 
829
- if (!CRYPTO_gcm128_aad(key, &gcm, ad, ad_len)) {
830
- return 0;
848
+ for (const CRYPTO_IVEC &aadvec : aadvecs) {
849
+ if (!CRYPTO_gcm128_aad(key, &gcm, aadvec.in, aadvec.len)) {
850
+ return 0;
851
+ }
831
852
  }
832
853
 
833
- if (!CRYPTO_gcm128_decrypt(key, &gcm, in, out, in_len)) {
834
- return 0;
854
+ for (const CRYPTO_IOVEC &iovec : iovecs) {
855
+ if (!CRYPTO_gcm128_decrypt(key, &gcm, iovec.in, iovec.out, iovec.len)) {
856
+ return 0;
857
+ }
835
858
  }
836
859
 
837
860
  CRYPTO_gcm128_tag(key, &gcm, tag, tag_len);
838
- if (CRYPTO_memcmp(tag, in_tag, tag_len) != 0) {
861
+ if (CRYPTO_memcmp(tag, in_tag.data(), tag_len) != 0) {
839
862
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
840
863
  return 0;
841
864
  }
@@ -843,15 +866,14 @@ static int aead_aes_gcm_open_gather_impl(const struct aead_aes_gcm_ctx *gcm_ctx,
843
866
  return 1;
844
867
  }
845
868
 
846
- static int aead_aes_gcm_open_gather(const EVP_AEAD_CTX *ctx, uint8_t *out,
847
- const uint8_t *nonce, size_t nonce_len,
848
- const uint8_t *in, size_t in_len,
849
- const uint8_t *in_tag, size_t in_tag_len,
850
- const uint8_t *ad, size_t ad_len) {
869
+ static int aead_aes_gcm_openv_detached(const EVP_AEAD_CTX *ctx,
870
+ Span<const CRYPTO_IOVEC> iovecs,
871
+ Span<const uint8_t> nonce,
872
+ Span<const uint8_t> in_tag,
873
+ Span<const CRYPTO_IVEC> aadvecs) {
851
874
  struct aead_aes_gcm_ctx *gcm_ctx = (struct aead_aes_gcm_ctx *)&ctx->state;
852
- if (!aead_aes_gcm_open_gather_impl(gcm_ctx, out, nonce, nonce_len, in, in_len,
853
- in_tag, in_tag_len, ad, ad_len,
854
- ctx->tag_len)) {
875
+ if (!aead_aes_gcm_openv_detached_impl(gcm_ctx, iovecs, nonce, in_tag, aadvecs,
876
+ ctx->tag_len)) {
855
877
  return 0;
856
878
  }
857
879
 
@@ -866,12 +888,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm) {
866
888
  out->nonce_len = AES_GCM_NONCE_LENGTH;
867
889
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
868
890
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
869
- out->seal_scatter_supports_extra_in = 1;
870
891
 
871
892
  out->init = aead_aes_gcm_init;
872
893
  out->cleanup = aead_aes_gcm_cleanup;
873
- out->seal_scatter = aead_aes_gcm_seal_scatter;
874
- out->open_gather = aead_aes_gcm_open_gather;
894
+ out->sealv = aead_aes_gcm_sealv;
895
+ out->openv_detached = aead_aes_gcm_openv_detached;
875
896
  }
876
897
 
877
898
  DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_192_gcm) {
@@ -881,12 +902,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_192_gcm) {
881
902
  out->nonce_len = AES_GCM_NONCE_LENGTH;
882
903
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
883
904
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
884
- out->seal_scatter_supports_extra_in = 1;
885
905
 
886
906
  out->init = aead_aes_gcm_init;
887
907
  out->cleanup = aead_aes_gcm_cleanup;
888
- out->seal_scatter = aead_aes_gcm_seal_scatter;
889
- out->open_gather = aead_aes_gcm_open_gather;
908
+ out->sealv = aead_aes_gcm_sealv;
909
+ out->openv_detached = aead_aes_gcm_openv_detached;
890
910
  }
891
911
 
892
912
  DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm) {
@@ -896,12 +916,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm) {
896
916
  out->nonce_len = AES_GCM_NONCE_LENGTH;
897
917
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
898
918
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
899
- out->seal_scatter_supports_extra_in = 1;
900
919
 
901
920
  out->init = aead_aes_gcm_init;
902
921
  out->cleanup = aead_aes_gcm_cleanup;
903
- out->seal_scatter = aead_aes_gcm_seal_scatter;
904
- out->open_gather = aead_aes_gcm_open_gather;
922
+ out->sealv = aead_aes_gcm_sealv;
923
+ out->openv_detached = aead_aes_gcm_openv_detached;
905
924
  }
906
925
 
907
926
  static int aead_aes_gcm_init_randnonce(EVP_AEAD_CTX *ctx, const uint8_t *key,
@@ -923,24 +942,24 @@ static int aead_aes_gcm_init_randnonce(EVP_AEAD_CTX *ctx, const uint8_t *key,
923
942
  return 1;
924
943
  }
925
944
 
926
- static int aead_aes_gcm_seal_scatter_randnonce(
927
- const EVP_AEAD_CTX *ctx, uint8_t *out, uint8_t *out_tag,
928
- size_t *out_tag_len, size_t max_out_tag_len, const uint8_t *external_nonce,
929
- size_t external_nonce_len, const uint8_t *in, size_t in_len,
930
- const uint8_t *extra_in, size_t extra_in_len, const uint8_t *ad,
931
- size_t ad_len) {
932
- if (external_nonce_len != 0) {
945
+ static int aead_aes_gcm_sealv_randnonce(const EVP_AEAD_CTX *ctx,
946
+ Span<const CRYPTO_IOVEC> iovecs,
947
+ Span<uint8_t> out_tag,
948
+ size_t *out_tag_len,
949
+ Span<const uint8_t> external_nonce,
950
+ Span<const CRYPTO_IVEC> aadvecs) {
951
+ if (external_nonce.size() != 0) {
933
952
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_NONCE_SIZE);
934
953
  return 0;
935
954
  }
936
955
 
937
956
  uint8_t nonce[AES_GCM_NONCE_LENGTH];
938
- if (max_out_tag_len < sizeof(nonce)) {
957
+ if (out_tag.size() < sizeof(nonce)) {
939
958
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
940
959
  return 0;
941
960
  }
942
961
 
943
- // |BCM_rand_bytes| calls within the fipsmodule should be wrapped with state
962
+ // `BCM_rand_bytes` calls within the fipsmodule should be wrapped with state
944
963
  // lock functions to avoid updating the service indicator with the DRBG
945
964
  // functions.
946
965
  FIPS_service_indicator_lock_state();
@@ -949,43 +968,39 @@ static int aead_aes_gcm_seal_scatter_randnonce(
949
968
 
950
969
  const struct aead_aes_gcm_ctx *gcm_ctx =
951
970
  (const struct aead_aes_gcm_ctx *)&ctx->state;
952
- if (!aead_aes_gcm_seal_scatter_impl(gcm_ctx, out, out_tag, out_tag_len,
953
- max_out_tag_len - AES_GCM_NONCE_LENGTH,
954
- nonce, sizeof(nonce), in, in_len,
955
- extra_in, extra_in_len, ad, ad_len,
956
- ctx->tag_len - AES_GCM_NONCE_LENGTH)) {
971
+ if (!aead_aes_gcm_sealv_impl(
972
+ gcm_ctx, iovecs, out_tag.first(out_tag.size() - AES_GCM_NONCE_LENGTH),
973
+ out_tag_len, nonce, aadvecs, ctx->tag_len - AES_GCM_NONCE_LENGTH)) {
957
974
  return 0;
958
975
  }
959
976
 
960
- assert(*out_tag_len + sizeof(nonce) <= max_out_tag_len);
961
- memcpy(out_tag + *out_tag_len, nonce, sizeof(nonce));
977
+ assert(*out_tag_len + sizeof(nonce) <= out_tag.size());
978
+ CopyToPrefix(nonce, out_tag.subspan(*out_tag_len));
962
979
  *out_tag_len += sizeof(nonce);
963
980
 
964
981
  AEAD_GCM_verify_service_indicator(ctx);
965
982
  return 1;
966
983
  }
967
984
 
968
- static int aead_aes_gcm_open_gather_randnonce(
969
- const EVP_AEAD_CTX *ctx, uint8_t *out, const uint8_t *external_nonce,
970
- size_t external_nonce_len, const uint8_t *in, size_t in_len,
971
- const uint8_t *in_tag, size_t in_tag_len, const uint8_t *ad,
972
- size_t ad_len) {
973
- if (external_nonce_len != 0) {
985
+ static int aead_aes_gcm_openv_detached_randnonce(
986
+ const EVP_AEAD_CTX *ctx, Span<const CRYPTO_IOVEC> iovecs,
987
+ Span<const uint8_t> external_nonce, Span<const uint8_t> in_tag,
988
+ Span<const CRYPTO_IVEC> aadvecs) {
989
+ if (external_nonce.size() != 0) {
974
990
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_NONCE_SIZE);
975
991
  return 0;
976
992
  }
977
993
 
978
- if (in_tag_len < AES_GCM_NONCE_LENGTH) {
994
+ if (in_tag.size() < AES_GCM_NONCE_LENGTH) {
979
995
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
980
996
  return 0;
981
997
  }
982
- const uint8_t *nonce = in_tag + in_tag_len - AES_GCM_NONCE_LENGTH;
983
998
 
984
999
  const struct aead_aes_gcm_ctx *gcm_ctx =
985
1000
  (const struct aead_aes_gcm_ctx *)&ctx->state;
986
- if (!aead_aes_gcm_open_gather_impl(
987
- gcm_ctx, out, nonce, AES_GCM_NONCE_LENGTH, in, in_len, in_tag,
988
- in_tag_len - AES_GCM_NONCE_LENGTH, ad, ad_len,
1001
+ if (!aead_aes_gcm_openv_detached_impl(
1002
+ gcm_ctx, iovecs, in_tag.last(AES_GCM_NONCE_LENGTH),
1003
+ in_tag.first(in_tag.size() - AES_GCM_NONCE_LENGTH), aadvecs,
989
1004
  ctx->tag_len - AES_GCM_NONCE_LENGTH)) {
990
1005
  return 0;
991
1006
  }
@@ -1001,12 +1016,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm_randnonce) {
1001
1016
  out->nonce_len = 0;
1002
1017
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN + AES_GCM_NONCE_LENGTH;
1003
1018
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN + AES_GCM_NONCE_LENGTH;
1004
- out->seal_scatter_supports_extra_in = 1;
1005
1019
 
1006
1020
  out->init = aead_aes_gcm_init_randnonce;
1007
1021
  out->cleanup = aead_aes_gcm_cleanup;
1008
- out->seal_scatter = aead_aes_gcm_seal_scatter_randnonce;
1009
- out->open_gather = aead_aes_gcm_open_gather_randnonce;
1022
+ out->sealv = aead_aes_gcm_sealv_randnonce;
1023
+ out->openv_detached = aead_aes_gcm_openv_detached_randnonce;
1010
1024
  }
1011
1025
 
1012
1026
  DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_randnonce) {
@@ -1016,12 +1030,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_randnonce) {
1016
1030
  out->nonce_len = 0;
1017
1031
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN + AES_GCM_NONCE_LENGTH;
1018
1032
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN + AES_GCM_NONCE_LENGTH;
1019
- out->seal_scatter_supports_extra_in = 1;
1020
1033
 
1021
1034
  out->init = aead_aes_gcm_init_randnonce;
1022
1035
  out->cleanup = aead_aes_gcm_cleanup;
1023
- out->seal_scatter = aead_aes_gcm_seal_scatter_randnonce;
1024
- out->open_gather = aead_aes_gcm_open_gather_randnonce;
1036
+ out->sealv = aead_aes_gcm_sealv_randnonce;
1037
+ out->openv_detached = aead_aes_gcm_openv_detached_randnonce;
1025
1038
  }
1026
1039
 
1027
1040
  namespace {
@@ -1031,7 +1044,7 @@ struct aead_aes_gcm_tls12_ctx {
1031
1044
  };
1032
1045
  } // namespace
1033
1046
 
1034
- static_assert(sizeof(((EVP_AEAD_CTX *)NULL)->state) >=
1047
+ static_assert(sizeof(((EVP_AEAD_CTX *)nullptr)->state) >=
1035
1048
  sizeof(struct aead_aes_gcm_tls12_ctx),
1036
1049
  "AEAD state is too small");
1037
1050
  static_assert(alignof(union evp_aead_ctx_st_state) >=
@@ -1055,22 +1068,22 @@ static int aead_aes_gcm_tls12_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
1055
1068
  return 1;
1056
1069
  }
1057
1070
 
1058
- static int aead_aes_gcm_tls12_seal_scatter(
1059
- const EVP_AEAD_CTX *ctx, uint8_t *out, uint8_t *out_tag,
1060
- size_t *out_tag_len, size_t max_out_tag_len, const uint8_t *nonce,
1061
- size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *extra_in,
1062
- size_t extra_in_len, const uint8_t *ad, size_t ad_len) {
1071
+ static int aead_aes_gcm_tls12_sealv(const EVP_AEAD_CTX *ctx,
1072
+ Span<const CRYPTO_IOVEC> iovecs,
1073
+ Span<uint8_t> out_tag, size_t *out_tag_len,
1074
+ Span<const uint8_t> nonce,
1075
+ Span<const CRYPTO_IVEC> aadvecs) {
1063
1076
  struct aead_aes_gcm_tls12_ctx *gcm_ctx =
1064
1077
  (struct aead_aes_gcm_tls12_ctx *)&ctx->state;
1065
1078
 
1066
- if (nonce_len != AES_GCM_NONCE_LENGTH) {
1079
+ if (nonce.size() != AES_GCM_NONCE_LENGTH) {
1067
1080
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
1068
1081
  return 0;
1069
1082
  }
1070
1083
 
1071
1084
  // The given nonces must be strictly monotonically increasing.
1072
1085
  uint64_t given_counter =
1073
- CRYPTO_load_u64_be(nonce + nonce_len - sizeof(uint64_t));
1086
+ CRYPTO_load_u64_be(nonce.last(sizeof(uint64_t)).data());
1074
1087
  if (given_counter == UINT64_MAX || given_counter < gcm_ctx->min_next_nonce) {
1075
1088
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_NONCE);
1076
1089
  return 0;
@@ -1078,9 +1091,7 @@ static int aead_aes_gcm_tls12_seal_scatter(
1078
1091
 
1079
1092
  gcm_ctx->min_next_nonce = given_counter + 1;
1080
1093
 
1081
- if (!aead_aes_gcm_seal_scatter(ctx, out, out_tag, out_tag_len,
1082
- max_out_tag_len, nonce, nonce_len, in, in_len,
1083
- extra_in, extra_in_len, ad, ad_len)) {
1094
+ if (!aead_aes_gcm_sealv(ctx, iovecs, out_tag, out_tag_len, nonce, aadvecs)) {
1084
1095
  return 0;
1085
1096
  }
1086
1097
 
@@ -1095,12 +1106,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm_tls12) {
1095
1106
  out->nonce_len = AES_GCM_NONCE_LENGTH;
1096
1107
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
1097
1108
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
1098
- out->seal_scatter_supports_extra_in = 1;
1099
1109
 
1100
1110
  out->init = aead_aes_gcm_tls12_init;
1101
1111
  out->cleanup = aead_aes_gcm_cleanup;
1102
- out->seal_scatter = aead_aes_gcm_tls12_seal_scatter;
1103
- out->open_gather = aead_aes_gcm_open_gather;
1112
+ out->sealv = aead_aes_gcm_tls12_sealv;
1113
+ out->openv_detached = aead_aes_gcm_openv_detached;
1104
1114
  }
1105
1115
 
1106
1116
  DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_tls12) {
@@ -1110,12 +1120,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_tls12) {
1110
1120
  out->nonce_len = AES_GCM_NONCE_LENGTH;
1111
1121
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
1112
1122
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
1113
- out->seal_scatter_supports_extra_in = 1;
1114
1123
 
1115
1124
  out->init = aead_aes_gcm_tls12_init;
1116
1125
  out->cleanup = aead_aes_gcm_cleanup;
1117
- out->seal_scatter = aead_aes_gcm_tls12_seal_scatter;
1118
- out->open_gather = aead_aes_gcm_open_gather;
1126
+ out->sealv = aead_aes_gcm_tls12_sealv;
1127
+ out->openv_detached = aead_aes_gcm_openv_detached;
1119
1128
  }
1120
1129
 
1121
1130
  namespace {
@@ -1126,7 +1135,7 @@ struct aead_aes_gcm_tls13_ctx {
1126
1135
  };
1127
1136
  } // namespace
1128
1137
 
1129
- static_assert(sizeof(((EVP_AEAD_CTX *)NULL)->state) >=
1138
+ static_assert(sizeof(((EVP_AEAD_CTX *)nullptr)->state) >=
1130
1139
  sizeof(struct aead_aes_gcm_tls13_ctx),
1131
1140
  "AEAD state is too small");
1132
1141
  static_assert(alignof(union evp_aead_ctx_st_state) >=
@@ -1150,15 +1159,15 @@ static int aead_aes_gcm_tls13_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
1150
1159
  return 1;
1151
1160
  }
1152
1161
 
1153
- static int aead_aes_gcm_tls13_seal_scatter(
1154
- const EVP_AEAD_CTX *ctx, uint8_t *out, uint8_t *out_tag,
1155
- size_t *out_tag_len, size_t max_out_tag_len, const uint8_t *nonce,
1156
- size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *extra_in,
1157
- size_t extra_in_len, const uint8_t *ad, size_t ad_len) {
1162
+ static int aead_aes_gcm_tls13_sealv(const EVP_AEAD_CTX *ctx,
1163
+ Span<const CRYPTO_IOVEC> iovecs,
1164
+ Span<uint8_t> out_tag, size_t *out_tag_len,
1165
+ Span<const uint8_t> nonce,
1166
+ Span<const CRYPTO_IVEC> aadvecs) {
1158
1167
  struct aead_aes_gcm_tls13_ctx *gcm_ctx =
1159
1168
  (struct aead_aes_gcm_tls13_ctx *)&ctx->state;
1160
1169
 
1161
- if (nonce_len != AES_GCM_NONCE_LENGTH) {
1170
+ if (nonce.size() != AES_GCM_NONCE_LENGTH) {
1162
1171
  OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE);
1163
1172
  return 0;
1164
1173
  }
@@ -1167,7 +1176,7 @@ static int aead_aes_gcm_tls13_seal_scatter(
1167
1176
  // https://tools.ietf.org/html/rfc8446#section-5.3 for details of the TLS 1.3
1168
1177
  // nonce construction.
1169
1178
  uint64_t given_counter =
1170
- CRYPTO_load_u64_be(nonce + nonce_len - sizeof(uint64_t));
1179
+ CRYPTO_load_u64_be(nonce.last(sizeof(uint64_t)).data());
1171
1180
 
1172
1181
  if (gcm_ctx->min_next_nonce == 0) {
1173
1182
  // In the first call the sequence number will be zero and therefore the
@@ -1184,9 +1193,7 @@ static int aead_aes_gcm_tls13_seal_scatter(
1184
1193
  gcm_ctx->min_next_nonce = given_counter + 1;
1185
1194
  }
1186
1195
 
1187
- if (!aead_aes_gcm_seal_scatter(ctx, out, out_tag, out_tag_len,
1188
- max_out_tag_len, nonce, nonce_len, in, in_len,
1189
- extra_in, extra_in_len, ad, ad_len)) {
1196
+ if (!aead_aes_gcm_sealv(ctx, iovecs, out_tag, out_tag_len, nonce, aadvecs)) {
1190
1197
  return 0;
1191
1198
  }
1192
1199
 
@@ -1201,12 +1208,11 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm_tls13) {
1201
1208
  out->nonce_len = AES_GCM_NONCE_LENGTH;
1202
1209
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
1203
1210
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
1204
- out->seal_scatter_supports_extra_in = 1;
1205
1211
 
1206
1212
  out->init = aead_aes_gcm_tls13_init;
1207
1213
  out->cleanup = aead_aes_gcm_cleanup;
1208
- out->seal_scatter = aead_aes_gcm_tls13_seal_scatter;
1209
- out->open_gather = aead_aes_gcm_open_gather;
1214
+ out->sealv = aead_aes_gcm_tls13_sealv;
1215
+ out->openv_detached = aead_aes_gcm_openv_detached;
1210
1216
  }
1211
1217
 
1212
1218
  DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_tls13) {
@@ -1216,15 +1222,14 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_tls13) {
1216
1222
  out->nonce_len = AES_GCM_NONCE_LENGTH;
1217
1223
  out->overhead = EVP_AEAD_AES_GCM_TAG_LEN;
1218
1224
  out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN;
1219
- out->seal_scatter_supports_extra_in = 1;
1220
1225
 
1221
1226
  out->init = aead_aes_gcm_tls13_init;
1222
1227
  out->cleanup = aead_aes_gcm_cleanup;
1223
- out->seal_scatter = aead_aes_gcm_tls13_seal_scatter;
1224
- out->open_gather = aead_aes_gcm_open_gather;
1228
+ out->sealv = aead_aes_gcm_tls13_sealv;
1229
+ out->openv_detached = aead_aes_gcm_openv_detached;
1225
1230
  }
1226
1231
 
1227
- int EVP_has_aes_hardware(void) {
1232
+ int EVP_has_aes_hardware() {
1228
1233
  #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
1229
1234
  return hwaes_capable() && crypto_gcm_clmul_enabled();
1230
1235
  #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)