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
@@ -18,12 +18,15 @@
18
18
  #include <assert.h>
19
19
  #include <string.h>
20
20
 
21
+ #include <iterator>
22
+
21
23
  #include <openssl/bn.h>
22
24
  #include <openssl/err.h>
23
25
  #include <openssl/mem.h>
24
26
  #include <openssl/nid.h>
25
27
 
26
28
  #include "../../internal.h"
29
+ #include "../../mem_internal.h"
27
30
  #include "../bn/internal.h"
28
31
  #include "../delocate.h"
29
32
  #include "internal.h"
@@ -31,6 +34,8 @@
31
34
  #include "builtin_curves.h"
32
35
 
33
36
 
37
+ using namespace bssl;
38
+
34
39
  static void ec_point_free(EC_POINT *point, int free_group);
35
40
 
36
41
  static void ec_group_init_static_mont(BN_MONT_CTX *mont, size_t num_words,
@@ -59,29 +64,21 @@ static void ec_group_set_a_minus3(EC_GROUP *group) {
59
64
  DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p224) {
60
65
  out->curve_name = NID_secp224r1;
61
66
  out->comment = "NIST P-224";
62
- // 1.3.132.0.33
63
- static const uint8_t kOIDP224[] = {0x2b, 0x81, 0x04, 0x00, 0x21};
67
+ static const uint8_t kOIDP224[] = {OBJ_ENC_secp224r1};
68
+ static_assert(sizeof(kOIDP224) <= sizeof(out->oid));
64
69
  OPENSSL_memcpy(out->oid, kOIDP224, sizeof(kOIDP224));
65
70
  out->oid_len = sizeof(kOIDP224);
66
71
 
67
- ec_group_init_static_mont(&out->field, OPENSSL_ARRAY_SIZE(kP224Field),
68
- kP224Field, kP224FieldRR, kP224FieldN0);
69
- ec_group_init_static_mont(&out->order, OPENSSL_ARRAY_SIZE(kP224Order),
70
- kP224Order, kP224OrderRR, kP224OrderN0);
71
-
72
- #if defined(BORINGSSL_HAS_UINT128) && !defined(OPENSSL_SMALL)
73
- out->meth = EC_GFp_nistp224_method();
74
- OPENSSL_memcpy(out->generator.raw.X.words, kP224GX, sizeof(kP224GX));
75
- OPENSSL_memcpy(out->generator.raw.Y.words, kP224GY, sizeof(kP224GY));
76
- out->generator.raw.Z.words[0] = 1;
77
- OPENSSL_memcpy(out->b.words, kP224B, sizeof(kP224B));
78
- #else
72
+ ec_group_init_static_mont(&out->field, std::size(kP224Field), kP224Field,
73
+ kP224FieldRR, kP224FieldN0);
74
+ ec_group_init_static_mont(&out->order, std::size(kP224Order), kP224Order,
75
+ kP224OrderRR, kP224OrderN0);
76
+
79
77
  out->meth = EC_GFp_mont_method();
80
78
  OPENSSL_memcpy(out->generator.raw.X.words, kP224MontGX, sizeof(kP224MontGX));
81
79
  OPENSSL_memcpy(out->generator.raw.Y.words, kP224MontGY, sizeof(kP224MontGY));
82
80
  OPENSSL_memcpy(out->generator.raw.Z.words, kP224FieldR, sizeof(kP224FieldR));
83
81
  OPENSSL_memcpy(out->b.words, kP224MontB, sizeof(kP224MontB));
84
- #endif
85
82
  out->generator.group = out;
86
83
 
87
84
  ec_group_set_a_minus3(out);
@@ -92,24 +89,17 @@ DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p224) {
92
89
  DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p256) {
93
90
  out->curve_name = NID_X9_62_prime256v1;
94
91
  out->comment = "NIST P-256";
95
- // 1.2.840.10045.3.1.7
96
- static const uint8_t kOIDP256[] = {0x2a, 0x86, 0x48, 0xce,
97
- 0x3d, 0x03, 0x01, 0x07};
92
+ static const uint8_t kOIDP256[] = {OBJ_ENC_X9_62_prime256v1};
93
+ static_assert(sizeof(kOIDP256) <= sizeof(out->oid));
98
94
  OPENSSL_memcpy(out->oid, kOIDP256, sizeof(kOIDP256));
99
95
  out->oid_len = sizeof(kOIDP256);
100
96
 
101
- ec_group_init_static_mont(&out->field, OPENSSL_ARRAY_SIZE(kP256Field),
102
- kP256Field, kP256FieldRR, kP256FieldN0);
103
- ec_group_init_static_mont(&out->order, OPENSSL_ARRAY_SIZE(kP256Order),
104
- kP256Order, kP256OrderRR, kP256OrderN0);
97
+ ec_group_init_static_mont(&out->field, std::size(kP256Field), kP256Field,
98
+ kP256FieldRR, kP256FieldN0);
99
+ ec_group_init_static_mont(&out->order, std::size(kP256Order), kP256Order,
100
+ kP256OrderRR, kP256OrderN0);
105
101
 
106
- #if !defined(OPENSSL_NO_ASM) && \
107
- (defined(OPENSSL_X86_64) || defined(OPENSSL_AARCH64)) && \
108
- !defined(OPENSSL_SMALL)
109
- out->meth = EC_GFp_nistz256_method();
110
- #else
111
102
  out->meth = EC_GFp_nistp256_method();
112
- #endif
113
103
  out->generator.group = out;
114
104
  OPENSSL_memcpy(out->generator.raw.X.words, kP256MontGX, sizeof(kP256MontGX));
115
105
  OPENSSL_memcpy(out->generator.raw.Y.words, kP256MontGY, sizeof(kP256MontGY));
@@ -124,15 +114,15 @@ DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p256) {
124
114
  DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p384) {
125
115
  out->curve_name = NID_secp384r1;
126
116
  out->comment = "NIST P-384";
127
- // 1.3.132.0.34
128
- static const uint8_t kOIDP384[] = {0x2b, 0x81, 0x04, 0x00, 0x22};
117
+ static const uint8_t kOIDP384[] = {OBJ_ENC_secp384r1};
118
+ static_assert(sizeof(kOIDP384) <= sizeof(out->oid));
129
119
  OPENSSL_memcpy(out->oid, kOIDP384, sizeof(kOIDP384));
130
120
  out->oid_len = sizeof(kOIDP384);
131
121
 
132
- ec_group_init_static_mont(&out->field, OPENSSL_ARRAY_SIZE(kP384Field),
133
- kP384Field, kP384FieldRR, kP384FieldN0);
134
- ec_group_init_static_mont(&out->order, OPENSSL_ARRAY_SIZE(kP384Order),
135
- kP384Order, kP384OrderRR, kP384OrderN0);
122
+ ec_group_init_static_mont(&out->field, std::size(kP384Field), kP384Field,
123
+ kP384FieldRR, kP384FieldN0);
124
+ ec_group_init_static_mont(&out->order, std::size(kP384Order), kP384Order,
125
+ kP384OrderRR, kP384OrderN0);
136
126
 
137
127
  out->meth = EC_GFp_mont_method();
138
128
  out->generator.group = out;
@@ -149,15 +139,15 @@ DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p384) {
149
139
  DEFINE_METHOD_FUNCTION(EC_GROUP, EC_group_p521) {
150
140
  out->curve_name = NID_secp521r1;
151
141
  out->comment = "NIST P-521";
152
- // 1.3.132.0.35
153
- static const uint8_t kOIDP521[] = {0x2b, 0x81, 0x04, 0x00, 0x23};
142
+ static const uint8_t kOIDP521[] = {OBJ_ENC_secp521r1};
143
+ static_assert(sizeof(kOIDP521) <= sizeof(out->oid));
154
144
  OPENSSL_memcpy(out->oid, kOIDP521, sizeof(kOIDP521));
155
145
  out->oid_len = sizeof(kOIDP521);
156
146
 
157
- ec_group_init_static_mont(&out->field, OPENSSL_ARRAY_SIZE(kP521Field),
158
- kP521Field, kP521FieldRR, kP521FieldN0);
159
- ec_group_init_static_mont(&out->order, OPENSSL_ARRAY_SIZE(kP521Order),
160
- kP521Order, kP521OrderRR, kP521OrderN0);
147
+ ec_group_init_static_mont(&out->field, std::size(kP521Field), kP521Field,
148
+ kP521FieldRR, kP521FieldN0);
149
+ ec_group_init_static_mont(&out->order, std::size(kP521Order), kP521Order,
150
+ kP521OrderRR, kP521OrderN0);
161
151
 
162
152
  out->meth = EC_GFp_mont_method();
163
153
  out->generator.group = out;
@@ -178,7 +168,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
178
168
  return nullptr;
179
169
  }
180
170
 
181
- bssl::UniquePtr<BN_CTX> new_ctx;
171
+ UniquePtr<BN_CTX> new_ctx;
182
172
  if (ctx == nullptr) {
183
173
  new_ctx.reset(BN_CTX_new());
184
174
  if (new_ctx == nullptr) {
@@ -187,9 +177,9 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
187
177
  ctx = new_ctx.get();
188
178
  }
189
179
 
190
- // Historically, |a| and |b| were not required to be fully reduced.
180
+ // Historically, `a` and `b` were not required to be fully reduced.
191
181
  // TODO(davidben): Can this be removed?
192
- bssl::BN_CTXScope scope(ctx);
182
+ BN_CTXScope scope(ctx);
193
183
  BIGNUM *a_reduced = BN_CTX_get(ctx);
194
184
  BIGNUM *b_reduced = BN_CTX_get(ctx);
195
185
  if (a_reduced == nullptr || b_reduced == nullptr ||
@@ -198,16 +188,10 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
198
188
  return nullptr;
199
189
  }
200
190
 
201
- bssl::UniquePtr<EC_GROUP> ret(
202
- reinterpret_cast<EC_GROUP *>(OPENSSL_zalloc(sizeof(EC_GROUP))));
191
+ UniquePtr<ECCustomGroup> ret(New<ECCustomGroup>(EC_GFp_mont_method()));
203
192
  if (ret == nullptr) {
204
193
  return nullptr;
205
194
  }
206
- ret->references = 1;
207
- ret->meth = EC_GFp_mont_method();
208
- bn_mont_ctx_init(&ret->field);
209
- bn_mont_ctx_init(&ret->order);
210
- ret->generator.group = ret.get();
211
195
  if (!ec_GFp_simple_group_set_curve(ret.get(), p, a_reduced, b_reduced, ctx)) {
212
196
  return nullptr;
213
197
  }
@@ -219,10 +203,10 @@ int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,
219
203
  const BIGNUM *order, const BIGNUM *cofactor) {
220
204
  if (group->curve_name != NID_undef || group->has_order ||
221
205
  generator->group != group) {
222
- // |EC_GROUP_set_generator| may only be used with |EC_GROUP|s returned by
223
- // |EC_GROUP_new_curve_GFp| and may only used once on each group.
224
- // |generator| must have been created from |EC_GROUP_new_curve_GFp|, not a
225
- // copy, so that |generator->group->generator| is set correctly.
206
+ // `EC_GROUP_set_generator` may only be used with `EC_GROUP`s returned by
207
+ // `EC_GROUP_new_curve_GFp` and may only used once on each group.
208
+ // `generator` must have been created from `EC_GROUP_new_curve_GFp`, not a
209
+ // copy, so that `generator->group->generator` is set correctly.
226
210
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
227
211
  return 0;
228
212
  }
@@ -241,9 +225,9 @@ int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,
241
225
  // Require that p < 2×order. This simplifies some ECDSA operations.
242
226
  //
243
227
  // Note any curve which did not satisfy this must have been invalid or use a
244
- // tiny prime (less than 17). See the proof in |field_element_to_scalar| in
228
+ // tiny prime (less than 17). See the proof in `field_element_to_scalar` in
245
229
  // the ECDSA implementation.
246
- bssl::UniquePtr<BIGNUM> tmp(BN_new());
230
+ UniquePtr<BIGNUM> tmp(BN_new());
247
231
  if (tmp == nullptr || !BN_lshift1(tmp.get(), order)) {
248
232
  return 0;
249
233
  }
@@ -254,14 +238,14 @@ int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,
254
238
 
255
239
  EC_AFFINE affine;
256
240
  if (!ec_jacobian_to_affine(group, &affine, &generator->raw) ||
257
- !BN_MONT_CTX_set(&group->order, order, NULL)) {
241
+ !BN_MONT_CTX_set(&group->order, order, nullptr)) {
258
242
  return 0;
259
243
  }
260
244
 
261
245
  group->field_greater_than_order = BN_cmp(&group->field.N, order) > 0;
262
246
  group->generator.raw.X = affine.X;
263
247
  group->generator.raw.Y = affine.Y;
264
- // |raw.Z| was set to 1 by |EC_GROUP_new_curve_GFp|.
248
+ // `raw.Z` was set to 1 by `EC_GROUP_new_curve_GFp`.
265
249
  group->has_order = 1;
266
250
  return 1;
267
251
  }
@@ -278,34 +262,45 @@ EC_GROUP *EC_GROUP_new_by_curve_name(int nid) {
278
262
  return (EC_GROUP *)EC_group_p521();
279
263
  default:
280
264
  OPENSSL_PUT_ERROR(EC, EC_R_UNKNOWN_GROUP);
281
- return NULL;
265
+ return nullptr;
282
266
  }
283
267
  }
284
268
 
269
+ ECCustomGroup::ECCustomGroup(const EC_METHOD *m)
270
+ : ec_group_st({}), RefCounted(CheckSubClass()) {
271
+ meth = m;
272
+ bn_mont_ctx_init(&field);
273
+ bn_mont_ctx_init(&order);
274
+ generator.group = this;
275
+ }
276
+
277
+ ECCustomGroup::~ECCustomGroup() {
278
+ bn_mont_ctx_cleanup(&order);
279
+ bn_mont_ctx_cleanup(&field);
280
+ }
281
+
285
282
  void EC_GROUP_free(EC_GROUP *group) {
286
- if (group == NULL ||
283
+ if (group == nullptr ||
287
284
  // Built-in curves are static.
288
- group->curve_name != NID_undef ||
289
- !CRYPTO_refcount_dec_and_test_zero(&group->references)) {
285
+ group->curve_name != NID_undef) {
290
286
  return;
291
287
  }
292
-
293
- bn_mont_ctx_cleanup(&group->order);
294
- bn_mont_ctx_cleanup(&group->field);
295
- OPENSSL_free(group);
288
+ auto *custom = static_cast<ECCustomGroup *>(group);
289
+ custom->DecRefInternal();
296
290
  }
297
291
 
298
292
  EC_GROUP *EC_GROUP_dup(const EC_GROUP *a) {
299
- if (a == NULL ||
293
+ if (a == nullptr ||
300
294
  // Built-in curves are static.
301
295
  a->curve_name != NID_undef) {
302
296
  return (EC_GROUP *)a;
303
297
  }
298
+ auto *custom = static_cast<const ECCustomGroup *>(a);
304
299
 
305
- // Groups are logically immutable (but for |EC_GROUP_set_generator| which must
300
+ // Groups are logically immutable (but for `EC_GROUP_set_generator` which must
306
301
  // be called early on), so we simply take a reference.
307
- EC_GROUP *group = (EC_GROUP *)a;
308
- CRYPTO_refcount_inc(&group->references);
302
+ ECCustomGroup *group = const_cast<ECCustomGroup *>(custom);
303
+ group->UpRefInternal();
309
304
  return group;
310
305
  }
311
306
 
@@ -322,8 +317,8 @@ int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ignored) {
322
317
  return 0;
323
318
  }
324
319
 
325
- // |a| and |b| are both custom curves. We compare the entire curve
326
- // structure. If |a| or |b| is incomplete (due to legacy OpenSSL mistakes,
320
+ // `a` and `b` are both custom curves. We compare the entire curve
321
+ // structure. If `a` or `b` is incomplete (due to legacy OpenSSL mistakes,
327
322
  // custom curve construction is sadly done in two parts) but otherwise not the
328
323
  // same object, we consider them always unequal.
329
324
  return a->meth != b->meth || //
@@ -336,7 +331,7 @@ int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ignored) {
336
331
  }
337
332
 
338
333
  const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group) {
339
- return group->has_order ? &group->generator : NULL;
334
+ return group->has_order ? &group->generator : nullptr;
340
335
  }
341
336
 
342
337
  const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group) {
@@ -345,7 +340,7 @@ const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group) {
345
340
  }
346
341
 
347
342
  int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx) {
348
- if (BN_copy(order, EC_GROUP_get0_order(group)) == NULL) {
343
+ if (BN_copy(order, EC_GROUP_get0_order(group)) == nullptr) {
349
344
  return 0;
350
345
  }
351
346
  return 1;
@@ -357,7 +352,7 @@ int EC_GROUP_order_bits(const EC_GROUP *group) {
357
352
 
358
353
  int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor,
359
354
  BN_CTX *ctx) {
360
- // All |EC_GROUP|s have cofactor 1.
355
+ // All `EC_GROUP`s have cofactor 1.
361
356
  return BN_set_word(cofactor, 1);
362
357
  }
363
358
 
@@ -383,7 +378,7 @@ const char *EC_curve_nid2nist(int nid) {
383
378
  case NID_secp521r1:
384
379
  return "P-521";
385
380
  }
386
- return NULL;
381
+ return nullptr;
387
382
  }
388
383
 
389
384
  int EC_curve_nist2nid(const char *name) {
@@ -403,14 +398,14 @@ int EC_curve_nist2nid(const char *name) {
403
398
  }
404
399
 
405
400
  EC_POINT *EC_POINT_new(const EC_GROUP *group) {
406
- if (group == NULL) {
401
+ if (group == nullptr) {
407
402
  OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
408
- return NULL;
403
+ return nullptr;
409
404
  }
410
405
 
411
- EC_POINT *ret = reinterpret_cast<EC_POINT *>(OPENSSL_malloc(sizeof *ret));
412
- if (ret == NULL) {
413
- return NULL;
406
+ EC_POINT *ret = New<EC_POINT>();
407
+ if (ret == nullptr) {
408
+ return nullptr;
414
409
  }
415
410
 
416
411
  ret->group = EC_GROUP_dup(group);
@@ -425,7 +420,7 @@ static void ec_point_free(EC_POINT *point, int free_group) {
425
420
  if (free_group) {
426
421
  EC_GROUP_free(point->group);
427
422
  }
428
- OPENSSL_free(point);
423
+ Delete(point);
429
424
  }
430
425
 
431
426
  void EC_POINT_free(EC_POINT *point) {
@@ -435,7 +430,7 @@ void EC_POINT_free(EC_POINT *point) {
435
430
  void EC_POINT_clear_free(EC_POINT *point) { EC_POINT_free(point); }
436
431
 
437
432
  int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) {
438
- if (EC_GROUP_cmp(dest->group, src->group, NULL) != 0) {
433
+ if (EC_GROUP_cmp(dest->group, src->group, nullptr) != 0) {
439
434
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
440
435
  return 0;
441
436
  }
@@ -447,21 +442,21 @@ int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) {
447
442
  }
448
443
 
449
444
  EC_POINT *EC_POINT_dup(const EC_POINT *a, const EC_GROUP *group) {
450
- if (a == NULL) {
451
- return NULL;
445
+ if (a == nullptr) {
446
+ return nullptr;
452
447
  }
453
448
 
454
449
  EC_POINT *ret = EC_POINT_new(group);
455
- if (ret == NULL || !EC_POINT_copy(ret, a)) {
450
+ if (ret == nullptr || !EC_POINT_copy(ret, a)) {
456
451
  EC_POINT_free(ret);
457
- return NULL;
452
+ return nullptr;
458
453
  }
459
454
 
460
455
  return ret;
461
456
  }
462
457
 
463
458
  int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point) {
464
- if (EC_GROUP_cmp(group, point->group, NULL) != 0) {
459
+ if (EC_GROUP_cmp(group, point->group, nullptr) != 0) {
465
460
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
466
461
  return 0;
467
462
  }
@@ -470,7 +465,7 @@ int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point) {
470
465
  }
471
466
 
472
467
  int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *point) {
473
- if (EC_GROUP_cmp(group, point->group, NULL) != 0) {
468
+ if (EC_GROUP_cmp(group, point->group, nullptr) != 0) {
474
469
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
475
470
  return 0;
476
471
  }
@@ -479,7 +474,7 @@ int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *point) {
479
474
 
480
475
  int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
481
476
  BN_CTX *ctx) {
482
- if (EC_GROUP_cmp(group, point->group, NULL) != 0) {
477
+ if (EC_GROUP_cmp(group, point->group, nullptr) != 0) {
483
478
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
484
479
  return 0;
485
480
  }
@@ -488,33 +483,33 @@ int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
488
483
 
489
484
  int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b,
490
485
  BN_CTX *ctx) {
491
- if (EC_GROUP_cmp(group, a->group, NULL) != 0 ||
492
- EC_GROUP_cmp(group, b->group, NULL) != 0) {
486
+ if (EC_GROUP_cmp(group, a->group, nullptr) != 0 ||
487
+ EC_GROUP_cmp(group, b->group, nullptr) != 0) {
493
488
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
494
489
  return -1;
495
490
  }
496
491
 
497
- // Note |EC_POINT_cmp| returns zero for equality and non-zero for inequality.
492
+ // Note `EC_POINT_cmp` returns zero for equality and non-zero for inequality.
498
493
  return ec_GFp_simple_points_equal(group, &a->raw, &b->raw) ? 0 : 1;
499
494
  }
500
495
 
501
496
  int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
502
497
  const EC_POINT *point, BIGNUM *x,
503
498
  BIGNUM *y, BN_CTX *ctx) {
504
- if (group->meth->point_get_affine_coordinates == 0) {
499
+ if (group->meth->point_get_affine_coordinates == nullptr) {
505
500
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
506
501
  return 0;
507
502
  }
508
- if (EC_GROUP_cmp(group, point->group, NULL) != 0) {
503
+ if (EC_GROUP_cmp(group, point->group, nullptr) != 0) {
509
504
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
510
505
  return 0;
511
506
  }
512
507
  EC_FELEM x_felem, y_felem;
513
- if (!group->meth->point_get_affine_coordinates(group, &point->raw,
514
- x == NULL ? NULL : &x_felem,
515
- y == NULL ? NULL : &y_felem) ||
516
- (x != NULL && !ec_felem_to_bignum(group, x, &x_felem)) ||
517
- (y != NULL && !ec_felem_to_bignum(group, y, &y_felem))) {
508
+ if (!group->meth->point_get_affine_coordinates(
509
+ group, &point->raw, x == nullptr ? nullptr : &x_felem,
510
+ y == nullptr ? nullptr : &y_felem) ||
511
+ (x != nullptr && !ec_felem_to_bignum(group, x, &x_felem)) ||
512
+ (y != nullptr && !ec_felem_to_bignum(group, y, &y_felem))) {
518
513
  return 0;
519
514
  }
520
515
  return 1;
@@ -526,40 +521,36 @@ int EC_POINT_get_affine_coordinates(const EC_GROUP *group,
526
521
  return EC_POINT_get_affine_coordinates_GFp(group, point, x, y, ctx);
527
522
  }
528
523
 
529
- void ec_affine_to_jacobian(const EC_GROUP *group, EC_JACOBIAN *out,
530
- const EC_AFFINE *p) {
524
+ void bssl::ec_affine_to_jacobian(const EC_GROUP *group, EC_JACOBIAN *out,
525
+ const EC_AFFINE *p) {
531
526
  out->X = p->X;
532
527
  out->Y = p->Y;
533
528
  out->Z = *ec_felem_one(group);
534
529
  }
535
530
 
536
- int ec_jacobian_to_affine(const EC_GROUP *group, EC_AFFINE *out,
537
- const EC_JACOBIAN *p) {
531
+ int bssl::ec_jacobian_to_affine(const EC_GROUP *group, EC_AFFINE *out,
532
+ const EC_JACOBIAN *p) {
538
533
  return group->meth->point_get_affine_coordinates(group, p, &out->X, &out->Y);
539
534
  }
540
535
 
541
- int ec_jacobian_to_affine_batch(const EC_GROUP *group, EC_AFFINE *out,
542
- const EC_JACOBIAN *in, size_t num) {
543
- if (group->meth->jacobian_to_affine_batch == NULL) {
536
+ int bssl::ec_jacobian_to_affine_batch(const EC_GROUP *group, EC_AFFINE *out,
537
+ const EC_JACOBIAN *in, size_t num) {
538
+ if (group->meth->jacobian_to_affine_batch == nullptr) {
544
539
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
545
540
  return 0;
546
541
  }
547
542
  return group->meth->jacobian_to_affine_batch(group, out, in, num);
548
543
  }
549
544
 
550
- int ec_point_set_affine_coordinates(const EC_GROUP *group, EC_AFFINE *out,
551
- const EC_FELEM *x, const EC_FELEM *y) {
552
- void (*const felem_mul)(const EC_GROUP *, EC_FELEM *r, const EC_FELEM *a,
553
- const EC_FELEM *b) = group->meth->felem_mul;
554
- void (*const felem_sqr)(const EC_GROUP *, EC_FELEM *r, const EC_FELEM *a) =
555
- group->meth->felem_sqr;
556
-
545
+ int bssl::ec_point_set_affine_coordinates(const EC_GROUP *group, EC_AFFINE *out,
546
+ const EC_FELEM *x,
547
+ const EC_FELEM *y) {
557
548
  // Check if the point is on the curve.
558
549
  EC_FELEM lhs, rhs;
559
- felem_sqr(group, &lhs, y); // lhs = y^2
560
- felem_sqr(group, &rhs, x); // rhs = x^2
550
+ ec_felem_sqr(group, &lhs, y); // lhs = y^2
551
+ ec_felem_sqr(group, &rhs, x); // rhs = x^2
561
552
  ec_felem_add(group, &rhs, &rhs, &group->a); // rhs = x^2 + a
562
- felem_mul(group, &rhs, &rhs, x); // rhs = x^3 + ax
553
+ ec_felem_mul(group, &rhs, &rhs, x); // rhs = x^3 + ax
563
554
  ec_felem_add(group, &rhs, &rhs, &group->b); // rhs = x^3 + ax + b
564
555
  if (!ec_felem_equal(group, &lhs, &rhs)) {
565
556
  OPENSSL_PUT_ERROR(EC, EC_R_POINT_IS_NOT_ON_CURVE);
@@ -582,12 +573,12 @@ int ec_point_set_affine_coordinates(const EC_GROUP *group, EC_AFFINE *out,
582
573
  int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *point,
583
574
  const BIGNUM *x, const BIGNUM *y,
584
575
  BN_CTX *ctx) {
585
- if (EC_GROUP_cmp(group, point->group, NULL) != 0) {
576
+ if (EC_GROUP_cmp(group, point->group, nullptr) != 0) {
586
577
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
587
578
  return 0;
588
579
  }
589
580
 
590
- if (x == NULL || y == NULL) {
581
+ if (x == nullptr || y == nullptr) {
591
582
  OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
592
583
  return 0;
593
584
  }
@@ -615,9 +606,9 @@ int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *point,
615
606
 
616
607
  int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
617
608
  const EC_POINT *b, BN_CTX *ctx) {
618
- if (EC_GROUP_cmp(group, r->group, NULL) != 0 ||
619
- EC_GROUP_cmp(group, a->group, NULL) != 0 ||
620
- EC_GROUP_cmp(group, b->group, NULL) != 0) {
609
+ if (EC_GROUP_cmp(group, r->group, nullptr) != 0 ||
610
+ EC_GROUP_cmp(group, a->group, nullptr) != 0 ||
611
+ EC_GROUP_cmp(group, b->group, nullptr) != 0) {
621
612
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
622
613
  return 0;
623
614
  }
@@ -627,8 +618,8 @@ int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
627
618
 
628
619
  int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
629
620
  BN_CTX *ctx) {
630
- if (EC_GROUP_cmp(group, r->group, NULL) != 0 ||
631
- EC_GROUP_cmp(group, a->group, NULL) != 0) {
621
+ if (EC_GROUP_cmp(group, r->group, nullptr) != 0 ||
622
+ EC_GROUP_cmp(group, a->group, nullptr) != 0) {
632
623
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
633
624
  return 0;
634
625
  }
@@ -638,7 +629,7 @@ int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
638
629
 
639
630
 
640
631
  int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx) {
641
- if (EC_GROUP_cmp(group, a->group, NULL) != 0) {
632
+ if (EC_GROUP_cmp(group, a->group, nullptr) != 0) {
642
633
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
643
634
  return 0;
644
635
  }
@@ -655,43 +646,41 @@ static int arbitrary_bignum_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
655
646
  ERR_clear_error();
656
647
 
657
648
  // This is an unusual input, so we do not guarantee constant-time processing.
658
- BN_CTX_start(ctx);
649
+ BN_CTXScope scope(ctx);
659
650
  BIGNUM *tmp = BN_CTX_get(ctx);
660
- int ok = tmp != NULL && BN_nnmod(tmp, in, EC_GROUP_get0_order(group), ctx) &&
661
- ec_bignum_to_scalar(group, out, tmp);
662
- BN_CTX_end(ctx);
663
- return ok;
651
+ return tmp != nullptr && BN_nnmod(tmp, in, EC_GROUP_get0_order(group), ctx) &&
652
+ ec_bignum_to_scalar(group, out, tmp);
664
653
  }
665
654
 
666
- int ec_point_mul_no_self_test(const EC_GROUP *group, EC_POINT *r,
667
- const BIGNUM *g_scalar, const EC_POINT *p,
668
- const BIGNUM *p_scalar, BN_CTX *ctx) {
669
- // Previously, this function set |r| to the point at infinity if there was
655
+ int bssl::ec_point_mul_no_self_test(const EC_GROUP *group, EC_POINT *r,
656
+ const BIGNUM *g_scalar, const EC_POINT *p,
657
+ const BIGNUM *p_scalar, BN_CTX *ctx) {
658
+ // Previously, this function set `r` to the point at infinity if there was
670
659
  // nothing to multiply. But, nobody should be calling this function with
671
660
  // nothing to multiply in the first place.
672
- if ((g_scalar == NULL && p_scalar == NULL) ||
673
- (p == NULL) != (p_scalar == NULL)) {
661
+ if ((g_scalar == nullptr && p_scalar == nullptr) ||
662
+ (p == nullptr) != (p_scalar == nullptr)) {
674
663
  OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
675
664
  return 0;
676
665
  }
677
666
 
678
- if (EC_GROUP_cmp(group, r->group, NULL) != 0 ||
679
- (p != NULL && EC_GROUP_cmp(group, p->group, NULL) != 0)) {
667
+ if (EC_GROUP_cmp(group, r->group, nullptr) != 0 ||
668
+ (p != nullptr && EC_GROUP_cmp(group, p->group, nullptr) != 0)) {
680
669
  OPENSSL_PUT_ERROR(EC, EC_R_INCOMPATIBLE_OBJECTS);
681
670
  return 0;
682
671
  }
683
672
 
684
- bssl::UniquePtr<BN_CTX> new_ctx;
685
- if (ctx == NULL) {
673
+ UniquePtr<BN_CTX> new_ctx;
674
+ if (ctx == nullptr) {
686
675
  new_ctx.reset(BN_CTX_new());
687
- if (new_ctx == NULL) {
676
+ if (new_ctx == nullptr) {
688
677
  return 0;
689
678
  }
690
679
  ctx = new_ctx.get();
691
680
  }
692
681
 
693
- // If both |g_scalar| and |p_scalar| are non-NULL,
694
- // |ec_point_mul_scalar_public| would share the doublings between the two
682
+ // If both `g_scalar` and `p_scalar` are non-NULL,
683
+ // `ec_point_mul_scalar_public` would share the doublings between the two
695
684
  // products, which would be more efficient. However, we conservatively assume
696
685
  // the caller needs a constant-time operation. (ECDSA verification does not
697
686
  // use this function.)
@@ -701,7 +690,7 @@ int ec_point_mul_no_self_test(const EC_GROUP *group, EC_POINT *r,
701
690
  // which combined the two multiplications did not avoid the doubling case
702
691
  // in the incomplete addition formula and were not constant-time.
703
692
 
704
- if (g_scalar != NULL) {
693
+ if (g_scalar != nullptr) {
705
694
  EC_SCALAR scalar;
706
695
  if (!arbitrary_bignum_to_scalar(group, &scalar, g_scalar, ctx) ||
707
696
  !ec_point_mul_scalar_base(group, &r->raw, &scalar)) {
@@ -709,14 +698,14 @@ int ec_point_mul_no_self_test(const EC_GROUP *group, EC_POINT *r,
709
698
  }
710
699
  }
711
700
 
712
- if (p_scalar != NULL) {
701
+ if (p_scalar != nullptr) {
713
702
  EC_SCALAR scalar;
714
703
  EC_JACOBIAN tmp;
715
704
  if (!arbitrary_bignum_to_scalar(group, &scalar, p_scalar, ctx) ||
716
705
  !ec_point_mul_scalar(group, &tmp, &p->raw, &scalar)) {
717
706
  return 0;
718
707
  }
719
- if (g_scalar == NULL) {
708
+ if (g_scalar == nullptr) {
720
709
  OPENSSL_memcpy(&r->raw, &tmp, sizeof(EC_JACOBIAN));
721
710
  } else {
722
711
  group->meth->add(group, &r->raw, &r->raw, &tmp);
@@ -733,15 +722,16 @@ int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *g_scalar,
733
722
  return ec_point_mul_no_self_test(group, r, g_scalar, p, p_scalar, ctx);
734
723
  }
735
724
 
736
- int ec_point_mul_scalar_public(const EC_GROUP *group, EC_JACOBIAN *r,
737
- const EC_SCALAR *g_scalar, const EC_JACOBIAN *p,
738
- const EC_SCALAR *p_scalar) {
739
- if (g_scalar == NULL || p_scalar == NULL || p == NULL) {
725
+ int bssl::ec_point_mul_scalar_public(const EC_GROUP *group, EC_JACOBIAN *r,
726
+ const EC_SCALAR *g_scalar,
727
+ const EC_JACOBIAN *p,
728
+ const EC_SCALAR *p_scalar) {
729
+ if (g_scalar == nullptr || p_scalar == nullptr || p == nullptr) {
740
730
  OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
741
731
  return 0;
742
732
  }
743
733
 
744
- if (group->meth->mul_public == NULL) {
734
+ if (group->meth->mul_public == nullptr) {
745
735
  return group->meth->mul_public_batch(group, r, g_scalar, p, p_scalar, 1);
746
736
  }
747
737
 
@@ -749,11 +739,10 @@ int ec_point_mul_scalar_public(const EC_GROUP *group, EC_JACOBIAN *r,
749
739
  return 1;
750
740
  }
751
741
 
752
- int ec_point_mul_scalar_public_batch(const EC_GROUP *group, EC_JACOBIAN *r,
753
- const EC_SCALAR *g_scalar,
754
- const EC_JACOBIAN *points,
755
- const EC_SCALAR *scalars, size_t num) {
756
- if (group->meth->mul_public_batch == NULL) {
742
+ int bssl::ec_point_mul_scalar_public_batch(
743
+ const EC_GROUP *group, EC_JACOBIAN *r, const EC_SCALAR *g_scalar,
744
+ const EC_JACOBIAN *points, const EC_SCALAR *scalars, size_t num) {
745
+ if (group->meth->mul_public_batch == nullptr) {
757
746
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
758
747
  return 0;
759
748
  }
@@ -762,9 +751,9 @@ int ec_point_mul_scalar_public_batch(const EC_GROUP *group, EC_JACOBIAN *r,
762
751
  num);
763
752
  }
764
753
 
765
- int ec_point_mul_scalar(const EC_GROUP *group, EC_JACOBIAN *r,
766
- const EC_JACOBIAN *p, const EC_SCALAR *scalar) {
767
- if (p == NULL || scalar == NULL) {
754
+ int bssl::ec_point_mul_scalar(const EC_GROUP *group, EC_JACOBIAN *r,
755
+ const EC_JACOBIAN *p, const EC_SCALAR *scalar) {
756
+ if (p == nullptr || scalar == nullptr) {
768
757
  OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
769
758
  return 0;
770
759
  }
@@ -773,7 +762,7 @@ int ec_point_mul_scalar(const EC_GROUP *group, EC_JACOBIAN *r,
773
762
 
774
763
  // Check the result is on the curve to defend against fault attacks or bugs.
775
764
  // This has negligible cost compared to the multiplication.
776
- if (!ec_GFp_simple_is_on_curve(group, r)) {
765
+ if (!constant_time_declassify_int(ec_GFp_simple_is_on_curve(group, r))) {
777
766
  OPENSSL_PUT_ERROR(EC, ERR_R_INTERNAL_ERROR);
778
767
  return 0;
779
768
  }
@@ -781,9 +770,9 @@ int ec_point_mul_scalar(const EC_GROUP *group, EC_JACOBIAN *r,
781
770
  return 1;
782
771
  }
783
772
 
784
- int ec_point_mul_scalar_base(const EC_GROUP *group, EC_JACOBIAN *r,
785
- const EC_SCALAR *scalar) {
786
- if (scalar == NULL) {
773
+ int bssl::ec_point_mul_scalar_base(const EC_GROUP *group, EC_JACOBIAN *r,
774
+ const EC_SCALAR *scalar) {
775
+ if (scalar == nullptr) {
787
776
  OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
788
777
  return 0;
789
778
  }
@@ -802,11 +791,11 @@ int ec_point_mul_scalar_base(const EC_GROUP *group, EC_JACOBIAN *r,
802
791
  return 1;
803
792
  }
804
793
 
805
- int ec_point_mul_scalar_batch(const EC_GROUP *group, EC_JACOBIAN *r,
806
- const EC_JACOBIAN *p0, const EC_SCALAR *scalar0,
807
- const EC_JACOBIAN *p1, const EC_SCALAR *scalar1,
808
- const EC_JACOBIAN *p2, const EC_SCALAR *scalar2) {
809
- if (group->meth->mul_batch == NULL) {
794
+ int bssl::ec_point_mul_scalar_batch(
795
+ const EC_GROUP *group, EC_JACOBIAN *r, const EC_JACOBIAN *p0,
796
+ const EC_SCALAR *scalar0, const EC_JACOBIAN *p1, const EC_SCALAR *scalar1,
797
+ const EC_JACOBIAN *p2, const EC_SCALAR *scalar2) {
798
+ if (group->meth->mul_batch == nullptr) {
810
799
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
811
800
  return 0;
812
801
  }
@@ -823,9 +812,9 @@ int ec_point_mul_scalar_batch(const EC_GROUP *group, EC_JACOBIAN *r,
823
812
  return 1;
824
813
  }
825
814
 
826
- int ec_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
827
- const EC_JACOBIAN *p) {
828
- if (group->meth->init_precomp == NULL) {
815
+ int bssl::ec_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
816
+ const EC_JACOBIAN *p) {
817
+ if (group->meth->init_precomp == nullptr) {
829
818
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
830
819
  return 0;
831
820
  }
@@ -833,12 +822,11 @@ int ec_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
833
822
  return group->meth->init_precomp(group, out, p);
834
823
  }
835
824
 
836
- int ec_point_mul_scalar_precomp(const EC_GROUP *group, EC_JACOBIAN *r,
837
- const EC_PRECOMP *p0, const EC_SCALAR *scalar0,
838
- const EC_PRECOMP *p1, const EC_SCALAR *scalar1,
839
- const EC_PRECOMP *p2,
840
- const EC_SCALAR *scalar2) {
841
- if (group->meth->mul_precomp == NULL) {
825
+ int bssl::ec_point_mul_scalar_precomp(
826
+ const EC_GROUP *group, EC_JACOBIAN *r, const EC_PRECOMP *p0,
827
+ const EC_SCALAR *scalar0, const EC_PRECOMP *p1, const EC_SCALAR *scalar1,
828
+ const EC_PRECOMP *p2, const EC_SCALAR *scalar2) {
829
+ if (group->meth->mul_precomp == nullptr) {
842
830
  OPENSSL_PUT_ERROR(EC, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
843
831
  return 0;
844
832
  }
@@ -855,35 +843,38 @@ int ec_point_mul_scalar_precomp(const EC_GROUP *group, EC_JACOBIAN *r,
855
843
  return 1;
856
844
  }
857
845
 
858
- void ec_point_select(const EC_GROUP *group, EC_JACOBIAN *out, BN_ULONG mask,
859
- const EC_JACOBIAN *a, const EC_JACOBIAN *b) {
846
+ void bssl::ec_point_select(const EC_GROUP *group, EC_JACOBIAN *out,
847
+ BN_ULONG mask, const EC_JACOBIAN *a,
848
+ const EC_JACOBIAN *b) {
860
849
  ec_felem_select(group, &out->X, mask, &a->X, &b->X);
861
850
  ec_felem_select(group, &out->Y, mask, &a->Y, &b->Y);
862
851
  ec_felem_select(group, &out->Z, mask, &a->Z, &b->Z);
863
852
  }
864
853
 
865
- void ec_affine_select(const EC_GROUP *group, EC_AFFINE *out, BN_ULONG mask,
866
- const EC_AFFINE *a, const EC_AFFINE *b) {
854
+ void bssl::ec_affine_select(const EC_GROUP *group, EC_AFFINE *out,
855
+ BN_ULONG mask, const EC_AFFINE *a,
856
+ const EC_AFFINE *b) {
867
857
  ec_felem_select(group, &out->X, mask, &a->X, &b->X);
868
858
  ec_felem_select(group, &out->Y, mask, &a->Y, &b->Y);
869
859
  }
870
860
 
871
- void ec_precomp_select(const EC_GROUP *group, EC_PRECOMP *out, BN_ULONG mask,
872
- const EC_PRECOMP *a, const EC_PRECOMP *b) {
861
+ void bssl::ec_precomp_select(const EC_GROUP *group, EC_PRECOMP *out,
862
+ BN_ULONG mask, const EC_PRECOMP *a,
863
+ const EC_PRECOMP *b) {
873
864
  static_assert(sizeof(out->comb) == sizeof(*out),
874
865
  "out->comb does not span the entire structure");
875
- for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(out->comb); i++) {
866
+ for (size_t i = 0; i < std::size(out->comb); i++) {
876
867
  ec_affine_select(group, &out->comb[i], mask, &a->comb[i], &b->comb[i]);
877
868
  }
878
869
  }
879
870
 
880
- int ec_cmp_x_coordinate(const EC_GROUP *group, const EC_JACOBIAN *p,
881
- const EC_SCALAR *r) {
871
+ int bssl::ec_cmp_x_coordinate(const EC_GROUP *group, const EC_JACOBIAN *p,
872
+ const EC_SCALAR *r) {
882
873
  return group->meth->cmp_x_coordinate(group, p, r);
883
874
  }
884
875
 
885
- int ec_get_x_coordinate_as_scalar(const EC_GROUP *group, EC_SCALAR *out,
886
- const EC_JACOBIAN *p) {
876
+ int bssl::ec_get_x_coordinate_as_scalar(const EC_GROUP *group, EC_SCALAR *out,
877
+ const EC_JACOBIAN *p) {
887
878
  uint8_t bytes[EC_MAX_BYTES];
888
879
  size_t len;
889
880
  if (!ec_get_x_coordinate_as_bytes(group, bytes, &len, sizeof(bytes), p)) {
@@ -894,7 +885,7 @@ int ec_get_x_coordinate_as_scalar(const EC_GROUP *group, EC_SCALAR *out,
894
885
  // order. These may not have the same size. However, we must have p < 2×order,
895
886
  // assuming p is not tiny (p >= 17).
896
887
  //
897
- // Thus |bytes| will fit in |order.width + 1| words, and we can reduce by
888
+ // Thus `bytes` will fit in `order.width + 1` words, and we can reduce by
898
889
  // performing at most one subtraction.
899
890
  //
900
891
  // Proof: We only work with prime order curves, so the number of points on
@@ -908,7 +899,7 @@ int ec_get_x_coordinate_as_scalar(const EC_GROUP *group, EC_SCALAR *out,
908
899
  // p < 2×order
909
900
  //
910
901
  // Additionally, one can manually check this property for built-in curves. It
911
- // is enforced for legacy custom curves in |EC_GROUP_set_generator|.
902
+ // is enforced for legacy custom curves in `EC_GROUP_set_generator`.
912
903
  const BIGNUM *order = EC_GROUP_get0_order(group);
913
904
  BN_ULONG words[EC_MAX_WORDS + 1] = {0};
914
905
  bn_big_endian_to_words(words, order->width + 1, bytes, len);
@@ -917,9 +908,9 @@ int ec_get_x_coordinate_as_scalar(const EC_GROUP *group, EC_SCALAR *out,
917
908
  return 1;
918
909
  }
919
910
 
920
- int ec_get_x_coordinate_as_bytes(const EC_GROUP *group, uint8_t *out,
921
- size_t *out_len, size_t max_out,
922
- const EC_JACOBIAN *p) {
911
+ int bssl::ec_get_x_coordinate_as_bytes(const EC_GROUP *group, uint8_t *out,
912
+ size_t *out_len, size_t max_out,
913
+ const EC_JACOBIAN *p) {
923
914
  size_t len = BN_num_bytes(&group->field.N);
924
915
  assert(len <= EC_MAX_BYTES);
925
916
  if (max_out < len) {
@@ -928,7 +919,7 @@ int ec_get_x_coordinate_as_bytes(const EC_GROUP *group, uint8_t *out,
928
919
  }
929
920
 
930
921
  EC_FELEM x;
931
- if (!group->meth->point_get_affine_coordinates(group, p, &x, NULL)) {
922
+ if (!group->meth->point_get_affine_coordinates(group, p, &x, nullptr)) {
932
923
  return 0;
933
924
  }
934
925
 
@@ -937,7 +928,7 @@ int ec_get_x_coordinate_as_bytes(const EC_GROUP *group, uint8_t *out,
937
928
  return 1;
938
929
  }
939
930
 
940
- void ec_set_to_safe_point(const EC_GROUP *group, EC_JACOBIAN *out) {
931
+ void bssl::ec_set_to_safe_point(const EC_GROUP *group, EC_JACOBIAN *out) {
941
932
  if (group->has_order) {
942
933
  ec_GFp_simple_point_copy(out, &group->generator.raw);
943
934
  } else {
@@ -956,7 +947,7 @@ int EC_GROUP_get_asn1_flag(const EC_GROUP *group) {
956
947
 
957
948
  const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group) {
958
949
  // This function exists purely to give callers a way to call
959
- // |EC_METHOD_get_field_type|. cryptography.io crashes if |EC_GROUP_method_of|
950
+ // `EC_METHOD_get_field_type`. cryptography.io crashes if `EC_GROUP_method_of`
960
951
  // returns NULL, so return some other garbage pointer.
961
952
  return (const EC_METHOD *)0x12340000;
962
953
  }